Files
uarep-ctl/scenes/frame-params/scroll-params.gd
2025-08-06 16:17:47 +03:00

66 lines
2.7 KiB
GDScript

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 TABLE_PARAMS.size():
$table.set_node_text(1, item, '')