@@ -884,11 +884,46 @@ def restart_instance(self):
884884 if self .ollama_instance is not None : self .stop_instance ()
885885 start_instance (self )
886886
887+ def reconnect_remote (self , dialog , task = None , entry = None ):
888+ response = dialog .choose_finish (task )
889+ if not task or response == "connect" :
890+ self .ollama_url = entry .get_text ()
891+ self .remote_url = self .ollama_url
892+ if self .verify_connection () == False : self .connection_error ()
893+ else :
894+ dialog .force_close ()
895+ elif response == "local" :
896+ self .run_remote = False
897+ self .ollama_url = f"http://127.0.0.1:{ self .local_ollama_port } "
898+ self .start_instance ()
899+ if self .verify_connection () == False : self .connection_error ()
900+ else :
901+ self .remote_connection_switch .set_active (False )
902+ dialog .force_close ()
903+ elif response == "close" :
904+ self .destroy ()
905+
887906 def connection_error (self ):
888907 if self .run_remote :
889- self .preferences_dialog .present (self )
890- self .remote_connection_entry .set_css_classes (["error" ])
891- self .show_toast ("error" , 1 , self .preferences_dialog )
908+ entry = Gtk .Entry (
909+ css_classes = ["error" ],
910+ text = self .ollama_url
911+ )
912+ dialog = Adw .AlertDialog (
913+ heading = _ ("Connection Error" ),
914+ body = _ ("The remote instance has disconnected" ),
915+ extra_child = entry
916+ )
917+ entry .connect ("activate" , lambda entry , dialog = dialog : self .reconnect_remote (dialog = dialog , entry = entry ))
918+ dialog .add_response ("close" , _ ("Close Alpaca" ))
919+ dialog .add_response ("local" , _ ("Use local instance" ))
920+ dialog .add_response ("remote" , _ ("Connect" ))
921+ dialog .set_response_appearance ("remote" , Adw .ResponseAppearance .SUGGESTED )
922+ dialog .choose (
923+ parent = self ,
924+ cancellable = None ,
925+ callback = lambda dialog , task , entry = entry : self .reconnect_remote (dialog = dialog , task = task , entry = entry )
926+ )
892927 else :
893928 self .restart_instance ()
894929 self .show_toast ("error" , 7 , self .main_overlay )
@@ -1013,7 +1048,7 @@ def __init__(self, **kwargs):
10131048 self .ollama_url = f"http://127.0.0.1:{ self .local_ollama_port } "
10141049 self .first_time_setup = True
10151050 self .welcome_dialog .present (self )
1016- if self .verify_connection () is False : self .connection_error ()
1051+ if self .verify_connection () is False and self . run_remote == False : self .connection_error ()
10171052 self .update_list_available_models ()
10181053 self .load_history ()
10191054 self .update_chat_list ()
0 commit comments