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