mirror of
https://github.com/DYefremov/DemonEditor.git
synced 2026-05-07 12:17:30 +02:00
services marking not presented in bouquets
This commit is contained in:
@@ -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>
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user