mirror of
https://github.com/DYefremov/DemonEditor.git
synced 2025-12-21 16:09:41 +01:00
skeleton of implementation of service editing for Enigma
This commit is contained in:
@@ -116,3 +116,19 @@ CAS = {"C:2600": "BISS", "C:0b00": "Conax", "C:0b01": "Conax", "C:0b02": "Conax"
|
|||||||
|
|
||||||
# 'on' attribute 0070(hex) = 112(int) = ONID(ONID-TID on www.lyngsat.com)
|
# 'on' attribute 0070(hex) = 112(int) = ONID(ONID-TID on www.lyngsat.com)
|
||||||
PROVIDER = {112: "HTB+", 253: "Tricolor TV"}
|
PROVIDER = {112: "HTB+", 253: "Tricolor TV"}
|
||||||
|
|
||||||
|
|
||||||
|
# ************* subsidiary functions ****************
|
||||||
|
|
||||||
|
def get_key_by_value(dc: dict, value):
|
||||||
|
""" Returns key from dict by value """
|
||||||
|
for k, v in dc.items():
|
||||||
|
if v == value:
|
||||||
|
return k
|
||||||
|
|
||||||
|
|
||||||
|
def get_value_by_name(en, name):
|
||||||
|
""" Returns value by name from enums """
|
||||||
|
for n in en:
|
||||||
|
if n.name == name:
|
||||||
|
return n.value
|
||||||
|
|||||||
@@ -4,7 +4,7 @@
|
|||||||
"""
|
"""
|
||||||
from xml.dom.minidom import parse, Document
|
from xml.dom.minidom import parse, Document
|
||||||
|
|
||||||
from .ecommons import POLARIZATION, FEC, SYSTEM, MODULATION, PLS_MODE, Transponder, Satellite
|
from .ecommons import POLARIZATION, FEC, SYSTEM, MODULATION, PLS_MODE, Transponder, Satellite, get_key_by_value
|
||||||
|
|
||||||
__COMMENT = (" File was created in DemonEditor\n\n"
|
__COMMENT = (" File was created in DemonEditor\n\n"
|
||||||
"usable flags are\n"
|
"usable flags are\n"
|
||||||
@@ -110,11 +110,5 @@ def parse_satellites(path):
|
|||||||
return satellites
|
return satellites
|
||||||
|
|
||||||
|
|
||||||
def get_key_by_value(dictionary, value):
|
|
||||||
for k, v in dictionary.items():
|
|
||||||
if v == value:
|
|
||||||
return k
|
|
||||||
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
pass
|
pass
|
||||||
|
|||||||
@@ -802,6 +802,9 @@ dmitry.v.yefremov@gmail.com
|
|||||||
<property name="top_attach">3</property>
|
<property name="top_attach">3</property>
|
||||||
</packing>
|
</packing>
|
||||||
</child>
|
</child>
|
||||||
|
<style>
|
||||||
|
<class name="primary-toolbar"/>
|
||||||
|
</style>
|
||||||
</object>
|
</object>
|
||||||
</child>
|
</child>
|
||||||
<child type="tab">
|
<child type="tab">
|
||||||
@@ -914,6 +917,9 @@ dmitry.v.yefremov@gmail.com
|
|||||||
<property name="top_attach">1</property>
|
<property name="top_attach">1</property>
|
||||||
</packing>
|
</packing>
|
||||||
</child>
|
</child>
|
||||||
|
<style>
|
||||||
|
<class name="primary-toolbar"/>
|
||||||
|
</style>
|
||||||
</object>
|
</object>
|
||||||
<packing>
|
<packing>
|
||||||
<property name="position">1</property>
|
<property name="position">1</property>
|
||||||
@@ -982,6 +988,7 @@ dmitry.v.yefremov@gmail.com
|
|||||||
<property name="visible">True</property>
|
<property name="visible">True</property>
|
||||||
<property name="can_focus">True</property>
|
<property name="can_focus">True</property>
|
||||||
<property name="text" translatable="yes">/etc/enigma2/</property>
|
<property name="text" translatable="yes">/etc/enigma2/</property>
|
||||||
|
<property name="primary_icon_stock">gtk-edit</property>
|
||||||
</object>
|
</object>
|
||||||
<packing>
|
<packing>
|
||||||
<property name="left_attach">0</property>
|
<property name="left_attach">0</property>
|
||||||
@@ -1005,6 +1012,7 @@ dmitry.v.yefremov@gmail.com
|
|||||||
<property name="visible">True</property>
|
<property name="visible">True</property>
|
||||||
<property name="can_focus">True</property>
|
<property name="can_focus">True</property>
|
||||||
<property name="text" translatable="yes">/etc/enigma2/</property>
|
<property name="text" translatable="yes">/etc/enigma2/</property>
|
||||||
|
<property name="primary_icon_stock">gtk-edit</property>
|
||||||
</object>
|
</object>
|
||||||
<packing>
|
<packing>
|
||||||
<property name="left_attach">0</property>
|
<property name="left_attach">0</property>
|
||||||
@@ -1028,6 +1036,7 @@ dmitry.v.yefremov@gmail.com
|
|||||||
<property name="visible">True</property>
|
<property name="visible">True</property>
|
||||||
<property name="can_focus">True</property>
|
<property name="can_focus">True</property>
|
||||||
<property name="text" translatable="yes">/etc/tuxbox/</property>
|
<property name="text" translatable="yes">/etc/tuxbox/</property>
|
||||||
|
<property name="primary_icon_stock">gtk-edit</property>
|
||||||
</object>
|
</object>
|
||||||
<packing>
|
<packing>
|
||||||
<property name="left_attach">0</property>
|
<property name="left_attach">0</property>
|
||||||
@@ -1051,6 +1060,7 @@ dmitry.v.yefremov@gmail.com
|
|||||||
<property name="visible">True</property>
|
<property name="visible">True</property>
|
||||||
<property name="can_focus">True</property>
|
<property name="can_focus">True</property>
|
||||||
<property name="text" translatable="yes">/usr/share/enigma2/picon</property>
|
<property name="text" translatable="yes">/usr/share/enigma2/picon</property>
|
||||||
|
<property name="primary_icon_stock">gtk-edit</property>
|
||||||
</object>
|
</object>
|
||||||
<packing>
|
<packing>
|
||||||
<property name="left_attach">0</property>
|
<property name="left_attach">0</property>
|
||||||
@@ -1089,7 +1099,7 @@ dmitry.v.yefremov@gmail.com
|
|||||||
<property name="visible">True</property>
|
<property name="visible">True</property>
|
||||||
<property name="can_focus">False</property>
|
<property name="can_focus">False</property>
|
||||||
<property name="label" translatable="yes">Active profile:</property>
|
<property name="label" translatable="yes">Active profile:</property>
|
||||||
<property name="xalign">0</property>
|
<property name="xalign">0.20000000298023224</property>
|
||||||
</object>
|
</object>
|
||||||
<packing>
|
<packing>
|
||||||
<property name="expand">False</property>
|
<property name="expand">False</property>
|
||||||
@@ -1199,6 +1209,7 @@ dmitry.v.yefremov@gmail.com
|
|||||||
<property name="visible">True</property>
|
<property name="visible">True</property>
|
||||||
<property name="can_focus">True</property>
|
<property name="can_focus">True</property>
|
||||||
<property name="text" translatable="yes">/data</property>
|
<property name="text" translatable="yes">/data</property>
|
||||||
|
<property name="primary_icon_stock">gtk-edit</property>
|
||||||
<property name="secondary_icon_name">folder-open-symbolic</property>
|
<property name="secondary_icon_name">folder-open-symbolic</property>
|
||||||
<property name="primary_icon_activatable">False</property>
|
<property name="primary_icon_activatable">False</property>
|
||||||
<property name="secondary_icon_tooltip_text" translatable="yes">Select</property>
|
<property name="secondary_icon_tooltip_text" translatable="yes">Select</property>
|
||||||
@@ -1217,18 +1228,6 @@ dmitry.v.yefremov@gmail.com
|
|||||||
<property name="position">5</property>
|
<property name="position">5</property>
|
||||||
</packing>
|
</packing>
|
||||||
</child>
|
</child>
|
||||||
<child>
|
|
||||||
<object class="GtkSeparator" id="separator3">
|
|
||||||
<property name="visible">True</property>
|
|
||||||
<property name="can_focus">False</property>
|
|
||||||
</object>
|
|
||||||
<packing>
|
|
||||||
<property name="expand">False</property>
|
|
||||||
<property name="fill">True</property>
|
|
||||||
<property name="padding">2</property>
|
|
||||||
<property name="position">6</property>
|
|
||||||
</packing>
|
|
||||||
</child>
|
|
||||||
<child>
|
<child>
|
||||||
<object class="GtkLabel" id="label18">
|
<object class="GtkLabel" id="label18">
|
||||||
<property name="visible">True</property>
|
<property name="visible">True</property>
|
||||||
@@ -1239,7 +1238,7 @@ dmitry.v.yefremov@gmail.com
|
|||||||
<packing>
|
<packing>
|
||||||
<property name="expand">False</property>
|
<property name="expand">False</property>
|
||||||
<property name="fill">True</property>
|
<property name="fill">True</property>
|
||||||
<property name="position">8</property>
|
<property name="position">7</property>
|
||||||
</packing>
|
</packing>
|
||||||
</child>
|
</child>
|
||||||
<child>
|
<child>
|
||||||
@@ -1247,12 +1246,25 @@ dmitry.v.yefremov@gmail.com
|
|||||||
<property name="visible">True</property>
|
<property name="visible">True</property>
|
||||||
<property name="can_focus">True</property>
|
<property name="can_focus">True</property>
|
||||||
<property name="text" translatable="yes">/data/picons</property>
|
<property name="text" translatable="yes">/data/picons</property>
|
||||||
|
<property name="primary_icon_stock">gtk-edit</property>
|
||||||
<property name="secondary_icon_name">folder-open-symbolic</property>
|
<property name="secondary_icon_name">folder-open-symbolic</property>
|
||||||
<signal name="icon-press" handler="on_picons_dir_field_icon_press" swapped="no"/>
|
<signal name="icon-press" handler="on_picons_dir_field_icon_press" swapped="no"/>
|
||||||
</object>
|
</object>
|
||||||
<packing>
|
<packing>
|
||||||
<property name="expand">False</property>
|
<property name="expand">False</property>
|
||||||
<property name="fill">True</property>
|
<property name="fill">True</property>
|
||||||
|
<property name="position">8</property>
|
||||||
|
</packing>
|
||||||
|
</child>
|
||||||
|
<child>
|
||||||
|
<object class="GtkSeparator" id="separator3">
|
||||||
|
<property name="visible">True</property>
|
||||||
|
<property name="can_focus">False</property>
|
||||||
|
</object>
|
||||||
|
<packing>
|
||||||
|
<property name="expand">False</property>
|
||||||
|
<property name="fill">True</property>
|
||||||
|
<property name="padding">2</property>
|
||||||
<property name="position">9</property>
|
<property name="position">9</property>
|
||||||
</packing>
|
</packing>
|
||||||
</child>
|
</child>
|
||||||
@@ -1275,6 +1287,7 @@ dmitry.v.yefremov@gmail.com
|
|||||||
<property name="decorated">False</property>
|
<property name="decorated">False</property>
|
||||||
<child internal-child="vbox">
|
<child internal-child="vbox">
|
||||||
<object class="GtkBox" id="dialog-vbox4">
|
<object class="GtkBox" id="dialog-vbox4">
|
||||||
|
<property name="width_request">118</property>
|
||||||
<property name="can_focus">False</property>
|
<property name="can_focus">False</property>
|
||||||
<property name="orientation">vertical</property>
|
<property name="orientation">vertical</property>
|
||||||
<child internal-child="action_area">
|
<child internal-child="action_area">
|
||||||
@@ -1282,12 +1295,6 @@ dmitry.v.yefremov@gmail.com
|
|||||||
<property name="can_focus">False</property>
|
<property name="can_focus">False</property>
|
||||||
<property name="opacity">0</property>
|
<property name="opacity">0</property>
|
||||||
<property name="layout_style">end</property>
|
<property name="layout_style">end</property>
|
||||||
<child>
|
|
||||||
<placeholder/>
|
|
||||||
</child>
|
|
||||||
<child>
|
|
||||||
<placeholder/>
|
|
||||||
</child>
|
|
||||||
</object>
|
</object>
|
||||||
<packing>
|
<packing>
|
||||||
<property name="expand">False</property>
|
<property name="expand">False</property>
|
||||||
@@ -1333,6 +1340,9 @@ dmitry.v.yefremov@gmail.com
|
|||||||
<property name="position">1</property>
|
<property name="position">1</property>
|
||||||
</packing>
|
</packing>
|
||||||
</child>
|
</child>
|
||||||
|
<style>
|
||||||
|
<class name="primary-toolbar"/>
|
||||||
|
</style>
|
||||||
</object>
|
</object>
|
||||||
</child>
|
</child>
|
||||||
</object>
|
</object>
|
||||||
|
|||||||
@@ -365,9 +365,9 @@ class MainAppWindow:
|
|||||||
def on_tool_edit(self, item):
|
def on_tool_edit(self, item):
|
||||||
""" Edit tool bar button """
|
""" Edit tool bar button """
|
||||||
if self.__services_view.is_focus():
|
if self.__services_view.is_focus():
|
||||||
self.on_rename(self.__services_view)
|
self.on_service_edit(self.__services_view)
|
||||||
elif self.__fav_view.is_focus():
|
elif self.__fav_view.is_focus():
|
||||||
self.on_rename(self.__fav_view)
|
self.on_service_edit(self.__fav_view)
|
||||||
elif self.__bouquets_view.is_focus():
|
elif self.__bouquets_view.is_focus():
|
||||||
self.on_rename(self.__bouquets_view)
|
self.on_rename(self.__bouquets_view)
|
||||||
|
|
||||||
@@ -815,7 +815,7 @@ class MainAppWindow:
|
|||||||
|
|
||||||
for ch in self.__services.values():
|
for ch in self.__services.values():
|
||||||
ch_type = ch.service_type
|
ch_type = ch.service_type
|
||||||
if ch_type in ("TV", "TV (HD)"):
|
if ch_type in ("TV", "TV (HD)", "TV (UHD)"):
|
||||||
tv_count += 1
|
tv_count += 1
|
||||||
elif ch_type == "Radio":
|
elif ch_type == "Radio":
|
||||||
radio_count += 1
|
radio_count += 1
|
||||||
@@ -913,7 +913,11 @@ class MainAppWindow:
|
|||||||
return
|
return
|
||||||
self.on_locate_in_services(view)
|
self.on_locate_in_services(view)
|
||||||
|
|
||||||
dialog = ServiceDetailsDialog(self.__main_window, self.__options, self.__services_view)
|
dialog = ServiceDetailsDialog(self.__main_window,
|
||||||
|
self.__options,
|
||||||
|
self.__services_view,
|
||||||
|
self.__services,
|
||||||
|
self.__bouquets)
|
||||||
dialog.show()
|
dialog.show()
|
||||||
|
|
||||||
@run_idle
|
@run_idle
|
||||||
|
|||||||
@@ -66,6 +66,9 @@
|
|||||||
<row>
|
<row>
|
||||||
<col id="0" translatable="yes">9/10</col>
|
<col id="0" translatable="yes">9/10</col>
|
||||||
</row>
|
</row>
|
||||||
|
<row>
|
||||||
|
<col id="0" translatable="yes">Auto</col>
|
||||||
|
</row>
|
||||||
</data>
|
</data>
|
||||||
</object>
|
</object>
|
||||||
<object class="GtkListStore" id="mod_store">
|
<object class="GtkListStore" id="mod_store">
|
||||||
|
|||||||
@@ -918,6 +918,7 @@
|
|||||||
<child>
|
<child>
|
||||||
<object class="GtkEntry" id="freq_entry">
|
<object class="GtkEntry" id="freq_entry">
|
||||||
<property name="visible">True</property>
|
<property name="visible">True</property>
|
||||||
|
<property name="sensitive">False</property>
|
||||||
<property name="can_focus">True</property>
|
<property name="can_focus">True</property>
|
||||||
<property name="width_chars">10</property>
|
<property name="width_chars">10</property>
|
||||||
<property name="max_width_chars">10</property>
|
<property name="max_width_chars">10</property>
|
||||||
@@ -942,6 +943,7 @@
|
|||||||
<child>
|
<child>
|
||||||
<object class="GtkEntry" id="rate_entry">
|
<object class="GtkEntry" id="rate_entry">
|
||||||
<property name="visible">True</property>
|
<property name="visible">True</property>
|
||||||
|
<property name="sensitive">False</property>
|
||||||
<property name="can_focus">True</property>
|
<property name="can_focus">True</property>
|
||||||
<property name="width_chars">10</property>
|
<property name="width_chars">10</property>
|
||||||
<property name="max_width_chars">10</property>
|
<property name="max_width_chars">10</property>
|
||||||
@@ -966,6 +968,7 @@
|
|||||||
<child>
|
<child>
|
||||||
<object class="GtkComboBox" id="pol_combo_box">
|
<object class="GtkComboBox" id="pol_combo_box">
|
||||||
<property name="visible">True</property>
|
<property name="visible">True</property>
|
||||||
|
<property name="sensitive">False</property>
|
||||||
<property name="can_focus">False</property>
|
<property name="can_focus">False</property>
|
||||||
<property name="model">pol_list_store</property>
|
<property name="model">pol_list_store</property>
|
||||||
<property name="id_column">0</property>
|
<property name="id_column">0</property>
|
||||||
@@ -995,6 +998,7 @@
|
|||||||
<child>
|
<child>
|
||||||
<object class="GtkComboBox" id="fec_combo_box">
|
<object class="GtkComboBox" id="fec_combo_box">
|
||||||
<property name="visible">True</property>
|
<property name="visible">True</property>
|
||||||
|
<property name="sensitive">False</property>
|
||||||
<property name="can_focus">False</property>
|
<property name="can_focus">False</property>
|
||||||
<property name="model">fec_list_store</property>
|
<property name="model">fec_list_store</property>
|
||||||
<property name="id_column">0</property>
|
<property name="id_column">0</property>
|
||||||
@@ -1024,6 +1028,7 @@
|
|||||||
<child>
|
<child>
|
||||||
<object class="GtkComboBox" id="sys_combo_box">
|
<object class="GtkComboBox" id="sys_combo_box">
|
||||||
<property name="visible">True</property>
|
<property name="visible">True</property>
|
||||||
|
<property name="sensitive">False</property>
|
||||||
<property name="can_focus">False</property>
|
<property name="can_focus">False</property>
|
||||||
<property name="model">sys_list_store</property>
|
<property name="model">sys_list_store</property>
|
||||||
<property name="id_column">0</property>
|
<property name="id_column">0</property>
|
||||||
@@ -1074,6 +1079,7 @@
|
|||||||
<child>
|
<child>
|
||||||
<object class="GtkEntry" id="namespace_entry">
|
<object class="GtkEntry" id="namespace_entry">
|
||||||
<property name="visible">True</property>
|
<property name="visible">True</property>
|
||||||
|
<property name="sensitive">False</property>
|
||||||
<property name="can_focus">True</property>
|
<property name="can_focus">True</property>
|
||||||
<property name="width_chars">15</property>
|
<property name="width_chars">15</property>
|
||||||
<property name="max_width_chars">15</property>
|
<property name="max_width_chars">15</property>
|
||||||
@@ -1098,6 +1104,7 @@
|
|||||||
<child>
|
<child>
|
||||||
<object class="GtkComboBox" id="sat_pos_combo_box">
|
<object class="GtkComboBox" id="sat_pos_combo_box">
|
||||||
<property name="visible">True</property>
|
<property name="visible">True</property>
|
||||||
|
<property name="sensitive">False</property>
|
||||||
<property name="can_focus">False</property>
|
<property name="can_focus">False</property>
|
||||||
<property name="model">sat_pos_list_store</property>
|
<property name="model">sat_pos_list_store</property>
|
||||||
<property name="id_column">0</property>
|
<property name="id_column">0</property>
|
||||||
@@ -1143,6 +1150,7 @@
|
|||||||
<child>
|
<child>
|
||||||
<object class="GtkEntry" id="transponder_id_entry">
|
<object class="GtkEntry" id="transponder_id_entry">
|
||||||
<property name="visible">True</property>
|
<property name="visible">True</property>
|
||||||
|
<property name="sensitive">False</property>
|
||||||
<property name="can_focus">True</property>
|
<property name="can_focus">True</property>
|
||||||
<property name="width_chars">5</property>
|
<property name="width_chars">5</property>
|
||||||
<property name="max_width_chars">8</property>
|
<property name="max_width_chars">8</property>
|
||||||
@@ -1167,6 +1175,7 @@
|
|||||||
<child>
|
<child>
|
||||||
<object class="GtkEntry" id="network_id_entry">
|
<object class="GtkEntry" id="network_id_entry">
|
||||||
<property name="visible">True</property>
|
<property name="visible">True</property>
|
||||||
|
<property name="sensitive">False</property>
|
||||||
<property name="can_focus">True</property>
|
<property name="can_focus">True</property>
|
||||||
<property name="width_chars">7</property>
|
<property name="width_chars">7</property>
|
||||||
<property name="max_width_chars">8</property>
|
<property name="max_width_chars">8</property>
|
||||||
@@ -1214,6 +1223,7 @@
|
|||||||
<child>
|
<child>
|
||||||
<object class="GtkComboBox" id="invertion_combo_box">
|
<object class="GtkComboBox" id="invertion_combo_box">
|
||||||
<property name="visible">True</property>
|
<property name="visible">True</property>
|
||||||
|
<property name="sensitive">False</property>
|
||||||
<property name="can_focus">False</property>
|
<property name="can_focus">False</property>
|
||||||
<property name="model">invertion_list_store</property>
|
<property name="model">invertion_list_store</property>
|
||||||
<property name="id_column">0</property>
|
<property name="id_column">0</property>
|
||||||
|
|||||||
@@ -3,7 +3,8 @@ from functools import lru_cache
|
|||||||
|
|
||||||
from app.commons import run_idle
|
from app.commons import run_idle
|
||||||
from app.eparser import Service, get_satellites
|
from app.eparser import Service, get_satellites
|
||||||
from app.eparser.ecommons import MODULATION, Inversion, ROLL_OFF, Pilot, Flag, Pids
|
from app.eparser.ecommons import MODULATION, Inversion, ROLL_OFF, Pilot, Flag, Pids, SERVICE_TYPE, POLARIZATION, FEC, \
|
||||||
|
SYSTEM, get_key_by_value, get_value_by_name
|
||||||
from app.properties import Profile
|
from app.properties import Profile
|
||||||
from app.ui.dialogs import show_dialog, DialogType
|
from app.ui.dialogs import show_dialog, DialogType
|
||||||
from app.ui.main_helper import get_base_model
|
from app.ui.main_helper import get_base_model
|
||||||
@@ -16,13 +17,18 @@ def get_sat_positions(path):
|
|||||||
|
|
||||||
|
|
||||||
class ServiceDetailsDialog:
|
class ServiceDetailsDialog:
|
||||||
|
_DATA_ID = "{:04x}:{:08x}:{:04x}:{:04x}:{}:{}"
|
||||||
|
|
||||||
|
_FAV_ID = "{:X}:{:X}:{:X}:{:X}"
|
||||||
|
|
||||||
|
_TRANSPONDER_DATA = " {}:{}:{}:{}:{}:{}:{}:{}"
|
||||||
|
|
||||||
_DIGIT_ENTRY_ELEMENTS = ("id_entry", "bitstream_entry", "pcm_entry", "video_pid_entry", "pcr_pid_entry",
|
_DIGIT_ENTRY_ELEMENTS = ("id_entry", "bitstream_entry", "pcm_entry", "video_pid_entry", "pcr_pid_entry",
|
||||||
"audio_pid_entry", "ac3_pid_entry", "ac3plus_pid_entry", "acc_pid_entry", "freq_entry",
|
"audio_pid_entry", "ac3_pid_entry", "ac3plus_pid_entry", "acc_pid_entry", "freq_entry",
|
||||||
"he_acc_pid_entry", "teletext_pid_entry", "transponder_id_entry", "network_id_entry",
|
"he_acc_pid_entry", "teletext_pid_entry", "transponder_id_entry", "network_id_entry",
|
||||||
"rate_entry", "pls_code_entry", "stream_id_entry", "flags_entry", "namespace_entry")
|
"rate_entry", "pls_code_entry", "stream_id_entry", "flags_entry", "namespace_entry")
|
||||||
|
|
||||||
def __init__(self, transient, options, view):
|
def __init__(self, transient, options, view, services, bouquets):
|
||||||
handlers = {"on_system_changed": self.on_system_changed,
|
handlers = {"on_system_changed": self.on_system_changed,
|
||||||
"on_save": self.on_save,
|
"on_save": self.on_save,
|
||||||
"on_create_new": self.on_create_new,
|
"on_create_new": self.on_create_new,
|
||||||
@@ -38,6 +44,8 @@ class ServiceDetailsDialog:
|
|||||||
self._satellites_xml_path = options.get(self._profile.value)["data_dir_path"] + "satellites.xml"
|
self._satellites_xml_path = options.get(self._profile.value)["data_dir_path"] + "satellites.xml"
|
||||||
self._services_view = view
|
self._services_view = view
|
||||||
self._old_service = None
|
self._old_service = None
|
||||||
|
self._services = services
|
||||||
|
self._bouquets = bouquets
|
||||||
self._current_model = None
|
self._current_model = None
|
||||||
self._pattern = re.compile("\D")
|
self._pattern = re.compile("\D")
|
||||||
# style
|
# style
|
||||||
@@ -174,9 +182,10 @@ class ServiceDetailsDialog:
|
|||||||
tr_data = srv.transponder.split(":")
|
tr_data = srv.transponder.split(":")
|
||||||
|
|
||||||
if srv.system == "DVB-S2":
|
if srv.system == "DVB-S2":
|
||||||
self.select_active_text(self._mod_combo_box, MODULATION.get(tr_data[8]))
|
pass
|
||||||
self.select_active_text(self._rolloff_combo_box, ROLL_OFF.get(tr_data[9]))
|
# self.select_active_text(self._mod_combo_box, MODULATION.get(tr_data[8]))
|
||||||
self.select_active_text(self._pilot_combo_box, Pilot(tr_data[10]).name)
|
# self.select_active_text(self._rolloff_combo_box, ROLL_OFF.get(tr_data[9]))
|
||||||
|
# self.select_active_text(self._pilot_combo_box, Pilot(tr_data[10]).name)
|
||||||
|
|
||||||
self._namespace_entry.set_text(str(int(data[1], 16)))
|
self._namespace_entry.set_text(str(int(data[1], 16)))
|
||||||
self._transponder_id_entry.set_text(str(int(data[2], 16)))
|
self._transponder_id_entry.set_text(str(int(data[2], 16)))
|
||||||
@@ -218,10 +227,10 @@ class ServiceDetailsDialog:
|
|||||||
def on_save(self, item):
|
def on_save(self, item):
|
||||||
if show_dialog(DialogType.QUESTION, self._dialog) == Gtk.ResponseType.CANCEL:
|
if show_dialog(DialogType.QUESTION, self._dialog) == Gtk.ResponseType.CANCEL:
|
||||||
return
|
return
|
||||||
|
fav_id, data_id = self.get_srv_data()
|
||||||
self.update_data_in_model(Service(flags_cas=self.get_flags(),
|
service = Service(flags_cas=self.get_flags(),
|
||||||
transponder_type="s",
|
transponder_type="s",
|
||||||
coded=None,
|
coded=self._old_service.coded,
|
||||||
service=self._name_entry.get_text(),
|
service=self._name_entry.get_text(),
|
||||||
locked=self._old_service.locked,
|
locked=self._old_service.locked,
|
||||||
hide=None,
|
hide=None,
|
||||||
@@ -229,16 +238,30 @@ class ServiceDetailsDialog:
|
|||||||
service_type=self._service_type_combo_box.get_active_id(),
|
service_type=self._service_type_combo_box.get_active_id(),
|
||||||
picon=self._old_service.picon,
|
picon=self._old_service.picon,
|
||||||
picon_id=self._old_service.picon_id,
|
picon_id=self._old_service.picon_id,
|
||||||
ssid=self._id_entry.get_text(),
|
ssid="{:x}".format(int(self._id_entry.get_text())),
|
||||||
freq=self._freq_entry.get_text(),
|
freq=self._freq_entry.get_text(),
|
||||||
rate=self._rate_entry.get_text(),
|
rate=self._rate_entry.get_text(),
|
||||||
pol=self._pol_combo_box.get_active_id(),
|
pol=self._pol_combo_box.get_active_id(),
|
||||||
fec=self._fec_combo_box.get_active_id(),
|
fec=self._fec_combo_box.get_active_id(),
|
||||||
system=self._sys_combo_box.get_active_id(),
|
system=self._sys_combo_box.get_active_id(),
|
||||||
pos=self._sat_pos_combo_box.get_active_id(),
|
pos=self._sat_pos_combo_box.get_active_id(),
|
||||||
data_id=self.get_data_id(),
|
data_id=data_id,
|
||||||
fav_id=self.get_fav_id(),
|
fav_id=fav_id,
|
||||||
transponder=self.get_transponder_data()))
|
transponder=self._old_service.transponder)
|
||||||
|
|
||||||
|
old_fav_id = self._old_service.fav_id
|
||||||
|
if old_fav_id != fav_id:
|
||||||
|
self._services.pop(old_fav_id, None)
|
||||||
|
for bq in self._bouquets.values():
|
||||||
|
indexes = []
|
||||||
|
for i, f_id in enumerate(bq):
|
||||||
|
if old_fav_id == f_id:
|
||||||
|
indexes.append(i)
|
||||||
|
for i in indexes:
|
||||||
|
bq[i] = fav_id
|
||||||
|
|
||||||
|
self._services[fav_id] = service
|
||||||
|
self.update_data_in_model(service)
|
||||||
|
|
||||||
def update_data_in_model(self, srv: Service):
|
def update_data_in_model(self, srv: Service):
|
||||||
fav_id = self._old_service.fav_id
|
fav_id = self._old_service.fav_id
|
||||||
@@ -297,11 +320,19 @@ class ServiceDetailsDialog:
|
|||||||
|
|
||||||
return ",".join(flags)
|
return ",".join(flags)
|
||||||
|
|
||||||
def get_data_id(self):
|
def get_srv_data(self):
|
||||||
|
ssid = int(self._id_entry.get_text())
|
||||||
|
namespace = int(self._namespace_entry.get_text())
|
||||||
|
transponder_id = int(self._transponder_id_entry.get_text())
|
||||||
|
network_id = int(self._network_id_entry.get_text())
|
||||||
|
service_type = self.get_value_from_combobox_id(self._service_type_combo_box, SERVICE_TYPE)
|
||||||
|
|
||||||
if self._profile is Profile.ENIGMA_2:
|
if self._profile is Profile.ENIGMA_2:
|
||||||
return self._old_service.data_id
|
data_id = self._DATA_ID.format(ssid, namespace, transponder_id, network_id, service_type, 0)
|
||||||
|
fav_id = self._FAV_ID.format(ssid, transponder_id, network_id, namespace)
|
||||||
|
return fav_id, data_id
|
||||||
elif self._profile is Profile.NEUTRINO_MP:
|
elif self._profile is Profile.NEUTRINO_MP:
|
||||||
return self._old_service.data_id
|
return self._old_service.fav_id, self._old_service.data_id
|
||||||
|
|
||||||
def get_fav_id(self):
|
def get_fav_id(self):
|
||||||
if self._profile is Profile.ENIGMA_2:
|
if self._profile is Profile.ENIGMA_2:
|
||||||
@@ -310,15 +341,35 @@ class ServiceDetailsDialog:
|
|||||||
return self._old_service.fav_id
|
return self._old_service.fav_id
|
||||||
|
|
||||||
def get_transponder_data(self):
|
def get_transponder_data(self):
|
||||||
|
sys = self._sys_combo_box.get_active_id()
|
||||||
|
freq = self._freq_entry.get_text()
|
||||||
|
rate = self._rate_entry.get_text()
|
||||||
|
pol = self.get_value_from_combobox_id(self._pol_combo_box, POLARIZATION)
|
||||||
|
fec = self.get_value_from_combobox_id(self._fec_combo_box, FEC)
|
||||||
|
sat_pos = self._sat_pos_combo_box.get_active_id().replace(".", "")
|
||||||
|
inv = get_value_by_name(Inversion, self._invertion_combo_box.get_active_id())
|
||||||
|
srv_sys = get_key_by_value(SYSTEM, sys)
|
||||||
|
|
||||||
if self._profile is Profile.ENIGMA_2:
|
if self._profile is Profile.ENIGMA_2:
|
||||||
if self._sys_combo_box.get_active_id() == "DVB-S2":
|
dvb_s_tr = self._TRANSPONDER_DATA.format("s", freq, rate, pol, fec, sat_pos, inv, srv_sys)
|
||||||
return self._old_service.transponder
|
if sys == "DVB-S":
|
||||||
|
return dvb_s_tr
|
||||||
|
if sys == "DVB-S2":
|
||||||
|
flag = self._flags_entry.get_text()
|
||||||
|
mod = self.get_value_from_combobox_id(self._mod_combo_box, MODULATION)
|
||||||
|
roll_off = self.get_value_from_combobox_id(self._rolloff_combo_box, ROLL_OFF)
|
||||||
|
pilot = get_value_by_name(Pilot, self._pilot_combo_box.get_active_id())
|
||||||
|
return "{}:{}:{}:{}:{}:-1:1:0".format(dvb_s_tr, flag, mod, roll_off, pilot)
|
||||||
elif self._profile is Profile.NEUTRINO_MP:
|
elif self._profile is Profile.NEUTRINO_MP:
|
||||||
return self._old_service.transponder
|
return self._old_service.transponder
|
||||||
|
|
||||||
def on_digit_entry_changed(self, entry):
|
def on_digit_entry_changed(self, entry):
|
||||||
entry.set_name("digit-entry" if self._pattern.search(entry.get_text()) else "GtkEntry")
|
entry.set_name("digit-entry" if self._pattern.search(entry.get_text()) else "GtkEntry")
|
||||||
|
|
||||||
|
def get_value_from_combobox_id(self, box: Gtk.ComboBox, dc: dict):
|
||||||
|
cb_id = box.get_active_id()
|
||||||
|
return get_key_by_value(dc, cb_id)
|
||||||
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
pass
|
pass
|
||||||
|
|||||||
Reference in New Issue
Block a user