edit impl for iptv

This commit is contained in:
DYefremov
2018-03-15 23:10:22 +03:00
parent 791fa2b5f6
commit 72ebdceb6e
5 changed files with 67 additions and 34 deletions

View File

@@ -731,7 +731,7 @@ dmitry.v.yefremov@gmail.com
<object class="GtkLabel" id="label23">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="label" translatable="yes">Name:</property>
<property name="label" translatable="yes">Name</property>
<property name="width_chars">7</property>
<property name="max_width_chars">7</property>
</object>
@@ -742,8 +742,10 @@ dmitry.v.yefremov@gmail.com
</child>
<child>
<object class="GtkEntry" id="name_entry">
<property name="width_request">-1</property>
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="hexpand">True</property>
<property name="primary_icon_stock">gtk-edit</property>
</object>
<packing>
@@ -752,10 +754,10 @@ dmitry.v.yefremov@gmail.com
</packing>
</child>
<child>
<object class="GtkLabel" id="label33">
<object class="GtkLabel" id="iptv_description_label">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="label" translatable="yes">Description:</property>
<property name="label" translatable="yes">Description</property>
</object>
<packing>
<property name="left_attach">1</property>
@@ -766,6 +768,7 @@ dmitry.v.yefremov@gmail.com
<object class="GtkEntry" id="description_entry">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="hexpand">True</property>
<property name="primary_icon_stock">gtk-edit</property>
</object>
<packing>
@@ -777,7 +780,7 @@ dmitry.v.yefremov@gmail.com
<object class="GtkLabel" id="iptv_type_label">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="label" translatable="yes">Type:</property>
<property name="label" translatable="yes">Stream type</property>
</object>
<packing>
<property name="left_attach">2</property>
@@ -791,6 +794,7 @@ dmitry.v.yefremov@gmail.com
<property name="model">stream_type_liststore</property>
<property name="active">0</property>
<property name="id_column">0</property>
<signal name="changed" handler="on_stream_type_changed" swapped="no"/>
<child>
<object class="GtkCellRendererText" id="iptv_sream_type_cellrenderertext"/>
<attributes>
@@ -804,10 +808,10 @@ dmitry.v.yefremov@gmail.com
</packing>
</child>
<child>
<object class="GtkLabel" id="label26">
<object class="GtkLabel" id="iptv_reference_label">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="label" translatable="yes">Reference:</property>
<property name="label" translatable="yes">Reference</property>
</object>
<packing>
<property name="left_attach">3</property>
@@ -818,6 +822,7 @@ dmitry.v.yefremov@gmail.com
<object class="GtkEntry" id="reference_entry">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="hexpand">True</property>
<property name="editable">False</property>
</object>
<packing>
@@ -827,7 +832,7 @@ dmitry.v.yefremov@gmail.com
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="expand">True</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
@@ -917,7 +922,7 @@ dmitry.v.yefremov@gmail.com
<object class="GtkLabel" id="label28">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="label" translatable="yes">Service type</property>
<property name="label" translatable="yes">Type</property>
</object>
<packing>
<property name="left_attach">0</property>
@@ -972,8 +977,8 @@ dmitry.v.yefremov@gmail.com
<object class="GtkEntry" id="srv_type_entry">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="width_chars">10</property>
<property name="max_width_chars">10</property>
<property name="width_chars">5</property>
<property name="max_width_chars">5</property>
<property name="primary_icon_stock">gtk-edit</property>
<signal name="changed" handler="on_entry_changed" swapped="no"/>
</object>
@@ -986,8 +991,8 @@ dmitry.v.yefremov@gmail.com
<object class="GtkEntry" id="sid_entry">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="width_chars">10</property>
<property name="max_width_chars">10</property>
<property name="width_chars">5</property>
<property name="max_width_chars">5</property>
<property name="primary_icon_stock">gtk-edit</property>
<signal name="changed" handler="on_entry_changed" swapped="no"/>
</object>
@@ -1000,8 +1005,8 @@ dmitry.v.yefremov@gmail.com
<object class="GtkEntry" id="tr_id_entry">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="width_chars">10</property>
<property name="max_width_chars">10</property>
<property name="width_chars">5</property>
<property name="max_width_chars">5</property>
<property name="primary_icon_stock">gtk-edit</property>
<signal name="changed" handler="on_entry_changed" swapped="no"/>
</object>
@@ -1014,8 +1019,8 @@ dmitry.v.yefremov@gmail.com
<object class="GtkEntry" id="net_id_entry">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="width_chars">10</property>
<property name="max_width_chars">10</property>
<property name="width_chars">5</property>
<property name="max_width_chars">5</property>
<property name="primary_icon_stock">gtk-edit</property>
<signal name="changed" handler="on_entry_changed" swapped="no"/>
</object>
@@ -1028,8 +1033,8 @@ dmitry.v.yefremov@gmail.com
<object class="GtkEntry" id="namespace_entry">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="width_chars">10</property>
<property name="max_width_chars">10</property>
<property name="width_chars">5</property>
<property name="max_width_chars">5</property>
<property name="primary_icon_stock">gtk-edit</property>
<signal name="changed" handler="on_entry_changed" swapped="no"/>
</object>

View File

@@ -1,6 +1,6 @@
import re
from app.eparser.iptv import NEUTRINO_FAV_ID_FORMAT
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 .dialogs import Action, show_dialog, DialogType
@@ -8,8 +8,11 @@ from .main_helper import get_base_model
class IptvDialog:
def __init__(self, transient, view=None, services=None, bouquets=None, profile=Profile.ENIGMA_2, action=Action.ADD):
handlers = {"on_entry_changed": self.on_entry_changed, "on_save": self.on_save}
def __init__(self, transient, view, services, bouquet, profile=Profile.ENIGMA_2, action=Action.ADD):
handlers = {"on_entry_changed": self.on_entry_changed,
"on_save": self.on_save,
"on_stream_type_changed": self.on_stream_type_changed}
builder = Gtk.Builder()
builder.set_translation_domain(TEXT_DOMAIN)
builder.add_objects_from_file(UI_RESOURCES_PATH + "dialogs.glade", ("iptv_dialog", "stream_type_liststore"))
@@ -32,6 +35,8 @@ class IptvDialog:
self._stream_type_combobox = builder.get_object("stream_type_combobox")
self._action = action
self._profile = profile
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][:]
@@ -45,7 +50,12 @@ class IptvDialog:
if profile is Profile.NEUTRINO_MP:
builder.get_object("iptv_data_box").set_visible(False)
builder.get_object("iptv_type_label").set_visible(False)
builder.get_object("reference_entry").set_visible(False)
builder.get_object("iptv_reference_label").set_visible(False)
self._stream_type_combobox.set_visible(False)
else:
self._description_entry.set_visible(False)
builder.get_object("iptv_description_label").set_visible(False)
if self._action is Action.ADD:
self._save_button.set_visible(False)
@@ -75,6 +85,7 @@ class IptvDialog:
data = data.split(":")
if len(data) < 12:
return
self._stream_type_combobox.set_active(0 if StreamType(data[0].strip()) is StreamType.DVB_TS else 1)
self._srv_type_entry.set_text(data[2])
self._sid_entry.set_text(data[3])
self._tr_id_entry.set_text(data[4])
@@ -98,7 +109,7 @@ class IptvDialog:
self._namespace_entry.get_text()))
def get_type(self):
return 1
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()):
@@ -107,16 +118,32 @@ class IptvDialog:
entry.set_name("GtkEntry")
self._update_reference_entry()
def on_stream_type_changed(self, item):
self._update_reference_entry()
def save_enigma2_data(self):
pass
name = self._name_entry.get_text().strip()
fav_id = ENIGMA2_FAV_ID_FORMAT.format(self.get_type(),
self._srv_type_entry.get_text(),
self._sid_entry.get_text(),
self._tr_id_entry.get_text(),
self._net_id_entry.get_text(),
self._namespace_entry.get_text(),
self._url_entry.get_text().replace(":", "%3a"),
name, name)
self.update_bouquet_data(name, fav_id)
def save_neutrino_data(self):
name = self._name_entry.get_text()
if self._action is Action.EDIT:
id_data = self._current_srv[7].split("::")
id_data[0] = self._url_entry.get_text()
id_data[1] = self._description_entry.get_text()
fav_id = NEUTRINO_FAV_ID_FORMAT.format(*id_data)
self.update_bouquet_data(self._name_entry.get_text(), NEUTRINO_FAV_ID_FORMAT.format(*id_data))
def update_bouquet_data(self, name, fav_id):
if self._action is Action.EDIT:
old_srv = self._services.pop(self._current_srv[7])
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)

View File

@@ -936,7 +936,7 @@ class MainAppWindow:
return IptvDialog(self.__main_window,
self.__fav_view,
self.__services,
self.__bouquets,
self.__bouquets.get(self.is_bouquet_selected(), None),
Profile(self.__profile),
Action.EDIT).show()
self.on_locate_in_services(view)

View File

@@ -59,7 +59,7 @@ def edit_marker(view, bouquets, selected_bouquet, channels, parent_window):
old_ch = channels.pop(fav_id, None)
new_fav_id = "{}::{}\n#DESCRIPTION {}\n".format(fav_id.split("::")[0], response, response)
model.set(itr, {2: response, 7: new_fav_id})
channels[new_fav_id] = Service(*old_ch[0:3], response, *old_ch[4:17], old_ch.data_id, new_fav_id, None)
channels[new_fav_id] = old_ch._replace(service=response, fav_id=new_fav_id)
bq_services.pop(index)
bq_services.insert(index, new_fav_id)
@@ -143,7 +143,7 @@ def rename(view, parent_window, target, fav_view=None, service_view=None, channe
old_ch = channels.get(f_id, None)
if old_ch:
channels[f_id] = Service(*old_ch[0:3], channel_name, *old_ch[4:])
channels[f_id] = old_ch._replace(service=channel_name)
# ***************** Flags *******************#
@@ -196,7 +196,7 @@ def set_lock(blacklist, channels, model, paths, target, services_model):
continue
blacklist.discard(bq_id) if locked else blacklist.add(bq_id)
model.set_value(itr, col_num, None if locked else LOCKED_ICON)
channels[fav_id] = Service(*channel[:4], None if locked else LOCKED_ICON, *channel[5:])
channels[fav_id] = channel._replace(locked=None if locked else LOCKED_ICON)
ids.append(fav_id)
if target is ViewTarget.FAV and ids:
@@ -244,7 +244,7 @@ def set_hide(channels, model, paths):
fav_id = model.get_value(itr, 18)
channel = channels.get(fav_id, None)
if channel:
channels[fav_id] = Service(*channel[:5], None if hide else HIDE_ICON, *channel[6:])
channels[fav_id] = channel._replace(hide=None if hide else HIDE_ICON)
def has_locked_hide(model, paths, col_num):

View File

@@ -409,6 +409,7 @@ class ServiceDetailsDialog:
return self._old_service.fav_id, self._old_service.data_id
def get_fav_id(self):
""" TODO Needs implementation!!! """
if self._profile is Profile.ENIGMA_2:
return self._old_service.fav_id
elif self._profile is Profile.NEUTRINO_MP: