class_name scroll_params extends ScrollContainer ## Отображение параметров цели. const CellLineEdit = preload('res://table/ячейка-2.tscn') ## Ячейка таблицы. const TableHeader = preload('res://table/header.tscn') ## Ячейка заголовок таблицы. const TABLE_HEADER = [ TableHeader, TableHeader ] ## Описание ряда заголовка. const TABLE_ROW = [ CellLineEdit, CellLineEdit ] ## Описание ряда. const TABLE_HEADERS_TEXT = ['Параметр', 'Значение' ] ## Назания колонок. const TABLE_COLUMN_SIZE = [ 370, 85 ] ## Ширины колонок. ## Параметры цели для отображения в таблице.[br] ## [b]val[0][/b] - Индекс строки.[br][b]val[1][/b] - Содержание. const TABLE_PARAMS = { 'baud': [0, 'Модуляционная скорость, бод'], 'freqm': [1, 'Режим смены частоты.'], 'power': [2, 'Уровень сигнала, дБм.'], 'tmod': [3, 'Тип модуляции'], 'width': [4, 'Занимая полоса частот, МГц.'], 'rkrp': [5, 'Рекомендуемая помеха'] } ## Обрабатывает сигнал [signal threats.threat_selected]. func on_threat_selected(th): $table.set_meta('id', th.id) on_threat_update(th) func init_table(): for i in TABLE_PARAMS.size(): $table.add_row(TABLE_ROW) for p in TABLE_PARAMS.values(): $table.set_node_text(0, p[0], p[1]) $table.set_node_alligment(0, p[0], HORIZONTAL_ALIGNMENT_LEFT) $table.set_node_editable(0, p[0], false) $table.set_node_editable(1, p[0], false) $table.set_columns_min_size(TABLE_COLUMN_SIZE) $table.set_meta('id', 0) func _ready() -> void: signaller.connect('threat_selected', Callable(self, 'on_threat_selected')) signaller.connect('rto_threat_unsel', Callable(self, 'on_rto_threat_unsel')) threats.connect('threat_update', Callable(self, 'on_threat_update')) call_deferred('init_table') ## Обрабатывает сигнал [signal threats.threat_update]. ## Обновляет отображение только для выбранной цели. func on_threat_update(th): if not th.selected: return if th.id != $table.get_meta('id'): return var mnms = tools.get_members_names(th) for member_name in mnms: if not TABLE_PARAMS.has(member_name): continue var p = TABLE_PARAMS[member_name] var val = th.get(member_name) $table.set_node_text(1, p[0], '%s' % val) func on_rto_threat_unsel(_th_id): for item in len(TABLE_PARAMS): $table.set_node_text(1, item, '')