From 19b32a9a59dfa8eb8a27fa8e9b674dfbe1d3d5b9 Mon Sep 17 00:00:00 2001 From: jeffser Date: Wed, 25 Dec 2024 18:30:24 -0600 Subject: [PATCH] Indicate if model:tag has been downloaded already --- src/alpaca.gresource.xml | 1 + src/custom_widgets/model_widget.py | 21 +++++++++++---------- src/icons/check-plain-symbolic.svg | 2 ++ 3 files changed, 14 insertions(+), 10 deletions(-) create mode 100644 src/icons/check-plain-symbolic.svg diff --git a/src/alpaca.gresource.xml b/src/alpaca.gresource.xml index 4a8489fa..cf466c6c 100644 --- a/src/alpaca.gresource.xml +++ b/src/alpaca.gresource.xml @@ -46,6 +46,7 @@ icons/sprout-symbolic.svg icons/weight-symbolic.svg icons/tree-circle-symbolic.svg + icons/check-plain-symbolic.svg window.ui gtk/help-overlay.ui diff --git a/src/custom_widgets/model_widget.py b/src/custom_widgets/model_widget.py index 953bde99..4fab23ea 100644 --- a/src/custom_widgets/model_widget.py +++ b/src/custom_widgets/model_widget.py @@ -600,16 +600,17 @@ def show_pull_menu(self): window.model_tag_flow_box.append(category_pill('language:' + _('Others...'), True)) for tag_data in tags: - if f"{self.get_name()}:{tag_data[0]}" not in window.model_manager.get_model_list(): - tag_row = Adw.ActionRow( - title = tag_data[0], - subtitle = tag_data[1], - name = f"{self.get_name()}:{tag_data[0]}" - ) - download_icon = Gtk.Image.new_from_icon_name("folder-download-symbolic") - tag_row.add_suffix(download_icon) - download_icon.update_property([4], [_("Download {}:{}").format(self.get_name(), tag_data[0])]) + tag_row = Adw.ActionRow( + title = tag_data[0], + subtitle = tag_data[1], + name = f"{self.get_name()}:{tag_data[0]}", + sensitive = f"{self.get_name()}:{tag_data[0]}" not in window.model_manager.get_model_list() + ) + download_icon = Gtk.Image.new_from_icon_name("folder-download-symbolic" if f"{self.get_name()}:{tag_data[0]}" not in window.model_manager.get_model_list() else "check-plain-symbolic") + tag_row.add_suffix(download_icon) + download_icon.update_property([4], [_("Download {}:{}").format(self.get_name(), tag_data[0])]) + if f"{self.get_name()}:{tag_data[0]}" not in window.model_manager.get_model_list(): gesture_click = Gtk.GestureClick.new() gesture_click.connect("pressed", lambda *_, name=f"{self.get_name()}:{tag_data[0]}" : self.pull_model(name)) @@ -619,7 +620,7 @@ def show_pull_menu(self): tag_row.add_controller(gesture_click) tag_row.add_controller(event_controller_key) - window.model_tag_list_box.append(tag_row) + window.model_tag_list_box.append(tag_row) class available_model_list(Gtk.ListBox): __gtype_name__ = 'AlpacaAvailableModelList' diff --git a/src/icons/check-plain-symbolic.svg b/src/icons/check-plain-symbolic.svg new file mode 100644 index 00000000..096db078 --- /dev/null +++ b/src/icons/check-plain-symbolic.svg @@ -0,0 +1,2 @@ + +