services marking not presented in bouquets

This commit is contained in:
DYefremov
2021-11-28 23:41:16 +03:00
parent 9b579af528
commit df127c05f3
2 changed files with 88 additions and 10 deletions

View File

@@ -103,6 +103,11 @@ Author: Dmitriy Yefremov
<property name="can_focus">False</property>
<property name="stock">gtk-clear</property>
</object>
<object class="GtkImage" id="clear_mark_not_in_bq_image">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="stock">gtk-clear</property>
</object>
<object class="GtkImage" id="copy_image">
<property name="visible">True</property>
<property name="can_focus">False</property>
@@ -822,6 +827,11 @@ Author: Dmitriy Yefremov
<property name="can_focus">False</property>
<property name="stock">gtk-find-and-replace</property>
</object>
<object class="GtkImage" id="mark_not_in_bq_image">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="stock">gtk-find-and-replace</property>
</object>
<object class="GtkImage" id="network_transmit_receive_image">
<property name="visible">True</property>
<property name="can_focus">False</property>
@@ -1063,6 +1073,32 @@ Author: Dmitriy Yefremov
<property name="can_focus">False</property>
</object>
</child>
<child>
<object class="GtkImageMenuItem" id="services_mark_not_in_bq_popup_item">
<property name="label" translatable="yes">Mark not presented in Bouquets</property>
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="image">mark_not_in_bq_image</property>
<property name="use_stock">False</property>
<signal name="activate" handler="on_services_mark_not_in_bouquets" swapped="no"/>
</object>
</child>
<child>
<object class="GtkImageMenuItem" id="services_clear_not_in_bq_popup_item">
<property name="label" translatable="yes">Clear marked</property>
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="image">clear_mark_not_in_bq_image</property>
<property name="use_stock">False</property>
<signal name="activate" handler="on_services_clear_marked" swapped="no"/>
</object>
</child>
<child>
<object class="GtkSeparatorMenuItem" id="services_separatormenuitem_1">
<property name="visible">True</property>
<property name="can_focus">False</property>
</object>
</child>
<child>
<object class="GtkImageMenuItem" id="services_picon_popup_item">
<property name="label" translatable="yes">Picon</property>
@@ -3752,7 +3788,7 @@ Author: Dmitriy Yefremov
</child>
<child>
<object class="GtkImageMenuItem" id="fav_edit_sub_menu_popup_item">
<property name="label" translatable="yes">Extra:</property>
<property name="label" translatable="yes">Extra</property>
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="image">extra_edit_image</property>

View File

@@ -161,6 +161,8 @@ class Application(Gtk.Application):
"on_fav_press": self.on_fav_press,
"on_locate_in_services": self.on_locate_in_services,
"on_mark_duplicates": self.on_mark_duplicates,
"on_services_mark_not_in_bouquets": self.on_services_mark_not_in_bouquets,
"on_services_clear_marked": self.on_services_clear_marked,
"on_filter_changed": self.on_filter_changed,
"on_filter_type_toggled": self.on_filter_type_toggled,
"on_services_filter_toggled": self.on_services_filter_toggled,
@@ -1887,15 +1889,8 @@ class Application(Gtk.Application):
factor = self.DEL_FACTOR
for index, srv in enumerate(services):
tooltip, background = None, None
if self._use_colors:
flags = srv.flags_cas
if flags:
f_flags = list(filter(lambda x: x.startswith("f:"), flags.split(",")))
if f_flags and Flag.is_new(Flag.parse(f_flags[0])):
background = self._NEW_COLOR
s = srv._replace(picon=self._picons.get(srv.picon_id, None)) + (tooltip, background)
background = self.get_new_background(srv.flags_cas)
s = srv._replace(picon=self._picons.get(srv.picon_id, None)) + (None, background)
self._services_model.append(s)
if index % factor == 0:
yield True
@@ -1903,6 +1898,12 @@ class Application(Gtk.Application):
self._services_load_spinner.stop()
yield True
def get_new_background(self, flags):
if self._use_colors and flags:
f_flags = list(filter(lambda x: x.startswith("f:"), flags.split(",")))
if f_flags and Flag.is_new(Flag.parse(f_flags[0])):
return self._NEW_COLOR
def clear_current_data(self):
""" Clearing current data from lists """
if len(self._services_model) > self.DEL_FACTOR * 50:
@@ -3332,6 +3333,47 @@ class Application(Gtk.Application):
if r[Column.FAV_SERVICE] in dup:
r[Column.FAV_BACKGROUND] = self._NEW_COLOR
def on_services_mark_not_in_bouquets(self, item):
if self._services_load_spinner.get_property("active"):
self.show_error_message("Data loading in progress!")
return
gen = self.mark_not_in_bouquets()
GLib.idle_add(lambda: next(gen, False), priority=GLib.PRIORITY_LOW)
def mark_not_in_bouquets(self):
self._services_load_spinner.start()
ids = set(chain.from_iterable(self._bouquets.values()))
for index, row in enumerate(self._services_model):
fav_id = row[Column.SRV_FAV_ID]
if fav_id not in ids:
row[Column.SRV_BACKGROUND] = self._EXTRA_COLOR
if index % self.FAV_FACTOR == 0:
yield True
self._services_load_spinner.stop()
yield True
def on_services_clear_marked(self, item):
if self._services_load_spinner.get_property("active"):
self.show_error_message("Data loading in progress!")
return
gen = self.clear_marked()
GLib.idle_add(lambda: next(gen, False), priority=GLib.PRIORITY_LOW)
def clear_marked(self):
self._services_load_spinner.start()
for index, row in enumerate(self._services_model):
row[Column.SRV_BACKGROUND] = self.get_new_background(row[Column.SRV_CAS_FLAGS])
if index % self.FAV_FACTOR == 0:
yield True
self._services_load_spinner.stop()
yield True
# ***************** Picons *********************#
@run_task