Доработка инизиализация вкладок
This commit is contained in:
@@ -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
17
main.gd
@@ -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:
|
||||||
|
|||||||
@@ -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
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user