diff --git a/src/alpaca.gresource.xml b/src/alpaca.gresource.xml index 50cd23b..4c647cd 100644 --- a/src/alpaca.gresource.xml +++ b/src/alpaca.gresource.xml @@ -30,6 +30,7 @@ icons/image-missing-symbolic.svg icons/update-symbolic.svg icons/down-symbolic.svg + icons/chat-bubble-text-symbolic.svg window.ui gtk/help-overlay.ui diff --git a/src/custom_widgets/chat_widget.py b/src/custom_widgets/chat_widget.py index cd428d5..39324ed 100644 --- a/src/custom_widgets/chat_widget.py +++ b/src/custom_widgets/chat_widget.py @@ -215,12 +215,16 @@ class chat_tab(Gtk.ListBoxRow): wrap_mode=2, xalign=0 ) + self.indicator = Gtk.Image.new_from_icon_name("chat-bubble-text-symbolic") + self.indicator.set_visible(False) + self.indicator.set_css_classes(['accent']) container = Gtk.Box( orientation=0, - spacing=10 + spacing=5 ) - container.append(self.spinner) container.append(self.label) + container.append(self.spinner) + container.append(self.indicator) super().__init__( css_classes = ["chat_row"], height_request = 45, @@ -429,3 +433,5 @@ class chat_list(Gtk.ListBox): if len(row.chat_window.messages) > 0: last_model_used = row.chat_window.messages[list(row.chat_window.messages)[-1]].model window.model_manager.change_model(last_model_used) + if row.indicator.get_visible(): + row.indicator.set_visible(False) diff --git a/src/custom_widgets/message_widget.py b/src/custom_widgets/message_widget.py index a212550..c968241 100644 --- a/src/custom_widgets/message_widget.py +++ b/src/custom_widgets/message_widget.py @@ -431,8 +431,6 @@ class message(Gtk.Overlay): if chat.busy: vadjustment = chat.get_vadjustment() if self.spinner: - if not window.chat_list_box.get_sensitive(): - window.chat_list_box.set_sensitive(True) self.container.remove(self.spinner) self.spinner = None self.content_children[-1].set_visible(True) @@ -442,6 +440,8 @@ class message(Gtk.Overlay): self.content_children[-1].insert_at_end(data['message']['content'], False) if 'done' in data and data['done']: window.chat_list_box.get_tab_by_name(chat.get_name()).spinner.set_visible(False) + if window.chat_list_box.get_current_chat().get_name() != chat.get_name(): + window.chat_list_box.get_tab_by_name(chat.get_name()).indicator.set_visible(True) if chat.welcome_screen: chat.container.remove(chat.welcome_screen) chat.welcome_screen = None diff --git a/src/icons/chat-bubble-text-symbolic.svg b/src/icons/chat-bubble-text-symbolic.svg new file mode 100644 index 0000000..c364f9e --- /dev/null +++ b/src/icons/chat-bubble-text-symbolic.svg @@ -0,0 +1,2 @@ + + diff --git a/src/window.py b/src/window.py index 92d46a7..f204e85 100644 --- a/src/window.py +++ b/src/window.py @@ -523,7 +523,6 @@ Generate a title following these rules: if len(data['messages']) == 1 and chat.get_name().startswith(_("New Chat")): threading.Thread(target=self.generate_chat_title, args=(data['messages'][0].copy(), chat.get_name())).start() - self.chat_list_box.set_sensitive(False) if chat.welcome_screen: chat.welcome_screen.set_visible(False) if chat.regenerate_button: