diff --git a/src/custom_widgets/model_widget.py b/src/custom_widgets/model_widget.py
index e67765f..6812ed3 100644
--- a/src/custom_widgets/model_widget.py
+++ b/src/custom_widgets/model_widget.py
@@ -358,6 +358,8 @@ class local_model(Gtk.ListBoxRow):
window.model_detail_page.set_title(' ('.join(model_name.split(' (')[:-1]))
window.model_detail_page.set_description(' ('.join(model_name.split(' (')[-1:])[:-1])
+ window.model_detail_create_button.set_name(model_name)
+ window.model_detail_create_button.set_tooltip_text(_("Create Model Based on '{}'").format(model_name))
details_flow_box = Gtk.FlowBox(
valign=1,
diff --git a/src/window.py b/src/window.py
index 452dff8..4d9cc23 100644
--- a/src/window.py
+++ b/src/window.py
@@ -103,6 +103,7 @@ class AlpacaWindow(Adw.ApplicationWindow):
manage_models_dialog = Gtk.Template.Child()
model_scroller = Gtk.Template.Child()
model_detail_page = Gtk.Template.Child()
+ model_detail_create_button = Gtk.Template.Child()
chat_list_container = Gtk.Template.Child()
chat_list_box = None
@@ -333,6 +334,10 @@ class AlpacaWindow(Adw.ApplicationWindow):
clipboard.read_text_async(None, self.cb_text_received)
clipboard.read_texture_async(None, self.cb_image_received)
+ @Gtk.Template.Callback()
+ def model_detail_create_button_clicked(self, button):
+ self.create_model(button.get_name(), False)
+
def convert_model_name(self, name:str, mode:int) -> str: # mode=0 name:tag -> Name (tag) | mode=1 Name (tag) -> name:tag
try:
if mode == 0:
@@ -352,20 +357,15 @@ class AlpacaWindow(Adw.ApplicationWindow):
modelfile_buffer.delete(modelfile_buffer.get_start_iter(), modelfile_buffer.get_end_iter())
self.create_model_system.set_text('')
if not file:
- response = self.ollama_instance.request("POST", "api/show", json.dumps({"name": self.convert_model_name(model, 1)}))
- if response.status_code == 200:
- data = json.loads(response.text)
- modelfile = []
- for line in data['modelfile'].split('\n'):
- if line.startswith('SYSTEM'):
- self.create_model_system.set_text(line[len('SYSTEM'):].strip())
- if not line.startswith('SYSTEM') and not line.startswith('FROM') and not line.startswith('#'):
- modelfile.append(line)
- self.create_model_name.set_text(self.convert_model_name(model, 1).split(':')[0] + "-custom")
- modelfile_buffer.insert(modelfile_buffer.get_start_iter(), '\n'.join(modelfile), len('\n'.join(modelfile).encode('utf-8')))
- else:
- ##TODO ERROR MESSAGE
- return
+ data = next((element for element in list(self.model_manager.model_selector.get_popover().model_list_box) if element.get_name() == self.convert_model_name(model, 1)), None).data
+ modelfile = []
+ for line in data['modelfile'].split('\n'):
+ if line.startswith('SYSTEM'):
+ self.create_model_system.set_text(line[len('SYSTEM'):].strip())
+ if not line.startswith('SYSTEM') and not line.startswith('FROM') and not line.startswith('#'):
+ modelfile.append(line)
+ self.create_model_name.set_text(self.convert_model_name(model, 1).split(':')[0] + "-custom")
+ modelfile_buffer.insert(modelfile_buffer.get_start_iter(), '\n'.join(modelfile), len('\n'.join(modelfile).encode('utf-8')))
self.create_model_base.set_subtitle(self.convert_model_name(model, 1))
else:
self.create_model_name.set_text(os.path.splitext(os.path.basename(model))[0])
diff --git a/src/window.ui b/src/window.ui
index 5fb5c95..1af4e38 100644
--- a/src/window.ui
+++ b/src/window.ui
@@ -212,6 +212,7 @@
word
10
@@ -645,7 +646,12 @@