diff --git a/app/eparser/enigma/lamedb.py b/app/eparser/enigma/lamedb.py index c7cff363..da730077 100644 --- a/app/eparser/enigma/lamedb.py +++ b/app/eparser/enigma/lamedb.py @@ -174,13 +174,21 @@ def parse_services(services, transponders, path): if transponder is not None: tr_type, sp, tr = str(transponder).partition(" ") # Skipping terrestrial and cable channels - if tr_type in "tc": + if tr_type == "c": continue tr = tr.split(_SEP) service_type = SERVICE_TYPE.get(data[4], SERVICE_TYPE["-2"]) # removing all non printable symbols! srv_name = "".join(c for c in ch[1] if c.isprintable()) + + if tr_type == "t": + system = "DVB-T" + pos = "T" + else: + system = "DVB-S2" if len(tr) > 7 else "DVB-S" + pos = "{}.{}".format(tr[4][:-1], tr[4][-1:]) + channels.append(Service(flags_cas=ch[2], transponder_type=tr_type, coded=coded, @@ -194,10 +202,10 @@ def parse_services(services, transponders, path): ssid=data[0], freq=tr[0], rate=tr[1], - pol=POLARIZATION[tr[2]], + pol=POLARIZATION.get(tr[2], None), fec=FEC[tr[3]], - system="DVB-S2" if len(tr) > 7 else "DVB-S", - pos="{}.{}".format(tr[4][:-1], tr[4][-1:]), + system=system, + pos=pos, data_id=ch[0], fav_id=fav_id, transponder=transponder)) diff --git a/app/ui/main_app_window.py b/app/ui/main_app_window.py index d8a3a822..dd596857 100644 --- a/app/ui/main_app_window.py +++ b/app/ui/main_app_window.py @@ -1324,8 +1324,18 @@ class MainAppWindow: self._filter_sat_positions_box.set_active(0) def update_sat_positions(self): + """ Updates positions values for the filtering function """ self._sat_positions.clear() - self._sat_positions.extend(map(str, sorted({float(x.pos) for x in self._services.values() if x.pos}))) + sat_positions = set() + terrestrial = False + for srv in self._services.values(): + if srv.transponder_type == "s" and srv.pos: + sat_positions.add(float(srv.pos)) + elif srv.transponder_type == "t": + terrestrial = True + if terrestrial: + self._sat_positions.append("T") + self._sat_positions.extend(map(str, sorted(sat_positions))) if self._filter_bar.is_visible(): self.update_filter_sat_positions() diff --git a/app/ui/service_details_dialog.py b/app/ui/service_details_dialog.py index 07ee1f6f..4af8ae67 100644 --- a/app/ui/service_details_dialog.py +++ b/app/ui/service_details_dialog.py @@ -191,12 +191,16 @@ class ServiceDetailsDialog: self._package_entry.set_text(srv.package) self._sid_entry.set_text(str(int(srv.ssid, 16))) # Transponder + tr_type = srv.transponder_type 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 tr_type == "t" and self._profile is Profile.ENIGMA_2: + self.update_ui_for_terrestrial() + else: + self.set_sat_positions(srv.pos) if self._profile is Profile.ENIGMA_2: self.init_enigma2_service_data(srv) @@ -343,6 +347,10 @@ class ServiceDetailsDialog: self._dialog.destroy() def on_edit(self): + if self._old_service.transponder_type == "t": + show_dialog(DialogType.ERROR, transient=self._dialog, text="Not implemented yet!") + return + fav_id, data_id = self.get_srv_data() # transponder transponder = self._old_service.transponder @@ -598,6 +606,16 @@ class ServiceDetailsDialog: else: self._reference_entry.set_text("{:x}{:04x}{:04x}".format(tid, nid, ssid)) + def update_ui_for_terrestrial(self): + self._pids_grid.set_visible(False) + tr_grid = self._builder.get_object("tr_grid") + tr_grid.remove_column(0) + tr_grid.remove_column(1) + tr_grid.remove_column(1) + self._builder.get_object("tr_extra_expander").set_visible(False) + self._builder.get_object("srv_separator").set_visible(False) + self._namespace_entry.set_hexpand(True) + class TransponderServicesDialog: def __init__(self, transient, model, transponder, tr_iters):