Instant launch
This commit is contained in:
parent
63296219cf
commit
13a076bd9f
@ -121,7 +121,7 @@ class chat(Gtk.ScrolledWindow):
|
||||
tooltip_text=_("Open Model Manager"),
|
||||
css_classes=["suggested-action", "pill"]
|
||||
)
|
||||
button.connect('clicked', lambda *_ : window.manage_models_dialog.present(window))
|
||||
button.set_action_name('app.manage_models')
|
||||
button_container.append(button)
|
||||
|
||||
self.welcome_screen = Adw.StatusPage(
|
||||
|
@ -421,7 +421,7 @@ class model_manager_container(Gtk.Box):
|
||||
self.available_list = available_model_list()
|
||||
self.append(self.available_list)
|
||||
self.model_selector = model_selector_button()
|
||||
window.header_bar.set_title_widget(self.model_selector)
|
||||
window.title_stack.add_named(self.model_selector, 'model_selector')
|
||||
|
||||
def add_local_model(self, model_name:str):
|
||||
self.local_list.add_model(model_name)
|
||||
@ -470,6 +470,7 @@ class model_manager_container(Gtk.Box):
|
||||
except Exception as e:
|
||||
logger.error(e)
|
||||
window.connection_error()
|
||||
window.title_stack.set_visible_child_name('model_selector')
|
||||
|
||||
#Should only be called when the app starts
|
||||
def update_available_list(self):
|
||||
|
@ -51,7 +51,6 @@ class AlpacaWindow(Adw.ApplicationWindow):
|
||||
|
||||
#Variables
|
||||
attachments = {}
|
||||
header_bar = Gtk.Template.Child()
|
||||
|
||||
#Override elements
|
||||
overrides_group = Gtk.Template.Child()
|
||||
@ -95,9 +94,7 @@ class AlpacaWindow(Adw.ApplicationWindow):
|
||||
model_searchbar = Gtk.Template.Child()
|
||||
no_results_page = Gtk.Template.Child()
|
||||
model_link_button = Gtk.Template.Child()
|
||||
launch_dialog = Gtk.Template.Child()
|
||||
launch_status = Gtk.Template.Child()
|
||||
launch_level_bar = Gtk.Template.Child()
|
||||
title_stack = Gtk.Template.Child()
|
||||
manage_models_dialog = Gtk.Template.Child()
|
||||
model_scroller = Gtk.Template.Child()
|
||||
|
||||
@ -206,10 +203,6 @@ class AlpacaWindow(Adw.ApplicationWindow):
|
||||
self.welcome_carousel.scroll_to(self.welcome_carousel.get_nth_page(self.welcome_carousel.get_position()+1), True)
|
||||
else:
|
||||
self.welcome_dialog.force_close()
|
||||
if shutil.which('ollama'):
|
||||
threading.Thread(target=self.prepare_alpaca, args=(11435, '', False, {'temperature': 0.7, 'seed': 0, 'keep_alive': 5}, {}, '', 0, True, True)).start()
|
||||
else:
|
||||
threading.Thread(target=self.prepare_alpaca, args=(11435, 'http://0.0.0.0:11434', True, {'temperature': 0.7, 'seed': 0, 'keep_alive': 5}, {}, '', 0, True, False)).start()
|
||||
self.powersaver_warning_switch.set_active(True)
|
||||
|
||||
@Gtk.Template.Callback()
|
||||
@ -794,19 +787,11 @@ 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 prepare_alpaca(self, local_port:int, remote_url:str, remote:bool, tweaks:dict, overrides:dict, bearer_token:str, idle_timer_delay:int, save:bool, show_launch_dialog:bool):
|
||||
#Show launch dialog
|
||||
if show_launch_dialog:
|
||||
GLib.idle_add(self.launch_dialog.present, self)
|
||||
|
||||
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):
|
||||
#Instance
|
||||
self.launch_level_bar.set_value(0)
|
||||
self.launch_status.set_description(_('Loading instance'))
|
||||
self.ollama_instance = connection_handler.instance(local_port, remote_url, remote, tweaks, overrides, bearer_token, idle_timer_delay)
|
||||
|
||||
#User Preferences
|
||||
self.launch_level_bar.set_value(1)
|
||||
self.launch_status.set_description(_('Applying user preferences'))
|
||||
for element in list(list(list(list(self.tweaks_group)[0])[1])[0]):
|
||||
if element.get_name() in self.ollama_instance.tweaks:
|
||||
element.set_value(self.ollama_instance.tweaks[element.get_name()])
|
||||
@ -825,26 +810,20 @@ Generate a title following these rules:
|
||||
#Model Manager
|
||||
self.model_manager = model_widget.model_manager_container()
|
||||
self.model_scroller.set_child(self.model_manager)
|
||||
self.launch_level_bar.set_value(2)
|
||||
self.launch_status.set_description(_('Updating list of local models'))
|
||||
self.model_manager.update_local_list()
|
||||
self.launch_level_bar.set_value(3)
|
||||
self.launch_status.set_description(_('Updating list of available models'))
|
||||
self.model_manager.update_available_list()
|
||||
|
||||
#Chat History
|
||||
self.launch_level_bar.set_value(4)
|
||||
self.launch_status.set_description(_('Loading chats'))
|
||||
GLib.idle_add(self.load_history)
|
||||
self.launch_level_bar.set_value(5)
|
||||
self.load_history()
|
||||
|
||||
#Model Manager P.2
|
||||
self.model_manager.update_available_list()
|
||||
self.model_manager.update_local_list()
|
||||
self.get_application().lookup_action("manage_models").set_enabled(True)
|
||||
|
||||
#Save preferences
|
||||
if save:
|
||||
self.save_server_config()
|
||||
|
||||
time.sleep(.5) #This is to prevent errors with gtk creating the launch dialog and closing it too quickly
|
||||
#Close launch dialog
|
||||
GLib.idle_add(self.launch_dialog.force_close)
|
||||
self.send_button.set_sensitive(True)
|
||||
|
||||
def __init__(self, **kwargs):
|
||||
super().__init__(**kwargs)
|
||||
@ -890,6 +869,7 @@ Generate a title following these rules:
|
||||
|
||||
for action_name, data in universal_actions.items():
|
||||
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.file_preview_remove_button.connect('clicked', lambda button : dialogs.remove_attached_file(self, button.get_name()))
|
||||
self.attachment_button.connect("clicked", lambda button, file_filter=self.file_filter_attachments: dialogs.attach_file(self, file_filter))
|
||||
@ -906,12 +886,16 @@ Generate a title following these rules:
|
||||
if 'powersaver_warning' not in data:
|
||||
data['powersaver_warning'] = True
|
||||
self.powersaver_warning_switch.set_active(data['powersaver_warning'])
|
||||
threading.Thread(target=self.prepare_alpaca, args=(data['local_port'], data['remote_url'], data['run_remote'], data['model_tweaks'], data['ollama_overrides'], data['remote_bearer_token'], round(data['idle_timer']), False, True)).start()
|
||||
threading.Thread(target=self.prepare_alpaca, args=(data['local_port'], data['remote_url'], data['run_remote'], data['model_tweaks'], data['ollama_overrides'], data['remote_bearer_token'], round(data['idle_timer']), False)).start()
|
||||
except Exception as e:
|
||||
logger.error(e)
|
||||
threading.Thread(target=self.prepare_alpaca, args=(11435, '', False, {'temperature': 0.7, 'seed': 0, 'keep_alive': 5}, {}, '', 0, True, True)).start()
|
||||
threading.Thread(target=self.prepare_alpaca, args=(11435, '', False, {'temperature': 0.7, 'seed': 0, 'keep_alive': 5}, {}, '', 0, True)).start()
|
||||
self.powersaver_warning_switch.set_active(True)
|
||||
else:
|
||||
if shutil.which('ollama'):
|
||||
threading.Thread(target=self.prepare_alpaca, args=(11435, '', False, {'temperature': 0.7, 'seed': 0, 'keep_alive': 5}, {}, '', 0, True)).start()
|
||||
else:
|
||||
threading.Thread(target=self.prepare_alpaca, args=(11435, 'http://0.0.0.0:11434', True, {'temperature': 0.7, 'seed': 0, 'keep_alive': 5}, {}, '', 0, True)).start()
|
||||
self.welcome_dialog.present(self)
|
||||
|
||||
if self.powersaver_warning_switch.get_active():
|
||||
|
@ -55,7 +55,7 @@
|
||||
<child>
|
||||
<object class="AdwToolbarView">
|
||||
<child type="top">
|
||||
<object class="AdwHeaderBar" id="header_bar">
|
||||
<object class="AdwHeaderBar">
|
||||
<child type="start">
|
||||
<object class="GtkToggleButton" id="show_sidebar_button">
|
||||
<property name="icon-name">sidebar-show-symbolic</property>
|
||||
@ -63,6 +63,33 @@
|
||||
<property name="active" bind-source="split_view_overlay" bind-property="show-sidebar" bind-flags="sync-create"/>
|
||||
</object>
|
||||
</child>
|
||||
<child type="title">
|
||||
<object class="GtkStack" id="title_stack">
|
||||
<property name="transition_duration">100</property>
|
||||
<property name="transition_type">1</property>
|
||||
<child>
|
||||
<object class="GtkStackPage">
|
||||
<property name="name">loading</property>
|
||||
<property name="child">
|
||||
<object class="GtkBox">
|
||||
<property name="orientation">0</property>
|
||||
<property name="spacing">10</property>
|
||||
<child>
|
||||
<object class="GtkSpinner">
|
||||
<property name="spinning">true</property>
|
||||
</object>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkLabel">
|
||||
<property name="label" translatable="yes">Loading Instance</property>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
</property>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
<child type="end">
|
||||
<object class="GtkMenuButton" id="secondary_menu_button">
|
||||
<property name="primary">False</property>
|
||||
@ -178,6 +205,7 @@
|
||||
<property name="vexpand">false</property>
|
||||
<property name="valign">3</property>
|
||||
<property name="tooltip-text" translatable="yes">Send Message</property>
|
||||
<property name="sensitive">false</property>
|
||||
<style>
|
||||
<class name="accent"/>
|
||||
<class name="circular"/>
|
||||
@ -420,27 +448,6 @@
|
||||
</child>
|
||||
</object>
|
||||
|
||||
<object class="AdwDialog" id="launch_dialog">
|
||||
<accessibility>
|
||||
<property name="label" translatable="yes">Loading Alpaca dialog</property>
|
||||
</accessibility>
|
||||
<property name="width-request">400</property>
|
||||
<property name="can-close">false</property>
|
||||
<child>
|
||||
<object class="AdwStatusPage" id="launch_status">
|
||||
<property name="icon_name">com.jeffser.Alpaca</property>
|
||||
<property name="title" translatable="yes">Loading Alpaca...</property>
|
||||
<property name="child">
|
||||
<object class="GtkLevelBar" id="launch_level_bar">
|
||||
<property name="mode">1</property>
|
||||
<property name="min-value">0</property>
|
||||
<property name="max-value">5</property>
|
||||
</object>
|
||||
</property>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
|
||||
<object class="AdwDialog" id="manage_models_dialog">
|
||||
<accessibility>
|
||||
<property name="label" translatable="yes">Manage models dialog</property>
|
||||
|
Loading…
x
Reference in New Issue
Block a user