From eae71dae16d2901b09db7ce894a07142be48e868 Mon Sep 17 00:00:00 2001 From: jeffser Date: Sat, 29 Jun 2024 11:10:31 -0600 Subject: [PATCH] Model searchbar (WIP) --- src/alpaca.gresource.xml | 1 + src/icons/edit-find-symbolic.svg | 4 ++++ src/window.py | 14 ++++++++++++++ src/window.ui | 18 ++++++++++++++++++ 4 files changed, 37 insertions(+) create mode 100644 src/icons/edit-find-symbolic.svg diff --git a/src/alpaca.gresource.xml b/src/alpaca.gresource.xml index a6e27c1..596b930 100644 --- a/src/alpaca.gresource.xml +++ b/src/alpaca.gresource.xml @@ -27,6 +27,7 @@ icons/step-back-symbolic.svg icons/step-over-symbolic.svg icons/share-symbolic.svg + icons/edit-find-symbolic.svg window.ui gtk/help-overlay.ui diff --git a/src/icons/edit-find-symbolic.svg b/src/icons/edit-find-symbolic.svg new file mode 100644 index 0000000..da9a076 --- /dev/null +++ b/src/icons/edit-find-symbolic.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/window.py b/src/window.py index 3cf4d25..f0a6050 100644 --- a/src/window.py +++ b/src/window.py @@ -103,6 +103,7 @@ class AlpacaWindow(Adw.ApplicationWindow): navigation_view_manage_models = Gtk.Template.Child() file_preview_open_button = Gtk.Template.Child() secondary_menu_button = Gtk.Template.Child() + model_searchbar = Gtk.Template.Child() manage_models_dialog = Gtk.Template.Child() pulling_model_list_box = Gtk.Template.Child() @@ -376,6 +377,19 @@ class AlpacaWindow(Adw.ApplicationWindow): def link_button_handler(self, button): os.system(f'xdg-open "{button.get_name()}"') + @Gtk.Template.Callback() + def model_search_toggle(self, button): + self.model_searchbar.set_search_mode(button.get_active()) + self.pulling_model_list_box.set_visible(not button.get_active() and len(self.pulling_models) > 0) + self.local_model_list_box.set_visible(not button.get_active()) + print(button.get_active()) + + @Gtk.Template.Callback() + def model_search_changed(self, entry): + for i in range(len(self.available_models.keys())): + row = self.available_model_list_box.get_row_at_index(i) + row.set_visible(re.search(entry.get_text(), row.get_title(), re.IGNORECASE)) + def check_alphanumeric(self, editable, text, length, position): new_text = ''.join([char for char in text if char.isalnum() or char in ['-', '_']]) if new_text != text: editable.stop_emission_by_name("insert-text") diff --git a/src/window.ui b/src/window.ui index 83dad85..b99d3f5 100644 --- a/src/window.ui +++ b/src/window.ui @@ -604,6 +604,24 @@ create_model_menu + + + edit-find-symbolic + Search Model + + + + + + + + + + + 100 + Search models + +