Доработка. Отключение сигналов для таблицы помех в режимах отличных от режима Работа.
This commit is contained in:
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user