From 45c833b6f3dfb1c226d44c4e46c86feec3f27834 Mon Sep 17 00:00:00 2001 From: Maxim Date: Thu, 12 Dec 2024 16:35:56 +0300 Subject: [PATCH] Add litera 2 --- PRD.gd | 153 +++++++++++++++++++++++++++++++++---------------- PRD_MP550.tscn | 70 ++++++++++++++++++---- constants.gd | 74 +++++++++++++----------- project.godot | 2 +- table/table.gd | 4 +- 5 files changed, 205 insertions(+), 98 deletions(-) diff --git a/PRD.gd b/PRD.gd index f31b6f5..324f6af 100644 --- a/PRD.gd +++ b/PRD.gd @@ -3,15 +3,16 @@ extends Node2D var unit = Yau07.YaU07.new('ЯУ07') var soc_unicast: Socket var soc_brodcast: Socket -var address: String = '10.1.1.11' +var address: String = Constants.ADDRESSES[0][1] +var port: int = Constants.ADDRESSES[0][2] +var flag_mode = Constants.ADDRESSES[0][3] var ports_wr: Dictionary # Словарь с портами для записи -var port: int var broadcast_packet: PackedByteArray var node_select1: Node var timeout: float = Yau07.ONLINE_TIMEOUT var last_update_time: float = 0.0 var flag_yau_control: bool - +var CONTROL_TABLE: Array ## Класс для отправки данных в сокет class Socket extends PacketPeerUDP: @@ -28,16 +29,16 @@ func poll_receive(sock: Socket) -> bool: ## Приёмник var port_receive = sock.get_packet_port() if (address == addr_receive) and (port == port_receive): - $control_dev/control_dev.get_node2(0, 0).text = 'ЯУ-07Б НА СВЯЗИ' - $control_dev/control_dev.get_node2(0, 0).modulate = Constants.GREEN + $control_dev/control_tbl.get_node2(0, 0).text = 'ЯУ-07Б НА СВЯЗИ' + $control_dev/control_tbl.get_node2(0, 0).modulate = Constants.GREEN last_update_time = 0.0 unit.parse(broadcast_packet) else: if sock.get_available_packet_count(): last_update_time = 0.0 else: - $control_dev/control_dev.get_node2(0, 0).text = 'НЕТ СВЯЗИ С ЯУ-07Б' - $control_dev/control_dev.get_node2(0, 0).modulate = Constants.RED + $control_dev/control_tbl.get_node2(0, 0).text = 'НЕТ СВЯЗИ С ЯУ-07Б' + $control_dev/control_tbl.get_node2(0, 0).modulate = Constants.RED return false @@ -54,14 +55,16 @@ func _ready() -> void: # Заполнение адресов for i_addr in Constants.ADDRESSES.size(): get_select_device.add_item(Constants.ADDRESSES[i_addr][0]) - get_select_device.set_item_metadata(i_addr, Constants.ADDRESSES[i_addr].slice(1,3)) + get_select_device.set_item_metadata(i_addr, Constants.ADDRESSES[i_addr].slice(1,4)) get_select_device.connect('item_selected', Callable(self, 'on_btn_select')) node_select_device.get_node2(0,0).text = 'НАЗВАНИЕ ПРИБОРА' node_select_device.set_columns_min_size([200, 100]) # Контроль - var node_control_device = $control_dev/control_dev - draw_tabl(node_control_device, Constants.CONTROL_TABLE, Constants.CONTROL_TABLE.size()) + var node_control_device = $control_dev/control_tbl + for i in Constants.CONTROL_DEVICE.size(): + CONTROL_TABLE.append([Constants.TableNode]) + draw_tabl(node_control_device, CONTROL_TABLE, CONTROL_TABLE.size()) for i in Constants.CONTROL_DEVICE.size(): node_control_device.get_node2(0, i).text = Constants.CONTROL_DEVICE[i] node_control_device.set_columns_min_size([300]) @@ -92,7 +95,6 @@ func draw_tabl(tbl, row: Array, count_row: int): func _process(delta: float) -> void: last_update_time += delta poll_receive(soc_brodcast) - match unit.process(delta): Error.OK: soc_unicast.send_to(address, port, unit.tx_data.slice(0, unit.tx_len)) Error.FAILED: print('Ошибка отправки данных') @@ -100,18 +102,17 @@ func _process(delta: float) -> void: func data_received(_unit): var data_from_yau_07 = unit.status - var status_board = data_from_yau_07.decode_u8(0) - var EMS_G: int = data_from_yau_07.decode_u16(1) # Данные СИ от ЭМС-Г на выходе - var dry_contact: int = data_from_yau_07.decode_u16(27) # Контроль сухих контактов (УГ) - var DKM: int = data_from_yau_07.decode_u16(29) # ДКМ от УГ - var power_ukp_1: int = data_from_yau_07.decode_u16(31) # Мощность с широковещания от УКП №1 - var temperature_ukp_1: int = data_from_yau_07.decode_u16(47) # Температура с широковещания от УКП №1 - var power_ukp_2: int = data_from_yau_07.decode_u16(63) - var temperature_ukp_2: int = data_from_yau_07.decode_u16(79) + var status_board = data_from_yau_07.decode_u8(Constants.DataIndices.STATUS_BOARD) + var in_blank: int = data_from_yau_07.decode_u16(Constants.DataIndices.IN_BLANK_PRD) + var in_imp: int = data_from_yau_07.decode_u16(Constants.DataIndices.IN_IMPULS_PRD) + var out_blank: int = data_from_yau_07.decode_u16(Constants.DataIndices.OUT_BLANK_PRD) + var out_imp: int = data_from_yau_07.decode_u16(Constants.DataIndices.OUT_IMPULS_PRD) + var dry_contact: int = data_from_yau_07.decode_u16(Constants.DataIndices.DRY_CONTACT) # Контроль сухих контактов (УГ) + var DKM: int = data_from_yau_07.decode_u16(Constants.DataIndices.DKM) # ДКМ от УГ + ## УГ node_select1.set_node_text(2, 0, '%d' % dry_contact) - - var node_control_device = $control_dev/control_dev + var node_control_device = $control_dev/control_tbl for i in 4: var node_board = node_control_device.get_node2(0, i+2) var j = int(status_board & (1 << i) == 0 and flag_yau_control) @@ -124,54 +125,105 @@ func data_received(_unit): node_power_supply.text = Constants.CONTROL_POWER_SUPPLY[i][j] node_power_supply.modulate = [Constants.GREEN, Constants.RED][j] - # EMS G - var in_blank: int = data_from_yau_07.decode_u32(1) - var in_imp: int = data_from_yau_07.decode_u32(5) - - var EMSG = [['Вход Х3:23', 'Вход Х3:23'],['Вход Х3:24', 'Вход Х3:24']] - for i in 2: - var node_ems_g = node_control_device.get_node2(0, i+ 14) - #var ems = data_from_yau_07.decode_u64() - var j = int(EMS_G & (1 << i) == 0 and flag_yau_control) - node_ems_g.text = EMSG[i][j] - node_ems_g.modulate = [Constants.GREEN, Constants.RED][j] - set_frame(Constants.Frame.VARIABLE) + ## EMS G + var CONTROL_FRAME = [$control_dev/SZI_x, $control_dev/SZI_x2, $control_dev/SZI_x3, $control_dev/SZI_x4, $control_dev/SZI_x5] + for i in 5: + var node_ems_g = node_control_device.get_node2(0, i + 14) + var j: int = 0 + var frame = Constants.Frame.WORK + + var in_bit_blank_UF = 1 if Constants.MODE.PRD_H == flag_mode else 3 if Constants.MODE.PRD_K == flag_mode else 6 + var in_bit_blank_FS = 9 if Constants.MODE.PRD_H == flag_mode else 11 if Constants.MODE.PRD_K == flag_mode else 13 + + var in_bit_impuls_UF = 1 if Constants.MODE.PRD_H == flag_mode else 3 if Constants.MODE.PRD_K == flag_mode else 6 + var in_bit_impuls_FS = 9 if Constants.MODE.PRD_H == flag_mode else 11 if Constants.MODE.PRD_K == flag_mode else 13 + ### + var out_bit_blank_UF = 1 if Constants.MODE.PRD_H == flag_mode else 1 if Constants.MODE.PRD_K == flag_mode else 0 + var out_bit_blank_MODUL = 4 if Constants.MODE.PRD_H == flag_mode else 4 if Constants.MODE.PRD_K == flag_mode else 4 + var out_bit_blank_FGOZ = 9 if Constants.MODE.PRD_H == flag_mode else 8 if Constants.MODE.PRD_K == flag_mode else 8 + + var out_bit_impuls_UF = 1 if Constants.MODE.PRD_H == flag_mode else 1 if Constants.MODE.PRD_K == flag_mode else 0 + var out_bit_impuls_MODUL = 4 if Constants.MODE.PRD_H == flag_mode else 4 if Constants.MODE.PRD_K == flag_mode else 4 + var out_bit_impuls_FGOZ = 9 if Constants.MODE.PRD_H == flag_mode else 8 if Constants.MODE.PRD_K == flag_mode else 8 + + if (in_blank & (1 << in_bit_blank_UF) != 0) and flag_yau_control: + j = 1 if i == 0 else 0 + frame = Constants.Frame.CONSTANT if i == 0 else Constants.Frame.WORK + elif (in_imp & (1 << in_bit_impuls_UF) != 0) and flag_yau_control: + j = 1 if i == 0 else 0 + frame = Constants.Frame.VARIABLE if i == 0 else Constants.Frame.WORK + if (in_blank & (1 << in_bit_blank_FS) != 0) and flag_yau_control: + j = 1 if i == 1 else 0 + frame = Constants.Frame.CONSTANT if i == 1 else Constants.Frame.WORK + elif (in_imp & (1 << in_bit_impuls_FS) != 0) and flag_yau_control: + j = 1 if i == 1 else 0 + frame = Constants.Frame.VARIABLE if i == 1 else Constants.Frame.WORK + if (out_blank & (1 << out_bit_blank_UF) != 0) and flag_yau_control: + j = 1 if i == 2 else 0 + frame = Constants.Frame.CONSTANT if i == 2 else Constants.Frame.WORK + elif (out_imp & (1 << out_bit_impuls_UF) != 0) and flag_yau_control: + j = 1 if i == 2 else 0 + frame = Constants.Frame.VARIABLE if i == 2 else Constants.Frame.WORK + if (out_blank & (1 << out_bit_blank_MODUL) != 0) and flag_yau_control: + j = 1 if i == 3 else 0 + frame = Constants.Frame.CONSTANT if i == 3 else Constants.Frame.WORK + elif (out_imp & (1 << out_bit_impuls_MODUL) != 0) and flag_yau_control: + j = 1 if i == 3 else 0 + frame = Constants.Frame.VARIABLE if i == 3 else Constants.Frame.WORK + if (out_blank & (1 << out_bit_blank_FGOZ) != 0) and flag_yau_control: + j = 1 if i == 4 else 0 + frame = Constants.Frame.CONSTANT if i == 4 else Constants.Frame.WORK + elif (out_imp & (1 << out_bit_impuls_FGOZ) != 0) and flag_yau_control: + j = 1 if i == 4 else 0 + frame = Constants.Frame.VARIABLE if i == 4 else Constants.Frame.WORK + + node_ems_g.text = Constants.EMS_G[i][j] + node_ems_g.modulate = [Constants.RED, Constants.GREEN][j] + set_frame(frame, CONTROL_FRAME[i]) node_select1.set_node_text(3, 0, '%d' % DKM) - - for i in range(8): - power_ukp_1 += 2 * i + + ## УКП + for i in range(8): ## Мощность от УКП_1 + var power_ukp_1 = data_from_yau_07.decode_u16(Constants.DataIndices.POWER_UKP_1 + 2 * i) node_select1.set_node_text(0, i, '%d' % power_ukp_1) - for i in range(8): - temperature_ukp_1 += 2 * i + for i in range(8): ## Температура от УКП_1 + var temperature_ukp_1 = data_from_yau_07.decode_u16(Constants.DataIndices.TEMPERATURE_UKP_1 + 2 * i) var TMP = Constants.CONST_MIN_TEMP + (Constants.MAXIMUM_CODE_ADC - temperature_ukp_1) * Constants.TEMP node_select1.set_node_text(1, i, '%d' % TMP) - for i in range(8): - power_ukp_2 += 2 * i - node_select1.set_node_text(0, i+8, '%d' % power_ukp_2) + for i in range(8): ## Мощность от УКП_2 + var power_ukp_2 = data_from_yau_07.decode_u16(Constants.DataIndices.POWER_UKP_2 + 2 * i) + node_select1.set_node_text(0, i + 8, '%d' % power_ukp_2) - for i in range(8): + for i in range(8): ## Температура от УКП_2 if len(data_from_yau_07) > 79 + 2 * i: - temperature_ukp_2 += 2 * i + var temperature_ukp_2 = data_from_yau_07.decode_u16(Constants.DataIndices.TEMPERATURE_UKP_2 + 2 * i) var TMP = Constants.CONST_MIN_TEMP + (Constants.MAXIMUM_CODE_ADC - temperature_ukp_2) * Constants.TEMP node_select1.set_node_text(1, i+8, '%d' % TMP) - - for i in range(15): - EMS_G += 2 * i - node_select1.set_node_text(3, i+1, '%d' % EMS_G) -### -func set_frame(val: int): $control_dev/sprite.set_frame(val) -### +func set_frame(val: int, node: Node): node.set_frame(val) + + +#func dec2bin(decimal_value, number_bit): + #var binary_string = '' + #var count = number_bit + #while(count >= 0): + #var temp: int = decimal_value >> count + #binary_string += '%d' % (temp & 1) + #count -= 1 + #return binary_string func on_line_changed(_unit) -> void: if unit.online: flag_yau_control = true else: + for i in 15: + var node_board = $control_dev/control_tbl.get_node2(0, i+1) + node_board.modulate = Constants.RED flag_yau_control = false @@ -196,6 +248,7 @@ func on_btn_select(intem_from_sector): var meta = get_select_device.get_item_metadata(intem_from_sector) address = meta[0] port = meta[1] + flag_mode = meta[2] func fill_item(node, i_column: int, i_row: int, arr: Dictionary, select: int = 0): diff --git a/PRD_MP550.tscn b/PRD_MP550.tscn index 202ebf1..c39b227 100644 --- a/PRD_MP550.tscn +++ b/PRD_MP550.tscn @@ -91,37 +91,52 @@ text = "КОНТРОЛЬ" offset_left = 118.0 offset_top = 53.0 offset_right = 465.0 -offset_bottom = 527.0 +offset_bottom = 609.0 color = Color(0.390334, 0.227948, 0.288326, 1) -metadata/_edit_lock_ = true [node name="control_dev" type="ScrollContainer" parent="."] offset_left = 142.0 offset_top = 63.0 offset_right = 477.0 -offset_bottom = 527.0 +offset_bottom = 647.0 metadata/_edit_lock_ = true -[node name="control_dev" type="GridContainer" parent="control_dev"] +[node name="control_tbl" type="GridContainer" parent="control_dev"] layout_mode = 2 script = ExtResource("2_vmbyo") metadata/_edit_lock_ = true -[node name="sprite" type="AnimatedSprite2D" parent="control_dev"] -position = Vector2(215, 404) +[node name="SZI_x" type="AnimatedSprite2D" parent="control_dev"] +position = Vector2(284, 404) sprite_frames = SubResource("SpriteFrames_vex4t") metadata/_edit_lock_ = true -[node name="sprite2" type="AnimatedSprite2D" parent="control_dev"] -position = Vector2(214, 432) +[node name="SZI_x2" type="AnimatedSprite2D" parent="control_dev"] +position = Vector2(284, 432) +sprite_frames = SubResource("SpriteFrames_vex4t") +metadata/_edit_lock_ = true + +[node name="SZI_x3" type="AnimatedSprite2D" parent="control_dev"] +position = Vector2(284, 460) +sprite_frames = SubResource("SpriteFrames_vex4t") +metadata/_edit_lock_ = true + +[node name="SZI_x4" type="AnimatedSprite2D" parent="control_dev"] +position = Vector2(284, 488) +sprite_frames = SubResource("SpriteFrames_vex4t") +metadata/_edit_lock_ = true + +[node name="SZI_x5" type="AnimatedSprite2D" parent="control_dev"] +position = Vector2(284, 517) sprite_frames = SubResource("SpriteFrames_vex4t") metadata/_edit_lock_ = true [node name="scroll1" type="ScrollContainer" parent="."] -offset_left = 478.0 -offset_top = 65.0 -offset_right = 841.0 -offset_bottom = 649.0 +offset_left = 985.0 +offset_top = 63.0 +offset_right = 1348.0 +offset_bottom = 647.0 +metadata/_edit_lock_ = true [node name="table1" type="GridContainer" parent="scroll1"] layout_mode = 2 @@ -156,4 +171,35 @@ scale = Vector2(21.8765, 21.6782) texture = SubResource("GradientTexture2D_0pk2o") metadata/_edit_lock_ = true +[node name="LABEL" type="Label" parent="."] +offset_left = 594.0 +offset_top = 53.0 +offset_right = 876.0 +offset_bottom = 76.0 +text = "ЛИТЕРА 2! ПРД-Н!" + +[node name="Zapret" type="Button" parent="."] +offset_left = 594.0 +offset_top = 81.0 +offset_right = 712.0 +offset_bottom = 124.0 +text = " Запрет СИ2" + +[node name="Label_luch" type="Label" parent="."] +offset_left = 594.0 +offset_top = 136.0 +offset_right = 876.0 +offset_bottom = 159.0 +text = "Номер и направление луча" + +[node name="LUCH" type="OptionButton" parent="."] +offset_left = 594.0 +offset_top = 168.0 +offset_right = 712.0 +offset_bottom = 199.0 +item_count = 2 +popup/item_0/text = "Что-то" +popup/item_1/text = "Что-то" +popup/item_1/id = 1 + [connection signal="toggled" from="control_button" to="." method="_on_control_button"] diff --git a/constants.gd b/constants.gd index 10154aa..cc17c0d 100644 --- a/constants.gd +++ b/constants.gd @@ -2,8 +2,8 @@ extends Node const UNICAST_PORT: int = 50003 const UNICAST_ADDRESS: String = '10.1.1.3' const BROADCAST_PORT: int = 50000 -const DEFAULT_ADDRESS: String = '10.1.1.43' -const DEFAULT_PORT: String = '50043' +const DEFAULT_ADDRESS: String = '10.1.1.11' +const DEFAULT_PORT: String = '50011' const BASE_ADDR: int = 0x100 const RED = Color(1, 0, 0, 1) const GREEN = Color(0, 1, 0, 1) @@ -14,24 +14,7 @@ const TEMP: float = 115.0 / (MAXIMUM_CODE_ADC - MINIMUM_CODE_AD) const TableNode = preload("res://table/node.tscn") const TableList = preload("res://table/node_list.tscn") const SELECT_DEVICE: Array = [[TableNode, TableList]] -const CONTROL_TABLE: Array = [ - [TableNode], - [TableNode], - [TableNode], - [TableNode], - [TableNode], - [TableNode], - [TableNode], - [TableNode], - [TableNode], - [TableNode], - [TableNode], - [TableNode], - [TableNode], - [TableNode], - [TableNode], - [TableNode]] -const CONTROL_DEVICE: Array = ['ЯЧЕЙКА ЯУ-07Б', 'ФС', 'ЯЧЕЙКА ЭМС-Г', 'ЯЧЕЙКА УГ', 'ЯЧЕЙКА УКП №1', 'ЯЧЕЙКА УКП №2', 'ИП МАА №1', 'ИП МАА №2', 'ИП9-50 №1', 'ИП9-50 №2', 'ИП12-50 №1', '-', '-','ИП5-25', 'Вход Х3:23', 'Вход Х3:24'] +const CONTROL_DEVICE: Array = ['ЯЧЕЙКА ЯУ-07Б', 'ФС', 'ЯЧЕЙКА ЭМС-Г', 'ЯЧЕЙКА УГ', 'ЯЧЕЙКА УКП №1', 'ЯЧЕЙКА УКП №2', 'ИП МАА №1', 'ИП МАА №2', 'ИП9-50 №1', 'ИП9-50 №2', 'ИП12-50 №1', '-', '-','ИП5-25', 'Вход Х3:2(СЗИ2)', 'Вход Х3:19(СИ2)', 'Выход Х3:11(СИ2)', 'Выход Х3:14(СИ2)', 'Выход x3:10(ФГОЗ)'] const ROWS_REGS_DATA: Array = [ [TableNode, TableNode, TableNode, TableNode], [TableNode, TableNode, TableNode, TableNode], @@ -50,18 +33,18 @@ const ROWS_REGS_DATA: Array = [ [TableNode, TableNode, TableNode, TableNode], [TableNode, TableNode, TableNode, TableNode]] const ADDRESSES: Array = [ - ['ПРД-Н1', '10.1.1.11', 50011], - ['ПРД-Н2', '10.1.1.21', 50021], - ['ПРД-Н3', '10.1.1.31', 50031], - ['ПРД-Н4', '10.1.1.41', 50041], - ['ПРД-В1', '10.1.1.12', 50012], - ['ПРД-В2', '10.1.1.22', 50022], - ['ПРД-В3', '10.1.1.32', 50032], - ['ПРД-В4', '10.1.1.42', 50042], - ['ПРД-К1', '10.1.1.13', 50013], - ['ПРД-К2', '10.1.1.23', 50023], - ['ПРД-К3', '10.1.1.33', 50033], - ['ПРД-К4', '10.1.1.43', 50043]] + ['ПРД-Н1', '10.1.1.11', 50011, MODE.PRD_H], + ['ПРД-Н2', '10.1.1.21', 50021, MODE.PRD_H], + ['ПРД-Н3', '10.1.1.31', 50031, MODE.PRD_H], + ['ПРД-Н4', '10.1.1.41', 50041, MODE.PRD_H], + ['ПРД-В1', '10.1.1.12', 50012, MODE.PRD_B], + ['ПРД-В2', '10.1.1.22', 50022, MODE.PRD_B], + ['ПРД-В3', '10.1.1.32', 50032, MODE.PRD_B], + ['ПРД-В4', '10.1.1.42', 50042, MODE.PRD_B], + ['ПРД-К1', '10.1.1.13', 50013, MODE.PRD_K], + ['ПРД-К2', '10.1.1.23', 50023, MODE.PRD_K], + ['ПРД-К3', '10.1.1.33', 50033, MODE.PRD_K], + ['ПРД-К4', '10.1.1.43', 50043, MODE.PRD_K]] var CONTROL_BOARD: Array = [ ['ЯЧЕЙКА ЭМС-Г НА СВЯЗИ', 'ЯЧЕЙКИ ЭМС-Г НЕТ НА СВЯЗИ'], ['ЯЧЕЙКА УГ НА СВЯЗИ','ЯЧЕЙКИ УГ НЕТ НА СВЯЗИ'], @@ -76,8 +59,33 @@ var CONTROL_POWER_SUPPLY: Array = [ ['ИП9-50 №3', 'ОШИБКА. КОНТРОЛЬ ИП9-50 №3'], ['ИП12-50 №2', 'ОШИБКА. КОНТРОЛЬ ИП12-50 №2'], ['ИП5-25', 'ОШИБКА. КОНТРОЛЬ ИП5-25']] +const EMS_G = [ + ['Нет Входа Х3:2(СИ2 от УФ)', 'Вход Х3:2(СИ2 от УФ)'], + ['Нет Входа Х3:19(СИ2 от ФС)', 'Вход Х3:19(СИ2 от ФС)'], + ['Нет Выхода Х3:2(СИ2 в УФ)', 'Выход Х3:2(СИ2 в УФ)'], + ['Нет Входа Х3:5(Модуляция)', 'Выход Х3:5(Модуляция)'], + ['Нет Входа Х3:10(ФГОЗ)', 'Выход Х3:10(ФГОЗ)']] +enum MODE { + PRD_K, + PRD_B, + PRD_H, +} enum Frame { WORK, ## В работе CONSTANT, ## Постоянный сигнал - VARIABLE ## Переменный сигнал + VARIABLE, ## Переменный сигнал + NULL, } +enum DataIndices { + STATUS_BOARD = 0, + IN_BLANK_PRD = 1, + IN_IMPULS_PRD = 7, + OUT_BLANK_PRD = 13, + OUT_IMPULS_PRD = 19, + DRY_CONTACT = 27, + DKM = 29, + POWER_UKP_1 = 31, + TEMPERATURE_UKP_1 = 47, + POWER_UKP_2 = 63, + TEMPERATURE_UKP_2 = 79, +} diff --git a/project.godot b/project.godot index dd96155..c0f9209 100644 --- a/project.godot +++ b/project.godot @@ -12,7 +12,7 @@ config_version=5 config/name="ПРД_для_МП-550" run/main_scene="res://PRD_MP550.tscn" -config/features=PackedStringArray("4.2", "GL Compatibility") +config/features=PackedStringArray("4.3", "GL Compatibility") config/icon="res://icon.svg" [autoload] diff --git a/table/table.gd b/table/table.gd index 49ad6c1..a2d0ff9 100644 --- a/table/table.gd +++ b/table/table.gd @@ -518,8 +518,8 @@ func connect_columns(dest_node: Node, event_name: String, callback: String, clmn assert(i_col >= 0 and i_col < columns, 'ошибка: нет такой колонки: %d' % i_col) var node = get_node2(i_col, i_row) if node.has_meta(META_CALLABLE): - var conn = node.get_meta(META_CALLABLE) - node.disconnect(event_name, conn) + var conne = node.get_meta(META_CALLABLE) + node.disconnect(event_name, conne) var conn = Callable(dest_node, callback).bind([node] + user_data) var rc = node.connect(event_name, conn) if rc == Error.OK: