mirror of
https://github.com/DYefremov/DemonEditor.git
synced 2026-05-09 00:36:56 +02:00
transponders display for DVB-T/C
This commit is contained in:
@@ -67,7 +67,7 @@ Transponder = namedtuple("Transponder", ["frequency", "symbol_rate", "polarizati
|
||||
"modulation", "pls_mode", "pls_code", "is_id", "t2mi_plp_id"])
|
||||
TerTransponder = namedtuple("TerTransponder", ["centre_frequency", "system", "bandwidth", "constellation",
|
||||
"code_rate_hp", "code_rate_lp", "guard_interval", "transmission_mode",
|
||||
"hierarchy_information", "inversion", "plp_id", "comment"])
|
||||
"hierarchy_information", "inversion", "plp_id"])
|
||||
CableTransponder = namedtuple("CableTransponder", ["frequency", "symbol_rate", "fec_inner", "modulation"])
|
||||
|
||||
|
||||
@@ -201,6 +201,8 @@ SERVICE_TYPE = {"-2": "Data", "1": "TV", "2": "Radio", "3": "Data", "10": "Radio
|
||||
# Terrestrial
|
||||
BANDWIDTH = {"0": "8MHz", "1": "7MHz", "2": "6MHz", "3": "Auto", "4": "5MHz", "5": "1/712MHz", "6": "10MHz"}
|
||||
|
||||
CONSTELLATION = {"0": "QPSK", "1": "16-QAM", "2": "64-QAM", "3": "Auto"}
|
||||
|
||||
T_MODULATION = {"0": "QPSK", "1": "QAM16", "2": "QAM64", "3": "Auto", "4": "QAM256"}
|
||||
|
||||
TRANSMISSION_MODE = {"0": "2k", "1": "8k", "2": "Auto", "3": "4k", "4": "1k", "5": "16k", "6": "32k"}
|
||||
@@ -215,7 +217,7 @@ T_FEC = {"0": "1/2", "1": "2/3", "2": "3/4", "3": "5/6", "4": "7/8", "5": "Auto"
|
||||
T_SYSTEM = {"0": "DVB-T", "1": "DVB-T2", "-1": "DVB-T/T2"}
|
||||
|
||||
# Cable
|
||||
C_MODULATION = {"0": "Auto", "1": "QAM16", "2": "QAM32", "3": "QAM64", "4": "QAM128", "5": "QAM256"}
|
||||
C_MODULATION = {"0": "QPSK", "1": "QAM16", "2": "QAM32", "3": "QAM64", "4": "QAM128", "5": "QAM256", "6": "Auto"}
|
||||
|
||||
# ATSC
|
||||
A_MODULATION = {"0": "Auto", "1": "QAM16", "2": "QAM32", "3": "QAM64", "4": "QAM128", "5": "QAM256", "6": "8VSB",
|
||||
|
||||
@@ -30,11 +30,12 @@
|
||||
|
||||
For more info see comments.
|
||||
"""
|
||||
from xml.dom.minidom import parse, Document
|
||||
from xml.dom.minidom import Document
|
||||
import xml.etree.ElementTree as ETree
|
||||
|
||||
from app.commons import log
|
||||
from .ecommons import POLARIZATION, FEC, SYSTEM, MODULATION, Transponder, Satellite, get_key_by_value, Terrestrial, \
|
||||
Cable
|
||||
from .ecommons import (POLARIZATION, FEC, SYSTEM, MODULATION, Transponder, Satellite, get_key_by_value,
|
||||
Terrestrial, Cable, TerTransponder, CableTransponder, T_SYSTEM, BANDWIDTH, GUARD_INTERVAL,
|
||||
TRANSMISSION_MODE, T_FEC, HIERARCHY, C_MODULATION, FEC_DEFAULT, Inversion, CONSTELLATION)
|
||||
|
||||
_SAT_COMMENT = (" File was created in DemonEditor\n\n"
|
||||
"usable flags are\n"
|
||||
@@ -60,17 +61,65 @@ _SAT_COMMENT = (" File was created in DemonEditor\n\n"
|
||||
|
||||
def get_satellites(path):
|
||||
""" Returns data [Satellite] list from *.xml. """
|
||||
return [parse_sat(elem) for elem in parse(path).getElementsByTagName("sat") if elem.hasAttributes()]
|
||||
return [Satellite(e.get("name", None),
|
||||
e.get("flags", None),
|
||||
e.get("position", None) or "0",
|
||||
get_sat_transponders(e)) for e in ETree.parse(path).iter("sat")]
|
||||
|
||||
|
||||
def get_sat_transponders(elem):
|
||||
""" Returns satellite transponders list. """
|
||||
return [Transponder(e.get("frequency", "0"),
|
||||
e.get("symbol_rate", "0"),
|
||||
POLARIZATION[e.get("polarization", "0")],
|
||||
FEC[e.get("fec_inner", "0")],
|
||||
SYSTEM[e.get("system", "0")],
|
||||
MODULATION[e.get("modulation", "0")],
|
||||
e.get("pls_mode", None),
|
||||
e.get("pls_code", None),
|
||||
e.get("is_id", None),
|
||||
e.get("t2mi_plp_id", None)) for e in elem.iter("transponder")]
|
||||
|
||||
|
||||
def get_terrestrial(path):
|
||||
""" Returns data [Terrestrial] list from *.xml. """
|
||||
return [parse_terrestrial(elem) for elem in parse(path).getElementsByTagName("terrestrial") if elem.hasAttributes()]
|
||||
return [Terrestrial(e.get("name", None),
|
||||
e.get("flags", None),
|
||||
e.get("countrycode", None),
|
||||
[get_ter_transponder(e) for e in e.iter("transponder")]
|
||||
) for e in ETree.parse(path).iter("terrestrial")]
|
||||
|
||||
|
||||
def get_ter_transponder(elem):
|
||||
""" Returns terrestrial transponder. """
|
||||
return TerTransponder(elem.get("centre_frequency", "0"),
|
||||
T_SYSTEM.get(elem.get("system", None), None),
|
||||
BANDWIDTH.get(elem.get("bandwidth", None), None),
|
||||
CONSTELLATION.get(elem.get("constellation", None), None),
|
||||
T_FEC.get(elem.get("code_rate_hp", None), None),
|
||||
T_FEC.get(elem.get("code_rate_lp", None), None),
|
||||
GUARD_INTERVAL.get(elem.get("guard_interval", None), None),
|
||||
TRANSMISSION_MODE.get(elem.get("transmission_mode", None), None),
|
||||
HIERARCHY.get(elem.get("hierarchy_information", None), None),
|
||||
Inversion(elem.get("inversion")).name if "inversion" in elem.keys() else None,
|
||||
elem.get("plp_id", None))
|
||||
|
||||
|
||||
def get_cable(path):
|
||||
""" Returns data [Cable] list from *.xml. """
|
||||
return [parse_cable(elem) for elem in parse(path).getElementsByTagName("cable") if elem.hasAttributes()]
|
||||
return [Cable(e.get("name", None),
|
||||
e.get("flags", None),
|
||||
e.get("satfeed", None),
|
||||
e.get("countrycode", None),
|
||||
get_cable_transponders(e)) for e in ETree.parse(path).iter("cable")]
|
||||
|
||||
|
||||
def get_cable_transponders(elem):
|
||||
""" Returns cable transponders list. """
|
||||
return [CableTransponder(e.get("frequency", "0"),
|
||||
e.get("symbol_rate", "0"),
|
||||
FEC_DEFAULT[e.get("fec_inner", "0")],
|
||||
C_MODULATION[e.get("modulation", "0")]) for e in elem.iter("transponder")]
|
||||
|
||||
|
||||
def write_satellites(satellites, data_path):
|
||||
@@ -114,49 +163,5 @@ def write_satellites(satellites, data_path):
|
||||
doc.unlink()
|
||||
|
||||
|
||||
def parse_transponders(elem, sat_name):
|
||||
""" Parsing satellite transponders """
|
||||
transponders = []
|
||||
for el in elem.getElementsByTagName("transponder"):
|
||||
if el.hasAttributes():
|
||||
atr = el.attributes
|
||||
try:
|
||||
tr = Transponder(atr["frequency"].value,
|
||||
atr["symbol_rate"].value,
|
||||
POLARIZATION[atr["polarization"].value],
|
||||
FEC[atr["fec_inner"].value],
|
||||
SYSTEM[atr["system"].value],
|
||||
MODULATION[atr["modulation"].value],
|
||||
atr["pls_mode"].value if "pls_mode" in atr else None,
|
||||
atr["pls_code"].value if "pls_code" in atr else None,
|
||||
atr["is_id"].value if "is_id" in atr else None,
|
||||
atr["t2mi_plp_id"].value if "t2mi_plp_id" in atr else None)
|
||||
except Exception as e:
|
||||
message = f"Error: can't parse transponder for '{sat_name}' satellite! {repr(e)}"
|
||||
log(message)
|
||||
else:
|
||||
transponders.append(tr)
|
||||
return transponders
|
||||
|
||||
|
||||
def parse_sat(elem):
|
||||
""" Parsing satellite. """
|
||||
sat_name = elem.attributes["name"].value
|
||||
return Satellite(sat_name,
|
||||
elem.attributes["flags"].value,
|
||||
elem.attributes["position"].value,
|
||||
parse_transponders(elem, sat_name))
|
||||
|
||||
|
||||
def parse_terrestrial(elem):
|
||||
atr = elem.attributes
|
||||
return Terrestrial(atr["name"].value, None, None, [])
|
||||
|
||||
|
||||
def parse_cable(elem):
|
||||
atr = elem.attributes
|
||||
return Cable(atr["name"].value, None, None, None, [])
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
pass
|
||||
|
||||
@@ -64,6 +64,8 @@ class SatellitesTool(Gtk.Box):
|
||||
|
||||
self._settings = settings
|
||||
self._current_sat_path = None
|
||||
self._current_ter_path = None
|
||||
self._current_cable_path = None
|
||||
self._dvb_type = self.DVB.SAT
|
||||
|
||||
handlers = {"on_satellite_view_realize": self.on_satellite_view_realize,
|
||||
@@ -79,7 +81,9 @@ class SatellitesTool(Gtk.Box):
|
||||
"on_edit": self.on_edit,
|
||||
"on_key_release": self.on_key_release,
|
||||
"on_visible_page": self.on_visible_page,
|
||||
"on_satellite_selection": self.on_satellite_selection}
|
||||
"on_satellite_selection": self.on_satellite_selection,
|
||||
"on_terrestrial_selection": self.on_terrestrial_selection,
|
||||
"on_cable_selection": self.on_cable_selection}
|
||||
|
||||
builder = get_builder(f"{UI_RESOURCES_PATH}xml/editor.glade", handlers)
|
||||
|
||||
@@ -87,11 +91,17 @@ class SatellitesTool(Gtk.Box):
|
||||
self._terrestrial_view = builder.get_object("terrestrial_view")
|
||||
self._cable_view = builder.get_object("cable_view")
|
||||
self._sat_tr_view = builder.get_object("sat_tr_view")
|
||||
builder.get_object("sat_pos_column").set_cell_data_func(builder.get_object("sat_pos_renderer"),
|
||||
self.sat_pos_func)
|
||||
self._ter_tr_view = builder.get_object("ter_tr_view")
|
||||
self._cable_tr_view = builder.get_object("cable_tr_view")
|
||||
self._transponders_stack = builder.get_object("transponders_stack")
|
||||
self._add_header_button = builder.get_object("add_header_button")
|
||||
self._update_header_button = builder.get_object("update_header_button")
|
||||
self.pack_start(builder.get_object("main_paned"), True, True, 0)
|
||||
self._app.connect("profile-changed", lambda a, m: self.load_satellites_list())
|
||||
# Custom renderer
|
||||
sat_pos_renderer = builder.get_object("sat_pos_renderer")
|
||||
builder.get_object("sat_pos_column").set_cell_data_func(sat_pos_renderer, self.sat_pos_func)
|
||||
|
||||
self.show()
|
||||
|
||||
def on_satellite_view_realize(self, view):
|
||||
@@ -112,6 +122,13 @@ class SatellitesTool(Gtk.Box):
|
||||
def on_visible_page(self, stack, param):
|
||||
self._dvb_type = self.DVB(stack.get_visible_child_name())
|
||||
self._transponders_stack.set_visible_child_name(self._dvb_type)
|
||||
self._update_header_button.set_sensitive(self._dvb_type is self.DVB.SAT)
|
||||
self._add_header_button.set_sensitive(self._dvb_type is self.DVB.SAT)
|
||||
|
||||
if self._dvb_type is self.DVB.SAT:
|
||||
self._app.on_info_bar_close()
|
||||
else:
|
||||
self._app.show_info_message("Read mode only!", Gtk.MessageType.WARNING)
|
||||
|
||||
def on_satellite_selection(self, view):
|
||||
model = self._sat_tr_view.get_model()
|
||||
@@ -121,6 +138,22 @@ class SatellitesTool(Gtk.Box):
|
||||
if self._current_sat_path:
|
||||
list(map(model.append, view.get_model()[self._current_sat_path][-1]))
|
||||
|
||||
def on_terrestrial_selection(self, view):
|
||||
model = self._ter_tr_view.get_model()
|
||||
model.clear()
|
||||
|
||||
self._current_ter_path, column = view.get_cursor()
|
||||
if self._current_ter_path:
|
||||
list(map(model.append, view.get_model()[self._current_ter_path][-1]))
|
||||
|
||||
def on_cable_selection(self, view):
|
||||
model = self._cable_tr_view.get_model()
|
||||
model.clear()
|
||||
|
||||
self._current_cable_path, column = view.get_cursor()
|
||||
if self._current_cable_path:
|
||||
list(map(model.append, view.get_model()[self._current_cable_path][-1]))
|
||||
|
||||
def on_up(self, item):
|
||||
move_items(KeyboardKey.UP, self._satellite_view)
|
||||
|
||||
@@ -128,10 +161,11 @@ class SatellitesTool(Gtk.Box):
|
||||
move_items(KeyboardKey.DOWN, self._satellite_view)
|
||||
|
||||
def on_button_press(self, menu, event):
|
||||
if event.get_event_type() == Gdk.EventType.DOUBLE_BUTTON_PRESS:
|
||||
self.on_edit(self._satellite_view if self._satellite_view.is_focus() else self._sat_tr_view)
|
||||
else:
|
||||
on_popup_menu(menu, event)
|
||||
if self._dvb_type is self.DVB.SAT:
|
||||
if event.get_event_type() == Gdk.EventType.DOUBLE_BUTTON_PRESS:
|
||||
self.on_edit(self._satellite_view if self._satellite_view.is_focus() else self._sat_tr_view)
|
||||
else:
|
||||
on_popup_menu(menu, event)
|
||||
|
||||
def on_key_release(self, view, event):
|
||||
""" Handling keystrokes """
|
||||
|
||||
@@ -225,8 +225,6 @@ Author: Dmitriy Yefremov
|
||||
<column type="gchararray"/>
|
||||
<!-- column-name plp_id -->
|
||||
<column type="gchararray"/>
|
||||
<!-- column-name comment -->
|
||||
<column type="gchararray"/>
|
||||
</columns>
|
||||
</object>
|
||||
<object class="GtkListStore" id="terrestrial_model">
|
||||
@@ -259,7 +257,6 @@ Author: Dmitriy Yefremov
|
||||
<property name="margin_left">5</property>
|
||||
<property name="margin_right">5</property>
|
||||
<property name="margin_top">5</property>
|
||||
<property name="margin_bottom">5</property>
|
||||
<property name="orientation">vertical</property>
|
||||
<property name="spacing">5</property>
|
||||
<child>
|
||||
@@ -272,7 +269,7 @@ Author: Dmitriy Yefremov
|
||||
<property name="margin_bottom">5</property>
|
||||
<property name="spacing">5</property>
|
||||
<child>
|
||||
<object class="GtkButton" id="satellite_add_button">
|
||||
<object class="GtkButton" id="add_header_button">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">True</property>
|
||||
<property name="receives_default">True</property>
|
||||
@@ -343,7 +340,6 @@ Author: Dmitriy Yefremov
|
||||
<property name="can_focus">False</property>
|
||||
<property name="tooltip_text" translatable="yes">Satellites</property>
|
||||
<property name="orientation">vertical</property>
|
||||
<property name="spacing">5</property>
|
||||
<child>
|
||||
<object class="GtkScrolledWindow" id="satellite_view_scrolled">
|
||||
<property name="visible">True</property>
|
||||
@@ -457,7 +453,6 @@ Author: Dmitriy Yefremov
|
||||
<property name="can_focus">False</property>
|
||||
<property name="tooltip_text" translatable="yes">Terrestrial</property>
|
||||
<property name="orientation">vertical</property>
|
||||
<property name="spacing">5</property>
|
||||
<child>
|
||||
<object class="GtkScrolledWindow" id="terrestrial_view_scrolled">
|
||||
<property name="visible">True</property>
|
||||
@@ -472,9 +467,10 @@ Author: Dmitriy Yefremov
|
||||
<property name="rubber_banding">True</property>
|
||||
<property name="activate_on_single_click">True</property>
|
||||
<signal name="button-press-event" handler="on_button_press" object="popup_menu" swapped="no"/>
|
||||
<signal name="cursor-changed" handler="on_terrestrial_selection" swapped="no"/>
|
||||
<signal name="realize" handler="on_terrestrial_view_realize" swapped="no"/>
|
||||
<child internal-child="selection">
|
||||
<object class="GtkTreeSelection">
|
||||
<object class="GtkTreeSelection" id="terrrestrial_view_selection">
|
||||
<property name="mode">multiple</property>
|
||||
</object>
|
||||
</child>
|
||||
@@ -484,7 +480,7 @@ Author: Dmitriy Yefremov
|
||||
<property name="expand">True</property>
|
||||
<property name="alignment">0.49000000953674316</property>
|
||||
<child>
|
||||
<object class="GtkCellRendererText" id="sat_name_renderer1">
|
||||
<object class="GtkCellRendererText" id="ter_name_renderer">
|
||||
<property name="ellipsize">end</property>
|
||||
</object>
|
||||
<attributes>
|
||||
@@ -556,7 +552,6 @@ Author: Dmitriy Yefremov
|
||||
<property name="can_focus">False</property>
|
||||
<property name="tooltip_text" translatable="yes">Cable</property>
|
||||
<property name="orientation">vertical</property>
|
||||
<property name="spacing">5</property>
|
||||
<child>
|
||||
<object class="GtkScrolledWindow" id="cable_view_scrolled">
|
||||
<property name="visible">True</property>
|
||||
@@ -571,19 +566,20 @@ Author: Dmitriy Yefremov
|
||||
<property name="rubber_banding">True</property>
|
||||
<property name="activate_on_single_click">True</property>
|
||||
<signal name="button-press-event" handler="on_button_press" object="popup_menu" swapped="no"/>
|
||||
<signal name="cursor-changed" handler="on_cable_selection" swapped="no"/>
|
||||
<signal name="realize" handler="on_cable_view_realize" swapped="no"/>
|
||||
<child internal-child="selection">
|
||||
<object class="GtkTreeSelection">
|
||||
<object class="GtkTreeSelection" id="cable_view_selection">
|
||||
<property name="mode">multiple</property>
|
||||
</object>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkTreeViewColumn" id="sat_name_column2">
|
||||
<object class="GtkTreeViewColumn" id="cable_name_column">
|
||||
<property name="title" translatable="yes">Name</property>
|
||||
<property name="expand">True</property>
|
||||
<property name="alignment">0.49000000953674316</property>
|
||||
<child>
|
||||
<object class="GtkCellRendererText" id="sat_name_renderer2">
|
||||
<object class="GtkCellRendererText" id="cable_name_renderer">
|
||||
<property name="ellipsize">end</property>
|
||||
</object>
|
||||
<attributes>
|
||||
@@ -684,7 +680,6 @@ Author: Dmitriy Yefremov
|
||||
<property name="margin_left">5</property>
|
||||
<property name="margin_right">5</property>
|
||||
<property name="margin_top">5</property>
|
||||
<property name="margin_bottom">5</property>
|
||||
<property name="orientation">vertical</property>
|
||||
<property name="spacing">5</property>
|
||||
<child>
|
||||
@@ -736,7 +731,6 @@ Author: Dmitriy Yefremov
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">False</property>
|
||||
<property name="orientation">vertical</property>
|
||||
<property name="spacing">5</property>
|
||||
<child>
|
||||
<object class="GtkScrolledWindow" id="sat_tr_view_scrolled">
|
||||
<property name="visible">True</property>
|
||||
@@ -974,7 +968,6 @@ Author: Dmitriy Yefremov
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">False</property>
|
||||
<property name="orientation">vertical</property>
|
||||
<property name="spacing">5</property>
|
||||
<child>
|
||||
<object class="GtkScrolledWindow" id="ter_tr_view_scrolled">
|
||||
<property name="visible">True</property>
|
||||
@@ -1063,22 +1056,34 @@ Author: Dmitriy Yefremov
|
||||
</object>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkTreeViewColumn" id="ter_rate_column">
|
||||
<object class="GtkTreeViewColumn" id="ter_rate_hp_column">
|
||||
<property name="resizable">True</property>
|
||||
<property name="min_width">20</property>
|
||||
<property name="title" translatable="yes">Rate</property>
|
||||
<property name="title" translatable="yes">SR (HP)</property>
|
||||
<property name="expand">True</property>
|
||||
<property name="alignment">0.5</property>
|
||||
<child>
|
||||
<object class="GtkCellRendererText" id="ter_rate_cellrenderer">
|
||||
<object class="GtkCellRendererText" id="ter_rate_hp_cellrenderer">
|
||||
<property name="xalign">0.49000000953674316</property>
|
||||
</object>
|
||||
<attributes>
|
||||
<attribute name="single-paragraph-mode">1</attribute>
|
||||
<attribute name="text">4</attribute>
|
||||
</attributes>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkTreeViewColumn" id="ter_rate_lp_column">
|
||||
<property name="title" translatable="yes">SR (LP)</property>
|
||||
<child>
|
||||
<object class="GtkCellRendererText" id="ter_rate_lp_cellrenderer"/>
|
||||
<attributes>
|
||||
<attribute name="text">5</attribute>
|
||||
</attributes>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkTreeViewColumn" id="ter_guard_column">
|
||||
<property name="resizable">True</property>
|
||||
@@ -1090,20 +1095,6 @@ Author: Dmitriy Yefremov
|
||||
<object class="GtkCellRendererText" id="ter_guard_cellrenderer">
|
||||
<property name="xalign">0.49000000953674316</property>
|
||||
</object>
|
||||
<attributes>
|
||||
<attribute name="text">5</attribute>
|
||||
</attributes>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkTreeViewColumn" id="ter_tr_mode_column">
|
||||
<property name="visible">False</property>
|
||||
<property name="resizable">True</property>
|
||||
<property name="title" translatable="yes">Transmission</property>
|
||||
<property name="expand">True</property>
|
||||
<child>
|
||||
<object class="GtkCellRendererText" id="ter_tr_mode_cellrenderer"/>
|
||||
<attributes>
|
||||
<attribute name="text">6</attribute>
|
||||
</attributes>
|
||||
@@ -1111,29 +1102,40 @@ Author: Dmitriy Yefremov
|
||||
</object>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkTreeViewColumn" id="ter_hierarchy_column">
|
||||
<property name="visible">False</property>
|
||||
<object class="GtkTreeViewColumn" id="ter_tr_mode_column">
|
||||
<property name="resizable">True</property>
|
||||
<property name="title" translatable="yes">Hierarchy</property>
|
||||
<property name="title" translatable="yes">Transmission</property>
|
||||
<property name="expand">True</property>
|
||||
<child>
|
||||
<object class="GtkCellRendererText" id="ter_hierarchy_cellrenderer"/>
|
||||
<object class="GtkCellRendererText" id="ter_tr_mode_cellrenderer"/>
|
||||
<attributes>
|
||||
<attribute name="text">7</attribute>
|
||||
</attributes>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkTreeViewColumn" id="ter_hierarchy_column">
|
||||
<property name="resizable">True</property>
|
||||
<property name="title" translatable="yes">Hierarchy</property>
|
||||
<property name="expand">True</property>
|
||||
<child>
|
||||
<object class="GtkCellRendererText" id="ter_hierarchy_cellrenderer"/>
|
||||
<attributes>
|
||||
<attribute name="text">8</attribute>
|
||||
</attributes>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkTreeViewColumn" id="ter_inversion_column">
|
||||
<property name="visible">False</property>
|
||||
<property name="resizable">True</property>
|
||||
<property name="title" translatable="yes">Inversion</property>
|
||||
<property name="expand">True</property>
|
||||
<child>
|
||||
<object class="GtkCellRendererText" id="ter_inversion_cellrenderer"/>
|
||||
<attributes>
|
||||
<attribute name="text">8</attribute>
|
||||
<attribute name="text">9</attribute>
|
||||
</attributes>
|
||||
</child>
|
||||
</object>
|
||||
@@ -1200,7 +1202,6 @@ Author: Dmitriy Yefremov
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">False</property>
|
||||
<property name="orientation">vertical</property>
|
||||
<property name="spacing">5</property>
|
||||
<child>
|
||||
<object class="GtkScrolledWindow" id="cable_tr_view_scrolled">
|
||||
<property name="visible">True</property>
|
||||
@@ -1228,7 +1229,7 @@ Author: Dmitriy Yefremov
|
||||
<property name="expand">True</property>
|
||||
<property name="alignment">0.5</property>
|
||||
<child>
|
||||
<object class="GtkCellRendererText" id="frequency_cellrenderertext2">
|
||||
<object class="GtkCellRendererText" id="cable_frequency_cellrenderer">
|
||||
<property name="xalign">0.49000000953674316</property>
|
||||
</object>
|
||||
<attributes>
|
||||
@@ -1245,7 +1246,7 @@ Author: Dmitriy Yefremov
|
||||
<property name="expand">True</property>
|
||||
<property name="alignment">0.5</property>
|
||||
<child>
|
||||
<object class="GtkCellRendererText" id="sat_rate_cellrenderertext2">
|
||||
<object class="GtkCellRendererText" id="cable_rate_cellrenderer">
|
||||
<property name="xalign">0.49000000953674316</property>
|
||||
</object>
|
||||
<attributes>
|
||||
@@ -1262,11 +1263,11 @@ Author: Dmitriy Yefremov
|
||||
<property name="expand">True</property>
|
||||
<property name="alignment">0.5</property>
|
||||
<child>
|
||||
<object class="GtkCellRendererText" id="set_fec_cellrenderertext2">
|
||||
<object class="GtkCellRendererText" id="cable_fec_cellrenderer">
|
||||
<property name="xalign">0.49000000953674316</property>
|
||||
</object>
|
||||
<attributes>
|
||||
<attribute name="text">3</attribute>
|
||||
<attribute name="text">2</attribute>
|
||||
</attributes>
|
||||
</child>
|
||||
</object>
|
||||
@@ -1279,11 +1280,11 @@ Author: Dmitriy Yefremov
|
||||
<property name="expand">True</property>
|
||||
<property name="alignment">0.5</property>
|
||||
<child>
|
||||
<object class="GtkCellRendererText" id="mod_cellrenderertext2">
|
||||
<object class="GtkCellRendererText" id="cable_mod_cellrenderer">
|
||||
<property name="xalign">0.49000000953674316</property>
|
||||
</object>
|
||||
<attributes>
|
||||
<attribute name="text">5</attribute>
|
||||
<attribute name="text">3</attribute>
|
||||
</attributes>
|
||||
</child>
|
||||
</object>
|
||||
|
||||
Reference in New Issue
Block a user