From bc1d34e195d60650970a4c2dda6307f3f0c56f8b Mon Sep 17 00:00:00 2001 From: Marko Mecina <marko.mecina@univie.ac.at> Date: Tue, 21 Mar 2023 14:08:24 +0100 Subject: [PATCH] add search function to data pool tab --- Tst/codeblockreusefeature/codeblockreuse.py | 2 +- Tst/tst/data_pool_tab.py | 45 +++++---------------- 2 files changed, 12 insertions(+), 35 deletions(-) diff --git a/Tst/codeblockreusefeature/codeblockreuse.py b/Tst/codeblockreusefeature/codeblockreuse.py index 4a643bb..3bd1a25 100755 --- a/Tst/codeblockreusefeature/codeblockreuse.py +++ b/Tst/codeblockreusefeature/codeblockreuse.py @@ -391,7 +391,7 @@ class CBRSearch(Gtk.Box): # self.popover_filter_columns.add(self.listbox_columns) # search field - self.input_field = Gtk.Entry() + self.input_field = Gtk.SearchEntry() self.pack_start(self.input_field, False, False, 0) self.input_buffer = Gtk.EntryBuffer() self.input_field.set_buffer(self.input_buffer) diff --git a/Tst/tst/data_pool_tab.py b/Tst/tst/data_pool_tab.py index 829fb66..4df88c2 100644 --- a/Tst/tst/data_pool_tab.py +++ b/Tst/tst/data_pool_tab.py @@ -91,13 +91,10 @@ class DataPoolTable(Gtk.Grid): # setting the filter function self.data_pool_filter.set_visible_func(self.data_pool_filter_func) - self.pid = None - - # Create ListStores for the ComboBoxes - # self.pid_liststore = Gtk.ListStore(str) - # for pid_ref in pid_list: - # self.pid_liststore.append([pid_ref, ]) - # self.current_filter_type = None + # filter entry + self.filter_entry = Gtk.SearchEntry() + self.filter_entry.connect('search-changed', self.do_filter) + self.attach(self.filter_entry, 0, 0, 8, 1) # creating the treeview, making it use the filter a model, adding columns self.treeview = Gtk.TreeView.new_with_model(Gtk.TreeModelSort(self.data_pool_filter)) @@ -107,12 +104,6 @@ class DataPoolTable(Gtk.Grid): column.set_sort_column_id(i) self.treeview.append_column(column) - # self.treeview.set_tooltip_text('Right-click for copy menu') - - # Handle selection - self.selected_row = self.treeview.get_selection() - #self.selected_row.connect("changed", self.item_selected) - # setting up layout, treeview in scrollwindow self.scrollable_treelist = Gtk.ScrolledWindow() self.scrollable_treelist.set_vexpand(True) @@ -134,6 +125,10 @@ class DataPoolTable(Gtk.Grid): self.show_all() + def do_filter(self, widget, *args): + self.current_filter_data_pool = widget.get_text() + self.data_pool_filter.refilter() + def on_treeview_clicked(self, widget, event): if event.button == 3: self.rcl_menu.popup_at_pointer() @@ -147,30 +142,12 @@ class DataPoolTable(Gtk.Grid): else: self.clipboard.set_text(model[it][cell_idx], -1) - def on_pid_combo_changed(self, combo): - combo_iter = combo.get_active_iter() - if combo_iter is not None: - model = combo.get_model() - number = model[combo_iter][0] - self.current_filter_data_pool = int(number) - - self.data_pool_filter.refilter() - - def on_clear_button_clicked(self, widget): - self.current_filter_data_pool = None - self.data_pool_filter.refilter() - - def item_selected(self, selection): - model, row = selection.get_selected() - if row is not None: - self.pid = model[row][:2] - def data_pool_filter_func(self, model, iter, data): - - if self.current_filter_data_pool is None or self.current_filter_data_pool == "None": + if not self.current_filter_data_pool: return True else: - return model[iter][0] == self.current_filter_data_pool + # match search string in PID, NAME, DESCR columns + return ' '.join([*model[iter][:2], model[iter][5]]).lower().count(self.current_filter_data_pool.lower()) def on_drag_data_get(self, treeview, drag_context, selection_data, info, time, *args): treeselection = treeview.get_selection() -- GitLab