diff --git a/app/eparser/ecommons.py b/app/eparser/ecommons.py
index d323644b..026ae2ea 100644
--- a/app/eparser/ecommons.py
+++ b/app/eparser/ecommons.py
@@ -39,8 +39,8 @@ class Flag(Enum):
K - last bit (1)
H - second from end (10)
- P - third (100)
- N - seventh (1000000)
+ P - third (100)
+ N - sixth (100000)
"""
KEEP = 1 # Do not automatically update the services parameters.
HIDE = 2
diff --git a/app/ui/main_app_window.py b/app/ui/main_app_window.py
index 8114f95d..47f5cea4 100644
--- a/app/ui/main_app_window.py
+++ b/app/ui/main_app_window.py
@@ -15,7 +15,8 @@ from . import Gtk, Gdk, UI_RESOURCES_PATH, LOCKED_ICON, HIDE_ICON, IPTV_ICON
from .dialogs import show_dialog, DialogType, get_chooser_dialog, WaitDialog
from .download_dialog import show_download_dialog
from .main_helper import edit_marker, insert_marker, move_items, rename, ViewTarget, set_flags, locate_in_services, \
- scroll_to, get_base_model, update_picons, copy_picon_reference, assign_picon, remove_picon, search
+ scroll_to, get_base_model, update_picons, copy_picon_reference, assign_picon, remove_picon, search, \
+ is_only_one_item_selected
from .picons_dialog import PiconsDialog
from .satellites_dialog import show_satellites_dialog
from .settings_dialog import show_settings_dialog
@@ -902,12 +903,13 @@ class MainAppWindow:
@run_idle
def on_service_edit(self, view):
- model_name = get_base_model(view.get_model()).get_name()
- if model_name == self._FAV_LIST_NAME:
- self.on_locate_in_services(view)
-
- dialog = ServiceDetailsDialog(self.__main_window, self.__options, self.__services_view)
- dialog.show()
+ model, paths = view.get_selection().get_selected_rows()
+ if is_only_one_item_selected(paths, self.__main_window):
+ model_name = get_base_model(model).get_name()
+ if model_name == self._FAV_LIST_NAME:
+ self.on_locate_in_services(view)
+ dialog = ServiceDetailsDialog(self.__main_window, self.__options, self.__services_view)
+ dialog.show()
@run_idle
def update_picons(self):
diff --git a/app/ui/service_details_dialog.glade b/app/ui/service_details_dialog.glade
index 78089f11..53eb6739 100644
--- a/app/ui/service_details_dialog.glade
+++ b/app/ui/service_details_dialog.glade
@@ -403,6 +403,7 @@
True
False
srv_type_liststore
+ 0
@@ -892,6 +893,7 @@
True
False
sat_pos_list_store
+ 0
@@ -966,6 +968,7 @@
True
False
pol_list_store
+ 0
@@ -994,6 +997,7 @@
True
False
fec_list_store
+ 0
@@ -1022,6 +1026,7 @@
True
False
sys_list_store
+ 0
@@ -1053,6 +1058,7 @@
False
0.98999999999999999
mod_list_store
+ 0
@@ -1187,6 +1193,7 @@
True
False
invertion_list_store
+ 0
@@ -1205,6 +1212,7 @@
False
False
rolloff_list_store
+ 0
@@ -1223,6 +1231,7 @@
False
False
pilot_list_store
+ 0
@@ -1252,6 +1261,7 @@
False
False
pls_mode_list_store
+ 0
diff --git a/app/ui/service_details_dialog.py b/app/ui/service_details_dialog.py
index 45ced79b..a565fc77 100644
--- a/app/ui/service_details_dialog.py
+++ b/app/ui/service_details_dialog.py
@@ -43,6 +43,7 @@ class ServiceDetailsDialog:
self._profile = Profile(options["profile"])
self._satellites_xml_path = options.get(self._profile.value)["data_dir_path"] + "satellites.xml"
self._services_view = view
+ self._old_service = None
# Service elements
self._name_entry = builder.get_object("name_entry")
self._package_entry = builder.get_object("package_entry")
@@ -89,24 +90,24 @@ class ServiceDetailsDialog:
@run_idle
def update_data_elements(self):
model, paths = self._services_view.get_selection().get_selected_rows()
- if is_only_one_item_selected(paths, self._dialog):
- srv = Service(*model[paths][:])
- # Service
- self._name_entry.set_text(srv.service)
- self._package_entry.set_text(srv.package)
- self.select_active_text(self._service_type_combo_box, srv.service_type)
- self._id_entry.set_text(str(int(srv.ssid, 16)))
- # 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)
- self.set_sat_positions(srv.pos)
+ srv = Service(*model[paths][:])
+ self._old_service = srv
+ # Service
+ self._name_entry.set_text(srv.service)
+ self._package_entry.set_text(srv.package)
+ self.select_active_text(self._service_type_combo_box, srv.service_type)
+ self._id_entry.set_text(str(int(srv.ssid, 16)))
+ # 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)
+ self.set_sat_positions(srv.pos)
- if self._profile is Profile.ENIGMA_2:
- self.init_enigma2_service_data(srv)
- self.init_enigma2_transponder_data(srv)
+ if self._profile is Profile.ENIGMA_2:
+ self.init_enigma2_service_data(srv)
+ self.init_enigma2_transponder_data(srv)
@run_idle
def init_enigma2_service_data(self, srv):
@@ -196,16 +197,62 @@ class ServiceDetailsDialog:
return response
def on_save(self, item):
+ if show_dialog(DialogType.QUESTION, self._dialog) == Gtk.ResponseType.CANCEL:
+ return
+
+ srv = Service(flags_cas=self.get_flags(),
+ transponder_type="s",
+ coded=None,
+ service=self._name_entry.get_text(),
+ locked=self._old_service.locked,
+ hide=None,
+ package=self._package_entry.get_text(),
+ service_type=self._service_type_combo_box.get_active_id(),
+ picon=self._old_service.picon,
+ picon_id=self._old_service.picon_id,
+ ssid=self._id_entry.get_text(),
+ freq=self._freq_entry.get_text(),
+ rate=self._rate_entry.get_text(),
+ pol=self._pol_combo_box.get_active_id(),
+ fec=self._fec_combo_box.get_active_id(),
+ system=self._sys_combo_box.get_active_id(),
+ pos=self._pol_combo_box.get_active_id(),
+ data_id=self.get_data_id(),
+ fav_id=self.get_fav_id(),
+ transponder=self.get_transponder_data())
show_dialog(DialogType.ERROR, transient=self._dialog, text="Not implemented yet!")
- # if show_dialog(DialogType.QUESTION, self._dialog) == Gtk.ResponseType.CANCEL:
- # return
def on_create_new(self, item):
+ if show_dialog(DialogType.QUESTION, self._dialog) == Gtk.ResponseType.CANCEL:
+ return
+
show_dialog(DialogType.ERROR, transient=self._dialog, text="Not implemented yet!")
- # if show_dialog(DialogType.QUESTION, self._dialog) == Gtk.ResponseType.CANCEL:
- # return
+
+ def get_flags(self):
+ if self._profile is Profile.ENIGMA_2:
+ pass
+ elif self._profile is Profile.NEUTRINO_MP:
+ pass
+
+ def get_data_id(self):
+ if self._profile is Profile.ENIGMA_2:
+ pass
+ elif self._profile is Profile.NEUTRINO_MP:
+ pass
+
+ def get_fav_id(self):
+ if self._profile is Profile.ENIGMA_2:
+ pass
+ elif self._profile is Profile.NEUTRINO_MP:
+ pass
+
+ def get_transponder_data(self):
+ if self._profile is Profile.ENIGMA_2:
+ if self._sys_combo_box.get_active_id() == "DVB-S2":
+ pass
+ elif self._profile is Profile.NEUTRINO_MP:
+ pass
if __name__ == "__main__":
- dialog = ServiceDetailsDialog()
- dialog.show()
+ pass