From c8bce3bef8aea139658bda5a1863c8de2c85e5af Mon Sep 17 00:00:00 2001 From: sasha80 Date: Tue, 23 Apr 2024 11:17:25 +0300 Subject: [PATCH 01/39] =?UTF-8?q?=D0=94=D0=BE=D1=80=D0=B0=D0=B1=D0=BE?= =?UTF-8?q?=D1=82=D0=BA=D0=B0.=20=D0=A1=D0=BE=D0=B1=D1=8B=D1=82=D0=B8?= =?UTF-8?q?=D1=8F=20=D0=BF=D0=B5=D1=80=D0=B5=D0=BA=D0=BB=D1=8E=D1=87=D0=B5?= =?UTF-8?q?=D0=BD=D0=B8=D1=8F=20=D1=80=D0=B5=D0=B6=D0=B8=D0=BC=D0=B0=20?= =?UTF-8?q?=D0=90=D0=B2=D1=82=D0=BE=D0=BC=D0=B0=D1=82=D0=B0=20(=D1=83?= =?UTF-8?q?=D1=80=D0=BE=D0=B2=D0=B5=D0=BD=D1=8C=20=D0=B0=D0=B2=D1=82=D0=BE?= =?UTF-8?q?=D0=BC=D0=B0=D1=82=D0=B8=D0=B7=D0=B0=D1=86=D0=B8=D0=B8)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- scenes/работа/sld_mode.gd | 16 ++++++++++++++++ scripts/signaller.gd | 19 +++++++++++++++++-- 2 files changed, 33 insertions(+), 2 deletions(-) create mode 100644 scenes/работа/sld_mode.gd diff --git a/scenes/работа/sld_mode.gd b/scenes/работа/sld_mode.gd new file mode 100644 index 00000000..70d28161 --- /dev/null +++ b/scenes/работа/sld_mode.gd @@ -0,0 +1,16 @@ +extends VSlider + +const VAL_TO_LABEL = { 0: 'label0', 1: 'label1', 2: 'label2', 3: 'label3' } +const VAL_TO_EVENT = { 0: 'manual_control', 1: 'interfer_auto', 2: 'threat_auto', 3: 'full_auto' } + +func _ready(): _on_value_changed(3) + + +func _on_value_changed(val): + val = int(val) + for nm in VAL_TO_LABEL.values(): + var lbl = get_node(nm) + lbl.self_modulate.a = 0.45 + var lbl = get_node(VAL_TO_LABEL[val]) + lbl.self_modulate.a = 1.0 + signaller.emit_signal(VAL_TO_EVENT[val]) diff --git a/scripts/signaller.gd b/scripts/signaller.gd index 93dace7e..7571d9ee 100644 --- a/scripts/signaller.gd +++ b/scripts/signaller.gd @@ -1,8 +1,23 @@ class_name Signaller extends Node - ## Обмен сигналами между узлами. Здесь объявлены сигналы, которые используют -## два и более узла, из разных файлов. +## два и более узла, из разных файлов. Должен быть помещён в автозагрузку. + + +## Вызывается, когда оператор переводит программу в режим "Автомат целей и помех" +signal full_auto() + + +## Вызывается, когда оператор переводит программу в режим "Автомат выбора целей" +signal threat_auto() + + +## Вызывается, когда оператор переводит программу в режим "Автомат выбора помехи" +signal interfer_auto() + + +## Вызывается, когда оператор переводит программу в режим "Ручной" +signal manual_control() ## Вызывается, когда оператор выбирает цель в таблице. From b3e7baf572c37811e95d5933f928ad0ba5da6c89 Mon Sep 17 00:00:00 2001 From: sasha80 Date: Tue, 23 Apr 2024 11:20:55 +0300 Subject: [PATCH 02/39] =?UTF-8?q?=D0=94=D0=BE=D1=80=D0=B0=D0=B1=D0=BE?= =?UTF-8?q?=D1=82=D0=BA=D0=B0.=20=D0=A3=D0=B3=D0=BE=D0=BB=20=D0=BD=D0=B0?= =?UTF-8?q?=D0=BA=D0=BB=D0=BE=D0=BD=D0=B0=20=D1=87=D1=91=D1=80=D1=82=D0=BE?= =?UTF-8?q?=D1=87=D0=B5=D0=BA=20=D0=BD=D0=B0=20=D0=BF=D0=BB=D0=BE=D1=81?= =?UTF-8?q?=D0=BA=D0=BE=D0=B9=20=D0=BA=D0=BD=D0=BE=D0=BF=D0=BA=D0=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- scenes/button-flat/button-flat.tscn | 14 ++- scenes/button-flat/nine-patch-button.gd | 24 ++--- scenes/grid-buttons-ecm/grid-buttons-ecm.tscn | 30 +++++- scenes/работа/работа.gd | 2 +- scenes/работа/работа.tscn | 102 +++++++++++++++--- 5 files changed, 135 insertions(+), 37 deletions(-) diff --git a/scenes/button-flat/button-flat.tscn b/scenes/button-flat/button-flat.tscn index 72c7f5b2..51b8e5ad 100644 --- a/scenes/button-flat/button-flat.tscn +++ b/scenes/button-flat/button-flat.tscn @@ -57,7 +57,7 @@ void fragment() [sub_resource type="ShaderMaterial" id="ShaderMaterial_hhdyc"] resource_local_to_scene = true shader = SubResource("Shader_2bftm") -shader_parameter/rotation = 45.0 +shader_parameter/rotation = 0.0 shader_parameter/color = Vector4(1, 1, 1, 0.1) shader_parameter/width = 3.0 shader_parameter/speed = 0.0 @@ -71,15 +71,22 @@ script/source = "@tool extends Sprite2D - +## Скорость движения чёрточек. @export var speed: float = 0.01: set(val): material.set('shader_parameter/speed', val) get: return material.get('shader_parameter/speed') +## Режим отображения. Когда [b]true[/b], чёрточки отображаются. @export var disabled: bool = false: set(val): material.set('shader_parameter/disabled', val) get: return material.get('shader_parameter/disabled') + + +## Угол наклона чёрточек. +@export var strips_rotation: float = 0.0: + set(val): material.set('shader_parameter/rotation', val) + get: return material.get('shader_parameter/rotation') " [sub_resource type="StyleBoxEmpty" id="6"] @@ -97,7 +104,6 @@ offset_right = 20.0 offset_bottom = 20.0 theme_override_styles/panel = SubResource("1") script = ExtResource("1_ui6sg") -toggle_mode = true [node name="back" type="Sprite2D" parent="."] material = SubResource("ShaderMaterial_hhdyc") @@ -126,9 +132,7 @@ theme_override_styles/hover = SubResource("2") theme_override_styles/pressed = SubResource("3") theme_override_styles/disabled = SubResource("5") theme_override_styles/focus = SubResource("4") -toggle_mode = true clip_text = true [connection signal="resized" from="." to="." method="_on_resized"] [connection signal="visibility_changed" from="back" to="back" method="_on_visibility_changed"] -[connection signal="toggled" from="button" to="." method="_on_button_toggled"] diff --git a/scenes/button-flat/nine-patch-button.gd b/scenes/button-flat/nine-patch-button.gd index 9da62fce..23564764 100644 --- a/scenes/button-flat/nine-patch-button.gd +++ b/scenes/button-flat/nine-patch-button.gd @@ -2,8 +2,6 @@ extends PanelContainer -var save_modulate: Color - func set_text(val: String): $button.set_text(val) func set_pressed(val: bool): $button.set_pressed(val) func set_disabled(val: bool): disabled = val @@ -21,6 +19,11 @@ func is_toggle_mode(): return $button.is_toggle_mode() set(val): $state.set_texture(val) +@export var strips_rotation: float: + set(val): $back.strips_rotation = deg_to_rad(val) + get: return rad_to_deg($back.strips_rotation) + + @export var text: String = '': set(val): $button.set_text(val) get: return $button.get_text() @@ -30,10 +33,7 @@ func is_toggle_mode(): return $button.is_toggle_mode() set(val): $button.set_disabled(val) $back.disabled = val - if val: - $state.modulate.a = 0.5 - else: - $state.modulate.a = 1.0 + $state.modulate.a = 0.5 if val else 1.0 get: return $button.disabled @@ -42,10 +42,8 @@ func is_toggle_mode(): return $button.is_toggle_mode() get: return $button.is_pressed() -@export var toggle_mode: bool = false: - set(val): - if is_inside_tree(): - $button.set_toggle_mode(val) +@export var toggle_mode: bool: + set(val): $button.set_toggle_mode(val) get: return $button.is_toggle_mode() @@ -57,12 +55,12 @@ func _on_resized() -> void: func _enter_tree() -> void: $back.scale = size $back.material.set('shader_parameter/scale', size / Vector2(20.0, 20.0)) - save_modulate = modulate + $button.set_toggle_mode(true) + $button.connect('toggled', Callable(self, '_on_button_toggled')) func set_toggle_mode (val: bool): - if is_inside_tree(): - $button.set_toggle_mode(val) + $button.set_toggle_mode(val) func _on_button_toggled(val: bool): diff --git a/scenes/grid-buttons-ecm/grid-buttons-ecm.tscn b/scenes/grid-buttons-ecm/grid-buttons-ecm.tscn index 5af9d2d5..7baa822c 100644 --- a/scenes/grid-buttons-ecm/grid-buttons-ecm.tscn +++ b/scenes/grid-buttons-ecm/grid-buttons-ecm.tscn @@ -11,110 +11,138 @@ columns = 14 layout_mode = 2 size_flags_horizontal = 3 size_flags_vertical = 3 +strips_rotation = 20.0 text = "Откл." disabled = true +toggle_mode = true metadata/rfi_name = "off" [node name="btn_auto_rfi" parent="." groups=["группа-режим-помехи"] instance=ExtResource("1_oy80h")] layout_mode = 2 size_flags_horizontal = 3 size_flags_vertical = 3 -text = "Автомат" +strips_rotation = 20.0 +text = "Запрет" disabled = true +toggle_mode = true metadata/rfi_name = "auto" [node name="btn_p12" parent="." groups=["группа-режим-помехи"] instance=ExtResource("1_oy80h")] layout_mode = 2 size_flags_horizontal = 3 size_flags_vertical = 3 +strips_rotation = 20.0 text = "МЧМ-1" disabled = true +toggle_mode = true metadata/rfi_name = "mchm1" [node name="btn_p16" parent="." groups=["группа-режим-помехи"] instance=ExtResource("1_oy80h")] layout_mode = 2 size_flags_horizontal = 3 size_flags_vertical = 3 +strips_rotation = 20.0 text = "СРН-И1" disabled = true +toggle_mode = true metadata/rfi_name = "srni1" [node name="btn_p15" parent="." groups=["группа-режим-помехи"] instance=ExtResource("1_oy80h")] layout_mode = 2 size_flags_horizontal = 3 size_flags_vertical = 3 +strips_rotation = 20.0 text = "СРН-М2" disabled = true +toggle_mode = true metadata/rfi_name = "srnm2" [node name="btn_p14" parent="." groups=["группа-режим-помехи"] instance=ExtResource("1_oy80h")] layout_mode = 2 size_flags_horizontal = 3 size_flags_vertical = 3 +strips_rotation = 20.0 text = "ПД-М4" disabled = true +toggle_mode = true metadata/rfi_name = "pdm4" [node name="btn_p13" parent="." groups=["группа-режим-помехи"] instance=ExtResource("1_oy80h")] layout_mode = 2 size_flags_horizontal = 3 size_flags_vertical = 3 +strips_rotation = 20.0 text = "ПД-М2" disabled = true +toggle_mode = true metadata/rfi_name = "pdm2" [node name="btn_p11" parent="." groups=["группа-режим-помехи"] instance=ExtResource("1_oy80h")] layout_mode = 2 size_flags_horizontal = 3 size_flags_vertical = 3 +strips_rotation = 20.0 text = "ЛЧМ-1" disabled = true +toggle_mode = true metadata/rfi_name = "lchm1" [node name="btn_p10" parent="." groups=["группа-режим-помехи"] instance=ExtResource("1_oy80h")] layout_mode = 2 size_flags_horizontal = 3 size_flags_vertical = 3 +strips_rotation = 20.0 text = "ПД-М4С" disabled = true +toggle_mode = true metadata/rfi_name = "pdm4s" [node name="btn_p9" parent="." groups=["группа-режим-помехи"] instance=ExtResource("1_oy80h")] layout_mode = 2 size_flags_horizontal = 3 size_flags_vertical = 3 +strips_rotation = 20.0 text = "ПД-ЧМ" disabled = true +toggle_mode = true metadata/rfi_name = "pdchm" [node name="btn_p8" parent="." groups=["группа-режим-помехи"] instance=ExtResource("1_oy80h")] layout_mode = 2 size_flags_horizontal = 3 size_flags_vertical = 3 +strips_rotation = 20.0 text = "СВ-И1" disabled = true +toggle_mode = true metadata/rfi_name = "svi1" [node name="btn_p7" parent="." groups=["группа-режим-помехи"] instance=ExtResource("1_oy80h")] layout_mode = 2 size_flags_horizontal = 3 size_flags_vertical = 3 +strips_rotation = 20.0 text = "K1" disabled = true +toggle_mode = true metadata/rfi_name = "k1" [node name="btn_p6" parent="." groups=["группа-режим-помехи"] instance=ExtResource("1_oy80h")] layout_mode = 2 size_flags_horizontal = 3 size_flags_vertical = 3 +strips_rotation = 20.0 text = "СВ-М2" disabled = true +toggle_mode = true metadata/rfi_name = "svm2" [node name="btn_p5" parent="." groups=["группа-режим-помехи"] instance=ExtResource("1_oy80h")] layout_mode = 2 size_flags_horizontal = 3 size_flags_vertical = 3 +strips_rotation = 20.0 text = "ОЗП-1" disabled = true +toggle_mode = true metadata/rfi_name = "ozp1" diff --git a/scenes/работа/работа.gd b/scenes/работа/работа.gd index c696ac42..86d21643 100644 --- a/scenes/работа/работа.gd +++ b/scenes/работа/работа.gd @@ -376,7 +376,7 @@ func sel_fs_sector(event): var center_offset: Vector2 = ProjectSettings.get_setting('application/interfer/center_offset', Vector2i(0, 25)) var angle: float = event.position.angle_to_point(center + center_offset) * 180/PI - 45.0 if angle < 0: - angle +=360 + angle += 360 var distance: float = event.position.distance_to(center + center_offset) var sector: int var band: int diff --git a/scenes/работа/работа.tscn b/scenes/работа/работа.tscn index d793d2d4..186266f0 100644 --- a/scenes/работа/работа.tscn +++ b/scenes/работа/работа.tscn @@ -1,4 +1,4 @@ -[gd_scene load_steps=13 format=3 uid="uid://b276iygic5itk"] +[gd_scene load_steps=14 format=3 uid="uid://b276iygic5itk"] [ext_resource type="Script" path="res://scenes/работа/работа.gd" id="1_niok4"] [ext_resource type="PackedScene" uid="uid://nl1vklubr5kr" path="res://scenes/bip/bip.tscn" id="2_br3s6"] @@ -11,6 +11,7 @@ [ext_resource type="PackedScene" uid="uid://bbq6nklh36yij" path="res://scenes/tilemap/tilemap.tscn" id="10_gtwyg"] [ext_resource type="PackedScene" uid="uid://b5kjdyxuwsot5" path="res://scenes/diagram/diagram.tscn" id="11_b6su4"] [ext_resource type="Shader" path="res://shaders/tilemap.gdshader" id="11_ekapd"] +[ext_resource type="Script" path="res://scenes/работа/sld_mode.gd" id="12_gqdkl"] [sub_resource type="ShaderMaterial" id="ShaderMaterial_4p7y1"] resource_local_to_scene = true @@ -97,16 +98,6 @@ offset_right = 83.0 offset_bottom = 72.0 text = "Опасных:" -[node name="btn_auto_threat" parent="." instance=ExtResource("8_k0iv2")] -layout_mode = 0 -offset_left = 1034.0 -offset_top = 7.0 -offset_right = 1108.0 -offset_bottom = 61.0 -size_flags_horizontal = 3 -size_flags_vertical = 3 -text = "Автомат" - [node name="btn_view" parent="." instance=ExtResource("8_k0iv2")] layout_mode = 2 offset_left = 11.0 @@ -115,9 +106,10 @@ offset_right = 111.0 offset_bottom = 953.0 size_flags_horizontal = 3 size_flags_vertical = 3 +strips_rotation = 2578.31 text = "Вид" -[node name="btn_view2" parent="." instance=ExtResource("8_k0iv2")] +[node name="btn_activate" parent="." instance=ExtResource("8_k0iv2")] layout_mode = 2 offset_left = 954.0 offset_top = 1060.0 @@ -125,6 +117,7 @@ offset_right = 1106.0 offset_bottom = 1112.0 size_flags_horizontal = 3 size_flags_vertical = 3 +strips_rotation = 2578.31 text = "Подавление" [node name="btn_zoom" parent="." instance=ExtResource("9_oey3x")] @@ -137,16 +130,17 @@ metadata/zoom = 4 [node name="btns_select" type="GridContainer" parent="."] layout_mode = 0 -offset_left = 1034.0 -offset_top = 65.0 -offset_right = 1108.0 -offset_bottom = 181.0 +offset_left = 1018.0 +offset_top = 38.0 +offset_right = 1092.0 +offset_bottom = 154.0 [node name="btn_strob" parent="btns_select" instance=ExtResource("8_k0iv2")] layout_mode = 2 size_flags_horizontal = 3 size_flags_vertical = 3 tooltip_text = "Кнопка для выбора сектора при помощи клика мышкой" +strips_rotation = 2578.31 text = "Строб" metadata/state = 0 @@ -155,8 +149,8 @@ layout_mode = 2 size_flags_horizontal = 3 size_flags_vertical = 3 tooltip_text = "Кнопка для выбора сектора при помощи клика мышкой" +strips_rotation = 2578.31 text = "Цель" -pressed = true metadata/state = 1 [node name="btn_fs_sector" parent="btns_select" instance=ExtResource("8_k0iv2")] @@ -164,9 +158,83 @@ layout_mode = 2 size_flags_horizontal = 3 size_flags_vertical = 3 tooltip_text = "Кнопка для выбора сектора при помощи клика мышкой" +strips_rotation = 2578.31 text = "Сектор" metadata/state = 2 +[node name="vslider" type="VSlider" parent="."] +layout_mode = 2 +offset_left = 1113.0 +offset_top = 975.0 +offset_right = 1143.0 +offset_bottom = 1055.0 +scale = Vector2(-1, 1) +max_value = 3.0 +value = 3.0 +tick_count = 4 +ticks_on_borders = true +script = ExtResource("12_gqdkl") + +[node name="label0" type="Label" parent="vslider"] +self_modulate = Color(1, 1, 1, 0.5) +layout_mode = 0 +offset_left = 158.0 +offset_top = 62.0 +offset_right = 283.0 +offset_bottom = 82.0 +scale = Vector2(-1, 1) +text = "Автомат отключен" +horizontal_alignment = 2 +vertical_alignment = 1 + +[node name="label1" type="Label" parent="vslider"] +self_modulate = Color(1, 1, 1, 0.5) +layout_mode = 0 +offset_left = 182.0 +offset_top = 40.0 +offset_right = 331.0 +offset_bottom = 60.0 +scale = Vector2(-1, 1) +text = "Автомат выбора цели" +horizontal_alignment = 2 +vertical_alignment = 1 + +[node name="label2" type="Label" parent="vslider"] +self_modulate = Color(1, 1, 1, 0.5) +layout_mode = 0 +offset_left = 200.0 +offset_top = 19.0 +offset_right = 368.0 +offset_bottom = 39.0 +scale = Vector2(-1, 1) +text = "Автомат выбора помехи" +horizontal_alignment = 2 +vertical_alignment = 1 + +[node name="label3" type="Label" parent="vslider"] +self_modulate = Color(1, 1, 1, 0.5) +layout_mode = 0 +offset_left = 191.0 +offset_top = -2.0 +offset_right = 351.0 +offset_bottom = 18.0 +scale = Vector2(-1, 1) +text = "Автомат помехи и цели" +horizontal_alignment = 2 +vertical_alignment = 1 + +[node name="label9" type="Label" parent="."] +self_modulate = Color(1, 1, 1, 0.62) +layout_mode = 0 +offset_left = 1002.0 +offset_top = 6.0 +offset_right = 1106.0 +offset_bottom = 31.0 +text = "Режим выбора" +horizontal_alignment = 1 +vertical_alignment = 1 + [connection signal="drag_begin" from="." to="." method="_on_drag_begin"] [connection signal="drag_continue" from="." to="." method="_on_drag_continue"] [connection signal="pressed" from="btn_zoom" to="." method="_on_btn_scale_pressed"] +[connection signal="value_changed" from="vslider" to="vslider" method="_on_value_changed"] From 938bd6d3672e68238d1f94fb2d47b3069bf64dd4 Mon Sep 17 00:00:00 2001 From: sasha80 Date: Wed, 24 Apr 2024 11:08:54 +0300 Subject: [PATCH 03/39] =?UTF-8?q?=D0=98=D1=81=D0=BF=D1=80=D0=B0=D0=B2?= =?UTF-8?q?=D0=BB=D0=B5=D0=BD=D0=B8=D0=B5.=20=D0=98=D1=81=D0=BA=D0=BB?= =?UTF-8?q?=D1=8E=D1=87=D0=B5=D0=BD=D0=B8=D0=B5=20=D0=BF=D1=80=D0=B8=20?= =?UTF-8?q?=D0=B8=D0=B7=D0=BC=D0=B5=D0=BD=D0=B5=D0=BD=D0=B8=D0=B8=20=D1=81?= =?UTF-8?q?=D0=BE=D0=B4=D0=B5=D1=80=D0=B6=D0=B0=D0=BD=D0=B8=D1=8F=20=D0=BD?= =?UTF-8?q?=D0=B5=20=D0=B2=D1=81=D0=B5=D1=85=20=D1=8F=D1=87=D0=B5=D0=B5?= =?UTF-8?q?=D0=BA=20=D0=B2=20=D1=80=D1=8F=D0=B4=D0=B5.=20=D0=9F=D0=BE?= =?UTF-8?q?=D0=BB=D0=B5=20=D0=B2=D0=B2=D0=BE=D0=B4=D0=B0=20=D0=B2=20=D1=82?= =?UTF-8?q?=D0=B0=D0=B1=D0=BB=D0=B8=D1=86=D0=B5=20=D0=BD=D0=B5=20=D0=BF?= =?UTF-8?q?=D0=BE=D1=81=D1=8B=D0=BB=D0=B0=D0=B5=D1=82=20=D1=81=D0=B8=D0=B3?= =?UTF-8?q?=D0=BD=D0=B0=D0=BB=20"text=5Fsubmitted"?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- table/table.gd | 24 +++++++++++++++--------- 1 file changed, 15 insertions(+), 9 deletions(-) diff --git a/table/table.gd b/table/table.gd index 67cd43c4..0173d7c2 100644 --- a/table/table.gd +++ b/table/table.gd @@ -486,13 +486,13 @@ func clear_rows() -> void: remove_row(i_row) -## Настраевает обратные вызовы для колонок. +## Настраевает обратные вызовы для колонок.[br] ## [param dest_node] - Получатель события[br] ## [param event_name] - Имя события[br] ## [param callback] - Имя функции получателя события[br] ## [param clmns] - Индексы колонок[br] ## [param user_data] - Аргументы функции получателя события[br] -func connect_columns(dest_node: Node, event_name: String, callback: String, clmns: Array, user_data: Array) -> void: +func connect_columns(dest_node: Node, event_name: String, callback: String, clmns: Array, user_data: Array = []) -> void: var rows_count = get_rows_count() for i_row in rows_count: for i_col in clmns: @@ -502,9 +502,13 @@ func connect_columns(dest_node: Node, event_name: String, callback: String, clmn var conn = node.get_meta(META_CALLABLE) node.disconnect(event_name, conn) var conn = Callable(dest_node, callback).bind([node] + user_data) - assert (OK == node.connect(event_name, conn)) - node.set_meta(META_CALLABLE, conn) - node.set_meta(META_EVENT_NAME, event_name) + var rc = node.connect(event_name, conn) + if rc == Error.OK: + node.set_meta(META_CALLABLE, conn) + node.set_meta(META_EVENT_NAME, event_name) + else: + var es = error_string(rc) + push_error('ошибка: событие \"%s\" не может быть подключено к %s: %s' % [event_name, node, es]) ## @@ -596,11 +600,13 @@ func get_row_text(i_row: int) -> Array: return row -## [param i_row] - Индекс ряда. +## [param i_row] - Индекс ряда.[br] +## [param row] - Массив новых значений текста (поле элемента [param text]).[br] +## [param i_begin] - Начальный индекс колонки начиная с которого установить новые значения func set_row_text(i_row: int, row: Array, i_begin: int = 0, key_format: String = NODE_KEY_FORMAT) -> void: - assert(i_begin >= 0) - assert((columns - i_begin) <= row.size()) - for i_col in columns - i_begin: + assert((i_begin >= 0) and (i_begin < columns)) + assert((columns - i_begin) >= row.size()) + for i_col in row.size(): var key: = get_node_key(key_format, i_col + i_begin, i_row) nodes[key].text = row[i_col] From c5092798be8d8d33b7e433b81b9a97a43f08b6e7 Mon Sep 17 00:00:00 2001 From: sasha80 Date: Wed, 24 Apr 2024 11:38:38 +0300 Subject: [PATCH 04/39] =?UTF-8?q?=D0=A0=D0=B5=D1=84=D0=B0=D0=BA=D1=82?= =?UTF-8?q?=D0=BE=D1=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- scripts/repnetwork.gd | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/scripts/repnetwork.gd b/scripts/repnetwork.gd index c6bad64e..ffd8a7ff 100644 --- a/scripts/repnetwork.gd +++ b/scripts/repnetwork.gd @@ -86,12 +86,13 @@ func _ready() -> void: if logger_page: unit.connect('line_changed', Callable(logger_page, 'on_line_changed').bind(unit_key)) unit.connect('command_fail', Callable(logger_page, 'on_command_fail').bind(unit_key)) - + tcp_sockets.append([create_tcpsocket('уарэп-5п28'), units_tcp[repsettings.get_unit_key('уарэп-5п28')]]) - + for key in units: log.info('%s %s:%d' % [units[key].name, key[0], key[1]]) for key in units_tcp: log.info('%s %s:%d' % [units_tcp[key].name, key[0], key[1]]) + func poll_receive(sock: Socket, tick: int) -> bool: while sock.get_available_packet_count() > 0: var data: = sock.get_packet() From 0a63790322b4fd228054880777b2fa0ece1dc739 Mon Sep 17 00:00:00 2001 From: sasha80 Date: Wed, 24 Apr 2024 11:39:18 +0300 Subject: [PATCH 05/39] =?UTF-8?q?=D0=98=D1=81=D0=BF=D1=80=D0=B0=D0=B2?= =?UTF-8?q?=D0=BB=D0=B5=D0=BD=D0=B8=D0=B5.=20=D0=9E=D0=B1=D1=80=D0=B0?= =?UTF-8?q?=D1=89=D0=B5=D0=BD=D0=B8=D0=B5=20=D0=BA=20null=20reference?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- scenes/работа/работа.tscn | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/scenes/работа/работа.tscn b/scenes/работа/работа.tscn index 186266f0..cd392a9f 100644 --- a/scenes/работа/работа.tscn +++ b/scenes/работа/работа.tscn @@ -108,6 +108,7 @@ size_flags_horizontal = 3 size_flags_vertical = 3 strips_rotation = 2578.31 text = "Вид" +toggle_mode = true [node name="btn_activate" parent="." instance=ExtResource("8_k0iv2")] layout_mode = 2 @@ -119,6 +120,7 @@ size_flags_horizontal = 3 size_flags_vertical = 3 strips_rotation = 2578.31 text = "Подавление" +toggle_mode = true [node name="btn_zoom" parent="." instance=ExtResource("9_oey3x")] layout_mode = 0 @@ -142,6 +144,7 @@ size_flags_vertical = 3 tooltip_text = "Кнопка для выбора сектора при помощи клика мышкой" strips_rotation = 2578.31 text = "Строб" +toggle_mode = true metadata/state = 0 [node name="btn_threats" parent="btns_select" instance=ExtResource("8_k0iv2")] @@ -151,6 +154,7 @@ size_flags_vertical = 3 tooltip_text = "Кнопка для выбора сектора при помощи клика мышкой" strips_rotation = 2578.31 text = "Цель" +toggle_mode = true metadata/state = 1 [node name="btn_fs_sector" parent="btns_select" instance=ExtResource("8_k0iv2")] @@ -160,6 +164,7 @@ size_flags_vertical = 3 tooltip_text = "Кнопка для выбора сектора при помощи клика мышкой" strips_rotation = 2578.31 text = "Сектор" +toggle_mode = true metadata/state = 2 [node name="vslider" type="VSlider" parent="."] From ec1778e188a504079f3e46044e90301f080c1ee6 Mon Sep 17 00:00:00 2001 From: sasha80 Date: Thu, 25 Apr 2024 13:53:21 +0300 Subject: [PATCH 06/39] =?UTF-8?q?=D0=A0=D0=B5=D1=84=D0=B0=D0=BA=D1=82?= =?UTF-8?q?=D0=BE=D1=80.=20=D0=9F=D0=BE=D1=82=D0=BE=D0=BC=D1=83=20=D1=87?= =?UTF-8?q?=D1=82=D0=BE=20=D0=BF=D1=80=D0=B8=D0=B1=D0=BE=D1=80=D1=8B!?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- project.godot | 30 +- scenes/button-flat/button-flat.tscn | 1 + scenes/button-flat/nine-patch-button.gd | 29 +- .../btn-scale.tscn | 0 scenes/grid-buttons-ecm/grid-buttons-ecm.tscn | 28 +- scenes/pribor-afsp-r/pribor-afsp.tscn | 572 ------------------ .../pribor-afsp.tscn | 105 ++-- scenes/pribor-prd-k/kasseta-fs-kd.tscn | 2 +- scenes/pribor-prd-k/pribor-prd-k.tscn | 10 +- scenes/pribor-prd-n/kasseta-fs-nd.tscn | 2 +- scenes/pribor-prd-n/kasseta-p-1.tscn | 50 -- scenes/pribor-prd-n/kasseta-u-5.tscn | 74 --- scenes/pribor-prd-n/pribor-prd-n.tscn | 8 +- scenes/pribor-prd-v-1/pribor-prd-v-1.tscn | 6 - scenes/pribor-prd-v-2/pribor-prd-v-2.tscn | 6 - scenes/pribor-prd-v-3/pribor-prd-v-3.tscn | 6 - scenes/pribor-prd-v-4/pribor-prd-v-4.tscn | 6 - scenes/pribor-prd-v/kasseta-fs-vd.tscn | 59 ++ scenes/pribor-prd-v/pribor-prd-v.tscn | 221 +++++++ scenes/pribor-rtr/pribor-rtr.tscn | 2 +- scenes/pribor-uf/pribor-uf.tscn | 2 +- scenes/pribor-uyep/pribor-uyep.tscn | 2 +- {scripts => scenes/scripts}/capsrpb.gd | 0 {scripts => scenes/scripts}/file-table.gd | 0 {scripts => scenes/scripts}/hotkeys.gd | 0 {scripts => scenes/scripts}/interfer.gd | 0 {scripts => scenes/scripts}/mercator.gd | 0 {scripts => scenes/scripts}/modbus.gd | 0 {scripts => scenes/scripts}/repnetwork.gd | 0 {scripts => scenes/scripts}/repsettings.gd | 0 {scripts => scenes/scripts}/signaller.gd | 66 +- {scripts => scenes/scripts}/tcp5p28.gd | 0 {scripts => scenes/scripts}/threats.gd | 0 {scripts => scenes/scripts}/tools.gd | 0 {scripts => scenes/scripts}/yau07.gd | 0 {scripts => scenes/scripts}/yems-boards.gd | 0 {scripts => scenes/scripts}/yems-consts.gd | 0 {scripts => scenes/scripts}/yems-devs.gd | 0 scenes/tabs-switch/tab-switch.gd | 4 + scenes/tabs-switch/tab-switch.tscn | 4 +- .../кассета-п-1.tscn} | 4 +- .../кассета-п-2.tscn} | 2 +- .../кассета-у-5.tscn} | 4 +- scenes/контроль/контроль.gd | 34 +- scenes/контроль/{um1535.tscn => ум1535.tscn} | 2 +- .../{indicator_h.tscn => уровень.tscn} | 0 .../{element_v.tscn => элемент-в.tscn} | 0 .../{element_h.tscn => элемент-г.tscn} | 0 scenes/работа/работа.tscn | 7 +- 49 files changed, 473 insertions(+), 875 deletions(-) rename scenes/{btn-scale => button-scale}/btn-scale.tscn (100%) delete mode 100644 scenes/pribor-afsp-r/pribor-afsp.tscn rename scenes/{pribor-afsp-l => pribor-afsp}/pribor-afsp.tscn (87%) delete mode 100644 scenes/pribor-prd-n/kasseta-p-1.tscn delete mode 100644 scenes/pribor-prd-n/kasseta-u-5.tscn delete mode 100644 scenes/pribor-prd-v-1/pribor-prd-v-1.tscn delete mode 100644 scenes/pribor-prd-v-2/pribor-prd-v-2.tscn delete mode 100644 scenes/pribor-prd-v-3/pribor-prd-v-3.tscn delete mode 100644 scenes/pribor-prd-v-4/pribor-prd-v-4.tscn create mode 100644 scenes/pribor-prd-v/kasseta-fs-vd.tscn create mode 100644 scenes/pribor-prd-v/pribor-prd-v.tscn rename {scripts => scenes/scripts}/capsrpb.gd (100%) rename {scripts => scenes/scripts}/file-table.gd (100%) rename {scripts => scenes/scripts}/hotkeys.gd (100%) rename {scripts => scenes/scripts}/interfer.gd (100%) rename {scripts => scenes/scripts}/mercator.gd (100%) rename {scripts => scenes/scripts}/modbus.gd (100%) rename {scripts => scenes/scripts}/repnetwork.gd (100%) rename {scripts => scenes/scripts}/repsettings.gd (100%) rename {scripts => scenes/scripts}/signaller.gd (69%) rename {scripts => scenes/scripts}/tcp5p28.gd (100%) rename {scripts => scenes/scripts}/threats.gd (100%) rename {scripts => scenes/scripts}/tools.gd (100%) rename {scripts => scenes/scripts}/yau07.gd (100%) rename {scripts => scenes/scripts}/yems-boards.gd (100%) rename {scripts => scenes/scripts}/yems-consts.gd (100%) rename {scripts => scenes/scripts}/yems-devs.gd (100%) rename scenes/{pribor-prd-k/kasseta-p-1.tscn => контроль/кассета-п-1.tscn} (91%) rename scenes/{pribor-prd-k/kasseta-p-2.tscn => контроль/кассета-п-2.tscn} (94%) rename scenes/{pribor-prd-k/kasseta-u-5.tscn => контроль/кассета-у-5.tscn} (93%) rename scenes/контроль/{um1535.tscn => ум1535.tscn} (98%) rename scenes/контроль/{indicator_h.tscn => уровень.tscn} (100%) rename scenes/контроль/{element_v.tscn => элемент-в.tscn} (100%) rename scenes/контроль/{element_h.tscn => элемент-г.tscn} (100%) diff --git a/project.godot b/project.godot index 11059306..fa20df7c 100644 --- a/project.godot +++ b/project.godot @@ -43,22 +43,22 @@ config/external_cu=false [autoload] log="*res://addons/godot-logger/scripts/logger.gd" -tools="*res://scripts/tools.gd" -signaller="*res://scripts/signaller.gd" -repsettings="*res://scripts/repsettings.gd" -repnetwork="*res://scripts/repnetwork.gd" -yau07="*res://scripts/yau07.gd" -capsrpb="*res://scripts/capsrpb.gd" +tools="*res://scenes/scripts/tools.gd" +signaller="*res://scenes/scripts/signaller.gd" +repsettings="*res://scenes/scripts/repsettings.gd" +repnetwork="*res://scenes/scripts/repnetwork.gd" +yau07="*res://scenes/scripts/yau07.gd" +capsrpb="*res://scenes/scripts/capsrpb.gd" table="*res://table/table.gd" -threats="*res://scripts/threats.gd" -yemsdevs="*res://scripts/yems-devs.gd" -yemsboards="*res://scripts/yems-boards.gd" -yemsconsts="*res://scripts/yems-consts.gd" -interfer="*res://scripts/interfer.gd" -hotkeys="*res://scripts/hotkeys.gd" -mercator="*res://scripts/mercator.gd" -modbus="*res://scripts/modbus.gd" -tcp5p28="*res://scripts/tcp5p28.gd" +threats="*res://scenes/scripts/threats.gd" +yemsdevs="*res://scenes/scripts/yems-devs.gd" +yemsboards="*res://scenes/scripts/yems-boards.gd" +yemsconsts="*res://scenes/scripts/yems-consts.gd" +interfer="*res://scenes/scripts/interfer.gd" +hotkeys="*res://scenes/scripts/hotkeys.gd" +mercator="*res://scenes/scripts/mercator.gd" +modbus="*res://scenes/scripts/modbus.gd" +tcp5p28="*res://scenes/scripts/tcp5p28.gd" [debug] diff --git a/scenes/button-flat/button-flat.tscn b/scenes/button-flat/button-flat.tscn index 51b8e5ad..88007b00 100644 --- a/scenes/button-flat/button-flat.tscn +++ b/scenes/button-flat/button-flat.tscn @@ -132,6 +132,7 @@ theme_override_styles/hover = SubResource("2") theme_override_styles/pressed = SubResource("3") theme_override_styles/disabled = SubResource("5") theme_override_styles/focus = SubResource("4") +toggle_mode = true clip_text = true [connection signal="resized" from="." to="." method="_on_resized"] diff --git a/scenes/button-flat/nine-patch-button.gd b/scenes/button-flat/nine-patch-button.gd index 23564764..67189a3b 100644 --- a/scenes/button-flat/nine-patch-button.gd +++ b/scenes/button-flat/nine-patch-button.gd @@ -19,9 +19,11 @@ func is_toggle_mode(): return $button.is_toggle_mode() set(val): $state.set_texture(val) -@export var strips_rotation: float: - set(val): $back.strips_rotation = deg_to_rad(val) - get: return rad_to_deg($back.strips_rotation) +@export var strips_rotation: float = 0.0: + set(val): + strips_rotation = val + $back.strips_rotation = deg_to_rad(val) + get: return strips_rotation @export var text: String = '': @@ -31,20 +33,27 @@ func is_toggle_mode(): return $button.is_toggle_mode() @export var disabled: bool = false: set(val): + disabled = val $button.set_disabled(val) $back.disabled = val $state.modulate.a = 0.5 if val else 1.0 - get: return $button.disabled + get: return disabled @export var pressed: bool = false: - set(val): $button.set_pressed(val) - get: return $button.is_pressed() + set(val): + pressed = val + $button.set_pressed(val) + get: + return pressed -@export var toggle_mode: bool: - set(val): $button.set_toggle_mode(val) - get: return $button.is_toggle_mode() +@export var toggle_mode: bool = false: + set(val): + toggle_mode = val + $button.set_toggle_mode(val) + get: + return toggle_mode func _on_resized() -> void: @@ -59,7 +68,7 @@ func _enter_tree() -> void: $button.connect('toggled', Callable(self, '_on_button_toggled')) -func set_toggle_mode (val: bool): +func set_toggle_mode(val: bool): $button.set_toggle_mode(val) diff --git a/scenes/btn-scale/btn-scale.tscn b/scenes/button-scale/btn-scale.tscn similarity index 100% rename from scenes/btn-scale/btn-scale.tscn rename to scenes/button-scale/btn-scale.tscn diff --git a/scenes/grid-buttons-ecm/grid-buttons-ecm.tscn b/scenes/grid-buttons-ecm/grid-buttons-ecm.tscn index 7baa822c..ca32b73f 100644 --- a/scenes/grid-buttons-ecm/grid-buttons-ecm.tscn +++ b/scenes/grid-buttons-ecm/grid-buttons-ecm.tscn @@ -11,7 +11,7 @@ columns = 14 layout_mode = 2 size_flags_horizontal = 3 size_flags_vertical = 3 -strips_rotation = 20.0 +strips_rotation = 30.0 text = "Откл." disabled = true toggle_mode = true @@ -21,7 +21,7 @@ metadata/rfi_name = "off" layout_mode = 2 size_flags_horizontal = 3 size_flags_vertical = 3 -strips_rotation = 20.0 +strips_rotation = 30.0 text = "Запрет" disabled = true toggle_mode = true @@ -31,7 +31,7 @@ metadata/rfi_name = "auto" layout_mode = 2 size_flags_horizontal = 3 size_flags_vertical = 3 -strips_rotation = 20.0 +strips_rotation = 30.0 text = "МЧМ-1" disabled = true toggle_mode = true @@ -41,7 +41,7 @@ metadata/rfi_name = "mchm1" layout_mode = 2 size_flags_horizontal = 3 size_flags_vertical = 3 -strips_rotation = 20.0 +strips_rotation = 30.0 text = "СРН-И1" disabled = true toggle_mode = true @@ -51,7 +51,7 @@ metadata/rfi_name = "srni1" layout_mode = 2 size_flags_horizontal = 3 size_flags_vertical = 3 -strips_rotation = 20.0 +strips_rotation = 30.0 text = "СРН-М2" disabled = true toggle_mode = true @@ -61,7 +61,7 @@ metadata/rfi_name = "srnm2" layout_mode = 2 size_flags_horizontal = 3 size_flags_vertical = 3 -strips_rotation = 20.0 +strips_rotation = 30.0 text = "ПД-М4" disabled = true toggle_mode = true @@ -71,7 +71,7 @@ metadata/rfi_name = "pdm4" layout_mode = 2 size_flags_horizontal = 3 size_flags_vertical = 3 -strips_rotation = 20.0 +strips_rotation = 30.0 text = "ПД-М2" disabled = true toggle_mode = true @@ -81,7 +81,7 @@ metadata/rfi_name = "pdm2" layout_mode = 2 size_flags_horizontal = 3 size_flags_vertical = 3 -strips_rotation = 20.0 +strips_rotation = 30.0 text = "ЛЧМ-1" disabled = true toggle_mode = true @@ -91,7 +91,7 @@ metadata/rfi_name = "lchm1" layout_mode = 2 size_flags_horizontal = 3 size_flags_vertical = 3 -strips_rotation = 20.0 +strips_rotation = 30.0 text = "ПД-М4С" disabled = true toggle_mode = true @@ -101,7 +101,7 @@ metadata/rfi_name = "pdm4s" layout_mode = 2 size_flags_horizontal = 3 size_flags_vertical = 3 -strips_rotation = 20.0 +strips_rotation = 30.0 text = "ПД-ЧМ" disabled = true toggle_mode = true @@ -111,7 +111,7 @@ metadata/rfi_name = "pdchm" layout_mode = 2 size_flags_horizontal = 3 size_flags_vertical = 3 -strips_rotation = 20.0 +strips_rotation = 30.0 text = "СВ-И1" disabled = true toggle_mode = true @@ -121,7 +121,7 @@ metadata/rfi_name = "svi1" layout_mode = 2 size_flags_horizontal = 3 size_flags_vertical = 3 -strips_rotation = 20.0 +strips_rotation = 30.0 text = "K1" disabled = true toggle_mode = true @@ -131,7 +131,7 @@ metadata/rfi_name = "k1" layout_mode = 2 size_flags_horizontal = 3 size_flags_vertical = 3 -strips_rotation = 20.0 +strips_rotation = 30.0 text = "СВ-М2" disabled = true toggle_mode = true @@ -141,7 +141,7 @@ metadata/rfi_name = "svm2" layout_mode = 2 size_flags_horizontal = 3 size_flags_vertical = 3 -strips_rotation = 20.0 +strips_rotation = 30.0 text = "ОЗП-1" disabled = true toggle_mode = true diff --git a/scenes/pribor-afsp-r/pribor-afsp.tscn b/scenes/pribor-afsp-r/pribor-afsp.tscn deleted file mode 100644 index bbb91907..00000000 --- a/scenes/pribor-afsp-r/pribor-afsp.tscn +++ /dev/null @@ -1,572 +0,0 @@ -[gd_scene load_steps=3 format=3 uid="uid://o2juk6in2nke"] - -[ext_resource type="Texture2D" uid="uid://c4mdrmk7h638f" path="res://data/nine-patch-round.png" id="1_3mc50"] -[ext_resource type="PackedScene" uid="uid://d3iqb5e4g81m5" path="res://scenes/контроль/element_h.tscn" id="2_gl6qy"] - -[node name="pribor_UF" type="Node2D"] - -[node name="lbl_header" type="Label" parent="."] -offset_left = -6.0 -offset_top = 81.0 -offset_right = 849.0 -offset_bottom = 107.0 -theme_override_font_sizes/font_size = 22 -text = "Контроль исправности прибора АФС-П Правый борт" -horizontal_alignment = 1 -vertical_alignment = 1 -metadata/_edit_use_anchors_ = true - -[node name="ref_A1_lpa" type="NinePatchRect" parent="."] -editor_description = "Мнемосхема прибора АФСП пра борта" -offset_left = 25.0 -offset_top = 121.0 -offset_right = 378.0 -offset_bottom = 1128.0 -texture = ExtResource("1_3mc50") -patch_margin_left = 16 -patch_margin_top = 16 -patch_margin_right = 16 -patch_margin_bottom = 16 -metadata/_edit_use_anchors_ = true - -[node name="ref_block_la1" type="NinePatchRect" parent="ref_A1_lpa"] -layout_mode = 0 -offset_left = 32.0 -offset_top = 70.0 -offset_right = 332.0 -offset_bottom = 454.0 -texture = ExtResource("1_3mc50") -patch_margin_left = 16 -patch_margin_top = 16 -patch_margin_right = 16 -patch_margin_bottom = 16 -metadata/_edit_use_anchors_ = true - -[node name="ref_mshu1" parent="ref_A1_lpa/ref_block_la1" instance=ExtResource("2_gl6qy")] -layout_mode = 0 -offset_left = 20.0 -offset_top = 211.0 -offset_right = 280.0 -offset_bottom = 253.0 -fname = "МШУ" -rname = "А5" -metadata/_edit_use_anchors_ = true - -[node name="ref_mshu2" parent="ref_A1_lpa/ref_block_la1" instance=ExtResource("2_gl6qy")] -layout_mode = 0 -offset_left = 20.0 -offset_top = 89.0 -offset_right = 280.0 -offset_bottom = 131.0 -fname = "МШУ" -rname = "А2" -metadata/_edit_use_anchors_ = true - -[node name="ref_mshu3" parent="ref_A1_lpa/ref_block_la1" instance=ExtResource("2_gl6qy")] -layout_mode = 0 -offset_left = 20.0 -offset_top = 130.0 -offset_right = 280.0 -offset_bottom = 172.0 -fname = "МШУ" -rname = "А3" -metadata/_edit_use_anchors_ = true - -[node name="ref_mshu4" parent="ref_A1_lpa/ref_block_la1" instance=ExtResource("2_gl6qy")] -layout_mode = 0 -offset_left = 20.0 -offset_top = 171.0 -offset_right = 280.0 -offset_bottom = 213.0 -fname = "МШУ" -rname = "А4" -metadata/_edit_use_anchors_ = true - -[node name="ref_mshu5" parent="ref_A1_lpa/ref_block_la1" instance=ExtResource("2_gl6qy")] -layout_mode = 0 -offset_left = 20.0 -offset_top = 252.0 -offset_right = 280.0 -offset_bottom = 294.0 -fname = "МШУ" -rname = "А6" -metadata/_edit_use_anchors_ = true - -[node name="ref_mshu6" parent="ref_A1_lpa/ref_block_la1" instance=ExtResource("2_gl6qy")] -layout_mode = 0 -offset_left = 20.0 -offset_top = 48.0 -offset_right = 280.0 -offset_bottom = 90.0 -fname = "МШУ" -rname = "А1" -metadata/_edit_use_anchors_ = true - -[node name="ref_mshu7" parent="ref_A1_lpa/ref_block_la1" instance=ExtResource("2_gl6qy")] -layout_mode = 0 -offset_left = 20.0 -offset_top = 291.0 -offset_right = 280.0 -offset_bottom = 333.0 -fname = "МШУ" -rname = "А7" -metadata/_edit_use_anchors_ = true - -[node name="ref_mshu8" parent="ref_A1_lpa/ref_block_la1" instance=ExtResource("2_gl6qy")] -layout_mode = 0 -offset_left = 20.0 -offset_top = 334.0 -offset_right = 280.0 -offset_bottom = 376.0 -fname = "МШУ" -rname = "А8" -metadata/_edit_use_anchors_ = true - -[node name="lbl_la" type="Label" parent="ref_A1_lpa/ref_block_la1"] -layout_mode = 0 -offset_left = 89.0 -offset_top = 17.0 -offset_right = 200.0 -offset_bottom = 41.0 -text = "Модули ЛА6А45" -metadata/_edit_use_anchors_ = true - -[node name="ref_bpch" type="NinePatchRect" parent="ref_A1_lpa"] -layout_mode = 0 -offset_left = 32.0 -offset_top = 458.0 -offset_right = 332.0 -offset_bottom = 600.0 -texture = ExtResource("1_3mc50") -patch_margin_left = 16 -patch_margin_top = 16 -patch_margin_right = 16 -patch_margin_bottom = 16 -metadata/_edit_use_anchors_ = true - -[node name="lbl_bpch" type="Label" parent="ref_A1_lpa/ref_bpch"] -layout_mode = 0 -offset_left = 135.0 -offset_top = 16.0 -offset_right = 167.0 -offset_bottom = 40.0 -text = "БПЧ" -metadata/_edit_use_anchors_ = true - -[node name="ref_og" parent="ref_A1_lpa/ref_bpch" instance=ExtResource("2_gl6qy")] -layout_mode = 2 -offset_left = 20.0 -offset_top = 36.0 -offset_right = 280.0 -offset_bottom = 78.0 -fname = "Модуль ОГ" -rname = "А23" -metadata/_edit_use_anchors_ = true - -[node name="ref_geterodin" parent="ref_A1_lpa/ref_bpch" instance=ExtResource("2_gl6qy")] -layout_mode = 0 -offset_left = 20.0 -offset_top = 85.0 -offset_right = 280.0 -offset_bottom = 127.0 -fname = "Гетеродин" -rname = "А10" -metadata/_edit_use_anchors_ = true - -[node name="ref_block_la2" type="NinePatchRect" parent="ref_A1_lpa"] -layout_mode = 0 -offset_left = 33.0 -offset_top = 605.0 -offset_right = 333.0 -offset_bottom = 989.0 -texture = ExtResource("1_3mc50") -patch_margin_left = 16 -patch_margin_top = 16 -patch_margin_right = 16 -patch_margin_bottom = 16 -metadata/_edit_use_anchors_ = true - -[node name="ref_mshu9" parent="ref_A1_lpa/ref_block_la2" instance=ExtResource("2_gl6qy")] -layout_mode = 0 -offset_left = 20.0 -offset_top = 48.0 -offset_right = 280.0 -offset_bottom = 90.0 -fname = "МШУ" -rname = "А9" -metadata/_edit_use_anchors_ = true - -[node name="ref_mshu10" parent="ref_A1_lpa/ref_block_la2" instance=ExtResource("2_gl6qy")] -layout_mode = 0 -offset_left = 20.0 -offset_top = 89.0 -offset_right = 280.0 -offset_bottom = 131.0 -fname = "МШУ" -rname = "А10" -metadata/_edit_use_anchors_ = true - -[node name="ref_mshu11" parent="ref_A1_lpa/ref_block_la2" instance=ExtResource("2_gl6qy")] -layout_mode = 0 -offset_left = 20.0 -offset_top = 130.0 -offset_right = 280.0 -offset_bottom = 172.0 -fname = "МШУ" -rname = "А11" -metadata/_edit_use_anchors_ = true - -[node name="ref_mshu12" parent="ref_A1_lpa/ref_block_la2" instance=ExtResource("2_gl6qy")] -layout_mode = 0 -offset_left = 20.0 -offset_top = 171.0 -offset_right = 280.0 -offset_bottom = 213.0 -fname = "МШУ" -rname = "А12" -metadata/_edit_use_anchors_ = true - -[node name="ref_mshu13" parent="ref_A1_lpa/ref_block_la2" instance=ExtResource("2_gl6qy")] -layout_mode = 0 -offset_left = 20.0 -offset_top = 211.0 -offset_right = 280.0 -offset_bottom = 253.0 -fname = "МШУ" -rname = "А13" -metadata/_edit_use_anchors_ = true - -[node name="ref_mshu14" parent="ref_A1_lpa/ref_block_la2" instance=ExtResource("2_gl6qy")] -layout_mode = 0 -offset_left = 20.0 -offset_top = 252.0 -offset_right = 280.0 -offset_bottom = 294.0 -fname = "МШУ" -rname = "А14" -metadata/_edit_use_anchors_ = true - -[node name="ref_mshu15" parent="ref_A1_lpa/ref_block_la2" instance=ExtResource("2_gl6qy")] -layout_mode = 0 -offset_left = 20.0 -offset_top = 291.0 -offset_right = 280.0 -offset_bottom = 333.0 -fname = "МШУ" -rname = "А15" -metadata/_edit_use_anchors_ = true - -[node name="ref_mshu16" parent="ref_A1_lpa/ref_block_la2" instance=ExtResource("2_gl6qy")] -layout_mode = 0 -offset_left = 20.0 -offset_top = 334.0 -offset_right = 280.0 -offset_bottom = 376.0 -fname = "МШУ" -rname = "А16" -metadata/_edit_use_anchors_ = true - -[node name="lbl_la" type="Label" parent="ref_A1_lpa/ref_block_la2"] -layout_mode = 0 -offset_left = 89.0 -offset_top = 17.0 -offset_right = 200.0 -offset_bottom = 41.0 -text = "Модули ЛА6А45" -metadata/_edit_use_anchors_ = true - -[node name="lbl_lpa" type="Label" parent="ref_A1_lpa"] -layout_mode = 0 -offset_left = 169.0 -offset_top = 28.0 -offset_right = 197.0 -offset_bottom = 52.0 -text = "ЛПА" -metadata/_edit_use_anchors_ = true - -[node name="lbl_A" type="Label" parent="ref_A1_lpa"] -layout_mode = 0 -offset_left = 302.0 -offset_top = 16.0 -offset_right = 330.0 -offset_bottom = 40.0 -text = "A1" -metadata/_edit_use_anchors_ = true - -[node name="ref_A2_lpa" type="NinePatchRect" parent="."] -editor_description = "Мнемосхема прибора АФСП пра борта" -offset_left = 414.0 -offset_top = 121.0 -offset_right = 767.0 -offset_bottom = 1128.0 -texture = ExtResource("1_3mc50") -patch_margin_left = 16 -patch_margin_top = 16 -patch_margin_right = 16 -patch_margin_bottom = 16 -metadata/_edit_use_anchors_ = true - -[node name="ref_block_la1" type="NinePatchRect" parent="ref_A2_lpa"] -layout_mode = 0 -offset_left = 32.0 -offset_top = 70.0 -offset_right = 332.0 -offset_bottom = 454.0 -texture = ExtResource("1_3mc50") -patch_margin_left = 16 -patch_margin_top = 16 -patch_margin_right = 16 -patch_margin_bottom = 16 -metadata/_edit_use_anchors_ = true - -[node name="ref_mshu1" parent="ref_A2_lpa/ref_block_la1" instance=ExtResource("2_gl6qy")] -layout_mode = 0 -offset_left = 20.0 -offset_top = 211.0 -offset_right = 280.0 -offset_bottom = 253.0 -fname = "МШУ" -rname = "А5" -metadata/_edit_use_anchors_ = true - -[node name="ref_mshu2" parent="ref_A2_lpa/ref_block_la1" instance=ExtResource("2_gl6qy")] -layout_mode = 0 -offset_left = 20.0 -offset_top = 89.0 -offset_right = 280.0 -offset_bottom = 131.0 -fname = "МШУ" -rname = "А2" -metadata/_edit_use_anchors_ = true - -[node name="ref_mshu3" parent="ref_A2_lpa/ref_block_la1" instance=ExtResource("2_gl6qy")] -layout_mode = 0 -offset_left = 20.0 -offset_top = 130.0 -offset_right = 280.0 -offset_bottom = 172.0 -fname = "МШУ" -rname = "А3" -metadata/_edit_use_anchors_ = true - -[node name="ref_mshu4" parent="ref_A2_lpa/ref_block_la1" instance=ExtResource("2_gl6qy")] -layout_mode = 0 -offset_left = 20.0 -offset_top = 171.0 -offset_right = 280.0 -offset_bottom = 213.0 -fname = "МШУ" -rname = "А4" -metadata/_edit_use_anchors_ = true - -[node name="ref_mshu5" parent="ref_A2_lpa/ref_block_la1" instance=ExtResource("2_gl6qy")] -layout_mode = 0 -offset_left = 20.0 -offset_top = 252.0 -offset_right = 280.0 -offset_bottom = 294.0 -fname = "МШУ" -rname = "А6" -metadata/_edit_use_anchors_ = true - -[node name="ref_mshu6" parent="ref_A2_lpa/ref_block_la1" instance=ExtResource("2_gl6qy")] -layout_mode = 0 -offset_left = 20.0 -offset_top = 48.0 -offset_right = 280.0 -offset_bottom = 90.0 -fname = "МШУ" -rname = "А1" -metadata/_edit_use_anchors_ = true - -[node name="ref_mshu7" parent="ref_A2_lpa/ref_block_la1" instance=ExtResource("2_gl6qy")] -layout_mode = 0 -offset_left = 20.0 -offset_top = 291.0 -offset_right = 280.0 -offset_bottom = 333.0 -fname = "МШУ" -rname = "А7" -metadata/_edit_use_anchors_ = true - -[node name="ref_mshu8" parent="ref_A2_lpa/ref_block_la1" instance=ExtResource("2_gl6qy")] -layout_mode = 0 -offset_left = 20.0 -offset_top = 334.0 -offset_right = 280.0 -offset_bottom = 376.0 -fname = "МШУ" -rname = "А8" -metadata/_edit_use_anchors_ = true - -[node name="lbl_la" type="Label" parent="ref_A2_lpa/ref_block_la1"] -layout_mode = 0 -offset_left = 89.0 -offset_top = 17.0 -offset_right = 200.0 -offset_bottom = 41.0 -text = "Модули ЛА6А45" -metadata/_edit_use_anchors_ = true - -[node name="ref_bpch" type="NinePatchRect" parent="ref_A2_lpa"] -layout_mode = 0 -offset_left = 32.0 -offset_top = 458.0 -offset_right = 332.0 -offset_bottom = 600.0 -texture = ExtResource("1_3mc50") -patch_margin_left = 16 -patch_margin_top = 16 -patch_margin_right = 16 -patch_margin_bottom = 16 -metadata/_edit_use_anchors_ = true - -[node name="lbl_bpch" type="Label" parent="ref_A2_lpa/ref_bpch"] -layout_mode = 0 -offset_left = 135.0 -offset_top = 16.0 -offset_right = 167.0 -offset_bottom = 40.0 -text = "БПЧ" -metadata/_edit_use_anchors_ = true - -[node name="ref_og" parent="ref_A2_lpa/ref_bpch" instance=ExtResource("2_gl6qy")] -layout_mode = 2 -offset_left = 20.0 -offset_top = 36.0 -offset_right = 280.0 -offset_bottom = 78.0 -fname = "Модуль ОГ" -rname = "А23" -metadata/_edit_use_anchors_ = true - -[node name="ref_geterodin" parent="ref_A2_lpa/ref_bpch" instance=ExtResource("2_gl6qy")] -layout_mode = 0 -offset_left = 20.0 -offset_top = 85.0 -offset_right = 280.0 -offset_bottom = 127.0 -fname = "Гетеродин" -rname = "А10" -metadata/_edit_use_anchors_ = true - -[node name="ref_block_la2" type="NinePatchRect" parent="ref_A2_lpa"] -layout_mode = 0 -offset_left = 33.0 -offset_top = 605.0 -offset_right = 333.0 -offset_bottom = 989.0 -texture = ExtResource("1_3mc50") -patch_margin_left = 16 -patch_margin_top = 16 -patch_margin_right = 16 -patch_margin_bottom = 16 -metadata/_edit_use_anchors_ = true - -[node name="ref_mshu9" parent="ref_A2_lpa/ref_block_la2" instance=ExtResource("2_gl6qy")] -layout_mode = 0 -offset_left = 20.0 -offset_top = 48.0 -offset_right = 280.0 -offset_bottom = 90.0 -fname = "МШУ" -rname = "А9" -metadata/_edit_use_anchors_ = true - -[node name="ref_mshu10" parent="ref_A2_lpa/ref_block_la2" instance=ExtResource("2_gl6qy")] -layout_mode = 0 -offset_left = 20.0 -offset_top = 89.0 -offset_right = 280.0 -offset_bottom = 131.0 -fname = "МШУ" -rname = "А10" -metadata/_edit_use_anchors_ = true - -[node name="ref_mshu11" parent="ref_A2_lpa/ref_block_la2" instance=ExtResource("2_gl6qy")] -layout_mode = 0 -offset_left = 20.0 -offset_top = 130.0 -offset_right = 280.0 -offset_bottom = 172.0 -fname = "МШУ" -rname = "А11" -metadata/_edit_use_anchors_ = true - -[node name="ref_mshu12" parent="ref_A2_lpa/ref_block_la2" instance=ExtResource("2_gl6qy")] -layout_mode = 0 -offset_left = 20.0 -offset_top = 171.0 -offset_right = 280.0 -offset_bottom = 213.0 -fname = "МШУ" -rname = "А12" -metadata/_edit_use_anchors_ = true - -[node name="ref_mshu13" parent="ref_A2_lpa/ref_block_la2" instance=ExtResource("2_gl6qy")] -layout_mode = 0 -offset_left = 20.0 -offset_top = 211.0 -offset_right = 280.0 -offset_bottom = 253.0 -fname = "МШУ" -rname = "А13" -metadata/_edit_use_anchors_ = true - -[node name="ref_mshu14" parent="ref_A2_lpa/ref_block_la2" instance=ExtResource("2_gl6qy")] -layout_mode = 0 -offset_left = 20.0 -offset_top = 252.0 -offset_right = 280.0 -offset_bottom = 294.0 -fname = "МШУ" -rname = "А14" -metadata/_edit_use_anchors_ = true - -[node name="ref_mshu15" parent="ref_A2_lpa/ref_block_la2" instance=ExtResource("2_gl6qy")] -layout_mode = 0 -offset_left = 20.0 -offset_top = 291.0 -offset_right = 280.0 -offset_bottom = 333.0 -fname = "МШУ" -rname = "А15" -metadata/_edit_use_anchors_ = true - -[node name="ref_mshu16" parent="ref_A2_lpa/ref_block_la2" instance=ExtResource("2_gl6qy")] -layout_mode = 0 -offset_left = 20.0 -offset_top = 334.0 -offset_right = 280.0 -offset_bottom = 376.0 -fname = "МШУ" -rname = "А16" -metadata/_edit_use_anchors_ = true - -[node name="lbl_la" type="Label" parent="ref_A2_lpa/ref_block_la2"] -layout_mode = 0 -offset_left = 89.0 -offset_top = 17.0 -offset_right = 200.0 -offset_bottom = 41.0 -text = "Модули ЛА6А45" -metadata/_edit_use_anchors_ = true - -[node name="lbl_lpa" type="Label" parent="ref_A2_lpa"] -layout_mode = 0 -offset_left = 169.0 -offset_top = 28.0 -offset_right = 197.0 -offset_bottom = 52.0 -text = "ЛПА" -metadata/_edit_use_anchors_ = true - -[node name="lbl_A" type="Label" parent="ref_A2_lpa"] -layout_mode = 0 -offset_left = 302.0 -offset_top = 16.0 -offset_right = 330.0 -offset_bottom = 40.0 -text = "A2 -" -metadata/_edit_use_anchors_ = true diff --git a/scenes/pribor-afsp-l/pribor-afsp.tscn b/scenes/pribor-afsp/pribor-afsp.tscn similarity index 87% rename from scenes/pribor-afsp-l/pribor-afsp.tscn rename to scenes/pribor-afsp/pribor-afsp.tscn index 5ba1ff06..356c685c 100644 --- a/scenes/pribor-afsp-l/pribor-afsp.tscn +++ b/scenes/pribor-afsp/pribor-afsp.tscn @@ -1,16 +1,21 @@ -[gd_scene load_steps=3 format=3 uid="uid://cpsbybk4r6t8d"] +[gd_scene load_steps=4 format=3 uid="uid://cpsbybk4r6t8d"] -[ext_resource type="Texture2D" uid="uid://c4mdrmk7h638f" path="res://data/nine-patch-round.png" id="1_u001h"] -[ext_resource type="PackedScene" uid="uid://d3iqb5e4g81m5" path="res://scenes/контроль/element_h.tscn" id="2_jr174"] +[ext_resource type="Script" path="res://scenes/контроль/прибор.gd" id="1_7i12q"] +[ext_resource type="Texture2D" uid="uid://c4mdrmk7h638f" path="res://data/nine-patch-round.png" id="2_won25"] +[ext_resource type="PackedScene" uid="uid://d3iqb5e4g81m5" path="res://scenes/контроль/элемент-г.tscn" id="3_7rc2x"] -[node name="pribor_UF" type="Node2D"] +[node name="pribor_afsp" type="Control"] +layout_mode = 3 +anchors_preset = 0 +script = ExtResource("1_7i12q") [node name="ref_A1_lpa" type="NinePatchRect" parent="."] +layout_mode = 0 offset_left = 25.0 offset_top = 121.0 offset_right = 378.0 offset_bottom = 1128.0 -texture = ExtResource("1_u001h") +texture = ExtResource("2_won25") patch_margin_left = 16 patch_margin_top = 16 patch_margin_right = 16 @@ -22,13 +27,13 @@ offset_left = 32.0 offset_top = 70.0 offset_right = 332.0 offset_bottom = 454.0 -texture = ExtResource("1_u001h") +texture = ExtResource("2_won25") patch_margin_left = 16 patch_margin_top = 16 patch_margin_right = 16 patch_margin_bottom = 16 -[node name="ref_mshu1" parent="ref_A1_lpa/ref_block_la1" instance=ExtResource("2_jr174")] +[node name="ref_mshu1" parent="ref_A1_lpa/ref_block_la1" instance=ExtResource("3_7rc2x")] layout_mode = 0 offset_left = 20.0 offset_top = 211.0 @@ -37,7 +42,7 @@ offset_bottom = 253.0 fname = "МШУ" rname = "А5" -[node name="ref_mshu2" parent="ref_A1_lpa/ref_block_la1" instance=ExtResource("2_jr174")] +[node name="ref_mshu2" parent="ref_A1_lpa/ref_block_la1" instance=ExtResource("3_7rc2x")] layout_mode = 0 offset_left = 20.0 offset_top = 89.0 @@ -46,7 +51,7 @@ offset_bottom = 131.0 fname = "МШУ" rname = "А2" -[node name="ref_mshu3" parent="ref_A1_lpa/ref_block_la1" instance=ExtResource("2_jr174")] +[node name="ref_mshu3" parent="ref_A1_lpa/ref_block_la1" instance=ExtResource("3_7rc2x")] layout_mode = 0 offset_left = 20.0 offset_top = 130.0 @@ -55,7 +60,7 @@ offset_bottom = 172.0 fname = "МШУ" rname = "А3" -[node name="ref_mshu4" parent="ref_A1_lpa/ref_block_la1" instance=ExtResource("2_jr174")] +[node name="ref_mshu4" parent="ref_A1_lpa/ref_block_la1" instance=ExtResource("3_7rc2x")] layout_mode = 0 offset_left = 20.0 offset_top = 171.0 @@ -64,7 +69,7 @@ offset_bottom = 213.0 fname = "МШУ" rname = "А4" -[node name="ref_mshu5" parent="ref_A1_lpa/ref_block_la1" instance=ExtResource("2_jr174")] +[node name="ref_mshu5" parent="ref_A1_lpa/ref_block_la1" instance=ExtResource("3_7rc2x")] layout_mode = 0 offset_left = 20.0 offset_top = 252.0 @@ -73,7 +78,7 @@ offset_bottom = 294.0 fname = "МШУ" rname = "А6" -[node name="ref_mshu6" parent="ref_A1_lpa/ref_block_la1" instance=ExtResource("2_jr174")] +[node name="ref_mshu6" parent="ref_A1_lpa/ref_block_la1" instance=ExtResource("3_7rc2x")] layout_mode = 0 offset_left = 20.0 offset_top = 48.0 @@ -82,7 +87,7 @@ offset_bottom = 90.0 fname = "МШУ" rname = "А1" -[node name="ref_mshu7" parent="ref_A1_lpa/ref_block_la1" instance=ExtResource("2_jr174")] +[node name="ref_mshu7" parent="ref_A1_lpa/ref_block_la1" instance=ExtResource("3_7rc2x")] layout_mode = 0 offset_left = 20.0 offset_top = 291.0 @@ -91,7 +96,7 @@ offset_bottom = 333.0 fname = "МШУ" rname = "А7" -[node name="ref_mshu8" parent="ref_A1_lpa/ref_block_la1" instance=ExtResource("2_jr174")] +[node name="ref_mshu8" parent="ref_A1_lpa/ref_block_la1" instance=ExtResource("3_7rc2x")] layout_mode = 0 offset_left = 20.0 offset_top = 334.0 @@ -114,7 +119,7 @@ offset_left = 32.0 offset_top = 458.0 offset_right = 332.0 offset_bottom = 600.0 -texture = ExtResource("1_u001h") +texture = ExtResource("2_won25") patch_margin_left = 16 patch_margin_top = 16 patch_margin_right = 16 @@ -128,7 +133,7 @@ offset_right = 167.0 offset_bottom = 40.0 text = "БПЧ" -[node name="ref_og" parent="ref_A1_lpa/ref_bpch" instance=ExtResource("2_jr174")] +[node name="ref_og" parent="ref_A1_lpa/ref_bpch" instance=ExtResource("3_7rc2x")] layout_mode = 2 offset_left = 20.0 offset_top = 36.0 @@ -137,7 +142,7 @@ offset_bottom = 78.0 fname = "Модуль ОГ" rname = "А23" -[node name="ref_geterodin" parent="ref_A1_lpa/ref_bpch" instance=ExtResource("2_jr174")] +[node name="ref_geterodin" parent="ref_A1_lpa/ref_bpch" instance=ExtResource("3_7rc2x")] layout_mode = 0 offset_left = 20.0 offset_top = 85.0 @@ -152,13 +157,13 @@ offset_left = 33.0 offset_top = 605.0 offset_right = 333.0 offset_bottom = 989.0 -texture = ExtResource("1_u001h") +texture = ExtResource("2_won25") patch_margin_left = 16 patch_margin_top = 16 patch_margin_right = 16 patch_margin_bottom = 16 -[node name="ref_mshu9" parent="ref_A1_lpa/ref_block_la2" instance=ExtResource("2_jr174")] +[node name="ref_mshu9" parent="ref_A1_lpa/ref_block_la2" instance=ExtResource("3_7rc2x")] layout_mode = 0 offset_left = 20.0 offset_top = 48.0 @@ -167,7 +172,7 @@ offset_bottom = 90.0 fname = "МШУ" rname = "А9" -[node name="ref_mshu10" parent="ref_A1_lpa/ref_block_la2" instance=ExtResource("2_jr174")] +[node name="ref_mshu10" parent="ref_A1_lpa/ref_block_la2" instance=ExtResource("3_7rc2x")] layout_mode = 0 offset_left = 20.0 offset_top = 89.0 @@ -176,7 +181,7 @@ offset_bottom = 131.0 fname = "МШУ" rname = "А10" -[node name="ref_mshu11" parent="ref_A1_lpa/ref_block_la2" instance=ExtResource("2_jr174")] +[node name="ref_mshu11" parent="ref_A1_lpa/ref_block_la2" instance=ExtResource("3_7rc2x")] layout_mode = 0 offset_left = 20.0 offset_top = 130.0 @@ -185,7 +190,7 @@ offset_bottom = 172.0 fname = "МШУ" rname = "А11" -[node name="ref_mshu12" parent="ref_A1_lpa/ref_block_la2" instance=ExtResource("2_jr174")] +[node name="ref_mshu12" parent="ref_A1_lpa/ref_block_la2" instance=ExtResource("3_7rc2x")] layout_mode = 0 offset_left = 20.0 offset_top = 171.0 @@ -194,7 +199,7 @@ offset_bottom = 213.0 fname = "МШУ" rname = "А12" -[node name="ref_mshu13" parent="ref_A1_lpa/ref_block_la2" instance=ExtResource("2_jr174")] +[node name="ref_mshu13" parent="ref_A1_lpa/ref_block_la2" instance=ExtResource("3_7rc2x")] layout_mode = 0 offset_left = 20.0 offset_top = 211.0 @@ -203,7 +208,7 @@ offset_bottom = 253.0 fname = "МШУ" rname = "А13" -[node name="ref_mshu14" parent="ref_A1_lpa/ref_block_la2" instance=ExtResource("2_jr174")] +[node name="ref_mshu14" parent="ref_A1_lpa/ref_block_la2" instance=ExtResource("3_7rc2x")] layout_mode = 0 offset_left = 20.0 offset_top = 252.0 @@ -212,7 +217,7 @@ offset_bottom = 294.0 fname = "МШУ" rname = "А14" -[node name="ref_mshu15" parent="ref_A1_lpa/ref_block_la2" instance=ExtResource("2_jr174")] +[node name="ref_mshu15" parent="ref_A1_lpa/ref_block_la2" instance=ExtResource("3_7rc2x")] layout_mode = 0 offset_left = 20.0 offset_top = 291.0 @@ -221,7 +226,7 @@ offset_bottom = 333.0 fname = "МШУ" rname = "А15" -[node name="ref_mshu16" parent="ref_A1_lpa/ref_block_la2" instance=ExtResource("2_jr174")] +[node name="ref_mshu16" parent="ref_A1_lpa/ref_block_la2" instance=ExtResource("3_7rc2x")] layout_mode = 0 offset_left = 20.0 offset_top = 334.0 @@ -255,11 +260,12 @@ offset_bottom = 40.0 text = "A1" [node name="ref_A2_lpa" type="NinePatchRect" parent="."] +layout_mode = 0 offset_left = 414.0 offset_top = 121.0 offset_right = 767.0 offset_bottom = 1128.0 -texture = ExtResource("1_u001h") +texture = ExtResource("2_won25") patch_margin_left = 16 patch_margin_top = 16 patch_margin_right = 16 @@ -271,13 +277,13 @@ offset_left = 32.0 offset_top = 70.0 offset_right = 332.0 offset_bottom = 454.0 -texture = ExtResource("1_u001h") +texture = ExtResource("2_won25") patch_margin_left = 16 patch_margin_top = 16 patch_margin_right = 16 patch_margin_bottom = 16 -[node name="ref_mshu1" parent="ref_A2_lpa/ref_block_la1" instance=ExtResource("2_jr174")] +[node name="ref_mshu1" parent="ref_A2_lpa/ref_block_la1" instance=ExtResource("3_7rc2x")] layout_mode = 0 offset_left = 20.0 offset_top = 211.0 @@ -286,7 +292,7 @@ offset_bottom = 253.0 fname = "МШУ" rname = "А5" -[node name="ref_mshu2" parent="ref_A2_lpa/ref_block_la1" instance=ExtResource("2_jr174")] +[node name="ref_mshu2" parent="ref_A2_lpa/ref_block_la1" instance=ExtResource("3_7rc2x")] layout_mode = 0 offset_left = 20.0 offset_top = 89.0 @@ -295,7 +301,7 @@ offset_bottom = 131.0 fname = "МШУ" rname = "А2" -[node name="ref_mshu3" parent="ref_A2_lpa/ref_block_la1" instance=ExtResource("2_jr174")] +[node name="ref_mshu3" parent="ref_A2_lpa/ref_block_la1" instance=ExtResource("3_7rc2x")] layout_mode = 0 offset_left = 20.0 offset_top = 130.0 @@ -304,7 +310,7 @@ offset_bottom = 172.0 fname = "МШУ" rname = "А3" -[node name="ref_mshu4" parent="ref_A2_lpa/ref_block_la1" instance=ExtResource("2_jr174")] +[node name="ref_mshu4" parent="ref_A2_lpa/ref_block_la1" instance=ExtResource("3_7rc2x")] layout_mode = 0 offset_left = 20.0 offset_top = 171.0 @@ -313,7 +319,7 @@ offset_bottom = 213.0 fname = "МШУ" rname = "А4" -[node name="ref_mshu5" parent="ref_A2_lpa/ref_block_la1" instance=ExtResource("2_jr174")] +[node name="ref_mshu5" parent="ref_A2_lpa/ref_block_la1" instance=ExtResource("3_7rc2x")] layout_mode = 0 offset_left = 20.0 offset_top = 252.0 @@ -322,7 +328,7 @@ offset_bottom = 294.0 fname = "МШУ" rname = "А6" -[node name="ref_mshu6" parent="ref_A2_lpa/ref_block_la1" instance=ExtResource("2_jr174")] +[node name="ref_mshu6" parent="ref_A2_lpa/ref_block_la1" instance=ExtResource("3_7rc2x")] layout_mode = 0 offset_left = 20.0 offset_top = 48.0 @@ -331,7 +337,7 @@ offset_bottom = 90.0 fname = "МШУ" rname = "А1" -[node name="ref_mshu7" parent="ref_A2_lpa/ref_block_la1" instance=ExtResource("2_jr174")] +[node name="ref_mshu7" parent="ref_A2_lpa/ref_block_la1" instance=ExtResource("3_7rc2x")] layout_mode = 0 offset_left = 20.0 offset_top = 291.0 @@ -340,7 +346,7 @@ offset_bottom = 333.0 fname = "МШУ" rname = "А7" -[node name="ref_mshu8" parent="ref_A2_lpa/ref_block_la1" instance=ExtResource("2_jr174")] +[node name="ref_mshu8" parent="ref_A2_lpa/ref_block_la1" instance=ExtResource("3_7rc2x")] layout_mode = 0 offset_left = 20.0 offset_top = 334.0 @@ -363,7 +369,7 @@ offset_left = 32.0 offset_top = 458.0 offset_right = 332.0 offset_bottom = 600.0 -texture = ExtResource("1_u001h") +texture = ExtResource("2_won25") patch_margin_left = 16 patch_margin_top = 16 patch_margin_right = 16 @@ -377,7 +383,7 @@ offset_right = 167.0 offset_bottom = 40.0 text = "БПЧ" -[node name="ref_og" parent="ref_A2_lpa/ref_bpch" instance=ExtResource("2_jr174")] +[node name="ref_og" parent="ref_A2_lpa/ref_bpch" instance=ExtResource("3_7rc2x")] layout_mode = 2 offset_left = 20.0 offset_top = 36.0 @@ -386,7 +392,7 @@ offset_bottom = 78.0 fname = "Модуль ОГ" rname = "А23" -[node name="ref_geterodin" parent="ref_A2_lpa/ref_bpch" instance=ExtResource("2_jr174")] +[node name="ref_geterodin" parent="ref_A2_lpa/ref_bpch" instance=ExtResource("3_7rc2x")] layout_mode = 0 offset_left = 20.0 offset_top = 85.0 @@ -401,13 +407,13 @@ offset_left = 33.0 offset_top = 605.0 offset_right = 333.0 offset_bottom = 989.0 -texture = ExtResource("1_u001h") +texture = ExtResource("2_won25") patch_margin_left = 16 patch_margin_top = 16 patch_margin_right = 16 patch_margin_bottom = 16 -[node name="ref_mshu9" parent="ref_A2_lpa/ref_block_la2" instance=ExtResource("2_jr174")] +[node name="ref_mshu9" parent="ref_A2_lpa/ref_block_la2" instance=ExtResource("3_7rc2x")] layout_mode = 0 offset_left = 20.0 offset_top = 48.0 @@ -416,7 +422,7 @@ offset_bottom = 90.0 fname = "МШУ" rname = "А9" -[node name="ref_mshu10" parent="ref_A2_lpa/ref_block_la2" instance=ExtResource("2_jr174")] +[node name="ref_mshu10" parent="ref_A2_lpa/ref_block_la2" instance=ExtResource("3_7rc2x")] layout_mode = 0 offset_left = 20.0 offset_top = 89.0 @@ -425,7 +431,7 @@ offset_bottom = 131.0 fname = "МШУ" rname = "А10" -[node name="ref_mshu11" parent="ref_A2_lpa/ref_block_la2" instance=ExtResource("2_jr174")] +[node name="ref_mshu11" parent="ref_A2_lpa/ref_block_la2" instance=ExtResource("3_7rc2x")] layout_mode = 0 offset_left = 20.0 offset_top = 130.0 @@ -434,7 +440,7 @@ offset_bottom = 172.0 fname = "МШУ" rname = "А11" -[node name="ref_mshu12" parent="ref_A2_lpa/ref_block_la2" instance=ExtResource("2_jr174")] +[node name="ref_mshu12" parent="ref_A2_lpa/ref_block_la2" instance=ExtResource("3_7rc2x")] layout_mode = 0 offset_left = 20.0 offset_top = 171.0 @@ -443,7 +449,7 @@ offset_bottom = 213.0 fname = "МШУ" rname = "А12" -[node name="ref_mshu13" parent="ref_A2_lpa/ref_block_la2" instance=ExtResource("2_jr174")] +[node name="ref_mshu13" parent="ref_A2_lpa/ref_block_la2" instance=ExtResource("3_7rc2x")] layout_mode = 0 offset_left = 20.0 offset_top = 211.0 @@ -452,7 +458,7 @@ offset_bottom = 253.0 fname = "МШУ" rname = "А13" -[node name="ref_mshu14" parent="ref_A2_lpa/ref_block_la2" instance=ExtResource("2_jr174")] +[node name="ref_mshu14" parent="ref_A2_lpa/ref_block_la2" instance=ExtResource("3_7rc2x")] layout_mode = 0 offset_left = 20.0 offset_top = 252.0 @@ -461,7 +467,7 @@ offset_bottom = 294.0 fname = "МШУ" rname = "А14" -[node name="ref_mshu15" parent="ref_A2_lpa/ref_block_la2" instance=ExtResource("2_jr174")] +[node name="ref_mshu15" parent="ref_A2_lpa/ref_block_la2" instance=ExtResource("3_7rc2x")] layout_mode = 0 offset_left = 20.0 offset_top = 291.0 @@ -470,7 +476,7 @@ offset_bottom = 333.0 fname = "МШУ" rname = "А15" -[node name="ref_mshu16" parent="ref_A2_lpa/ref_block_la2" instance=ExtResource("2_jr174")] +[node name="ref_mshu16" parent="ref_A2_lpa/ref_block_la2" instance=ExtResource("3_7rc2x")] layout_mode = 0 offset_left = 20.0 offset_top = 334.0 @@ -505,11 +511,12 @@ text = "A2 " [node name="lbl_header" type="Label" parent="."] +layout_mode = 0 offset_left = -6.0 offset_top = 81.0 offset_right = 849.0 offset_bottom = 107.0 theme_override_font_sizes/font_size = 22 -text = "Контроль исправности прибора АФС-П Левый борт" +text = "Контроль исправности прибора АФС-П" horizontal_alignment = 1 vertical_alignment = 1 diff --git a/scenes/pribor-prd-k/kasseta-fs-kd.tscn b/scenes/pribor-prd-k/kasseta-fs-kd.tscn index 8462ec6a..fb896b8f 100644 --- a/scenes/pribor-prd-k/kasseta-fs-kd.tscn +++ b/scenes/pribor-prd-k/kasseta-fs-kd.tscn @@ -2,7 +2,7 @@ [ext_resource type="Texture2D" uid="uid://c4mdrmk7h638f" path="res://data/nine-patch-round.png" id="1_1jljp"] [ext_resource type="Script" path="res://scenes/контроль/кассета.gd" id="2_01mea"] -[ext_resource type="PackedScene" uid="uid://p2suppildvq0" path="res://scenes/контроль/element_v.tscn" id="3_kqnvt"] +[ext_resource type="PackedScene" uid="uid://p2suppildvq0" path="res://scenes/контроль/элемент-в.tscn" id="3_kqnvt"] [node name="kasseta_fs_kd" type="NinePatchRect"] offset_right = 310.0 diff --git a/scenes/pribor-prd-k/pribor-prd-k.tscn b/scenes/pribor-prd-k/pribor-prd-k.tscn index d68e0413..5ce323bb 100644 --- a/scenes/pribor-prd-k/pribor-prd-k.tscn +++ b/scenes/pribor-prd-k/pribor-prd-k.tscn @@ -1,13 +1,13 @@ [gd_scene load_steps=9 format=3 uid="uid://m5s87q7m66lj"] [ext_resource type="Script" path="res://scenes/контроль/прибор.gd" id="1_7kjrl"] -[ext_resource type="PackedScene" uid="uid://d3iqb5e4g81m5" path="res://scenes/контроль/element_h.tscn" id="1_8dmgr"] +[ext_resource type="PackedScene" uid="uid://d3iqb5e4g81m5" path="res://scenes/контроль/элемент-г.tscn" id="1_8dmgr"] [ext_resource type="Texture2D" uid="uid://c4mdrmk7h638f" path="res://data/nine-patch-round.png" id="2_14h25"] -[ext_resource type="PackedScene" uid="uid://bk1655p4e8y4u" path="res://scenes/pribor-prd-n/kasseta-u-5.tscn" id="3_7orfk"] -[ext_resource type="PackedScene" uid="uid://bkxblfoj7ejv0" path="res://scenes/контроль/um1535.tscn" id="6_fmhtx"] -[ext_resource type="PackedScene" uid="uid://cg2ecoyms7xy2" path="res://scenes/pribor-prd-k/kasseta-p-1.tscn" id="7_cjjs2"] +[ext_resource type="PackedScene" uid="uid://bk1655p4e8y4u" path="res://scenes/контроль/кассета-у-5.tscn" id="3_7orfk"] +[ext_resource type="PackedScene" uid="uid://bkxblfoj7ejv0" path="res://scenes/контроль/ум1535.tscn" id="6_fmhtx"] +[ext_resource type="PackedScene" uid="uid://dbxdb7lo7kofv" path="res://scenes/контроль/кассета-п-1.tscn" id="7_cjjs2"] [ext_resource type="PackedScene" uid="uid://bmagw8nd0ulhj" path="res://scenes/pribor-prd-k/kasseta-fs-kd.tscn" id="7_ia27q"] -[ext_resource type="PackedScene" uid="uid://dq31j24gv5vi4" path="res://scenes/pribor-prd-k/kasseta-p-2.tscn" id="8_6fdp7"] +[ext_resource type="PackedScene" uid="uid://dq31j24gv5vi4" path="res://scenes/контроль/кассета-п-2.tscn" id="8_6fdp7"] [node name="pribor_prd_k" type="Control"] layout_mode = 3 diff --git a/scenes/pribor-prd-n/kasseta-fs-nd.tscn b/scenes/pribor-prd-n/kasseta-fs-nd.tscn index de453b99..a6d27dce 100644 --- a/scenes/pribor-prd-n/kasseta-fs-nd.tscn +++ b/scenes/pribor-prd-n/kasseta-fs-nd.tscn @@ -2,7 +2,7 @@ [ext_resource type="Texture2D" uid="uid://c4mdrmk7h638f" path="res://data/nine-patch-round.png" id="1_wgdti"] [ext_resource type="Script" path="res://scenes/контроль/кассета.gd" id="2_lxiqt"] -[ext_resource type="PackedScene" uid="uid://p2suppildvq0" path="res://scenes/контроль/element_v.tscn" id="2_mkgdh"] +[ext_resource type="PackedScene" uid="uid://p2suppildvq0" path="res://scenes/контроль/элемент-в.tscn" id="2_mkgdh"] [node name="kasseta_fs_nd" type="NinePatchRect"] offset_right = 310.0 diff --git a/scenes/pribor-prd-n/kasseta-p-1.tscn b/scenes/pribor-prd-n/kasseta-p-1.tscn deleted file mode 100644 index 3fcb4eb2..00000000 --- a/scenes/pribor-prd-n/kasseta-p-1.tscn +++ /dev/null @@ -1,50 +0,0 @@ -[gd_scene load_steps=4 format=3 uid="uid://dbxdb7lo7kofv"] - -[ext_resource type="Texture2D" uid="uid://c4mdrmk7h638f" path="res://data/nine-patch-round.png" id="1_suecd"] -[ext_resource type="Script" path="res://scenes/контроль/кассета.gd" id="2_q7stg"] -[ext_resource type="PackedScene" uid="uid://p2suppildvq0" path="res://scenes/контроль/element_v.tscn" id="3_kkuhl"] - -[node name="kasseta_p_1" type="NinePatchRect"] -offset_right = 310.0 -offset_bottom = 190.0 -texture = ExtResource("1_suecd") -patch_margin_left = 16 -patch_margin_top = 16 -patch_margin_right = 16 -patch_margin_bottom = 16 -script = ExtResource("2_q7stg") - -[node name="ref_A26" parent="." instance=ExtResource("3_kkuhl")] -offset_left = 105.0 -offset_top = 30.0 -offset_right = 155.0 -offset_bottom = 180.0 -fname = "ИП12-50" -rname = "A26" - -[node name="ref_A23" parent="." instance=ExtResource("3_kkuhl")] -offset_left = 155.0 -offset_top = 30.0 -offset_right = 205.0 -offset_bottom = 180.0 -fname = "ИП9-50" -rname = "A23" - -[node name="ref_A24" parent="." instance=ExtResource("3_kkuhl")] -offset_left = 205.0 -offset_top = 30.0 -offset_right = 255.0 -offset_bottom = 180.0 -fname = "ИП9-50" -rname = "A24" - -[node name="lbl_fname" type="Label" parent="."] -self_modulate = Color(1, 1, 1, 0.62) -layout_mode = 0 -offset_left = 5.0 -offset_top = 5.0 -offset_right = 305.0 -offset_bottom = 30.0 -text = "Кассета" -horizontal_alignment = 1 -vertical_alignment = 1 diff --git a/scenes/pribor-prd-n/kasseta-u-5.tscn b/scenes/pribor-prd-n/kasseta-u-5.tscn deleted file mode 100644 index bf13e584..00000000 --- a/scenes/pribor-prd-n/kasseta-u-5.tscn +++ /dev/null @@ -1,74 +0,0 @@ -[gd_scene load_steps=4 format=3 uid="uid://bk1655p4e8y4u"] - -[ext_resource type="Texture2D" uid="uid://c4mdrmk7h638f" path="res://data/nine-patch-round.png" id="1_b7mhj"] -[ext_resource type="Script" path="res://scenes/контроль/кассета.gd" id="2_6e76f"] -[ext_resource type="PackedScene" uid="uid://p2suppildvq0" path="res://scenes/контроль/element_v.tscn" id="3_51mna"] - -[node name="kasseta_u5" type="NinePatchRect"] -offset_right = 310.0 -offset_bottom = 190.0 -texture = ExtResource("1_b7mhj") -patch_margin_left = 16 -patch_margin_top = 16 -patch_margin_right = 16 -patch_margin_bottom = 16 -script = ExtResource("2_6e76f") - -[node name="lbl_fname" type="Label" parent="."] -self_modulate = Color(1, 1, 1, 0.62) -layout_mode = 0 -offset_left = 5.0 -offset_top = 7.0 -offset_right = 305.0 -offset_bottom = 35.0 -text = "Кассета" -horizontal_alignment = 1 -vertical_alignment = 1 - -[node name="ref_A31" parent="." instance=ExtResource("3_51mna")] -offset_left = 5.0 -offset_top = 32.0 -offset_right = 55.0 -offset_bottom = 182.0 -fname = "ИП5-25" -rname = "A31" - -[node name="ref_A37" parent="." instance=ExtResource("3_51mna")] -offset_left = 55.0 -offset_top = 32.0 -offset_right = 105.0 -offset_bottom = 182.0 -fname = "ЯУ-07Б" -rname = "A37" - -[node name="ref_A33" parent="." instance=ExtResource("3_51mna")] -offset_left = 105.0 -offset_top = 32.0 -offset_right = 155.0 -offset_bottom = 182.0 -fname = "ЭМС-Г" -rname = "A33" - -[node name="ref_A34" parent="." instance=ExtResource("3_51mna")] -offset_left = 155.0 -offset_top = 32.0 -offset_right = 205.0 -offset_bottom = 182.0 -fname = "УГ" -rname = "A34" - -[node name="ref_A35" parent="." instance=ExtResource("3_51mna")] -offset_left = 205.0 -offset_top = 32.0 -offset_right = 255.0 -offset_bottom = 182.0 -fname = "УКП" -rname = "A35" - -[node name="ref_A36" parent="." instance=ExtResource("3_51mna")] -offset_left = 254.0 -offset_top = 32.0 -offset_right = 304.0 -offset_bottom = 182.0 -fname = "УКП" -rname = "A36" diff --git a/scenes/pribor-prd-n/pribor-prd-n.tscn b/scenes/pribor-prd-n/pribor-prd-n.tscn index 5489f6ee..25e63d85 100644 --- a/scenes/pribor-prd-n/pribor-prd-n.tscn +++ b/scenes/pribor-prd-n/pribor-prd-n.tscn @@ -1,12 +1,12 @@ [gd_scene load_steps=8 format=3 uid="uid://dnuexoef2nnv5"] [ext_resource type="Script" path="res://scenes/контроль/прибор.gd" id="1_mcea3"] -[ext_resource type="PackedScene" uid="uid://d3iqb5e4g81m5" path="res://scenes/контроль/element_h.tscn" id="2_lpj3d"] +[ext_resource type="PackedScene" uid="uid://d3iqb5e4g81m5" path="res://scenes/контроль/элемент-г.tscn" id="2_lpj3d"] [ext_resource type="Texture2D" uid="uid://c4mdrmk7h638f" path="res://data/nine-patch-round.png" id="4_i1no5"] -[ext_resource type="PackedScene" uid="uid://bk1655p4e8y4u" path="res://scenes/pribor-prd-n/kasseta-u-5.tscn" id="5_ej152"] +[ext_resource type="PackedScene" uid="uid://bk1655p4e8y4u" path="res://scenes/контроль/кассета-у-5.tscn" id="5_ej152"] [ext_resource type="PackedScene" uid="uid://cd5sue1e8iyrv" path="res://scenes/pribor-prd-n/kasseta-fs-nd.tscn" id="6_1p3pi"] -[ext_resource type="PackedScene" uid="uid://dbxdb7lo7kofv" path="res://scenes/pribor-prd-n/kasseta-p-1.tscn" id="7_klldp"] -[ext_resource type="PackedScene" uid="uid://bkxblfoj7ejv0" path="res://scenes/контроль/um1535.tscn" id="8_u7eqo"] +[ext_resource type="PackedScene" uid="uid://dbxdb7lo7kofv" path="res://scenes/контроль/кассета-п-1.tscn" id="7_klldp"] +[ext_resource type="PackedScene" uid="uid://bkxblfoj7ejv0" path="res://scenes/контроль/ум1535.tscn" id="8_u7eqo"] [node name="pribor_prd_n" type="Control"] layout_mode = 3 diff --git a/scenes/pribor-prd-v-1/pribor-prd-v-1.tscn b/scenes/pribor-prd-v-1/pribor-prd-v-1.tscn deleted file mode 100644 index e478db0b..00000000 --- a/scenes/pribor-prd-v-1/pribor-prd-v-1.tscn +++ /dev/null @@ -1,6 +0,0 @@ -[gd_scene format=3 uid="uid://dv45fwc77flro"] - -[node name="pribor_UF" type="Node2D"] - -[node name="test_label" type="Label" parent="."] -text = "Здесь будет схема прибора ПРД-В 1" diff --git a/scenes/pribor-prd-v-2/pribor-prd-v-2.tscn b/scenes/pribor-prd-v-2/pribor-prd-v-2.tscn deleted file mode 100644 index 84fc2313..00000000 --- a/scenes/pribor-prd-v-2/pribor-prd-v-2.tscn +++ /dev/null @@ -1,6 +0,0 @@ -[gd_scene format=3 uid="uid://bn43ofklq62jw"] - -[node name="pribor_UF" type="Node2D"] - -[node name="test_label" type="Label" parent="."] -text = "Здесь будет схема прибора ПРД-В 2" diff --git a/scenes/pribor-prd-v-3/pribor-prd-v-3.tscn b/scenes/pribor-prd-v-3/pribor-prd-v-3.tscn deleted file mode 100644 index 685b606a..00000000 --- a/scenes/pribor-prd-v-3/pribor-prd-v-3.tscn +++ /dev/null @@ -1,6 +0,0 @@ -[gd_scene format=3 uid="uid://cf7le7xc5fbxx"] - -[node name="pribor_UF" type="Node2D"] - -[node name="test_label" type="Label" parent="."] -text = "Здесь будет схема прибора ПРД-В 3" diff --git a/scenes/pribor-prd-v-4/pribor-prd-v-4.tscn b/scenes/pribor-prd-v-4/pribor-prd-v-4.tscn deleted file mode 100644 index fe3b9cca..00000000 --- a/scenes/pribor-prd-v-4/pribor-prd-v-4.tscn +++ /dev/null @@ -1,6 +0,0 @@ -[gd_scene format=3 uid="uid://dhvq0w8gdbqw3"] - -[node name="pribor_UF" type="Node2D"] - -[node name="test_label" type="Label" parent="."] -text = "Здесь будет схема прибора ПРД-В 1" diff --git a/scenes/pribor-prd-v/kasseta-fs-vd.tscn b/scenes/pribor-prd-v/kasseta-fs-vd.tscn new file mode 100644 index 00000000..ad057750 --- /dev/null +++ b/scenes/pribor-prd-v/kasseta-fs-vd.tscn @@ -0,0 +1,59 @@ +[gd_scene load_steps=4 format=3 uid="uid://ctyinijyucgpe"] + +[ext_resource type="Texture2D" uid="uid://c4mdrmk7h638f" path="res://data/nine-patch-round.png" id="1_74guj"] +[ext_resource type="Script" path="res://scenes/контроль/кассета.gd" id="2_mfr0k"] +[ext_resource type="PackedScene" uid="uid://p2suppildvq0" path="res://scenes/контроль/элемент-в.tscn" id="3_w4hiq"] + +[node name="kasseta_fs_vd" type="NinePatchRect"] +offset_right = 310.0 +offset_bottom = 190.0 +texture = ExtResource("1_74guj") +patch_margin_left = 16 +patch_margin_top = 16 +patch_margin_right = 16 +patch_margin_bottom = 16 +script = ExtResource("2_mfr0k") +metadata/Fname = "" + +[node name="lbl_fname" type="Label" parent="."] +self_modulate = Color(1, 1, 1, 0.62) +layout_mode = 0 +offset_left = 5.0 +offset_top = 7.0 +offset_right = 303.0 +offset_bottom = 33.0 +text = "Кассета" +horizontal_alignment = 1 +vertical_alignment = 1 + +[node name="ref_A1" parent="." instance=ExtResource("3_w4hiq")] +offset_left = 55.0 +offset_top = 32.0 +offset_right = 105.0 +offset_bottom = 182.0 +fname = "Модуль ФС" +rname = "A1" + +[node name="ref_A3" parent="." instance=ExtResource("3_w4hiq")] +offset_left = 105.0 +offset_top = 32.0 +offset_right = 155.0 +offset_bottom = 182.0 +fname = "Блок ФС-2" +rname = "A3" + +[node name="ref_A2" parent="." instance=ExtResource("3_w4hiq")] +offset_left = 155.0 +offset_top = 32.0 +offset_right = 205.0 +offset_bottom = 182.0 +fname = "Модуль ФС" +rname = "A2" + +[node name="ref_A4" parent="." instance=ExtResource("3_w4hiq")] +offset_left = 205.0 +offset_top = 32.0 +offset_right = 255.0 +offset_bottom = 182.0 +fname = "Блок ФС-3" +rname = "A4" diff --git a/scenes/pribor-prd-v/pribor-prd-v.tscn b/scenes/pribor-prd-v/pribor-prd-v.tscn new file mode 100644 index 00000000..7e690426 --- /dev/null +++ b/scenes/pribor-prd-v/pribor-prd-v.tscn @@ -0,0 +1,221 @@ +[gd_scene load_steps=8 format=3 uid="uid://cvskpe1ti3p45"] + +[ext_resource type="Script" path="res://scenes/контроль/прибор.gd" id="1_dl7rt"] +[ext_resource type="PackedScene" uid="uid://d3iqb5e4g81m5" path="res://scenes/контроль/элемент-г.tscn" id="2_xpo4b"] +[ext_resource type="Texture2D" uid="uid://c4mdrmk7h638f" path="res://data/nine-patch-round.png" id="3_wyy1b"] +[ext_resource type="PackedScene" uid="uid://bk1655p4e8y4u" path="res://scenes/контроль/кассета-у-5.tscn" id="4_gl2bl"] +[ext_resource type="PackedScene" uid="uid://cd5sue1e8iyrv" path="res://scenes/pribor-prd-n/kasseta-fs-nd.tscn" id="5_nhd2k"] +[ext_resource type="PackedScene" uid="uid://dbxdb7lo7kofv" path="res://scenes/контроль/кассета-п-1.tscn" id="6_d3awr"] +[ext_resource type="PackedScene" uid="uid://bkxblfoj7ejv0" path="res://scenes/контроль/ум1535.tscn" id="7_e22c6"] + +[node name="pribor_prd_n" type="Control"] +layout_mode = 3 +anchors_preset = 0 +offset_left = 15.0 +offset_top = 30.0 +offset_right = 15.0 +offset_bottom = 30.0 +script = ExtResource("1_dl7rt") + +[node name="maa2000_A22" parent="." instance=ExtResource("2_xpo4b")] +layout_mode = 2 +offset_left = 485.0 +offset_top = 877.0 +offset_right = 645.0 +offset_bottom = 942.0 +fname = "MAA2000" +rname = "A22" + +[node name="dou4_A5" parent="." instance=ExtResource("2_xpo4b")] +layout_mode = 2 +offset_left = 485.0 +offset_top = 812.0 +offset_right = 645.0 +offset_bottom = 877.0 +fname = "ДОУ-4" +rname = "A5" + +[node name="maa2000_A23" parent="." instance=ExtResource("2_xpo4b")] +layout_mode = 2 +offset_left = 15.0 +offset_top = 877.0 +offset_right = 175.0 +offset_bottom = 942.0 +fname = "MAA2000" +rname = "A23" + +[node name="dou5_A6" parent="." instance=ExtResource("2_xpo4b")] +layout_mode = 2 +offset_left = 15.0 +offset_top = 812.0 +offset_right = 175.0 +offset_bottom = 877.0 +fname = "ДОУ-5" +rname = "A6" + +[node name="ref_ZZ3" type="NinePatchRect" parent="."] +layout_mode = 0 +offset_left = 175.0 +offset_top = 812.0 +offset_right = 485.0 +offset_bottom = 942.0 +texture = ExtResource("3_wyy1b") +patch_margin_left = 16 +patch_margin_top = 16 +patch_margin_right = 16 +patch_margin_bottom = 16 + +[node name="label" type="Label" parent="ref_ZZ3"] +self_modulate = Color(0.996078, 1, 1, 0.627451) +layout_mode = 0 +offset_left = 10.0 +offset_top = 8.0 +offset_right = 302.0 +offset_bottom = 120.0 +text = "Панель +предохранителей" +horizontal_alignment = 1 +vertical_alignment = 1 + +[node name="lbl_header" type="Label" parent="."] +layout_mode = 0 +offset_left = 20.0 +offset_top = 214.0 +offset_right = 640.0 +offset_bottom = 245.0 +theme_override_font_sizes/font_size = 22 +text = "Контроль исправности прибора ПРД-В" +horizontal_alignment = 1 +vertical_alignment = 1 + +[node name="kasseta_U5" parent="." instance=ExtResource("4_gl2bl")] +layout_mode = 0 +offset_left = 175.0 +offset_top = 242.0 +offset_right = 485.0 +offset_bottom = 432.0 +fname = "Кассета У5" + +[node name="kasseta_FS_VD" parent="." instance=ExtResource("5_nhd2k")] +layout_mode = 0 +offset_left = 175.0 +offset_top = 432.0 +offset_right = 485.0 +offset_bottom = 622.0 +fname = "Кассета ФС-ВД" + +[node name="kasseta_P_1" parent="." instance=ExtResource("6_d3awr")] +layout_mode = 0 +offset_left = 175.0 +offset_top = 622.0 +offset_right = 485.0 +offset_bottom = 812.0 +fname = "Кассета П-1" + +[node name="um1535_A7" parent="." instance=ExtResource("7_e22c6")] +layout_mode = 0 +offset_left = 485.0 +offset_top = 242.0 +offset_right = 645.0 +offset_bottom = 337.0 +fname = "УМ1535А" +rname = "A7" + +[node name="um1535_A8" parent="." instance=ExtResource("7_e22c6")] +layout_mode = 0 +offset_left = 485.0 +offset_top = 337.0 +offset_right = 645.0 +offset_bottom = 432.0 +fname = "УМ1535А" +rname = "A8" + +[node name="um1535_A9" parent="." instance=ExtResource("7_e22c6")] +layout_mode = 0 +offset_left = 485.0 +offset_top = 432.0 +offset_right = 645.0 +offset_bottom = 527.0 +fname = "УМ1535А" +rname = "A9" + +[node name="um1535_A10" parent="." instance=ExtResource("7_e22c6")] +layout_mode = 0 +offset_left = 485.0 +offset_top = 527.0 +offset_right = 645.0 +offset_bottom = 622.0 +fname = "УМ1535А" +rname = "A10" + +[node name="um1535_A11" parent="." instance=ExtResource("7_e22c6")] +layout_mode = 0 +offset_left = 485.0 +offset_top = 622.0 +offset_right = 645.0 +offset_bottom = 717.0 +fname = "УМ1535А" +rname = "A11" + +[node name="um1535_A12" parent="." instance=ExtResource("7_e22c6")] +layout_mode = 0 +offset_left = 485.0 +offset_top = 717.0 +offset_right = 645.0 +offset_bottom = 812.0 +fname = "УМ1535А" +rname = "A11" + +[node name="um1535_A13" parent="." instance=ExtResource("7_e22c6")] +layout_mode = 0 +offset_left = 15.0 +offset_top = 242.0 +offset_right = 175.0 +offset_bottom = 337.0 +fname = "УМ1535А" +rname = "A13" + +[node name="um1535_A14" parent="." instance=ExtResource("7_e22c6")] +layout_mode = 0 +offset_left = 15.0 +offset_top = 337.0 +offset_right = 175.0 +offset_bottom = 432.0 +fname = "УМ1535А" +rname = "A14" + +[node name="um1535_A15" parent="." instance=ExtResource("7_e22c6")] +layout_mode = 0 +offset_left = 15.0 +offset_top = 432.0 +offset_right = 175.0 +offset_bottom = 527.0 +fname = "УМ1535А" +rname = "A15" + +[node name="um1535_A16" parent="." instance=ExtResource("7_e22c6")] +layout_mode = 0 +offset_left = 15.0 +offset_top = 527.0 +offset_right = 175.0 +offset_bottom = 622.0 +fname = "УМ1535А" +rname = "A16" + +[node name="um1535_A17" parent="." instance=ExtResource("7_e22c6")] +layout_mode = 0 +offset_left = 15.0 +offset_top = 622.0 +offset_right = 175.0 +offset_bottom = 717.0 +fname = "УМ1535А" +rname = "A17" + +[node name="um1535_A18" parent="." instance=ExtResource("7_e22c6")] +layout_mode = 0 +offset_left = 15.0 +offset_top = 717.0 +offset_right = 175.0 +offset_bottom = 812.0 +fname = "УМ1535А" +rname = "A18" diff --git a/scenes/pribor-rtr/pribor-rtr.tscn b/scenes/pribor-rtr/pribor-rtr.tscn index a58f09fa..e231dbed 100644 --- a/scenes/pribor-rtr/pribor-rtr.tscn +++ b/scenes/pribor-rtr/pribor-rtr.tscn @@ -1,6 +1,6 @@ [gd_scene load_steps=3 format=3 uid="uid://5uv1idl3lqet"] -[ext_resource type="PackedScene" uid="uid://d3iqb5e4g81m5" path="res://scenes/контроль/element_h.tscn" id="2_e75yj"] +[ext_resource type="PackedScene" uid="uid://d3iqb5e4g81m5" path="res://scenes/контроль/элемент-г.tscn" id="2_e75yj"] [ext_resource type="Texture2D" uid="uid://c4mdrmk7h638f" path="res://data/nine-patch-round.png" id="3_a2683"] [node name="pribor_UF" type="Node2D"] diff --git a/scenes/pribor-uf/pribor-uf.tscn b/scenes/pribor-uf/pribor-uf.tscn index 9158fae9..8702b3c4 100644 --- a/scenes/pribor-uf/pribor-uf.tscn +++ b/scenes/pribor-uf/pribor-uf.tscn @@ -1,7 +1,7 @@ [gd_scene load_steps=3 format=3 uid="uid://dwxn2puh462nl"] [ext_resource type="Texture2D" uid="uid://c4mdrmk7h638f" path="res://data/nine-patch-round.png" id="2_ho0da"] -[ext_resource type="PackedScene" uid="uid://p2suppildvq0" path="res://scenes/контроль/element_v.tscn" id="3_dp78y"] +[ext_resource type="PackedScene" uid="uid://p2suppildvq0" path="res://scenes/контроль/элемент-в.tscn" id="3_dp78y"] [node name="pribor_UF" type="Node2D"] diff --git a/scenes/pribor-uyep/pribor-uyep.tscn b/scenes/pribor-uyep/pribor-uyep.tscn index 4709aa7e..259344d2 100644 --- a/scenes/pribor-uyep/pribor-uyep.tscn +++ b/scenes/pribor-uyep/pribor-uyep.tscn @@ -1,7 +1,7 @@ [gd_scene load_steps=3 format=3 uid="uid://bs7h65e7bodp3"] [ext_resource type="Texture2D" uid="uid://c4mdrmk7h638f" path="res://data/nine-patch-round.png" id="1_6olof"] -[ext_resource type="PackedScene" uid="uid://p2suppildvq0" path="res://scenes/контроль/element_v.tscn" id="2_cf6tc"] +[ext_resource type="PackedScene" uid="uid://p2suppildvq0" path="res://scenes/контроль/элемент-в.tscn" id="2_cf6tc"] [node name="pribor_UF" type="Node2D"] diff --git a/scripts/capsrpb.gd b/scenes/scripts/capsrpb.gd similarity index 100% rename from scripts/capsrpb.gd rename to scenes/scripts/capsrpb.gd diff --git a/scripts/file-table.gd b/scenes/scripts/file-table.gd similarity index 100% rename from scripts/file-table.gd rename to scenes/scripts/file-table.gd diff --git a/scripts/hotkeys.gd b/scenes/scripts/hotkeys.gd similarity index 100% rename from scripts/hotkeys.gd rename to scenes/scripts/hotkeys.gd diff --git a/scripts/interfer.gd b/scenes/scripts/interfer.gd similarity index 100% rename from scripts/interfer.gd rename to scenes/scripts/interfer.gd diff --git a/scripts/mercator.gd b/scenes/scripts/mercator.gd similarity index 100% rename from scripts/mercator.gd rename to scenes/scripts/mercator.gd diff --git a/scripts/modbus.gd b/scenes/scripts/modbus.gd similarity index 100% rename from scripts/modbus.gd rename to scenes/scripts/modbus.gd diff --git a/scripts/repnetwork.gd b/scenes/scripts/repnetwork.gd similarity index 100% rename from scripts/repnetwork.gd rename to scenes/scripts/repnetwork.gd diff --git a/scripts/repsettings.gd b/scenes/scripts/repsettings.gd similarity index 100% rename from scripts/repsettings.gd rename to scenes/scripts/repsettings.gd diff --git a/scripts/signaller.gd b/scenes/scripts/signaller.gd similarity index 69% rename from scripts/signaller.gd rename to scenes/scripts/signaller.gd index 7571d9ee..f0ef23f9 100644 --- a/scripts/signaller.gd +++ b/scenes/scripts/signaller.gd @@ -3,51 +3,70 @@ class_name Signaller extends Node ## Обмен сигналами между узлами. Здесь объявлены сигналы, которые используют ## два и более узла, из разных файлов. Должен быть помещён в автозагрузку. +## Вызывается при переходе в режим [b]Работа[/b] +signal режим_работа() -## Вызывается, когда оператор переводит программу в режим "Автомат целей и помех" + +## Вызывается при переходе в режим [b]Контроль[/b] +signal режим_контроль() + + +## Вызывается при переходе в режим [b]Журнал[/b] +signal режим_журнал() + + +## Вызывается при переходе в режим [b]ЭМС[/b] +signal режим_эмс() + + +## Вызывается при переходе в режим [b]Настройка[/b] +signal режим_настройки() + + +## Вызывается, когда оператор переводит программу в режим [b]Автомат выбора цели и помехи[/b] signal full_auto() -## Вызывается, когда оператор переводит программу в режим "Автомат выбора целей" +## Вызывается, когда оператор переводит программу в режим [b]Автомат выбора цели[/b] signal threat_auto() -## Вызывается, когда оператор переводит программу в режим "Автомат выбора помехи" +## Вызывается, когда оператор переводит программу в режим [b]Автомат выбора помехи[/b] signal interfer_auto() -## Вызывается, когда оператор переводит программу в режим "Ручной" +## Вызывается, когда оператор переводит программу в режим [b]Ручной[/b] signal manual_control() -## Вызывается, когда оператор выбирает цель в таблице. +## Вызывается, когда оператор выбирает цель в таблице.[br] ## [param threats] - Словарь. Ключ - идентификатор (номер) цели. Значение - цель.[br] ## [param th] - Выбранная цель.[br] signal threat_selected(threats: Dictionary, th) -## Вызывается, когда оператор снимает выбор цели. +## Вызывается, когда оператор снимает выбор цели.[br] ## [param threats] - Словарь. Ключ - идентификатор (номер) цели. Значение - цель.[br] ## [param th] - Ранее выбранная цель.[br] signal threat_unselected(threats: Dictionary, th) -## Вызывается, когда пользователь переключает режим окна программы полный экран - оконный +## Вызывается, когда пользователь переключает режим окна программы полный экран - оконный.[br] ## [param id] - Идентификатор окна. Присваевается вручную. signal full_screen(id: int) -## Вызывается, когда пользователь выбирает цель +## Вызывается, когда пользователь выбирает цель.[br] ## [param th_id] - Отметка цели на экране signal rto_threat_sel (th_id: int) -## Вызывается, когда пользователь нажимает на значёк цели +## Вызывается, когда пользователь нажимает на значёк цели.[br] ## [param th_id] - Отметка цели на экране signal bip_pressed (th_id: int) -## Вызывается, когда пользователь снимает выделение с цели +## Вызывается, когда пользователь снимает выделение с цели.[br] ## [param th_id] - Отметка цели на экране signal rto_threat_unsel (th_id: int) @@ -56,25 +75,26 @@ signal rto_threat_unsel (th_id: int) signal rto_threat_unsel_all () -## Вызывается, когда пользователь выбирает помеху +## Вызывается, когда пользователь выбирает помеху.[br] ## [param btn] - Нажатая кнопка помехи. signal interfer_init (btn: PanelContainer, fs_arr: Array) -## Вызывается, когда выбраны цели для постановки помех +## Вызывается, когда выбраны цели для постановки помех.[br] ## [param btn] - Нажатая кнопка помехи.[br] ## [param sel_threats] - Cписок целей. signal interfer_create (btn: PanelContainer, sel_threats: Array, fs_arr: Array) -## Вызывается, когда создалась новая помеха -## [param ecm] - Новая помеха +## Вызывается, когда создалась новая помеха.[br] +## [param ecm] - Новая помеха.[br] signal interfer_new (ecm: interfer.Interfer) -## Вызывается, когда отключается действующая помеха -## [param ecm] - Новая помеха, [param ecms] - словарь помех -## [param ecms] - словарь id помех и связанных с ними целей +## Вызывается, когда отключается действующая помеха.[br] +## [param ecm] - Новая помеха.[br] +## [param ecms] - словарь помех.[br] +## [param thrs] - словарь id помех и связанных с ними целей.[br] signal interfer_off (ecm: interfer.Interfer, ecms: Dictionary, thrs: Dictionary) @@ -82,31 +102,31 @@ signal interfer_off (ecm: interfer.Interfer, ecms: Dictionary, thrs: Dictionary) signal interfer_off_all () -## Вызывается, когда отключается действующая помеха +## Вызывается, когда отключается действующая помеха.[br] ## [param ecm] - Выбранная помеха signal interfer_selected (ecm: interfer.Interfer) -## Вызывается, когда отключается выбираем помеху по сектору в таблице +## Вызывается, когда отключается выбираем помеху по сектору в таблице.[br] ## [param ecm] - Выбранная помеха signal fs_selected(ecm: interfer.Interfer) -## Вызывается при запросе изменения уровня детализации карты +## Вызывается при запросе изменения уровня детализации карты.[br] ## [param zoom] - Вновь установленный уровень детализации signal zoom_changed(zoom: int) -## Вызывается при завершении изменения уровня детализации карты +## Вызывается при завершении изменения уровня детализации карты.[br] ## [param zoom] - Вновь установленный уровень детализации signal zoom_complete(zoom: int) -## Вызывается при изменении координат карты. +## Вызывается при изменении координат карты.[br] ## [param lan], [param lat] - Вновь установленные координаты. signal map_coords_changed(lan: float, lat: float) -## Вызывается при изменении размера изображения для отображения карты. +## Вызывается при изменении размера изображения для отображения карты.[br] ## [param mode] - Вновь установленный режим signal map_mode_changed(mode: int) diff --git a/scripts/tcp5p28.gd b/scenes/scripts/tcp5p28.gd similarity index 100% rename from scripts/tcp5p28.gd rename to scenes/scripts/tcp5p28.gd diff --git a/scripts/threats.gd b/scenes/scripts/threats.gd similarity index 100% rename from scripts/threats.gd rename to scenes/scripts/threats.gd diff --git a/scripts/tools.gd b/scenes/scripts/tools.gd similarity index 100% rename from scripts/tools.gd rename to scenes/scripts/tools.gd diff --git a/scripts/yau07.gd b/scenes/scripts/yau07.gd similarity index 100% rename from scripts/yau07.gd rename to scenes/scripts/yau07.gd diff --git a/scripts/yems-boards.gd b/scenes/scripts/yems-boards.gd similarity index 100% rename from scripts/yems-boards.gd rename to scenes/scripts/yems-boards.gd diff --git a/scripts/yems-consts.gd b/scenes/scripts/yems-consts.gd similarity index 100% rename from scripts/yems-consts.gd rename to scenes/scripts/yems-consts.gd diff --git a/scripts/yems-devs.gd b/scenes/scripts/yems-devs.gd similarity index 100% rename from scripts/yems-devs.gd rename to scenes/scripts/yems-devs.gd diff --git a/scenes/tabs-switch/tab-switch.gd b/scenes/tabs-switch/tab-switch.gd index c78202c1..e72baa06 100644 --- a/scenes/tabs-switch/tab-switch.gd +++ b/scenes/tabs-switch/tab-switch.gd @@ -1,3 +1,7 @@ extends TabContainer func _enter_tree() -> void: repnetwork.logger_page = $Журнал + + +func _on_tab_changed(tab): + pass # Replace with function body. diff --git a/scenes/tabs-switch/tab-switch.tscn b/scenes/tabs-switch/tab-switch.tscn index 2e151567..746e897d 100644 --- a/scenes/tabs-switch/tab-switch.tscn +++ b/scenes/tabs-switch/tab-switch.tscn @@ -12,7 +12,7 @@ [sub_resource type="StyleBoxFlat" id="StyleBoxFlat_o1r22"] -[node name="Panel" type="Panel"] +[node name="panel" type="Panel"] offset_right = 1600.0 offset_bottom = 1200.0 theme_override_styles/panel = SubResource("StyleBoxEmpty_fe3e1") @@ -57,3 +57,5 @@ theme_override_styles/normal = SubResource("StyleBoxFlat_o1r22") text = "Исправно" horizontal_alignment = 1 vertical_alignment = 1 + +[connection signal="tab_changed" from="tab_switch" to="tab_switch" method="_on_tab_changed"] diff --git a/scenes/pribor-prd-k/kasseta-p-1.tscn b/scenes/контроль/кассета-п-1.tscn similarity index 91% rename from scenes/pribor-prd-k/kasseta-p-1.tscn rename to scenes/контроль/кассета-п-1.tscn index d3ed7e9a..3a1ad510 100644 --- a/scenes/pribor-prd-k/kasseta-p-1.tscn +++ b/scenes/контроль/кассета-п-1.tscn @@ -1,8 +1,8 @@ -[gd_scene load_steps=4 format=3 uid="uid://cg2ecoyms7xy2"] +[gd_scene load_steps=4 format=3 uid="uid://dbxdb7lo7kofv"] [ext_resource type="Texture2D" uid="uid://c4mdrmk7h638f" path="res://data/nine-patch-round.png" id="1_sbi2k"] [ext_resource type="Script" path="res://scenes/контроль/кассета.gd" id="2_7ydqi"] -[ext_resource type="PackedScene" uid="uid://p2suppildvq0" path="res://scenes/контроль/element_v.tscn" id="3_gg14a"] +[ext_resource type="PackedScene" uid="uid://p2suppildvq0" path="res://scenes/контроль/элемент-в.tscn" id="3_gg14a"] [node name="kasseta_p_1" type="NinePatchRect"] offset_right = 165.0 diff --git a/scenes/pribor-prd-k/kasseta-p-2.tscn b/scenes/контроль/кассета-п-2.tscn similarity index 94% rename from scenes/pribor-prd-k/kasseta-p-2.tscn rename to scenes/контроль/кассета-п-2.tscn index 3fd57599..b0ff7583 100644 --- a/scenes/pribor-prd-k/kasseta-p-2.tscn +++ b/scenes/контроль/кассета-п-2.tscn @@ -2,7 +2,7 @@ [ext_resource type="Texture2D" uid="uid://c4mdrmk7h638f" path="res://data/nine-patch-round.png" id="1_jghyg"] [ext_resource type="Script" path="res://scenes/контроль/кассета.gd" id="2_mdnod"] -[ext_resource type="PackedScene" uid="uid://p2suppildvq0" path="res://scenes/контроль/element_v.tscn" id="3_4a27g"] +[ext_resource type="PackedScene" uid="uid://p2suppildvq0" path="res://scenes/контроль/элемент-в.tscn" id="3_4a27g"] [node name="kasseta_p_2" type="NinePatchRect"] offset_right = 120.0 diff --git a/scenes/pribor-prd-k/kasseta-u-5.tscn b/scenes/контроль/кассета-у-5.tscn similarity index 93% rename from scenes/pribor-prd-k/kasseta-u-5.tscn rename to scenes/контроль/кассета-у-5.tscn index 331b1074..61cab59e 100644 --- a/scenes/pribor-prd-k/kasseta-u-5.tscn +++ b/scenes/контроль/кассета-у-5.tscn @@ -1,8 +1,8 @@ -[gd_scene load_steps=4 format=3 uid="uid://3yi2fc54tkei"] +[gd_scene load_steps=4 format=3 uid="uid://bk1655p4e8y4u"] [ext_resource type="Texture2D" uid="uid://c4mdrmk7h638f" path="res://data/nine-patch-round.png" id="1_bnifj"] [ext_resource type="Script" path="res://scenes/контроль/кассета.gd" id="2_6hp1m"] -[ext_resource type="PackedScene" uid="uid://p2suppildvq0" path="res://scenes/контроль/element_v.tscn" id="3_picsk"] +[ext_resource type="PackedScene" uid="uid://p2suppildvq0" path="res://scenes/контроль/элемент-в.tscn" id="3_picsk"] [node name="kasseta_u5" type="NinePatchRect"] offset_right = 310.0 diff --git a/scenes/контроль/контроль.gd b/scenes/контроль/контроль.gd index 43f8c3ea..d7fb65bd 100644 --- a/scenes/контроль/контроль.gd +++ b/scenes/контроль/контроль.gd @@ -6,23 +6,23 @@ extends Panel const PRIBORS_RES = \ { - 'pribor_afsp_l': ['res://scenes/pribor-afsp-l/pribor-afsp.tscn', 'Контроль исправности прибора АФСП левый'], - 'pribor_afsp_r': ['res://scenes/pribor-afsp-r/pribor-afsp.tscn', 'Контроль исправности прибора АФСП правый'], - '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-1/pribor-prd-v-1.tscn', 'Контроль исправности прибора ПРД-В 1'], - 'pribor_prd_v_2': ['res://scenes/pribor-prd-v-2/pribor-prd-v-2.tscn', 'Контроль исправности прибора ПРД-В 2'], - 'pribor_prd_v_3': ['res://scenes/pribor-prd-v-3/pribor-prd-v-3.tscn', 'Контроль исправности прибора ПРД-В 3'], - 'pribor_prd_v_4': ['res://scenes/pribor-prd-v-4/pribor-prd-v-4.tscn', 'Контроль исправности прибора ПРД-В 4'], - 'pribor_rtr': ['res://scenes/pribor-rtr/pribor-rtr.tscn', 'Контроль исправности прибора РТР'], - 'pribor_uf': ['res://scenes/pribor-uf/pribor-uf.tscn', 'Контроль исправности прибора УФ'], - 'pribor_uyep': ['res://scenes/pribor-uyep/pribor-uyep.tscn', 'Контроль исправности прибора УЭП'], + 'pribor_afsp_l': ['res://scenes/pribor-afsp/pribor-afsp.tscn', 'Контроль исправности прибора АФСП левый'], + 'pribor_afsp_r': ['res://scenes/pribor-afsp/pribor-afsp.tscn', 'Контроль исправности прибора АФСП правый'], + '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-rtr/pribor-rtr.tscn', 'Контроль исправности прибора РТР'], + 'pribor_uf': ['res://scenes/pribor-uf/pribor-uf.tscn', 'Контроль исправности прибора УФ'], + 'pribor_uyep': ['res://scenes/pribor-uyep/pribor-uyep.tscn', 'Контроль исправности прибора УЭП'], } diff --git a/scenes/контроль/um1535.tscn b/scenes/контроль/ум1535.tscn similarity index 98% rename from scenes/контроль/um1535.tscn rename to scenes/контроль/ум1535.tscn index cd25c0e4..f8ee7938 100644 --- a/scenes/контроль/um1535.tscn +++ b/scenes/контроль/ум1535.tscn @@ -4,7 +4,7 @@ [ext_resource type="Texture2D" uid="uid://dnreyfh3cd1k2" path="res://data/состояние-исправности-1.png" id="2_ad1dj"] [ext_resource type="Texture2D" uid="uid://c6booa8753u5t" path="res://data/состояние-исправности-2.png" id="3_vxg7f"] [ext_resource type="Texture2D" uid="uid://c4mdrmk7h638f" path="res://data/nine-patch-round.png" id="4_1bnn6"] -[ext_resource type="PackedScene" uid="uid://dyjtmfm4u58mu" path="res://scenes/контроль/indicator_h.tscn" id="5_3i5am"] +[ext_resource type="PackedScene" uid="uid://dyjtmfm4u58mu" path="res://scenes/контроль/уровень.tscn" id="5_3i5am"] [sub_resource type="StyleBoxEmpty" id="StyleBoxEmpty_3nd2u"] diff --git a/scenes/контроль/indicator_h.tscn b/scenes/контроль/уровень.tscn similarity index 100% rename from scenes/контроль/indicator_h.tscn rename to scenes/контроль/уровень.tscn diff --git a/scenes/контроль/element_v.tscn b/scenes/контроль/элемент-в.tscn similarity index 100% rename from scenes/контроль/element_v.tscn rename to scenes/контроль/элемент-в.tscn diff --git a/scenes/контроль/element_h.tscn b/scenes/контроль/элемент-г.tscn similarity index 100% rename from scenes/контроль/element_h.tscn rename to scenes/контроль/элемент-г.tscn diff --git a/scenes/работа/работа.tscn b/scenes/работа/работа.tscn index cd392a9f..8d5a2107 100644 --- a/scenes/работа/работа.tscn +++ b/scenes/работа/работа.tscn @@ -7,7 +7,7 @@ [ext_resource type="PackedScene" uid="uid://dymo732qc2doa" path="res://scenes/count-all/count-all-pad.tscn" id="6_e3re7"] [ext_resource type="PackedScene" uid="uid://bwti82byphl68" path="res://scenes/count-danger/count_danger_pad.tscn" id="7_2arls"] [ext_resource type="PackedScene" uid="uid://da7w3vkhadfwe" path="res://scenes/button-flat/button-flat.tscn" id="8_k0iv2"] -[ext_resource type="PackedScene" uid="uid://0uqi1ghf7sma" path="res://scenes/btn-scale/btn-scale.tscn" id="9_oey3x"] +[ext_resource type="PackedScene" uid="uid://0uqi1ghf7sma" path="res://scenes/button-scale/btn-scale.tscn" id="9_oey3x"] [ext_resource type="PackedScene" uid="uid://bbq6nklh36yij" path="res://scenes/tilemap/tilemap.tscn" id="10_gtwyg"] [ext_resource type="PackedScene" uid="uid://b5kjdyxuwsot5" path="res://scenes/diagram/diagram.tscn" id="11_b6su4"] [ext_resource type="Shader" path="res://shaders/tilemap.gdshader" id="11_ekapd"] @@ -106,7 +106,6 @@ offset_right = 111.0 offset_bottom = 953.0 size_flags_horizontal = 3 size_flags_vertical = 3 -strips_rotation = 2578.31 text = "Вид" toggle_mode = true @@ -118,7 +117,6 @@ offset_right = 1106.0 offset_bottom = 1112.0 size_flags_horizontal = 3 size_flags_vertical = 3 -strips_rotation = 2578.31 text = "Подавление" toggle_mode = true @@ -142,7 +140,6 @@ layout_mode = 2 size_flags_horizontal = 3 size_flags_vertical = 3 tooltip_text = "Кнопка для выбора сектора при помощи клика мышкой" -strips_rotation = 2578.31 text = "Строб" toggle_mode = true metadata/state = 0 @@ -152,7 +149,6 @@ layout_mode = 2 size_flags_horizontal = 3 size_flags_vertical = 3 tooltip_text = "Кнопка для выбора сектора при помощи клика мышкой" -strips_rotation = 2578.31 text = "Цель" toggle_mode = true metadata/state = 1 @@ -162,7 +158,6 @@ layout_mode = 2 size_flags_horizontal = 3 size_flags_vertical = 3 tooltip_text = "Кнопка для выбора сектора при помощи клика мышкой" -strips_rotation = 2578.31 text = "Сектор" toggle_mode = true metadata/state = 2 From 88d4f07aad5844df02a5f2824b75d631993475e6 Mon Sep 17 00:00:00 2001 From: sasha80 Date: Thu, 25 Apr 2024 14:13:41 +0300 Subject: [PATCH 07/39] =?UTF-8?q?=D0=98=D1=81=D0=BF=D1=80=D0=B0=D0=B2?= =?UTF-8?q?=D0=BB=D0=B5=D0=BD=D0=B8=D0=B5.=20=D0=98=D1=81=D0=BF=D1=80?= =?UTF-8?q?=D0=B0=D0=B2=D0=BB=D0=B5=D0=BD=D0=BD=D0=B8=D1=8F=20=D0=B4=D0=BB?= =?UTF-8?q?=D1=8F=20=D0=AF=D0=A3-07?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- scenes/scripts/yau07.gd | 77 ++++++++++++++++++++--------------------- 1 file changed, 38 insertions(+), 39 deletions(-) diff --git a/scenes/scripts/yau07.gd b/scenes/scripts/yau07.gd index f0dc79a3..9a43cc56 100644 --- a/scenes/scripts/yau07.gd +++ b/scenes/scripts/yau07.gd @@ -2,10 +2,10 @@ extends Node ## Протокол ячейки ЯУ-07 -const BUFFER_SIZE = 2048 ## Размер буфера для приёма датаграмм const ONLINE_TIMEOUT = 5.0 ## Время ожидания пакета от ячейки, секунды const RESEND_TIMEOUT = 0.3 ## Задержка для повторной отправки команды, секунды const RETRY_COUNT = 5 ## Количество повторных отправок +const BUFFER_SIZE = 2048 ## Размер буфера для приёма датаграмм ## Ячейка ЯУ-07 @@ -13,41 +13,42 @@ class YaU07: ## Коды выполняемых команд enum CmdCode { + READ_ISA = 0, ## Код команды "читать порт ISA" ячейки ЯУ-07 + WRITE_ISA = 1, ## Код команды "записать порт ISA" ячейки ЯУ-07 + WRITE_BLOCK = 60, ## Код команды "записать блок данных ISA" внешней шины ячейки ЯУ-07 READ_BLOCK = 61, ## Код команды "читать блок данных ISA" внешней шины ячейки ЯУ-07 - READ_ISA = 0, ## Код команды "читать порт ISA" ячейки ЯУ-07 - WRITE_BLOCK = 60, ## Код команды "записать блок данных ISA" внешней шины ячейки ЯУ-07 - WRITE_ISA = 1, ## Код команды "записать порт ISA" ячейки ЯУ-07 } ## Состояние автомата выполнения команды enum CmdState { - DONE, ## Команда выполнена - FAIL, ## Команда не выполнена - SEND, ## Буфер готов для отправки UNCK, ## Номер команды не ининциирован - WAIT ## Ожидание выполнения + SEND, ## Буфер готов для отправки + WAIT, ## Ожидание выполнения + DONE, ## Команда выполнена + FAIL ## Команда не выполнена } + signal line_changed(unit: YaU07) ## Вызывается когда меняется состояние связи с ячейкой signal command_done(unit: YaU07) ## Вызывается после выполнения команды signal command_fail(unit: YaU07) ## Вызывается если возникла ошибка при выполнении команды и команда не выполнена - signal line_changed(unit: YaU07) ## Вызывается когда меняется состояние связи с ячейкой - signal parse_failed(unit: YaU07) ## Вызывается если возникла ошибка при разборе пакета + signal parse_failed(unit: YaU07) - var cmd_data: = PackedByteArray() ## Данные команды. Устанавливается в ЯУ-07 - var cmd_num_rx: = 0 ## Номер команды принятый - var cmd_num_tx: = 0 ## Номер команды переданный - var cmd_result: = 1 ## Результат выполнения команды. Устанавливается в ЯУ-07 - var cmd_retry: = 0 ## Счётчик оставшихся попыток выполнить команду - var cmd_state: = CmdState.UNCK ## Состояние выполнения команды - var cmd_tick_rx: = 0 ## Время последнего приёма команды - var cmd_tick_tx: = 0 ## Время последней отправки команды - var isa_block: = {} ## Результат выполнения команды "читать массив из порта" - var isa_ports: = {} ## Результат выполнения команды "читать порт" - var name: = String() ## Имя - var online: = false ## Состояние связи с ячейкой - var status: = PackedByteArray() ## Поле "состояние прибора" - var tx_data: = PackedByteArray() ## Буфер отправленный - var tx_len: = 0 ## Длина последнего отправленного пакета + var name: = String() + var cmd_num_rx: = 0 ## Номер команды принятый + var cmd_num_tx: = 0 ## Номер команды переданный + var cmd_state = CmdState.UNCK ## Состояние выполнения команды + var cmd_result: = 1 ## Результат выполнения команды. Устанавливается в ЯУ-07 + var cmd_data: = PackedByteArray() ## Данные команды. Устанавливается в ЯУ-07 + var cmd_retry = 0 ## Счётчик оставшихся попыток выполнить команду + var tick = 0.0 ## Текущее тик-время в мс + var cmd_tick_tx = 0.0 ## Время последней отправки команды + var cmd_tick_rx = 0.0 ## Время последнего приёма команды + var status: = PackedByteArray() ## Поле "состояние прибора" + var tx_data: = PackedByteArray() ## Буфер отправленный + var tx_len = 0 ## Длина последнего отправленного пакета + var isa_ports = {} ## Результат выполнения команды "читать порт" + var isa_block = {} ## Результат выполнения команды "читать массив из порта" + var online = false ## Состояние связи с ячейкой func _to_string() -> String: return String('яу07: %s %s' % [self.name, ['отключен', 'на связи'][int(online)]]) @@ -56,9 +57,11 @@ class YaU07: self.name = nm tx_data.resize(BUFFER_SIZE) tx_data.fill(0) + tick = 0.0 - func process(tick: float): + func process(delta: float): + tick += delta if online and ((tick - cmd_tick_rx) > ONLINE_TIMEOUT): online = false emit_signal('line_changed', self) @@ -94,7 +97,6 @@ class YaU07: var ports_count = ports_data.size() tx_len = ports_count * 2 + 8 - tx_data.encode_u16(0, cmd_retry) # Исправление для сетевого стека "nm-callback" процессоров STM tx_data.encode_u16(2, cmd_num_tx) if cmd_code == CmdCode.WRITE_ISA: @@ -131,18 +133,15 @@ class YaU07: tx_data.encode_u16(9, int(port[0])) cmd_state = CmdState.SEND return true - - - ## Возвращает код команды ЯУ-07. - ## [param rx_data] - Принятые данные.[br] - ## Возвращает [b]null[/b] - Если код команды не найден.[br] - ## Возвращает [b]0...255[/b] - Код команды.[br] + ## Возвращает код команды ЯУ-07 + ## rx_data - Принятые данные + ## Возвращает - Код команды не найден, 0...255 - код команды func get_cmd_code(rx_data: PackedByteArray): var rx_data_len = rx_data.size() if rx_data_len < 7: return null - var status_len = rx_data.decode_u16(6) # Длина массива байтового "состояние прибора" + var status_len = rx_data.decode_u16(6) # Длина массива байтового "состояние прибора" if rx_data_len <= (status_len + 6): # Нет поля "ответ на команду", разбор пакета завершить return null var cmd_code_pos = status_len + 8 # Положение в приёмном буфере "кода команды" @@ -187,10 +186,10 @@ class YaU07: ## Заполняет состояние прибора данными прочитанными из портов ЯУ-07 ## для команд "читать порты" или "записать порты"[br] - ## [param rx_data] - Принятые данные.[br] - ## Возвращает [b]true[/b] - Данные обработаны успешно.[br] - ## Возвращает [b]false[/b] - Данные не обработаны из за ошибки.[br] - func parse(rx_data: PackedByteArray, tick: int) -> bool: + ## [param rx_data] - Принятые данные[br] + ## Возвращает [b]true[/b] - Данные обработаны успешно[br] + ## Возвращает [b]false[/b] - Данные не обработаны из за ошибки[br] + func parse(rx_data: PackedByteArray) -> bool: cmd_tick_rx = tick @@ -199,7 +198,7 @@ class YaU07: emit_signal('line_changed', self) var rx_data_len = rx_data.size() - if rx_data_len < 11: + if rx_data_len < 10: return false cmd_num_rx = rx_data.decode_u16(2) From 972ac2fc23bdd397ab605dcb7635be40de3ef214 Mon Sep 17 00:00:00 2001 From: sasha80 Date: Thu, 25 Apr 2024 14:13:41 +0300 Subject: [PATCH 08/39] =?UTF-8?q?=D0=98=D1=81=D0=BF=D1=80=D0=B0=D0=B2?= =?UTF-8?q?=D0=BB=D0=B5=D0=BD=D0=B8=D0=B5.=20=D0=98=D1=81=D0=BF=D1=80?= =?UTF-8?q?=D0=B0=D0=B2=D0=BB=D0=B5=D0=BD=D0=BD=D0=B8=D1=8F=20=D0=B4=D0=BB?= =?UTF-8?q?=D1=8F=20=D0=AF=D0=A3-07?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- scenes/scripts/yau07.gd | 76 ++++++++++++++++++++--------------------- 1 file changed, 38 insertions(+), 38 deletions(-) diff --git a/scenes/scripts/yau07.gd b/scenes/scripts/yau07.gd index f0dc79a3..e3832ad8 100644 --- a/scenes/scripts/yau07.gd +++ b/scenes/scripts/yau07.gd @@ -2,10 +2,10 @@ extends Node ## Протокол ячейки ЯУ-07 -const BUFFER_SIZE = 2048 ## Размер буфера для приёма датаграмм const ONLINE_TIMEOUT = 5.0 ## Время ожидания пакета от ячейки, секунды const RESEND_TIMEOUT = 0.3 ## Задержка для повторной отправки команды, секунды const RETRY_COUNT = 5 ## Количество повторных отправок +const BUFFER_SIZE = 2048 ## Размер буфера для приёма датаграмм ## Ячейка ЯУ-07 @@ -13,41 +13,42 @@ class YaU07: ## Коды выполняемых команд enum CmdCode { + READ_ISA = 0, ## Код команды "читать порт ISA" ячейки ЯУ-07 + WRITE_ISA = 1, ## Код команды "записать порт ISA" ячейки ЯУ-07 + WRITE_BLOCK = 60, ## Код команды "записать блок данных ISA" внешней шины ячейки ЯУ-07 READ_BLOCK = 61, ## Код команды "читать блок данных ISA" внешней шины ячейки ЯУ-07 - READ_ISA = 0, ## Код команды "читать порт ISA" ячейки ЯУ-07 - WRITE_BLOCK = 60, ## Код команды "записать блок данных ISA" внешней шины ячейки ЯУ-07 - WRITE_ISA = 1, ## Код команды "записать порт ISA" ячейки ЯУ-07 } ## Состояние автомата выполнения команды enum CmdState { - DONE, ## Команда выполнена - FAIL, ## Команда не выполнена - SEND, ## Буфер готов для отправки UNCK, ## Номер команды не ининциирован - WAIT ## Ожидание выполнения + SEND, ## Буфер готов для отправки + WAIT, ## Ожидание выполнения + DONE, ## Команда выполнена + FAIL ## Команда не выполнена } + signal line_changed(unit: YaU07) ## Вызывается когда меняется состояние связи с ячейкой signal command_done(unit: YaU07) ## Вызывается после выполнения команды signal command_fail(unit: YaU07) ## Вызывается если возникла ошибка при выполнении команды и команда не выполнена - signal line_changed(unit: YaU07) ## Вызывается когда меняется состояние связи с ячейкой - signal parse_failed(unit: YaU07) ## Вызывается если возникла ошибка при разборе пакета + signal parse_failed(unit: YaU07) - var cmd_data: = PackedByteArray() ## Данные команды. Устанавливается в ЯУ-07 - var cmd_num_rx: = 0 ## Номер команды принятый - var cmd_num_tx: = 0 ## Номер команды переданный - var cmd_result: = 1 ## Результат выполнения команды. Устанавливается в ЯУ-07 - var cmd_retry: = 0 ## Счётчик оставшихся попыток выполнить команду - var cmd_state: = CmdState.UNCK ## Состояние выполнения команды - var cmd_tick_rx: = 0 ## Время последнего приёма команды - var cmd_tick_tx: = 0 ## Время последней отправки команды - var isa_block: = {} ## Результат выполнения команды "читать массив из порта" - var isa_ports: = {} ## Результат выполнения команды "читать порт" - var name: = String() ## Имя - var online: = false ## Состояние связи с ячейкой - var status: = PackedByteArray() ## Поле "состояние прибора" - var tx_data: = PackedByteArray() ## Буфер отправленный - var tx_len: = 0 ## Длина последнего отправленного пакета + var name: = String() + var cmd_num_rx: = 0 ## Номер команды принятый + var cmd_num_tx: = 0 ## Номер команды переданный + var cmd_state = CmdState.UNCK ## Состояние выполнения команды + var cmd_result: = 1 ## Результат выполнения команды. Устанавливается в ЯУ-07 + var cmd_data: = PackedByteArray() ## Данные команды. Устанавливается в ЯУ-07 + var cmd_retry = 0 ## Счётчик оставшихся попыток выполнить команду + var tick = 0.0 ## Текущее тик-время в мс + var cmd_tick_tx = 0.0 ## Время последней отправки команды + var cmd_tick_rx = 0.0 ## Время последнего приёма команды + var status: = PackedByteArray() ## Поле "состояние прибора" + var tx_data: = PackedByteArray() ## Буфер отправленный + var tx_len = 0 ## Длина последнего отправленного пакета + var isa_ports = {} ## Результат выполнения команды "читать порт" + var isa_block = {} ## Результат выполнения команды "читать массив из порта" + var online = false ## Состояние связи с ячейкой func _to_string() -> String: return String('яу07: %s %s' % [self.name, ['отключен', 'на связи'][int(online)]]) @@ -56,9 +57,11 @@ class YaU07: self.name = nm tx_data.resize(BUFFER_SIZE) tx_data.fill(0) + tick = 0.0 - func process(tick: float): + func process(delta: float): + tick += delta if online and ((tick - cmd_tick_rx) > ONLINE_TIMEOUT): online = false emit_signal('line_changed', self) @@ -131,18 +134,15 @@ class YaU07: tx_data.encode_u16(9, int(port[0])) cmd_state = CmdState.SEND return true - - - ## Возвращает код команды ЯУ-07. - ## [param rx_data] - Принятые данные.[br] - ## Возвращает [b]null[/b] - Если код команды не найден.[br] - ## Возвращает [b]0...255[/b] - Код команды.[br] + ## Возвращает код команды ЯУ-07 + ## rx_data - Принятые данные + ## Возвращает - Код команды не найден, 0...255 - код команды func get_cmd_code(rx_data: PackedByteArray): var rx_data_len = rx_data.size() if rx_data_len < 7: return null - var status_len = rx_data.decode_u16(6) # Длина массива байтового "состояние прибора" + var status_len = rx_data.decode_u16(6) # Длина массива байтового "состояние прибора" if rx_data_len <= (status_len + 6): # Нет поля "ответ на команду", разбор пакета завершить return null var cmd_code_pos = status_len + 8 # Положение в приёмном буфере "кода команды" @@ -187,10 +187,10 @@ class YaU07: ## Заполняет состояние прибора данными прочитанными из портов ЯУ-07 ## для команд "читать порты" или "записать порты"[br] - ## [param rx_data] - Принятые данные.[br] - ## Возвращает [b]true[/b] - Данные обработаны успешно.[br] - ## Возвращает [b]false[/b] - Данные не обработаны из за ошибки.[br] - func parse(rx_data: PackedByteArray, tick: int) -> bool: + ## [param rx_data] - Принятые данные[br] + ## Возвращает [b]true[/b] - Данные обработаны успешно[br] + ## Возвращает [b]false[/b] - Данные не обработаны из за ошибки[br] + func parse(rx_data: PackedByteArray) -> bool: cmd_tick_rx = tick @@ -199,7 +199,7 @@ class YaU07: emit_signal('line_changed', self) var rx_data_len = rx_data.size() - if rx_data_len < 11: + if rx_data_len < 10: return false cmd_num_rx = rx_data.decode_u16(2) From d41efe751682a0769e9a9e74cefa90a46ef1e7a0 Mon Sep 17 00:00:00 2001 From: sasha80 Date: Thu, 25 Apr 2024 14:39:35 +0300 Subject: [PATCH 09/39] =?UTF-8?q?=D0=98=D1=81=D0=BF=D1=80=D0=B0=D0=B2?= =?UTF-8?q?=D0=BB=D0=B5=D0=BD=D0=B8=D0=B5.=20=D0=98=D1=81=D0=BF=D1=80?= =?UTF-8?q?=D0=B0=D0=B2=D0=BB=D0=B5=D0=BD=D0=BD=D0=B8=D1=8F=20=D0=B4=D0=BB?= =?UTF-8?q?=D1=8F=20=D0=AF=D0=A3-07?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- scenes/scripts/yau07.gd | 1 + 1 file changed, 1 insertion(+) diff --git a/scenes/scripts/yau07.gd b/scenes/scripts/yau07.gd index 9a43cc56..e3832ad8 100644 --- a/scenes/scripts/yau07.gd +++ b/scenes/scripts/yau07.gd @@ -97,6 +97,7 @@ class YaU07: var ports_count = ports_data.size() tx_len = ports_count * 2 + 8 + tx_data.encode_u16(0, cmd_retry) # Исправление для сетевого стека "nm-callback" процессоров STM tx_data.encode_u16(2, cmd_num_tx) if cmd_code == CmdCode.WRITE_ISA: From 04bce5c57e77af86654c48aa4efb21ef732fc093 Mon Sep 17 00:00:00 2001 From: sasha80 Date: Thu, 25 Apr 2024 16:14:07 +0300 Subject: [PATCH 10/39] =?UTF-8?q?=D0=A0=D0=B5=D1=84=D0=B0=D0=BA=D1=82?= =?UTF-8?q?=D0=BE=D1=80.=20=D0=9F=D0=BE=D1=82=D0=BE=D0=BC=D1=83=20=D1=87?= =?UTF-8?q?=D1=82=D0=BE=20=D0=BF=D1=80=D0=B8=D0=B1=D0=BE=D1=80=D1=8B!?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- project.godot | 30 +++++++++++----------- {scenes/scripts => scripts}/capsrpb.gd | 0 {scenes/scripts => scripts}/file-table.gd | 0 {scenes/scripts => scripts}/hotkeys.gd | 0 {scenes/scripts => scripts}/interfer.gd | 0 {scenes/scripts => scripts}/mercator.gd | 0 {scenes/scripts => scripts}/modbus.gd | 0 {scenes/scripts => scripts}/repnetwork.gd | 0 {scenes/scripts => scripts}/repsettings.gd | 0 {scenes/scripts => scripts}/signaller.gd | 0 {scenes/scripts => scripts}/tcp5p28.gd | 0 {scenes/scripts => scripts}/threats.gd | 0 {scenes/scripts => scripts}/tools.gd | 0 {scenes/scripts => scripts}/yau07.gd | 0 {scenes/scripts => scripts}/yems-boards.gd | 0 {scenes/scripts => scripts}/yems-consts.gd | 0 {scenes/scripts => scripts}/yems-devs.gd | 0 17 files changed, 15 insertions(+), 15 deletions(-) rename {scenes/scripts => scripts}/capsrpb.gd (100%) rename {scenes/scripts => scripts}/file-table.gd (100%) rename {scenes/scripts => scripts}/hotkeys.gd (100%) rename {scenes/scripts => scripts}/interfer.gd (100%) rename {scenes/scripts => scripts}/mercator.gd (100%) rename {scenes/scripts => scripts}/modbus.gd (100%) rename {scenes/scripts => scripts}/repnetwork.gd (100%) rename {scenes/scripts => scripts}/repsettings.gd (100%) rename {scenes/scripts => scripts}/signaller.gd (100%) rename {scenes/scripts => scripts}/tcp5p28.gd (100%) rename {scenes/scripts => scripts}/threats.gd (100%) rename {scenes/scripts => scripts}/tools.gd (100%) rename {scenes/scripts => scripts}/yau07.gd (100%) rename {scenes/scripts => scripts}/yems-boards.gd (100%) rename {scenes/scripts => scripts}/yems-consts.gd (100%) rename {scenes/scripts => scripts}/yems-devs.gd (100%) diff --git a/project.godot b/project.godot index fa20df7c..11059306 100644 --- a/project.godot +++ b/project.godot @@ -43,22 +43,22 @@ config/external_cu=false [autoload] log="*res://addons/godot-logger/scripts/logger.gd" -tools="*res://scenes/scripts/tools.gd" -signaller="*res://scenes/scripts/signaller.gd" -repsettings="*res://scenes/scripts/repsettings.gd" -repnetwork="*res://scenes/scripts/repnetwork.gd" -yau07="*res://scenes/scripts/yau07.gd" -capsrpb="*res://scenes/scripts/capsrpb.gd" +tools="*res://scripts/tools.gd" +signaller="*res://scripts/signaller.gd" +repsettings="*res://scripts/repsettings.gd" +repnetwork="*res://scripts/repnetwork.gd" +yau07="*res://scripts/yau07.gd" +capsrpb="*res://scripts/capsrpb.gd" table="*res://table/table.gd" -threats="*res://scenes/scripts/threats.gd" -yemsdevs="*res://scenes/scripts/yems-devs.gd" -yemsboards="*res://scenes/scripts/yems-boards.gd" -yemsconsts="*res://scenes/scripts/yems-consts.gd" -interfer="*res://scenes/scripts/interfer.gd" -hotkeys="*res://scenes/scripts/hotkeys.gd" -mercator="*res://scenes/scripts/mercator.gd" -modbus="*res://scenes/scripts/modbus.gd" -tcp5p28="*res://scenes/scripts/tcp5p28.gd" +threats="*res://scripts/threats.gd" +yemsdevs="*res://scripts/yems-devs.gd" +yemsboards="*res://scripts/yems-boards.gd" +yemsconsts="*res://scripts/yems-consts.gd" +interfer="*res://scripts/interfer.gd" +hotkeys="*res://scripts/hotkeys.gd" +mercator="*res://scripts/mercator.gd" +modbus="*res://scripts/modbus.gd" +tcp5p28="*res://scripts/tcp5p28.gd" [debug] diff --git a/scenes/scripts/capsrpb.gd b/scripts/capsrpb.gd similarity index 100% rename from scenes/scripts/capsrpb.gd rename to scripts/capsrpb.gd diff --git a/scenes/scripts/file-table.gd b/scripts/file-table.gd similarity index 100% rename from scenes/scripts/file-table.gd rename to scripts/file-table.gd diff --git a/scenes/scripts/hotkeys.gd b/scripts/hotkeys.gd similarity index 100% rename from scenes/scripts/hotkeys.gd rename to scripts/hotkeys.gd diff --git a/scenes/scripts/interfer.gd b/scripts/interfer.gd similarity index 100% rename from scenes/scripts/interfer.gd rename to scripts/interfer.gd diff --git a/scenes/scripts/mercator.gd b/scripts/mercator.gd similarity index 100% rename from scenes/scripts/mercator.gd rename to scripts/mercator.gd diff --git a/scenes/scripts/modbus.gd b/scripts/modbus.gd similarity index 100% rename from scenes/scripts/modbus.gd rename to scripts/modbus.gd diff --git a/scenes/scripts/repnetwork.gd b/scripts/repnetwork.gd similarity index 100% rename from scenes/scripts/repnetwork.gd rename to scripts/repnetwork.gd diff --git a/scenes/scripts/repsettings.gd b/scripts/repsettings.gd similarity index 100% rename from scenes/scripts/repsettings.gd rename to scripts/repsettings.gd diff --git a/scenes/scripts/signaller.gd b/scripts/signaller.gd similarity index 100% rename from scenes/scripts/signaller.gd rename to scripts/signaller.gd diff --git a/scenes/scripts/tcp5p28.gd b/scripts/tcp5p28.gd similarity index 100% rename from scenes/scripts/tcp5p28.gd rename to scripts/tcp5p28.gd diff --git a/scenes/scripts/threats.gd b/scripts/threats.gd similarity index 100% rename from scenes/scripts/threats.gd rename to scripts/threats.gd diff --git a/scenes/scripts/tools.gd b/scripts/tools.gd similarity index 100% rename from scenes/scripts/tools.gd rename to scripts/tools.gd diff --git a/scenes/scripts/yau07.gd b/scripts/yau07.gd similarity index 100% rename from scenes/scripts/yau07.gd rename to scripts/yau07.gd diff --git a/scenes/scripts/yems-boards.gd b/scripts/yems-boards.gd similarity index 100% rename from scenes/scripts/yems-boards.gd rename to scripts/yems-boards.gd diff --git a/scenes/scripts/yems-consts.gd b/scripts/yems-consts.gd similarity index 100% rename from scenes/scripts/yems-consts.gd rename to scripts/yems-consts.gd diff --git a/scenes/scripts/yems-devs.gd b/scripts/yems-devs.gd similarity index 100% rename from scenes/scripts/yems-devs.gd rename to scripts/yems-devs.gd From cf6bf66c46d5057461fc00d3bf7392a7a7a59218 Mon Sep 17 00:00:00 2001 From: sasha80 Date: Sat, 27 Apr 2024 15:28:06 +0300 Subject: [PATCH 11/39] =?UTF-8?q?=D0=A7=D0=B8=D1=81=D1=82=D0=BA=D0=B0.=20?= =?UTF-8?q?=D0=9D=D0=B5=20=D0=BD=D1=83=D0=B6=D0=BD=D0=BE=20=D1=82=D0=B5?= =?UTF-8?q?=D0=BF=D0=B5=D1=80=D1=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- build-godot-engine.sh | 2 -- 1 file changed, 2 deletions(-) delete mode 100644 build-godot-engine.sh diff --git a/build-godot-engine.sh b/build-godot-engine.sh deleted file mode 100644 index 823a1316..00000000 --- a/build-godot-engine.sh +++ /dev/null @@ -1,2 +0,0 @@ -#!/usr/bin/env bash -scons target=template_release production=yes use_lto=yes -j4 From 8ba4d6836d294ff1f06cb7ce3bd0ef0306591681 Mon Sep 17 00:00:00 2001 From: sasha80 Date: Sat, 27 Apr 2024 15:28:59 +0300 Subject: [PATCH 12/39] =?UTF-8?q?=D0=94=D0=BE=D1=80=D0=B0=D0=B1=D0=BE?= =?UTF-8?q?=D1=82=D0=BA=D0=B0.=20=D0=9C=D0=BE=D0=B4=D1=83=D0=BB=D1=8C=20?= =?UTF-8?q?=D0=B4=D0=BB=D1=8F=20=D0=BA=D0=BE=D0=BD=D1=82=D1=80=D0=BE=D0=BB?= =?UTF-8?q?=D1=8F=20=D0=B2=D0=B5=D1=80=D1=81=D0=B8=D0=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 1 + git-hook.sh | 9 +++++++++ 2 files changed, 10 insertions(+) create mode 100644 git-hook.sh diff --git a/.gitignore b/.gitignore index 33cd0eba..f2e555c8 100644 --- a/.gitignore +++ b/.gitignore @@ -26,3 +26,4 @@ mono_crash.*.json # Godot 4+ specific ignores .godot/ /override.cfg +/scripts/commit.gd diff --git a/git-hook.sh b/git-hook.sh new file mode 100644 index 00000000..a4ca3701 --- /dev/null +++ b/git-hook.sh @@ -0,0 +1,9 @@ +#!/usr/bin/env bash + +# Генерирует модуль с информацией о контроле версий + +GDSCRIPT_FILE="scripts/commit.gd" +HEAD="$(git rev-parse --abbrev-ref HEAD) $(git rev-parse --short HEAD) $(git log -1 --format=%cd)" +echo "extends Node" > ${GDSCRIPT_FILE} +echo "# Файл сгенерирован автоматически! Не изменять вручную!" >> ${GDSCRIPT_FILE} +echo "const VCS_HEAD = '${HEAD}'" >> ${GDSCRIPT_FILE} From 7d48e2875fddb27c6d8caa32c3809242658f29de Mon Sep 17 00:00:00 2001 From: sasha80 Date: Sat, 27 Apr 2024 15:45:31 +0300 Subject: [PATCH 13/39] =?UTF-8?q?=D0=94=D0=BE=D1=80=D0=B0=D0=B1=D0=BE?= =?UTF-8?q?=D1=82=D0=BA=D0=B0.=20=D0=9C=D0=BE=D0=B4=D1=83=D0=BB=D1=8C=20?= =?UTF-8?q?=D0=B4=D0=BB=D1=8F=20=D0=BA=D0=BE=D0=BD=D1=82=D1=80=D0=BE=D0=BB?= =?UTF-8?q?=D1=8F=20=D0=B2=D0=B5=D1=80=D1=81=D0=B8=D0=B9.=20=D0=94=D0=BE?= =?UTF-8?q?=D0=BA=D1=83=D0=BC=D0=B5=D0=BD=D1=82=D0=B0=D1=86=D0=B8=D1=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- git-hook.sh | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/git-hook.sh b/git-hook.sh index a4ca3701..12be8977 100644 --- a/git-hook.sh +++ b/git-hook.sh @@ -1,6 +1,14 @@ #!/usr/bin/env bash -# Генерирует модуль с информацией о контроле версий +# 1. В папке ./git/hooks создать файлы: +# - post-checkout +# - post-commit +# - post-merge +# 2. В каждый файл записать строку: +# ./git-hook.sh +# 3. Теперь модуль scripts/commit.gd будет содержать данные о текущей версии + +# Этот скрипт генерирует модуль с информацией о контроле версий GDSCRIPT_FILE="scripts/commit.gd" HEAD="$(git rev-parse --abbrev-ref HEAD) $(git rev-parse --short HEAD) $(git log -1 --format=%cd)" From b6e1fc9f0551d7e8f884a8f612e571e71a1e7cd1 Mon Sep 17 00:00:00 2001 From: sasha80 Date: Thu, 2 May 2024 09:15:49 +0300 Subject: [PATCH 14/39] =?UTF-8?q?=D0=94=D0=BE=D1=80=D0=B0=D0=B1=D0=BE?= =?UTF-8?q?=D1=82=D0=BA=D0=B0.=20=D0=9C=D0=BE=D0=B4=D1=83=D0=BB=D1=8C=20?= =?UTF-8?q?=D0=B4=D0=BB=D1=8F=20=D0=BA=D0=BE=D0=BD=D1=82=D1=80=D0=BE=D0=BB?= =?UTF-8?q?=D1=8F=20=D0=B2=D0=B5=D1=80=D1=81=D0=B8=D0=B9.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- project.godot | 1 + scenes/журнал/журнал.gd | 1 + scenes/настройки/настройки.gd | 4 +++- scenes/настройки/настройки.tscn | 11 ++++++++++- 4 files changed, 15 insertions(+), 2 deletions(-) diff --git a/project.godot b/project.godot index 11059306..9d1ee5fc 100644 --- a/project.godot +++ b/project.godot @@ -42,6 +42,7 @@ config/external_cu=false [autoload] +commit="*res://scripts/commit.gd" log="*res://addons/godot-logger/scripts/logger.gd" tools="*res://scripts/tools.gd" signaller="*res://scripts/signaller.gd" diff --git a/scenes/журнал/журнал.gd b/scenes/журнал/журнал.gd index 32b79fdd..15676e3e 100644 --- a/scenes/журнал/журнал.gd +++ b/scenes/журнал/журнал.gd @@ -23,6 +23,7 @@ func _ready() -> void: log.info('Модуль журнала работы готов') log.info('Аргументы коммандной строки: \"%s\"' % OS.get_cmdline_args()) log.info('Операционная система: %s' % [OS.get_distribution_name()]) + log.info('Текущая версия ПО УАРЭП: %s' % commit.VCS_HEAD) threats.connect('threat_new', Callable(self, 'on_threats_changed').bind('Цель обнаружена')) threats.connect('threat_lost', Callable(self, 'on_threats_changed').bind('Цель потеряна')) signaller.connect('interfer_new', Callable(self, 'on_interfer_new').bind('Создан сеанс помехи')) diff --git a/scenes/настройки/настройки.gd b/scenes/настройки/настройки.gd index 1df773bb..18b07fab 100644 --- a/scenes/настройки/настройки.gd +++ b/scenes/настройки/настройки.gd @@ -3,7 +3,9 @@ extends Panel # Called when the node enters the scene tree for the first time. func _ready() -> void: - if not OS.get_cmdline_args().has('++ограниченный'): return + $lbl_commit.text = 'Текущая версия ПО УАРЭП: \"%s\"' % commit.VCS_HEAD + if not OS.get_cmdline_args().has('++ограниченный'): + return $Label2.text = 'Текущий режим доступа: ограниченный' for node in $GridContainer.get_children().filter(func(b): return b is Button): node.disabled = true diff --git a/scenes/настройки/настройки.tscn b/scenes/настройки/настройки.tscn index d4c306e4..dd7913b4 100644 --- a/scenes/настройки/настройки.tscn +++ b/scenes/настройки/настройки.tscn @@ -246,7 +246,7 @@ text = "Управление элементами в режиме с огран layout_mode = 0 offset_left = 16.0 offset_top = 27.0 -offset_right = 445.0 +offset_right = 476.0 offset_bottom = 49.0 text = "Текущий режим доступа: полный" @@ -297,5 +297,14 @@ size_flags_horizontal = 6 size_flags_vertical = 6 button_pressed = true +[node name="lbl_commit" type="Label" parent="."] +layout_mode = 0 +offset_left = 483.0 +offset_top = 27.0 +offset_right = 1055.0 +offset_bottom = 46.0 +text = "Текущая версия ПО УАРЭП:" +vertical_alignment = 1 + [connection signal="text_changed" from="edt_mapaddr" to="edt_mapaddr" method="_on_text_changed"] [connection signal="pressed" from="GridContainer2/external_cu_btn" to="." method="_on_external_cu_btn_pressed"] From 7fdeee9903b12c2a8accef797157222dbd1424a7 Mon Sep 17 00:00:00 2001 From: sasha80 Date: Thu, 2 May 2024 11:29:28 +0300 Subject: [PATCH 15/39] =?UTF-8?q?=D0=94=D0=BE=D1=80=D0=B0=D0=B1=D0=BE?= =?UTF-8?q?=D1=82=D0=BA=D0=B0.=20=D0=9E=D1=82=D0=BE=D0=B1=D1=80=D0=B0?= =?UTF-8?q?=D0=B6=D0=B5=D0=BD=D0=B8=D0=B5=20=D0=BF=D1=80=D0=B8=D0=B1=D0=BE?= =?UTF-8?q?=D1=80=D0=BE=D0=B2=20=D0=B2=20=D1=80=D0=B5=D0=B6=D0=B8=D0=BC?= =?UTF-8?q?=D0=B5=20=D0=9A=D0=BE=D0=BD=D1=82=D1=80=D0=BE=D0=BB=D1=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- scenes/pribor-rtr/pribor-rtr.tscn | 63 +++++++++++++---------------- scenes/pribor-uf/pribor-uf.tscn | 16 +++++--- scenes/pribor-uyep/pribor-uyep.tscn | 8 +++- 3 files changed, 44 insertions(+), 43 deletions(-) diff --git a/scenes/pribor-rtr/pribor-rtr.tscn b/scenes/pribor-rtr/pribor-rtr.tscn index e231dbed..d28121f8 100644 --- a/scenes/pribor-rtr/pribor-rtr.tscn +++ b/scenes/pribor-rtr/pribor-rtr.tscn @@ -1,34 +1,17 @@ -[gd_scene load_steps=3 format=3 uid="uid://5uv1idl3lqet"] +[gd_scene load_steps=4 format=3 uid="uid://5uv1idl3lqet"] +[ext_resource type="Script" path="res://scenes/контроль/прибор.gd" id="1_ab82m"] [ext_resource type="PackedScene" uid="uid://d3iqb5e4g81m5" path="res://scenes/контроль/элемент-г.tscn" id="2_e75yj"] [ext_resource type="Texture2D" uid="uid://c4mdrmk7h638f" path="res://data/nine-patch-round.png" id="3_a2683"] -[node name="pribor_UF" type="Node2D"] - -[node name="ref_G1" type="NinePatchRect" parent="."] -offset_left = 394.0 -offset_top = 157.0 -offset_right = 786.0 -offset_bottom = 367.0 -texture = ExtResource("3_a2683") -patch_margin_left = 16 -patch_margin_top = 16 -patch_margin_right = 16 -patch_margin_bottom = 16 - -[node name="ref_A23" parent="ref_G1" instance=ExtResource("2_e75yj")] -layout_mode = 0 -offset_left = 105.0 -offset_top = 28.0 -offset_right = 265.0 -offset_bottom = 183.0 -fname = "MAA2000" -rname = "A23" -state = 1 +[node name="pribor_rtr" type="Control"] +layout_mode = 3 +anchors_preset = 0 +script = ExtResource("1_ab82m") [node name="ref_A1" type="NinePatchRect" parent="."] offset_left = 123.0 -offset_top = 434.0 +offset_top = 164.0 offset_right = 783.0 offset_bottom = 728.0 texture = ExtResource("3_a2683") @@ -39,24 +22,34 @@ patch_margin_bottom = 16 [node name="ref_A24" parent="ref_A1" instance=ExtResource("2_e75yj")] layout_mode = 0 -offset_left = 334.0 -offset_top = 74.0 -offset_right = 644.0 -offset_bottom = 232.0 +offset_left = 311.0 +offset_top = 346.0 +offset_right = 621.0 +offset_bottom = 504.0 fname = "Модуль процессорный O31S.B" rname = "A24" state = 1 [node name="ref_A25" parent="ref_A1" instance=ExtResource("2_e75yj")] layout_mode = 0 -offset_left = 70.0 -offset_top = 115.0 -offset_right = 275.0 -offset_bottom = 231.0 +offset_left = 47.0 +offset_top = 387.0 +offset_right = 252.0 +offset_bottom = 503.0 fname = "Плата" rname = "A25" state = 1 +[node name="ref_A23" parent="ref_A1" instance=ExtResource("2_e75yj")] +layout_mode = 0 +offset_left = 451.0 +offset_top = 76.0 +offset_right = 611.0 +offset_bottom = 231.0 +fname = "MAA2000" +rname = "A23" +state = 1 + [node name="ref_A2" type="NinePatchRect" parent="."] offset_left = 124.0 offset_top = 803.0 @@ -89,11 +82,11 @@ rname = "A27" state = 1 [node name="lbl_header" type="Label" parent="."] -offset_left = 10.0 +offset_left = 129.0 offset_top = 131.0 -offset_right = 865.0 +offset_right = 776.0 offset_bottom = 157.0 theme_override_font_sizes/font_size = 22 -text = "Контроль исправности прибора РТР" +text = "Контроль исправности прибора" horizontal_alignment = 1 vertical_alignment = 1 diff --git a/scenes/pribor-uf/pribor-uf.tscn b/scenes/pribor-uf/pribor-uf.tscn index 8702b3c4..dc886754 100644 --- a/scenes/pribor-uf/pribor-uf.tscn +++ b/scenes/pribor-uf/pribor-uf.tscn @@ -1,9 +1,13 @@ -[gd_scene load_steps=3 format=3 uid="uid://dwxn2puh462nl"] +[gd_scene load_steps=4 format=3 uid="uid://dwxn2puh462nl"] +[ext_resource type="Script" path="res://scenes/контроль/прибор.gd" id="1_2qyst"] [ext_resource type="Texture2D" uid="uid://c4mdrmk7h638f" path="res://data/nine-patch-round.png" id="2_ho0da"] [ext_resource type="PackedScene" uid="uid://p2suppildvq0" path="res://scenes/контроль/элемент-в.tscn" id="3_dp78y"] -[node name="pribor_UF" type="Node2D"] +[node name="pribor_uf" type="Control"] +layout_mode = 3 +anchors_preset = 0 +script = ExtResource("1_2qyst") [node name="ref_uf" type="NinePatchRect" parent="."] offset_left = 98.0 @@ -172,10 +176,10 @@ offset_bottom = 35.0 text = "Кассета В-13" [node name="lbl_header" type="Label" parent="."] -offset_left = 9.0 -offset_top = 215.0 -offset_right = 864.0 -offset_bottom = 241.0 +offset_left = 105.0 +offset_top = 225.0 +offset_right = 704.0 +offset_bottom = 251.0 theme_override_font_sizes/font_size = 22 text = "Контроль исправности прибора УФ " diff --git a/scenes/pribor-uyep/pribor-uyep.tscn b/scenes/pribor-uyep/pribor-uyep.tscn index 259344d2..b80bea7e 100644 --- a/scenes/pribor-uyep/pribor-uyep.tscn +++ b/scenes/pribor-uyep/pribor-uyep.tscn @@ -1,9 +1,13 @@ -[gd_scene load_steps=3 format=3 uid="uid://bs7h65e7bodp3"] +[gd_scene load_steps=4 format=3 uid="uid://bs7h65e7bodp3"] [ext_resource type="Texture2D" uid="uid://c4mdrmk7h638f" path="res://data/nine-patch-round.png" id="1_6olof"] +[ext_resource type="Script" path="res://scenes/контроль/прибор.gd" id="1_b7gyx"] [ext_resource type="PackedScene" uid="uid://p2suppildvq0" path="res://scenes/контроль/элемент-в.tscn" id="2_cf6tc"] -[node name="pribor_UF" type="Node2D"] +[node name="pribor_uyep" type="Control"] +layout_mode = 3 +anchors_preset = 0 +script = ExtResource("1_b7gyx") [node name="ref_G1" type="NinePatchRect" parent="."] offset_left = 98.0 From 3e16904fb6c7498f5c5e872cfcecab785998f7e8 Mon Sep 17 00:00:00 2001 From: sasha80 Date: Fri, 3 May 2024 08:16:18 +0300 Subject: [PATCH 16/39] =?UTF-8?q?=D0=94=D0=BE=D1=80=D0=B0=D0=B1=D0=BE?= =?UTF-8?q?=D1=82=D0=BA=D0=B0.=20=D0=9E=D1=82=D0=BE=D0=B1=D1=80=D0=B0?= =?UTF-8?q?=D0=B6=D0=B5=D0=BD=D0=B8=D0=B5=20=D0=BF=D1=80=D0=B8=D0=B1=D0=BE?= =?UTF-8?q?=D1=80=D0=BE=D0=B2=20=D0=B2=20=D1=80=D0=B5=D0=B6=D0=B8=D0=BC?= =?UTF-8?q?=D0=B5=20=D0=9A=D0=BE=D0=BD=D1=82=D1=80=D0=BE=D0=BB=D1=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- scenes/pribor-afsp/pribor-afsp.tscn | 1163 +++++++++++++++------------ scenes/pribor-rtr/pribor-rtr.tscn | 3 + scenes/pribor-uf/pribor-uf.tscn | 2 + scenes/pribor-uyep/pribor-uyep.tscn | 3 + 4 files changed, 665 insertions(+), 506 deletions(-) diff --git a/scenes/pribor-afsp/pribor-afsp.tscn b/scenes/pribor-afsp/pribor-afsp.tscn index 356c685c..92832ca4 100644 --- a/scenes/pribor-afsp/pribor-afsp.tscn +++ b/scenes/pribor-afsp/pribor-afsp.tscn @@ -7,516 +7,667 @@ [node name="pribor_afsp" type="Control"] layout_mode = 3 anchors_preset = 0 +offset_left = -10.0 +offset_top = 65.0 +offset_right = -10.0 +offset_bottom = 65.0 script = ExtResource("1_7i12q") -[node name="ref_A1_lpa" type="NinePatchRect" parent="."] -layout_mode = 0 -offset_left = 25.0 -offset_top = 121.0 -offset_right = 378.0 -offset_bottom = 1128.0 -texture = ExtResource("2_won25") -patch_margin_left = 16 -patch_margin_top = 16 -patch_margin_right = 16 -patch_margin_bottom = 16 - -[node name="ref_block_la1" type="NinePatchRect" parent="ref_A1_lpa"] -layout_mode = 0 -offset_left = 32.0 -offset_top = 70.0 -offset_right = 332.0 -offset_bottom = 454.0 -texture = ExtResource("2_won25") -patch_margin_left = 16 -patch_margin_top = 16 -patch_margin_right = 16 -patch_margin_bottom = 16 - -[node name="ref_mshu1" parent="ref_A1_lpa/ref_block_la1" instance=ExtResource("3_7rc2x")] -layout_mode = 0 -offset_left = 20.0 -offset_top = 211.0 -offset_right = 280.0 -offset_bottom = 253.0 -fname = "МШУ" -rname = "А5" - -[node name="ref_mshu2" parent="ref_A1_lpa/ref_block_la1" instance=ExtResource("3_7rc2x")] -layout_mode = 0 -offset_left = 20.0 -offset_top = 89.0 -offset_right = 280.0 -offset_bottom = 131.0 -fname = "МШУ" -rname = "А2" - -[node name="ref_mshu3" parent="ref_A1_lpa/ref_block_la1" instance=ExtResource("3_7rc2x")] -layout_mode = 0 -offset_left = 20.0 -offset_top = 130.0 -offset_right = 280.0 -offset_bottom = 172.0 -fname = "МШУ" -rname = "А3" - -[node name="ref_mshu4" parent="ref_A1_lpa/ref_block_la1" instance=ExtResource("3_7rc2x")] -layout_mode = 0 -offset_left = 20.0 -offset_top = 171.0 -offset_right = 280.0 -offset_bottom = 213.0 -fname = "МШУ" -rname = "А4" - -[node name="ref_mshu5" parent="ref_A1_lpa/ref_block_la1" instance=ExtResource("3_7rc2x")] -layout_mode = 0 -offset_left = 20.0 -offset_top = 252.0 -offset_right = 280.0 -offset_bottom = 294.0 -fname = "МШУ" -rname = "А6" - -[node name="ref_mshu6" parent="ref_A1_lpa/ref_block_la1" instance=ExtResource("3_7rc2x")] -layout_mode = 0 -offset_left = 20.0 -offset_top = 48.0 -offset_right = 280.0 -offset_bottom = 90.0 -fname = "МШУ" -rname = "А1" - -[node name="ref_mshu7" parent="ref_A1_lpa/ref_block_la1" instance=ExtResource("3_7rc2x")] -layout_mode = 0 -offset_left = 20.0 -offset_top = 291.0 -offset_right = 280.0 -offset_bottom = 333.0 -fname = "МШУ" -rname = "А7" - -[node name="ref_mshu8" parent="ref_A1_lpa/ref_block_la1" instance=ExtResource("3_7rc2x")] -layout_mode = 0 -offset_left = 20.0 -offset_top = 334.0 -offset_right = 280.0 -offset_bottom = 376.0 -fname = "МШУ" -rname = "А8" - -[node name="lbl_la" type="Label" parent="ref_A1_lpa/ref_block_la1"] -layout_mode = 0 -offset_left = 89.0 -offset_top = 17.0 -offset_right = 200.0 -offset_bottom = 41.0 -text = "Модули ЛА6А45" - -[node name="ref_bpch" type="NinePatchRect" parent="ref_A1_lpa"] -layout_mode = 0 -offset_left = 32.0 -offset_top = 458.0 -offset_right = 332.0 -offset_bottom = 600.0 -texture = ExtResource("2_won25") -patch_margin_left = 16 -patch_margin_top = 16 -patch_margin_right = 16 -patch_margin_bottom = 16 - -[node name="lbl_bpch" type="Label" parent="ref_A1_lpa/ref_bpch"] -layout_mode = 0 -offset_left = 135.0 -offset_top = 16.0 -offset_right = 167.0 -offset_bottom = 40.0 -text = "БПЧ" - -[node name="ref_og" parent="ref_A1_lpa/ref_bpch" instance=ExtResource("3_7rc2x")] -layout_mode = 2 -offset_left = 20.0 -offset_top = 36.0 -offset_right = 280.0 -offset_bottom = 78.0 -fname = "Модуль ОГ" -rname = "А23" - -[node name="ref_geterodin" parent="ref_A1_lpa/ref_bpch" instance=ExtResource("3_7rc2x")] -layout_mode = 0 -offset_left = 20.0 -offset_top = 85.0 -offset_right = 280.0 -offset_bottom = 127.0 -fname = "Гетеродин" -rname = "А10" - -[node name="ref_block_la2" type="NinePatchRect" parent="ref_A1_lpa"] -layout_mode = 0 -offset_left = 33.0 -offset_top = 605.0 -offset_right = 333.0 -offset_bottom = 989.0 -texture = ExtResource("2_won25") -patch_margin_left = 16 -patch_margin_top = 16 -patch_margin_right = 16 -patch_margin_bottom = 16 - -[node name="ref_mshu9" parent="ref_A1_lpa/ref_block_la2" instance=ExtResource("3_7rc2x")] -layout_mode = 0 -offset_left = 20.0 -offset_top = 48.0 -offset_right = 280.0 -offset_bottom = 90.0 -fname = "МШУ" -rname = "А9" - -[node name="ref_mshu10" parent="ref_A1_lpa/ref_block_la2" instance=ExtResource("3_7rc2x")] -layout_mode = 0 -offset_left = 20.0 -offset_top = 89.0 -offset_right = 280.0 -offset_bottom = 131.0 -fname = "МШУ" -rname = "А10" - -[node name="ref_mshu11" parent="ref_A1_lpa/ref_block_la2" instance=ExtResource("3_7rc2x")] -layout_mode = 0 -offset_left = 20.0 -offset_top = 130.0 -offset_right = 280.0 -offset_bottom = 172.0 -fname = "МШУ" -rname = "А11" - -[node name="ref_mshu12" parent="ref_A1_lpa/ref_block_la2" instance=ExtResource("3_7rc2x")] -layout_mode = 0 -offset_left = 20.0 -offset_top = 171.0 -offset_right = 280.0 -offset_bottom = 213.0 -fname = "МШУ" -rname = "А12" - -[node name="ref_mshu13" parent="ref_A1_lpa/ref_block_la2" instance=ExtResource("3_7rc2x")] -layout_mode = 0 -offset_left = 20.0 -offset_top = 211.0 -offset_right = 280.0 -offset_bottom = 253.0 -fname = "МШУ" -rname = "А13" - -[node name="ref_mshu14" parent="ref_A1_lpa/ref_block_la2" instance=ExtResource("3_7rc2x")] -layout_mode = 0 -offset_left = 20.0 -offset_top = 252.0 -offset_right = 280.0 -offset_bottom = 294.0 -fname = "МШУ" -rname = "А14" - -[node name="ref_mshu15" parent="ref_A1_lpa/ref_block_la2" instance=ExtResource("3_7rc2x")] -layout_mode = 0 -offset_left = 20.0 -offset_top = 291.0 -offset_right = 280.0 -offset_bottom = 333.0 -fname = "МШУ" -rname = "А15" - -[node name="ref_mshu16" parent="ref_A1_lpa/ref_block_la2" instance=ExtResource("3_7rc2x")] -layout_mode = 0 -offset_left = 20.0 -offset_top = 334.0 -offset_right = 280.0 -offset_bottom = 376.0 -fname = "МШУ" -rname = "А16" - -[node name="lbl_la" type="Label" parent="ref_A1_lpa/ref_block_la2"] -layout_mode = 0 -offset_left = 89.0 -offset_top = 17.0 -offset_right = 200.0 -offset_bottom = 41.0 -text = "Модули ЛА6А45" - -[node name="lbl_lpa" type="Label" parent="ref_A1_lpa"] -layout_mode = 0 -offset_left = 169.0 -offset_top = 28.0 -offset_right = 197.0 -offset_bottom = 52.0 -text = "ЛПА" - -[node name="lbl_A" type="Label" parent="ref_A1_lpa"] -layout_mode = 0 -offset_left = 302.0 -offset_top = 16.0 -offset_right = 330.0 -offset_bottom = 40.0 -text = "A1" - -[node name="ref_A2_lpa" type="NinePatchRect" parent="."] -layout_mode = 0 -offset_left = 414.0 -offset_top = 121.0 -offset_right = 767.0 -offset_bottom = 1128.0 -texture = ExtResource("2_won25") -patch_margin_left = 16 -patch_margin_top = 16 -patch_margin_right = 16 -patch_margin_bottom = 16 - -[node name="ref_block_la1" type="NinePatchRect" parent="ref_A2_lpa"] -layout_mode = 0 -offset_left = 32.0 -offset_top = 70.0 -offset_right = 332.0 -offset_bottom = 454.0 -texture = ExtResource("2_won25") -patch_margin_left = 16 -patch_margin_top = 16 -patch_margin_right = 16 -patch_margin_bottom = 16 - -[node name="ref_mshu1" parent="ref_A2_lpa/ref_block_la1" instance=ExtResource("3_7rc2x")] -layout_mode = 0 -offset_left = 20.0 -offset_top = 211.0 -offset_right = 280.0 -offset_bottom = 253.0 -fname = "МШУ" -rname = "А5" - -[node name="ref_mshu2" parent="ref_A2_lpa/ref_block_la1" instance=ExtResource("3_7rc2x")] -layout_mode = 0 -offset_left = 20.0 -offset_top = 89.0 -offset_right = 280.0 -offset_bottom = 131.0 -fname = "МШУ" -rname = "А2" - -[node name="ref_mshu3" parent="ref_A2_lpa/ref_block_la1" instance=ExtResource("3_7rc2x")] -layout_mode = 0 -offset_left = 20.0 -offset_top = 130.0 -offset_right = 280.0 -offset_bottom = 172.0 -fname = "МШУ" -rname = "А3" - -[node name="ref_mshu4" parent="ref_A2_lpa/ref_block_la1" instance=ExtResource("3_7rc2x")] -layout_mode = 0 -offset_left = 20.0 -offset_top = 171.0 -offset_right = 280.0 -offset_bottom = 213.0 -fname = "МШУ" -rname = "А4" - -[node name="ref_mshu5" parent="ref_A2_lpa/ref_block_la1" instance=ExtResource("3_7rc2x")] -layout_mode = 0 -offset_left = 20.0 -offset_top = 252.0 -offset_right = 280.0 -offset_bottom = 294.0 -fname = "МШУ" -rname = "А6" - -[node name="ref_mshu6" parent="ref_A2_lpa/ref_block_la1" instance=ExtResource("3_7rc2x")] -layout_mode = 0 -offset_left = 20.0 -offset_top = 48.0 -offset_right = 280.0 -offset_bottom = 90.0 -fname = "МШУ" -rname = "А1" - -[node name="ref_mshu7" parent="ref_A2_lpa/ref_block_la1" instance=ExtResource("3_7rc2x")] -layout_mode = 0 -offset_left = 20.0 -offset_top = 291.0 -offset_right = 280.0 -offset_bottom = 333.0 -fname = "МШУ" -rname = "А7" - -[node name="ref_mshu8" parent="ref_A2_lpa/ref_block_la1" instance=ExtResource("3_7rc2x")] -layout_mode = 0 -offset_left = 20.0 -offset_top = 334.0 -offset_right = 280.0 -offset_bottom = 376.0 -fname = "МШУ" -rname = "А8" - -[node name="lbl_la" type="Label" parent="ref_A2_lpa/ref_block_la1"] -layout_mode = 0 -offset_left = 89.0 -offset_top = 17.0 -offset_right = 200.0 -offset_bottom = 41.0 -text = "Модули ЛА6А45" - -[node name="ref_bpch" type="NinePatchRect" parent="ref_A2_lpa"] -layout_mode = 0 -offset_left = 32.0 -offset_top = 458.0 -offset_right = 332.0 -offset_bottom = 600.0 -texture = ExtResource("2_won25") -patch_margin_left = 16 -patch_margin_top = 16 -patch_margin_right = 16 -patch_margin_bottom = 16 - -[node name="lbl_bpch" type="Label" parent="ref_A2_lpa/ref_bpch"] -layout_mode = 0 -offset_left = 135.0 -offset_top = 16.0 -offset_right = 167.0 -offset_bottom = 40.0 -text = "БПЧ" - -[node name="ref_og" parent="ref_A2_lpa/ref_bpch" instance=ExtResource("3_7rc2x")] -layout_mode = 2 -offset_left = 20.0 -offset_top = 36.0 -offset_right = 280.0 -offset_bottom = 78.0 -fname = "Модуль ОГ" -rname = "А23" - -[node name="ref_geterodin" parent="ref_A2_lpa/ref_bpch" instance=ExtResource("3_7rc2x")] -layout_mode = 0 -offset_left = 20.0 -offset_top = 85.0 -offset_right = 280.0 -offset_bottom = 127.0 -fname = "Гетеродин" -rname = "А10" - -[node name="ref_block_la2" type="NinePatchRect" parent="ref_A2_lpa"] -layout_mode = 0 -offset_left = 33.0 -offset_top = 605.0 -offset_right = 333.0 -offset_bottom = 989.0 -texture = ExtResource("2_won25") -patch_margin_left = 16 -patch_margin_top = 16 -patch_margin_right = 16 -patch_margin_bottom = 16 - -[node name="ref_mshu9" parent="ref_A2_lpa/ref_block_la2" instance=ExtResource("3_7rc2x")] -layout_mode = 0 -offset_left = 20.0 -offset_top = 48.0 -offset_right = 280.0 -offset_bottom = 90.0 -fname = "МШУ" -rname = "А9" - -[node name="ref_mshu10" parent="ref_A2_lpa/ref_block_la2" instance=ExtResource("3_7rc2x")] -layout_mode = 0 -offset_left = 20.0 -offset_top = 89.0 -offset_right = 280.0 -offset_bottom = 131.0 -fname = "МШУ" -rname = "А10" - -[node name="ref_mshu11" parent="ref_A2_lpa/ref_block_la2" instance=ExtResource("3_7rc2x")] -layout_mode = 0 -offset_left = 20.0 -offset_top = 130.0 -offset_right = 280.0 -offset_bottom = 172.0 -fname = "МШУ" -rname = "А11" - -[node name="ref_mshu12" parent="ref_A2_lpa/ref_block_la2" instance=ExtResource("3_7rc2x")] -layout_mode = 0 -offset_left = 20.0 -offset_top = 171.0 -offset_right = 280.0 -offset_bottom = 213.0 -fname = "МШУ" -rname = "А12" - -[node name="ref_mshu13" parent="ref_A2_lpa/ref_block_la2" instance=ExtResource("3_7rc2x")] -layout_mode = 0 -offset_left = 20.0 -offset_top = 211.0 -offset_right = 280.0 -offset_bottom = 253.0 -fname = "МШУ" -rname = "А13" - -[node name="ref_mshu14" parent="ref_A2_lpa/ref_block_la2" instance=ExtResource("3_7rc2x")] -layout_mode = 0 -offset_left = 20.0 -offset_top = 252.0 -offset_right = 280.0 -offset_bottom = 294.0 -fname = "МШУ" -rname = "А14" - -[node name="ref_mshu15" parent="ref_A2_lpa/ref_block_la2" instance=ExtResource("3_7rc2x")] -layout_mode = 0 -offset_left = 20.0 -offset_top = 291.0 -offset_right = 280.0 -offset_bottom = 333.0 -fname = "МШУ" -rname = "А15" - -[node name="ref_mshu16" parent="ref_A2_lpa/ref_block_la2" instance=ExtResource("3_7rc2x")] -layout_mode = 0 -offset_left = 20.0 -offset_top = 334.0 -offset_right = 280.0 -offset_bottom = 376.0 -fname = "МШУ" -rname = "А16" - -[node name="lbl_la" type="Label" parent="ref_A2_lpa/ref_block_la2"] -layout_mode = 0 -offset_left = 89.0 -offset_top = 17.0 -offset_right = 200.0 -offset_bottom = 41.0 -text = "Модули ЛА6А45" - -[node name="lbl_lpa" type="Label" parent="ref_A2_lpa"] -layout_mode = 0 -offset_left = 169.0 -offset_top = 28.0 -offset_right = 197.0 -offset_bottom = 52.0 -text = "ЛПА" - -[node name="lbl_A" type="Label" parent="ref_A2_lpa"] -layout_mode = 0 -offset_left = 302.0 -offset_top = 16.0 -offset_right = 330.0 -offset_bottom = 40.0 -text = "A2 -" - [node name="lbl_header" type="Label" parent="."] layout_mode = 0 -offset_left = -6.0 -offset_top = 81.0 -offset_right = 849.0 -offset_bottom = 107.0 +offset_left = 25.0 +offset_top = -55.0 +offset_right = 745.0 +offset_bottom = -29.0 theme_override_font_sizes/font_size = 22 -text = "Контроль исправности прибора АФС-П" +text = "Контроль исправности прибора" horizontal_alignment = 1 vertical_alignment = 1 + +[node name="ref_afsp_A1" type="NinePatchRect" parent="."] +layout_mode = 0 +offset_left = 20.0 +offset_top = -20.0 +offset_right = 375.0 +offset_bottom = 1090.0 +texture = ExtResource("2_won25") +patch_margin_left = 16 +patch_margin_top = 16 +patch_margin_right = 16 +patch_margin_bottom = 16 + +[node name="lbl_fname" type="Label" parent="ref_afsp_A1"] +self_modulate = Color(1, 1, 1, 0.62) +layout_mode = 0 +offset_left = 10.0 +offset_top = 5.0 +offset_right = 320.0 +offset_bottom = 35.0 +text = "АФСП-П" +horizontal_alignment = 1 +vertical_alignment = 1 + +[node name="lbl_rname" type="Label" parent="ref_afsp_A1"] +layout_mode = 0 +offset_left = 310.0 +offset_top = 5.0 +offset_right = 350.0 +offset_bottom = 35.0 +theme_override_font_sizes/font_size = 22 +text = "A1" +horizontal_alignment = 1 +vertical_alignment = 1 + +[node name="geterodin" parent="ref_afsp_A1" instance=ExtResource("3_7rc2x")] +layout_mode = 0 +offset_left = 10.0 +offset_top = 76.0 +offset_right = 340.0 +offset_bottom = 121.0 +fname = "Гетеродин" +rname = "ZZ2" + +[node name="modul_og" parent="ref_afsp_A1" instance=ExtResource("3_7rc2x")] +layout_mode = 2 +offset_left = 10.0 +offset_top = 31.0 +offset_right = 340.0 +offset_bottom = 76.0 +fname = "Модуль ОГ" +rname = "ZZ1" + +[node name="ref_A1A" type="NinePatchRect" parent="ref_afsp_A1"] +layout_mode = 0 +offset_left = 10.0 +offset_top = 142.0 +offset_right = 340.0 +offset_bottom = 622.0 +texture = ExtResource("2_won25") +patch_margin_left = 16 +patch_margin_top = 16 +patch_margin_right = 16 +patch_margin_bottom = 16 + +[node name="lbl_fname" type="Label" parent="ref_afsp_A1/ref_A1A"] +self_modulate = Color(1, 1, 1, 0.62) +layout_mode = 0 +offset_left = 10.0 +offset_top = 7.0 +offset_right = 320.0 +offset_bottom = 37.0 +text = "Панель ЛПА" +horizontal_alignment = 1 +vertical_alignment = 1 + +[node name="lbl_rname" type="Label" parent="ref_afsp_A1/ref_A1A"] +layout_mode = 0 +offset_left = 280.0 +offset_top = 7.0 +offset_right = 320.0 +offset_bottom = 37.0 +theme_override_font_sizes/font_size = 22 +text = "A1A" + +[node name="ref_bpch_8s" type="NinePatchRect" parent="ref_afsp_A1/ref_A1A"] +layout_mode = 0 +offset_left = 15.0 +offset_top = 45.0 +offset_right = 315.0 +offset_bottom = 465.0 +texture = ExtResource("2_won25") +patch_margin_left = 16 +patch_margin_top = 16 +patch_margin_right = 16 +patch_margin_bottom = 16 + +[node name="lbl_fname" type="Label" parent="ref_afsp_A1/ref_A1A/ref_bpch_8s"] +self_modulate = Color(1, 1, 1, 0.62) +layout_mode = 0 +offset_left = 8.0 +offset_top = 5.0 +offset_right = 293.0 +offset_bottom = 35.0 +text = "БПЧ-8С" +horizontal_alignment = 1 +vertical_alignment = 1 + +[node name="lbl_rname" type="Label" parent="ref_afsp_A1/ref_A1A/ref_bpch_8s"] +layout_mode = 0 +offset_left = 253.0 +offset_top = 5.0 +offset_right = 293.0 +offset_bottom = 35.0 +theme_override_font_sizes/font_size = 22 +text = "A17" + +[node name="ref_mshu1" parent="ref_afsp_A1/ref_A1A/ref_bpch_8s" instance=ExtResource("3_7rc2x")] +layout_mode = 0 +offset_left = 23.0 +offset_top = 225.0 +offset_right = 283.0 +offset_bottom = 270.0 +fname = "Модуль ЛА6А45" +rname = "А5" + +[node name="ref_mshu2" parent="ref_afsp_A1/ref_A1A/ref_bpch_8s" instance=ExtResource("3_7rc2x")] +layout_mode = 0 +offset_left = 23.0 +offset_top = 90.0 +offset_right = 283.0 +offset_bottom = 135.0 +fname = "Модуль ЛА6А45" +rname = "А2" + +[node name="ref_mshu3" parent="ref_afsp_A1/ref_A1A/ref_bpch_8s" instance=ExtResource("3_7rc2x")] +layout_mode = 0 +offset_left = 23.0 +offset_top = 135.0 +offset_right = 283.0 +offset_bottom = 180.0 +fname = "Модуль ЛА6А45" +rname = "А3" + +[node name="ref_mshu4" parent="ref_afsp_A1/ref_A1A/ref_bpch_8s" instance=ExtResource("3_7rc2x")] +layout_mode = 0 +offset_left = 23.0 +offset_top = 180.0 +offset_right = 283.0 +offset_bottom = 225.0 +fname = "Модуль ЛА6А45" +rname = "А4" + +[node name="ref_mshu5" parent="ref_afsp_A1/ref_A1A/ref_bpch_8s" instance=ExtResource("3_7rc2x")] +layout_mode = 0 +offset_left = 23.0 +offset_top = 270.0 +offset_right = 283.0 +offset_bottom = 315.0 +fname = "Модуль ЛА6А45" +rname = "А6" + +[node name="ref_mshu6" parent="ref_afsp_A1/ref_A1A/ref_bpch_8s" instance=ExtResource("3_7rc2x")] +layout_mode = 0 +offset_left = 23.0 +offset_top = 45.0 +offset_right = 283.0 +offset_bottom = 90.0 +fname = "Модуль ЛА6А45" +rname = "А1" + +[node name="ref_mshu7" parent="ref_afsp_A1/ref_A1A/ref_bpch_8s" instance=ExtResource("3_7rc2x")] +layout_mode = 0 +offset_left = 23.0 +offset_top = 315.0 +offset_right = 283.0 +offset_bottom = 360.0 +fname = "Модуль ЛА6А45" +rname = "А7" + +[node name="ref_mshu8" parent="ref_afsp_A1/ref_A1A/ref_bpch_8s" instance=ExtResource("3_7rc2x")] +layout_mode = 0 +offset_left = 23.0 +offset_top = 360.0 +offset_right = 283.0 +offset_bottom = 405.0 +fname = "Модуль ЛА6А45" +rname = "А8" + +[node name="ref_A2A" type="NinePatchRect" parent="ref_afsp_A1"] +layout_mode = 0 +offset_left = 10.0 +offset_top = 645.0 +offset_right = 340.0 +offset_bottom = 1096.0 +texture = ExtResource("2_won25") +patch_margin_left = 16 +patch_margin_top = 16 +patch_margin_right = 16 +patch_margin_bottom = 16 + +[node name="lbl_fname" type="Label" parent="ref_afsp_A1/ref_A2A"] +self_modulate = Color(1, 1, 1, 0.62) +layout_mode = 0 +offset_left = 10.0 +offset_top = 5.0 +offset_right = 320.0 +offset_bottom = 35.0 +text = "Панель ЛПА" +horizontal_alignment = 1 +vertical_alignment = 1 + +[node name="lbl_rname" type="Label" parent="ref_afsp_A1/ref_A2A"] +layout_mode = 0 +offset_left = 280.0 +offset_top = 5.0 +offset_right = 320.0 +offset_bottom = 35.0 +theme_override_font_sizes/font_size = 22 +text = "A2A" + +[node name="ref_bpch_8s" type="NinePatchRect" parent="ref_afsp_A1/ref_A2A"] +layout_mode = 0 +offset_left = 15.0 +offset_top = 34.0 +offset_right = 315.0 +offset_bottom = 438.0 +texture = ExtResource("2_won25") +patch_margin_left = 16 +patch_margin_top = 16 +patch_margin_right = 16 +patch_margin_bottom = 16 + +[node name="lbl_fname" type="Label" parent="ref_afsp_A1/ref_A2A/ref_bpch_8s"] +self_modulate = Color(1, 1, 1, 0.62) +layout_mode = 0 +offset_left = 8.0 +offset_top = 4.0 +offset_right = 293.0 +offset_bottom = 34.0 +text = "БПЧ-8С" +horizontal_alignment = 1 +vertical_alignment = 1 + +[node name="lbl_rname" type="Label" parent="ref_afsp_A1/ref_A2A/ref_bpch_8s"] +layout_mode = 0 +offset_left = 253.0 +offset_top = 4.0 +offset_right = 293.0 +offset_bottom = 34.0 +theme_override_font_sizes/font_size = 22 +text = "A17" + +[node name="ref_mshu1" parent="ref_afsp_A1/ref_A2A/ref_bpch_8s" instance=ExtResource("3_7rc2x")] +layout_mode = 0 +offset_left = 23.0 +offset_top = 214.0 +offset_right = 283.0 +offset_bottom = 259.0 +fname = "Модуль ЛА6А45" +rname = "А5" + +[node name="ref_mshu2" parent="ref_afsp_A1/ref_A2A/ref_bpch_8s" instance=ExtResource("3_7rc2x")] +layout_mode = 0 +offset_left = 23.0 +offset_top = 79.0 +offset_right = 283.0 +offset_bottom = 124.0 +fname = "Модуль ЛА6А45" +rname = "А2" + +[node name="ref_mshu3" parent="ref_afsp_A1/ref_A2A/ref_bpch_8s" instance=ExtResource("3_7rc2x")] +layout_mode = 0 +offset_left = 23.0 +offset_top = 124.0 +offset_right = 283.0 +offset_bottom = 169.0 +fname = "Модуль ЛА6А45" +rname = "А3" + +[node name="ref_mshu4" parent="ref_afsp_A1/ref_A2A/ref_bpch_8s" instance=ExtResource("3_7rc2x")] +layout_mode = 0 +offset_left = 23.0 +offset_top = 169.0 +offset_right = 283.0 +offset_bottom = 214.0 +fname = "Модуль ЛА6А45" +rname = "А4" + +[node name="ref_mshu5" parent="ref_afsp_A1/ref_A2A/ref_bpch_8s" instance=ExtResource("3_7rc2x")] +layout_mode = 0 +offset_left = 23.0 +offset_top = 259.0 +offset_right = 283.0 +offset_bottom = 304.0 +fname = "Модуль ЛА6А45" +rname = "А6" + +[node name="ref_mshu6" parent="ref_afsp_A1/ref_A2A/ref_bpch_8s" instance=ExtResource("3_7rc2x")] +layout_mode = 0 +offset_left = 23.0 +offset_top = 34.0 +offset_right = 283.0 +offset_bottom = 79.0 +fname = "Модуль ЛА6А45" +rname = "А1" + +[node name="ref_mshu7" parent="ref_afsp_A1/ref_A2A/ref_bpch_8s" instance=ExtResource("3_7rc2x")] +layout_mode = 0 +offset_left = 23.0 +offset_top = 304.0 +offset_right = 283.0 +offset_bottom = 349.0 +fname = "Модуль ЛА6А45" +rname = "А7" + +[node name="ref_mshu8" parent="ref_afsp_A1/ref_A2A/ref_bpch_8s" instance=ExtResource("3_7rc2x")] +layout_mode = 0 +offset_left = 23.0 +offset_top = 349.0 +offset_right = 283.0 +offset_bottom = 394.0 +fname = "Модуль ЛА6А45" +rname = "А8" + +[node name="ref_afsp_A2" type="NinePatchRect" parent="."] +layout_mode = 0 +offset_left = 394.0 +offset_top = -20.0 +offset_right = 749.0 +offset_bottom = 1090.0 +texture = ExtResource("2_won25") +patch_margin_left = 16 +patch_margin_top = 16 +patch_margin_right = 16 +patch_margin_bottom = 16 + +[node name="lbl_fname" type="Label" parent="ref_afsp_A2"] +self_modulate = Color(1, 1, 1, 0.62) +layout_mode = 0 +offset_left = 10.0 +offset_top = 5.0 +offset_right = 320.0 +offset_bottom = 35.0 +text = "АФСП-П" +horizontal_alignment = 1 +vertical_alignment = 1 + +[node name="lbl_rname" type="Label" parent="ref_afsp_A2"] +layout_mode = 0 +offset_left = 310.0 +offset_top = 5.0 +offset_right = 350.0 +offset_bottom = 35.0 +theme_override_font_sizes/font_size = 22 +text = "A2" +horizontal_alignment = 1 +vertical_alignment = 1 + +[node name="geterodin" parent="ref_afsp_A2" instance=ExtResource("3_7rc2x")] +layout_mode = 0 +offset_left = 10.0 +offset_top = 76.0 +offset_right = 340.0 +offset_bottom = 121.0 +fname = "Гетеродин" +rname = "ZZ2" + +[node name="modul_og" parent="ref_afsp_A2" instance=ExtResource("3_7rc2x")] +layout_mode = 2 +offset_left = 10.0 +offset_top = 31.0 +offset_right = 340.0 +offset_bottom = 76.0 +fname = "Модуль ОГ" +rname = "ZZ1" + +[node name="ref_A1A" type="NinePatchRect" parent="ref_afsp_A2"] +layout_mode = 0 +offset_left = 10.0 +offset_top = 142.0 +offset_right = 340.0 +offset_bottom = 622.0 +texture = ExtResource("2_won25") +patch_margin_left = 16 +patch_margin_top = 16 +patch_margin_right = 16 +patch_margin_bottom = 16 + +[node name="lbl_fname" type="Label" parent="ref_afsp_A2/ref_A1A"] +self_modulate = Color(1, 1, 1, 0.62) +layout_mode = 0 +offset_left = 10.0 +offset_top = 7.0 +offset_right = 320.0 +offset_bottom = 37.0 +text = "Панель ЛПА" +horizontal_alignment = 1 +vertical_alignment = 1 + +[node name="lbl_rname" type="Label" parent="ref_afsp_A2/ref_A1A"] +layout_mode = 0 +offset_left = 280.0 +offset_top = 7.0 +offset_right = 320.0 +offset_bottom = 37.0 +theme_override_font_sizes/font_size = 22 +text = "A1A" + +[node name="ref_bpch_8s" type="NinePatchRect" parent="ref_afsp_A2/ref_A1A"] +layout_mode = 0 +offset_left = 15.0 +offset_top = 45.0 +offset_right = 315.0 +offset_bottom = 465.0 +texture = ExtResource("2_won25") +patch_margin_left = 16 +patch_margin_top = 16 +patch_margin_right = 16 +patch_margin_bottom = 16 + +[node name="lbl_fname" type="Label" parent="ref_afsp_A2/ref_A1A/ref_bpch_8s"] +self_modulate = Color(1, 1, 1, 0.62) +layout_mode = 0 +offset_left = 8.0 +offset_top = 5.0 +offset_right = 293.0 +offset_bottom = 35.0 +text = "БПЧ-8С" +horizontal_alignment = 1 +vertical_alignment = 1 + +[node name="lbl_rname" type="Label" parent="ref_afsp_A2/ref_A1A/ref_bpch_8s"] +layout_mode = 0 +offset_left = 253.0 +offset_top = 5.0 +offset_right = 293.0 +offset_bottom = 35.0 +theme_override_font_sizes/font_size = 22 +text = "A17" + +[node name="ref_mshu1" parent="ref_afsp_A2/ref_A1A/ref_bpch_8s" instance=ExtResource("3_7rc2x")] +layout_mode = 0 +offset_left = 23.0 +offset_top = 225.0 +offset_right = 283.0 +offset_bottom = 270.0 +fname = "Модуль ЛА6А45" +rname = "А5" + +[node name="ref_mshu2" parent="ref_afsp_A2/ref_A1A/ref_bpch_8s" instance=ExtResource("3_7rc2x")] +layout_mode = 0 +offset_left = 23.0 +offset_top = 90.0 +offset_right = 283.0 +offset_bottom = 135.0 +fname = "Модуль ЛА6А45" +rname = "А2" + +[node name="ref_mshu3" parent="ref_afsp_A2/ref_A1A/ref_bpch_8s" instance=ExtResource("3_7rc2x")] +layout_mode = 0 +offset_left = 23.0 +offset_top = 135.0 +offset_right = 283.0 +offset_bottom = 180.0 +fname = "Модуль ЛА6А45" +rname = "А3" + +[node name="ref_mshu4" parent="ref_afsp_A2/ref_A1A/ref_bpch_8s" instance=ExtResource("3_7rc2x")] +layout_mode = 0 +offset_left = 23.0 +offset_top = 180.0 +offset_right = 283.0 +offset_bottom = 225.0 +fname = "Модуль ЛА6А45" +rname = "А4" + +[node name="ref_mshu5" parent="ref_afsp_A2/ref_A1A/ref_bpch_8s" instance=ExtResource("3_7rc2x")] +layout_mode = 0 +offset_left = 23.0 +offset_top = 270.0 +offset_right = 283.0 +offset_bottom = 315.0 +fname = "Модуль ЛА6А45" +rname = "А6" + +[node name="ref_mshu6" parent="ref_afsp_A2/ref_A1A/ref_bpch_8s" instance=ExtResource("3_7rc2x")] +layout_mode = 0 +offset_left = 23.0 +offset_top = 45.0 +offset_right = 283.0 +offset_bottom = 90.0 +fname = "Модуль ЛА6А45" +rname = "А1" + +[node name="ref_mshu7" parent="ref_afsp_A2/ref_A1A/ref_bpch_8s" instance=ExtResource("3_7rc2x")] +layout_mode = 0 +offset_left = 23.0 +offset_top = 315.0 +offset_right = 283.0 +offset_bottom = 360.0 +fname = "Модуль ЛА6А45" +rname = "А7" + +[node name="ref_mshu8" parent="ref_afsp_A2/ref_A1A/ref_bpch_8s" instance=ExtResource("3_7rc2x")] +layout_mode = 0 +offset_left = 23.0 +offset_top = 360.0 +offset_right = 283.0 +offset_bottom = 405.0 +fname = "Модуль ЛА6А45" +rname = "А8" + +[node name="ref_A2A" type="NinePatchRect" parent="ref_afsp_A2"] +layout_mode = 0 +offset_left = 14.0 +offset_top = 645.0 +offset_right = 344.0 +offset_bottom = 1096.0 +texture = ExtResource("2_won25") +patch_margin_left = 16 +patch_margin_top = 16 +patch_margin_right = 16 +patch_margin_bottom = 16 + +[node name="lbl_fname" type="Label" parent="ref_afsp_A2/ref_A2A"] +self_modulate = Color(1, 1, 1, 0.62) +layout_mode = 0 +offset_left = 10.0 +offset_top = 5.0 +offset_right = 320.0 +offset_bottom = 35.0 +text = "Панель ЛПА" +horizontal_alignment = 1 +vertical_alignment = 1 + +[node name="lbl_rname" type="Label" parent="ref_afsp_A2/ref_A2A"] +layout_mode = 0 +offset_left = 280.0 +offset_top = 5.0 +offset_right = 320.0 +offset_bottom = 35.0 +theme_override_font_sizes/font_size = 22 +text = "A2A" + +[node name="ref_bpch_8s" type="NinePatchRect" parent="ref_afsp_A2/ref_A2A"] +layout_mode = 0 +offset_left = 15.0 +offset_top = 34.0 +offset_right = 315.0 +offset_bottom = 438.0 +texture = ExtResource("2_won25") +patch_margin_left = 16 +patch_margin_top = 16 +patch_margin_right = 16 +patch_margin_bottom = 16 + +[node name="lbl_fname" type="Label" parent="ref_afsp_A2/ref_A2A/ref_bpch_8s"] +self_modulate = Color(1, 1, 1, 0.62) +layout_mode = 0 +offset_left = 8.0 +offset_top = 4.0 +offset_right = 293.0 +offset_bottom = 34.0 +text = "БПЧ-8С" +horizontal_alignment = 1 +vertical_alignment = 1 + +[node name="lbl_rname" type="Label" parent="ref_afsp_A2/ref_A2A/ref_bpch_8s"] +layout_mode = 0 +offset_left = 253.0 +offset_top = 4.0 +offset_right = 293.0 +offset_bottom = 34.0 +theme_override_font_sizes/font_size = 22 +text = "A17" + +[node name="ref_mshu1" parent="ref_afsp_A2/ref_A2A/ref_bpch_8s" instance=ExtResource("3_7rc2x")] +layout_mode = 0 +offset_left = 23.0 +offset_top = 214.0 +offset_right = 283.0 +offset_bottom = 259.0 +fname = "Модуль ЛА6А45" +rname = "А5" + +[node name="ref_mshu2" parent="ref_afsp_A2/ref_A2A/ref_bpch_8s" instance=ExtResource("3_7rc2x")] +layout_mode = 0 +offset_left = 23.0 +offset_top = 79.0 +offset_right = 283.0 +offset_bottom = 124.0 +fname = "Модуль ЛА6А45" +rname = "А2" + +[node name="ref_mshu3" parent="ref_afsp_A2/ref_A2A/ref_bpch_8s" instance=ExtResource("3_7rc2x")] +layout_mode = 0 +offset_left = 23.0 +offset_top = 124.0 +offset_right = 283.0 +offset_bottom = 169.0 +fname = "Модуль ЛА6А45" +rname = "А3" + +[node name="ref_mshu4" parent="ref_afsp_A2/ref_A2A/ref_bpch_8s" instance=ExtResource("3_7rc2x")] +layout_mode = 0 +offset_left = 23.0 +offset_top = 169.0 +offset_right = 283.0 +offset_bottom = 214.0 +fname = "Модуль ЛА6А45" +rname = "А4" + +[node name="ref_mshu5" parent="ref_afsp_A2/ref_A2A/ref_bpch_8s" instance=ExtResource("3_7rc2x")] +layout_mode = 0 +offset_left = 23.0 +offset_top = 259.0 +offset_right = 283.0 +offset_bottom = 304.0 +fname = "Модуль ЛА6А45" +rname = "А6" + +[node name="ref_mshu6" parent="ref_afsp_A2/ref_A2A/ref_bpch_8s" instance=ExtResource("3_7rc2x")] +layout_mode = 0 +offset_left = 23.0 +offset_top = 34.0 +offset_right = 283.0 +offset_bottom = 79.0 +fname = "Модуль ЛА6А45" +rname = "А1" + +[node name="ref_mshu7" parent="ref_afsp_A2/ref_A2A/ref_bpch_8s" instance=ExtResource("3_7rc2x")] +layout_mode = 0 +offset_left = 23.0 +offset_top = 304.0 +offset_right = 283.0 +offset_bottom = 349.0 +fname = "Модуль ЛА6А45" +rname = "А7" + +[node name="ref_mshu8" parent="ref_afsp_A2/ref_A2A/ref_bpch_8s" instance=ExtResource("3_7rc2x")] +layout_mode = 0 +offset_left = 23.0 +offset_top = 349.0 +offset_right = 283.0 +offset_bottom = 394.0 +fname = "Модуль ЛА6А45" +rname = "А8" diff --git a/scenes/pribor-rtr/pribor-rtr.tscn b/scenes/pribor-rtr/pribor-rtr.tscn index d28121f8..190d0691 100644 --- a/scenes/pribor-rtr/pribor-rtr.tscn +++ b/scenes/pribor-rtr/pribor-rtr.tscn @@ -10,6 +10,7 @@ anchors_preset = 0 script = ExtResource("1_ab82m") [node name="ref_A1" type="NinePatchRect" parent="."] +layout_mode = 0 offset_left = 123.0 offset_top = 164.0 offset_right = 783.0 @@ -51,6 +52,7 @@ rname = "A23" state = 1 [node name="ref_A2" type="NinePatchRect" parent="."] +layout_mode = 0 offset_left = 124.0 offset_top = 803.0 offset_right = 784.0 @@ -82,6 +84,7 @@ rname = "A27" state = 1 [node name="lbl_header" type="Label" parent="."] +layout_mode = 0 offset_left = 129.0 offset_top = 131.0 offset_right = 776.0 diff --git a/scenes/pribor-uf/pribor-uf.tscn b/scenes/pribor-uf/pribor-uf.tscn index dc886754..40b0b63d 100644 --- a/scenes/pribor-uf/pribor-uf.tscn +++ b/scenes/pribor-uf/pribor-uf.tscn @@ -10,6 +10,7 @@ anchors_preset = 0 script = ExtResource("1_2qyst") [node name="ref_uf" type="NinePatchRect" parent="."] +layout_mode = 0 offset_left = 98.0 offset_top = 247.0 offset_right = 708.0 @@ -176,6 +177,7 @@ offset_bottom = 35.0 text = "Кассета В-13" [node name="lbl_header" type="Label" parent="."] +layout_mode = 0 offset_left = 105.0 offset_top = 225.0 offset_right = 704.0 diff --git a/scenes/pribor-uyep/pribor-uyep.tscn b/scenes/pribor-uyep/pribor-uyep.tscn index b80bea7e..a56a8a64 100644 --- a/scenes/pribor-uyep/pribor-uyep.tscn +++ b/scenes/pribor-uyep/pribor-uyep.tscn @@ -10,6 +10,7 @@ anchors_preset = 0 script = ExtResource("1_b7gyx") [node name="ref_G1" type="NinePatchRect" parent="."] +layout_mode = 0 offset_left = 98.0 offset_top = 184.0 offset_right = 756.0 @@ -51,6 +52,7 @@ rname = "A2" state = 1 [node name="lbl_header" type="Label" parent="."] +layout_mode = 0 offset_left = 10.0 offset_top = 156.0 offset_right = 865.0 @@ -62,6 +64,7 @@ vertical_alignment = 1 [node name="Label" type="Label" parent="."] self_modulate = Color(0.835294, 0.141176, 0.286275, 1) +layout_mode = 0 offset_left = 244.0 offset_top = 1039.0 offset_right = 619.0 From ab31623ac289a9d673db347f906f7eab79d5c62f Mon Sep 17 00:00:00 2001 From: sasha80 Date: Fri, 3 May 2024 14:17:52 +0300 Subject: [PATCH 17/39] =?UTF-8?q?=D0=A7=D0=B8=D1=81=D1=82=D0=BA=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- scenes/pribor-afsp-sch3/pribor-afsp-sch3.tscn | 13 ------------- 1 file changed, 13 deletions(-) delete mode 100644 scenes/pribor-afsp-sch3/pribor-afsp-sch3.tscn diff --git a/scenes/pribor-afsp-sch3/pribor-afsp-sch3.tscn b/scenes/pribor-afsp-sch3/pribor-afsp-sch3.tscn deleted file mode 100644 index c89db0d1..00000000 --- a/scenes/pribor-afsp-sch3/pribor-afsp-sch3.tscn +++ /dev/null @@ -1,13 +0,0 @@ -[gd_scene format=3 uid="uid://iw38n1tqx3qx"] - -[node name="pribor_UF" type="Node2D"] - -[node name="lbl_header" type="Label" parent="."] -offset_left = -6.0 -offset_top = 81.0 -offset_right = 849.0 -offset_bottom = 107.0 -theme_override_font_sizes/font_size = 22 -text = "Контроль исправности прибора АФС-П Левый борт" -horizontal_alignment = 1 -vertical_alignment = 1 From c86da7b4e9b540190ff9390a7c0185aefeed8bbe Mon Sep 17 00:00:00 2001 From: sasha80 Date: Fri, 3 May 2024 14:20:41 +0300 Subject: [PATCH 18/39] =?UTF-8?q?=D0=94=D0=BE=D1=80=D0=B0=D0=B1=D0=BE?= =?UTF-8?q?=D1=82=D0=BA=D0=B0.=20=D0=A1=D0=BE=D0=BE=D0=B1=D1=89=D0=B5?= =?UTF-8?q?=D0=BD=D0=B8=D1=8F=20=D0=BE=20=D1=80=D0=B5=D0=B6=D0=B8=D0=BC?= =?UTF-8?q?=D0=B5=20=D0=BF=D1=80=D0=BE=D0=B3=D1=80=D0=B0=D0=BC=D0=BC=D1=8B?= =?UTF-8?q?=20=D0=B2=20=D0=B6=D1=83=D1=80=D0=BD=D0=B0=D0=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- scenes/журнал/журнал.gd | 7 +++++++ scenes/работа/sld_mode.gd | 16 ---------------- 2 files changed, 7 insertions(+), 16 deletions(-) delete mode 100644 scenes/работа/sld_mode.gd diff --git a/scenes/журнал/журнал.gd b/scenes/журнал/журнал.gd index 15676e3e..a83fc7f3 100644 --- a/scenes/журнал/журнал.gd +++ b/scenes/журнал/журнал.gd @@ -6,6 +6,7 @@ func on_command_fail(unit, addr): log.message(Logger.ERROR, 'Ошибка: ко func on_threats_changed(th: Object, msg: String): log.message(Logger.INFO, '%s: %s' % [msg, th.to_string()]) func on_parse_error(unit, msg: String): log.message(Logger.ERROR, '%s: %s' % [unit.to_string(), msg]) func on_interfer_off(ecm, _ecms, _thrs,msg: String): log.message(Logger.INFO, '%s: %s' % [msg, ecm.to_string()]) +func on_set_program_mode(msg: String): log.message(Logger.INFO, msg) func on_interfer_new(ecm, msg: String): if ecm.krp != interfer.INTERFER_OFF: @@ -28,6 +29,12 @@ func _ready() -> void: threats.connect('threat_lost', Callable(self, 'on_threats_changed').bind('Цель потеряна')) signaller.connect('interfer_new', Callable(self, 'on_interfer_new').bind('Создан сеанс помехи')) signaller.connect('interfer_off', Callable(self, 'on_interfer_off').bind('Сеанс помехи отключен')) + signaller.connect('режим_работа', Callable(self, 'on_set_program_mode').bind('Программа в режиме \"Работа\"')) + signaller.connect('режим_настройки', Callable(self, 'on_set_program_mode').bind('Программа в режиме \"Настройки\"')) + signaller.connect('режим_эмс', Callable(self, 'on_set_program_mode').bind('Программа в режиме \"ЭМС\"')) + signaller.connect('режим_журнал', Callable(self, 'on_set_program_mode').bind('Программа в режиме \"Журнал\"')) + signaller.connect('режим_контроль', Callable(self, 'on_set_program_mode').bind('Программа в режиме \"Журнал\"')) + func _on_clear_button_down() -> void: $content.clear() diff --git a/scenes/работа/sld_mode.gd b/scenes/работа/sld_mode.gd deleted file mode 100644 index 70d28161..00000000 --- a/scenes/работа/sld_mode.gd +++ /dev/null @@ -1,16 +0,0 @@ -extends VSlider - -const VAL_TO_LABEL = { 0: 'label0', 1: 'label1', 2: 'label2', 3: 'label3' } -const VAL_TO_EVENT = { 0: 'manual_control', 1: 'interfer_auto', 2: 'threat_auto', 3: 'full_auto' } - -func _ready(): _on_value_changed(3) - - -func _on_value_changed(val): - val = int(val) - for nm in VAL_TO_LABEL.values(): - var lbl = get_node(nm) - lbl.self_modulate.a = 0.45 - var lbl = get_node(VAL_TO_LABEL[val]) - lbl.self_modulate.a = 1.0 - signaller.emit_signal(VAL_TO_EVENT[val]) From e2673e1db50589ddf323d0733371f289ab914fb3 Mon Sep 17 00:00:00 2001 From: sasha80 Date: Fri, 3 May 2024 14:22:17 +0300 Subject: [PATCH 19/39] =?UTF-8?q?=D0=94=D0=BE=D1=80=D0=B0=D0=B1=D0=BE?= =?UTF-8?q?=D1=82=D0=BA=D0=B0.=20=D0=91=D0=BE=D0=BB=D0=B5=D0=B5=20=D1=81?= =?UTF-8?q?=D1=82=D1=80=D0=BE=D0=B9=D0=BD=D1=8B=D0=B5=20=D1=86=D0=B2=D0=B5?= =?UTF-8?q?=D1=82=D0=B0=20=D0=B7=D0=B0=D0=BF=D0=B8=D1=81=D0=B5=D0=B9=20?= =?UTF-8?q?=D0=B2=20=D0=B6=D1=83=D1=80=D0=BD=D0=B0=D0=BB=D0=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- scenes/журнал/журнал.tscn | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/scenes/журнал/журнал.tscn b/scenes/журнал/журнал.tscn index a9d4ad4a..61625611 100644 --- a/scenes/журнал/журнал.tscn +++ b/scenes/журнал/журнал.tscn @@ -27,6 +27,13 @@ threaded = true selection_enabled = true deselect_on_focus_loss_enabled = false script = ExtResource("2_wm8il") +colors = { +1: Color(1, 0.930333, 0.81, 1), +2: Color(0.717032, 0.762489, 0.694309, 1), +4: Color(1, 0.690196, 0, 1), +8: Color(0.91, 0, 0, 1), +16: Color(0.868077, 0.247988, 0.62812, 1) +} [node name="btn_save" type="Button" parent="."] layout_mode = 0 From 31a180100159fe434ba4c7ab5638a5d7503698a5 Mon Sep 17 00:00:00 2001 From: sasha80 Date: Fri, 3 May 2024 14:22:52 +0300 Subject: [PATCH 20/39] =?UTF-8?q?=D0=A0=D0=B5=D1=84=D0=B0=D0=BA=D1=82?= =?UTF-8?q?=D0=BE=D1=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- scenes/работа/sld-mode.gd | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) create mode 100644 scenes/работа/sld-mode.gd diff --git a/scenes/работа/sld-mode.gd b/scenes/работа/sld-mode.gd new file mode 100644 index 00000000..70d28161 --- /dev/null +++ b/scenes/работа/sld-mode.gd @@ -0,0 +1,16 @@ +extends VSlider + +const VAL_TO_LABEL = { 0: 'label0', 1: 'label1', 2: 'label2', 3: 'label3' } +const VAL_TO_EVENT = { 0: 'manual_control', 1: 'interfer_auto', 2: 'threat_auto', 3: 'full_auto' } + +func _ready(): _on_value_changed(3) + + +func _on_value_changed(val): + val = int(val) + for nm in VAL_TO_LABEL.values(): + var lbl = get_node(nm) + lbl.self_modulate.a = 0.45 + var lbl = get_node(VAL_TO_LABEL[val]) + lbl.self_modulate.a = 1.0 + signaller.emit_signal(VAL_TO_EVENT[val]) From b192960051e465b7fe62028a41414e1055870aa3 Mon Sep 17 00:00:00 2001 From: sasha80 Date: Fri, 3 May 2024 14:23:46 +0300 Subject: [PATCH 21/39] =?UTF-8?q?=D0=A0=D0=B5=D1=84=D0=B0=D0=BA=D1=82?= =?UTF-8?q?=D0=BE=D1=80.=20=D0=9E=D0=BF=D0=B8=D1=81=D0=B0=D0=BD=D0=B8?= =?UTF-8?q?=D0=B5=20=D1=84=D1=83=D0=BD=D0=BA=D1=86=D0=B8=D0=B9.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- table/table.gd | 41 ++++++++++++++++++++++++++++------------- 1 file changed, 28 insertions(+), 13 deletions(-) diff --git a/table/table.gd b/table/table.gd index 0173d7c2..b398155a 100644 --- a/table/table.gd +++ b/table/table.gd @@ -45,7 +45,7 @@ func set_node_user_data(i_col: int, i_row: int, val) -> void: set_node_meta(i_co func defaultselector_color_proc(_i_row: int): return selector_color -## Закрепляет заголовок таблицы. +## Закрепляет заголовок таблицы.[br] ## [param scrl] - Прокрутка родитель таблицы.[br] ## [param prnt] - Родитель прокрутки.[br] func pin_header(scrl: ScrollContainer, prnt: Control): @@ -173,23 +173,29 @@ func set_node_property(i_col: int, i_row: int, pname: String, val) -> void: node.set(pname, val) -## [param i_col] - Индекс колонки. [param i_row] - Индекс ряда. +## Возвращает значение поля ячейки.[br] +## [param pname] - Имя поля.[br] +## [param i_col] - Индекс колонки.[br] +## [param i_row] - Индекс ряда. func get_node_property(i_col: int, i_row: int, pname: String): var key: = get_node_key(NODE_KEY_FORMAT, i_col, i_row) var node = nodes[key] return node.get(pname) -## Возвращает ключ для существующей ячеки. Если ячейки с заданными индексами нет, -## вызывает исключение. [param i_col] - Индекс колонки. [param i_row] - Индекс ряда +## Возвращает ключ для существующей ячейки. Если ячейки с заданными индексами нет, +## вызывает исключение.[br] +## [param i_col] - Индекс колонки.[br] +## [param i_row] - Индекс ряда func get_node_key(format: String, i_col: int, i_row: int) -> String: var key: String = format % [i_row, i_col] assert(nodes.has(key), 'ошибка: нет такой ячейки - колонка:%d ряд:%d' % [i_col, i_row]) return key -## Возвращает массив с индексом ячейки. -## [b][0][/b] - индекс колонки, [b][1][/b] - индекс строки +## Возвращает массив с индексом ячейки:[br] +## [b][0][/b] - индекс колонки,[br] +## [b][1][/b] - индекс строки. func get_key_indexes(key: String) -> Array: var tokens: = key.split('_') assert(tokens.size() == 3, 'ошибка: неверный ключ: \"%s\"' % key) @@ -546,13 +552,18 @@ func set_rows_state(rows: Array) -> void: nodes[key].button_pressed = rows[i_row][i_col] -## [param i_col] - Индекс колонки. [param i_row] - Индекс ряда. +## Устанавливает состояние ячейки. +## [param i_col] - Индекс колонки.[br] +## [param i_row] - Индекс ряда.[br] +## [param val] - Новое состояние.[br] +## [i]Ячейка должна иметь свойство[/i] [param button_pressed] func set_node_state(i_col: int, i_row: int, val: bool) -> void: var key: = get_node_key(NODE_KEY_FORMAT, i_col, i_row) nodes[key].button_pressed = val -## [param i_col] - Индекс колонки. [param i_row] - Индекс ряда. +## [param i_col] - Индекс колонки.[br] +## [param i_row] - Индекс ряда. func set_node_frame(i_col: int, i_row: int, node_name: String, val: int) -> void: var key: = get_node_key(NODE_KEY_FORMAT, i_col, i_row) var node = nodes[key] @@ -560,14 +571,15 @@ func set_node_frame(i_col: int, i_row: int, node_name: String, val: int) -> void sprite.frame = val -## Разрешает редактирование ячейки. Ячейка должна иметь свойство [param editable]. -## [param i_col] - Индекс колонки. [param i_row] - Индекс ряда. +## Разрешает редактирование ячейки. Ячейка должна иметь свойство [param editable].[br] +## [param i_col] - Индекс колонки.[br] +## [param i_row] - Индекс ряда. func set_node_editable(i_col: int, i_row: int, val: bool) -> void: var key: = get_node_key(NODE_KEY_FORMAT, i_col, i_row) nodes[key].editable = val -## Разрешает редактирование ряда. Ячейки ряда должны иметь свойство [param editable]. +## Разрешает редактирование ряда. Ячейки ряда должны иметь свойство [param editable].[br] ## [param i_row] - Индекс ряда. func set_row_editable(i_row: int, val: bool) -> void: for i_col in columns: @@ -600,9 +612,11 @@ func get_row_text(i_row: int) -> Array: return row +## Устанавливает текст ячеек ряда.[br] ## [param i_row] - Индекс ряда.[br] ## [param row] - Массив новых значений текста (поле элемента [param text]).[br] -## [param i_begin] - Начальный индекс колонки начиная с которого установить новые значения +## [param i_begin] - Начальный индекс колонки начиная с которого установить новые значения.[br] +## [i]Ячейки ряда должны иметь свойство[/i] [param text] func set_row_text(i_row: int, row: Array, i_begin: int = 0, key_format: String = NODE_KEY_FORMAT) -> void: assert((i_begin >= 0) and (i_begin < columns)) assert((columns - i_begin) >= row.size()) @@ -642,7 +656,8 @@ func get_node_rect(i_col: int, i_row: int, rect: Array, key_format: String = NOD rect[3] = cell.size.y -## Возвращает прямоугольник [param rect] занимаемый рядом [param i_row]. [param key_format] - Формат ключа ячейки +## Возвращает прямоугольник [param rect] занимаемый рядом [param i_row].[br] +## [param key_format] - Формат ключа ячейки func get_row_rect(i_row: int, rect: Array, key_format: String = NODE_KEY_FORMAT) -> void: assert(rect.size() >= 4, 'ошибка: мало элементов для возврата результата') var cell0 = nodes[get_node_key(key_format, 0, i_row)] From 1cd4a503474e687d4e7235308dd95426aa8b9cc7 Mon Sep 17 00:00:00 2001 From: sasha80 Date: Fri, 3 May 2024 14:26:19 +0300 Subject: [PATCH 22/39] =?UTF-8?q?=D0=A0=D0=B5=D1=84=D0=B0=D0=BA=D1=82?= =?UTF-8?q?=D0=BE=D1=80.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- scenes/работа/работа.tscn | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scenes/работа/работа.tscn b/scenes/работа/работа.tscn index 8d5a2107..b7359562 100644 --- a/scenes/работа/работа.tscn +++ b/scenes/работа/работа.tscn @@ -11,7 +11,7 @@ [ext_resource type="PackedScene" uid="uid://bbq6nklh36yij" path="res://scenes/tilemap/tilemap.tscn" id="10_gtwyg"] [ext_resource type="PackedScene" uid="uid://b5kjdyxuwsot5" path="res://scenes/diagram/diagram.tscn" id="11_b6su4"] [ext_resource type="Shader" path="res://shaders/tilemap.gdshader" id="11_ekapd"] -[ext_resource type="Script" path="res://scenes/работа/sld_mode.gd" id="12_gqdkl"] +[ext_resource type="Script" path="res://scenes/работа/sld-mode.gd" id="12_gqdkl"] [sub_resource type="ShaderMaterial" id="ShaderMaterial_4p7y1"] resource_local_to_scene = true From 26dc6565caf9452ca7d53f7685e5d1d0661e24dd Mon Sep 17 00:00:00 2001 From: sasha80 Date: Fri, 3 May 2024 14:26:46 +0300 Subject: [PATCH 23/39] =?UTF-8?q?=D0=94=D0=BE=D1=80=D0=B0=D0=B1=D0=BE?= =?UTF-8?q?=D1=82=D0=BA=D0=B0.=20=D0=92=D0=BD=D0=B5=D1=88=D0=BD=D0=B8?= =?UTF-8?q?=D0=B9=20=D0=B2=D0=B8=D0=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- scenes/настройки/настройки.tscn | 30 +++++++++++++++--------------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/scenes/настройки/настройки.tscn b/scenes/настройки/настройки.tscn index dd7913b4..a5f0eec8 100644 --- a/scenes/настройки/настройки.tscn +++ b/scenes/настройки/настройки.tscn @@ -245,26 +245,26 @@ text = "Управление элементами в режиме с огран [node name="Label2" type="Label" parent="."] layout_mode = 0 offset_left = 16.0 -offset_top = 27.0 +offset_top = 20.0 offset_right = 476.0 -offset_bottom = 49.0 +offset_bottom = 50.0 text = "Текущий режим доступа: полный" +vertical_alignment = 1 [node name="edt_mapaddr" type="LineEdit" parent="."] layout_mode = 0 -offset_left = 477.0 -offset_top = 85.0 -offset_right = 849.0 -offset_bottom = 112.0 +offset_left = 660.0 +offset_top = 80.0 +offset_right = 1032.0 +offset_bottom = 110.0 script = SubResource("GDScript_anjmx") [node name="Label" type="Label" parent="edt_mapaddr"] layout_mode = 0 -offset_top = -30.0 -offset_right = 372.0 -offset_bottom = -8.0 -text = "Адрес сервера карт" -horizontal_alignment = 1 +offset_left = -180.0 +offset_right = -20.0 +offset_bottom = 30.0 +text = "Адрес сервера карт:" vertical_alignment = 1 [node name="GridContainer2" type="GridContainer" parent="."] @@ -299,10 +299,10 @@ button_pressed = true [node name="lbl_commit" type="Label" parent="."] layout_mode = 0 -offset_left = 483.0 -offset_top = 27.0 -offset_right = 1055.0 -offset_bottom = 46.0 +offset_left = 480.0 +offset_top = 20.0 +offset_right = 1040.0 +offset_bottom = 50.0 text = "Текущая версия ПО УАРЭП:" vertical_alignment = 1 From f3b18d630be19d28aa3e69985563cafc80cf951c Mon Sep 17 00:00:00 2001 From: sasha80 Date: Fri, 3 May 2024 14:37:16 +0300 Subject: [PATCH 24/39] =?UTF-8?q?=D0=A0=D0=B5=D1=84=D0=B0=D0=BA=D1=82?= =?UTF-8?q?=D0=BE=D1=80.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- git-hook.sh | 21 +++++++++++++-------- 1 file changed, 13 insertions(+), 8 deletions(-) diff --git a/git-hook.sh b/git-hook.sh index 12be8977..e0372577 100644 --- a/git-hook.sh +++ b/git-hook.sh @@ -1,14 +1,19 @@ #!/usr/bin/env bash -# 1. В папке ./git/hooks создать файлы: -# - post-checkout -# - post-commit -# - post-merge -# 2. В каждый файл записать строку: -# ./git-hook.sh -# 3. Теперь модуль scripts/commit.gd будет содержать данные о текущей версии +# Этот скрипт генерирует модуль с информацией для контроля версий + +# 1. В папке ./git/hooks создать файлы: +# - post-checkout +# - post-commit +# - post-merge +# 2. В каждый файл записать строку: +# ./git-hook.sh +# 3. Теперь модуль scripts/commit.gd будет содержать данные +# о текущей версии, после выполнения следующих операций СКВ: +# - переключение ветки; +# - после выполнение фиксации; +# - после выполнения слияния; -# Этот скрипт генерирует модуль с информацией о контроле версий GDSCRIPT_FILE="scripts/commit.gd" HEAD="$(git rev-parse --abbrev-ref HEAD) $(git rev-parse --short HEAD) $(git log -1 --format=%cd)" From 58201b303a6c57a39163c5b1c606b50509339885 Mon Sep 17 00:00:00 2001 From: sasha80 Date: Tue, 14 May 2024 11:53:44 +0300 Subject: [PATCH 25/39] =?UTF-8?q?=D0=94=D0=BE=D1=80=D0=B0=D0=B1=D0=BE?= =?UTF-8?q?=D1=82=D0=BA=D0=B0.=20=D0=95=D0=B4=D0=B8=D0=BD=D0=BE=D0=BE?= =?UTF-8?q?=D0=B1=D1=80=D0=B0=D0=B7=D0=BD=D1=8B=D0=B9=20=D0=B2=D0=B8=D0=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- data/Изделие МП-550.png | Bin 30604 -> 18617 bytes data/СПТ.png | Bin 2164 -> 1666 bytes data/УФ.png | Bin 5394 -> 3472 bytes data/Щ3.png | Bin 2494 -> 1806 bytes 4 files changed, 0 insertions(+), 0 deletions(-) diff --git a/data/Изделие МП-550.png b/data/Изделие МП-550.png index 69caf08090b7660995ff144d026229b066710094..41ae78a5ec7ac9ab9eb4a69a9189a9ffb93bb755 100644 GIT binary patch literal 18617 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 Hu0mjf-ENzb diff --git a/data/СПТ.png b/data/СПТ.png index eb44414f9974d2a5b477e6f31ba53761cb5248bc..77a456a50f5c31c3a831570250800155b9f7b2b4 100644 GIT binary patch delta 1650 zcmV-&295dj5P}VmBYy@-Nkl7uqX;>(XE?hkQeYfknEfQ6v7`B#b|mQF|FA9LI}%Tl3?cXsLYn9KEQIip$>ZbWA6b^UEXxw_ z{cj{cCwZR#QipA3uZrspyAQ$cisjdO9c5BT!h3I7mSMSECX2;lvRp2oXIb`Zp69=l ze4cpkH_C~b-J02rnN7?ru^%b4ry3Fy)HM@N5{2PduYcEgczD45{XLe;C9*6-p669k zl045h3e$B*_M4spH-eb93Vm_Z^KA&T?TETmd5W>dx$!fK#8fFM# zqokCy%O+C4>>E|=8+~kRXw9VVO7gb*uMNAjd$n5O{{9~G`5X@q4|sfhM4snA{S7li zGM~?@Uw>|14t4S-xLvomC2Zf2a9=VHCHL5EcD?3fBq(`#@3CI5k)|oqG{s`Es9^7F zyvb^{svfMvKGdyGwPu&SPucdEJ?Kz!pOW+@^eoG;UazrUudBMfPu2>09q^$HowIAU zwe6`1J$4L#Oj#*y_uikxu7X|``z}s!j)8Cruzz!sU6-_38IBECf08zBY;{_F0pO=b zv;Up){BA6ZOkI*>G|;cLcU=s6-%3l@`jqQ4@V4UfYB1{UCAzJ>E>9vC(cLFa#cLDeyhm1`CrQuzPzRn@swx-yJnP=~p0s4BZOYhfSy7Es9 zwRxUAWK;|o`WP(l6!bAovU*ishO*4;`hQ~ikk<9pNXH0$Y?jOPF+v}s590}WqC(UAKNkT zt_zl{yvXwYLYL){p{sdzw7iV@1TuFm%T-=vd4HkH^2pHDJbN}H6?9oH(*<3Y_kYK9 z0ly%04G|+lS6NXb9X@nfF4Kn(U6yy$bOFC0bPW+ZYPu}HAaq$C8M>NhN6U+Vp8@^Y zFYi;dWV*^q%h30IfUCR=AAhra;aWefx z%P)Bxzn~up{F1A%f*u*Tplfo}?K*zRQ}+cuauXHwh@b`igh@~v@CAL(1b;}TM=mRE zmKZ_Tka75y3;KaZD(I0XLV`Y!@wuQkK*v0mQ>I58p9}hxEFU%W*v(VWBM%V;{mPaD zBRm=)=FD?flTPY)j_DMbmj7247Y|?o;9ruT%I_ zn%M^cp8$M!+ujEp>Sr~!A%ByZ!8up{ybbu&%>D%MH-LWt{Fj6frnUNZ3*ZL8q%1uo zZRp0I^Bl#6&N-6w08)}O08;>W0H($51%O8YOlsMvz?<0($w{r|Tho@dO3^+T=l-or zG|>8Cbp`0kY?3pQQ<8TD^jTrN2f(*)-*N+Hm*V~V_g1{Nq}c0j0BhU=cvW22_eLxC z#(g53I%+wPe1;GhLhyN>ry+zH$;#{|>^E=TY`maRe$ei_ckjwXZ6wvqs-&7(mDC!i w%IpwAN^%xLn3B9Jpl`r_{ra`ei0(@K5BYk$&-BbCkN^Mx07*qoM6N<$f)cJay8r+H delta 2152 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 literal 5394 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 b!s-o304;u^HMDnDPG-)I?nv5?K^cDm?tF_0 delta 2485 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 Date: Tue, 14 May 2024 11:54:49 +0300 Subject: [PATCH 26/39] =?UTF-8?q?=D0=A0=D0=B5=D1=84=D0=B0=D0=BA=D1=82?= =?UTF-8?q?=D0=BE=D1=80.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- scenes/frame/{рамка.gd => frame.gd} | 0 scenes/frame/frame.tscn | 2 +- 2 files changed, 1 insertion(+), 1 deletion(-) rename scenes/frame/{рамка.gd => frame.gd} (100%) diff --git a/scenes/frame/рамка.gd b/scenes/frame/frame.gd similarity index 100% rename from scenes/frame/рамка.gd rename to scenes/frame/frame.gd diff --git a/scenes/frame/frame.tscn b/scenes/frame/frame.tscn index 13cf6dcb..0d87a36c 100644 --- a/scenes/frame/frame.tscn +++ b/scenes/frame/frame.tscn @@ -1,7 +1,7 @@ [gd_scene load_steps=3 format=3 uid="uid://bq7haw1ypiv48"] [ext_resource type="Texture2D" uid="uid://cs6i1xwx0pmdk" path="res://data/рамка-панели.png" id="1_n1ea1"] -[ext_resource type="Script" path="res://scenes/frame/рамка.gd" id="2_ki0kf"] +[ext_resource type="Script" path="res://scenes/frame/frame.gd" id="2_ki0kf"] [node name="ramka" type="NinePatchRect"] offset_right = 150.0 From 3661d1ca5acb9e5611b0687623a18841118edbdb Mon Sep 17 00:00:00 2001 From: sasha80 Date: Tue, 14 May 2024 12:56:58 +0300 Subject: [PATCH 27/39] =?UTF-8?q?=D0=94=D0=BE=D1=80=D0=B0=D0=B1=D0=BE?= =?UTF-8?q?=D1=82=D0=BA=D0=B0.=20=D0=9F=D1=80=D0=B8=D0=B1=D0=BE=D1=80=20?= =?UTF-8?q?=D0=90=D0=A4=D0=A1=D0=9F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- scenes/pribor-afsp/pribor-afsp.gd | 18 ++++++++++++++++++ scenes/pribor-afsp/pribor-afsp.tscn | 6 +++--- 2 files changed, 21 insertions(+), 3 deletions(-) create mode 100644 scenes/pribor-afsp/pribor-afsp.gd diff --git a/scenes/pribor-afsp/pribor-afsp.gd b/scenes/pribor-afsp/pribor-afsp.gd new file mode 100644 index 00000000..ba0c5654 --- /dev/null +++ b/scenes/pribor-afsp/pribor-afsp.gd @@ -0,0 +1,18 @@ +extends "res://scenes/контроль/прибор.gd" + + +var test_req: HTTPRequest +var test_addr: = String() +var test_data: = {} + +func _ready(): + test_req = HTTPRequest.new() + add_child(test_req) + test_req.request_completed.connect(_map_request_completed) + +func _map_request_completed(): + pass + + +func on_req_test_data_timer(): + test_req.request(test_addr) diff --git a/scenes/pribor-afsp/pribor-afsp.tscn b/scenes/pribor-afsp/pribor-afsp.tscn index 92832ca4..b152b559 100644 --- a/scenes/pribor-afsp/pribor-afsp.tscn +++ b/scenes/pribor-afsp/pribor-afsp.tscn @@ -1,6 +1,6 @@ [gd_scene load_steps=4 format=3 uid="uid://cpsbybk4r6t8d"] -[ext_resource type="Script" path="res://scenes/контроль/прибор.gd" id="1_7i12q"] +[ext_resource type="Script" path="res://scenes/pribor-afsp/pribor-afsp.gd" id="1_6xgf6"] [ext_resource type="Texture2D" uid="uid://c4mdrmk7h638f" path="res://data/nine-patch-round.png" id="2_won25"] [ext_resource type="PackedScene" uid="uid://d3iqb5e4g81m5" path="res://scenes/контроль/элемент-г.tscn" id="3_7rc2x"] @@ -11,14 +11,14 @@ offset_left = -10.0 offset_top = 65.0 offset_right = -10.0 offset_bottom = 65.0 -script = ExtResource("1_7i12q") +script = ExtResource("1_6xgf6") [node name="lbl_header" type="Label" parent="."] layout_mode = 0 offset_left = 25.0 offset_top = -55.0 offset_right = 745.0 -offset_bottom = -29.0 +offset_bottom = -25.0 theme_override_font_sizes/font_size = 22 text = "Контроль исправности прибора" horizontal_alignment = 1 From b3cdc855b9f1c8755fd462ce64f4760ecbd66f95 Mon Sep 17 00:00:00 2001 From: sasha80 Date: Tue, 14 May 2024 12:59:07 +0300 Subject: [PATCH 28/39] =?UTF-8?q?=D0=94=D0=BE=D1=80=D0=B0=D0=B1=D0=BE?= =?UTF-8?q?=D1=82=D0=BA=D0=B0.=20=D0=9E=D1=82=D0=BE=D0=B1=D1=80=D0=B0?= =?UTF-8?q?=D0=B6=D0=B5=D0=BD=D0=B8=D0=B5=20=D0=BF=D1=80=D0=B8=D0=B1=D0=BE?= =?UTF-8?q?=D1=80=D0=B0=20=D0=A0=D0=A2=D0=A0=20=D0=B2=20=D1=80=D0=B5=D0=B6?= =?UTF-8?q?=D0=B8=D0=BC=D0=B5=20=D0=9A=D0=BE=D0=BD=D1=8C=D1=80=D0=BE=D0=BB?= =?UTF-8?q?=D1=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- scenes/pribor-prd-v/pribor-prd-v.tscn | 124 +++++- scenes/pribor-rtr/pribor-rtr.tscn | 620 ++++++++++++++++++++++---- scenes/контроль/блок-а.tscn | 250 +++++++++++ scenes/контроль/блок-б.tscn | 292 ++++++++++++ scenes/контроль/прибор.gd | 8 +- scenes/контроль/уровень.tscn | 92 +++- scenes/контроль/элемент-в.tscn | 2 +- scenes/контроль/элемент-г.tscn | 2 +- 8 files changed, 1297 insertions(+), 93 deletions(-) create mode 100644 scenes/контроль/блок-а.tscn create mode 100644 scenes/контроль/блок-б.tscn diff --git a/scenes/pribor-prd-v/pribor-prd-v.tscn b/scenes/pribor-prd-v/pribor-prd-v.tscn index 7e690426..c1b9fe14 100644 --- a/scenes/pribor-prd-v/pribor-prd-v.tscn +++ b/scenes/pribor-prd-v/pribor-prd-v.tscn @@ -6,7 +6,7 @@ [ext_resource type="PackedScene" uid="uid://bk1655p4e8y4u" path="res://scenes/контроль/кассета-у-5.tscn" id="4_gl2bl"] [ext_resource type="PackedScene" uid="uid://cd5sue1e8iyrv" path="res://scenes/pribor-prd-n/kasseta-fs-nd.tscn" id="5_nhd2k"] [ext_resource type="PackedScene" uid="uid://dbxdb7lo7kofv" path="res://scenes/контроль/кассета-п-1.tscn" id="6_d3awr"] -[ext_resource type="PackedScene" uid="uid://bkxblfoj7ejv0" path="res://scenes/контроль/ум1535.tscn" id="7_e22c6"] +[ext_resource type="PackedScene" uid="uid://bkxblfoj7ejv0" path="res://scenes/контроль/блок-а.tscn" id="7_e22c6"] [node name="pribor_prd_n" type="Control"] layout_mode = 3 @@ -82,7 +82,7 @@ layout_mode = 0 offset_left = 20.0 offset_top = 214.0 offset_right = 640.0 -offset_bottom = 245.0 +offset_bottom = 240.0 theme_override_font_sizes/font_size = 22 text = "Контроль исправности прибора ПРД-В" horizontal_alignment = 1 @@ -118,6 +118,16 @@ offset_left = 485.0 offset_top = 242.0 offset_right = 645.0 offset_bottom = 337.0 +value0 = 91.0 +value1 = 22.0 +max_value0 = 100.0 +max_value1 = 100.0 +step0 = 1.0 +step1 = 1.0 +value_name0 = "°C" +value_name1 = "P, %" +name_min_size0 = Vector2i(35, 20) +name_min_size1 = Vector2i(35, 20) fname = "УМ1535А" rname = "A7" @@ -127,6 +137,16 @@ offset_left = 485.0 offset_top = 337.0 offset_right = 645.0 offset_bottom = 432.0 +value0 = 91.0 +value1 = 22.0 +max_value0 = 100.0 +max_value1 = 100.0 +step0 = 1.0 +step1 = 1.0 +value_name0 = "°C" +value_name1 = "P, %" +name_min_size0 = Vector2i(35, 20) +name_min_size1 = Vector2i(35, 20) fname = "УМ1535А" rname = "A8" @@ -136,6 +156,16 @@ offset_left = 485.0 offset_top = 432.0 offset_right = 645.0 offset_bottom = 527.0 +value0 = 91.0 +value1 = 22.0 +max_value0 = 100.0 +max_value1 = 100.0 +step0 = 1.0 +step1 = 1.0 +value_name0 = "°C" +value_name1 = "P, %" +name_min_size0 = Vector2i(35, 20) +name_min_size1 = Vector2i(35, 20) fname = "УМ1535А" rname = "A9" @@ -145,6 +175,16 @@ offset_left = 485.0 offset_top = 527.0 offset_right = 645.0 offset_bottom = 622.0 +value0 = 91.0 +value1 = 22.0 +max_value0 = 100.0 +max_value1 = 100.0 +step0 = 1.0 +step1 = 1.0 +value_name0 = "°C" +value_name1 = "P, %" +name_min_size0 = Vector2i(35, 20) +name_min_size1 = Vector2i(35, 20) fname = "УМ1535А" rname = "A10" @@ -154,6 +194,16 @@ offset_left = 485.0 offset_top = 622.0 offset_right = 645.0 offset_bottom = 717.0 +value0 = 91.0 +value1 = 22.0 +max_value0 = 100.0 +max_value1 = 100.0 +step0 = 1.0 +step1 = 1.0 +value_name0 = "°C" +value_name1 = "P, %" +name_min_size0 = Vector2i(35, 20) +name_min_size1 = Vector2i(35, 20) fname = "УМ1535А" rname = "A11" @@ -163,6 +213,16 @@ offset_left = 485.0 offset_top = 717.0 offset_right = 645.0 offset_bottom = 812.0 +value0 = 91.0 +value1 = 22.0 +max_value0 = 100.0 +max_value1 = 100.0 +step0 = 1.0 +step1 = 1.0 +value_name0 = "°C" +value_name1 = "P, %" +name_min_size0 = Vector2i(35, 20) +name_min_size1 = Vector2i(35, 20) fname = "УМ1535А" rname = "A11" @@ -172,6 +232,16 @@ offset_left = 15.0 offset_top = 242.0 offset_right = 175.0 offset_bottom = 337.0 +value0 = 91.0 +value1 = 33.0 +max_value0 = 100.0 +max_value1 = 100.0 +step0 = 1.0 +step1 = 1.0 +value_name0 = "°C" +value_name1 = "P, %" +name_min_size0 = Vector2i(35, 20) +name_min_size1 = Vector2i(35, 20) fname = "УМ1535А" rname = "A13" @@ -181,6 +251,16 @@ offset_left = 15.0 offset_top = 337.0 offset_right = 175.0 offset_bottom = 432.0 +value0 = 91.0 +value1 = 33.0 +max_value0 = 100.0 +max_value1 = 100.0 +step0 = 1.0 +step1 = 1.0 +value_name0 = "°C" +value_name1 = "P, %" +name_min_size0 = Vector2i(35, 20) +name_min_size1 = Vector2i(35, 20) fname = "УМ1535А" rname = "A14" @@ -190,6 +270,16 @@ offset_left = 15.0 offset_top = 432.0 offset_right = 175.0 offset_bottom = 527.0 +value0 = 91.0 +value1 = 33.0 +max_value0 = 100.0 +max_value1 = 100.0 +step0 = 1.0 +step1 = 1.0 +value_name0 = "°C" +value_name1 = "P, %" +name_min_size0 = Vector2i(35, 20) +name_min_size1 = Vector2i(35, 20) fname = "УМ1535А" rname = "A15" @@ -199,6 +289,16 @@ offset_left = 15.0 offset_top = 527.0 offset_right = 175.0 offset_bottom = 622.0 +value0 = 91.0 +value1 = 33.0 +max_value0 = 100.0 +max_value1 = 100.0 +step0 = 1.0 +step1 = 1.0 +value_name0 = "°C" +value_name1 = "P, %" +name_min_size0 = Vector2i(35, 20) +name_min_size1 = Vector2i(35, 20) fname = "УМ1535А" rname = "A16" @@ -208,6 +308,16 @@ offset_left = 15.0 offset_top = 622.0 offset_right = 175.0 offset_bottom = 717.0 +value0 = 91.0 +value1 = 33.0 +max_value0 = 100.0 +max_value1 = 100.0 +step0 = 1.0 +step1 = 1.0 +value_name0 = "°C" +value_name1 = "P, %" +name_min_size0 = Vector2i(35, 20) +name_min_size1 = Vector2i(35, 20) fname = "УМ1535А" rname = "A17" @@ -217,5 +327,15 @@ offset_left = 15.0 offset_top = 717.0 offset_right = 175.0 offset_bottom = 812.0 +value0 = 91.0 +value1 = 33.0 +max_value0 = 100.0 +max_value1 = 100.0 +step0 = 1.0 +step1 = 1.0 +value_name0 = "°C" +value_name1 = "P, %" +name_min_size0 = Vector2i(35, 20) +name_min_size1 = Vector2i(35, 20) fname = "УМ1535А" rname = "A18" diff --git a/scenes/pribor-rtr/pribor-rtr.tscn b/scenes/pribor-rtr/pribor-rtr.tscn index 190d0691..39ef6308 100644 --- a/scenes/pribor-rtr/pribor-rtr.tscn +++ b/scenes/pribor-rtr/pribor-rtr.tscn @@ -1,95 +1,553 @@ -[gd_scene load_steps=4 format=3 uid="uid://5uv1idl3lqet"] +[gd_scene load_steps=6 format=3 uid="uid://5uv1idl3lqet"] [ext_resource type="Script" path="res://scenes/контроль/прибор.gd" id="1_ab82m"] -[ext_resource type="PackedScene" uid="uid://d3iqb5e4g81m5" path="res://scenes/контроль/элемент-г.tscn" id="2_e75yj"] -[ext_resource type="Texture2D" uid="uid://c4mdrmk7h638f" path="res://data/nine-patch-round.png" id="3_a2683"] +[ext_resource type="Texture2D" uid="uid://c4mdrmk7h638f" path="res://data/nine-patch-round.png" id="2_02opt"] +[ext_resource type="PackedScene" uid="uid://7ps8s0jd2bdr" path="res://scenes/контроль/блок-б.tscn" id="2_v25ql"] +[ext_resource type="PackedScene" uid="uid://bkxblfoj7ejv0" path="res://scenes/контроль/блок-а.tscn" id="4_2tw5p"] +[ext_resource type="PackedScene" uid="uid://d3iqb5e4g81m5" path="res://scenes/контроль/элемент-г.tscn" id="5_mxmk0"] [node name="pribor_rtr" type="Control"] layout_mode = 3 anchors_preset = 0 script = ExtResource("1_ab82m") -[node name="ref_A1" type="NinePatchRect" parent="."] -layout_mode = 0 -offset_left = 123.0 -offset_top = 164.0 -offset_right = 783.0 -offset_bottom = 728.0 -texture = ExtResource("3_a2683") -patch_margin_left = 16 -patch_margin_top = 16 -patch_margin_right = 16 -patch_margin_bottom = 16 - -[node name="ref_A24" parent="ref_A1" instance=ExtResource("2_e75yj")] -layout_mode = 0 -offset_left = 311.0 -offset_top = 346.0 -offset_right = 621.0 -offset_bottom = 504.0 -fname = "Модуль процессорный O31S.B" -rname = "A24" -state = 1 - -[node name="ref_A25" parent="ref_A1" instance=ExtResource("2_e75yj")] -layout_mode = 0 -offset_left = 47.0 -offset_top = 387.0 -offset_right = 252.0 -offset_bottom = 503.0 -fname = "Плата" -rname = "A25" -state = 1 - -[node name="ref_A23" parent="ref_A1" instance=ExtResource("2_e75yj")] -layout_mode = 0 -offset_left = 451.0 -offset_top = 76.0 -offset_right = 611.0 -offset_bottom = 231.0 -fname = "MAA2000" -rname = "A23" -state = 1 - -[node name="ref_A2" type="NinePatchRect" parent="."] -layout_mode = 0 -offset_left = 124.0 -offset_top = 803.0 -offset_right = 784.0 -offset_bottom = 1097.0 -texture = ExtResource("3_a2683") -patch_margin_left = 16 -patch_margin_top = 16 -patch_margin_right = 16 -patch_margin_bottom = 16 - -[node name="ref_A26" parent="ref_A2" instance=ExtResource("2_e75yj")] -layout_mode = 0 -offset_left = 336.0 -offset_top = 68.0 -offset_right = 646.0 -offset_bottom = 226.0 -fname = "Модуль процессорный O31S.B" -rname = "A27" -state = 1 - -[node name="ref_A27" parent="ref_A2" instance=ExtResource("2_e75yj")] -layout_mode = 0 -offset_left = 68.0 -offset_top = 112.0 -offset_right = 273.0 -offset_bottom = 228.0 -fname = "Плата" -rname = "A27" -state = 1 - [node name="lbl_header" type="Label" parent="."] layout_mode = 0 -offset_left = 129.0 -offset_top = 131.0 -offset_right = 776.0 -offset_bottom = 157.0 +offset_left = 20.0 +offset_right = 620.0 +offset_bottom = 40.0 theme_override_font_sizes/font_size = 22 text = "Контроль исправности прибора" horizontal_alignment = 1 vertical_alignment = 1 + +[node name="konverter" type="NinePatchRect" parent="."] +layout_mode = 0 +offset_left = 20.0 +offset_top = 880.0 +offset_right = 620.0 +offset_bottom = 1160.0 +texture = ExtResource("2_02opt") +patch_margin_left = 16 +patch_margin_top = 16 +patch_margin_right = 16 +patch_margin_bottom = 16 + +[node name="lbl_fname" type="Label" parent="konverter"] +self_modulate = Color(1, 1, 1, 0.62) +layout_mode = 0 +offset_right = 600.0 +offset_bottom = 40.0 +text = "Конвертер 1000...6000 МГц" +horizontal_alignment = 1 +vertical_alignment = 1 + +[node name="grid" type="GridContainer" parent="konverter"] +layout_mode = 2 +offset_left = 20.0 +offset_top = 40.0 +offset_right = 580.0 +offset_bottom = 270.0 +columns = 4 + +[node name="kanal1" parent="konverter/grid" instance=ExtResource("2_v25ql")] +layout_mode = 2 +size_flags_horizontal = 7 +size_flags_vertical = 7 +value0 = 24.0 +value1 = 27.0 +max_value0 = 100.0 +max_value1 = 100.0 +step0 = 1.0 +step1 = 1.0 +value_name0 = "t, °C" +value_name1 = "U, В" +value_name2 = "CAN" +name_min_size0 = Vector2i(35, 20) +name_min_size1 = Vector2i(35, 20) +name_min_size2 = Vector2i(35, 20) +fname = "Канал 1" + +[node name="kanal2" parent="konverter/grid" instance=ExtResource("2_v25ql")] +layout_mode = 2 +size_flags_horizontal = 7 +size_flags_vertical = 7 +value0 = 24.0 +value1 = 27.0 +max_value0 = 100.0 +max_value1 = 100.0 +step0 = 1.0 +step1 = 1.0 +value_name0 = "t, °C" +value_name1 = "U, В" +value_name2 = "CAN" +name_min_size0 = Vector2i(35, 20) +name_min_size1 = Vector2i(35, 20) +name_min_size2 = Vector2i(35, 20) +fname = "Канал 2" + +[node name="kanal3" parent="konverter/grid" instance=ExtResource("2_v25ql")] +layout_mode = 2 +size_flags_horizontal = 7 +size_flags_vertical = 7 +value0 = 24.0 +value1 = 27.0 +max_value0 = 100.0 +max_value1 = 100.0 +step0 = 1.0 +step1 = 1.0 +value_name0 = "t, °C" +value_name1 = "U, В" +value_name2 = "CAN" +name_min_size0 = Vector2i(35, 20) +name_min_size1 = Vector2i(35, 20) +name_min_size2 = Vector2i(35, 20) +fname = "Канал 3" + +[node name="kanal4" parent="konverter/grid" instance=ExtResource("2_v25ql")] +layout_mode = 2 +size_flags_horizontal = 7 +size_flags_vertical = 7 +value0 = 24.0 +value1 = 27.0 +max_value0 = 100.0 +max_value1 = 100.0 +step0 = 1.0 +step1 = 1.0 +value_name0 = "t, °C" +value_name1 = "U, В" +value_name2 = "CAN" +name_min_size0 = Vector2i(35, 20) +name_min_size1 = Vector2i(35, 20) +name_min_size2 = Vector2i(35, 20) +fname = "Канал 4" + +[node name="kanal5" parent="konverter/grid" instance=ExtResource("2_v25ql")] +layout_mode = 2 +size_flags_horizontal = 7 +size_flags_vertical = 7 +value0 = 24.0 +value1 = 27.0 +max_value0 = 100.0 +max_value1 = 100.0 +step0 = 1.0 +step1 = 1.0 +value_name0 = "t, °C" +value_name1 = "U, В" +value_name2 = "CAN" +name_min_size0 = Vector2i(35, 20) +name_min_size1 = Vector2i(35, 20) +name_min_size2 = Vector2i(35, 20) +fname = "Канал 5" + +[node name="kanal6" parent="konverter/grid" instance=ExtResource("2_v25ql")] +layout_mode = 2 +size_flags_horizontal = 7 +size_flags_vertical = 7 +value0 = 24.0 +value1 = 27.0 +max_value0 = 100.0 +max_value1 = 100.0 +step0 = 1.0 +step1 = 1.0 +value_name0 = "t, °C" +value_name1 = "U, В" +value_name2 = "CAN" +name_min_size0 = Vector2i(35, 20) +name_min_size1 = Vector2i(35, 20) +name_min_size2 = Vector2i(35, 20) +fname = "Канал 6" + +[node name="kanal7" parent="konverter/grid" instance=ExtResource("2_v25ql")] +layout_mode = 2 +size_flags_horizontal = 7 +size_flags_vertical = 7 +value0 = 24.0 +value1 = 27.0 +max_value0 = 100.0 +max_value1 = 100.0 +step0 = 1.0 +step1 = 1.0 +value_name0 = "t, °C" +value_name1 = "U, В" +value_name2 = "CAN" +name_min_size0 = Vector2i(35, 20) +name_min_size1 = Vector2i(35, 20) +name_min_size2 = Vector2i(35, 20) +fname = "Канал 7" + +[node name="kanal8" parent="konverter/grid" instance=ExtResource("2_v25ql")] +layout_mode = 2 +size_flags_horizontal = 7 +size_flags_vertical = 7 +value0 = 24.0 +value1 = 27.0 +max_value0 = 100.0 +max_value1 = 100.0 +step0 = 1.0 +step1 = 1.0 +value_name0 = "t, °C" +value_name1 = "U, В" +value_name2 = "CAN" +name_min_size0 = Vector2i(35, 20) +name_min_size1 = Vector2i(35, 20) +name_min_size2 = Vector2i(35, 20) +fname = "Канал 8" + +[node name="antenna1" type="NinePatchRect" parent="."] +layout_mode = 0 +offset_left = 20.0 +offset_top = 40.0 +offset_right = 620.0 +offset_bottom = 460.0 +texture = ExtResource("2_02opt") +patch_margin_left = 16 +patch_margin_top = 16 +patch_margin_right = 16 +patch_margin_bottom = 16 + +[node name="lbl_fname" type="Label" parent="antenna1"] +self_modulate = Color(1, 1, 1, 0.62) +layout_mode = 0 +offset_right = 600.0 +offset_bottom = 40.0 +text = "Антенна 400...1000 МГц" +horizontal_alignment = 1 +vertical_alignment = 1 + +[node name="grid" type="GridContainer" parent="antenna1"] +layout_mode = 2 +offset_left = 20.0 +offset_top = 34.0 +offset_right = 574.0 +offset_bottom = 406.0 +columns = 4 + +[node name="yelement1" parent="antenna1/grid" instance=ExtResource("4_2tw5p")] +layout_mode = 2 +size_flags_horizontal = 7 +size_flags_vertical = 7 +value_name0 = "А" +value_name1 = "φ" +fname = "Элемент 1" + +[node name="yelement2" parent="antenna1/grid" instance=ExtResource("4_2tw5p")] +layout_mode = 2 +size_flags_horizontal = 7 +size_flags_vertical = 7 +value_name0 = "А" +value_name1 = "φ" +fname = "Элемент 2" + +[node name="yelement3" parent="antenna1/grid" instance=ExtResource("4_2tw5p")] +layout_mode = 2 +size_flags_horizontal = 7 +size_flags_vertical = 7 +value_name0 = "А" +value_name1 = "φ" +fname = "Элемент 3" + +[node name="yelement4" parent="antenna1/grid" instance=ExtResource("4_2tw5p")] +layout_mode = 2 +size_flags_horizontal = 7 +size_flags_vertical = 7 +value_name0 = "А" +value_name1 = "φ" +fname = "Элемент 4" + +[node name="yelement5" parent="antenna1/grid" instance=ExtResource("4_2tw5p")] +layout_mode = 2 +size_flags_horizontal = 7 +size_flags_vertical = 7 +value_name0 = "А" +value_name1 = "φ" +fname = "Элемент 5" + +[node name="yelement6" parent="antenna1/grid" instance=ExtResource("4_2tw5p")] +layout_mode = 2 +size_flags_horizontal = 7 +size_flags_vertical = 7 +value_name0 = "А" +value_name1 = "φ" +fname = "Элемент 6" + +[node name="yelement7" parent="antenna1/grid" instance=ExtResource("4_2tw5p")] +layout_mode = 2 +size_flags_horizontal = 7 +size_flags_vertical = 7 +value_name0 = "А" +value_name1 = "φ" +fname = "Элемент 7" + +[node name="yelement8" parent="antenna1/grid" instance=ExtResource("4_2tw5p")] +layout_mode = 2 +size_flags_horizontal = 7 +size_flags_vertical = 7 +value_name0 = "А" +value_name1 = "φ" +fname = "Элемент 8" + +[node name="yelement9" parent="antenna1/grid" instance=ExtResource("4_2tw5p")] +layout_mode = 2 +size_flags_horizontal = 7 +size_flags_vertical = 7 +value_name0 = "А" +value_name1 = "φ" +fname = "Элемент 9" + +[node name="yelement10" parent="antenna1/grid" instance=ExtResource("4_2tw5p")] +layout_mode = 2 +size_flags_horizontal = 7 +size_flags_vertical = 7 +value_name0 = "А" +value_name1 = "φ" +fname = "Элемент 10" + +[node name="yelement11" parent="antenna1/grid" instance=ExtResource("4_2tw5p")] +layout_mode = 2 +size_flags_horizontal = 7 +size_flags_vertical = 7 +value_name0 = "А" +value_name1 = "φ" +fname = "Элемент 11" + +[node name="yelement12" parent="antenna1/grid" instance=ExtResource("4_2tw5p")] +layout_mode = 2 +size_flags_horizontal = 7 +size_flags_vertical = 7 +value_name0 = "А" +value_name1 = "φ" +fname = "Элемент 12" + +[node name="yelement13" parent="antenna1/grid" instance=ExtResource("4_2tw5p")] +layout_mode = 2 +size_flags_horizontal = 7 +size_flags_vertical = 7 +value_name0 = "А" +value_name1 = "φ" +fname = "Элемент 13" + +[node name="yelement14" parent="antenna1/grid" instance=ExtResource("4_2tw5p")] +layout_mode = 2 +size_flags_horizontal = 7 +size_flags_vertical = 7 +value_name0 = "А" +value_name1 = "φ" +fname = "Элемент 14" + +[node name="yelement15" parent="antenna1/grid" instance=ExtResource("4_2tw5p")] +layout_mode = 2 +size_flags_horizontal = 7 +size_flags_vertical = 7 +value_name0 = "А" +value_name1 = "φ" +fname = "Элемент 15" + +[node name="yelement16" parent="antenna1/grid" instance=ExtResource("4_2tw5p")] +layout_mode = 2 +size_flags_horizontal = 7 +size_flags_vertical = 7 +value_name0 = "А" +value_name1 = "φ" +fname = "Элемент 16" + +[node name="antenna2" type="NinePatchRect" parent="."] +layout_mode = 0 +offset_left = 20.0 +offset_top = 460.0 +offset_right = 620.0 +offset_bottom = 880.0 +texture = ExtResource("2_02opt") +patch_margin_left = 16 +patch_margin_top = 16 +patch_margin_right = 16 +patch_margin_bottom = 16 + +[node name="lbl_fname" type="Label" parent="antenna2"] +self_modulate = Color(1, 1, 1, 0.62) +layout_mode = 0 +offset_right = 600.0 +offset_bottom = 40.0 +text = "Антенна 1000...6000 МГц" +horizontal_alignment = 1 +vertical_alignment = 1 + +[node name="grid" type="GridContainer" parent="antenna2"] +layout_mode = 2 +offset_left = 20.0 +offset_top = 34.0 +offset_right = 574.0 +offset_bottom = 406.0 +columns = 4 + +[node name="yelement1" parent="antenna2/grid" instance=ExtResource("4_2tw5p")] +layout_mode = 2 +size_flags_horizontal = 7 +size_flags_vertical = 7 +value_name0 = "А" +value_name1 = "φ" +fname = "Элемент 1" + +[node name="yelement2" parent="antenna2/grid" instance=ExtResource("4_2tw5p")] +layout_mode = 2 +size_flags_horizontal = 7 +size_flags_vertical = 7 +value_name0 = "А" +value_name1 = "φ" +fname = "Элемент 2" + +[node name="yelement3" parent="antenna2/grid" instance=ExtResource("4_2tw5p")] +layout_mode = 2 +size_flags_horizontal = 7 +size_flags_vertical = 7 +value_name0 = "А" +value_name1 = "φ" +fname = "Элемент 3" + +[node name="yelement4" parent="antenna2/grid" instance=ExtResource("4_2tw5p")] +layout_mode = 2 +size_flags_horizontal = 7 +size_flags_vertical = 7 +value_name0 = "А" +value_name1 = "φ" +fname = "Элемент 4" + +[node name="yelement5" parent="antenna2/grid" instance=ExtResource("4_2tw5p")] +layout_mode = 2 +size_flags_horizontal = 7 +size_flags_vertical = 7 +value_name0 = "А" +value_name1 = "φ" +fname = "Элемент 5" + +[node name="yelement6" parent="antenna2/grid" instance=ExtResource("4_2tw5p")] +layout_mode = 2 +size_flags_horizontal = 7 +size_flags_vertical = 7 +value_name0 = "А" +value_name1 = "φ" +fname = "Элемент 6" + +[node name="yelement7" parent="antenna2/grid" instance=ExtResource("4_2tw5p")] +layout_mode = 2 +size_flags_horizontal = 7 +size_flags_vertical = 7 +value_name0 = "А" +value_name1 = "φ" +fname = "Элемент 7" + +[node name="yelement8" parent="antenna2/grid" instance=ExtResource("4_2tw5p")] +layout_mode = 2 +size_flags_horizontal = 7 +size_flags_vertical = 7 +value_name0 = "А" +value_name1 = "φ" +fname = "Элемент 8" + +[node name="yelement9" parent="antenna2/grid" instance=ExtResource("4_2tw5p")] +layout_mode = 2 +size_flags_horizontal = 7 +size_flags_vertical = 7 +value_name0 = "А" +value_name1 = "φ" +fname = "Элемент 9" + +[node name="yelement10" parent="antenna2/grid" instance=ExtResource("4_2tw5p")] +layout_mode = 2 +size_flags_horizontal = 7 +size_flags_vertical = 7 +value_name0 = "А" +value_name1 = "φ" +fname = "Элемент 10" + +[node name="yelement11" parent="antenna2/grid" instance=ExtResource("4_2tw5p")] +layout_mode = 2 +size_flags_horizontal = 7 +size_flags_vertical = 7 +value_name0 = "А" +value_name1 = "φ" +fname = "Элемент 11" + +[node name="yelement12" parent="antenna2/grid" instance=ExtResource("4_2tw5p")] +layout_mode = 2 +size_flags_horizontal = 7 +size_flags_vertical = 7 +value_name0 = "А" +value_name1 = "φ" +fname = "Элемент 12" + +[node name="yelement13" parent="antenna2/grid" instance=ExtResource("4_2tw5p")] +layout_mode = 2 +size_flags_horizontal = 7 +size_flags_vertical = 7 +value_name0 = "А" +value_name1 = "φ" +fname = "Элемент 13" + +[node name="yelement14" parent="antenna2/grid" instance=ExtResource("4_2tw5p")] +layout_mode = 2 +size_flags_horizontal = 7 +size_flags_vertical = 7 +value_name0 = "А" +value_name1 = "φ" +fname = "Элемент 14" + +[node name="yelement15" parent="antenna2/grid" instance=ExtResource("4_2tw5p")] +layout_mode = 2 +size_flags_horizontal = 7 +size_flags_vertical = 7 +value_name0 = "А" +value_name1 = "φ" +fname = "Элемент 15" + +[node name="yelement16" parent="antenna2/grid" instance=ExtResource("4_2tw5p")] +layout_mode = 2 +size_flags_horizontal = 7 +size_flags_vertical = 7 +value_name0 = "А" +value_name1 = "φ" +fname = "Элемент 16" + +[node name="rpu" parent="." instance=ExtResource("2_v25ql")] +layout_mode = 2 +offset_left = 620.0 +offset_top = 1040.0 +offset_right = 860.0 +offset_bottom = 1160.0 +value_name0 = "t, °C" +value_name1 = "U, В" +value_name2 = "CAN" +name_min_size0 = Vector2i(35, 20) +name_min_size1 = Vector2i(35, 20) +name_min_size2 = Vector2i(35, 20) +fname = "Приёмник 20...1000 МГц" + +[node name="gen" parent="." instance=ExtResource("2_v25ql")] +layout_mode = 2 +offset_left = 620.0 +offset_top = 920.0 +offset_right = 860.0 +offset_bottom = 1034.0 +value_name0 = "t, °C" +value_name1 = "U, В" +value_name2 = "CAN" +name_min_size0 = Vector2i(35, 20) +name_min_size1 = Vector2i(35, 20) +name_min_size2 = Vector2i(35, 20) +fname = "Генератор" + +[node name="dsp" parent="." instance=ExtResource("5_mxmk0")] +layout_mode = 0 +offset_left = 620.0 +offset_top = 878.0 +offset_right = 860.0 +offset_bottom = 920.0 +fname = "Плата ЦОС" + +[node name="adc" parent="." instance=ExtResource("5_mxmk0")] +layout_mode = 0 +offset_left = 620.0 +offset_top = 820.0 +offset_right = 860.0 +offset_bottom = 862.0 +fname = "Плата АЦП" diff --git a/scenes/контроль/блок-а.tscn b/scenes/контроль/блок-а.tscn new file mode 100644 index 00000000..fb195f23 --- /dev/null +++ b/scenes/контроль/блок-а.tscn @@ -0,0 +1,250 @@ +[gd_scene load_steps=9 format=3 uid="uid://bkxblfoj7ejv0"] + +[ext_resource type="Texture2D" uid="uid://c6nve6f8sfyj2" path="res://data/состояние-исправности-0.png" id="1_xcvfs"] +[ext_resource type="Texture2D" uid="uid://dnreyfh3cd1k2" path="res://data/состояние-исправности-1.png" id="2_ad1dj"] +[ext_resource type="Texture2D" uid="uid://c6booa8753u5t" path="res://data/состояние-исправности-2.png" id="3_vxg7f"] +[ext_resource type="Texture2D" uid="uid://c4mdrmk7h638f" path="res://data/nine-patch-round.png" id="4_1bnn6"] +[ext_resource type="PackedScene" uid="uid://dyjtmfm4u58mu" path="res://scenes/контроль/уровень.tscn" id="5_3i5am"] + +[sub_resource type="StyleBoxEmpty" id="StyleBoxEmpty_3nd2u"] + +[sub_resource type="GDScript" id="GDScript_oj3k3"] +script/source = "@tool + +extends PanelContainer + + +@export var textures: Array + + +@export var value0: float: + set(v): + value0 = v + $margin/vbox/grid1/indicator0.value = v + get: + return value0 + + +@export var value1: float: + set(v): + value1 = v + $margin/vbox/grid1/indicator1.value = v + get: + return value1 + + +@export var min_value0: float: + set(v): + min_value0 = v + $margin/vbox/grid1/indicator0.min_value = v + get: + return min_value0 + + +@export var min_value1: float: + set(v): + min_value1 = v + $margin/vbox/grid1/indicator1.min_value = v + get: + return min_value1 + + +@export var max_value0: float: + set(v): + max_value0 = v + $margin/vbox/grid1/indicator0.max_value = v + get: + return max_value0 + + +@export var max_value1: float: + set(v): + max_value1 = v + $margin/vbox/grid1/indicator1.max_value = v + get: + return max_value1 + + +@export var step0: float: + set(v): + step0 = v + $margin/vbox/grid1/indicator0.step = v + get: + return step0 + + +@export var step1: float: + set(v): + step1 = v + $margin/vbox/grid1/indicator1.step = v + get: + return step1 + + +@export var value_name0: String: + set(v): + value_name0 = v + $margin/vbox/grid1/indicator0.value_name = v + get: + return value_name0 + + +@export var value_name1: String: + set(v): + value_name1 = v + $margin/vbox/grid1/indicator1.value_name = v + get: + return value_name1 + + +@export var name_min_size0: Vector2i: + set(v): + name_min_size0 = v + $margin/vbox/grid1/indicator0.name_min_size = v + get: + return name_min_size0 + + +@export var name_min_size1: Vector2i: + set(v): + name_min_size1 = v + $margin/vbox/grid1/indicator1.name_min_size = v + get: + return name_min_size1 + + +@export var fname: String: + set(v): + fname = v + $margin/vbox/grid0/fname.text = v + get: + return fname + +@export var rname: String: + set(v): + rname = v + $margin/vbox/grid0/rname.text = v + get: + return rname + + +@export var state: int: + set(v): + v = 0 if v < 0 else v + v %= textures.size() + state = v + $margin/vbox/grid0/state.texture = textures[v] + get: + return state + + +@export var alignment: int: + set(v): + alignment = v + $margin/vbox.alignment = v + get: + return alignment +" + +[sub_resource type="GDScript" id="GDScript_45hqb"] +script/source = "@tool + +extends MarginContainer + + +func _enter_tree() -> void: + margins = [8, 8, 8, 8] + + +@export var margins: Array: + set(vals): + add_theme_constant_override('margin_top', vals[0]) + add_theme_constant_override('margin_left', vals[1]) + add_theme_constant_override('margin_bottom', vals[2]) + add_theme_constant_override('margin_right', vals[3]) + get: + var vals = [0, 0, 0, 0] + vals[0] = get_theme_constant('margin_top') + vals[1] = get_theme_constant('margin_left') + vals[2] = get_theme_constant('margin_bottom') + vals[3] = get_theme_constant('margin_right') + return vals + + +" + +[node name="blok_a" type="PanelContainer"] +editor_description = "Элемент замены из ЗИП" +offset_right = 160.0 +offset_bottom = 88.0 +theme_override_styles/panel = SubResource("StyleBoxEmpty_3nd2u") +script = SubResource("GDScript_oj3k3") +textures = [ExtResource("1_xcvfs"), ExtResource("2_ad1dj"), ExtResource("3_vxg7f")] +metadata/ref_des = "" +metadata/dec_num = "" + +[node name="rect" type="NinePatchRect" parent="."] +layout_mode = 2 +texture = ExtResource("4_1bnn6") +draw_center = false +region_rect = Rect2(0, 0, 63, 63) +patch_margin_left = 17 +patch_margin_top = 17 +patch_margin_right = 17 +patch_margin_bottom = 15 + +[node name="margin" type="MarginContainer" parent="."] +layout_mode = 2 +theme_override_constants/margin_left = 8 +theme_override_constants/margin_top = 8 +theme_override_constants/margin_right = 8 +theme_override_constants/margin_bottom = 8 +script = SubResource("GDScript_45hqb") +margins = [8, 8, 8, 8] + +[node name="vbox" type="VBoxContainer" parent="margin"] +layout_mode = 2 + +[node name="grid0" type="GridContainer" parent="margin/vbox"] +layout_mode = 2 +columns = 3 + +[node name="state" type="TextureRect" parent="margin/vbox/grid0"] +custom_minimum_size = Vector2(24, 24) +layout_mode = 2 +size_flags_horizontal = 2 +size_flags_vertical = 6 +texture = ExtResource("1_xcvfs") +expand_mode = 1 + +[node name="fname" type="Label" parent="margin/vbox/grid0"] +self_modulate = Color(1, 1, 1, 0.627451) +custom_minimum_size = Vector2(0, 20) +layout_mode = 2 +size_flags_horizontal = 3 +size_flags_vertical = 3 +theme_override_font_sizes/font_size = 17 +horizontal_alignment = 1 +vertical_alignment = 1 + +[node name="rname" type="Label" parent="margin/vbox/grid0"] +layout_mode = 2 +size_flags_horizontal = 3 +size_flags_vertical = 6 +theme_override_font_sizes/font_size = 22 +horizontal_alignment = 2 +vertical_alignment = 1 + +[node name="grid1" type="GridContainer" parent="margin/vbox"] +layout_mode = 2 +size_flags_vertical = 6 + +[node name="indicator0" parent="margin/vbox/grid1" instance=ExtResource("5_3i5am")] +layout_mode = 2 +size_flags_horizontal = 3 +size_flags_vertical = 3 + +[node name="indicator1" parent="margin/vbox/grid1" instance=ExtResource("5_3i5am")] +layout_mode = 2 +size_flags_horizontal = 3 +size_flags_vertical = 3 diff --git a/scenes/контроль/блок-б.tscn b/scenes/контроль/блок-б.tscn new file mode 100644 index 00000000..14be8bd5 --- /dev/null +++ b/scenes/контроль/блок-б.tscn @@ -0,0 +1,292 @@ +[gd_scene load_steps=9 format=3 uid="uid://7ps8s0jd2bdr"] + +[ext_resource type="Texture2D" uid="uid://c6nve6f8sfyj2" path="res://data/состояние-исправности-0.png" id="1_8cp2h"] +[ext_resource type="Texture2D" uid="uid://dnreyfh3cd1k2" path="res://data/состояние-исправности-1.png" id="2_o7rki"] +[ext_resource type="Texture2D" uid="uid://c6booa8753u5t" path="res://data/состояние-исправности-2.png" id="3_vg8j2"] +[ext_resource type="Texture2D" uid="uid://c4mdrmk7h638f" path="res://data/nine-patch-round.png" id="4_a8fg2"] +[ext_resource type="PackedScene" uid="uid://dyjtmfm4u58mu" path="res://scenes/контроль/уровень.tscn" id="5_526hg"] + +[sub_resource type="StyleBoxEmpty" id="StyleBoxEmpty_3nd2u"] + +[sub_resource type="GDScript" id="GDScript_oj3k3"] +script/source = "@tool + +extends PanelContainer + + +@export var textures: Array + + +@export var value0: float: + set(v): + value0 = v + $margin/vbox/grid1/indicator0.value = v + get: + return value0 + + +@export var value1: float: + set(v): + value1 = v + $margin/vbox/grid1/indicator1.value = v + get: + return value1 + + +@export var value2: bool: + set(v): + value2 = v + $margin/vbox/grid2/lbl_value.text = 'подключен' if v else 'нет связи' + get: + return value2 + + +@export var min_value0: float: + set(v): + min_value0 = v + $margin/vbox/grid1/indicator0.min_value = v + get: + return min_value0 + + +@export var min_value1: float: + set(v): + min_value1 = v + $margin/vbox/grid1/indicator1.min_value = v + get: + return min_value1 + + +@export var max_value0: float: + set(v): + max_value0 = v + $margin/vbox/grid1/indicator0.max_value = v + get: + return max_value0 + + +@export var max_value1: float: + set(v): + max_value1 = v + $margin/vbox/grid1/indicator1.max_value = v + get: + return max_value1 + + +@export var step0: float: + set(v): + step0 = v + $margin/vbox/grid1/indicator0.step = v + get: + return step0 + + +@export var step1: float: + set(v): + step1 = v + $margin/vbox/grid1/indicator1.step = v + get: + return step1 + + +@export var value_name0: String: + set(v): + value_name0 = v + $margin/vbox/grid1/indicator0.value_name = v + get: + return value_name0 + + +@export var value_name1: String: + set(v): + value_name1 = v + $margin/vbox/grid1/indicator1.value_name = v + get: + return value_name1 + + +@export var value_name2: String: + set(v): + value_name2 = v + $margin/vbox/grid2/lbl_name.text = v + get: + return value_name2 + + +@export var name_min_size0: Vector2i: + set(v): + name_min_size0 = v + $margin/vbox/grid1/indicator0.name_min_size = v + get: + return name_min_size0 + + +@export var name_min_size1: Vector2i: + set(v): + name_min_size1 = v + $margin/vbox/grid1/indicator1.name_min_size = v + get: + return name_min_size1 + + +@export var name_min_size2: Vector2i: + set(v): + name_min_size2 = v + $margin/vbox/grid2/lbl_name.custom_minimum_size = v + get: + return name_min_size2 + + +@export var fname: String: + set(v): + fname = v + $margin/vbox/grid0/fname.text = v + get: + return fname + +@export var rname: String: + set(v): + rname = v + $margin/vbox/grid0/rname.text = v + get: + return rname + + +@export var state: int: + set(v): + v = 0 if v < 0 else v + v %= textures.size() + state = v + $margin/vbox/grid0/state.texture = textures[v] + get: + return state + + +@export var alignment: int: + set(v): + alignment = v + $margin/vbox.alignment = v + get: + return alignment +" + +[sub_resource type="GDScript" id="GDScript_45hqb"] +script/source = "@tool + +extends MarginContainer + + +func _enter_tree() -> void: + margins = [8, 8, 8, 8] + + +@export var margins: Array: + set(vals): + add_theme_constant_override('margin_top', vals[0]) + add_theme_constant_override('margin_left', vals[1]) + add_theme_constant_override('margin_bottom', vals[2]) + add_theme_constant_override('margin_right', vals[3]) + get: + var vals = [0, 0, 0, 0] + vals[0] = get_theme_constant('margin_top') + vals[1] = get_theme_constant('margin_left') + vals[2] = get_theme_constant('margin_bottom') + vals[3] = get_theme_constant('margin_right') + return vals + + +" + +[node name="blok_b" type="PanelContainer"] +editor_description = "Элемент замены из ЗИП" +offset_right = 160.0 +offset_bottom = 88.0 +theme_override_styles/panel = SubResource("StyleBoxEmpty_3nd2u") +script = SubResource("GDScript_oj3k3") +textures = [ExtResource("1_8cp2h"), ExtResource("2_o7rki"), ExtResource("3_vg8j2")] +metadata/ref_des = "" +metadata/dec_num = "" + +[node name="rect" type="NinePatchRect" parent="."] +layout_mode = 2 +texture = ExtResource("4_a8fg2") +draw_center = false +region_rect = Rect2(0, 0, 63, 63) +patch_margin_left = 17 +patch_margin_top = 17 +patch_margin_right = 17 +patch_margin_bottom = 15 + +[node name="margin" type="MarginContainer" parent="."] +layout_mode = 2 +theme_override_constants/margin_left = 8 +theme_override_constants/margin_top = 8 +theme_override_constants/margin_right = 8 +theme_override_constants/margin_bottom = 8 +script = SubResource("GDScript_45hqb") +margins = [8, 8, 8, 8] + +[node name="vbox" type="VBoxContainer" parent="margin"] +layout_mode = 2 + +[node name="grid0" type="GridContainer" parent="margin/vbox"] +layout_mode = 2 +columns = 3 + +[node name="state" type="TextureRect" parent="margin/vbox/grid0"] +custom_minimum_size = Vector2(24, 24) +layout_mode = 2 +size_flags_horizontal = 2 +size_flags_vertical = 6 +texture = ExtResource("1_8cp2h") +expand_mode = 1 + +[node name="fname" type="Label" parent="margin/vbox/grid0"] +self_modulate = Color(1, 1, 1, 0.627451) +custom_minimum_size = Vector2(0, 20) +layout_mode = 2 +size_flags_horizontal = 3 +size_flags_vertical = 3 +theme_override_font_sizes/font_size = 17 +horizontal_alignment = 1 +vertical_alignment = 1 + +[node name="rname" type="Label" parent="margin/vbox/grid0"] +layout_mode = 2 +size_flags_horizontal = 3 +size_flags_vertical = 6 +theme_override_font_sizes/font_size = 22 +horizontal_alignment = 2 +vertical_alignment = 1 + +[node name="grid1" type="GridContainer" parent="margin/vbox"] +layout_mode = 2 +size_flags_vertical = 6 + +[node name="indicator0" parent="margin/vbox/grid1" instance=ExtResource("5_526hg")] +layout_mode = 2 +size_flags_horizontal = 3 +size_flags_vertical = 3 + +[node name="indicator1" parent="margin/vbox/grid1" instance=ExtResource("5_526hg")] +layout_mode = 2 +size_flags_horizontal = 3 +size_flags_vertical = 3 + +[node name="grid2" type="GridContainer" parent="margin/vbox"] +layout_mode = 2 +columns = 2 + +[node name="lbl_name" type="Label" parent="margin/vbox/grid2"] +custom_minimum_size = Vector2(30, 20) +layout_mode = 2 +size_flags_vertical = 6 +horizontal_alignment = 1 + +[node name="lbl_value" type="Label" parent="margin/vbox/grid2"] +layout_mode = 2 +size_flags_horizontal = 3 +size_flags_vertical = 6 +theme_override_colors/font_color = Color(0.890196, 0.486275, 0.196078, 1) +text = "нет связи" +vertical_alignment = 1 diff --git a/scenes/контроль/прибор.gd b/scenes/контроль/прибор.gd index 481541ec..09099753 100644 --- a/scenes/контроль/прибор.gd +++ b/scenes/контроль/прибор.gd @@ -9,13 +9,19 @@ extends Control @export var fname: String: set(v): fname = v - + get: + return fname @export var rname: String: set(v): rname = v + get: + return rname func set_header_text(header_text: String): $lbl_header.text = header_text + +@export var nodes_mask: String = '' + diff --git a/scenes/контроль/уровень.tscn b/scenes/контроль/уровень.tscn index 32c96319..1f2754de 100644 --- a/scenes/контроль/уровень.tscn +++ b/scenes/контроль/уровень.tscn @@ -1,12 +1,81 @@ -[gd_scene load_steps=3 format=3 uid="uid://dyjtmfm4u58mu"] +[gd_scene load_steps=5 format=3 uid="uid://dyjtmfm4u58mu"] [ext_resource type="Texture2D" uid="uid://00871pb6moln" path="res://data/прогресс-фон-1.png" id="1_n4uxh"] [ext_resource type="Texture2D" uid="uid://c1k856fxhrjnh" path="res://data/прогресс-заполнение-1.png" id="2_os1gp"] +[ext_resource type="FontFile" uid="uid://befva8r034a4v" path="res://data/DSEG7Classic-Regular.ttf" id="3_px0hn"] -[node name="indicator_h" type="TextureProgressBar"] -offset_right = 100.0 -offset_bottom = 20.0 -value = 24.0 +[sub_resource type="GDScript" id="GDScript_eyk47"] +script/source = "@tool + +extends GridContainer + +@export var min_value: float: + set(v): + min_value = v + $indicator_h.min_value = v + get: + return min_value + + +@export var max_value: float: + set(v): + max_value = v + $indicator_h.max_value = v + get: + return max_value + + +@export var step: float: + set(v): + step = v + $indicator_h.step = v + get: + return step + + +@export var value: float: + set(v): + value = v + $indicator_h.value = v + $lbl_val.text = '%02d' % int(v) + get: + return value + + +@export var value_name: String: + set(v): + value_name = v + $lbl_name.text = v + get: + return value_name + + +@export var name_min_size: Vector2i: + set(v): + name_min_size = v + var l = $lbl_name + $lbl_name.custom_minimum_size = v + get: + return name_min_size +" + +[node name="grid" type="GridContainer"] +offset_right = 95.0 +offset_bottom = 19.0 +columns = 3 +script = SubResource("GDScript_eyk47") + +[node name="lbl_name" type="Label" parent="."] +custom_minimum_size = Vector2(30, 20) +layout_mode = 2 +horizontal_alignment = 1 +vertical_alignment = 1 + +[node name="indicator_h" type="TextureProgressBar" parent="."] +layout_mode = 2 +size_flags_horizontal = 3 +size_flags_vertical = 3 +value = 50.0 nine_patch_stretch = true stretch_margin_left = 8 stretch_margin_top = 8 @@ -14,5 +83,14 @@ stretch_margin_right = 8 stretch_margin_bottom = 8 texture_under = ExtResource("1_n4uxh") texture_progress = ExtResource("2_os1gp") -tint_under = Color(0.65098, 0.65098, 0.65098, 0.862745) -tint_progress = Color(0.180392, 0.517647, 0.321569, 0.901961) +tint_under = Color(1, 1, 1, 0.419608) +tint_progress = Color(0.890196, 0.486275, 0.196078, 1) + +[node name="lbl_val" type="Label" parent="."] +layout_mode = 2 +size_flags_vertical = 3 +theme_override_colors/font_color = Color(0.890196, 0.486275, 0.196078, 1) +theme_override_fonts/font = ExtResource("3_px0hn") +text = "00" +horizontal_alignment = 1 +vertical_alignment = 1 diff --git a/scenes/контроль/элемент-в.tscn b/scenes/контроль/элемент-в.tscn index cc945014..c7e6eb1d 100644 --- a/scenes/контроль/элемент-в.tscn +++ b/scenes/контроль/элемент-в.tscn @@ -67,7 +67,7 @@ func _on_resized() -> void: $txr_state.texture = textures[v] " -[node name="element_v" type="Control"] +[node name="yelement_v" type="Control"] editor_description = "Элемент замены из ЗИП" layout_mode = 3 anchors_preset = 0 diff --git a/scenes/контроль/элемент-г.tscn b/scenes/контроль/элемент-г.tscn index ce4eb4d9..baed981a 100644 --- a/scenes/контроль/элемент-г.tscn +++ b/scenes/контроль/элемент-г.tscn @@ -68,7 +68,7 @@ func _enter_tree() -> void: " -[node name="element_h" type="PanelContainer"] +[node name="yelement_g" type="PanelContainer"] editor_description = "Элемент замены из ЗИП" offset_right = 150.0 offset_bottom = 50.0 From 97ec75dfcb95588d24b4e2977614614f6b0e56b4 Mon Sep 17 00:00:00 2001 From: sasha80 Date: Tue, 14 May 2024 13:00:33 +0300 Subject: [PATCH 29/39] =?UTF-8?q?=D0=A0=D0=B5=D1=84=D0=B0=D0=BA=D1=82?= =?UTF-8?q?=D0=BE=D1=80.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- scenes/pribor-prd-k/pribor-prd-k.tscn | 202 ++++++++++++++++++++------ scenes/pribor-prd-n/pribor-prd-n.tscn | 102 ++++++++++++- 2 files changed, 261 insertions(+), 43 deletions(-) diff --git a/scenes/pribor-prd-k/pribor-prd-k.tscn b/scenes/pribor-prd-k/pribor-prd-k.tscn index 5ce323bb..e1dda62d 100644 --- a/scenes/pribor-prd-k/pribor-prd-k.tscn +++ b/scenes/pribor-prd-k/pribor-prd-k.tscn @@ -1,10 +1,10 @@ [gd_scene load_steps=9 format=3 uid="uid://m5s87q7m66lj"] -[ext_resource type="Script" path="res://scenes/контроль/прибор.gd" id="1_7kjrl"] [ext_resource type="PackedScene" uid="uid://d3iqb5e4g81m5" path="res://scenes/контроль/элемент-г.tscn" id="1_8dmgr"] +[ext_resource type="Script" path="res://scenes/контроль/прибор.gd" id="1_ufjwe"] [ext_resource type="Texture2D" uid="uid://c4mdrmk7h638f" path="res://data/nine-patch-round.png" id="2_14h25"] [ext_resource type="PackedScene" uid="uid://bk1655p4e8y4u" path="res://scenes/контроль/кассета-у-5.tscn" id="3_7orfk"] -[ext_resource type="PackedScene" uid="uid://bkxblfoj7ejv0" path="res://scenes/контроль/ум1535.tscn" id="6_fmhtx"] +[ext_resource type="PackedScene" uid="uid://bkxblfoj7ejv0" path="res://scenes/контроль/блок-а.tscn" id="6_fmhtx"] [ext_resource type="PackedScene" uid="uid://dbxdb7lo7kofv" path="res://scenes/контроль/кассета-п-1.tscn" id="7_cjjs2"] [ext_resource type="PackedScene" uid="uid://bmagw8nd0ulhj" path="res://scenes/pribor-prd-k/kasseta-fs-kd.tscn" id="7_ia27q"] [ext_resource type="PackedScene" uid="uid://dq31j24gv5vi4" path="res://scenes/контроль/кассета-п-2.tscn" id="8_6fdp7"] @@ -16,14 +16,14 @@ offset_left = 15.0 offset_top = 30.0 offset_right = 15.0 offset_bottom = 30.0 -script = ExtResource("1_7kjrl") +script = ExtResource("1_ufjwe") [node name="lbl_header" type="Label" parent="."] layout_mode = 0 offset_left = 20.0 offset_top = 210.0 offset_right = 640.0 -offset_bottom = 236.0 +offset_bottom = 240.0 theme_override_font_sizes/font_size = 22 text = "Контроль исправности прибора ПРД-К" horizontal_alignment = 1 @@ -38,7 +38,7 @@ offset_bottom = 942.0 fname = "MAA2000" rname = "A22" -[node name="dou2_A5" parent="." instance=ExtResource("1_8dmgr")] +[node name="dou2_A7" parent="." instance=ExtResource("1_8dmgr")] layout_mode = 0 offset_left = 485.0 offset_top = 812.0 @@ -56,7 +56,7 @@ offset_bottom = 942.0 fname = "MAA2000" rname = "A23" -[node name="dou2_A6" parent="." instance=ExtResource("1_8dmgr")] +[node name="dou2_A8" parent="." instance=ExtResource("1_8dmgr")] layout_mode = 0 offset_left = 15.0 offset_top = 812.0 @@ -89,111 +89,231 @@ text = "Панель horizontal_alignment = 1 vertical_alignment = 1 -[node name="um1535_A7" parent="." instance=ExtResource("6_fmhtx")] +[node name="um1535_A10" parent="." instance=ExtResource("6_fmhtx")] layout_mode = 0 offset_left = 485.0 offset_top = 242.0 offset_right = 645.0 offset_bottom = 337.0 +value0 = 28.0 +value1 = 70.0 +max_value0 = 99.0 +max_value1 = 99.0 +step0 = 1.0 +step1 = 1.0 +value_name0 = "°C" +value_name1 = "P, %" +name_min_size0 = Vector2i(35, 20) +name_min_size1 = Vector2i(35, 20) fname = "УМ1535Б" rname = "A10" -[node name="um1535_A8" parent="." instance=ExtResource("6_fmhtx")] -layout_mode = 0 -offset_left = 485.0 -offset_top = 337.0 -offset_right = 645.0 -offset_bottom = 432.0 -fname = "УМ1535Б" -rname = "A11" - -[node name="um1535_A9" parent="." instance=ExtResource("6_fmhtx")] -layout_mode = 0 -offset_left = 485.0 -offset_top = 432.0 -offset_right = 645.0 -offset_bottom = 527.0 -fname = "УМ1535Б" -rname = "A12" - -[node name="um1535_A10" parent="." instance=ExtResource("6_fmhtx")] -layout_mode = 0 -offset_left = 485.0 -offset_top = 527.0 -offset_right = 645.0 -offset_bottom = 622.0 -fname = "УМ1535Б" -rname = "A13" - [node name="um1535_A11" parent="." instance=ExtResource("6_fmhtx")] layout_mode = 0 offset_left = 485.0 +offset_top = 337.0 +offset_right = 645.0 +offset_bottom = 432.0 +value0 = 28.0 +value1 = 57.0 +max_value0 = 99.0 +max_value1 = 99.0 +step0 = 1.0 +step1 = 1.0 +value_name0 = "°C" +value_name1 = "P, %" +name_min_size0 = Vector2i(35, 20) +name_min_size1 = Vector2i(35, 20) +fname = "УМ1535Б" +rname = "A11" + +[node name="um1535_A12" parent="." instance=ExtResource("6_fmhtx")] +layout_mode = 0 +offset_left = 485.0 +offset_top = 432.0 +offset_right = 645.0 +offset_bottom = 527.0 +value0 = 28.0 +value1 = 57.0 +max_value0 = 99.0 +max_value1 = 99.0 +step0 = 1.0 +step1 = 1.0 +value_name0 = "°C" +value_name1 = "P, %" +name_min_size0 = Vector2i(35, 20) +name_min_size1 = Vector2i(35, 20) +fname = "УМ1535Б" +rname = "A12" + +[node name="um1535_A13" parent="." instance=ExtResource("6_fmhtx")] +layout_mode = 0 +offset_left = 485.0 +offset_top = 527.0 +offset_right = 645.0 +offset_bottom = 622.0 +value0 = 28.0 +value1 = 57.0 +max_value0 = 99.0 +max_value1 = 99.0 +step0 = 1.0 +step1 = 1.0 +value_name0 = "°C" +value_name1 = "P, %" +name_min_size0 = Vector2i(35, 20) +name_min_size1 = Vector2i(35, 20) +fname = "УМ1535Б" +rname = "A13" + +[node name="um1535_A14" parent="." instance=ExtResource("6_fmhtx")] +layout_mode = 0 +offset_left = 485.0 offset_top = 622.0 offset_right = 645.0 offset_bottom = 717.0 +value0 = 28.0 +value1 = 57.0 +max_value0 = 99.0 +max_value1 = 99.0 +step0 = 1.0 +step1 = 1.0 +value_name0 = "°C" +value_name1 = "P, %" +name_min_size0 = Vector2i(35, 20) +name_min_size1 = Vector2i(35, 20) fname = "УМ1535Б" rname = "A14" -[node name="um1535_A12" parent="." instance=ExtResource("6_fmhtx")] +[node name="um1535_A15" parent="." instance=ExtResource("6_fmhtx")] layout_mode = 0 offset_left = 485.0 offset_top = 717.0 offset_right = 645.0 offset_bottom = 812.0 +value0 = 28.0 +value1 = 57.0 +max_value0 = 99.0 +max_value1 = 99.0 +step0 = 1.0 +step1 = 1.0 +value_name0 = "°C" +value_name1 = "P, %" +name_min_size0 = Vector2i(35, 20) +name_min_size1 = Vector2i(35, 20) fname = "УМ1535Б" rname = "A15" -[node name="um1535_A13" parent="." instance=ExtResource("6_fmhtx")] +[node name="um1535_A16" parent="." instance=ExtResource("6_fmhtx")] layout_mode = 0 offset_left = 15.0 offset_top = 242.0 offset_right = 175.0 offset_bottom = 337.0 +value0 = 28.0 +value1 = 57.0 +max_value0 = 99.0 +max_value1 = 99.0 +step0 = 1.0 +step1 = 1.0 +value_name0 = "°C" +value_name1 = "P, %" +name_min_size0 = Vector2i(35, 20) +name_min_size1 = Vector2i(35, 20) fname = "УМ1535Б" rname = "A16" -[node name="um1535_A14" parent="." instance=ExtResource("6_fmhtx")] +[node name="um1535_A17" parent="." instance=ExtResource("6_fmhtx")] layout_mode = 0 offset_left = 15.0 offset_top = 337.0 offset_right = 175.0 offset_bottom = 432.0 +value0 = 28.0 +value1 = 57.0 +max_value0 = 99.0 +max_value1 = 99.0 +step0 = 1.0 +step1 = 1.0 +value_name0 = "°C" +value_name1 = "P, %" +name_min_size0 = Vector2i(35, 20) +name_min_size1 = Vector2i(35, 20) fname = "УМ1535Б" rname = "A17" -[node name="um1535_A15" parent="." instance=ExtResource("6_fmhtx")] +[node name="um1535_A18" parent="." instance=ExtResource("6_fmhtx")] layout_mode = 0 offset_left = 15.0 offset_top = 432.0 offset_right = 175.0 offset_bottom = 527.0 +value0 = 28.0 +value1 = 57.0 +max_value0 = 99.0 +max_value1 = 99.0 +step0 = 1.0 +step1 = 1.0 +value_name0 = "°C" +value_name1 = "P, %" +name_min_size0 = Vector2i(35, 20) +name_min_size1 = Vector2i(35, 20) fname = "УМ1535Б" rname = "A18" -[node name="um1535_A16" parent="." instance=ExtResource("6_fmhtx")] +[node name="um1535_A19" parent="." instance=ExtResource("6_fmhtx")] layout_mode = 0 offset_left = 15.0 offset_top = 527.0 offset_right = 175.0 offset_bottom = 622.0 +value0 = 28.0 +value1 = 57.0 +max_value0 = 99.0 +max_value1 = 99.0 +step0 = 1.0 +step1 = 1.0 +value_name0 = "°C" +value_name1 = "P, %" +name_min_size0 = Vector2i(35, 20) +name_min_size1 = Vector2i(35, 20) fname = "УМ1535Б" rname = "A19" -[node name="um1535_A17" parent="." instance=ExtResource("6_fmhtx")] +[node name="um1535_A20" parent="." instance=ExtResource("6_fmhtx")] layout_mode = 0 offset_left = 15.0 offset_top = 622.0 offset_right = 175.0 offset_bottom = 717.0 +value0 = 28.0 +value1 = 57.0 +max_value0 = 99.0 +max_value1 = 99.0 +step0 = 1.0 +step1 = 1.0 +value_name0 = "°C" +value_name1 = "P, %" +name_min_size0 = Vector2i(35, 20) +name_min_size1 = Vector2i(35, 20) fname = "УМ1535Б" rname = "A20" -[node name="um1535_A18" parent="." instance=ExtResource("6_fmhtx")] +[node name="um1535_A21" parent="." instance=ExtResource("6_fmhtx")] layout_mode = 0 offset_left = 15.0 offset_top = 717.0 offset_right = 175.0 offset_bottom = 812.0 +value0 = 28.0 +value1 = 57.0 +max_value0 = 99.0 +max_value1 = 99.0 +step0 = 1.0 +step1 = 1.0 +value_name0 = "°C" +value_name1 = "P, %" +name_min_size0 = Vector2i(35, 20) +name_min_size1 = Vector2i(35, 20) fname = "УМ1535Б" rname = "A21" diff --git a/scenes/pribor-prd-n/pribor-prd-n.tscn b/scenes/pribor-prd-n/pribor-prd-n.tscn index 25e63d85..1a1c81cd 100644 --- a/scenes/pribor-prd-n/pribor-prd-n.tscn +++ b/scenes/pribor-prd-n/pribor-prd-n.tscn @@ -6,7 +6,7 @@ [ext_resource type="PackedScene" uid="uid://bk1655p4e8y4u" path="res://scenes/контроль/кассета-у-5.tscn" id="5_ej152"] [ext_resource type="PackedScene" uid="uid://cd5sue1e8iyrv" path="res://scenes/pribor-prd-n/kasseta-fs-nd.tscn" id="6_1p3pi"] [ext_resource type="PackedScene" uid="uid://dbxdb7lo7kofv" path="res://scenes/контроль/кассета-п-1.tscn" id="7_klldp"] -[ext_resource type="PackedScene" uid="uid://bkxblfoj7ejv0" path="res://scenes/контроль/ум1535.tscn" id="8_u7eqo"] +[ext_resource type="PackedScene" uid="uid://bkxblfoj7ejv0" path="res://scenes/контроль/блок-а.tscn" id="8_u7eqo"] [node name="pribor_prd_n" type="Control"] layout_mode = 3 @@ -82,7 +82,7 @@ layout_mode = 0 offset_left = 20.0 offset_top = 214.0 offset_right = 640.0 -offset_bottom = 245.0 +offset_bottom = 240.0 theme_override_font_sizes/font_size = 22 text = "Контроль исправности прибора ПРД-Н" horizontal_alignment = 1 @@ -118,6 +118,14 @@ offset_left = 485.0 offset_top = 242.0 offset_right = 645.0 offset_bottom = 337.0 +value0 = 27.0 +value1 = 56.0 +max_value0 = 100.0 +max_value1 = 100.0 +value_name0 = "°C" +value_name1 = "P, %" +name_min_size0 = Vector2i(35, 20) +name_min_size1 = Vector2i(35, 20) fname = "УМ1535А" rname = "A7" @@ -127,6 +135,14 @@ offset_left = 485.0 offset_top = 337.0 offset_right = 645.0 offset_bottom = 432.0 +value0 = 27.0 +value1 = 56.0 +max_value0 = 100.0 +max_value1 = 100.0 +value_name0 = "°C" +value_name1 = "P, %" +name_min_size0 = Vector2i(35, 20) +name_min_size1 = Vector2i(35, 20) fname = "УМ1535А" rname = "A8" @@ -136,6 +152,14 @@ offset_left = 485.0 offset_top = 432.0 offset_right = 645.0 offset_bottom = 527.0 +value0 = 27.0 +value1 = 56.0 +max_value0 = 100.0 +max_value1 = 100.0 +value_name0 = "°C" +value_name1 = "P, %" +name_min_size0 = Vector2i(35, 20) +name_min_size1 = Vector2i(35, 20) fname = "УМ1535А" rname = "A9" @@ -145,6 +169,14 @@ offset_left = 485.0 offset_top = 527.0 offset_right = 645.0 offset_bottom = 622.0 +value0 = 27.0 +value1 = 56.0 +max_value0 = 100.0 +max_value1 = 100.0 +value_name0 = "°C" +value_name1 = "P, %" +name_min_size0 = Vector2i(35, 20) +name_min_size1 = Vector2i(35, 20) fname = "УМ1535А" rname = "A10" @@ -154,6 +186,14 @@ offset_left = 485.0 offset_top = 622.0 offset_right = 645.0 offset_bottom = 717.0 +value0 = 27.0 +value1 = 56.0 +max_value0 = 100.0 +max_value1 = 100.0 +value_name0 = "°C" +value_name1 = "P, %" +name_min_size0 = Vector2i(35, 20) +name_min_size1 = Vector2i(35, 20) fname = "УМ1535А" rname = "A11" @@ -163,6 +203,14 @@ offset_left = 485.0 offset_top = 717.0 offset_right = 645.0 offset_bottom = 812.0 +value0 = 27.0 +value1 = 56.0 +max_value0 = 100.0 +max_value1 = 100.0 +value_name0 = "°C" +value_name1 = "P, %" +name_min_size0 = Vector2i(35, 20) +name_min_size1 = Vector2i(35, 20) fname = "УМ1535А" rname = "A11" @@ -172,6 +220,16 @@ offset_left = 15.0 offset_top = 242.0 offset_right = 175.0 offset_bottom = 337.0 +value0 = 27.0 +value1 = 56.0 +max_value0 = 100.0 +max_value1 = 100.0 +step0 = 1.0 +step1 = 1.0 +value_name0 = "°C" +value_name1 = "P, %" +name_min_size0 = Vector2i(35, 20) +name_min_size1 = Vector2i(35, 20) fname = "УМ1535А" rname = "A13" @@ -181,6 +239,14 @@ offset_left = 15.0 offset_top = 337.0 offset_right = 175.0 offset_bottom = 432.0 +value0 = 27.0 +value1 = 56.0 +max_value0 = 100.0 +max_value1 = 100.0 +value_name0 = "°C" +value_name1 = "P, %" +name_min_size0 = Vector2i(35, 20) +name_min_size1 = Vector2i(35, 20) fname = "УМ1535А" rname = "A14" @@ -190,6 +256,14 @@ offset_left = 15.0 offset_top = 432.0 offset_right = 175.0 offset_bottom = 527.0 +value0 = 27.0 +value1 = 56.0 +max_value0 = 100.0 +max_value1 = 100.0 +value_name0 = "°C" +value_name1 = "P, %" +name_min_size0 = Vector2i(35, 20) +name_min_size1 = Vector2i(35, 20) fname = "УМ1535А" rname = "A15" @@ -199,6 +273,14 @@ offset_left = 15.0 offset_top = 527.0 offset_right = 175.0 offset_bottom = 622.0 +value0 = 27.0 +value1 = 56.0 +max_value0 = 100.0 +max_value1 = 100.0 +value_name0 = "°C" +value_name1 = "P, %" +name_min_size0 = Vector2i(35, 20) +name_min_size1 = Vector2i(35, 20) fname = "УМ1535А" rname = "A16" @@ -208,6 +290,14 @@ offset_left = 15.0 offset_top = 622.0 offset_right = 175.0 offset_bottom = 717.0 +value0 = 27.0 +value1 = 56.0 +max_value0 = 100.0 +max_value1 = 100.0 +value_name0 = "°C" +value_name1 = "P, %" +name_min_size0 = Vector2i(35, 20) +name_min_size1 = Vector2i(35, 20) fname = "УМ1535А" rname = "A17" @@ -217,5 +307,13 @@ offset_left = 15.0 offset_top = 717.0 offset_right = 175.0 offset_bottom = 812.0 +value0 = 27.0 +value1 = 56.0 +max_value0 = 100.0 +max_value1 = 100.0 +value_name0 = "°C" +value_name1 = "P, %" +name_min_size0 = Vector2i(35, 20) +name_min_size1 = Vector2i(35, 20) fname = "УМ1535А" rname = "A18" From 4d860fc3f43eecec21d16e7c74c8ecba5a7fcdfe Mon Sep 17 00:00:00 2001 From: sasha80 Date: Tue, 14 May 2024 13:01:11 +0300 Subject: [PATCH 30/39] =?UTF-8?q?=D0=94=D0=BE=D1=80=D0=B0=D0=B1=D0=BE?= =?UTF-8?q?=D1=82=D0=BA=D0=B0.=20=D0=9F=D0=B5=D1=80=D0=B5=D0=BA=D0=BB?= =?UTF-8?q?=D1=8E=D1=87=D0=B5=D0=BD=D0=B8=D0=B5=20=D1=80=D0=B5=D0=B6=D0=B8?= =?UTF-8?q?=D0=BC=D0=BE=D0=B2=20=D1=80=D0=B0=D0=B1=D0=BE=D1=82=D1=8B=20?= =?UTF-8?q?=D0=BF=D1=80=D0=BE=D0=B3=D1=80=D0=B0=D0=BC=D0=BC=D1=8B=20=D0=BE?= =?UTF-8?q?=D1=82=D0=BE=D0=B1=D1=80=D0=B0=D0=B7=D0=B8=D1=82=D1=8C=20=D0=B2?= =?UTF-8?q?=20=D0=B6=D1=83=D1=80=D0=BD=D0=B0=D0=BB=D0=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- scenes/tabs-switch/tab-switch.gd | 11 ++++++++--- scenes/журнал/журнал.gd | 10 +++++----- 2 files changed, 13 insertions(+), 8 deletions(-) diff --git a/scenes/tabs-switch/tab-switch.gd b/scenes/tabs-switch/tab-switch.gd index e72baa06..31a8f966 100644 --- a/scenes/tabs-switch/tab-switch.gd +++ b/scenes/tabs-switch/tab-switch.gd @@ -1,7 +1,12 @@ extends TabContainer -func _enter_tree() -> void: repnetwork.logger_page = $Журнал +const TAB_TOSIGNAL_NAME = {0: 'режим_работа', 1: 'режим_контроль', 2: 'режим_журнал', 3: 'режим_эмс', 4: 'режим_настройки'} -func _on_tab_changed(tab): - pass # Replace with function body. +func _enter_tree() -> void: + repnetwork.logger_page = $Журнал + + +func _on_tab_changed(tab) -> void: + if TAB_TOSIGNAL_NAME.has(tab): + signaller.emit_signal(TAB_TOSIGNAL_NAME[tab]) diff --git a/scenes/журнал/журнал.gd b/scenes/журнал/журнал.gd index a83fc7f3..340888f3 100644 --- a/scenes/журнал/журнал.gd +++ b/scenes/журнал/журнал.gd @@ -29,11 +29,11 @@ func _ready() -> void: threats.connect('threat_lost', Callable(self, 'on_threats_changed').bind('Цель потеряна')) signaller.connect('interfer_new', Callable(self, 'on_interfer_new').bind('Создан сеанс помехи')) signaller.connect('interfer_off', Callable(self, 'on_interfer_off').bind('Сеанс помехи отключен')) - signaller.connect('режим_работа', Callable(self, 'on_set_program_mode').bind('Программа в режиме \"Работа\"')) - signaller.connect('режим_настройки', Callable(self, 'on_set_program_mode').bind('Программа в режиме \"Настройки\"')) - signaller.connect('режим_эмс', Callable(self, 'on_set_program_mode').bind('Программа в режиме \"ЭМС\"')) - signaller.connect('режим_журнал', Callable(self, 'on_set_program_mode').bind('Программа в режиме \"Журнал\"')) - signaller.connect('режим_контроль', Callable(self, 'on_set_program_mode').bind('Программа в режиме \"Журнал\"')) + signaller.connect('режим_работа', Callable(log, 'info').bind('Программа в режиме \"Работа\"')) + signaller.connect('режим_настройки', Callable(log, 'info').bind('Программа в режиме \"Настройки\"')) + signaller.connect('режим_эмс', Callable(log, 'info').bind('Программа в режиме \"ЭМС\"')) + signaller.connect('режим_журнал', Callable(log, 'info').bind('Программа в режиме \"Журнал\"')) + signaller.connect('режим_контроль', Callable(log, 'info').bind('Программа в режиме \"Контроль\"')) func _on_clear_button_down() -> void: From 8defb16c45e544ebdd5a3735986e43609a7164c1 Mon Sep 17 00:00:00 2001 From: sasha80 Date: Tue, 14 May 2024 13:01:25 +0300 Subject: [PATCH 31/39] =?UTF-8?q?=D0=A7=D0=B8=D1=81=D1=82=D0=BA=D0=B0.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- scenes/контроль/ум1535.tscn | 156 ------------------------------------ 1 file changed, 156 deletions(-) delete mode 100644 scenes/контроль/ум1535.tscn diff --git a/scenes/контроль/ум1535.tscn b/scenes/контроль/ум1535.tscn deleted file mode 100644 index f8ee7938..00000000 --- a/scenes/контроль/ум1535.tscn +++ /dev/null @@ -1,156 +0,0 @@ -[gd_scene load_steps=9 format=3 uid="uid://bkxblfoj7ejv0"] - -[ext_resource type="Texture2D" uid="uid://c6nve6f8sfyj2" path="res://data/состояние-исправности-0.png" id="1_xcvfs"] -[ext_resource type="Texture2D" uid="uid://dnreyfh3cd1k2" path="res://data/состояние-исправности-1.png" id="2_ad1dj"] -[ext_resource type="Texture2D" uid="uid://c6booa8753u5t" path="res://data/состояние-исправности-2.png" id="3_vxg7f"] -[ext_resource type="Texture2D" uid="uid://c4mdrmk7h638f" path="res://data/nine-patch-round.png" id="4_1bnn6"] -[ext_resource type="PackedScene" uid="uid://dyjtmfm4u58mu" path="res://scenes/контроль/уровень.tscn" id="5_3i5am"] - -[sub_resource type="StyleBoxEmpty" id="StyleBoxEmpty_3nd2u"] - -[sub_resource type="GDScript" id="GDScript_oj3k3"] -script/source = "@tool - -extends PanelContainer - - -@export var textures: Array - - -@export var fname: String: - set(v): - fname = v - $margin/vbox/grid/fname.text = v - - -@export var rname: String: - set(v): - rname = v - $margin/vbox/grid/rname.text = v - - -@export var state: int: - set(v): - v = 0 if v < 0 else v - v %= textures.size() - state = v - $margin/vbox/grid/state.texture = textures[v] - - -@export var alignment: int: - set(v): - $margin/vbox.alignment = v -" - -[sub_resource type="GDScript" id="GDScript_45hqb"] -script/source = "@tool - -extends MarginContainer - - -func _enter_tree() -> void: - margins = [8, 8, 8, 8] - - -@export var margins: Array: - set(vals): - add_theme_constant_override('margin_top', vals[0]) - add_theme_constant_override('margin_left', vals[1]) - add_theme_constant_override('margin_bottom', vals[2]) - add_theme_constant_override('margin_right', vals[3]) - get: - var vals = [0, 0, 0, 0] - vals[0] = get_theme_constant('margin_top') - vals[1] = get_theme_constant('margin_left') - vals[2] = get_theme_constant('margin_bottom') - vals[3] = get_theme_constant('margin_right') - return vals - - -" - -[node name="um1535" type="PanelContainer"] -editor_description = "Элемент замены из ЗИП" -offset_right = 160.0 -offset_bottom = 88.0 -theme_override_styles/panel = SubResource("StyleBoxEmpty_3nd2u") -script = SubResource("GDScript_oj3k3") -textures = [ExtResource("1_xcvfs"), ExtResource("2_ad1dj"), ExtResource("3_vxg7f")] -metadata/ref_des = "" -metadata/dec_num = "" - -[node name="rect" type="NinePatchRect" parent="."] -layout_mode = 2 -texture = ExtResource("4_1bnn6") -draw_center = false -region_rect = Rect2(0, 0, 63, 63) -patch_margin_left = 17 -patch_margin_top = 17 -patch_margin_right = 17 -patch_margin_bottom = 15 - -[node name="margin" type="MarginContainer" parent="."] -layout_mode = 2 -theme_override_constants/margin_left = 8 -theme_override_constants/margin_top = 8 -theme_override_constants/margin_right = 8 -theme_override_constants/margin_bottom = 8 -script = SubResource("GDScript_45hqb") -margins = [8, 8, 8, 8] - -[node name="vbox" type="VBoxContainer" parent="margin"] -layout_mode = 2 - -[node name="grid" type="GridContainer" parent="margin/vbox"] -layout_mode = 2 -columns = 3 - -[node name="state" type="TextureRect" parent="margin/vbox/grid"] -custom_minimum_size = Vector2(24, 24) -layout_mode = 2 -size_flags_horizontal = 2 -size_flags_vertical = 6 -texture = ExtResource("1_xcvfs") -expand_mode = 1 - -[node name="fname" type="Label" parent="margin/vbox/grid"] -self_modulate = Color(1, 1, 1, 0.627451) -layout_mode = 2 -size_flags_horizontal = 3 -size_flags_vertical = 6 -theme_override_font_sizes/font_size = 17 -horizontal_alignment = 1 -vertical_alignment = 1 - -[node name="rname" type="Label" parent="margin/vbox/grid"] -layout_mode = 2 -size_flags_horizontal = 3 -size_flags_vertical = 6 -theme_override_font_sizes/font_size = 22 -horizontal_alignment = 2 -vertical_alignment = 1 - -[node name="GridContainer" type="GridContainer" parent="margin/vbox"] -layout_mode = 2 -size_flags_vertical = 6 -columns = 2 - -[node name="Label" type="Label" parent="margin/vbox/GridContainer"] -self_modulate = Color(1, 1, 1, 0.63) -layout_mode = 2 -text = "℃" - -[node name="indicator_p" parent="margin/vbox/GridContainer" instance=ExtResource("5_3i5am")] -layout_mode = 2 -size_flags_horizontal = 3 -size_flags_vertical = 3 - -[node name="Label2" type="Label" parent="margin/vbox/GridContainer"] -self_modulate = Color(1, 1, 1, 0.63) -layout_mode = 2 -text = " W" - -[node name="indicator_t" parent="margin/vbox/GridContainer" instance=ExtResource("5_3i5am")] -layout_mode = 2 -size_flags_horizontal = 3 -size_flags_vertical = 3 From b349b39095064ef08eec819b3545bb168044b14e Mon Sep 17 00:00:00 2001 From: sasha80 Date: Tue, 14 May 2024 13:10:54 +0300 Subject: [PATCH 32/39] =?UTF-8?q?=D0=94=D0=BE=D0=BF=D0=BE=D0=BB=D0=BD?= =?UTF-8?q?=D0=B5=D0=BD=D0=B8=D0=B5=20=D0=B4=D0=BE=D0=BA=D1=83=D0=BC=D0=B5?= =?UTF-8?q?=D0=BD=D1=82=D0=B0=D1=86=D0=B8=D0=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- git-hook.sh | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/git-hook.sh b/git-hook.sh index e0372577..c59c0dfb 100644 --- a/git-hook.sh +++ b/git-hook.sh @@ -1,7 +1,13 @@ #!/usr/bin/env bash -# Этот скрипт генерирует модуль с информацией для контроля версий - +# Описание +# +# Этот скрипт генерирует модуль на языке GDScript с информацией для +# контроля версий в системе git. Использовать для проектов созданных +# для GoDot Engine. +# +# Инструкция по применению +# # 1. В папке ./git/hooks создать файлы: # - post-checkout # - post-commit @@ -11,8 +17,8 @@ # 3. Теперь модуль scripts/commit.gd будет содержать данные # о текущей версии, после выполнения следующих операций СКВ: # - переключение ветки; -# - после выполнение фиксации; -# - после выполнения слияния; +# - выполнение фиксации; +# - выполнение слияния. GDSCRIPT_FILE="scripts/commit.gd" From 749043395b2909b0c6889d38de0b7735ccc86745 Mon Sep 17 00:00:00 2001 From: sasha80 Date: Tue, 14 May 2024 13:20:53 +0300 Subject: [PATCH 33/39] =?UTF-8?q?=D0=A1=D0=BB=D0=B8=D1=8F=D0=BD=D0=B8?= =?UTF-8?q?=D0=B5=20=D1=81=20=D0=B2=D0=BD=D0=B5=D1=88=D0=BD=D0=B8=D0=BC?= =?UTF-8?q?=D0=B8=20=D0=B8=D1=81=D0=BF=D1=80=D0=B0=D0=B2=D0=BB=D0=B5=D0=BD?= =?UTF-8?q?=D0=B8=D1=8F=D0=BC=D0=B8.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- table/table.gd | 38 ++++++++++++++++++++++++++------------ 1 file changed, 26 insertions(+), 12 deletions(-) diff --git a/table/table.gd b/table/table.gd index b398155a..a60e0150 100644 --- a/table/table.gd +++ b/table/table.gd @@ -31,8 +31,16 @@ var ScnSelector: PackedScene ## Прототип индикатора вы var selector_color_proc: Callable ## Ссылка на процедуру генератора цвета индикатора выбранного ряда var selector_size_proc: Callable ## Ссылка на процедуру генератора размера индикатора выбранного ряда -signal row_pressed(i_row: int) ## Вызывается при нажатии кнопкой мыши на строку -signal selected_changed(i_row: int) ## Вызывается при изменении выбранного ряда. i_row - текущий выбранный ряд +## Вызывается при нажатии кнопкой мыши на строку. +## Активируемый ползователем элемент ряда должен вызывать +## сигнал [b]focus_entered[/b], что бы сигнал [b]row_pressed[/b] работал.[br] +## [param i_row] - Индекс ряда в котором пользователь активировал элемент.[br] +## [i]Godot 4.2: [/i][b] Label[/b] [i] - не вызывает сигнал[/i] [b]focus_entered[/b]. +signal row_pressed(i_row: int) + +## Вызывается при изменении выбранного ряда.[br] +## [param i_row] - Текущий выбранный ряд. +signal selected_changed(i_row: int) var scroll: Control var scroll_adj: = Vector2(0, 0) @@ -299,14 +307,18 @@ func set_row_selected(i_row: int, selected: bool = true) -> void: ## [param i_row] - Индекс ряда. func _set_row_selected(i_row: int, selected: bool = true) -> void: - var key: = SELECTOR_KEY_FORMAT % [i_row, 0] - var node = nodes[NODE_KEY_FORMAT % [i_row, 0]] - if nodes.has(key) and (not selected): - var selector = nodes[key] + var selector_key: = SELECTOR_KEY_FORMAT % [i_row, 0] + var node_key: = NODE_KEY_FORMAT % [i_row, 0] + if not nodes.has(node_key): + push_error('ошибка: нет такого ряда: %d' % i_row) + return + if nodes.has(selector_key) and (not selected): + var node = nodes[node_key] + var selector = nodes[selector_key] node.remove_child(selector) selector.queue_free() - nodes.erase(key) - elif (not nodes.has(key)) and selected: + nodes.erase(selector_key) + elif (not nodes.has(selector_key)) and selected: var selector = ScnSelector.instantiate() var rect: = [0, 0, 0, 0] selector_size_proc.call(i_row, rect) @@ -314,7 +326,8 @@ func _set_row_selected(i_row: int, selected: bool = true) -> void: selector.size.y = rect[3] selector.modulate = selector_color_proc.call(i_row) selector.z_index = z_index + 1 - nodes[key] = selector + nodes[selector_key] = selector + var node = nodes[node_key] node.add_child(selector) @@ -473,10 +486,10 @@ func rehash(): var iv = get_key_indexes(key) var i0 = Vector2(iv[0], iv[1]) if HEAD_PREFIX in key: - swap_nodes(nodes_copy, HEAD_KEY_FORMAT, i0, i_hdr[0]) + swap_nodes(nodes_copy, HEAD_KEY_FORMAT, i0, i_hdr[0]) next_index(i_hdr) elif NODE_PREFIX in key: - swap_nodes(nodes_copy, NODE_KEY_FORMAT, i0, i_node[0]) + swap_nodes(nodes_copy, NODE_KEY_FORMAT, i0, i_node[0]) next_index(i_node) elif SLCT_PREFIX in key: swap_nodes(nodes_copy, SELECTOR_KEY_FORMAT, i0, i_slct[0]) @@ -587,7 +600,8 @@ func set_row_editable(i_row: int, val: bool) -> void: nodes[key].editable = val -## [param i_col] - Индекс колонки. [param i_row] - Индекс ряда. +## [param i_col] - Индекс колонки.[br] +## [param i_row] - Индекс ряда. func set_node_alligment(i_col: int, i_row: int, val: int) -> void: var key: = get_node_key(NODE_KEY_FORMAT, i_col, i_row) if 'horizontal_alignment' in nodes[key]: From c52e0f382e4468441a284ee664129387b4310526 Mon Sep 17 00:00:00 2001 From: sasha80 Date: Tue, 14 May 2024 13:20:53 +0300 Subject: [PATCH 34/39] =?UTF-8?q?=D0=A1=D0=BB=D0=B8=D1=8F=D0=BD=D0=B8?= =?UTF-8?q?=D0=B5=20=D1=81=20=D0=B2=D0=BD=D0=B5=D1=88=D0=BD=D0=B8=D0=BC?= =?UTF-8?q?=D0=B8=20=D0=B8=D1=81=D0=BF=D1=80=D0=B0=D0=B2=D0=BB=D0=B5=D0=BD?= =?UTF-8?q?=D0=B8=D1=8F=D0=BC=D0=B8.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- table/table.gd | 41 ++++++++++++++++++++++++++++------------- 1 file changed, 28 insertions(+), 13 deletions(-) diff --git a/table/table.gd b/table/table.gd index b398155a..add54ff4 100644 --- a/table/table.gd +++ b/table/table.gd @@ -31,8 +31,16 @@ var ScnSelector: PackedScene ## Прототип индикатора вы var selector_color_proc: Callable ## Ссылка на процедуру генератора цвета индикатора выбранного ряда var selector_size_proc: Callable ## Ссылка на процедуру генератора размера индикатора выбранного ряда -signal row_pressed(i_row: int) ## Вызывается при нажатии кнопкой мыши на строку -signal selected_changed(i_row: int) ## Вызывается при изменении выбранного ряда. i_row - текущий выбранный ряд +## Вызывается при нажатии кнопкой мыши на строку. +## Активируемый ползователем элемент ряда должен вызывать +## сигнал [b]focus_entered[/b], что бы сигнал [b]row_pressed[/b] работал.[br] +## [param i_row] - Индекс ряда в котором пользователь активировал элемент.[br] +## [i]Godot 4.2: [/i][b] Label[/b] [i] - не вызывает сигнал[/i] [b]focus_entered[/b]. +signal row_pressed(i_row: int) + +## Вызывается при изменении выбранного ряда.[br] +## [param i_row] - Текущий выбранный ряд. +signal selected_changed(i_row: int) var scroll: Control var scroll_adj: = Vector2(0, 0) @@ -299,14 +307,18 @@ func set_row_selected(i_row: int, selected: bool = true) -> void: ## [param i_row] - Индекс ряда. func _set_row_selected(i_row: int, selected: bool = true) -> void: - var key: = SELECTOR_KEY_FORMAT % [i_row, 0] - var node = nodes[NODE_KEY_FORMAT % [i_row, 0]] - if nodes.has(key) and (not selected): - var selector = nodes[key] + var selector_key: = SELECTOR_KEY_FORMAT % [i_row, 0] + var node_key: = NODE_KEY_FORMAT % [i_row, 0] + if not nodes.has(node_key): + push_error('ошибка: нет такого ряда: %d' % i_row) + return + if nodes.has(selector_key) and (not selected): + var node = nodes[node_key] + var selector = nodes[selector_key] node.remove_child(selector) selector.queue_free() - nodes.erase(key) - elif (not nodes.has(key)) and selected: + nodes.erase(selector_key) + elif (not nodes.has(selector_key)) and selected: var selector = ScnSelector.instantiate() var rect: = [0, 0, 0, 0] selector_size_proc.call(i_row, rect) @@ -314,7 +326,8 @@ func _set_row_selected(i_row: int, selected: bool = true) -> void: selector.size.y = rect[3] selector.modulate = selector_color_proc.call(i_row) selector.z_index = z_index + 1 - nodes[key] = selector + nodes[selector_key] = selector + var node = nodes[node_key] node.add_child(selector) @@ -473,10 +486,10 @@ func rehash(): var iv = get_key_indexes(key) var i0 = Vector2(iv[0], iv[1]) if HEAD_PREFIX in key: - swap_nodes(nodes_copy, HEAD_KEY_FORMAT, i0, i_hdr[0]) + swap_nodes(nodes_copy, HEAD_KEY_FORMAT, i0, i_hdr[0]) next_index(i_hdr) elif NODE_PREFIX in key: - swap_nodes(nodes_copy, NODE_KEY_FORMAT, i0, i_node[0]) + swap_nodes(nodes_copy, NODE_KEY_FORMAT, i0, i_node[0]) next_index(i_node) elif SLCT_PREFIX in key: swap_nodes(nodes_copy, SELECTOR_KEY_FORMAT, i0, i_slct[0]) @@ -538,7 +551,8 @@ func set_nodes_min_size(i_row: int, sizes: Array, key_format: String = NODE_KEY_ node.set_deferred('size.x', sizes[i_col]) -## [param i_col] - Индекс колонки. [param i_row] - Индекс ряда. +## [param i_col] - Индекс колонки.[br] +## [param i_row] - Индекс ряда. func set_node_text(i_col: int, i_row: int, val: String) -> void: var key: = get_node_key(NODE_KEY_FORMAT, i_col, i_row) nodes[key].text = val @@ -587,7 +601,8 @@ func set_row_editable(i_row: int, val: bool) -> void: nodes[key].editable = val -## [param i_col] - Индекс колонки. [param i_row] - Индекс ряда. +## [param i_col] - Индекс колонки.[br] +## [param i_row] - Индекс ряда. func set_node_alligment(i_col: int, i_row: int, val: int) -> void: var key: = get_node_key(NODE_KEY_FORMAT, i_col, i_row) if 'horizontal_alignment' in nodes[key]: From fe3fee9b029b64578a766bb4641b07d37e5eb240 Mon Sep 17 00:00:00 2001 From: sasha80 Date: Tue, 14 May 2024 13:30:11 +0300 Subject: [PATCH 35/39] =?UTF-8?q?Revert=20"=D0=A1=D0=BB=D0=B8=D1=8F=D0=BD?= =?UTF-8?q?=D0=B8=D0=B5=20=D1=81=20=D0=B2=D0=BD=D0=B5=D1=88=D0=BD=D0=B8?= =?UTF-8?q?=D0=BC=D0=B8=20=D0=B8=D1=81=D0=BF=D1=80=D0=B0=D0=B2=D0=BB=D0=B5?= =?UTF-8?q?=D0=BD=D0=B8=D1=8F=D0=BC=D0=B8."?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This reverts commit c52e0f382e4468441a284ee664129387b4310526. --- table/table.gd | 41 +++++++++++++---------------------------- 1 file changed, 13 insertions(+), 28 deletions(-) diff --git a/table/table.gd b/table/table.gd index add54ff4..b398155a 100644 --- a/table/table.gd +++ b/table/table.gd @@ -31,16 +31,8 @@ var ScnSelector: PackedScene ## Прототип индикатора вы var selector_color_proc: Callable ## Ссылка на процедуру генератора цвета индикатора выбранного ряда var selector_size_proc: Callable ## Ссылка на процедуру генератора размера индикатора выбранного ряда -## Вызывается при нажатии кнопкой мыши на строку. -## Активируемый ползователем элемент ряда должен вызывать -## сигнал [b]focus_entered[/b], что бы сигнал [b]row_pressed[/b] работал.[br] -## [param i_row] - Индекс ряда в котором пользователь активировал элемент.[br] -## [i]Godot 4.2: [/i][b] Label[/b] [i] - не вызывает сигнал[/i] [b]focus_entered[/b]. -signal row_pressed(i_row: int) - -## Вызывается при изменении выбранного ряда.[br] -## [param i_row] - Текущий выбранный ряд. -signal selected_changed(i_row: int) +signal row_pressed(i_row: int) ## Вызывается при нажатии кнопкой мыши на строку +signal selected_changed(i_row: int) ## Вызывается при изменении выбранного ряда. i_row - текущий выбранный ряд var scroll: Control var scroll_adj: = Vector2(0, 0) @@ -307,18 +299,14 @@ func set_row_selected(i_row: int, selected: bool = true) -> void: ## [param i_row] - Индекс ряда. func _set_row_selected(i_row: int, selected: bool = true) -> void: - var selector_key: = SELECTOR_KEY_FORMAT % [i_row, 0] - var node_key: = NODE_KEY_FORMAT % [i_row, 0] - if not nodes.has(node_key): - push_error('ошибка: нет такого ряда: %d' % i_row) - return - if nodes.has(selector_key) and (not selected): - var node = nodes[node_key] - var selector = nodes[selector_key] + var key: = SELECTOR_KEY_FORMAT % [i_row, 0] + var node = nodes[NODE_KEY_FORMAT % [i_row, 0]] + if nodes.has(key) and (not selected): + var selector = nodes[key] node.remove_child(selector) selector.queue_free() - nodes.erase(selector_key) - elif (not nodes.has(selector_key)) and selected: + nodes.erase(key) + elif (not nodes.has(key)) and selected: var selector = ScnSelector.instantiate() var rect: = [0, 0, 0, 0] selector_size_proc.call(i_row, rect) @@ -326,8 +314,7 @@ func _set_row_selected(i_row: int, selected: bool = true) -> void: selector.size.y = rect[3] selector.modulate = selector_color_proc.call(i_row) selector.z_index = z_index + 1 - nodes[selector_key] = selector - var node = nodes[node_key] + nodes[key] = selector node.add_child(selector) @@ -486,10 +473,10 @@ func rehash(): var iv = get_key_indexes(key) var i0 = Vector2(iv[0], iv[1]) if HEAD_PREFIX in key: - swap_nodes(nodes_copy, HEAD_KEY_FORMAT, i0, i_hdr[0]) + swap_nodes(nodes_copy, HEAD_KEY_FORMAT, i0, i_hdr[0]) next_index(i_hdr) elif NODE_PREFIX in key: - swap_nodes(nodes_copy, NODE_KEY_FORMAT, i0, i_node[0]) + swap_nodes(nodes_copy, NODE_KEY_FORMAT, i0, i_node[0]) next_index(i_node) elif SLCT_PREFIX in key: swap_nodes(nodes_copy, SELECTOR_KEY_FORMAT, i0, i_slct[0]) @@ -551,8 +538,7 @@ func set_nodes_min_size(i_row: int, sizes: Array, key_format: String = NODE_KEY_ node.set_deferred('size.x', sizes[i_col]) -## [param i_col] - Индекс колонки.[br] -## [param i_row] - Индекс ряда. +## [param i_col] - Индекс колонки. [param i_row] - Индекс ряда. func set_node_text(i_col: int, i_row: int, val: String) -> void: var key: = get_node_key(NODE_KEY_FORMAT, i_col, i_row) nodes[key].text = val @@ -601,8 +587,7 @@ func set_row_editable(i_row: int, val: bool) -> void: nodes[key].editable = val -## [param i_col] - Индекс колонки.[br] -## [param i_row] - Индекс ряда. +## [param i_col] - Индекс колонки. [param i_row] - Индекс ряда. func set_node_alligment(i_col: int, i_row: int, val: int) -> void: var key: = get_node_key(NODE_KEY_FORMAT, i_col, i_row) if 'horizontal_alignment' in nodes[key]: From 6659f439544e2801eeff7855c8efb8f64b759bce Mon Sep 17 00:00:00 2001 From: sasha80 Date: Tue, 14 May 2024 13:30:47 +0300 Subject: [PATCH 36/39] =?UTF-8?q?=D0=A1=D0=BB=D0=B8=D1=8F=D0=BD=D0=B8?= =?UTF-8?q?=D0=B5=20=D1=81=20=D0=B2=D0=BD=D0=B5=D1=88=D0=BD=D0=B8=D0=BC?= =?UTF-8?q?=D0=B8=20=D0=B8=D1=81=D0=BF=D1=80=D0=B0=D0=B2=D0=BB=D0=B5=D0=BD?= =?UTF-8?q?=D0=B8=D1=8F=D0=BC=D0=B8.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- table/table.gd | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/table/table.gd b/table/table.gd index b398155a..fc590db2 100644 --- a/table/table.gd +++ b/table/table.gd @@ -538,7 +538,7 @@ func set_nodes_min_size(i_row: int, sizes: Array, key_format: String = NODE_KEY_ node.set_deferred('size.x', sizes[i_col]) -## [param i_col] - Индекс колонки. [param i_row] - Индекс ряда. +## [param i_col] - Индекс колонки.[br][param i_row] - Индекс ряда. func set_node_text(i_col: int, i_row: int, val: String) -> void: var key: = get_node_key(NODE_KEY_FORMAT, i_col, i_row) nodes[key].text = val From ab082d6c114582f04843fc82e9f9b48a0ee41c05 Mon Sep 17 00:00:00 2001 From: sasha80 Date: Mon, 20 May 2024 09:14:51 +0300 Subject: [PATCH 37/39] =?UTF-8?q?=D0=A7=D0=B8=D1=81=D1=82=D0=BA=D0=B0.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- data/РТР.png | Bin 107981 -> 0 bytes data/Щ3-mnemo.png | Bin 49041 -> 0 bytes data/рамка-1.png | Bin 0 -> 220 bytes data/рамка-1.png.import | 34 ++++++++++++++++++++++++++++++ scenes/контроль/кнопка-прибора.gd | 15 +++++++++++++ 5 files changed, 49 insertions(+) delete mode 100644 data/РТР.png delete mode 100644 data/Щ3-mnemo.png create mode 100644 data/рамка-1.png create mode 100644 data/рамка-1.png.import create mode 100644 scenes/контроль/кнопка-прибора.gd diff --git a/data/РТР.png b/data/РТР.png deleted file mode 100644 index 6f3cd446c3df428d412ee8abc2e4f64ebee111f5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 107981 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 diff --git a/data/Щ3-mnemo.png b/data/Щ3-mnemo.png deleted file mode 100644 index 44f58f3c0ba7de7d864a1aed00d03293be0aaa45..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 49041 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 diff --git a/data/рамка-1.png b/data/рамка-1.png new file mode 100644 index 0000000000000000000000000000000000000000..2d9eb639ab7126eb931fea98086978a175916559 GIT binary patch literal 220 zcmeAS@N?(olHy`uVBq!ia0vp^!63}R1|%PEvIde2i#=T&Ln>~)y=%zVpdjFSaR0I2 z@s(@eOlV3-dbFpjYE!_b&M!w_*_D((j&NDCO2snZ4fnHS=WgD3we#ZU45QfM83wGv zYCZ>BIE9xb9BR>=VUT!8#0MfcqX~~7XE0P{BA1#EOeI|K|FsX7tE=^V)O Date: Mon, 20 May 2024 09:16:01 +0300 Subject: [PATCH 38/39] =?UTF-8?q?=D0=94=D0=BE=D1=80=D0=B0=D0=B1=D0=BE?= =?UTF-8?q?=D1=82=D0=BA=D0=B0.=20=D0=92=D0=BD=D0=B5=D1=88=D0=BD=D0=B8?= =?UTF-8?q?=D0=B9=20=D0=B2=D0=B8=D0=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- data/состояние-исправности-0.png | Bin 3509 -> 4148 bytes data/состояние-исправности-1.png | Bin 1508 -> 2606 bytes data/состояние-исправности-2.png | Bin 1551 -> 2275 bytes 3 files changed, 0 insertions(+), 0 deletions(-) diff --git a/data/состояние-исправности-0.png b/data/состояние-исправности-0.png index 1521052d0527490d66189b09904f77381eeb8dfd..33966d1ec3af8bef1ca840fc33cf3c0883d6ab5e 100644 GIT binary patch literal 4148 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 diff --git a/data/состояние-исправности-1.png b/data/состояние-исправности-1.png index 256dc97a50513ea997026a9ab8a48830ff2f3d98..755740f380fef56be80fdd81b9ac5960689f47b2 100644 GIT binary patch literal 2606 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 diff --git a/data/состояние-исправности-2.png b/data/состояние-исправности-2.png index 26b1b8bd41ab81ed34ec85df471a40ccf1af2a61..d0ad198200b7e518a9e3f69dfd5fa54c3829f86d 100644 GIT binary patch literal 2275 zcmb_eX;2es8t#B05rIT;WRY9Lp$IBbAYuYU9gLjfD9fNAtH7*5qA*+`LVyNKEsQ2y z4u|gQ6s{sL;BY5kc6Km80C5yF2Z{p!w1d9iq`jVz{Y1A6)9aeO-L7YD z((|i(KK6=p&bqBne>6N%v?XsfyKOM5a5cYh5;yGtI*)dfjI`^QcP)F!tY#zPa`abJL0@VK{|*M$Xoh`@<4oo z*;j2GkGF~Z)2@XcgXl6y+ui8YIeviMOsVs2H|l(^q7KWCs+1T&YA)={aKp2*{54LZ z1g;n@$Rdiwn%TOhKQH<5{rIE?zM}lqwut%k1`3{4r9I8zNrUT?pLkdk(s`p(&%GV5 zgJQ+v0Et)%EAC}a8_a$nq;jRLin0-{!DcFC?Wl7T<$9MAZ_FeMWo0^KYh9b>1$#bMkW14lnJx6!~+x`#%@ilDLj_#$0;RU9%9?#n>M`LuqIMNcvHRJj_yG2Z>Pn#4Q_j-kC&#l#LfSe|+ah%XIRubgY`4aZLYV^o85Fk1<5jwI>9CbsMOkP}tFlu?3UynW5H~bVf+66rlvIB*Tjrbl5i2Yzw$@rDlC(%%={3 z2QHsm`I1E2Bk}*hVKv)??GKD;_wbzSCQ(HtCet1R3)PsAw_O-Jw)*(5U!pMq zivn>};DrO_-^3jujO^>&rO-xWgz6ZDnlq?0D=MIjSh4uAJwW4{o6*lid1kUk?9;hV z_;F+qXw0r{t5n&8fG}*vMQFPQFSx4ePhAQ%!|P#35|QH^>F_ZSv1@?@+kh(bzKoX# zu&0TTme=0LmN!^afe7IcpZUrTvA{$j4y_P^-Tx(Kw-a3ukF_=kntzENH)eD2K9FrZ zPPvAHSW~cN2R*ZKpV}8XtPfJ;!rP(Dt)qdakRtb!bi@B3l^9@cK=GFHPK*sWk4M~v zOe|eb8mPG+ul5}#2)_lIGN2Urg~vhO5lG8~+&P}BW$hyIARaj3eVy8@=^3FdP zvfYnU{!Hkw5BI*baazrfd}&)fB>1Y4E6u5W(JJ{%$G+DqAA6%(uVUW0^Q7CnR(^QI znJ>=63DadxUMntu@)&<>Gyn$AY&m&382*^Ii?6DkL=pn#k^X)s{fl!beM1}YT1x3? z7ES)x1pXlg9Xc87qs&#iC5?5^R&S$m7z5Hmv_6PH_Q8|wLyV_6AqzoE!SH2#bb zukW7|yd8AG=1Oins6?(*_uOSE4WX)wchqD}LU1X#K1+LNC}NKa(0 zMMd4kcDUeT+xy$iUz=n+(%h+BtlxNwL(Hg=pNQoY3rOU&aar_b#*(;#xURR%xA)f1 z$Nw-u3hb$0NmrTdVa?b|{WZH9FmszKJaUJlamtvrxc+z<`X-&!5~7(_@V8IwOY83* zSJ3ICed0;yS7x_7f-l$oJR9P2-~@LhBLhuHIIgJikSk+Fi` gn-7oyqHku^b%PwdpS;Nr9$o<2p`e2`)YCct0tN>Xxc~qF literal 1551 zcmeAS@N?(olHy`uVBq!ia0vp^4?viM4M+Riz`O@JG$3Na@ zW#MHFot2Uz!pkDc%PT6%%gXBG%zE)ah>1x+h^UA!v*SaM8&8(cq`oYXmKbJB0p zWbN(du|Uuxv^Um*Mil6jGcarU8!F|;x-m1lE zizgkNqy96o)z^XJe(mkpeVNP&RSm1z6l+wU$u@^$3tzy_io%Dn4H!M-jDoso|!R5kJm~fwA@xr=#ZOhcfK`H>*b8=?B}9?e}@j_wP$P z7rs;ZnP*(;j-^gw1&7%cTCybLuQDjM6!F~J&!SHEt)f4pC$*8GF>TfIrP%I}0iu79+RdwjU> zne}VND_1@^axCC_+$`Ym143$XIx##1a<_K!Lm9pNhfLE{&;0oK*Ze}+_cb#Z1@_&x z_S`i8;k7a+4uzWS4}l3@@rzVI>W8`Um1i#2r0->zBVxzF81m}JG$jtkmh}QaPRn`& zipfd&noU4=DzF6PJ_0#dfkj~7wvUcLHwZ9s#NP(-!FJ?=`0_0bhpwA}_#l5|ON03A ziVYvO_Co#j@>Uctzz<@2O+|(|_Dr7yWKI&-VG>#7+h?te5|}ZSo(E z`PUjg+*GP$d9Zx?yz>t)&l2FXyzf@YcE``C*+1K5NATgu4Pp(&KSCHD${aXttWXnW zekhk=?$3~aJ~wO*B!k2a8>SaLxV%en9z#W?id8F6*N=VPb__T8U${=1{vp$sBYbB5 zWE5`!_vZS9;|6Y0J;s z7BzcJWwtu~^w68L(sBB7B_}7YTz>x9*~wpCcRn{iU>)_ydi5KfxW5a|U6OyOw~OnZ v*|iLVcRKZd0uImCC9V_&6}FdDe#@KZeeL$?+o=jH=ovg+{an^LB{Ts5yiR%3 From f0af17d369149d7f423564f4ec6a17155252d0da Mon Sep 17 00:00:00 2001 From: sasha80 Date: Mon, 20 May 2024 09:17:48 +0300 Subject: [PATCH 39/39] =?UTF-8?q?=D0=94=D0=BE=D1=80=D0=B0=D0=B1=D0=BE?= =?UTF-8?q?=D1=82=D0=BA=D0=B0.=20=D0=A0=D0=B5=D0=B6=D0=B8=D0=BC=20=D0=9A?= =?UTF-8?q?=D0=BE=D0=BD=D1=82=D1=80=D0=BE=D0=BB=D1=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- scenes/pribor-rtr/pribor-rtr.tscn | 98 +++-- scenes/pribor-uf/pribor-uf.tscn | 76 ++-- scenes/pribor-uyep/pribor-uyep.tscn | 15 +- scenes/контроль/блок-а.tscn | 6 +- scenes/контроль/контроль.gd | 2 + scenes/контроль/контроль.tscn | 635 +++++++++++++++++++++++++--- scenes/контроль/элемент-в.tscn | 2 + 7 files changed, 665 insertions(+), 169 deletions(-) diff --git a/scenes/pribor-rtr/pribor-rtr.tscn b/scenes/pribor-rtr/pribor-rtr.tscn index 39ef6308..6641a0c8 100644 --- a/scenes/pribor-rtr/pribor-rtr.tscn +++ b/scenes/pribor-rtr/pribor-rtr.tscn @@ -13,9 +13,9 @@ script = ExtResource("1_ab82m") [node name="lbl_header" type="Label" parent="."] layout_mode = 0 -offset_left = 20.0 -offset_right = 620.0 -offset_bottom = 40.0 +offset_left = 25.0 +offset_right = 595.0 +offset_bottom = 35.0 theme_override_font_sizes/font_size = 22 text = "Контроль исправности прибора" horizontal_alignment = 1 @@ -24,9 +24,9 @@ vertical_alignment = 1 [node name="konverter" type="NinePatchRect" parent="."] layout_mode = 0 offset_left = 20.0 -offset_top = 880.0 -offset_right = 620.0 -offset_bottom = 1160.0 +offset_top = 890.0 +offset_right = 600.0 +offset_bottom = 1155.0 texture = ExtResource("2_02opt") patch_margin_left = 16 patch_margin_top = 16 @@ -36,18 +36,20 @@ patch_margin_bottom = 16 [node name="lbl_fname" type="Label" parent="konverter"] self_modulate = Color(1, 1, 1, 0.62) layout_mode = 0 -offset_right = 600.0 -offset_bottom = 40.0 +offset_left = 5.0 +offset_top = 5.0 +offset_right = 575.0 +offset_bottom = 25.0 text = "Конвертер 1000...6000 МГц" horizontal_alignment = 1 vertical_alignment = 1 [node name="grid" type="GridContainer" parent="konverter"] layout_mode = 2 -offset_left = 20.0 -offset_top = 40.0 -offset_right = 580.0 -offset_bottom = 270.0 +offset_left = 10.0 +offset_top = 25.0 +offset_right = 570.0 +offset_bottom = 257.0 columns = 4 [node name="kanal1" parent="konverter/grid" instance=ExtResource("2_v25ql")] @@ -197,9 +199,9 @@ fname = "Канал 8" [node name="antenna1" type="NinePatchRect" parent="."] layout_mode = 0 offset_left = 20.0 -offset_top = 40.0 -offset_right = 620.0 -offset_bottom = 460.0 +offset_top = 80.0 +offset_right = 600.0 +offset_bottom = 485.0 texture = ExtResource("2_02opt") patch_margin_left = 16 patch_margin_top = 16 @@ -209,18 +211,20 @@ patch_margin_bottom = 16 [node name="lbl_fname" type="Label" parent="antenna1"] self_modulate = Color(1, 1, 1, 0.62) layout_mode = 0 -offset_right = 600.0 -offset_bottom = 40.0 +offset_left = 5.0 +offset_top = 5.0 +offset_right = 575.0 +offset_bottom = 25.0 text = "Антенна 400...1000 МГц" horizontal_alignment = 1 vertical_alignment = 1 [node name="grid" type="GridContainer" parent="antenna1"] layout_mode = 2 -offset_left = 20.0 -offset_top = 34.0 -offset_right = 574.0 -offset_bottom = 406.0 +offset_left = 10.0 +offset_top = 25.0 +offset_right = 570.0 +offset_bottom = 397.0 columns = 4 [node name="yelement1" parent="antenna1/grid" instance=ExtResource("4_2tw5p")] @@ -354,9 +358,9 @@ fname = "Элемент 16" [node name="antenna2" type="NinePatchRect" parent="."] layout_mode = 0 offset_left = 20.0 -offset_top = 460.0 -offset_right = 620.0 -offset_bottom = 880.0 +offset_top = 485.0 +offset_right = 600.0 +offset_bottom = 890.0 texture = ExtResource("2_02opt") patch_margin_left = 16 patch_margin_top = 16 @@ -366,18 +370,20 @@ patch_margin_bottom = 16 [node name="lbl_fname" type="Label" parent="antenna2"] self_modulate = Color(1, 1, 1, 0.62) layout_mode = 0 -offset_right = 600.0 -offset_bottom = 40.0 +offset_left = 5.0 +offset_top = 5.0 +offset_right = 575.0 +offset_bottom = 25.0 text = "Антенна 1000...6000 МГц" horizontal_alignment = 1 vertical_alignment = 1 [node name="grid" type="GridContainer" parent="antenna2"] layout_mode = 2 -offset_left = 20.0 -offset_top = 34.0 -offset_right = 574.0 -offset_bottom = 406.0 +offset_left = 10.0 +offset_top = 25.0 +offset_right = 570.0 +offset_bottom = 397.0 columns = 4 [node name="yelement1" parent="antenna2/grid" instance=ExtResource("4_2tw5p")] @@ -510,10 +516,10 @@ fname = "Элемент 16" [node name="rpu" parent="." instance=ExtResource("2_v25ql")] layout_mode = 2 -offset_left = 620.0 -offset_top = 1040.0 -offset_right = 860.0 -offset_bottom = 1160.0 +offset_left = 605.0 +offset_top = 1035.0 +offset_right = 845.0 +offset_bottom = 1155.0 value_name0 = "t, °C" value_name1 = "U, В" value_name2 = "CAN" @@ -524,10 +530,10 @@ fname = "Приёмник 20...1000 МГц" [node name="gen" parent="." instance=ExtResource("2_v25ql")] layout_mode = 2 -offset_left = 620.0 -offset_top = 920.0 -offset_right = 860.0 -offset_bottom = 1034.0 +offset_left = 605.0 +offset_top = 915.0 +offset_right = 845.0 +offset_bottom = 1029.0 value_name0 = "t, °C" value_name1 = "U, В" value_name2 = "CAN" @@ -538,16 +544,16 @@ fname = "Генератор" [node name="dsp" parent="." instance=ExtResource("5_mxmk0")] layout_mode = 0 -offset_left = 620.0 -offset_top = 878.0 -offset_right = 860.0 -offset_bottom = 920.0 +offset_left = 315.0 +offset_top = 30.0 +offset_right = 600.0 +offset_bottom = 80.0 fname = "Плата ЦОС" [node name="adc" parent="." instance=ExtResource("5_mxmk0")] layout_mode = 0 -offset_left = 620.0 -offset_top = 820.0 -offset_right = 860.0 -offset_bottom = 862.0 +offset_left = 20.0 +offset_top = 30.0 +offset_right = 305.0 +offset_bottom = 80.0 fname = "Плата АЦП" diff --git a/scenes/pribor-uf/pribor-uf.tscn b/scenes/pribor-uf/pribor-uf.tscn index 40b0b63d..b3296bbc 100644 --- a/scenes/pribor-uf/pribor-uf.tscn +++ b/scenes/pribor-uf/pribor-uf.tscn @@ -23,7 +23,7 @@ patch_margin_bottom = 16 [node name="ref_bu1" type="NinePatchRect" parent="ref_uf"] layout_mode = 0 -offset_left = 281.0 +offset_left = 282.0 offset_top = 138.0 offset_right = 591.0 offset_bottom = 468.0 @@ -35,22 +35,20 @@ patch_margin_bottom = 16 [node name="ref_A13" parent="ref_uf/ref_bu1" instance=ExtResource("3_dp78y")] offset_left = 7.0 -offset_top = 58.0 +offset_top = 60.0 offset_right = 59.0 offset_bottom = 322.0 -self_size = Vector2i(52, 264) +self_size = Vector2i(52, 262) fname = "MKEG/C" rname = "A13" -state = 1 [node name="ref_A" parent="ref_uf/ref_bu1" instance=ExtResource("3_dp78y")] offset_left = 59.0 -offset_top = 57.0 +offset_top = 60.0 offset_right = 302.0 offset_bottom = 322.0 -self_size = Vector2i(243, 265) +self_size = Vector2i(243, 262) fname = "ВК-110" -state = 1 [node name="А8" type="Label" parent="ref_uf/ref_bu1"] layout_mode = 0 @@ -70,10 +68,10 @@ text = "БУ-1" [node name="ref_kassetav13" type="NinePatchRect" parent="ref_uf"] layout_mode = 0 -offset_left = 8.0 -offset_top = 517.0 -offset_right = 597.0 -offset_bottom = 857.0 +offset_left = 12.0 +offset_top = 513.0 +offset_right = 601.0 +offset_bottom = 852.0 texture = ExtResource("2_ho0da") patch_margin_left = 16 patch_margin_top = 16 @@ -82,83 +80,75 @@ patch_margin_bottom = 16 [node name="ref_A18" parent="ref_uf/ref_kassetav13" instance=ExtResource("3_dp78y")] offset_left = 6.0 -offset_top = 64.0 +offset_top = 65.0 offset_right = 165.0 -offset_bottom = 328.0 -self_size = Vector2i(159, 264) +offset_bottom = 325.0 +self_size = Vector2i(159, 260) fname = "ESW-6U16TP" rname = "A18" -state = 1 [node name="ref_A7" parent="ref_uf/ref_kassetav13" instance=ExtResource("3_dp78y")] offset_left = 166.0 -offset_top = 63.0 +offset_top = 65.0 offset_right = 218.0 -offset_bottom = 327.0 -self_size = Vector2i(52, 264) +offset_bottom = 325.0 +self_size = Vector2i(52, 260) fname = "ЯУ-07Б" rname = "A7" -state = 1 [node name="ref_A2" parent="ref_uf/ref_kassetav13" instance=ExtResource("3_dp78y")] offset_left = 218.0 -offset_top = 63.0 +offset_top = 65.0 offset_right = 270.0 -offset_bottom = 327.0 -self_size = Vector2i(52, 264) +offset_bottom = 325.0 +self_size = Vector2i(52, 260) fname = "КЭМС-Б" rname = "A2" -state = 1 [node name="ref_A4" parent="ref_uf/ref_kassetav13" instance=ExtResource("3_dp78y")] offset_left = 269.0 -offset_top = 63.0 +offset_top = 65.0 offset_right = 321.0 -offset_bottom = 327.0 -self_size = Vector2i(52, 264) +offset_bottom = 325.0 +self_size = Vector2i(52, 260) fname = "КЭМС-Б1" rname = "A4" -state = 1 [node name="ref_A5" parent="ref_uf/ref_kassetav13" instance=ExtResource("3_dp78y")] offset_left = 322.0 -offset_top = 63.0 +offset_top = 65.0 offset_right = 374.0 -offset_bottom = 327.0 -self_size = Vector2i(52, 264) +offset_bottom = 325.0 +self_size = Vector2i(52, 260) fname = "ЭМС-Б" rname = "A5" -state = 1 [node name="ref_A6" parent="ref_uf/ref_kassetav13" instance=ExtResource("3_dp78y")] offset_left = 374.0 -offset_top = 63.0 +offset_top = 65.0 offset_right = 426.0 -offset_bottom = 327.0 -self_size = Vector2i(52, 264) +offset_bottom = 325.0 +self_size = Vector2i(52, 260) fname = "ЭМС-Б" rname = "A6" -state = 1 [node name="ref_A3" parent="ref_uf/ref_kassetav13" instance=ExtResource("3_dp78y")] offset_left = 427.0 -offset_top = 63.0 +offset_top = 65.0 offset_right = 532.0 -offset_bottom = 327.0 -self_size = Vector2i(105, 264) +offset_bottom = 325.0 +self_size = Vector2i(105, 260) fname = "ИП-220-5Б" rname = "A3" -state = 1 [node name="ref_A8" parent="ref_uf/ref_kassetav13" instance=ExtResource("3_dp78y")] offset_left = 531.0 -offset_top = 63.0 +offset_top = 65.0 offset_right = 582.0 -offset_bottom = 327.0 -self_size = Vector2i(51, 264) +offset_bottom = 325.0 +self_size = Vector2i(51, 260) fname = "ИП220-27Б" rname = "A12" -state = 1 [node name="А1" type="Label" parent="ref_uf/ref_kassetav13"] layout_mode = 0 diff --git a/scenes/pribor-uyep/pribor-uyep.tscn b/scenes/pribor-uyep/pribor-uyep.tscn index a56a8a64..18c747bb 100644 --- a/scenes/pribor-uyep/pribor-uyep.tscn +++ b/scenes/pribor-uyep/pribor-uyep.tscn @@ -24,32 +24,29 @@ patch_margin_bottom = 16 [node name="ref_A1" parent="." instance=ExtResource("2_cf6tc")] offset_left = 175.0 offset_top = 529.0 -offset_right = 332.0 +offset_right = 335.0 offset_bottom = 984.0 -self_size = Vector2i(157, 455) +self_size = Vector2i(160, 455) fname = "МАА150-1С27" rname = "A1" -state = 1 [node name="ref_A2" parent="." instance=ExtResource("2_cf6tc")] offset_left = 496.0 offset_top = 531.0 -offset_right = 631.0 +offset_right = 636.0 offset_bottom = 988.0 -self_size = Vector2i(135, 457) +self_size = Vector2i(140, 457) fname = "МАА150-1С27" rname = "A2" -state = 1 [node name="ref_A3" parent="." instance=ExtResource("2_cf6tc")] offset_left = 377.0 offset_top = 531.0 -offset_right = 468.0 +offset_right = 467.0 offset_bottom = 985.0 -self_size = Vector2i(91, 454) +self_size = Vector2i(90, 454) fname = "МАА150-1С27" rname = "A2" -state = 1 [node name="lbl_header" type="Label" parent="."] layout_mode = 0 diff --git a/scenes/контроль/блок-а.tscn b/scenes/контроль/блок-а.tscn index fb195f23..2e807ad3 100644 --- a/scenes/контроль/блок-а.tscn +++ b/scenes/контроль/блок-а.tscn @@ -130,10 +130,8 @@ extends PanelContainer @export var state: int: set(v): - v = 0 if v < 0 else v - v %= textures.size() - state = v - $margin/vbox/grid0/state.texture = textures[v] + state = 0 if v < 0 else v % textures.size() + $margin/vbox/grid0/state.texture = textures[state] get: return state diff --git a/scenes/контроль/контроль.gd b/scenes/контроль/контроль.gd index d7fb65bd..562cb76b 100644 --- a/scenes/контроль/контроль.gd +++ b/scenes/контроль/контроль.gd @@ -27,11 +27,13 @@ const PRIBORS_RES = \ func _ready(): + var group = ButtonGroup.new() for k in PRIBORS_RES: var pribor_node = get_node(k) assert(pribor_node) 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)) log.info('Модуль контроля работы готов') diff --git a/scenes/контроль/контроль.tscn b/scenes/контроль/контроль.tscn index ef2ac0f6..040dff4b 100644 --- a/scenes/контроль/контроль.tscn +++ b/scenes/контроль/контроль.tscn @@ -1,9 +1,11 @@ -[gd_scene load_steps=10 format=3 uid="uid://lwmw4egynmd1"] +[gd_scene load_steps=12 format=3 uid="uid://lwmw4egynmd1"] [ext_resource type="Script" path="res://scenes/контроль/контроль.gd" id="1_x5d6w"] [ext_resource type="Texture2D" uid="uid://bar8k5qef7kch" path="res://data/УФ.png" id="2_0nvm1"] +[ext_resource type="Script" path="res://scenes/контроль/кнопка-прибора.gd" id="3_4pt7j"] [ext_resource type="Texture2D" uid="uid://dkqlvd750pplc" path="res://data/СПТ.png" id="3_hhadv"] [ext_resource type="Texture2D" uid="uid://b4isaggma6q3" path="res://data/Грани22.png" id="4_l0nc7"] +[ext_resource type="Texture2D" uid="uid://b0o8jhb5jbrev" path="res://data/рамка-1.png" id="4_rasbe"] [ext_resource type="Texture2D" uid="uid://d2jxmtd6n5jd1" path="res://data/Щ3.png" id="5_kvnex"] [ext_resource type="Texture2D" uid="uid://bos68thpqqvn" path="res://data/ПРД.png" id="6_i1yfn"] [ext_resource type="Texture2D" uid="uid://c6nve6f8sfyj2" path="res://data/состояние-исправности-0.png" id="7_6j01w"] @@ -21,33 +23,67 @@ metadata/_edit_lock_ = true [node name="pribor_uf" type="TextureButton" parent="."] layout_mode = 0 -offset_left = 1206.0 -offset_top = 502.0 -offset_right = 1287.0 -offset_bottom = 682.0 +offset_left = 1194.0 +offset_top = 500.0 +offset_right = 1305.0 +offset_bottom = 685.0 size_flags_horizontal = 15 size_flags_vertical = 15 +toggle_mode = true +action_mode = 0 texture_normal = ExtResource("2_0nvm1") +stretch_mode = 0 +script = ExtResource("3_4pt7j") +textures = [ExtResource("7_6j01w"), ExtResource("8_isjua"), ExtResource("9_ll0vs")] [node name="label" type="Label" parent="pribor_uf"] layout_mode = 0 -offset_left = 3.0 -offset_top = -19.0 -offset_right = 79.0 +offset_left = 15.0 +offset_top = -15.0 +offset_right = 91.0 +offset_bottom = 4.0 text = "УФ" horizontal_alignment = 1 vertical_alignment = 1 +[node name="frame" type="NinePatchRect" parent="pribor_uf"] +visible = false +self_modulate = Color(0.890196, 0.486275, 0.196078, 1) +layout_mode = 0 +offset_left = -14.0 +offset_top = -30.0 +offset_right = 126.0 +offset_bottom = 200.0 +texture = ExtResource("4_rasbe") +region_rect = Rect2(-3, -3, 89, 89) +patch_margin_left = 16 +patch_margin_top = 16 +patch_margin_right = 16 +patch_margin_bottom = 16 + +[node name="state" type="TextureRect" parent="pribor_uf"] +layout_mode = 0 +offset_left = 16.0 +offset_top = -15.0 +offset_right = 240.0 +offset_bottom = 209.0 +scale = Vector2(0.1, 0.1) +texture = ExtResource("7_6j01w") + [node name="pribor_rtr" type="TextureButton" parent="."] layout_mode = 0 offset_left = 1197.0 -offset_top = 298.0 -offset_right = 1290.0 -offset_bottom = 454.0 +offset_top = 289.0 +offset_right = 1300.0 +offset_bottom = 445.0 size_flags_horizontal = 15 size_flags_vertical = 15 +toggle_mode = true +action_mode = 0 texture_normal = ExtResource("3_hhadv") -stretch_mode = 4 +stretch_mode = 0 +script = ExtResource("3_4pt7j") +textures = [ExtResource("7_6j01w"), ExtResource("8_isjua"), ExtResource("9_ll0vs")] [node name="label" type="Label" parent="pribor_rtr"] layout_mode = 0 @@ -58,17 +94,45 @@ text = "РТР" horizontal_alignment = 1 vertical_alignment = 1 +[node name="frame" type="NinePatchRect" parent="pribor_rtr"] +visible = false +self_modulate = Color(0.890196, 0.486275, 0.196078, 1) +layout_mode = 0 +offset_left = -17.0 +offset_top = -29.0 +offset_right = 123.0 +offset_bottom = 171.0 +texture = ExtResource("4_rasbe") +region_rect = Rect2(-3, -3, 89, 89) +patch_margin_left = 16 +patch_margin_top = 16 +patch_margin_right = 16 +patch_margin_bottom = 16 + +[node name="state" type="TextureRect" parent="pribor_rtr"] +layout_mode = 0 +offset_left = 13.0 +offset_top = -24.0 +offset_right = 237.0 +offset_bottom = 200.0 +scale = Vector2(0.1, 0.1) +texture = ExtResource("7_6j01w") + [node name="pribor_afsp_l" type="TextureButton" parent="."] layout_mode = 0 -offset_left = 1020.0 -offset_top = 300.0 -offset_right = 1853.0 -offset_bottom = 940.0 +offset_left = 996.0 +offset_top = 301.0 +offset_right = 1829.0 +offset_bottom = 941.0 scale = Vector2(0.2, 0.2) size_flags_horizontal = 15 size_flags_vertical = 15 +toggle_mode = true +action_mode = 0 texture_normal = ExtResource("4_l0nc7") stretch_mode = 4 +script = ExtResource("3_4pt7j") +textures = [ExtResource("7_6j01w"), ExtResource("8_isjua"), ExtResource("9_ll0vs")] [node name="label" type="Label" parent="pribor_afsp_l"] layout_mode = 0 @@ -81,17 +145,46 @@ text = "АФСП левый борт" horizontal_alignment = 1 vertical_alignment = 1 +[node name="frame" type="NinePatchRect" parent="pribor_afsp_l"] +visible = false +self_modulate = Color(0.890196, 0.486275, 0.196078, 1) +layout_mode = 0 +offset_left = -80.0003 +offset_top = -130.0 +offset_right = 110.0 +offset_bottom = 34.9998 +scale = Vector2(5, 5) +texture = ExtResource("4_rasbe") +region_rect = Rect2(-3, -3, 89, 89) +patch_margin_left = 16 +patch_margin_top = 16 +patch_margin_right = 16 +patch_margin_bottom = 16 + +[node name="state" type="TextureRect" parent="pribor_afsp_l"] +layout_mode = 0 +offset_left = 45.0001 +offset_top = -105.0 +offset_right = 269.0 +offset_bottom = 119.0 +scale = Vector2(0.5, 0.5) +texture = ExtResource("7_6j01w") + [node name="pribor_afsp_r" type="TextureButton" parent="."] layout_mode = 0 -offset_left = 1305.0 -offset_top = 300.0 -offset_right = 2138.0 -offset_bottom = 940.0 +offset_left = 1342.0 +offset_top = 301.0 +offset_right = 2175.0 +offset_bottom = 941.0 scale = Vector2(0.2, 0.2) size_flags_horizontal = 15 size_flags_vertical = 15 +toggle_mode = true +action_mode = 0 texture_normal = ExtResource("4_l0nc7") stretch_mode = 4 +script = ExtResource("3_4pt7j") +textures = [ExtResource("7_6j01w"), ExtResource("8_isjua"), ExtResource("9_ll0vs")] [node name="label" type="Label" parent="pribor_afsp_r"] layout_mode = 0 @@ -104,17 +197,45 @@ text = "АФСП правый борт" horizontal_alignment = 1 vertical_alignment = 1 +[node name="frame" type="NinePatchRect" parent="pribor_afsp_r"] +visible = false +self_modulate = Color(0.890196, 0.486275, 0.196078, 1) +layout_mode = 0 +offset_left = -60.0 +offset_top = -130.0 +offset_right = 130.0 +offset_bottom = 35.0 +scale = Vector2(5, 5) +texture = ExtResource("4_rasbe") +region_rect = Rect2(-3, -3, 89, 89) +patch_margin_left = 16 +patch_margin_top = 16 +patch_margin_right = 16 +patch_margin_bottom = 16 + +[node name="state" type="TextureRect" parent="pribor_afsp_r"] +layout_mode = 0 +offset_left = 5.00006 +offset_top = -105.0 +offset_right = 229.0 +offset_bottom = 119.0 +scale = Vector2(0.5, 0.5) +texture = ExtResource("7_6j01w") + [node name="pribor_uyep" type="TextureButton" parent="."] layout_mode = 0 offset_left = 1194.0 offset_top = 739.0 -offset_right = 1287.0 +offset_right = 1288.0 offset_bottom = 925.0 -scale = Vector2(1.07179, 0.98464) size_flags_horizontal = 15 size_flags_vertical = 15 +toggle_mode = true +action_mode = 0 texture_normal = ExtResource("5_kvnex") -stretch_mode = 4 +stretch_mode = 0 +script = ExtResource("3_4pt7j") +textures = [ExtResource("7_6j01w"), ExtResource("8_isjua"), ExtResource("9_ll0vs")] [node name="label" type="Label" parent="pribor_uyep"] layout_mode = 0 @@ -126,16 +247,44 @@ text = "УЭП" horizontal_alignment = 1 vertical_alignment = 1 +[node name="frame" type="NinePatchRect" parent="pribor_uyep"] +visible = false +self_modulate = Color(0.890196, 0.486275, 0.196078, 1) +layout_mode = 0 +offset_left = -13.0 +offset_top = -29.0 +offset_right = 117.0 +offset_bottom = 199.0 +texture = ExtResource("4_rasbe") +region_rect = Rect2(-3, -3, 89, 89) +patch_margin_left = 16 +patch_margin_top = 16 +patch_margin_right = 16 +patch_margin_bottom = 16 + +[node name="state" type="TextureRect" parent="pribor_uyep"] +layout_mode = 0 +offset_left = 10.0 +offset_top = -24.0 +offset_right = 234.0 +offset_bottom = 200.0 +scale = Vector2(0.1, 0.1) +texture = ExtResource("7_6j01w") + [node name="pribor_prd_v_2" type="TextureButton" parent="."] layout_mode = 0 -offset_left = 931.0 -offset_top = 319.0 -offset_right = 1008.0 -offset_bottom = 435.0 +offset_left = 960.0 +offset_top = 480.0 +offset_right = 1037.0 +offset_bottom = 596.0 size_flags_horizontal = 15 size_flags_vertical = 15 +toggle_mode = true +action_mode = 0 texture_normal = ExtResource("6_i1yfn") stretch_mode = 4 +script = ExtResource("3_4pt7j") +textures = [ExtResource("7_6j01w"), ExtResource("8_isjua"), ExtResource("9_ll0vs")] [node name="label" type="Label" parent="pribor_prd_v_2"] layout_mode = 0 @@ -146,36 +295,94 @@ text = "ПРД В2" horizontal_alignment = 1 vertical_alignment = 1 +[node name="frame" type="NinePatchRect" parent="pribor_prd_v_2"] +visible = false +self_modulate = Color(0.890196, 0.486275, 0.196078, 1) +layout_mode = 0 +offset_left = -10.0 +offset_top = -30.0 +offset_right = 95.0 +offset_bottom = 120.0 +texture = ExtResource("4_rasbe") +region_rect = Rect2(-3, -3, 89, 89) +patch_margin_left = 16 +patch_margin_top = 16 +patch_margin_right = 16 +patch_margin_bottom = 16 + +[node name="state" type="TextureRect" parent="pribor_prd_v_2"] +layout_mode = 0 +offset_left = -20.0 +offset_top = -21.0 +offset_right = 204.0 +offset_bottom = 203.0 +scale = Vector2(0.1, 0.1) +texture = ExtResource("7_6j01w") + [node name="pribor_prd_n_2" type="TextureButton" parent="."] layout_mode = 0 -offset_left = 931.0 -offset_top = 479.0 -offset_right = 1008.0 -offset_bottom = 595.0 +offset_left = 960.0 +offset_top = 635.0 +offset_right = 1037.0 +offset_bottom = 751.0 size_flags_horizontal = 15 size_flags_vertical = 15 +toggle_mode = true +action_mode = 0 texture_normal = ExtResource("6_i1yfn") stretch_mode = 4 +script = ExtResource("3_4pt7j") +textures = [ExtResource("7_6j01w"), ExtResource("8_isjua"), ExtResource("9_ll0vs")] [node name="label" type="Label" parent="pribor_prd_n_2"] layout_mode = 0 offset_left = 13.0 offset_top = -19.0 offset_right = 65.0 +theme_override_colors/font_outline_color = Color(0, 0, 0, 1) +theme_override_constants/outline_size = 0 text = "ПРД Н2" horizontal_alignment = 1 vertical_alignment = 1 +[node name="frame" type="NinePatchRect" parent="pribor_prd_n_2"] +visible = false +self_modulate = Color(0.890196, 0.486275, 0.196078, 1) +layout_mode = 0 +offset_left = -10.0 +offset_top = -25.0 +offset_right = 95.0 +offset_bottom = 125.0 +texture = ExtResource("4_rasbe") +region_rect = Rect2(-3, -3, 89, 89) +patch_margin_left = 16 +patch_margin_top = 16 +patch_margin_right = 16 +patch_margin_bottom = 16 + +[node name="state" type="TextureRect" parent="pribor_prd_n_2"] +layout_mode = 0 +offset_left = -15.0 +offset_top = -20.0 +offset_right = 209.0 +offset_bottom = 204.0 +scale = Vector2(0.1, 0.1) +texture = ExtResource("7_6j01w") + [node name="pribor_prd_k_2" type="TextureButton" parent="."] layout_mode = 0 -offset_left = 1057.0 +offset_left = 1077.0 offset_top = 479.0 -offset_right = 1134.0 +offset_right = 1154.0 offset_bottom = 595.0 size_flags_horizontal = 15 size_flags_vertical = 15 +toggle_mode = true +action_mode = 0 texture_normal = ExtResource("6_i1yfn") stretch_mode = 4 +script = ExtResource("3_4pt7j") +textures = [ExtResource("7_6j01w"), ExtResource("8_isjua"), ExtResource("9_ll0vs")] [node name="label" type="Label" parent="pribor_prd_k_2"] layout_mode = 0 @@ -186,17 +393,45 @@ text = "ПРД К2" horizontal_alignment = 1 vertical_alignment = 1 +[node name="frame" type="NinePatchRect" parent="pribor_prd_k_2"] +visible = false +self_modulate = Color(0.890196, 0.486275, 0.196078, 1) +layout_mode = 0 +offset_left = -12.0 +offset_top = -29.0 +offset_right = 93.0 +offset_bottom = 121.0 +texture = ExtResource("4_rasbe") +region_rect = Rect2(-3, -3, 89, 89) +patch_margin_left = 16 +patch_margin_top = 16 +patch_margin_right = 16 +patch_margin_bottom = 16 + +[node name="state" type="TextureRect" parent="pribor_prd_k_2"] +layout_mode = 0 +offset_left = -6.99999 +offset_top = -20.0 +offset_right = 217.0 +offset_bottom = 204.0 +scale = Vector2(0.1, 0.1) +texture = ExtResource("7_6j01w") + [node name="pribor_prd_v_3" type="TextureButton" parent="."] layout_mode = 0 -offset_left = 1364.0 +offset_left = 1344.0 offset_top = 797.0 -offset_right = 1441.0 +offset_right = 1421.0 offset_bottom = 913.0 size_flags_horizontal = 15 size_flags_vertical = 15 +toggle_mode = true +action_mode = 0 texture_normal = ExtResource("6_i1yfn") stretch_mode = 4 flip_h = true +script = ExtResource("3_4pt7j") +textures = [ExtResource("7_6j01w"), ExtResource("8_isjua"), ExtResource("9_ll0vs")] [node name="label" type="Label" parent="pribor_prd_v_3"] layout_mode = 0 @@ -208,17 +443,45 @@ text = "ПРД В3" horizontal_alignment = 1 vertical_alignment = 1 +[node name="frame" type="NinePatchRect" parent="pribor_prd_v_3"] +visible = false +self_modulate = Color(0.890196, 0.486275, 0.196078, 1) +layout_mode = 0 +offset_left = -14.0 +offset_top = -27.0 +offset_right = 91.0 +offset_bottom = 123.0 +texture = ExtResource("4_rasbe") +region_rect = Rect2(-3, -3, 89, 89) +patch_margin_left = 16 +patch_margin_top = 16 +patch_margin_right = 16 +patch_margin_bottom = 16 + +[node name="state" type="TextureRect" parent="pribor_prd_v_3"] +layout_mode = 0 +offset_left = -8.99999 +offset_top = -22.0 +offset_right = 215.0 +offset_bottom = 202.0 +scale = Vector2(0.1, 0.1) +texture = ExtResource("7_6j01w") + [node name="pribor_prd_n_3" type="TextureButton" parent="."] layout_mode = 0 -offset_left = 1486.0 -offset_top = 637.0 -offset_right = 1563.0 -offset_bottom = 753.0 +offset_left = 1458.0 +offset_top = 798.0 +offset_right = 1535.0 +offset_bottom = 914.0 size_flags_horizontal = 15 size_flags_vertical = 15 +toggle_mode = true +action_mode = 0 texture_normal = ExtResource("6_i1yfn") stretch_mode = 4 flip_h = true +script = ExtResource("3_4pt7j") +textures = [ExtResource("7_6j01w"), ExtResource("8_isjua"), ExtResource("9_ll0vs")] [node name="label" type="Label" parent="pribor_prd_n_3"] layout_mode = 0 @@ -229,39 +492,95 @@ text = "ПРД Н3" horizontal_alignment = 1 vertical_alignment = 1 +[node name="frame" type="NinePatchRect" parent="pribor_prd_n_3"] +visible = false +self_modulate = Color(0.890196, 0.486275, 0.196078, 1) +layout_mode = 0 +offset_left = -13.0 +offset_top = -28.0 +offset_right = 92.0 +offset_bottom = 122.0 +texture = ExtResource("4_rasbe") +region_rect = Rect2(-3, -3, 89, 89) +patch_margin_left = 16 +patch_margin_top = 16 +patch_margin_right = 16 +patch_margin_bottom = 16 + +[node name="state" type="TextureRect" parent="pribor_prd_n_3"] +layout_mode = 0 +offset_left = -13.0 +offset_top = -21.0 +offset_right = 211.0 +offset_bottom = 203.0 +scale = Vector2(0.1, 0.1) +texture = ExtResource("7_6j01w") + [node name="pribor_prd_k_3" type="TextureButton" parent="."] layout_mode = 0 -offset_left = 1363.0 -offset_top = 637.0 -offset_right = 1440.0 -offset_bottom = 753.0 +offset_left = 1343.0 +offset_top = 635.0 +offset_right = 1420.0 +offset_bottom = 751.0 size_flags_horizontal = 15 size_flags_vertical = 15 +toggle_mode = true +action_mode = 0 texture_normal = ExtResource("6_i1yfn") stretch_mode = 4 flip_h = true +script = ExtResource("3_4pt7j") +textures = [ExtResource("7_6j01w"), ExtResource("8_isjua"), ExtResource("9_ll0vs")] [node name="label" type="Label" parent="pribor_prd_k_3"] layout_mode = 0 offset_left = 13.0 -offset_top = -20.0 +offset_top = -18.0 offset_right = 65.0 -offset_bottom = -1.0 +offset_bottom = 1.0 text = "ПРД К3" horizontal_alignment = 1 vertical_alignment = 1 +[node name="frame" type="NinePatchRect" parent="pribor_prd_k_3"] +visible = false +self_modulate = Color(0.890196, 0.486275, 0.196078, 1) +layout_mode = 0 +offset_left = -13.0 +offset_top = -25.0 +offset_right = 92.0 +offset_bottom = 125.0 +texture = ExtResource("4_rasbe") +region_rect = Rect2(-3, -3, 89, 89) +patch_margin_left = 16 +patch_margin_top = 16 +patch_margin_right = 16 +patch_margin_bottom = 16 + +[node name="state" type="TextureRect" parent="pribor_prd_k_3"] +layout_mode = 0 +offset_left = -13.0 +offset_top = -20.0 +offset_right = 211.0 +offset_bottom = 204.0 +scale = Vector2(0.1, 0.1) +texture = ExtResource("7_6j01w") + [node name="pribor_prd_v_1" type="TextureButton" parent="."] layout_mode = 0 -offset_left = 1485.0 -offset_top = 319.0 -offset_right = 1562.0 -offset_bottom = 435.0 +offset_left = 1457.0 +offset_top = 480.0 +offset_right = 1534.0 +offset_bottom = 596.0 size_flags_horizontal = 15 size_flags_vertical = 15 +toggle_mode = true +action_mode = 0 texture_normal = ExtResource("6_i1yfn") stretch_mode = 4 flip_h = true +script = ExtResource("3_4pt7j") +textures = [ExtResource("7_6j01w"), ExtResource("8_isjua"), ExtResource("9_ll0vs")] [node name="label" type="Label" parent="pribor_prd_v_1"] layout_mode = 0 @@ -272,17 +591,45 @@ text = "ПРД В1" horizontal_alignment = 1 vertical_alignment = 1 +[node name="frame" type="NinePatchRect" parent="pribor_prd_v_1"] +visible = false +self_modulate = Color(0.890196, 0.486275, 0.196078, 1) +layout_mode = 0 +offset_left = -12.0 +offset_top = -30.0 +offset_right = 93.0 +offset_bottom = 120.0 +texture = ExtResource("4_rasbe") +region_rect = Rect2(-3, -3, 89, 89) +patch_margin_left = 16 +patch_margin_top = 16 +patch_margin_right = 16 +patch_margin_bottom = 16 + +[node name="state" type="TextureRect" parent="pribor_prd_v_1"] +layout_mode = 0 +offset_left = -17.0 +offset_top = -19.0 +offset_right = 207.0 +offset_bottom = 205.0 +scale = Vector2(0.1, 0.1) +texture = ExtResource("7_6j01w") + [node name="pribor_prd_n_1" type="TextureButton" parent="."] layout_mode = 0 -offset_left = 1483.0 -offset_top = 478.0 -offset_right = 1560.0 -offset_bottom = 594.0 +offset_left = 1455.0 +offset_top = 634.0 +offset_right = 1532.0 +offset_bottom = 750.0 size_flags_horizontal = 15 size_flags_vertical = 15 +toggle_mode = true +action_mode = 0 texture_normal = ExtResource("6_i1yfn") stretch_mode = 4 flip_h = true +script = ExtResource("3_4pt7j") +textures = [ExtResource("7_6j01w"), ExtResource("8_isjua"), ExtResource("9_ll0vs")] [node name="label" type="Label" parent="pribor_prd_n_1"] layout_mode = 0 @@ -293,17 +640,45 @@ text = "ПРД Н1" horizontal_alignment = 1 vertical_alignment = 1 +[node name="frame" type="NinePatchRect" parent="pribor_prd_n_1"] +visible = false +self_modulate = Color(0.890196, 0.486275, 0.196078, 1) +layout_mode = 0 +offset_left = -10.0 +offset_top = -24.0 +offset_right = 95.0 +offset_bottom = 126.0 +texture = ExtResource("4_rasbe") +region_rect = Rect2(-3, -3, 89, 89) +patch_margin_left = 16 +patch_margin_top = 16 +patch_margin_right = 16 +patch_margin_bottom = 16 + +[node name="state" type="TextureRect" parent="pribor_prd_n_1"] +layout_mode = 0 +offset_left = -9.99999 +offset_top = -19.0 +offset_right = 214.0 +offset_bottom = 205.0 +scale = Vector2(0.1, 0.1) +texture = ExtResource("7_6j01w") + [node name="pribor_prd_k_1" type="TextureButton" parent="."] layout_mode = 0 -offset_left = 1357.0 +offset_left = 1344.0 offset_top = 478.0 -offset_right = 1434.0 +offset_right = 1421.0 offset_bottom = 594.0 size_flags_horizontal = 15 size_flags_vertical = 15 +toggle_mode = true +action_mode = 0 texture_normal = ExtResource("6_i1yfn") stretch_mode = 4 flip_h = true +script = ExtResource("3_4pt7j") +textures = [ExtResource("7_6j01w"), ExtResource("8_isjua"), ExtResource("9_ll0vs")] [node name="label" type="Label" parent="pribor_prd_k_1"] layout_mode = 0 @@ -314,16 +689,44 @@ text = "ПРД К1" horizontal_alignment = 1 vertical_alignment = 1 +[node name="frame" type="NinePatchRect" parent="pribor_prd_k_1"] +visible = false +self_modulate = Color(0.890196, 0.486275, 0.196078, 1) +layout_mode = 0 +offset_left = -14.0 +offset_top = -28.0 +offset_right = 91.0 +offset_bottom = 122.0 +texture = ExtResource("4_rasbe") +region_rect = Rect2(-3, -3, 89, 89) +patch_margin_left = 16 +patch_margin_top = 16 +patch_margin_right = 16 +patch_margin_bottom = 16 + +[node name="state" type="TextureRect" parent="pribor_prd_k_1"] +layout_mode = 0 +offset_left = -14.0 +offset_top = -19.0 +offset_right = 210.0 +offset_bottom = 205.0 +scale = Vector2(0.1, 0.1) +texture = ExtResource("7_6j01w") + [node name="pribor_prd_v_4" type="TextureButton" parent="."] layout_mode = 0 -offset_left = 1057.0 +offset_left = 1077.0 offset_top = 796.0 -offset_right = 1134.0 +offset_right = 1154.0 offset_bottom = 912.0 size_flags_horizontal = 15 size_flags_vertical = 15 +toggle_mode = true +action_mode = 0 texture_normal = ExtResource("6_i1yfn") stretch_mode = 4 +script = ExtResource("3_4pt7j") +textures = [ExtResource("7_6j01w"), ExtResource("8_isjua"), ExtResource("9_ll0vs")] [node name="label" type="Label" parent="pribor_prd_v_4"] layout_mode = 0 @@ -335,16 +738,44 @@ text = "ПРД В4" horizontal_alignment = 1 vertical_alignment = 1 +[node name="frame" type="NinePatchRect" parent="pribor_prd_v_4"] +visible = false +self_modulate = Color(0.890196, 0.486275, 0.196078, 1) +layout_mode = 0 +offset_left = -12.0 +offset_top = -26.0 +offset_right = 93.0 +offset_bottom = 124.0 +texture = ExtResource("4_rasbe") +region_rect = Rect2(-3, -3, 89, 89) +patch_margin_left = 16 +patch_margin_top = 16 +patch_margin_right = 16 +patch_margin_bottom = 16 + +[node name="state" type="TextureRect" parent="pribor_prd_v_4"] +layout_mode = 0 +offset_left = -12.0 +offset_top = -21.0 +offset_right = 212.0 +offset_bottom = 203.0 +scale = Vector2(0.1, 0.1) +texture = ExtResource("7_6j01w") + [node name="pribor_prd_n_4" type="TextureButton" parent="."] layout_mode = 0 -offset_left = 932.0 -offset_top = 633.0 -offset_right = 1009.0 -offset_bottom = 749.0 +offset_left = 961.0 +offset_top = 794.0 +offset_right = 1038.0 +offset_bottom = 910.0 size_flags_horizontal = 15 size_flags_vertical = 15 +toggle_mode = true +action_mode = 0 texture_normal = ExtResource("6_i1yfn") stretch_mode = 4 +script = ExtResource("3_4pt7j") +textures = [ExtResource("7_6j01w"), ExtResource("8_isjua"), ExtResource("9_ll0vs")] [node name="label" type="Label" parent="pribor_prd_n_4"] layout_mode = 0 @@ -355,26 +786,78 @@ text = "ПРД Н4" horizontal_alignment = 1 vertical_alignment = 1 +[node name="frame" type="NinePatchRect" parent="pribor_prd_n_4"] +visible = false +self_modulate = Color(0.890196, 0.486275, 0.196078, 1) +layout_mode = 0 +offset_left = -11.0 +offset_top = -24.0 +offset_right = 94.0 +offset_bottom = 126.0 +texture = ExtResource("4_rasbe") +region_rect = Rect2(-3, -3, 89, 89) +patch_margin_left = 16 +patch_margin_top = 16 +patch_margin_right = 16 +patch_margin_bottom = 16 + +[node name="state" type="TextureRect" parent="pribor_prd_n_4"] +layout_mode = 0 +offset_left = -11.0 +offset_top = -19.0 +offset_right = 213.0 +offset_bottom = 205.0 +scale = Vector2(0.1, 0.1) +texture = ExtResource("7_6j01w") + [node name="pribor_prd_k_4" type="TextureButton" parent="."] layout_mode = 0 -offset_left = 1057.0 -offset_top = 634.0 -offset_right = 1134.0 -offset_bottom = 750.0 +offset_left = 1077.0 +offset_top = 635.0 +offset_right = 1154.0 +offset_bottom = 751.0 size_flags_horizontal = 15 size_flags_vertical = 15 +toggle_mode = true +action_mode = 0 texture_normal = ExtResource("6_i1yfn") stretch_mode = 4 +script = ExtResource("3_4pt7j") +textures = [ExtResource("7_6j01w"), ExtResource("8_isjua"), ExtResource("9_ll0vs")] [node name="label" type="Label" parent="pribor_prd_k_4"] layout_mode = 0 -offset_left = 12.0 +offset_left = 13.0 offset_top = -19.0 -offset_right = 64.0 +offset_right = 65.0 text = "ПРД К4" horizontal_alignment = 1 vertical_alignment = 1 +[node name="frame" type="NinePatchRect" parent="pribor_prd_k_4"] +visible = false +self_modulate = Color(0.890196, 0.486275, 0.196078, 1) +layout_mode = 0 +offset_left = -12.0 +offset_top = -25.0 +offset_right = 93.0 +offset_bottom = 125.0 +texture = ExtResource("4_rasbe") +region_rect = Rect2(-3, -3, 89, 89) +patch_margin_left = 16 +patch_margin_top = 16 +patch_margin_right = 16 +patch_margin_bottom = 16 + +[node name="state" type="TextureRect" parent="pribor_prd_k_4"] +layout_mode = 0 +offset_left = -6.99999 +offset_top = -20.0 +offset_right = 217.0 +offset_bottom = 204.0 +scale = Vector2(0.1, 0.1) +texture = ExtResource("7_6j01w") + [node name="mnemo_container" type="Panel" parent="."] layout_mode = 0 @@ -434,3 +917,21 @@ offset_right = 1505.0 offset_bottom = 981.0 theme_override_font_sizes/font_size = 17 text = "Сбой" + +[connection signal="toggled" from="pribor_uf" to="pribor_uf" method="_on_toggled"] +[connection signal="toggled" from="pribor_rtr" to="pribor_rtr" method="_on_toggled"] +[connection signal="toggled" from="pribor_afsp_l" to="pribor_afsp_l" method="_on_toggled"] +[connection signal="toggled" from="pribor_afsp_r" to="pribor_afsp_r" method="_on_toggled"] +[connection signal="toggled" from="pribor_uyep" to="pribor_uyep" method="_on_toggled"] +[connection signal="toggled" from="pribor_prd_v_2" to="pribor_prd_v_2" method="_on_toggled"] +[connection signal="toggled" from="pribor_prd_n_2" to="pribor_prd_n_2" method="_on_toggled"] +[connection signal="toggled" from="pribor_prd_k_2" to="pribor_prd_k_2" method="_on_toggled"] +[connection signal="toggled" from="pribor_prd_v_3" to="pribor_prd_v_3" method="_on_toggled"] +[connection signal="toggled" from="pribor_prd_n_3" to="pribor_prd_n_3" method="_on_toggled"] +[connection signal="toggled" from="pribor_prd_k_3" to="pribor_prd_k_3" method="_on_toggled"] +[connection signal="toggled" from="pribor_prd_v_1" to="pribor_prd_v_1" method="_on_toggled"] +[connection signal="toggled" from="pribor_prd_n_1" to="pribor_prd_n_1" method="_on_toggled"] +[connection signal="toggled" from="pribor_prd_k_1" to="pribor_prd_k_1" method="_on_toggled"] +[connection signal="toggled" from="pribor_prd_v_4" to="pribor_prd_v_4" method="_on_toggled"] +[connection signal="toggled" from="pribor_prd_n_4" to="pribor_prd_n_4" method="_on_toggled"] +[connection signal="toggled" from="pribor_prd_k_4" to="pribor_prd_k_4" method="_on_toggled"] diff --git a/scenes/контроль/элемент-в.tscn b/scenes/контроль/элемент-в.tscn index c7e6eb1d..9c8c4cae 100644 --- a/scenes/контроль/элемент-в.tscn +++ b/scenes/контроль/элемент-в.tscn @@ -65,6 +65,8 @@ func _on_resized() -> void: v %= textures.size() state = v $txr_state.texture = textures[v] + get: + return state " [node name="yelement_v" type="Control"]