simple skeleton for global search

This commit is contained in:
DYefremov
2018-02-02 12:45:58 +03:00
parent 184c3b18ba
commit 50a517b6f1
4 changed files with 35 additions and 5 deletions

View File

@@ -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

View File

@@ -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)

View File

@@ -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 *********************#

View File

@@ -805,6 +805,7 @@
<object class="GtkToggleToolButton" id="search_tool_button">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="tooltip_text" translatable="yes">Global search</property>
<property name="label" translatable="yes">Search</property>
<property name="use_underline">True</property>
<property name="stock_id">gtk-find</property>
@@ -1201,12 +1202,11 @@
<object class="GtkSearchEntry" id="search_entry">
<property name="width_request">200</property>
<property name="visible">True</property>
<property name="sensitive">False</property>
<property name="can_focus">True</property>
<property name="text" translatable="yes">Not implemented yet!</property>
<property name="primary_icon_name">edit-find-symbolic</property>
<property name="primary_icon_activatable">False</property>
<property name="primary_icon_sensitive">False</property>
<signal name="key-release-event" handler="on_search" swapped="no"/>
</object>
<packing>
<property name="expand">False</property>