Доработка. Отключение сигналов для таблицы помех в режимах отличных от режима Работа.

This commit is contained in:
MaD_CaT
2026-02-17 14:23:01 +03:00
parent 1a08b5ae50
commit 7bfa6413ba

View File

@@ -42,6 +42,16 @@ const INTERFER_NAMES = {
'elrs': 'ЕЛРС' }
var SIGNALS_CONNECTIONS = [
[signaller, 'interfer_new', 'on_interfer_new'],
[signaller, 'interfer_off', 'on_interfer_off'],
[signaller, 'rto_threat_unsel', 'on_rto_threat_unsel'],
[signaller, 'rto_threat_sel', 'on_rto_threat_sel'],
[interfer, 'interfer_update', 'on_interfer_update'],
[interfer, 'interfer_recommendate', 'on_interfer_recommendate'],
[interfer, 'interfer_resized', 'on_interfer_resized'] ]
## Индексы колонок
const COLUMN_NUMBER = 0
const COLUMN_NAME = 1
@@ -52,8 +62,10 @@ const TABLE_TEXT_ROWS = 4
var course = 0.0 ## Курс корабля
var color_emit: Color
var signal_conections: Array
var ecms: Dictionary ## Словарь с помехами
func on_rto_threat_unsel(_th_id): $table.clear_rows_selected()
func on_rto_threat_unsel(_th_id, _tbl_index): $table.clear_rows_selected()
## Вызывается при нажатии указателем мыши на выбранный ряд.
@@ -86,17 +98,20 @@ func on_rto_threat_sel(th_id: int, table_index):
# Called when the node enters the scene tree for the first time.
func _ready():
var table_index: = Dictionary()
signaller.connect('interfer_new', Callable(self, 'on_interfer_new').bind(table_index))
signaller.connect('interfer_off', Callable(self, 'on_interfer_off').bind(table_index))
signaller.connect('rto_threat_unsel', Callable(self, 'on_rto_threat_unsel'))
signaller.connect('rto_threat_sel', Callable(self, 'on_rto_threat_sel').bind(table_index))
interfer.connect('interfer_update', Callable(self, 'on_interfer_update').bind(table_index))
interfer.connect('interfer_recommendate', Callable(self, 'on_interfer_recommendate'))
for item in SIGNALS_CONNECTIONS:
item.append(table_index)
$table.connect('row_pressed', Callable(self, 'on_row_pressed'))
call_deferred('init_table')
var unit_nav = network.get_unit_instance('навигация')
unit_nav.connect('data_received', on_navi_data_received)
ProjectSettings.connect('settings_changed', on_settings_changed)
signaller.connect('режим_работа', connect_all)
signaller.connect('режим_контроль', disconnect_all)
signaller.connect('режим_журнал', disconnect_all)
signaller.connect('режим_эмс', disconnect_all)
signaller.connect('режим_эмс2', disconnect_all)
signaller.connect('режим_настройки', disconnect_all)
connect_all()
func init_table():
@@ -180,7 +195,7 @@ func map_th_to_row(ecm) -> Array:
return row
func on_interfer_recommendate(ecm):
func on_interfer_recommendate(ecm, _tbl_index):
var sel_rows: Array
$table.get_selected_rows(sel_rows)
if not len(sel_rows): return
@@ -207,3 +222,32 @@ func disable_edit(tbl, num_col: int, i_row: int):
for col in num_col:
var node: LineEdit = tbl.get_node2(col, i_row)
node.editable = false
func connect_all() -> void:
signal_conections.clear()
var table_index = SIGNALS_CONNECTIONS[0][3]
for item in SIGNALS_CONNECTIONS:
var proc = Callable(self, item[2]).bind(item[3])
var rc = item[0].connect(item[1], proc)
if rc == Error.OK:
signal_conections.append([item[0], item[1], proc])
else:
var ers = error_string(rc)
push_error('%s: %s %s %s' % [ers, item[0], item[1], item[2]])
signaller.emit_signal('connect_work_signal')
for ecm in ecms.values():
on_interfer_new(ecm, table_index)
func disconnect_all() -> void:
var table_index = SIGNALS_CONNECTIONS[0][3]
for item in signal_conections:
item[0].disconnect(item[1], item[2])
signal_conections.clear()
$table.clear_rows()
table_index.clear()
func on_interfer_resized(ecms_dic: Dictionary, _tbl_index) -> void:
ecms = ecms_dic