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. """