# Conflicts: # scenes/frame-ecm-list/scroll-ecm-list.gd # scenes/настройки/настройки.gd # scenes/работа/работа.gd # scenes/эмс2/эмс2.tscn
117 lines
4.4 KiB
GDScript
117 lines
4.4 KiB
GDScript
@tool
|
||
class_name pribor_uf extends 'res://scenes/контроль/прибор.gd'
|
||
|
||
enum STATE_VAL {NONE = 0, GOOD = 1, ERROR = 2}
|
||
const DEV_LIST: Array = ['00:1f.6', '07:00.0', '08:00.0', '0b:00.0']
|
||
const USB_TRACKERBALL: String = '13ba:0018'
|
||
const REVFF: String = '(rev ff)'
|
||
var uf_control: Object
|
||
var ctrl_pos = 100
|
||
|
||
|
||
func _ready() -> void:
|
||
if Engine.is_editor_hint(): return
|
||
#control_vk()
|
||
uf_control = get_parent().uf_control
|
||
signaller.connect('update_uf_serviceability', on_update_uf_serviceability)
|
||
var uf_status = uf_control.get_current_status()
|
||
control_ems(uf_status)
|
||
find_labels(self)
|
||
|
||
|
||
func on_update_uf_serviceability(_state: int):
|
||
control_ems(uf_control.get_current_status())
|
||
|
||
|
||
#func control_vk() -> void:
|
||
#var out_usb_str = ''
|
||
#var out_pci_str = ''
|
||
#var out_usb = []
|
||
#var out_pci = []
|
||
#
|
||
#OS.execute('lsusb', [], out_usb) # TODO: Не переносимое, платформозависимое
|
||
#for element in out_usb:
|
||
#out_usb_str += element
|
||
#
|
||
#OS.execute('lspci', [], out_pci) # TODO: Не переносимое, платформозависимое
|
||
#for element in out_pci:
|
||
#out_pci_str += element
|
||
#
|
||
#out_usb_str = out_usb_str.split('\n')
|
||
#out_pci_str = out_pci_str.split('\n')
|
||
#
|
||
#var i: int = 0
|
||
#
|
||
#for string in out_usb_str:
|
||
#if USB_TRACKERBALL in string:
|
||
#i += 1
|
||
#break
|
||
#for string in out_pci_str:
|
||
#for item in DEV_LIST:
|
||
#if item in string:
|
||
#i += 1
|
||
#if REVFF in string:
|
||
#i -= 1
|
||
#break
|
||
#
|
||
#if i == (DEV_LIST.size() + 1):
|
||
#$ref_uf/ref_bu1/ref_A8_BU.state = STATE_VAL.GOOD
|
||
#else:
|
||
#$ref_uf/ref_bu1/ref_A8_BU.state = STATE_VAL.ERROR
|
||
|
||
|
||
func control_ems(status: Dictionary) -> void:
|
||
if status['УФ-онлайн']:
|
||
$ref_uf/ref_kassetav13/ref_A7_YAU07.state = STATE_VAL.GOOD
|
||
$ref_uf/ref_kassetav13/ref_A3_IP5B.state = STATE_VAL.GOOD
|
||
$ref_uf/ref_bu1/ref_A8_BU.state = STATE_VAL.GOOD
|
||
$ref_uf/ref_kassetav13/ref_A9_ESW.state = STATE_VAL.GOOD
|
||
$ref_uf/ref_kassetav13/ref_A4_KEMS.state = STATE_VAL.GOOD if status['КЭМС-Б1'] else STATE_VAL.ERROR
|
||
$ref_uf/ref_kassetav13/ref_A5_EMS.state = STATE_VAL.GOOD if status['ЭМС-Б1'] else STATE_VAL.ERROR
|
||
$ref_uf/ref_kassetav13/ref_A6_EMS.state = STATE_VAL.GOOD if status['ЭМС-Б2'] else STATE_VAL.ERROR
|
||
$ref_uf/ref_kassetav13/ref_A12_IP27B.state = STATE_VAL.GOOD if status['ИП220-27Б'] else STATE_VAL.ERROR
|
||
else:
|
||
$ref_uf/ref_kassetav13/ref_A7_YAU07.state = STATE_VAL.ERROR
|
||
$ref_uf/ref_kassetav13/ref_A3_IP5B.state = STATE_VAL.NONE
|
||
$ref_uf/ref_bu1/ref_A8_BU.state = STATE_VAL.NONE
|
||
$ref_uf/ref_kassetav13/ref_A9_ESW.state = STATE_VAL.NONE
|
||
$ref_uf/ref_kassetav13/ref_A4_KEMS.state = STATE_VAL.NONE
|
||
$ref_uf/ref_kassetav13/ref_A5_EMS.state = STATE_VAL.NONE
|
||
$ref_uf/ref_kassetav13/ref_A6_EMS.state = STATE_VAL.NONE
|
||
$ref_uf/ref_kassetav13/ref_A12_IP27B.state = STATE_VAL.NONE
|
||
status_uf(status)
|
||
|
||
|
||
func status_uf(status_uf_dic: Dictionary) -> void:
|
||
var is_ok: bool = true
|
||
if not status_uf_dic['УФ-онлайн']:
|
||
$lbl_header2.text = 'Ожидание связи с ЯУ-07Б'
|
||
$lbl_header2.modulate = Color.WHITE
|
||
elif status_uf_dic['УФ-онлайн']:
|
||
for socket in status_uf_dic:
|
||
if not status_uf_dic[socket]:
|
||
is_ok = false
|
||
if is_ok:
|
||
$lbl_header2.text = 'Прибор исправен'
|
||
$lbl_header2.modulate = Color.GREEN
|
||
elif not is_ok:
|
||
$lbl_header2.text = 'Прибор неисправен'
|
||
$lbl_header2.modulate = Color.RED
|
||
$lbl_header2.visible = true
|
||
|
||
|
||
func find_labels(node1: Node):
|
||
if node1 is Label:
|
||
if node1.name in ['lbl_rname', 'rname']:
|
||
if not node1.has_meta('tooltip_set'):
|
||
ctrl_pos += 1
|
||
var box_number = ceili(float(ctrl_pos) / 10.0)
|
||
var position_number = ctrl_pos % 10
|
||
if position_number == 0:
|
||
position_number = 10
|
||
node1.tooltip_text = 'Ящик - %d, Позиция - %d' % [box_number, position_number]
|
||
node1.mouse_filter = Control.MOUSE_FILTER_STOP
|
||
node1.set_meta('tooltip_set', true)
|
||
for child in node1.get_children():
|
||
find_labels(child)
|