diff --git a/scenes/scroll-params.gd b/scenes/scroll-params.gd index e1153f60..447d1b6f 100644 --- a/scenes/scroll-params.gd +++ b/scenes/scroll-params.gd @@ -5,11 +5,20 @@ const CellLineEdit = preload('res://scenes/ячейка-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 = [ 222, 222 ] ## Ширины колонок. +const TABLE_HEADER = [ TableHeader, TableHeader ] ## Описание ряда заголовка. +const TABLE_ROW = [ CellLineEdit, CellLineEdit ] ## Описание ряда. +const TABLE_HEADERS_TEXT = ['Параметр', 'Значение' ] ## Назания колонок. +const TABLE_COLUMN_SIZE = [ 380, 75 ] ## Ширины колонок. +## Параметры цели для отображения в таблице.[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, 'Рекомендуемая помеха'] } func init_table(): @@ -18,11 +27,39 @@ func init_table(): $table.set_columns_min_size(TABLE_COLUMN_SIZE) $table.pin_header(self, get_parent()) $table.connect('row_pressed', Callable(self, 'on_row_pressed')) + 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_meta('id', 0) func _ready() -> void: + signaller.connect('threat_selected', Callable(self, 'on_threat_selected')) Threats.connect('threat_update', Callable(self, 'on_threat_update')) call_deferred('init_table') -func on_threat_update(threats, th): print_debug() +## Обрабатывает сигнал [signal Threats.threat_update]. +## Обновляет отображение только для выбранной цели. +func on_threat_update(threats, th): + var id = $table.get_meta('id') + if id == 0: + $table.set_meta('id', th.id) + on_threat_selected(threats, th) + elif (id != 0) and (id == th.id): + on_threat_selected(threats, th) + + +## Обрабатывает сигнал [signal Threats.threat_selected] +func on_threat_selected(threats, th): + print_debug(th.id) + $table.set_meta('id', th.id) + 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) diff --git a/scenes/scroll-threats.gd b/scenes/scroll-threats.gd index 8c42f75d..07f1af1e 100644 --- a/scenes/scroll-threats.gd +++ b/scenes/scroll-threats.gd @@ -32,6 +32,7 @@ func _ready() -> void: Threats.connect('threat_new', Callable(self, 'on_threat_new').bind(table_index)) Threats.connect('threat_lost', Callable(self, 'on_threat_lost').bind(table_index)) Threats.connect('threat_update', Callable(self, 'on_threat_update').bind(table_index)) + $table.connect('row_pressed', Callable(self, 'on_row_pressed').bind(table_index)) call_deferred('init_table') diff --git a/scenes/работа.tscn b/scenes/работа.tscn index 043553f4..1e90f76c 100644 --- a/scenes/работа.tscn +++ b/scenes/работа.tscn @@ -98,7 +98,6 @@ script = ExtResource("6_tict0") [node name="table" type="GridContainer" parent="grd_side/frm_ths_params/scroll"] layout_mode = 2 -columns = 4 script = ExtResource("6_fpdpm") [node name="frm_ecm_list" type="NinePatchRect" parent="grd_side"] @@ -132,7 +131,6 @@ offset_bottom = 285.0 [node name="table" type="GridContainer" parent="grd_side/frm_ecm_list/scroll"] layout_mode = 2 -columns = 4 script = ExtResource("6_fpdpm") [node name="frm_ecm_params" type="NinePatchRect" parent="grd_side"] @@ -166,7 +164,6 @@ offset_bottom = 282.0 [node name="table" type="GridContainer" parent="grd_side/frm_ecm_params/scroll"] layout_mode = 2 -columns = 4 script = ExtResource("6_fpdpm") [node name="canvas" parent="." instance=ExtResource("3_fppu7")]