diff --git a/src/connection_handler.py b/src/connection_handler.py
index ae10274..1b2c640 100644
--- a/src/connection_handler.py
+++ b/src/connection_handler.py
@@ -16,7 +16,7 @@ def log_output(pipe):
with pipe:
try:
for line in iter(pipe.readline, ''):
- print(line, end='')
+ #print(line, end='')
f.write(line)
f.flush()
except:
@@ -118,8 +118,6 @@ class instance():
self.start_timer()
else:
self.remote = True
- if not self.remote_url:
- window.remote_connection_entry.set_text('http://0.0.0.0:11434')
window.remote_connection_switch.set_sensitive(True)
window.remote_connection_switch.set_active(True)
diff --git a/src/generic_actions.py b/src/generic_actions.py
index 7ec8e2a..a448733 100644
--- a/src/generic_actions.py
+++ b/src/generic_actions.py
@@ -10,13 +10,13 @@ from .internal import cache_dir
window = None
-def connect_local():
- window.remote_connection_switch.set_active(False)
-
-def connect_remote(url:str, bearer:str):
- window.remote_connection_entry.set_text(url)
- window.remote_bearer_token_entry.set_text(bearer)
- window.remote_connection_switch.set_active(True)
+def connect_remote(remote_url:str, bearer_token:str):
+ window.ollama_instance.remote_url=remote_url
+ window.ollama_instance.bearer_token=bearer_token
+ window.ollama_instance.remote = True
+ window.ollama_instance.stop()
+ window.model_manager.update_local_list()
+ window.save_server_config()
def attach_youtube(video_url:str, caption_name:str):
buffer = window.message_text_view.get_buffer()
diff --git a/src/window.py b/src/window.py
index 5eacb4e..7f6caab 100644
--- a/src/window.py
+++ b/src/window.py
@@ -112,8 +112,7 @@ class AlpacaWindow(Adw.ApplicationWindow):
background_switch = Gtk.Template.Child()
powersaver_warning_switch = Gtk.Template.Child()
remote_connection_switch = Gtk.Template.Child()
- remote_connection_entry = Gtk.Template.Child()
- remote_bearer_token_entry = Gtk.Template.Child()
+ remote_connection_switch_handler = None
banner = Gtk.Template.Child()
@@ -212,45 +211,6 @@ class AlpacaWindow(Adw.ApplicationWindow):
self.welcome_dialog.force_close()
self.powersaver_warning_switch.set_active(True)
- @Gtk.Template.Callback()
- def change_remote_connection(self, switcher, *_):
- logger.debug("Connection switched")
- if self.remote_connection_switch.get_active() and not self.remote_connection_entry.get_text():
- self.remote_connection_switch.set_active(False)
- return
- self.ollama_instance.remote = self.remote_connection_switch.get_active()
- if self.ollama_instance.remote:
- self.ollama_instance.stop()
- else:
- self.ollama_instance.start()
- if self.model_manager:
- self.model_manager.update_local_list()
- self.save_server_config()
-
- @Gtk.Template.Callback()
- def change_remote_url(self, entry):
- if entry.get_text() and not entry.get_text().startswith("http"):
- entry.set_text("http://{}".format(entry.get_text()))
- return
- if entry.get_text() and entry.get_text() != entry.get_text().rstrip('/'):
- entry.set_text(entry.get_text().rstrip('/'))
- return
- self.remote_connection_switch.set_sensitive(entry.get_text())
- logger.debug(f"Changing remote url: {self.ollama_instance.remote_url}")
- self.ollama_instance.remote_url = entry.get_text()
- if not entry.get_text():
- self.remote_connection_switch.set_active(False)
- if self.ollama_instance.remote and self.model_manager and entry.get_text():
- self.model_manager.update_local_list()
- self.save_server_config()
-
- @Gtk.Template.Callback()
- def change_remote_bearer_token(self, entry):
- self.ollama_instance.bearer_token = entry.get_text()
- if self.ollama_instance.remote_url and self.ollama_instance.remote and self.model_manager:
- self.model_manager.update_local_list()
- self.save_server_config()
-
@Gtk.Template.Callback()
def switch_run_on_background(self, switch, user_data):
logger.debug("Switching run on background")
@@ -854,6 +814,26 @@ Generate a title following these rules:
def power_saver_toggled(self, monitor):
self.banner.set_revealed(monitor.get_power_saver_enabled() and self.powersaver_warning_switch.get_active())
+ def remote_switched(self, switch, state):
+ def local_instance_process():
+ self.ollama_instance.remote = False
+ self.ollama_instance.start()
+ self.model_manager.update_local_list()
+ self.save_server_config()
+
+ if state:
+ options = {
+ _("Cancel"): {"callback": lambda *_: self.remote_connection_switch.set_active(False)},
+ _("Connect"): {"callback": lambda url, bearer: generic_actions.connect_remote(url, bearer), "appearance": "suggested"}
+ }
+ entries = [
+ {"text": self.ollama_instance.remote_url, "placeholder": _('Server URL')},
+ {"text": self.ollama_instance.bearer_token, "placeholder": _('Bearer Token (Optional)')}
+ ]
+ dialog_widget.Entry(_('Connect Remote Instance'), _('Enter instance information to continue'), list(options)[0], options, entries)
+ else:
+ threading.Thread(target=local_instance_process).start()
+
def prepare_alpaca(self, local_port:int, remote_url:str, remote:bool, tweaks:dict, overrides:dict, bearer_token:str, idle_timer_delay:int, save:bool):
#Model Manager
self.model_manager = model_widget.model_manager_container()
@@ -879,10 +859,10 @@ Generate a title following these rules:
element.set_text(self.ollama_instance.overrides[element.get_name()])
self.set_hide_on_close(self.background_switch.get_active())
- self.remote_connection_entry.set_text(self.ollama_instance.remote_url)
- self.remote_connection_switch.set_sensitive(self.remote_connection_entry.get_text())
- self.remote_bearer_token_entry.set_text(self.ollama_instance.bearer_token)
+
+ self.remote_connection_switch.get_activatable_widget().handler_block(self.remote_connection_switch_handler)
self.remote_connection_switch.set_active(self.ollama_instance.remote)
+ self.remote_connection_switch.get_activatable_widget().handler_unblock(self.remote_connection_switch_handler)
self.instance_idle_timer.set_value(self.ollama_instance.idle_timer_delay)
#Save preferences
@@ -943,12 +923,12 @@ Generate a title following these rules:
self.get_application().create_action(action_name, data[0], data[1] if len(data) > 1 else None)
self.get_application().lookup_action('manage_models').set_enabled(False)
- self.get_application().lookup_action('preferences').set_enabled(False)
+ #self.get_application().lookup_action('preferences').set_enabled(False)
+ self.remote_connection_switch_handler = self.remote_connection_switch.get_activatable_widget().connect('state-set', self.remote_switched)
self.file_preview_remove_button.connect('clicked', lambda button : dialog_widget.simple(_('Remove Attachment?'), _("Are you sure you want to remove attachment?"), lambda button=button: self.remove_attached_file(button.get_name()), _('Remove'), 'destructive'))
self.attachment_button.connect("clicked", lambda button, file_filter=self.file_filter_attachments: dialog_widget.simple_file(file_filter, generic_actions.attach_file))
self.create_model_name.get_delegate().connect("insert-text", lambda *_: self.check_alphanumeric(*_, ['-', '.', '_']))
- self.remote_connection_entry.connect("entry-activated", lambda entry : entry.set_css_classes([]))
self.set_focus(self.message_text_view)
if os.path.exists(os.path.join(config_dir, "server.json")):
try:
diff --git a/src/window.ui b/src/window.ui
index a3e403b..42962d1 100644
--- a/src/window.ui
+++ b/src/window.ui
@@ -291,24 +291,9 @@