mirror of
https://github.com/DYefremov/DemonEditor.git
synced 2026-03-09 22:21:06 +01:00
bouquet selection refactoring
This commit is contained in:
@@ -155,6 +155,7 @@ class Application(Gtk.Application):
|
||||
self._picons = {}
|
||||
self._blacklist = set()
|
||||
self._current_bq_name = None
|
||||
self._bq_selected = "" # Current selected bouquet
|
||||
# Current satellite positions in the services list
|
||||
self._sat_positions = []
|
||||
# Player
|
||||
@@ -301,7 +302,7 @@ class Application(Gtk.Application):
|
||||
def fav_service_data_function(self, column, render, model, itr, data):
|
||||
""" Data function for the service column of FAV list """
|
||||
fav_id = model.get_value(itr, 7)
|
||||
bq = self._extra_bouquets.get(self.get_selected_bouquet(), None)
|
||||
bq = self._extra_bouquets.get(self._bq_selected, None)
|
||||
has_id = bq.get(fav_id, None) if bq else bq
|
||||
render.set_property("foreground", self._EXTRA_COLOR) if has_id else render.set_property("foreground-set", None)
|
||||
|
||||
@@ -451,9 +452,8 @@ class Application(Gtk.Application):
|
||||
|
||||
def remove_favs(self, itrs, model):
|
||||
""" Deleting bouquet services """
|
||||
bq_selected = self.get_selected_bouquet()
|
||||
if bq_selected:
|
||||
fav_bouquet = self._bouquets.get(bq_selected, None)
|
||||
if self._bq_selected:
|
||||
fav_bouquet = self._bouquets.get(self._bq_selected, None)
|
||||
if fav_bouquet:
|
||||
for itr in itrs:
|
||||
del fav_bouquet[int(model.get_path(itr)[0])]
|
||||
@@ -584,9 +584,8 @@ class Application(Gtk.Application):
|
||||
|
||||
def update_bouquet_list(self):
|
||||
""" Update bouquet after move items """
|
||||
bq_selected = self.get_selected_bouquet()
|
||||
if bq_selected:
|
||||
fav_bouquet = self._bouquets[bq_selected]
|
||||
if self._bq_selected:
|
||||
fav_bouquet = self._bouquets[self._bq_selected]
|
||||
fav_bouquet.clear()
|
||||
for row in self._fav_model:
|
||||
fav_bouquet.append(row[7])
|
||||
@@ -926,6 +925,12 @@ class Application(Gtk.Application):
|
||||
self._bq_name_label.set_text(self._current_bq_name if self._current_bq_name else "")
|
||||
self._fav_model.clear()
|
||||
|
||||
if self._current_bq_name:
|
||||
ch_row = model[model.get_iter(path)][:]
|
||||
self._bq_selected = "{}:{}".format(ch_row[0], ch_row[3])
|
||||
else:
|
||||
self._bq_selected = ""
|
||||
|
||||
if self._bouquets_view.row_expanded(path):
|
||||
self._bouquets_view.collapse_row(path)
|
||||
else:
|
||||
@@ -959,30 +964,15 @@ class Application(Gtk.Application):
|
||||
|
||||
def check_bouquet_selection(self):
|
||||
""" checks and returns bouquet if selected """
|
||||
bq_selected = self.get_selected_bouquet()
|
||||
|
||||
if not bq_selected:
|
||||
if not self._bq_selected:
|
||||
show_dialog(DialogType.ERROR, self._main_window, "Error. No bouquet is selected!")
|
||||
return
|
||||
|
||||
if Profile(self._profile) is Profile.NEUTRINO_MP and bq_selected.endswith(BqType.WEBTV.value):
|
||||
if Profile(self._profile) is Profile.NEUTRINO_MP and self._bq_selected.endswith(BqType.WEBTV.value):
|
||||
show_dialog(DialogType.ERROR, self._main_window, "Operation not allowed in this context!")
|
||||
return
|
||||
|
||||
return bq_selected
|
||||
|
||||
def get_selected_bouquet(self):
|
||||
""" returns 'name:type' of last selected bouquet or False """
|
||||
if self._current_bq_name is None:
|
||||
return False
|
||||
|
||||
for row in self._bouquets_model:
|
||||
chs_rows = row.iterchildren()
|
||||
for ch_row in chs_rows:
|
||||
name = ch_row[0]
|
||||
if name == self._current_bq_name:
|
||||
return "{}:{}".format(name, ch_row[3])
|
||||
return False
|
||||
return self._bq_selected
|
||||
|
||||
@run_idle
|
||||
def update_bouquets_type(self):
|
||||
@@ -1117,21 +1107,19 @@ class Application(Gtk.Application):
|
||||
self._tool_elements[elem].set_sensitive(not_empty)
|
||||
else:
|
||||
is_service = model_name == self._SERVICE_LIST_NAME
|
||||
bq_selected = False
|
||||
if model_name == self._FAV_LIST_NAME:
|
||||
bq_selected = self.get_selected_bouquet()
|
||||
if profile is Profile.NEUTRINO_MP and bq_selected:
|
||||
name, bq_type = bq_selected.split(":")
|
||||
bq_selected = BqType(bq_type) is BqType.WEBTV
|
||||
if profile is Profile.NEUTRINO_MP and self._bq_selected:
|
||||
name, bq_type = self._bq_selected.split(":")
|
||||
self._bq_selected = BqType(bq_type) is BqType.WEBTV
|
||||
|
||||
for elem in self._FAV_ELEMENTS:
|
||||
if elem in ("paste_tool_button", "fav_paste_popup_item"):
|
||||
self._tool_elements[elem].set_sensitive(not is_service and self._rows_buffer)
|
||||
elif elem in self._FAV_ENIGMA_ELEMENTS:
|
||||
if profile is Profile.ENIGMA_2:
|
||||
self._tool_elements[elem].set_sensitive(bq_selected and not is_service)
|
||||
self._tool_elements[elem].set_sensitive(self._bq_selected and not is_service)
|
||||
elif elem in self._FAV_IPTV_ELEMENTS:
|
||||
self._tool_elements[elem].set_sensitive(bq_selected and not is_service)
|
||||
self._tool_elements[elem].set_sensitive(self._bq_selected and not is_service)
|
||||
else:
|
||||
self._tool_elements[elem].set_sensitive(not_empty and not is_service)
|
||||
for elem in self._SERVICE_ELEMENTS:
|
||||
@@ -1152,10 +1140,10 @@ class Application(Gtk.Application):
|
||||
|
||||
def set_service_flags(self, flag):
|
||||
profile = Profile(self._profile)
|
||||
bq_selected = self.get_selected_bouquet()
|
||||
|
||||
if profile is Profile.ENIGMA_2:
|
||||
set_flags(flag, self._services_view, self._fav_view, self._services, self._blacklist)
|
||||
elif profile is Profile.NEUTRINO_MP and bq_selected:
|
||||
elif profile is Profile.NEUTRINO_MP and self._bq_selected:
|
||||
model, paths = self._bouquets_view.get_selection().get_selected_rows()
|
||||
itr = model.get_iter(paths[0])
|
||||
value = model.get_value(itr, 1 if flag is Flag.LOCK else 2)
|
||||
@@ -1195,7 +1183,7 @@ class Application(Gtk.Application):
|
||||
|
||||
def on_insert_marker(self, view):
|
||||
""" Inserts marker into bouquet services list. """
|
||||
insert_marker(view, self._bouquets, self.get_selected_bouquet(), self._services, self._main_window)
|
||||
insert_marker(view, self._bouquets, self._bq_selected, self._services, self._main_window)
|
||||
self.update_fav_num_column(self._fav_model)
|
||||
|
||||
def on_fav_press(self, menu, event):
|
||||
@@ -1211,7 +1199,7 @@ class Application(Gtk.Application):
|
||||
response = IptvDialog(self._main_window,
|
||||
self._fav_view,
|
||||
self._services,
|
||||
self._bouquets.get(self.get_selected_bouquet(), None),
|
||||
self._bouquets.get(self._bq_selected, None),
|
||||
Profile(self._profile),
|
||||
Action.ADD).show()
|
||||
if response != Gtk.ResponseType.CANCEL:
|
||||
@@ -1229,11 +1217,10 @@ class Application(Gtk.Application):
|
||||
show_dialog(DialogType.ERROR, self._main_window, "This list does not contains IPTV streams!")
|
||||
return
|
||||
|
||||
bq_selected = self.get_selected_bouquet()
|
||||
if not bq_selected:
|
||||
if not self._bq_selected:
|
||||
return
|
||||
|
||||
bouquet = self._bouquets.get(bq_selected, [])
|
||||
bouquet = self._bouquets.get(self._bq_selected, [])
|
||||
IptvListConfigurationDialog(self._main_window, self._services, iptv_rows, bouquet, profile).show()
|
||||
|
||||
@run_idle
|
||||
@@ -1243,14 +1230,13 @@ class Application(Gtk.Application):
|
||||
show_dialog(DialogType.ERROR, self._main_window, "This list does not contains IPTV streams!")
|
||||
return
|
||||
|
||||
bq_selected = self.get_selected_bouquet()
|
||||
if not bq_selected:
|
||||
if not self._bq_selected:
|
||||
return
|
||||
|
||||
if show_dialog(DialogType.QUESTION, self._main_window) == Gtk.ResponseType.CANCEL:
|
||||
return
|
||||
|
||||
fav_bqt = self._bouquets.get(bq_selected, None)
|
||||
fav_bqt = self._bouquets.get(self._bq_selected, None)
|
||||
prf = Profile(self._profile)
|
||||
response = SearchUnavailableDialog(self._main_window, self._fav_model, fav_bqt, iptv_rows, prf).show()
|
||||
if response:
|
||||
@@ -1267,14 +1253,14 @@ class Application(Gtk.Application):
|
||||
return
|
||||
|
||||
channels = parse_m3u(response, Profile(self._profile))
|
||||
bq_selected = self.get_selected_bouquet()
|
||||
if channels and bq_selected:
|
||||
bq_services = self._bouquets.get(bq_selected)
|
||||
|
||||
if channels and self._bq_selected:
|
||||
bq_services = self._bouquets.get(self._bq_selected)
|
||||
self._fav_model.clear()
|
||||
for ch in channels:
|
||||
self._services[ch.fav_id] = ch
|
||||
bq_services.append(ch.fav_id)
|
||||
next(self.update_bouquet_services(self._fav_model, None, bq_selected), False)
|
||||
next(self.update_bouquet_services(self._fav_model, None, self._bq_selected), False)
|
||||
|
||||
# ***************** Player *********************#
|
||||
|
||||
@@ -1578,7 +1564,7 @@ class Application(Gtk.Application):
|
||||
return IptvDialog(self._main_window,
|
||||
self._fav_view,
|
||||
self._services,
|
||||
self._bouquets.get(self.get_selected_bouquet(), None),
|
||||
self._bouquets.get(self._bq_selected, None),
|
||||
Profile(self._profile),
|
||||
Action.EDIT).show()
|
||||
self.on_locate_in_services(view)
|
||||
@@ -1603,8 +1589,7 @@ class Application(Gtk.Application):
|
||||
|
||||
def on_bouquets_edit(self, view):
|
||||
""" Rename bouquets """
|
||||
bq_selected = self.get_selected_bouquet()
|
||||
if not bq_selected:
|
||||
if not self._bq_selected:
|
||||
show_dialog(DialogType.ERROR, self._main_window, "This item is not allowed to edit!")
|
||||
return
|
||||
|
||||
@@ -1648,18 +1633,17 @@ class Application(Gtk.Application):
|
||||
return
|
||||
|
||||
srv = self._services.get(fav_id, None)
|
||||
selected_bq = self.get_selected_bouquet()
|
||||
ex_bq = self._extra_bouquets.get(selected_bq, None)
|
||||
ex_bq = self._extra_bouquets.get(self._bq_selected, None)
|
||||
|
||||
if srv.service == response and ex_bq:
|
||||
ex_bq.pop(fav_id, None)
|
||||
if not ex_bq:
|
||||
self._extra_bouquets.pop(selected_bq, None)
|
||||
self._extra_bouquets.pop(self._bq_selected, None)
|
||||
else:
|
||||
if ex_bq:
|
||||
ex_bq[fav_id] = response
|
||||
else:
|
||||
self._extra_bouquets[selected_bq] = {fav_id: response}
|
||||
self._extra_bouquets[self._bq_selected] = {fav_id: response}
|
||||
|
||||
model.set_value(model.get_iter(paths), 2, response)
|
||||
|
||||
@@ -1671,8 +1655,7 @@ class Application(Gtk.Application):
|
||||
model, paths = selection
|
||||
fav_id = model[paths][7]
|
||||
srv = self._services.get(fav_id, None)
|
||||
selected_bq = self.get_selected_bouquet()
|
||||
ex_bq = self._extra_bouquets.get(selected_bq, None)
|
||||
ex_bq = self._extra_bouquets.get(self._bq_selected, None)
|
||||
|
||||
if not ex_bq:
|
||||
show_dialog(DialogType.ERROR, self._main_window, "No changes required!")
|
||||
@@ -1682,7 +1665,7 @@ class Application(Gtk.Application):
|
||||
show_dialog(DialogType.ERROR, self._main_window, "No changes required!")
|
||||
return
|
||||
if not ex_bq:
|
||||
self._extra_bouquets.pop(selected_bq, None)
|
||||
self._extra_bouquets.pop(self._bq_selected, None)
|
||||
|
||||
model.set_value(model.get_iter(paths), 2, srv.service)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user