added services filtering from picons manager

This commit is contained in:
DYefremov
2020-05-25 18:25:36 +03:00
parent 636442bcd3
commit c978f5abab
3 changed files with 78 additions and 19 deletions

View File

@@ -2612,6 +2612,10 @@ class Application(Gtk.Application):
def bouquets_view(self):
return self._bouquets_view
@property
def filter_entry(self):
return self._filter_entry
@property
def current_services(self):
return self._services

View File

@@ -352,6 +352,64 @@ Author: Dmitriy Yefremov
<property name="margin_bottom">5</property>
<property name="orientation">vertical</property>
<property name="spacing">5</property>
<child>
<object class="GtkFileChooserButton" id="explorer_path_button">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="action">select-folder</property>
<property name="title" translatable="yes"/>
<signal name="current-folder-changed" handler="on_picons_folder_changed" swapped="no"/>
<signal name="file-set" handler="on_picons_folder_changed" swapped="no"/>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkBox" id="filter_service_box">
<property name="can_focus">False</property>
<property name="tooltip_text" translatable="yes">Filter services in the main list.</property>
<property name="halign">end</property>
<property name="valign">end</property>
<property name="spacing">5</property>
<child>
<object class="GtkLabel" id="filter_services_label">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="halign">end</property>
<property name="valign">center</property>
<property name="label" translatable="yes">Filter services</property>
</object>
<packing>
<property name="expand">True</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
<child>
<object class="GtkSwitch" id="filter_services_switch">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="halign">end</property>
<property name="valign">center</property>
<signal name="state-set" handler="on_filter_services_switch" swapped="no"/>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="pack_type">end</property>
<property name="position">2</property>
</packing>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">False</property>
<property name="position">1</property>
</packing>
</child>
<child>
<object class="GtkSearchBar" id="search_bar">
<property name="can_focus">False</property>
@@ -370,7 +428,7 @@ Author: Dmitriy Yefremov
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
<property name="position">2</property>
</packing>
</child>
<child>
@@ -392,22 +450,7 @@ Author: Dmitriy Yefremov
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
<child>
<object class="GtkFileChooserButton" id="explorer_path_button">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="action">select-folder</property>
<property name="title" translatable="yes"/>
<signal name="current-folder-changed" handler="on_picons_folder_changed" swapped="no"/>
<signal name="file-set" handler="on_picons_folder_changed" swapped="no"/>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">2</property>
<property name="position">3</property>
</packing>
</child>
<child>
@@ -452,7 +495,7 @@ Author: Dmitriy Yefremov
<packing>
<property name="expand">True</property>
<property name="fill">True</property>
<property name="position">3</property>
<property name="position">4</property>
</packing>
</child>
</object>

View File

@@ -5,7 +5,7 @@ import subprocess
import tempfile
from pathlib import Path
from gi.repository import GLib, GdkPixbuf
from gi.repository import GLib, GdkPixbuf, GObject
from app.commons import run_idle, run_task, run_with_delay
from app.connections import upload_data, DownloadType, download_data, remove_picons
@@ -28,6 +28,7 @@ class PiconsDialog:
self._POS_PATTERN = re.compile(r"^\d+\.\d+[EW]?$")
self._current_process = None
self._terminate = False
self._filter_binding = None
handlers = {"on_receive": self.on_receive,
"on_load_providers": self.on_load_providers,
@@ -54,6 +55,7 @@ class PiconsDialog:
"on_select_all": self.on_select_all,
"on_unselect_all": self.on_unselect_all,
"on_filter_toggled": self.on_filter_toggled,
"on_filter_services_switch": self.on_filter_services_switch,
"on_popup_menu": on_popup_menu}
builder = Gtk.Builder()
@@ -103,6 +105,7 @@ class PiconsDialog:
self._load_providers_button.bind_property("visible", builder.get_object("download_box_separator"), "visible")
self._filter_bar.bind_property("search-mode-enabled", self._filter_bar, "visible")
self._explorer_path_button.bind_property("sensitive", builder.get_object("picons_view_sw"), "sensitive")
self._filter_button.bind_property("active", builder.get_object("filter_service_box"), "visible")
# Init drag-and-drop
self.init_drag_and_drop()
# Style
@@ -509,6 +512,15 @@ class PiconsDialog:
if not active:
self._picons_filter_entry.set_text("")
def on_filter_services_switch(self, button, state):
if state:
self._filter_binding = self._picons_filter_entry.bind_property("text", self._app.filter_entry, "text")
self._app.filter_entry.set_text(self._picons_filter_entry.get_text())
else:
if self._filter_binding:
self._filter_binding.unbind()
self._app.filter_entry.set_text("")
def on_url_changed(self, entry):
suit = self._PATTERN.search(entry.get_text())
entry.set_name("GtkEntry" if suit else "digit-entry")