From 547046bddbaed0ee82b524af23b71f681e0af5ea Mon Sep 17 00:00:00 2001 From: DYefremov Date: Fri, 16 Feb 2018 01:56:28 +0300 Subject: [PATCH] service details dialog data filling --- app/ui/service_details_dialog.glade | 119 +++++++++++++++------------- app/ui/service_details_dialog.py | 76 +++++++++++++++--- 2 files changed, 127 insertions(+), 68 deletions(-) diff --git a/app/ui/service_details_dialog.glade b/app/ui/service_details_dialog.glade index ce5ce52a..f5220cc9 100644 --- a/app/ui/service_details_dialog.glade +++ b/app/ui/service_details_dialog.glade @@ -309,6 +309,27 @@ 1 + + + True + False + CA ID's + + + 4 + 0 + + + + + True + True + + + 4 + 1 + + False @@ -327,62 +348,6 @@ 1 - - - True - False - 2 - 2 - - - True - False - Reference - - - 0 - 0 - - - - - True - True - 30 - - - 0 - 1 - - - - - True - False - Extra - - - 1 - 0 - - - - - True - True - - - 1 - 1 - - - - - False - True - 2 - - True @@ -734,6 +699,45 @@ 0 + + + True + True + 30 + + + 7 + 0 + + + + + True + False + Reference: + + + 6 + 0 + + + + + True + False + + + True + False + + + + + + 5 + 0 + + False @@ -1224,5 +1228,8 @@ + + cancel_button + diff --git a/app/ui/service_details_dialog.py b/app/ui/service_details_dialog.py index e54ed063..a692dd0f 100644 --- a/app/ui/service_details_dialog.py +++ b/app/ui/service_details_dialog.py @@ -1,9 +1,24 @@ +from enum import Enum + 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 Pisd(Enum): + VIDEO = "c:00" + AUDIO = "c:01" + TELETEXT = "c:02" + PCR = "c:03" + AC3 = "c:04" + VIDEO_TYPE = "c:05" + AUDIO_CHANNEL = "c:06" + BIT_STREAM_DELAY = "c:07" # in ms + PCM_DELAY = "c:08" # in ms + SUBTITLE = "c:09" + + class ServiceDetailsDialog: def __init__(self, transient, options, view): builder = Gtk.Builder() @@ -18,7 +33,7 @@ class ServiceDetailsDialog: 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._cas_entry = builder.get_object("cas_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") @@ -60,17 +75,54 @@ class ServiceDetailsDialog: 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) + self.init_service_data(srv) + self.init_transponder_data(srv) + + def init_service_data(self, srv): + """ Service data initialisation """ + self._name_entry.set_text(srv.service) + self._package_entry.set_text(srv.package) + self._type_entry.set_text(srv.service_type) + self._id_entry.set_text(str(int(srv.ssid, 16))) + flags = srv.flags_cas.split(",") + cas = list(filter(lambda x: x.startswith("C:"), flags)) + if cas: + self._cas_entry.set_text(",".join(cas)) + + pids = list(filter(lambda x: x.startswith("c:"), flags)) + if pids: + for pid in pids: + if pid.startswith(Pisd.VIDEO.value): + self._video_pid_entry.set_text(pid.strip(Pisd.VIDEO.value)) + elif pid.startswith(Pisd.AUDIO.value): + pass + elif pid.startswith(Pisd.TELETEXT.value): + self._teletext_pid_entry.set_text(pid.strip(Pisd.TELETEXT.value)) + elif pid.startswith(Pisd.PCR.value): + self._pcr_pid_entry.set_text(pid.strip(Pisd.PCR.value)) + elif pid.startswith(Pisd.AC3.value): + self._ac3_pid_entry.set_text(pid.strip(Pisd.AC3.value)) + elif pid.startswith(Pisd.VIDEO_TYPE.value): + # self._type_entry.set_text(pid.strip(Pisd.VIDEO_TYPE.value)) + pass + elif pid.startswith(Pisd.AUDIO_CHANNEL.value): + pass + elif pid.startswith(Pisd.BIT_STREAM_DELAY.value): + self._bitstream_entry.set_text(pid.strip(Pisd.BIT_STREAM_DELAY.value)) + elif pid.startswith(Pisd.PCM_DELAY.value): + self._pcm_entry.set_text(pid.strip(Pisd.PCM_DELAY.value)) + elif pid.startswith(Pisd.SUBTITLE.value): + pass + + self._reference_entry.set_text(srv.picon_id.replace("_", ":").rstrip(".png")) + + def init_transponder_data(self, srv): + """ Transponder data initialisation """ + 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()