81 lines
4.6 KiB
GDScript
81 lines
4.6 KiB
GDScript
extends Panel
|
||
|
||
"""
|
||
Режим контроль
|
||
"""
|
||
#TODO: рефактор: заменить подчёркивание на тире
|
||
const PRIBORS_RES = \
|
||
{
|
||
'pribor_prd_k_1': ['res://scenes/pribor-prd-k/pribor-prd-k.tscn', 'Контроль исправности прибора ПРД-К 1'],
|
||
'pribor_prd_k_2': ['res://scenes/pribor-prd-k/pribor-prd-k.tscn', 'Контроль исправности прибора ПРД-К 2'],
|
||
'pribor_prd_k_3': ['res://scenes/pribor-prd-k/pribor-prd-k.tscn', 'Контроль исправности прибора ПРД-К 3'],
|
||
'pribor_prd_k_4': ['res://scenes/pribor-prd-k/pribor-prd-k.tscn', 'Контроль исправности прибора ПРД-К 4'],
|
||
'pribor_prd_n_1': ['res://scenes/pribor-prd-n/pribor-prd-n.tscn', 'Контроль исправности прибора ПРД-Н 1'],
|
||
'pribor_prd_n_2': ['res://scenes/pribor-prd-n/pribor-prd-n.tscn', 'Контроль исправности прибора ПРД-Н 2'],
|
||
'pribor_prd_n_3': ['res://scenes/pribor-prd-n/pribor-prd-n.tscn', 'Контроль исправности прибора ПРД-Н 3'],
|
||
'pribor_prd_n_4': ['res://scenes/pribor-prd-n/pribor-prd-n.tscn', 'Контроль исправности прибора ПРД-Н 4'],
|
||
'pribor_prd_v_1': ['res://scenes/pribor-prd-v/pribor-prd-v.tscn', 'Контроль исправности прибора ПРД-В 1'],
|
||
'pribor_prd_v_2': ['res://scenes/pribor-prd-v/pribor-prd-v.tscn', 'Контроль исправности прибора ПРД-В 2'],
|
||
'pribor_prd_v_3': ['res://scenes/pribor-prd-v/pribor-prd-v.tscn', 'Контроль исправности прибора ПРД-В 3'],
|
||
'pribor_prd_v_4': ['res://scenes/pribor-prd-v/pribor-prd-v.tscn', 'Контроль исправности прибора ПРД-В 4'],
|
||
'pribor_rtr': ['res://scenes/pribor-afsp/pribor-bpo.tscn', 'Контроль исправности прибора РТР'],
|
||
'pribor_afsp_1': ['res://scenes/pribor-afsp/pribor-afsp-1.tscn', 'Контроль исправности прибора АФСП 1'],
|
||
'pribor_afsp_2': ['res://scenes/pribor-afsp/pribor-afsp-2.tscn', 'Контроль исправности прибора АФСП 2'],
|
||
'pribor_uf': ['res://scenes/pribor-uf/pribor-uf.tscn', 'Контроль исправности прибора УФ'],
|
||
'pribor_uyep': ['res://scenes/pribor-uyep/pribor-uyep.tscn', 'Контроль исправности устройства У-ЭП'],
|
||
}
|
||
|
||
|
||
func on_line_changed(u, conn_node, _pribor_meta): conn_node.set_val(u.online)
|
||
|
||
|
||
func _ready():
|
||
var group = ButtonGroup.new()
|
||
for k in PRIBORS_RES:
|
||
var pribor_node = get_node(k)
|
||
var pribor_path = PRIBORS_RES[k][0]
|
||
var header_text = PRIBORS_RES[k][1]
|
||
pribor_node.set_button_group(group)
|
||
pribor_node.connect('button_down', Callable(self, 'on_pribor_press').bind(pribor_path, header_text, pribor_node))
|
||
var conn_node = pribor_node.get_node('connect_pribor')
|
||
var pribor_meta = pribor_node.get_meta('unit_name', [])
|
||
var pribor_proc = pribor_node.get_meta('online_proc', '')
|
||
if pribor_proc == '':
|
||
continue
|
||
if pribor_meta.size():
|
||
for i in pribor_meta.size():
|
||
var unit_pribor = network.get_unit_instance(pribor_meta[i])
|
||
unit_pribor.connect('line_changed', Callable(self, pribor_proc).bind(conn_node, pribor_meta))
|
||
|
||
|
||
func online_change_arr(_u, conn_node, pribor_meta):
|
||
var state_online = true
|
||
for i in pribor_meta.size():
|
||
var unit_pribor = network.get_unit_instance(pribor_meta[i])
|
||
if not unit_pribor.online:
|
||
state_online = false
|
||
break
|
||
conn_node.set_val(state_online)
|
||
|
||
|
||
func on_pribor_press(pribor_path, header_text, pribor_node):
|
||
var items = get_tree().get_nodes_in_group('pribor_items')
|
||
for item in items:
|
||
remove_child(item)
|
||
item.queue_free()
|
||
var pribor_obj = load(pribor_path)
|
||
if not pribor_obj:
|
||
push_error('не загружено: \"%s\" (%s)' % [pribor_path, header_text])
|
||
return
|
||
var pribor = pribor_obj.instantiate()
|
||
if not pribor:
|
||
push_error('экземпляр не создан: \"%s\" (%s)' % [pribor_path, header_text])
|
||
return
|
||
$lbl_header.text = header_text
|
||
var meta_list = pribor_node.get_meta_list()
|
||
if meta_list.find('unit_name') > -1:
|
||
var unit_name = pribor_node.get_meta('unit_name')
|
||
pribor.set_meta('unit_name', unit_name)
|
||
pribor.add_to_group('pribor_items')
|
||
add_child(pribor)
|