add impl for iptv

This commit is contained in:
DYefremov
2018-03-16 00:10:33 +03:00
parent 72ebdceb6e
commit 1531548e51
3 changed files with 33 additions and 7 deletions

View File

@@ -979,6 +979,7 @@ dmitry.v.yefremov@gmail.com
<property name="can_focus">True</property>
<property name="width_chars">5</property>
<property name="max_width_chars">5</property>
<property name="text">1</property>
<property name="primary_icon_stock">gtk-edit</property>
<signal name="changed" handler="on_entry_changed" swapped="no"/>
</object>
@@ -993,6 +994,7 @@ dmitry.v.yefremov@gmail.com
<property name="can_focus">True</property>
<property name="width_chars">5</property>
<property name="max_width_chars">5</property>
<property name="text">0</property>
<property name="primary_icon_stock">gtk-edit</property>
<signal name="changed" handler="on_entry_changed" swapped="no"/>
</object>
@@ -1007,6 +1009,7 @@ dmitry.v.yefremov@gmail.com
<property name="can_focus">True</property>
<property name="width_chars">5</property>
<property name="max_width_chars">5</property>
<property name="text">0</property>
<property name="primary_icon_stock">gtk-edit</property>
<signal name="changed" handler="on_entry_changed" swapped="no"/>
</object>
@@ -1021,6 +1024,7 @@ dmitry.v.yefremov@gmail.com
<property name="can_focus">True</property>
<property name="width_chars">5</property>
<property name="max_width_chars">5</property>
<property name="text">0</property>
<property name="primary_icon_stock">gtk-edit</property>
<signal name="changed" handler="on_entry_changed" swapped="no"/>
</object>
@@ -1035,6 +1039,7 @@ dmitry.v.yefremov@gmail.com
<property name="can_focus">True</property>
<property name="width_chars">5</property>
<property name="max_width_chars">5</property>
<property name="text">0</property>
<property name="primary_icon_stock">gtk-edit</property>
<signal name="changed" handler="on_entry_changed" swapped="no"/>
</object>

View File

@@ -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__":

View File

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