added search feature for satellites update dialog

This commit is contained in:
DYefremov
2018-05-07 18:19:00 +03:00
parent c4e8a6646d
commit 890163af4a
4 changed files with 88 additions and 18 deletions

View File

@@ -191,8 +191,7 @@ class MainAppWindow:
self._filter_info_bar = builder.get_object("filter_info_bar")
# Search
self._search_info_bar = builder.get_object("search_info_bar")
self._search_provider = SearchProvider(self._services_view, self._fav_view, self._bouquets_view,
self._services, self._bouquets,
self._search_provider = SearchProvider((self._services_view, self._fav_view, self._bouquets_view),
builder.get_object("search_down_button"),
builder.get_object("search_up_button"))
self._main_window.show()

View File

@@ -1618,12 +1618,67 @@
<property name="can_focus">False</property>
<property name="homogeneous">True</property>
<child>
<object class="GtkSearchEntry" id="searchentry1">
<object class="GtkBox" id="search_bar_box">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="primary_icon_name">edit-find-symbolic</property>
<property name="primary_icon_activatable">False</property>
<property name="primary_icon_sensitive">False</property>
<property name="can_focus">False</property>
<child>
<object class="GtkSearchEntry" id="sat_update_search_entry">
<property name="width_request">200</property>
<property name="visible">True</property>
<property name="can_focus">True</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="search-changed" handler="on_search" swapped="no"/>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkButton" id="sat_update_search_down_button">
<property name="visible">True</property>
<property name="sensitive">False</property>
<property name="can_focus">True</property>
<property name="receives_default">True</property>
<signal name="clicked" handler="on_search_down" swapped="no"/>
<child>
<object class="GtkArrow" id="arrow1">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="arrow_type">down</property>
</object>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">False</property>
<property name="position">1</property>
</packing>
</child>
<child>
<object class="GtkButton" id="sat_update_search_up_button">
<property name="visible">True</property>
<property name="sensitive">False</property>
<property name="can_focus">True</property>
<property name="receives_default">True</property>
<signal name="clicked" handler="on_search_up" swapped="no"/>
<child>
<object class="GtkArrow" id="arrow2">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="arrow_type">up</property>
</object>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">False</property>
<property name="position">2</property>
</packing>
</child>
</object>
<packing>
<property name="expand">False</property>
@@ -1820,7 +1875,9 @@
<property name="can_focus">True</property>
<property name="model">update_sat_list_model_sort</property>
<child internal-child="selection">
<object class="GtkTreeSelection" id="treeview-selection2"/>
<object class="GtkTreeSelection" id="sat_update_treeview_selection">
<property name="mode">multiple</property>
</object>
</child>
<child>
<object class="GtkTreeViewColumn" id="upd_satellite_column">

View File

@@ -6,6 +6,7 @@ from math import fabs
from app.commons import run_idle, run_task
from app.eparser import get_satellites, write_satellites, Satellite, Transponder
from app.tools.satellites import SatellitesParser
from .search import SearchProvider
from .uicommons import Gtk, Gdk, UI_RESOURCES_PATH, TEXT_DOMAIN, MOVE_KEYS
from .dialogs import show_dialog, DialogType, WaitDialog
from .main_helper import move_items, scroll_to, append_text_to_tview, get_base_model
@@ -447,6 +448,9 @@ class SatellitesUpdateDialog:
"on_filter_toggled": self.on_filter_toggled,
"on_find_toggled": self.on_find_toggled,
"on_filter": self.on_filter,
"on_search": self.on_search,
"on_search_down": self.on_search_down,
"on_search_up": self.on_search_up,
"on_quit": self.on_quit}
builder = Gtk.Builder()
@@ -467,7 +471,7 @@ class SatellitesUpdateDialog:
self._receive_button = builder.get_object("receive_sat_list_tool_button")
self._sat_update_info_bar = builder.get_object("sat_update_info_bar")
self._info_bar_message_label = builder.get_object("info_bar_message_label")
self._search_info_bar = builder.get_object("sat_update_search_info_bar")
# Filter
self._filter_info_bar = builder.get_object("sat_update_filter_info_bar")
self._from_pos_button = builder.get_object("from_pos_button")
self._to_pos_button = builder.get_object("to_pos_button")
@@ -476,6 +480,12 @@ class SatellitesUpdateDialog:
self._filter_model = builder.get_object("update_sat_list_model_filter")
self._filter_model.set_visible_func(self.filter_function)
self._filter_positions = (0, 0)
# Search
self._search_info_bar = builder.get_object("sat_update_search_info_bar")
self._search_provider = SearchProvider((self._sat_view,),
builder.get_object("sat_update_search_down_button"),
builder.get_object("sat_update_search_up_button"))
self._download_task = False
self._parser = None
@@ -594,7 +604,6 @@ class SatellitesUpdateDialog:
def on_filter(self, item):
self._filter_positions = self.get_positions()
self._filter_model.refilter()
print("Satellites count: ", len(self._sat_view.get_model()))
def filter_function(self, model, iter, data):
if self._filter_model is None or self._filter_model == "None":
@@ -614,6 +623,15 @@ class SatellitesUpdateDialog:
to_pos = round(self._to_pos_button.get_value(), 1) * (-1 if self._filter_to_combo_box.get_active() else 1)
return from_pos, to_pos
def on_search(self, entry):
self._search_provider.search(entry.get_text())
def on_search_down(self, item):
self._search_provider.on_search_down()
def on_search_up(self, item):
self._search_provider.on_search_up()
def on_quit(self):
self._download_task = False

View File

@@ -2,22 +2,18 @@
class SearchProvider:
def __init__(self, srv_view, fav_view, bqs_view, services, bouquets, down_button, up_button):
def __init__(self, views, down_button, up_button):
self._paths = []
self._current_index = -1
self._max_indexes = 0
self._srv_view = srv_view
self._fav_view = fav_view
self._bqs_view = bqs_view
self._services = services
self._bouquets = bouquets
self._views = views
self._up_button = up_button
self._down_button = down_button
def search(self, text, ):
def search(self, text):
self._current_index = -1
self._paths.clear()
for view in self._srv_view, self._fav_view:
for view in self._views:
model = view.get_model()
selection = view.get_selection()
selection.unselect_all()