Message search (yeah finally)

This commit is contained in:
jeffser
2024-09-21 15:50:38 -06:00
parent 3653af7b81
commit 5150fd769a
3 changed files with 59 additions and 3 deletions

View File

@@ -92,6 +92,9 @@ class AlpacaWindow(Adw.ApplicationWindow):
file_preview_remove_button = Gtk.Template.Child()
secondary_menu_button = Gtk.Template.Child()
model_searchbar = Gtk.Template.Child()
message_searchbar = Gtk.Template.Child()
message_search_button = Gtk.Template.Child()
searchentry_messages = Gtk.Template.Child()
no_results_page = Gtk.Template.Child()
model_link_button = Gtk.Template.Child()
title_stack = Gtk.Template.Child()
@@ -321,6 +324,10 @@ class AlpacaWindow(Adw.ApplicationWindow):
self.model_manager.pulling_list.set_visible(not button.get_active() and len(list(self.model_manager.pulling_list)) > 0)
self.model_manager.local_list.set_visible(not button.get_active() and len(list(self.model_manager.local_list)) > 0)
@Gtk.Template.Callback()
def message_search_toggle(self, button):
self.message_searchbar.set_search_mode(button.get_active())
@Gtk.Template.Callback()
def model_search_changed(self, entry):
results = 0
@@ -336,6 +343,23 @@ class AlpacaWindow(Adw.ApplicationWindow):
self.model_scroller.set_visible(True)
self.no_results_page.set_visible(False)
@Gtk.Template.Callback()
def message_search_changed(self, entry, current_chat=None):
search_term=entry.get_text()
results = 0
if not current_chat:
current_chat = self.chat_list_box.get_current_chat()
if current_chat:
for key, message in current_chat.messages.items():
message.set_visible(re.search(search_term, message.text, re.IGNORECASE))
for block in message.content_children:
if isinstance(block, message_widget.text_block):
if search_term:
highlighted_text = re.sub(f"({re.escape(search_term)})", r"<span background='yellow' bgalpha='30%'>\1</span>", block.get_text(),flags=re.IGNORECASE)
block.set_markup(highlighted_text)
else:
block.set_markup(block.get_text())
@Gtk.Template.Callback()
def on_clipboard_paste(self, textview):
logger.debug("Pasting from clipboard")
@@ -827,7 +851,7 @@ Generate a title following these rules:
def __init__(self, **kwargs):
super().__init__(**kwargs)
self.message_searchbar.connect('notify::search-mode-enabled', lambda *_: self.message_search_button.set_active(self.message_searchbar.get_search_mode()))
message_widget.window = self
chat_widget.window = self
model_widget.window = self
@@ -864,7 +888,8 @@ Generate a title following these rules:
'export_chat': [self.chat_actions],
'export_current_chat': [self.current_chat_actions],
'toggle_sidebar': [lambda *_: self.split_view_overlay.set_show_sidebar(not self.split_view_overlay.get_show_sidebar()), ['F9']],
'manage_models': [lambda *_: self.manage_models_dialog.present(self), ['<primary>m']]
'manage_models': [lambda *_: self.manage_models_dialog.present(self), ['<primary>m']],
'search_messages': [lambda *_: self.message_searchbar.set_search_mode(not self.message_searchbar.get_search_mode()), ['<primary>f']]
}
for action_name, data in universal_actions.items():