Доработка инизиализация вкладок

This commit is contained in:
TotMaxim
2025-11-23 14:41:43 +03:00
parent bdb50989f9
commit d5e812581f
3 changed files with 25 additions and 23 deletions

View File

@@ -2,7 +2,7 @@
"default_data": { "default_data": {
"ПРД-Н1": { "ПРД-Н1": {
"temperature_ukp": [20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31], "temperature_ukp": [20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31],
"power_ukp": [100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111], "power_ukp": [1000, 1001, 1002, 1003, 1004, 1005, 1006, 1007, 1008, 1009, 1010, 1011],
"sockets": [false, false, false, false, false], "sockets": [false, false, false, false, false],
"dkm": [false, false, false, false, false, false, false], "dkm": [false, false, false, false, false, false, false],
"dou2": [false, false, false, false, false, false, false], "dou2": [false, false, false, false, false, false, false],
@@ -13,18 +13,18 @@
}, },
"ПРД-В1": { "ПРД-В1": {
"temperature_ukp": [20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31], "temperature_ukp": [20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31],
"power_ukp": [100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111], "power_ukp": [1000, 1001, 1002, 1003, 1004, 1005, 1006, 1007, 1008, 1009, 1010, 1011],
"sockets": [false, false, false, false, false], "sockets": [false, false, false, false, false],
"dkm": [false, false, false, true, false, false, false], "dkm": [false, false, false, false, false, false, false],
"dou2": [false, false, false, false, false, false, false], "dou2": [false, false, false, false, false, false, false],
"dou3": [false, false, false, false, false, false, false], "dou3": [false, false, false, false, false, false, false],
"att2": [false, false, false, false, false, false, false, false], "att2": [false, false, false, false, false, false, false, false],
"att3": [false, false, false, false, false, false, false, false], "att3": [false, false, false, false, false, false, false, false],
"ip": [false, false, false, false, false, false, false, true] "ip": [false, false, false, false, false, false, false, false]
}, },
"ПРД-К1": { "ПРД-К1": {
"temperature_ukp": [20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32], "temperature_ukp": [20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32],
"power_ukp": [100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112], "power_ukp": [1000, 1001, 1002, 1003, 1004, 1005, 1006, 1007, 1008, 1009, 1010, 1011, 1012],
"sockets": [false, false, false, false, false], "sockets": [false, false, false, false, false],
"dkm": [false, false, false, false, false, false, false], "dkm": [false, false, false, false, false, false, false],
"dou2": [false, false, false, false, false, false, false], "dou2": [false, false, false, false, false, false, false],
@@ -35,7 +35,7 @@
}, },
"ПРД-Н2": { "ПРД-Н2": {
"temperature_ukp": [20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31], "temperature_ukp": [20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31],
"power_ukp": [100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111], "power_ukp": [1000, 1001, 1002, 1003, 1004, 1005, 1006, 1007, 1008, 1009, 1010, 1011],
"sockets": [false, false, false, false, false], "sockets": [false, false, false, false, false],
"dkm": [false, false, false, false, false, false, false], "dkm": [false, false, false, false, false, false, false],
"dou2": [false, false, false, false, false, false, false], "dou2": [false, false, false, false, false, false, false],
@@ -46,7 +46,7 @@
}, },
"ПРД-В2": { "ПРД-В2": {
"temperature_ukp": [20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31], "temperature_ukp": [20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31],
"power_ukp": [100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111], "power_ukp": [1000, 1001, 1002, 1003, 1004, 1005, 1006, 1007, 1008, 1009, 1010, 1011],
"sockets": [false, false, false, false, false], "sockets": [false, false, false, false, false],
"dkm": [false, false, false, false, false, false, false], "dkm": [false, false, false, false, false, false, false],
"dou2": [false, false, false, false, false, false, false], "dou2": [false, false, false, false, false, false, false],
@@ -57,7 +57,7 @@
}, },
"ПРД-К2": { "ПРД-К2": {
"temperature_ukp": [20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32], "temperature_ukp": [20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32],
"power_ukp": [100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112], "power_ukp": [1000, 1001, 1002, 1003, 1004, 1005, 1006, 1007, 1008, 1009, 1010, 1011, 1012],
"sockets": [false, false, false, false, false], "sockets": [false, false, false, false, false],
"dkm": [false, false, false, false, false, false, false], "dkm": [false, false, false, false, false, false, false],
"dou2": [false, false, false, false, false, false, false], "dou2": [false, false, false, false, false, false, false],
@@ -68,7 +68,7 @@
}, },
"ПРД-Н3": { "ПРД-Н3": {
"temperature_ukp": [20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31], "temperature_ukp": [20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31],
"power_ukp": [100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111], "power_ukp": [1000, 1001, 1002, 1003, 1004, 1005, 1006, 1007, 1008, 1009, 1010, 1011],
"sockets": [false, false, false, false, false], "sockets": [false, false, false, false, false],
"dkm": [false, false, false, false, false, false, false], "dkm": [false, false, false, false, false, false, false],
"dou2": [false, false, false, false, false, false, false], "dou2": [false, false, false, false, false, false, false],
@@ -79,7 +79,7 @@
}, },
"ПРД-В3": { "ПРД-В3": {
"temperature_ukp": [20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31], "temperature_ukp": [20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31],
"power_ukp": [100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111], "power_ukp": [1000, 1001, 1002, 1003, 1004, 1005, 1006, 1007, 1008, 1009, 1010, 1011],
"sockets": [false, false, false, false, false], "sockets": [false, false, false, false, false],
"dkm": [false, false, false, false, false, false, false], "dkm": [false, false, false, false, false, false, false],
"dou2": [false, false, false, false, false, false, false], "dou2": [false, false, false, false, false, false, false],
@@ -90,7 +90,7 @@
}, },
"ПРД-К3": { "ПРД-К3": {
"temperature_ukp": [20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32], "temperature_ukp": [20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32],
"power_ukp": [100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112], "power_ukp": [1000, 1001, 1002, 1003, 1004, 1005, 1006, 1007, 1008, 1009, 1010, 1011, 1012],
"sockets": [false, false, false, false, false], "sockets": [false, false, false, false, false],
"dkm": [false, false, false, false, false, false, false], "dkm": [false, false, false, false, false, false, false],
"dou2": [false, false, false, false, false, false, false], "dou2": [false, false, false, false, false, false, false],
@@ -101,7 +101,7 @@
}, },
"ПРД-Н4": { "ПРД-Н4": {
"temperature_ukp": [20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31], "temperature_ukp": [20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31],
"power_ukp": [100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111], "power_ukp": [1000, 1001, 1002, 1003, 1004, 1005, 1006, 1007, 1008, 1009, 1010, 1011],
"sockets": [false, false, false, false, false], "sockets": [false, false, false, false, false],
"dkm": [false, false, false, false, false, false, false], "dkm": [false, false, false, false, false, false, false],
"dou2": [false, false, false, false, false, false, false], "dou2": [false, false, false, false, false, false, false],
@@ -112,7 +112,7 @@
}, },
"ПРД-В4": { "ПРД-В4": {
"temperature_ukp": [20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31], "temperature_ukp": [20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31],
"power_ukp": [100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111], "power_ukp": [1000, 1001, 1002, 1003, 1004, 1005, 1006, 1007, 1008, 1009, 1010, 1011],
"sockets": [false, false, false, false, false], "sockets": [false, false, false, false, false],
"dkm": [false, false, false, false, false, false, false], "dkm": [false, false, false, false, false, false, false],
"dou2": [false, false, false, false, false, false, false], "dou2": [false, false, false, false, false, false, false],
@@ -123,7 +123,7 @@
}, },
"ПРД-К4": { "ПРД-К4": {
"temperature_ukp": [20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32], "temperature_ukp": [20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32],
"power_ukp": [100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112], "power_ukp": [1000, 1001, 1002, 1003, 1004, 1005, 1006, 1007, 1008, 1009, 1010, 1011, 1012],
"sockets": [false, false, false, false, false], "sockets": [false, false, false, false, false],
"dkm": [false, false, false, false, false, false, false], "dkm": [false, false, false, false, false, false, false],
"dou2": [false, false, false, false, false, false, false], "dou2": [false, false, false, false, false, false, false],

17
main.gd
View File

@@ -160,7 +160,7 @@ func _exit_tree():
func on_modify_device(toggled: bool, name_device: String) -> void: func on_modify_device(toggled: bool, name_device: String) -> void:
if toggled: if toggled:
udp_broadcast = UDPBroadcast.new(name_device) udp_broadcast = UDPBroadcast.new(name_device)
udp_broadcast.add_timers_to_scene(self) # Исправлено имя метода udp_broadcast.add_timers_to_scene(self)
udp_broadcast.start_broadcast() udp_broadcast.start_broadcast()
dictionary_yau07[name_device] = udp_broadcast dictionary_yau07[name_device] = udp_broadcast
print("Устройство %s активировано" % name_device) print("Устройство %s активировано" % name_device)
@@ -170,34 +170,35 @@ func on_modify_device(toggled: bool, name_device: String) -> void:
dictionary_yau07[name_device].close_udp_unit() dictionary_yau07[name_device].close_udp_unit()
dictionary_yau07.erase(name_device) dictionary_yau07.erase(name_device)
print("Устройство %s деактивировано" % name_device) print("Устройство %s деактивировано" % name_device)
_update_tab_container()
# Обновляем вкладки и переключаемся при активации
_update_tab_container(toggled, name_device)
func _update_tab_container(): func _update_tab_container(just_activated: bool = false, activated_device: String = ""):
var tab_container = $TabContainer var tab_container = $TabContainer
var device_nodes = get_tree().get_nodes_in_group('device-addr') var device_nodes = get_tree().get_nodes_in_group('device-addr')
var has_visible_tabs = false var has_visible_tabs = false
# Проходим по всем вкладкам и обновляем их состояние
for i in range(tab_container.get_tab_count()): for i in range(tab_container.get_tab_count()):
var tab_control = tab_container.get_tab_control(i) var tab_control = tab_container.get_tab_control(i)
var device_name = tab_control.get_meta('yau07', '') var device_name = tab_control.get_meta('yau07', '')
# Ищем соответствующую кнопку устройства
var device_button = null var device_button = null
for device in device_nodes: for device in device_nodes:
if device.get_meta('device') == device_name: if device.get_meta('device') == device_name:
device_button = device device_button = device
break break
# Если нашли кнопку, устанавливаем состояние вкладки
if device_button: if device_button:
var is_enabled = device_button.button_pressed var is_enabled = device_button.button_pressed
tab_container.set_tab_disabled(i, !is_enabled) tab_container.set_tab_disabled(i, !is_enabled)
if is_enabled: if is_enabled:
has_visible_tabs = true has_visible_tabs = true
if just_activated and device_name == activated_device:
tab_container.current_tab = i
# Если все вкладки заблокированы, скрываем TabContainer
tab_container.visible = has_visible_tabs tab_container.visible = has_visible_tabs
@@ -236,6 +237,8 @@ func _update_specific_device_buttons(group_name: String, status: int, target_dev
if button.button_pressed != should_be_pressed: if button.button_pressed != should_be_pressed:
button.set_pressed_no_signal(should_be_pressed) button.set_pressed_no_signal(should_be_pressed)
if should_be_pressed:
button.grab_focus()
func _get_nodes_for_device(device: String, group_name: String) -> Array: func _get_nodes_for_device(device: String, group_name: String) -> Array:

View File

@@ -442,7 +442,6 @@ func _handle_write_isa_command(data: PackedByteArray, address: String, port: int
"""Обработка команды записи ISA портов""" """Обработка команды записи ISA портов"""
var ports = _parse_command_ports(data) var ports = _parse_command_ports(data)
var data_to_write = _parse_command_ports_data(data) var data_to_write = _parse_command_ports_data(data)
print_debug('data_to_write: ', data_to_write)
if ports.size() != data_to_write.size(): if ports.size() != data_to_write.size():
push_warning("Несоответствие размеров портов и данных от %s:%d" % [address, port]) push_warning("Несоответствие размеров портов и данных от %s:%d" % [address, port])
return return
@@ -519,7 +518,7 @@ func _parse_command_ports_data(data: PackedByteArray) -> Array:
if data_offset + i * 2 < data.size(): if data_offset + i * 2 < data.size():
var port_data = data.decode_u16(data_offset + i * 2) var port_data = data.decode_u16(data_offset + i * 2)
ports_data.append(port_data) ports_data.append(port_data)
print("Данные порта %d: 0x%03X" % [i, port_data]) print("Данные порта %d: 0x%02X" % [i, port_data])
return ports_data return ports_data