Iptv dialog skeleton

This commit is contained in:
DYefremov
2018-03-11 21:52:10 +03:00
parent b56685edb1
commit 1d577750c0
6 changed files with 98 additions and 21 deletions

View File

@@ -664,7 +664,6 @@ dmitry.v.yefremov@gmail.com
<child>
<object class="GtkButton" id="iptv_dialog_add_button">
<property name="label">gtk-add</property>
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="receives_default">True</property>
<property name="use_stock">True</property>
@@ -676,6 +675,21 @@ dmitry.v.yefremov@gmail.com
<property name="position">1</property>
</packing>
</child>
<child>
<object class="GtkButton" id="iptv_dialog_save_button">
<property name="label">gtk-save</property>
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="receives_default">True</property>
<property name="use_stock">True</property>
<property name="always_show_image">True</property>
</object>
<packing>
<property name="expand">True</property>
<property name="fill">True</property>
<property name="position">2</property>
</packing>
</child>
</object>
<packing>
<property name="expand">False</property>
@@ -725,7 +739,7 @@ dmitry.v.yefremov@gmail.com
</packing>
</child>
<child>
<object class="GtkEntry" id="nam_entry">
<object class="GtkEntry" id="name_entry">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="primary_icon_stock">gtk-edit</property>
@@ -778,7 +792,7 @@ dmitry.v.yefremov@gmail.com
</packing>
</child>
<child>
<object class="GtkEntry" id="entry3">
<object class="GtkEntry" id="reference_entry">
<property name="visible">True</property>
<property name="can_focus">True</property>
</object>
@@ -795,7 +809,7 @@ dmitry.v.yefremov@gmail.com
</packing>
</child>
<child>
<object class="GtkBox" id="box5">
<object class="GtkBox" id="url_iptv_box">
<property name="visible">True</property>
<property name="can_focus">False</property>
<child>
@@ -923,7 +937,7 @@ dmitry.v.yefremov@gmail.com
</packing>
</child>
<child>
<object class="GtkEntry" id="entry1">
<object class="GtkEntry" id="srv_type_entry">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="width_chars">10</property>
@@ -935,7 +949,7 @@ dmitry.v.yefremov@gmail.com
</packing>
</child>
<child>
<object class="GtkEntry" id="entry2">
<object class="GtkEntry" id="sid_entry">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="width_chars">10</property>
@@ -947,7 +961,7 @@ dmitry.v.yefremov@gmail.com
</packing>
</child>
<child>
<object class="GtkEntry" id="entry4">
<object class="GtkEntry" id="tr_id_entry">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="width_chars">10</property>
@@ -959,7 +973,7 @@ dmitry.v.yefremov@gmail.com
</packing>
</child>
<child>
<object class="GtkEntry" id="entry5">
<object class="GtkEntry" id="net_id_entry">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="width_chars">10</property>
@@ -971,7 +985,7 @@ dmitry.v.yefremov@gmail.com
</packing>
</child>
<child>
<object class="GtkEntry" id="entry6">
<object class="GtkEntry" id="namespace_entry">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="width_chars">10</property>
@@ -1010,6 +1024,11 @@ dmitry.v.yefremov@gmail.com
</child>
</object>
</child>
<action-widgets>
<action-widget response="-6">iptv_dialog_cancel_button</action-widget>
<action-widget response="-5">iptv_dialog_add_button</action-widget>
<action-widget response="-5">iptv_dialog_save_button</action-widget>
</action-widgets>
</object>
<object class="GtkAdjustment" id="telnet_timeout_adjustment">
<property name="lower">1</property>

View File

@@ -6,6 +6,11 @@ from app.commons import run_idle
from . import Gtk, UI_RESOURCES_PATH, TEXT_DOMAIN
class Action(Enum):
EDIT = 0
ADD = 1
class DialogType(Enum):
INPUT = "input_dialog"
CHOOSER = "path_chooser_dialog"
@@ -13,6 +18,7 @@ class DialogType(Enum):
QUESTION = "question_dialog"
ABOUT = "about_dialog"
WAIT = "wait_dialog"
IPTV = "iptv_dialog"
class WaitDialog:

46
app/ui/iptv.py Normal file
View File

@@ -0,0 +1,46 @@
from .main_helper import get_base_model
from . import Gtk
from app.properties import Profile
from .dialogs import get_dialog_from_xml, DialogType, Action
class IptvDialog:
def __init__(self, transient, view=None, services=None, bouquets=None, profile=Profile.ENIGMA_2, action=Action.ADD):
builder, dialog = get_dialog_from_xml(DialogType.IPTV, transient)
self._dialog = dialog
self._dialog.set_transient_for(transient)
self._name_entry = builder.get_object("name_entry")
self._url_entry = builder.get_object("url_entry")
self._reference_entry = builder.get_object("reference_entry")
self._srv_type_entry = builder.get_object("srv_type_entry")
self._sid_entry = builder.get_object("sid_entry")
self._tr_id_entry = builder.get_object("tr_id_entry")
self._net_id_entry = builder.get_object("net_id_entry")
self._namespace_entry = builder.get_object("namespace_entry")
self._stream_type_combobox = builder.get_object("stream_type_combobox")
self._add_button = builder.get_object("iptv_dialog_add_button")
self._save_button = builder.get_object("iptv_dialog_save_button")
self._action = action
if self._action is Action.ADD:
self._save_button.set_visible(False)
self._add_button.set_visible(True)
elif self._action is Action.EDIT:
model, paths = view.get_selection().get_selected_rows()
model = get_base_model(model)
row = model[paths][:]
self._name_entry.set_text(row[2])
def show(self):
response = self._dialog.run()
if response == Gtk.ResponseType.OK:
self.save()
self._dialog.destroy()
def save(self):
print(self._action)
if __name__ == "__main__":
pass

View File

@@ -11,6 +11,7 @@ from app.eparser.ecommons import CAS, Flag
from app.eparser.enigma.bouquets import BqServiceType
from app.eparser.neutrino.bouquets import BqType
from app.properties import get_config, write_config, Profile
from .iptv import IptvDialog
from .search import SearchProvider
from . import Gtk, Gdk, UI_RESOURCES_PATH, LOCKED_ICON, HIDE_ICON, IPTV_ICON
from .dialogs import show_dialog, DialogType, get_chooser_dialog, WaitDialog, get_message
@@ -114,7 +115,8 @@ class MainAppWindow:
"on_search_up": self.on_search_up,
"on_search": self.on_search,
"on_service_edit": self.on_service_edit,
"on_services_add_new": self.on_services_add_new}
"on_services_add_new": self.on_services_add_new,
"on_iptv": self.on_iptv}
self.__options = get_config()
self.__profile = self.__options.get("profile")
@@ -861,6 +863,9 @@ class MainAppWindow:
bq_services.append(ch.fav_id)
self.update_bouquet_channels(self.__fav_model, None, bq_selected)
def on_iptv(self, item):
IptvDialog(self.__main_window).show()
def on_insert_marker(self, view):
""" Inserts marker into bouquet services list. """
insert_marker(view, self.__bouquets, self.is_bouquet_selected(), self.__services, self.__main_window)
@@ -924,9 +929,15 @@ class MainAppWindow:
model_name = get_base_model(model).get_name()
if model_name == self._FAV_LIST_NAME:
srv_type = model.get_value(model.get_iter(paths), 5)
if srv_type == BqServiceType.IPTV.name or srv_type == BqServiceType.MARKER.name:
self.on_rename(view)
return
if srv_type == BqServiceType.MARKER.name:
return self.on_rename(view)
elif srv_type == BqServiceType.IPTV.name:
return IptvDialog(self.__main_window,
self.__fav_view,
self.__services,
self.__bouquets,
Profile(self.__profile),
Action.EDIT).show()
self.on_locate_in_services(view)
dialog = ServiceDetailsDialog(self.__main_window,

View File

@@ -251,6 +251,7 @@
<property name="can_focus">False</property>
<property name="image">image17</property>
<property name="use_stock">False</property>
<signal name="activate" handler="on_iptv" swapped="no"/>
</object>
</child>
<child>

View File

@@ -1,5 +1,4 @@
import re
from enum import Enum
from functools import lru_cache
from app.commons import run_idle
@@ -7,16 +6,11 @@ from app.eparser import Service, get_satellites
from app.eparser.ecommons import MODULATION, Inversion, ROLL_OFF, Pilot, Flag, Pids, POLARIZATION, \
get_key_by_value, get_value_by_name, FEC_DEFAULT, PLS_MODE
from app.properties import Profile
from app.ui.dialogs import show_dialog, DialogType
from app.ui.main_helper import get_base_model
from .dialogs import show_dialog, DialogType, Action
from .main_helper import get_base_model
from . import Gtk, Gdk, UI_RESOURCES_PATH, HIDE_ICON, TEXT_DOMAIN
class Action(Enum):
EDIT = 0
ADD = 1
class ServiceDetailsDialog:
_DATA_ID = "{:04x}:{:08x}:{:04x}:{:04x}:{}:{}"