added terrestrial services reading support

This commit is contained in:
DYefremov
2018-10-15 11:39:33 +03:00
parent 9ef776d8ab
commit b137a790a0
3 changed files with 42 additions and 6 deletions

View File

@@ -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))

View File

@@ -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()

View File

@@ -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):