mirror of
https://github.com/DYefremov/DemonEditor.git
synced 2026-02-05 22:30:30 +01:00
add filtering by coding presence
This commit is contained in:
@@ -3,7 +3,7 @@
|
||||
|
||||
The MIT License (MIT)
|
||||
|
||||
Copyright (c) 2018-2024 Dmitriy Yefremov
|
||||
Copyright (c) 2018-2025 Dmitriy Yefremov
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
@@ -32,7 +32,7 @@ Author: Dmitriy Yefremov
|
||||
<!-- interface-license-type mit -->
|
||||
<!-- interface-name DemonEditor -->
|
||||
<!-- interface-description Enigma2 channel and satellite list editor. -->
|
||||
<!-- interface-copyright 2018-2024 Dmitriy Yefremov -->
|
||||
<!-- interface-copyright 2018-2025 Dmitriy Yefremov -->
|
||||
<!-- interface-authors Dmitriy Yefremov -->
|
||||
<object class="GtkListStore" id="alt_list_store">
|
||||
<columns>
|
||||
@@ -298,6 +298,67 @@ Author: Dmitriy Yefremov
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
<object class="GtkPopover" id="filter_cas_popover">
|
||||
<property name="can-focus">False</property>
|
||||
<child>
|
||||
<object class="GtkButtonBox">
|
||||
<property name="width-request">100</property>
|
||||
<property name="visible">True</property>
|
||||
<property name="can-focus">False</property>
|
||||
<property name="border-width">5</property>
|
||||
<property name="orientation">vertical</property>
|
||||
<property name="layout-style">expand</property>
|
||||
<child>
|
||||
<object class="GtkRadioButton" id="filter_all_button">
|
||||
<property name="label" translatable="yes">All</property>
|
||||
<property name="visible">True</property>
|
||||
<property name="can-focus">True</property>
|
||||
<property name="receives-default">False</property>
|
||||
<property name="active">True</property>
|
||||
<property name="draw-indicator">False</property>
|
||||
<signal name="toggled" handler="on_filter_changed" swapped="no"/>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="expand">True</property>
|
||||
<property name="fill">True</property>
|
||||
<property name="position">0</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkRadioButton" id="filter_free_button">
|
||||
<property name="label" translatable="yes">Free</property>
|
||||
<property name="visible">True</property>
|
||||
<property name="can-focus">True</property>
|
||||
<property name="receives-default">False</property>
|
||||
<property name="draw-indicator">False</property>
|
||||
<property name="group">filter_coded_button</property>
|
||||
<signal name="toggled" handler="on_filter_changed" swapped="no"/>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="expand">True</property>
|
||||
<property name="fill">True</property>
|
||||
<property name="position">1</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkRadioButton" id="filter_coded_button">
|
||||
<property name="label" translatable="yes">Coded</property>
|
||||
<property name="visible">True</property>
|
||||
<property name="can-focus">True</property>
|
||||
<property name="receives-default">False</property>
|
||||
<property name="draw-indicator">False</property>
|
||||
<property name="group">filter_all_button</property>
|
||||
<signal name="toggled" handler="on_filter_changed" swapped="no"/>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="expand">True</property>
|
||||
<property name="fill">True</property>
|
||||
<property name="position">2</property>
|
||||
</packing>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
<object class="GtkListStore" id="filter_sat_pos_list_store">
|
||||
<columns>
|
||||
<!-- column-name satellite -->
|
||||
@@ -2022,22 +2083,23 @@ Author: Dmitriy Yefremov
|
||||
<object class="GtkBox" id="services_fs_box">
|
||||
<property name="visible">True</property>
|
||||
<property name="can-focus">False</property>
|
||||
<property name="margin-left">5</property>
|
||||
<property name="margin-right">5</property>
|
||||
<property name="margin-start">5</property>
|
||||
<property name="margin-end">5</property>
|
||||
<property name="margin-bottom">5</property>
|
||||
<property name="spacing">10</property>
|
||||
<property name="orientation">vertical</property>
|
||||
<property name="spacing">5</property>
|
||||
<child>
|
||||
<object class="GtkBox" id="filter_box">
|
||||
<property name="can-focus">False</property>
|
||||
<property name="valign">center</property>
|
||||
<child>
|
||||
<object class="GtkToggleButton" id="filter_only_free_button">
|
||||
<object class="GtkMenuButton" id="filter_cas_menu_button">
|
||||
<property name="width-request">50</property>
|
||||
<property name="visible">True</property>
|
||||
<property name="can-focus">False</property>
|
||||
<property name="receives-default">True</property>
|
||||
<property name="tooltip-text" translatable="yes">Only free</property>
|
||||
<signal name="toggled" handler="on_filter_changed" swapped="no"/>
|
||||
<property name="tooltip-text" translatable="yes">Access</property>
|
||||
<property name="popover">filter_cas_popover</property>
|
||||
<child>
|
||||
<object class="GtkImage">
|
||||
<property name="visible">True</property>
|
||||
|
||||
@@ -456,7 +456,9 @@ class Application(Gtk.Application):
|
||||
self._filter_types_model = builder.get_object("filter_types_list_store")
|
||||
self._filter_sat_pos_model = builder.get_object("filter_sat_pos_list_store")
|
||||
self._filter_bouquet_model = builder.get_object("filter_bouquet_list_store")
|
||||
self._filter_only_free_button = builder.get_object("filter_only_free_button")
|
||||
self._filter_all_button = builder.get_object("filter_all_button")
|
||||
self._filter_free_button = builder.get_object("filter_free_button")
|
||||
self._filter_coded_button = builder.get_object("filter_coded_button")
|
||||
self._filter_not_in_bq_button = builder.get_object("filter_not_in_bq_button")
|
||||
self._services_load_spinner.bind_property("active", self._filter_services_button, "sensitive", 4)
|
||||
self._filter_iptv_services_button = builder.get_object("filter_iptv_services_button")
|
||||
@@ -3829,7 +3831,7 @@ class Application(Gtk.Application):
|
||||
def filter_set_default(self):
|
||||
""" Setting defaults for filter elements. """
|
||||
self._filter_entry.set_text("")
|
||||
self._filter_only_free_button.set_active(False)
|
||||
self._filter_all_button.set_active(True)
|
||||
self._filter_not_in_bq_button.set_active(False)
|
||||
self._filter_types_model.foreach(lambda m, p, i: m.set_value(i, 1, True))
|
||||
self._service_types.update({r[0] for r in self._filter_types_model})
|
||||
@@ -3920,7 +3922,12 @@ class Application(Gtk.Application):
|
||||
txt = self._filter_entry.get_text().upper()
|
||||
for r in self._services_model:
|
||||
fav_id = r[Column.SRV_FAV_ID]
|
||||
free = not r[Column.SRV_CODED] if self._filter_only_free_button.get_active() else True
|
||||
free = True
|
||||
if self._filter_free_button.get_active():
|
||||
free = not r[Column.SRV_CODED]
|
||||
elif self._filter_coded_button.get_active():
|
||||
free = r[Column.SRV_CODED]
|
||||
|
||||
self._filter_cache[fav_id] = all((free, fav_id not in self._in_bouquets,
|
||||
r[Column.SRV_TYPE] in self._service_types,
|
||||
r[Column.SRV_POS] in self._sat_positions,
|
||||
|
||||
Reference in New Issue
Block a user