mirror of
https://github.com/DYefremov/DemonEditor.git
synced 2026-05-06 15:06:15 +02:00
service dialog elements update
This commit is contained in:
21
README.md
21
README.md
@@ -1,10 +1,10 @@
|
||||
# DemonEditor
|
||||
|
||||
Enigma2 channel and satellites list editor for GNU/Linux.
|
||||
##Enigma2 channel and satellites list editor for GNU/Linux.
|
||||
Experimental support of Neutrino-MP or others on the same basis (BPanther, etc).
|
||||
Focused on the convenience of working in lists from the keyboard. The mouse is also fully supported (Drag and Drop etc)
|
||||
|
||||
Keyboard shortcuts:
|
||||
###Keyboard shortcuts:
|
||||
Ctrl + X, C, V, Up, Down, PageUp, PageDown, S, T, E, L, H, Space; Insert, Delete, F2.
|
||||
Insert - copies the selected channels from the main list to the bouquet or inserts (creates) a new bouquet.
|
||||
Ctrl + X - only in bouquet list. Ctrl + C - only in services list.
|
||||
@@ -15,18 +15,17 @@ Ctrl + L - parental lock.
|
||||
Ctrl + H - hide/skip.
|
||||
Left/Right - remove selection.
|
||||
|
||||
Multiple selections in lists only with Space key (as in file managers)!
|
||||
|
||||
Extra:
|
||||
Ability to import IPTV into bouquet from m3u files(Enigma2 only)!
|
||||
###Extra:
|
||||
Multiple selections in lists only with Space key (as in file managers)!
|
||||
Ability to import IPTV into bouquet (Neutrino WEBTV) from m3u files!
|
||||
Tool for downloading picons from lyngsat.com.
|
||||
###Minimum requirements:
|
||||
Python >= 3.5.2 and GTK+ 3 with PyGObject bindings.
|
||||
####Note.
|
||||
To create a simple debian package, you can use the build-deb.sh
|
||||
|
||||
Tests only in image based on OpenPLi or last BPanther(neutrino) images with GM 990 Spark Reloaded receiver
|
||||
in my preferred linux distro (Last Linux Mint 18.* - MATE 64-bit)!
|
||||
#####Terrestrial and cable channels at the moment are not supported!
|
||||
|
||||
Minimum requirements: Python >= 3.5.2 and GTK+ 3 with PyGObject bindings.
|
||||
|
||||
Terrestrial and cable channels at the moment are not supported!
|
||||
|
||||
Note. To create a simple debian package, you can use the build-deb.sh
|
||||
|
||||
|
||||
@@ -889,8 +889,9 @@ class MainAppWindow:
|
||||
self.__services,
|
||||
self.__bouquets)
|
||||
|
||||
@run_idle
|
||||
def on_services_data_edit(self, item):
|
||||
dialog = ServiceDetailsDialog(self.__main_window)
|
||||
dialog = ServiceDetailsDialog(self.__main_window, Profile(self.__profile), self.__services_view)
|
||||
dialog.show()
|
||||
|
||||
@run_idle
|
||||
|
||||
@@ -2,6 +2,142 @@
|
||||
<!-- Generated with glade 3.18.3 -->
|
||||
<interface>
|
||||
<requires lib="gtk+" version="3.12"/>
|
||||
<object class="GtkListStore" id="fec_list_store">
|
||||
<columns>
|
||||
<!-- column-name fec -->
|
||||
<column type="gchararray"/>
|
||||
</columns>
|
||||
<data>
|
||||
<row>
|
||||
<col id="0" translatable="yes">Auto</col>
|
||||
</row>
|
||||
<row>
|
||||
<col id="0" translatable="yes">1/2</col>
|
||||
</row>
|
||||
<row>
|
||||
<col id="0" translatable="yes">2/3</col>
|
||||
</row>
|
||||
<row>
|
||||
<col id="0" translatable="yes">3/4</col>
|
||||
</row>
|
||||
<row>
|
||||
<col id="0" translatable="yes">5/6</col>
|
||||
</row>
|
||||
<row>
|
||||
<col id="0" translatable="yes">7/8</col>
|
||||
</row>
|
||||
<row>
|
||||
<col id="0" translatable="yes">8/9</col>
|
||||
</row>
|
||||
<row>
|
||||
<col id="0" translatable="yes">3/5</col>
|
||||
</row>
|
||||
<row>
|
||||
<col id="0" translatable="yes">4/5</col>
|
||||
</row>
|
||||
<row>
|
||||
<col id="0" translatable="yes">9/10</col>
|
||||
</row>
|
||||
</data>
|
||||
</object>
|
||||
<object class="GtkListStore" id="invertion_list_store">
|
||||
<columns>
|
||||
<!-- column-name invertion -->
|
||||
<column type="gchararray"/>
|
||||
</columns>
|
||||
</object>
|
||||
<object class="GtkListStore" id="mod_list_store">
|
||||
<columns>
|
||||
<!-- column-name mod -->
|
||||
<column type="gchararray"/>
|
||||
</columns>
|
||||
<data>
|
||||
<row>
|
||||
<col id="0" translatable="yes">Auto</col>
|
||||
</row>
|
||||
<row>
|
||||
<col id="0" translatable="yes">QPSK</col>
|
||||
</row>
|
||||
<row>
|
||||
<col id="0" translatable="yes">8PSK</col>
|
||||
</row>
|
||||
<row>
|
||||
<col id="0" translatable="yes">16APSK</col>
|
||||
</row>
|
||||
<row>
|
||||
<col id="0" translatable="yes">32APSK</col>
|
||||
</row>
|
||||
</data>
|
||||
</object>
|
||||
<object class="GtkListStore" id="pilot_list_store">
|
||||
<columns>
|
||||
<!-- column-name pilot -->
|
||||
<column type="gchararray"/>
|
||||
</columns>
|
||||
</object>
|
||||
<object class="GtkListStore" id="pls_mode_list_store">
|
||||
<columns>
|
||||
<!-- column-name pls_mode -->
|
||||
<column type="gchararray"/>
|
||||
</columns>
|
||||
<data>
|
||||
<row>
|
||||
<col id="0" translatable="yes">Root</col>
|
||||
</row>
|
||||
<row>
|
||||
<col id="0" translatable="yes">Gold</col>
|
||||
</row>
|
||||
<row>
|
||||
<col id="0" translatable="yes">Combo</col>
|
||||
</row>
|
||||
</data>
|
||||
</object>
|
||||
<object class="GtkListStore" id="pol_list_store">
|
||||
<columns>
|
||||
<!-- column-name pol -->
|
||||
<column type="gchararray"/>
|
||||
</columns>
|
||||
<data>
|
||||
<row>
|
||||
<col id="0" translatable="yes">H</col>
|
||||
</row>
|
||||
<row>
|
||||
<col id="0" translatable="yes">V</col>
|
||||
</row>
|
||||
<row>
|
||||
<col id="0" translatable="yes">R</col>
|
||||
</row>
|
||||
<row>
|
||||
<col id="0" translatable="yes">L</col>
|
||||
</row>
|
||||
</data>
|
||||
</object>
|
||||
<object class="GtkListStore" id="rolloff_list_store">
|
||||
<columns>
|
||||
<!-- column-name rolloff -->
|
||||
<column type="gchararray"/>
|
||||
</columns>
|
||||
</object>
|
||||
<object class="GtkListStore" id="sat_pos_list_store">
|
||||
<columns>
|
||||
<!-- column-name sat_pos -->
|
||||
<column type="gchararray"/>
|
||||
</columns>
|
||||
</object>
|
||||
<object class="GtkListStore" id="sys_list_store">
|
||||
<columns>
|
||||
<!-- column-name sys -->
|
||||
<column type="gchararray"/>
|
||||
</columns>
|
||||
<data>
|
||||
<row>
|
||||
<col id="0" translatable="yes">DVB-S</col>
|
||||
</row>
|
||||
<row>
|
||||
<col id="0" translatable="yes">DVB-S2</col>
|
||||
</row>
|
||||
</data>
|
||||
</object>
|
||||
<object class="GtkDialog" id="service_details_dialog">
|
||||
<property name="can_focus">False</property>
|
||||
<property name="title" translatable="yes">Service details</property>
|
||||
@@ -154,7 +290,7 @@
|
||||
<object class="GtkLabel" id="label6">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">False</property>
|
||||
<property name="label" translatable="yes">ID:</property>
|
||||
<property name="label" translatable="yes">SSID:</property>
|
||||
<property name="xalign">1</property>
|
||||
</object>
|
||||
<packing>
|
||||
@@ -251,6 +387,7 @@
|
||||
<property name="width_chars">10</property>
|
||||
<property name="max_width_chars">10</property>
|
||||
<property name="xalign">0</property>
|
||||
<property name="yalign">0.75</property>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="left_attach">2</property>
|
||||
@@ -328,7 +465,7 @@
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkEntry" id="acc_entry">
|
||||
<object class="GtkEntry" id="acc_pid_entry">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">True</property>
|
||||
<property name="width_chars">4</property>
|
||||
@@ -340,7 +477,7 @@
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkEntry" id="ac3+_pid_entry">
|
||||
<object class="GtkEntry" id="ac3plus_pid_entry">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">True</property>
|
||||
<property name="width_chars">4</property>
|
||||
@@ -585,13 +722,34 @@
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<placeholder/>
|
||||
<object class="GtkLabel" id="label7">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">False</property>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="left_attach">1</property>
|
||||
<property name="top_attach">0</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<placeholder/>
|
||||
<object class="GtkLabel" id="label9">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">False</property>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="left_attach">2</property>
|
||||
<property name="top_attach">0</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<placeholder/>
|
||||
<object class="GtkLabel" id="label10">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">False</property>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="left_attach">3</property>
|
||||
<property name="top_attach">0</property>
|
||||
</packing>
|
||||
</child>
|
||||
</object>
|
||||
<packing>
|
||||
@@ -730,18 +888,6 @@
|
||||
<property name="top_attach">2</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkEntry" id="sat_position_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>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="left_attach">1</property>
|
||||
<property name="top_attach">0</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkEntry" id="transponder_id_entry">
|
||||
<property name="visible">True</property>
|
||||
@@ -854,6 +1000,13 @@
|
||||
<object class="GtkComboBox" id="pol_combo_box">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">False</property>
|
||||
<property name="model">pol_list_store</property>
|
||||
<child>
|
||||
<object class="GtkCellRendererText" id="pol_cellrenderertext"/>
|
||||
<attributes>
|
||||
<attribute name="text">0</attribute>
|
||||
</attributes>
|
||||
</child>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="left_attach">1</property>
|
||||
@@ -864,6 +1017,13 @@
|
||||
<object class="GtkComboBox" id="fec_combo_box">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">False</property>
|
||||
<property name="model">fec_list_store</property>
|
||||
<child>
|
||||
<object class="GtkCellRendererText" id="fec_cellrenderertext"/>
|
||||
<attributes>
|
||||
<attribute name="text">0</attribute>
|
||||
</attributes>
|
||||
</child>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="left_attach">1</property>
|
||||
@@ -874,6 +1034,13 @@
|
||||
<object class="GtkComboBox" id="sys_combo_box">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">False</property>
|
||||
<property name="model">sys_list_store</property>
|
||||
<child>
|
||||
<object class="GtkCellRendererText" id="sys_cellrenderertext"/>
|
||||
<attributes>
|
||||
<attribute name="text">0</attribute>
|
||||
</attributes>
|
||||
</child>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="left_attach">1</property>
|
||||
@@ -896,7 +1063,7 @@
|
||||
<object class="GtkEntry" id="flags_entry">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">True</property>
|
||||
<property name="width_chars">10</property>
|
||||
<property name="width_chars">5</property>
|
||||
<property name="max_width_chars">10</property>
|
||||
</object>
|
||||
<packing>
|
||||
@@ -920,7 +1087,7 @@
|
||||
<object class="GtkEntry" id="stream_id_entry">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">True</property>
|
||||
<property name="width_chars">10</property>
|
||||
<property name="width_chars">5</property>
|
||||
<property name="max_width_chars">10</property>
|
||||
</object>
|
||||
<packing>
|
||||
@@ -932,7 +1099,7 @@
|
||||
<object class="GtkLabel" id="label27">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">False</property>
|
||||
<property name="label" translatable="yes">PLS mode:</property>
|
||||
<property name="label" translatable="yes">PLS code:</property>
|
||||
<property name="xalign">1</property>
|
||||
</object>
|
||||
<packing>
|
||||
@@ -941,10 +1108,10 @@
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkEntry" id="pls_mode_entry">
|
||||
<object class="GtkEntry" id="pls_code_entry">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">True</property>
|
||||
<property name="width_chars">10</property>
|
||||
<property name="width_chars">5</property>
|
||||
<property name="max_width_chars">10</property>
|
||||
</object>
|
||||
<packing>
|
||||
@@ -956,7 +1123,7 @@
|
||||
<object class="GtkLabel" id="label26">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">False</property>
|
||||
<property name="label" translatable="yes">PLS code:</property>
|
||||
<property name="label" translatable="yes">PLS mode:</property>
|
||||
<property name="xalign">1</property>
|
||||
</object>
|
||||
<packing>
|
||||
@@ -980,6 +1147,13 @@
|
||||
<object class="GtkComboBox" id="pilot_combo_box">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">False</property>
|
||||
<property name="model">pilot_list_store</property>
|
||||
<child>
|
||||
<object class="GtkCellRendererText" id="pilot_cellrenderertext"/>
|
||||
<attributes>
|
||||
<attribute name="text">0</attribute>
|
||||
</attributes>
|
||||
</child>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="left_attach">3</property>
|
||||
@@ -1002,6 +1176,13 @@
|
||||
<object class="GtkComboBox" id="rolloff_combo_box">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">False</property>
|
||||
<property name="model">rolloff_list_store</property>
|
||||
<child>
|
||||
<object class="GtkCellRendererText" id="rolloff_cellrenderertext"/>
|
||||
<attributes>
|
||||
<attribute name="text">0</attribute>
|
||||
</attributes>
|
||||
</child>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="left_attach">3</property>
|
||||
@@ -1024,6 +1205,13 @@
|
||||
<object class="GtkComboBox" id="invertion_combo_box">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">False</property>
|
||||
<property name="model">invertion_list_store</property>
|
||||
<child>
|
||||
<object class="GtkCellRendererText" id="inv_cellrenderertext"/>
|
||||
<attributes>
|
||||
<attribute name="text">0</attribute>
|
||||
</attributes>
|
||||
</child>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="left_attach">3</property>
|
||||
@@ -1046,6 +1234,13 @@
|
||||
<object class="GtkComboBox" id="mod_combo_box">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">False</property>
|
||||
<property name="model">mod_list_store</property>
|
||||
<child>
|
||||
<object class="GtkCellRendererText" id="mod_cellrenderertext"/>
|
||||
<attributes>
|
||||
<attribute name="text">0</attribute>
|
||||
</attributes>
|
||||
</child>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="left_attach">3</property>
|
||||
@@ -1053,11 +1248,33 @@
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkEntry" id="pls_code_entry">
|
||||
<object class="GtkComboBox" id="sat_pos_combo_box">
|
||||
<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="can_focus">False</property>
|
||||
<property name="model">sat_pos_list_store</property>
|
||||
<child>
|
||||
<object class="GtkCellRendererText" id="sat_pos_cellrenderertext"/>
|
||||
<attributes>
|
||||
<attribute name="text">0</attribute>
|
||||
</attributes>
|
||||
</child>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="left_attach">1</property>
|
||||
<property name="top_attach">0</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkComboBox" id="pls_mode_combo_box">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">False</property>
|
||||
<property name="model">pls_mode_list_store</property>
|
||||
<child>
|
||||
<object class="GtkCellRendererText" id="pls_mode_cellrenderertext"/>
|
||||
<attributes>
|
||||
<attribute name="text">0</attribute>
|
||||
</attributes>
|
||||
</child>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="left_attach">3</property>
|
||||
|
||||
@@ -1,13 +1,83 @@
|
||||
from app.commons import run_idle
|
||||
from app.eparser import Service
|
||||
from app.ui.main_helper import get_base_model, is_only_one_item_selected
|
||||
from . import Gtk, UI_RESOURCES_PATH
|
||||
|
||||
|
||||
class ServiceDetailsDialog:
|
||||
def __init__(self, transient):
|
||||
def __init__(self, transient, options, view):
|
||||
builder = Gtk.Builder()
|
||||
builder.add_from_file(UI_RESOURCES_PATH + "service_details_dialog.glade")
|
||||
|
||||
self._dialog = builder.get_object("service_details_dialog")
|
||||
self._dialog.set_transient_for(transient)
|
||||
self._options = options
|
||||
self._services_view = view
|
||||
# Service elements
|
||||
self._name_entry = builder.get_object("name_entry")
|
||||
self._package_entry = builder.get_object("package_entry")
|
||||
self._id_entry = builder.get_object("id_entry")
|
||||
self._type_entry = builder.get_object("type_entry")
|
||||
self._extra_entry = builder.get_object("extra_entry")
|
||||
self._bitstream_entry = builder.get_object("bitstream_entry")
|
||||
self._pcm_entry = builder.get_object("pcm_entry")
|
||||
self._reference_entry = builder.get_object("reference_entry")
|
||||
self._video_pid_entry = builder.get_object("video_pid_entry")
|
||||
self._pcr_pid_entry = builder.get_object("pcr_pid_entry")
|
||||
self._mpeg_pid_entry = builder.get_object("mpeg_pid_entry")
|
||||
self._ac3_pid_entry = builder.get_object("ac3_pid_entry")
|
||||
self._ac3plus_pid_entry = builder.get_object("ac3plus_pid_entry")
|
||||
self._acc_pid_entry = builder.get_object("acc_pid_entry")
|
||||
self._he_acc_pid_entry = builder.get_object("he_acc_pid_entry")
|
||||
self._teletext_pid_entry = builder.get_object("teletext_pid_entry")
|
||||
self._keep_check_button = builder.get_object("keep_check_button")
|
||||
self._hide_check_button = builder.get_object("hide_check_button")
|
||||
self._use_pids_check_button = builder.get_object("use_pids_check_button")
|
||||
self._new_check_button = builder.get_object("new_check_button")
|
||||
# Transponder elements
|
||||
self._sat_pos_combo_box = builder.get_object("sat_pos_combo_box")
|
||||
self._transponder_id_entry = builder.get_object("transponder_id_entry")
|
||||
self._network_id_entry = builder.get_object("network_id_entry")
|
||||
self._freq_entry = builder.get_object("freq_entry")
|
||||
self._rate_entry = builder.get_object("rate_entry")
|
||||
self._pol_combo_box = builder.get_object("pol_combo_box")
|
||||
self._fec_combo_box = builder.get_object("fec_combo_box")
|
||||
self._sys_combo_box = builder.get_object("sys_combo_box")
|
||||
self._mod_combo_box = builder.get_object("mod_combo_box")
|
||||
self._invertion_combo_box = builder.get_object("invertion_combo_box")
|
||||
self._rolloff_combo_box = builder.get_object("rolloff_combo_box")
|
||||
self._pilot_combo_box = builder.get_object("pilot_combo_box")
|
||||
self._pls_mode_combo_box = builder.get_object("pls_mode_combo_box")
|
||||
self._pls_code_entry = builder.get_object("pls_code_entry")
|
||||
self._stream_id_entry = builder.get_object("stream_id_entry")
|
||||
self._flags_entry = builder.get_object("flags_entry")
|
||||
self._namespace_entry = builder.get_object("namespace_entry")
|
||||
self.update_data_elements()
|
||||
|
||||
@run_idle
|
||||
def update_data_elements(self):
|
||||
model, paths = self._services_view.get_selection().get_selected_rows()
|
||||
model = get_base_model(model)
|
||||
if is_only_one_item_selected(paths, self._dialog):
|
||||
srv = Service(*model[paths][:])
|
||||
self._name_entry.set_text(srv.service)
|
||||
self._package_entry.set_text(srv.package)
|
||||
self._type_entry.set_text("")
|
||||
self._id_entry.set_text(str(int(srv.ssid, 16)))
|
||||
self._reference_entry.set_text(srv.picon_id.replace("_", ":").rstrip(".png"))
|
||||
# transponder
|
||||
self._freq_entry.set_text(srv.freq)
|
||||
self._rate_entry.set_text(srv.rate)
|
||||
self.select_active_text(self._pol_combo_box, srv.pol)
|
||||
self.select_active_text(self._fec_combo_box, srv.fec)
|
||||
self.select_active_text(self._sys_combo_box, srv.system)
|
||||
|
||||
def select_active_text(self, box: Gtk.ComboBox, text):
|
||||
model = box.get_model()
|
||||
for index, row in enumerate(model):
|
||||
if row[0] == text:
|
||||
box.set_active(index)
|
||||
break
|
||||
|
||||
def show(self):
|
||||
response = self._dialog.run()
|
||||
|
||||
Reference in New Issue
Block a user