Рефакторинг. Табуляцию в пробелы
This commit is contained in:
@@ -50,11 +50,11 @@ func on_threats_changed(threats: Dictionary, th: Object): $count_all_pad/count_a
|
||||
|
||||
## Производит инициализацию
|
||||
func _ready():
|
||||
$btn_strobe.button_connect('pressed', Callable(self, 'on_button_strobe_pressed'))
|
||||
$btn_off.set_pressed(true)
|
||||
strob_center = $canvas.get_strob_center()
|
||||
on_button_strobe_pressed()
|
||||
drag_fsm = DragFSM.OFF
|
||||
$btn_strobe.button_connect('pressed', Callable(self, 'on_button_strobe_pressed'))
|
||||
$btn_off.set_pressed(true)
|
||||
strob_center = $canvas.get_strob_center()
|
||||
on_button_strobe_pressed()
|
||||
drag_fsm = DragFSM.OFF
|
||||
var nodes: = get_tree().get_nodes_in_group('группа-режим-помехи')
|
||||
nodes.any(func(btn): btn.button_connect('pressed', Callable(self, 'on_button_pressed').bind(btn, nodes)))
|
||||
Threats.connect('threat_lost', Callable(self, 'on_threat_lost'))
|
||||
@@ -99,17 +99,17 @@ func on_threat_lost(threats: Dictionary, th: Object):
|
||||
|
||||
## Обработчик нажатия кнопки "Строб". Управляет отображением строба
|
||||
func on_button_strobe_pressed():
|
||||
if $btn_strobe.is_pressed():
|
||||
$canvas.set_strob_visible(true)
|
||||
drag_fsm = DragFSM.IDLE
|
||||
else:
|
||||
$canvas.set_strob_visible(false)
|
||||
drag_fsm = DragFSM.OFF
|
||||
if $btn_strobe.is_pressed():
|
||||
$canvas.set_strob_visible(true)
|
||||
drag_fsm = DragFSM.IDLE
|
||||
else:
|
||||
$canvas.set_strob_visible(false)
|
||||
drag_fsm = DragFSM.OFF
|
||||
|
||||
|
||||
## Поведение радиокнопок в группе. Управляет состоянием кнопок в радиогруппе
|
||||
func on_button_pressed(btn_this, btn_others):
|
||||
for btn_other in btn_others: btn_other.set_pressed(btn_this == btn_other)
|
||||
for btn_other in btn_others: btn_other.set_pressed(btn_this == btn_other)
|
||||
|
||||
|
||||
## Возвращает ширину строба по направлению
|
||||
@@ -121,9 +121,9 @@ func get_strob_width(pos: Vector2, prev: float) -> float:
|
||||
|
||||
## Возвращает ширину строба по частоте
|
||||
func get_strob_band(pos: Vector2, prev: float) -> float:
|
||||
var strob_dir_band: float = prev - (drag_pos_begin.y - pos.y) * drag_scale_band
|
||||
strob_dir_band = Tools.clip_value(strob_dir_band, strob_min_band, strob_max_band)
|
||||
return strob_dir_band
|
||||
var strob_dir_band: float = prev - (drag_pos_begin.y - pos.y) * drag_scale_band
|
||||
strob_dir_band = Tools.clip_value(strob_dir_band, strob_min_band, strob_max_band)
|
||||
return strob_dir_band
|
||||
|
||||
|
||||
## Устанавливает центр строба по частоте и направлению
|
||||
@@ -159,23 +159,23 @@ func _on_drag_begin(event):
|
||||
|
||||
## Обработчик событий вввода. Вызывается godot
|
||||
func _input(event):
|
||||
if event is InputEventMouseMotion:
|
||||
if drag_fsm == DragFSM.DRAG:
|
||||
emit_signal('drag_continue', event)
|
||||
elif event is InputEventMouseButton:
|
||||
drag_button = event.button_index
|
||||
if event.pressed:
|
||||
if drag_fsm == DragFSM.IDLE:
|
||||
drag_fsm = DragFSM.DRAG
|
||||
emit_signal('drag_begin', event)
|
||||
else:
|
||||
drag_fsm = DragFSM.IDLE
|
||||
emit_signal('drag_end', event)
|
||||
elif event is InputEventKey:
|
||||
if event.pressed and event.physical_keycode == KEY_F11:
|
||||
emit_signal('full_screen')
|
||||
elif event.physical_keycode == KEY_SHIFT:
|
||||
shift_pressed = event.pressed
|
||||
if event is InputEventMouseMotion:
|
||||
if drag_fsm == DragFSM.DRAG:
|
||||
emit_signal('drag_continue', event)
|
||||
elif event is InputEventMouseButton:
|
||||
drag_button = event.button_index
|
||||
if event.pressed:
|
||||
if drag_fsm == DragFSM.IDLE:
|
||||
drag_fsm = DragFSM.DRAG
|
||||
emit_signal('drag_begin', event)
|
||||
else:
|
||||
drag_fsm = DragFSM.IDLE
|
||||
emit_signal('drag_end', event)
|
||||
elif event is InputEventKey:
|
||||
if event.pressed and event.physical_keycode == KEY_F11:
|
||||
emit_signal('full_screen')
|
||||
elif event.physical_keycode == KEY_SHIFT:
|
||||
shift_pressed = event.pressed
|
||||
|
||||
|
||||
## Переключает режим окна программы полный - обычный экран
|
||||
|
||||
@@ -15,46 +15,46 @@ var logger_page: Node
|
||||
|
||||
|
||||
func create_socket(nm) -> Socket:
|
||||
var addr = REPSettings.UnitProfiles[nm][1]
|
||||
var port = REPSettings.UnitProfiles[nm][2]
|
||||
var broad = REPSettings.UnitProfiles[nm][3]
|
||||
var bind = REPSettings.UnitProfiles[nm][4]
|
||||
var sock: = Socket.new()
|
||||
sock.set_broadcast_enabled(broad)
|
||||
var rc = Error.OK if not bind else sock.bind(port, addr)
|
||||
var errlevel = Log.INFO if rc == Error.OK else Log.ERROR
|
||||
Log.message(errlevel, '%s: сокет:%s:%d привязанный:%s %s' % [nm, addr, port, ['нет', 'да'][int(bind)], error_string(rc)])
|
||||
return sock
|
||||
var addr = REPSettings.UnitProfiles[nm][1]
|
||||
var port = REPSettings.UnitProfiles[nm][2]
|
||||
var broad = REPSettings.UnitProfiles[nm][3]
|
||||
var bind = REPSettings.UnitProfiles[nm][4]
|
||||
var sock: = Socket.new()
|
||||
sock.set_broadcast_enabled(broad)
|
||||
var rc = Error.OK if not bind else sock.bind(port, addr)
|
||||
var errlevel = Log.INFO if rc == Error.OK else Log.ERROR
|
||||
Log.message(errlevel, '%s: сокет:%s:%d привязанный:%s %s' % [nm, addr, port, ['нет', 'да'][int(bind)], error_string(rc)])
|
||||
return sock
|
||||
|
||||
|
||||
func _ready() -> void:
|
||||
Log.info('Сетевой модуль готов')
|
||||
Log.info('Сетевой модуль готов')
|
||||
poll_sockets.append(create_socket('уарэп-яу07-частный'))
|
||||
poll_sockets.append(create_socket('уарэп-яу07-общий'))
|
||||
poll_sockets.append(create_socket('уарэп-капсрпб-пол'))
|
||||
poll_sockets.append(create_socket('уарэп-яу07-общий'))
|
||||
poll_sockets.append(create_socket('уарэп-капсрпб-пол'))
|
||||
|
||||
sock_unicast = poll_sockets[0]
|
||||
|
||||
for unit_name in REPSettings.UnitProfiles:
|
||||
var setting = REPSettings.UnitProfiles[unit_name]
|
||||
var proto = setting[0]
|
||||
if proto in PROTOCOL_TYPES:
|
||||
var unit = PROTOCOL_TYPES[proto].new(unit_name)
|
||||
var unit_key = REPSettings.get_unit_key(unit_name)
|
||||
units[unit_key] = unit
|
||||
unit.connect('line_changed', Callable(logger_page, 'on_line_changed').bind(unit_key))
|
||||
unit.connect('command_fail', Callable(logger_page, 'on_command_fail').bind(unit_key))
|
||||
var setting = REPSettings.UnitProfiles[unit_name]
|
||||
var proto = setting[0]
|
||||
if proto in PROTOCOL_TYPES:
|
||||
var unit = PROTOCOL_TYPES[proto].new(unit_name)
|
||||
var unit_key = REPSettings.get_unit_key(unit_name)
|
||||
units[unit_key] = unit
|
||||
unit.connect('line_changed', Callable(logger_page, 'on_line_changed').bind(unit_key))
|
||||
unit.connect('command_fail', Callable(logger_page, 'on_command_fail').bind(unit_key))
|
||||
|
||||
for key in units: Log.info('%s %s:%d' % [units[key].name, key[0], key[1]])
|
||||
|
||||
|
||||
func poll_receive(sock: Socket) -> bool:
|
||||
while sock.get_available_packet_count() > 0:
|
||||
var data: = sock.get_packet()
|
||||
var addr: = sock.get_packet_ip()
|
||||
var port: = sock.get_packet_port()
|
||||
var addr_port: = [addr, port]
|
||||
if addr_port in units: units[addr_port].parse(data)
|
||||
while sock.get_available_packet_count() > 0:
|
||||
var data: = sock.get_packet()
|
||||
var addr: = sock.get_packet_ip()
|
||||
var port: = sock.get_packet_port()
|
||||
var addr_port: = [addr, port]
|
||||
if addr_port in units: units[addr_port].parse(data)
|
||||
return false
|
||||
|
||||
|
||||
|
||||
@@ -27,10 +27,10 @@ class Threat:
|
||||
var width: float ## Ширина занимаемого диапазона частот, МГц.
|
||||
var id: int ## Идентификатор цели.
|
||||
|
||||
func _init(): Tools.get_members_names(self).any(func(vn): fflags[vn] = false)
|
||||
func _init(): Tools.get_members_names(self).any(func(vn): fflags[vn] = false)
|
||||
func _to_string() -> String: return 'номер:%d пеленг:%0.1f частота:%0.1f МГц' % [id, aoa, freq]
|
||||
|
||||
func set_from_dic(dic_vals: Dictionary):
|
||||
func set_from_dic(dic_vals: Dictionary):
|
||||
var items: = fflags.keys().filter(func(vn): return vn in dic_vals)
|
||||
items.any(func(vn): set(vn, dic_vals[vn]); fflags[vn] = true; return false)
|
||||
|
||||
@@ -43,12 +43,12 @@ var threats = {} ## Список целей. Индекс - <источник
|
||||
|
||||
|
||||
func _ready() -> void:
|
||||
Log.info('Модуль обработки целей готов')
|
||||
#var unit_key = REPSettings.get_unit_key('уарэп-капсрпб-отп')
|
||||
Log.info('Модуль обработки целей готов')
|
||||
var unit_key = REPSettings.get_unit_key('уарэп-капсрпб-отп')
|
||||
var unit = REPNetwork.units[unit_key]
|
||||
var timer_check_lost: = Timer.new()
|
||||
add_child(timer_check_lost)
|
||||
#unit.connect('data_received', Callable(self, 'on_data_capsrpb_received'))
|
||||
#unit.connect('data_received', Callable(self, 'on_data_capsrpb_received'))
|
||||
timer_check_lost.connect('timeout', Callable(self, 'on_timer_check_lost').bind(unit, REPSettings.ThreatParams.time_lost[0]))
|
||||
timer_check_lost.start(REPSettings.ThreatParams.time_lost[0] / 2.0)
|
||||
|
||||
@@ -63,7 +63,7 @@ func on_timer_check_lost(unit, time_lost: int):
|
||||
|
||||
## Приём целей
|
||||
func on_data_capsrpb_received(unit: capsrpb.CapsRpb):
|
||||
if 'mis' not in unit.json_dic:
|
||||
if 'mis' not in unit.json_dic:
|
||||
return
|
||||
var mis = unit.json_dic['mis']
|
||||
for dic_th in mis:
|
||||
|
||||
@@ -11,10 +11,10 @@ class InDev:
|
||||
var freq: int # Предполагаемая частота на которой работает комплекс
|
||||
var ports_data: Dictionary # Словарь состояния портов устройства
|
||||
var tbl_row_id: int # Индекс устройства в таблице выходов
|
||||
var out_dots: Array # Список выходных устройств в порядке, как в таблице и точки матрицы
|
||||
var out_dots: Array # Список выходных устройств в порядке, как в таблице и точки матрицы
|
||||
var connect_devs: Dictionary # Список присоединённых устройств
|
||||
var board: String # Плата в которой находится устройство
|
||||
|
||||
|
||||
func _init(dev_id : int, params : Array, row_id : int):
|
||||
id = dev_id
|
||||
dev_name = String(params[0])
|
||||
@@ -22,16 +22,16 @@ class InDev:
|
||||
delay = float(params[2])
|
||||
offset = float(params[3])
|
||||
tbl_row_id = row_id
|
||||
|
||||
|
||||
|
||||
|
||||
class OutDev extends InDev:
|
||||
var mode: String # Режим работы выхода
|
||||
|
||||
|
||||
func _init(dev_id : int, params : Array, row_id : int):
|
||||
id = dev_id
|
||||
dev_name = String(params[0])
|
||||
connector = String(params[1])
|
||||
delay = float(params[2])
|
||||
offset = float(params[3])
|
||||
tbl_row_id = row_id
|
||||
tbl_row_id = row_id
|
||||
mode = 'Работа'
|
||||
|
||||
@@ -7,8 +7,8 @@ class EmsBoard:
|
||||
var base_addr_isa: int # Базовый адрес ячейки isa
|
||||
var in_tbl: Array
|
||||
var out_tbl: Array
|
||||
|
||||
func _init(id, base_addr, in_table, out_table):
|
||||
|
||||
func _init(id, base_addr, in_table, out_table):
|
||||
id_board = id
|
||||
in_tbl = in_table
|
||||
out_tbl = out_table
|
||||
|
||||
@@ -41,13 +41,13 @@ func _assert_meta(i_col: int, i_row: int, pname: String, node): assert(node.has_
|
||||
|
||||
|
||||
func pin_header(scrl: ScrollContainer, prnt: Control):
|
||||
scrl.remove_child(header)
|
||||
prnt.add_child(header)
|
||||
# TODO: Это значение следует получить из темы
|
||||
var v_separation: = 3.0
|
||||
header.position = scrl.position - Vector2(0, header.size.y + v_separation)
|
||||
scroll = scrl
|
||||
scroll_adj = scrl.position
|
||||
scrl.remove_child(header)
|
||||
prnt.add_child(header)
|
||||
## TODO: Это значение следует получить из темы
|
||||
var v_separation: = 3.0
|
||||
header.position = scrl.position - Vector2(0, header.size.y + v_separation)
|
||||
scroll = scrl
|
||||
scroll_adj = scrl.position
|
||||
|
||||
|
||||
func selector_up():
|
||||
@@ -140,7 +140,7 @@ func get_node_property(i_col: int, i_row: int, pname: String):
|
||||
|
||||
func get_node_key(format: String, i_col: int, i_row: int) -> String:
|
||||
var key: String = format % [i_row, i_col]
|
||||
assert(nodes.has(key), 'ошибка: нет такой ячейки: колонка:%d ряд:%d' % [i_col, i_row])
|
||||
assert(nodes.has(key), 'ошибка: нет такой ячейки - колонка:%d ряд:%d' % [i_col, i_row])
|
||||
return key
|
||||
|
||||
|
||||
@@ -278,30 +278,30 @@ func set_node_user_data(i_col: int, i_row: int, user_data: Object) -> void:
|
||||
|
||||
|
||||
func add_row(row_types: Array) -> void:
|
||||
assert(row_types.size() < MAX_INDEX, 'ошибка: слишком много колонок, больше %d' % (MAX_INDEX + 1))
|
||||
if columns == 1:
|
||||
set_columns(row_types.size())
|
||||
else:
|
||||
assert(columns == row_types.size(), 'ошибка: %s количество колонок установлено ранее - %d, но требуется %d' % [self, columns, row_types.size()])
|
||||
var i_row: int = get_rows_count()
|
||||
assert(i_row < MAX_INDEX, 'ошибка: слишком много рядов, больше %d' % (MAX_INDEX + 1))
|
||||
for i_col in columns:
|
||||
var node = row_types[i_col].instantiate()
|
||||
var head = nodes[HEAD_KEY_FORMAT % [0, i_col]]
|
||||
node.custom_minimum_size.x = head.custom_minimum_size.x
|
||||
node.set_deferred('size.x', head.size.x)
|
||||
var node_key: String = NODE_KEY_FORMAT % [i_row, i_col]
|
||||
node.name = node_key
|
||||
add_child(node)
|
||||
nodes[node_key] = node
|
||||
var conn = Callable(self, '_on_focus_entered').bind(node)
|
||||
assert(row_types.size() < MAX_INDEX, 'ошибка: слишком много колонок, больше %d' % (MAX_INDEX + 1))
|
||||
if columns == 1:
|
||||
set_columns(row_types.size())
|
||||
else:
|
||||
assert(columns == row_types.size(), 'ошибка: %s количество колонок установлено ранее - %d, но требуется %d' % [self, columns, row_types.size()])
|
||||
var i_row: int = get_rows_count()
|
||||
assert(i_row < MAX_INDEX, 'ошибка: слишком много рядов, больше %d' % (MAX_INDEX + 1))
|
||||
for i_col in columns:
|
||||
var node = row_types[i_col].instantiate()
|
||||
var head = nodes[HEAD_KEY_FORMAT % [0, i_col]]
|
||||
node.custom_minimum_size.x = head.custom_minimum_size.x
|
||||
node.set_deferred('size.x', head.size.x)
|
||||
var node_key: String = NODE_KEY_FORMAT % [i_row, i_col]
|
||||
node.name = node_key
|
||||
add_child(node)
|
||||
nodes[node_key] = node
|
||||
var conn = Callable(self, '_on_focus_entered').bind(node)
|
||||
node.connect('focus_entered', conn)
|
||||
set_node_meta(i_col, i_row, 'callable_focus_entered', conn)
|
||||
|
||||
|
||||
func _on_focus_entered(node):
|
||||
var indexes = get_key_indexes(node.name)
|
||||
emit_signal('row_pressed', indexes[1])
|
||||
var indexes = get_key_indexes(node.name)
|
||||
emit_signal('row_pressed', indexes[1])
|
||||
|
||||
|
||||
func set_header(header_types: Array):
|
||||
@@ -353,7 +353,7 @@ func remove_row(i_row: int):
|
||||
if nodes.has(sel_key):
|
||||
var selector = nodes[sel_key]
|
||||
var prnt = selector.get_parent()
|
||||
prnt.remove_child(selector)
|
||||
prnt.remove_child(selector)
|
||||
selector.queue_free()
|
||||
nodes.erase(sel_key)
|
||||
|
||||
@@ -372,8 +372,8 @@ func remove_row(i_row: int):
|
||||
|
||||
if nodes.has(conn_key):
|
||||
conn = nodes[conn_key]
|
||||
node.disconnect('pressed', conn)
|
||||
nodes.erase(conn_key)
|
||||
node.disconnect('pressed', conn)
|
||||
nodes.erase(conn_key)
|
||||
|
||||
remove_child(node)
|
||||
nodes.erase(node_key)
|
||||
@@ -396,11 +396,9 @@ func swap_nodes(nodes_copy, node_key_format, i0, i1) -> void:
|
||||
|
||||
|
||||
func rehash():
|
||||
""" Переназначает ключи в соответствии с размерами таблицы.
|
||||
После вызова swaps содержит массив пар [<прежний ключ>, <текущий ключ>] """
|
||||
var i_node: = [Vector2i()]
|
||||
var i_hdr: = [Vector2i()]
|
||||
var i_slct: = [Vector2i()]
|
||||
var i_node: = [Vector2i()]
|
||||
var i_hdr: = [Vector2i()]
|
||||
var i_slct: = [Vector2i()]
|
||||
var i_conn: = [Vector2i()]
|
||||
var i_data: = [Vector2i()]
|
||||
var nodes_copy = {}
|
||||
@@ -409,21 +407,21 @@ func rehash():
|
||||
var i0 = Vector2(iv[0], iv[1])
|
||||
if HEAD_PREFIX in key:
|
||||
swap_nodes(nodes_copy, HEAD_KEY_FORMAT, i0, i_hdr[0])
|
||||
next_index(i_hdr)
|
||||
next_index(i_hdr)
|
||||
elif NODE_PREFIX in key:
|
||||
swap_nodes(nodes_copy, NODE_KEY_FORMAT, i0, i_node[0])
|
||||
next_index(i_node)
|
||||
elif SLCT_PREFIX in key:
|
||||
swap_nodes(nodes_copy, ROW_SELECTOR_KEY_FORMAT, i0, i_slct[0])
|
||||
next_index(i_slct)
|
||||
swap_nodes(nodes_copy, ROW_SELECTOR_KEY_FORMAT, i0, i_slct[0])
|
||||
next_index(i_slct)
|
||||
elif CONN_PREFIX in key:
|
||||
swap_nodes(nodes_copy, CONNECTED_KEY_FORMAT, i0, i_conn[0])
|
||||
next_index(i_conn)
|
||||
elif DATA_PREFIX in key:
|
||||
swap_nodes(nodes_copy, DATA_KEY_FORMAT, i0, i_data[0])
|
||||
next_index(i_data)
|
||||
nodes.clear()
|
||||
nodes.merge(nodes_copy)
|
||||
nodes.clear()
|
||||
nodes.merge(nodes_copy)
|
||||
|
||||
|
||||
func clear_rows() -> void:
|
||||
@@ -443,7 +441,7 @@ func connect_columns(dest_node: Node, event_name: String, callback: String, clmn
|
||||
var rows_count = get_rows_count()
|
||||
for i_row in rows_count:
|
||||
for i_col in clmns:
|
||||
assert(i_col >= 0 and i_col < columns, 'ошибка: нет колонки %d' % i_col)
|
||||
assert(i_col >= 0 and i_col < columns, 'ошибка: нет такой колонки: %d' % i_col)
|
||||
var node_key: String = NODE_KEY_FORMAT % [i_row, i_col]
|
||||
var conn_key: String = CONNECTED_KEY_FORMAT % [i_row, i_col]
|
||||
var node = nodes[node_key]
|
||||
|
||||
Reference in New Issue
Block a user