diff --git a/app/ui/dialogs.glade b/app/ui/dialogs.glade index 0acba720..eb772d09 100644 --- a/app/ui/dialogs.glade +++ b/app/ui/dialogs.glade @@ -979,6 +979,7 @@ dmitry.v.yefremov@gmail.com True 5 5 + 1 gtk-edit @@ -993,6 +994,7 @@ dmitry.v.yefremov@gmail.com True 5 5 + 0 gtk-edit @@ -1007,6 +1009,7 @@ dmitry.v.yefremov@gmail.com True 5 5 + 0 gtk-edit @@ -1021,6 +1024,7 @@ dmitry.v.yefremov@gmail.com True 5 5 + 0 gtk-edit @@ -1035,6 +1039,7 @@ dmitry.v.yefremov@gmail.com True 5 5 + 0 gtk-edit diff --git a/app/ui/iptv.py b/app/ui/iptv.py index cbb7262a..75a9e11c 100644 --- a/app/ui/iptv.py +++ b/app/ui/iptv.py @@ -1,8 +1,9 @@ import re +from app.eparser.ecommons import BqServiceType, Service from app.eparser.iptv import NEUTRINO_FAV_ID_FORMAT, StreamType, ENIGMA2_FAV_ID_FORMAT from app.properties import Profile -from . import Gtk, Gdk, TEXT_DOMAIN, UI_RESOURCES_PATH +from . import Gtk, Gdk, TEXT_DOMAIN, UI_RESOURCES_PATH, IPTV_ICON from .dialogs import Action, show_dialog, DialogType from .main_helper import get_base_model @@ -38,9 +39,8 @@ class IptvDialog: self._bouquet = bouquet self._services = services self._model, self._paths = view.get_selection().get_selected_rows() - self._current_srv = get_base_model(self._model)[self._paths][:] - self._pattern = re.compile("(?:^[\s]*$|\D)") + self._PATTERN = re.compile("(?:^[\s]*$|\D)") # style self._style_provider = Gtk.CssProvider() self._style_provider.load_from_path(UI_RESOURCES_PATH + "style.css") @@ -60,7 +60,10 @@ class IptvDialog: if self._action is Action.ADD: self._save_button.set_visible(False) self._add_button.set_visible(True) + if self._profile is Profile.ENIGMA_2: + self._update_reference_entry() elif self._action is Action.EDIT: + self._current_srv = get_base_model(self._model)[self._paths][:] self.init_data(self._current_srv) def show(self): @@ -112,7 +115,7 @@ class IptvDialog: return 1 if self._stream_type_combobox.get_active() == 0 else 4097 def on_entry_changed(self, entry): - if self._pattern.search(entry.get_text()): + if self._PATTERN.search(entry.get_text()): entry.set_name("digit-entry") else: entry.set_name("GtkEntry") @@ -134,7 +137,10 @@ class IptvDialog: self.update_bouquet_data(name, fav_id) def save_neutrino_data(self): - id_data = self._current_srv[7].split("::") + if self._action is Action.EDIT: + id_data = self._current_srv[7].split("::") + else: + id_data = ["", "", "0", None, None, None, None, "", "", "1"] id_data[0] = self._url_entry.get_text() id_data[1] = self._description_entry.get_text() self.update_bouquet_data(self._name_entry.get_text(), NEUTRINO_FAV_ID_FORMAT.format(*id_data)) @@ -145,6 +151,15 @@ class IptvDialog: self._services[fav_id] = old_srv._replace(service=name, fav_id=fav_id) self._bouquet[self._paths[0][0]] = fav_id self._model.set_value(self._model.get_iter(self._paths), 2, name) + else: + aggr = [None] * 10 + s_type = BqServiceType.IPTV.name + srv = (None, None, name, None, None, s_type, None, fav_id, None) + itr = self._model.insert_after(self._model.get_iter(self._paths[0]), + srv) if self._paths else self._model.insert(0, srv) + self._model.set_value(itr, 1, IPTV_ICON) + self._bouquet.insert(self._model.get_path(itr)[0], fav_id) + self._services[fav_id] = Service(None, None, IPTV_ICON, name, *aggr[0:3], s_type, *aggr, fav_id, None) if __name__ == "__main__": diff --git a/app/ui/main_app_window.py b/app/ui/main_app_window.py index 0d08d54e..0323a0d4 100644 --- a/app/ui/main_app_window.py +++ b/app/ui/main_app_window.py @@ -864,8 +864,14 @@ class MainAppWindow: self.update_bouquet_channels(self.__fav_model, None, bq_selected) def on_iptv(self, item): - pass - # IptvDialog(self.__main_window).show() + response = IptvDialog(self.__main_window, + self.__fav_view, + self.__services, + self.__bouquets.get(self.is_bouquet_selected(), None), + Profile(self.__profile), + Action.ADD).show() + if response != Gtk.ResponseType.CANCEL: + self.update_fav_num_column(self.__fav_model) def on_insert_marker(self, view): """ Inserts marker into bouquet services list. """