From 50a517b6f1a6153c60742e39a857abeef3003c9a Mon Sep 17 00:00:00 2001 From: DYefremov Date: Fri, 2 Feb 2018 12:45:58 +0300 Subject: [PATCH] simple skeleton for global search --- app/eparser/iptv.py | 1 - app/ui/main_app_window.py | 14 ++++++++++++-- app/ui/main_helper.py | 21 +++++++++++++++++++++ app/ui/main_window.glade | 4 ++-- 4 files changed, 35 insertions(+), 5 deletions(-) diff --git a/app/eparser/iptv.py b/app/eparser/iptv.py index 25edc635..c40ed203 100644 --- a/app/eparser/iptv.py +++ b/app/eparser/iptv.py @@ -16,7 +16,6 @@ def parse_m3u(path): fav_id = " 1:0:1:0:0:0:0:0:0:0:{}:{}\n#DESCRIPTION: {}\n".format( line.strip().replace(":", "%3a"), name, name, None) srv = Service(*aggr[0:3], name, *aggr[0:3], BqServiceType.IPTV.name, *aggr, fav_id, None) - print(srv) channels.append(srv) return channels diff --git a/app/ui/main_app_window.py b/app/ui/main_app_window.py index abf6ba8b..9c1fb114 100644 --- a/app/ui/main_app_window.py +++ b/app/ui/main_app_window.py @@ -14,7 +14,7 @@ from . import Gtk, Gdk, UI_RESOURCES_PATH, LOCKED_ICON, HIDE_ICON from .dialogs import show_dialog, DialogType, get_chooser_dialog from .download_dialog import show_download_dialog from .main_helper import edit_marker, insert_marker, move_items, edit, ViewTarget, set_flags, locate_in_services, \ - scroll_to, get_base_model, update_picons, copy_picon_reference, assign_picon, remove_picon + scroll_to, get_base_model, update_picons, copy_picon_reference, assign_picon, remove_picon, search from .picons_dialog import PiconsDialog from .satellites_dialog import show_satellites_dialog from .settings_dialog import show_settings_dialog @@ -98,7 +98,8 @@ class MainAppWindow: "on_remove_picon": self.on_remove_picon, "on_reference_picon": self.on_reference_picon, "on_filter_toggled": self.on_filter_toggled, - "on_search_toggled": self.on_search_toggled} + "on_search_toggled": self.on_search_toggled, + "on_search": self.on_search} self.__options = get_config() self.__profile = self.__options.get("profile") @@ -857,6 +858,15 @@ class MainAppWindow: def on_search_toggled(self, toggle_button: Gtk.ToggleToolButton): self.__search_info_bar.set_visible(toggle_button.get_active()) + @run_idle + def on_search(self, entry, event): + search(entry.get_text(), + self.__services_view, + self.__fav_view, + self.__bouquets_view, + self.__services, + self.__bouquets) + @run_idle def update_picons(self): update_picons(self.__options.get(self.__profile).get("picons_dir_path"), self.__picons, self.__services_model) diff --git a/app/ui/main_helper.py b/app/ui/main_helper.py index 3eb60a5f..879e50c3 100644 --- a/app/ui/main_helper.py +++ b/app/ui/main_helper.py @@ -410,6 +410,27 @@ def get_picon_pixbuf(path): return GdkPixbuf.Pixbuf.new_from_file_at_scale(filename=path, width=32, height=32, preserve_aspect_ratio=True) +# ***************** Search *********************# + +def search(text, srv_view, fav_view, bqs_view, services, bouquets): + for view in srv_view, fav_view: + model = get_base_model(view.get_model()) + selection = view.get_selection() + selection.unselect_all() + if not text: + continue + paths = [] + text = text.upper() + for r in model: + if text in str(r[:]).upper(): + path = r.path + selection.select_path(r.path) + paths.append(path) + + if paths: + view.scroll_to_cell(paths[0], None) + + # ***************** Others *********************# diff --git a/app/ui/main_window.glade b/app/ui/main_window.glade index d23b1b2c..ed29a9f0 100644 --- a/app/ui/main_window.glade +++ b/app/ui/main_window.glade @@ -805,6 +805,7 @@ True False + Global search Search True gtk-find @@ -1201,12 +1202,11 @@ 200 True - False True - Not implemented yet! edit-find-symbolic False False + False