diff --git a/project.godot b/project.godot index 27a8a4e1..524ef5ad 100644 --- a/project.godot +++ b/project.godot @@ -64,6 +64,7 @@ mercator="*res://scripts/mercator.gd" tcp5p28="*res://scripts/tcp5p28.gd" sch3="*res://scripts/sch3.gd" spt25="*res://scripts/spt25.gd" +astrakb="*res://scripts/astra_kb.gd" [debug] diff --git a/scenes/tabs-switch/tab-switch.gd b/scenes/tabs-switch/tab-switch.gd index 864fecc2..5580d6d8 100644 --- a/scenes/tabs-switch/tab-switch.gd +++ b/scenes/tabs-switch/tab-switch.gd @@ -5,6 +5,11 @@ const TAB_TOSIGNAL_NAME = {0: 'режим_работа', 1: 'режим_конт func _enter_tree() -> void: network.logger_page = $Журнал + signaller.connect('ems2_hide_pressed', on_ems2_hide_pressed) + + +func on_ems2_hide_pressed(state): + set_tab_hidden(4, state) func _on_tab_changed(tab) -> void: diff --git a/scenes/настройки/настройки.gd b/scenes/настройки/настройки.gd index 23858367..ffe8911c 100644 --- a/scenes/настройки/настройки.gd +++ b/scenes/настройки/настройки.gd @@ -10,8 +10,6 @@ var TableEmpti = preload('res://table/empti.tscn') ## Вызывается, когда узел впервые попадает в дерево сцены. func _ready() -> void: setting_tab() - dop_set_tab() - set_tab() $lbl_commit.text = ' \"%s\"' % commit.VCS_HEAD if not OS.get_cmdline_args().has('++ограниченный'): return @@ -20,64 +18,64 @@ func _ready() -> void: node.disabled = true -func _on_external_cu_btn_pressed() -> void: - var state = $GridContainer2/external_cu_btn.button_pressed +func on_external_cu_btn_pressed(btn) -> void: + var state = btn.button_pressed ProjectSettings.set_setting('application/config/external_cu', state) if state: signaller.emit_signal('interfer_off_all') +func on_vk_pressed(btn) -> void: + var state = btn.button_pressed + signaller.emit_signal('kb_pressed', state) + + +func on_ems2_pressed(btn) -> void: + var state = btn.button_pressed + signaller.emit_signal('ems2_hide_pressed', state) + + func setting_tab(): var yams: Array = [ HORIZONTAL_ALIGNMENT_CENTER, HORIZONTAL_ALIGNMENT_CENTER ] $table.set_header([TableHeader, TableHeader]) - $table.set_header_text(['Элемент', ' Показывать ']) - - for i in range(15): + $table.set_header_text(['Параметр', ' Значение ']) + for i in range(21): $table.add_row([TableLabel, TableTaggle]) + $table.set_row_text(0,(['Ограниченный режим'])) + $table.set_row_text(1,(['Управление элементами в ограниченном режиме'])) + $table.set_row_text(2,(['Кнопка «ПД-М4»'])) + $table.set_row_text(3,(['Кнопка «ПД-М2»'])) + $table.set_row_text(4,(['Кнопка «ОЗП-1»'])) + $table.set_row_text(5,(['Кнопка «МЧМ-1»'])) + $table.set_row_text(6,(['Кнопка «ОРН-И1»'])) + $table.set_row_text(7,(['Кнопка «ОРН-М2»'])) + $table.set_row_text(8,(['Кнопка «ЛЧМ-1»'])) + $table.set_row_text(9,(['Кнопка «ПД-М4С»'])) + $table.set_row_text(10,(['Кнопка «ПД-ЧМ»'])) + $table.set_row_text(11,(['Кнопка «СВ-И1»'])) + $table.set_row_text(12,(['Кнопка «К1»'])) + $table.set_row_text(13,(['Кнопка «СВ-М2»'])) + $table.set_row_text(14,(['Кнопка «ОРН»'])) + $table.set_row_text(15,(['Кнопка «JTIDS»'])) + $table.set_row_text(16,(['Кнопка «КУПД»'])) + $table.set_row_text(17,(['Внешнее целеуказание'])) + var extern_cu_node = $table.get_node2(1, 17).get_children()[1] + extern_cu_node.connect('pressed', on_external_cu_btn_pressed.bind(extern_cu_node)) + $table.set_row_text(18,(['Кнопка «Подавление»'])) + $table.set_row_text(19,(['Виртуальная клавиатура'])) + var vk_node = $table.get_node2(1, 19).get_children()[1] + vk_node.connect('pressed', on_vk_pressed.bind(vk_node)) + $table.set_row_text(20,(['Скрыть вкладку ЭМС 2'])) + var ems2_hide_node = $table.get_node2(1, 20).get_children()[1] + ems2_hide_node.connect('pressed', on_ems2_pressed.bind(ems2_hide_node)) + ems2_hide_node.set_pressed(true) + on_ems2_pressed(ems2_hide_node) - $table.set_row_text(0,([' Кнопка «ПД-М4» '])) - $table.set_row_text(1,([' Кнопка «ПД-М2» '])) - $table.set_row_text(2,([' Кнопка «ОЗП-1» '])) - $table.set_row_text(3,([' Кнопка «МЧМ-1» '])) - $table.set_row_text(4,([' Кнопка «ОРН-И1» '])) - $table.set_row_text(5,([' Кнопка «ОРН-М2» '])) - $table.set_row_text(6,([' Кнопка «ЛЧМ-1» '])) - $table.set_row_text(7,([' Кнопка «ПД-М4С» '])) - $table.set_row_text(8,([' Кнопка «ПД-ЧМ» '])) - $table.set_row_text(9,([' Кнопка «СВ-И1» '])) - $table.set_row_text(10,([' Кнопка «К1» '])) - $table.set_row_text(11,([' Кнопка «СВ-М2» '])) - $table.set_row_text(12,([' Кнопка «ОРН» '])) - $table.set_row_text(13,([' Кнопка «JTIDS» '])) - $table.set_row_text(14,([' Кнопка «КУПД» '])) + $table.add_row([TableLabel, TableEmpti]) + $table.add_row([TableLabel, TableEmpti]) - $table.set_columns_min_size([150, 100]) + $table.set_row_text(21, (['Текущая версия ПО УАРЭП'])) + $table.set_row_text(22, (['Адрес сервера карт'])) + + $table.set_columns_min_size([365, 365]) $table.set_columns_alignments(yams) - - -func dop_set_tab(): - var yams: Array = [ HORIZONTAL_ALIGNMENT_CENTER, HORIZONTAL_ALIGNMENT_CENTER ] - $table2.add_row([TableLabel, TableEmpti]) - $table2.add_row([TableLabel, TableEmpti]) - $table2.add_row([TableEmpti, TableEmpti]) - $table2.add_row([TableLabel, TableTaggle]) - $table2.add_row([TableLabel, TableTaggle]) - - $table2.set_row_text(0, (['Текущая версия ПО УАРЭП:'])) - $table2.set_row_text(1, (['Адрес сервера карт:'])) - $table2.set_row_text(2, ([''])) - $table2.set_row_text(3, (['Внешнее целеуказание.'])) - $table2.set_row_text(4, (['Кнопка «Подавление».\nОтключить отображение этой кнопки,\nчто бы тип помех применялся сразу.'])) - - - $table2.set_columns_min_size([180, 50]) - $table2.set_columns_alignments(yams) - -func set_tab(): - $table3.add_row([TableLabel, TableEmpti]) - $table3.add_row([TableLabel, TableEmpti]) - - $table3.set_row_text(0, ([' Текущий режим доступа: полный '])) - $table3.set_row_text(1, ([' Управление элементами в режиме с ограниченным доступом '])) - - $table3.set_columns_min_size([250, 5]) diff --git a/scenes/настройки/настройки.tscn b/scenes/настройки/настройки.tscn index 7cd09264..98a1d8b3 100644 --- a/scenes/настройки/настройки.tscn +++ b/scenes/настройки/настройки.tscn @@ -17,250 +17,12 @@ func _on_text_changed(new_text: String) -> void: [node name="Настройки" type="Panel"] script = ExtResource("1_2l3rd") -[node name="GridContainer" type="GridContainer" parent="."] -visible = false -layout_mode = 0 -offset_left = 44.0 -offset_top = 87.0 -offset_right = 336.0 -offset_bottom = 193.0 -columns = 2 - -[node name="Label" type="Label" parent="GridContainer"] -layout_mode = 2 -size_flags_horizontal = 3 -size_flags_vertical = 3 -text = "Элемент" -vertical_alignment = 1 - -[node name="Label2" type="Label" parent="GridContainer"] -layout_mode = 2 -size_flags_horizontal = 3 -size_flags_vertical = 3 -text = "Показывать" -horizontal_alignment = 1 -vertical_alignment = 1 - -[node name="Label4" type="Label" parent="GridContainer"] -layout_mode = 2 -size_flags_horizontal = 3 -size_flags_vertical = 3 -text = "Кнопка «ПД-M4»" -vertical_alignment = 1 - -[node name="CheckButton" type="CheckButton" parent="GridContainer"] -layout_mode = 2 -size_flags_horizontal = 6 -size_flags_vertical = 6 -button_pressed = true - -[node name="Label5" type="Label" parent="GridContainer"] -layout_mode = 2 -size_flags_horizontal = 3 -size_flags_vertical = 3 -text = "Кнопка «ПД-M2»" -vertical_alignment = 1 - -[node name="CheckButton3" type="CheckButton" parent="GridContainer"] -layout_mode = 2 -size_flags_horizontal = 6 -size_flags_vertical = 6 -button_pressed = true - -[node name="Label6" type="Label" parent="GridContainer"] -layout_mode = 2 -size_flags_horizontal = 3 -size_flags_vertical = 3 -text = "Кнопка «ОЗП-1»" -vertical_alignment = 1 - -[node name="CheckButton5" type="CheckButton" parent="GridContainer"] -layout_mode = 2 -size_flags_horizontal = 6 -size_flags_vertical = 6 -button_pressed = true - -[node name="Label7" type="Label" parent="GridContainer"] -layout_mode = 2 -size_flags_horizontal = 3 -size_flags_vertical = 3 -text = "Кнопка «МЧМ-1»" -vertical_alignment = 1 - -[node name="CheckButton6" type="CheckButton" parent="GridContainer"] -layout_mode = 2 -size_flags_horizontal = 6 -size_flags_vertical = 6 -button_pressed = true - -[node name="Label8" type="Label" parent="GridContainer"] -layout_mode = 2 -size_flags_horizontal = 3 -size_flags_vertical = 3 -text = "Кнопка «СРН-И1»" -vertical_alignment = 1 - -[node name="CheckButton7" type="CheckButton" parent="GridContainer"] -layout_mode = 2 -size_flags_horizontal = 6 -size_flags_vertical = 6 -button_pressed = true - -[node name="Label9" type="Label" parent="GridContainer"] -layout_mode = 2 -size_flags_horizontal = 3 -size_flags_vertical = 3 -text = "Кнопка «СРН-М2»" -vertical_alignment = 1 - -[node name="CheckButton8" type="CheckButton" parent="GridContainer"] -layout_mode = 2 -size_flags_horizontal = 6 -size_flags_vertical = 6 -button_pressed = true - -[node name="Label10" type="Label" parent="GridContainer"] -layout_mode = 2 -size_flags_horizontal = 3 -size_flags_vertical = 3 -text = "Кнопка «ЛЧМ-1»" -vertical_alignment = 1 - -[node name="CheckButton9" type="CheckButton" parent="GridContainer"] -layout_mode = 2 -size_flags_horizontal = 6 -size_flags_vertical = 6 -button_pressed = true - -[node name="Label11" type="Label" parent="GridContainer"] -layout_mode = 2 -size_flags_horizontal = 3 -size_flags_vertical = 3 -text = "Кнопка «ПД-М4С»" -vertical_alignment = 1 - -[node name="CheckButton10" type="CheckButton" parent="GridContainer"] -layout_mode = 2 -size_flags_horizontal = 6 -size_flags_vertical = 6 -button_pressed = true - -[node name="Label12" type="Label" parent="GridContainer"] -layout_mode = 2 -size_flags_horizontal = 3 -size_flags_vertical = 3 -text = "Кнопка «ПД-ЧМ»" -vertical_alignment = 1 - -[node name="CheckButton11" type="CheckButton" parent="GridContainer"] -layout_mode = 2 -size_flags_horizontal = 6 -size_flags_vertical = 6 -button_pressed = true - -[node name="Label13" type="Label" parent="GridContainer"] -layout_mode = 2 -size_flags_horizontal = 3 -size_flags_vertical = 3 -text = "Кнопка «СВ-И1»" -vertical_alignment = 1 - -[node name="CheckButton12" type="CheckButton" parent="GridContainer"] -layout_mode = 2 -size_flags_horizontal = 6 -size_flags_vertical = 6 -button_pressed = true - -[node name="Label14" type="Label" parent="GridContainer"] -layout_mode = 2 -size_flags_horizontal = 3 -size_flags_vertical = 3 -text = "Кнопка «К1»" -vertical_alignment = 1 - -[node name="CheckButton13" type="CheckButton" parent="GridContainer"] -layout_mode = 2 -size_flags_horizontal = 6 -size_flags_vertical = 6 -button_pressed = true - -[node name="Label15" type="Label" parent="GridContainer"] -layout_mode = 2 -size_flags_horizontal = 3 -size_flags_vertical = 3 -text = "Кнопка «СВ-М2»" -vertical_alignment = 1 - -[node name="CheckButton14" type="CheckButton" parent="GridContainer"] -layout_mode = 2 -size_flags_horizontal = 6 -size_flags_vertical = 6 -button_pressed = true - -[node name="Label16" type="Label" parent="GridContainer"] -layout_mode = 2 -size_flags_horizontal = 3 -size_flags_vertical = 3 -text = "Кнопка «СРН»" -vertical_alignment = 1 - -[node name="CheckButton15" type="CheckButton" parent="GridContainer"] -layout_mode = 2 -size_flags_horizontal = 6 -size_flags_vertical = 6 -button_pressed = true - -[node name="Label17" type="Label" parent="GridContainer"] -layout_mode = 2 -size_flags_horizontal = 3 -size_flags_vertical = 3 -text = "Кнопка «JTIDS»" -vertical_alignment = 1 - -[node name="CheckButton16" type="CheckButton" parent="GridContainer"] -layout_mode = 2 -size_flags_horizontal = 6 -size_flags_vertical = 6 -button_pressed = true - -[node name="Label18" type="Label" parent="GridContainer"] -layout_mode = 2 -size_flags_horizontal = 3 -size_flags_vertical = 3 -text = "Кнопка «КУПД»" -vertical_alignment = 1 - -[node name="CheckButton17" type="CheckButton" parent="GridContainer"] -layout_mode = 2 -size_flags_horizontal = 6 -size_flags_vertical = 6 -button_pressed = true - -[node name="Label1" type="Label" parent="."] -visible = false -layout_mode = 0 -offset_left = 16.0 -offset_top = 60.0 -offset_right = 434.0 -offset_bottom = 82.0 -text = "Управление элементами в режиме с ограниченным доступом" - -[node name="Label2" type="Label" parent="."] -visible = false -layout_mode = 0 -offset_left = 20.0 -offset_top = 20.0 -offset_right = 445.0 -offset_bottom = 50.0 -text = "Текущий режим доступа: полный" -vertical_alignment = 1 - [node name="edt_mapaddr" type="LineEdit" parent="."] layout_mode = 0 -offset_left = 776.0 -offset_top = 48.0 -offset_right = 1148.0 -offset_bottom = 78.0 +offset_left = 410.0 +offset_top = 612.0 +offset_right = 778.0 +offset_bottom = 639.0 theme_override_colors/font_color = Color(1, 0.596078, 0.4, 1) script = SubResource("GDScript_anjmx") @@ -273,69 +35,21 @@ offset_bottom = 30.0 text = "Адрес сервера карт:" vertical_alignment = 1 -[node name="GridContainer2" type="GridContainer" parent="."] -visible = false -layout_mode = 0 -offset_left = 478.0 -offset_top = 154.0 -offset_right = 784.0 -offset_bottom = 260.0 -columns = 2 - -[node name="external_cu_lbl" type="Label" parent="GridContainer2"] -layout_mode = 2 -text = "Внешнее целеуказание." -vertical_alignment = 1 - -[node name="external_cu_btn" type="CheckButton" parent="GridContainer2"] -layout_mode = 2 - -[node name="Label19" type="Label" parent="GridContainer2"] -layout_mode = 2 -size_flags_horizontal = 3 -size_flags_vertical = 3 -text = "Кнопка «Подавление». -Отключить отображение этой кнопки, -что бы тип помех применялся сразу." - -[node name="CheckButton18" type="CheckButton" parent="GridContainer2"] -layout_mode = 2 -size_flags_horizontal = 6 -size_flags_vertical = 6 -disabled = true - [node name="lbl_commit" type="Label" parent="."] layout_mode = 0 -offset_left = 776.0 -offset_top = 24.0 -offset_right = 1144.0 -offset_bottom = 54.0 +offset_left = 410.0 +offset_top = 582.0 +offset_right = 778.0 +offset_bottom = 607.0 theme_override_colors/font_color = Color(1, 0.596078, 0.4, 1) vertical_alignment = 1 [node name="table" type="GridContainer" parent="."] layout_mode = 0 offset_left = 40.0 -offset_top = 88.0 +offset_top = 40.0 offset_right = 80.0 -offset_bottom = 128.0 -script = ExtResource("2_6sx73") - -[node name="table2" type="GridContainer" parent="."] -layout_mode = 0 -offset_left = 512.0 -offset_top = 32.0 -offset_right = 552.0 -offset_bottom = 72.0 -script = ExtResource("2_6sx73") - -[node name="table3" type="GridContainer" parent="."] -layout_mode = 0 -offset_left = 40.0 -offset_top = 32.0 -offset_right = 80.0 -offset_bottom = 72.0 +offset_bottom = 80.0 script = ExtResource("2_6sx73") [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"] diff --git a/scripts/astra_kb.gd b/scripts/astra_kb.gd new file mode 100644 index 00000000..e523eabb --- /dev/null +++ b/scripts/astra_kb.gd @@ -0,0 +1,15 @@ +extends Node + +var pid = null + +# Called when the node enters the scene tree for the first time. +func _ready() -> void: + signaller.connect('kb_pressed', Callable(self, 'on_kb_pressed')) + + +func on_kb_pressed(state): + if pid: + OS.kill(pid) + pid = null + if state: + pid = OS.create_process('fly-vkbd', []) diff --git a/scripts/signaller.gd b/scripts/signaller.gd index f41b4a42..7cedf7b5 100644 --- a/scripts/signaller.gd +++ b/scripts/signaller.gd @@ -145,9 +145,17 @@ signal map_mode_changed(mode: int) ## Вызывается при обновлении позиции(угла) цели.[br] signal th_aoa_update(threats: Dictionary) - ## <...>[br] ## [param ecms] - <...> signal fs_update_color(ecms: Dictionary) signal socket_error(error: String) + +## Вызывается при нажатии на кнопку экранной клавиатуры +## [param state] - состояние нажатого переключателя виртуальной клавиатуры астры +signal kb_pressed(state) + + +## Вызывается при нажатии на кнопку экранной клавиатуры +## [param state] - состояние скрытия кнопки ЭМС2 +signal ems2_hide_pressed(state) diff --git a/table/taggle.tscn b/table/taggle.tscn index 823de949..413d6ee2 100644 --- a/table/taggle.tscn +++ b/table/taggle.tscn @@ -1,4 +1,6 @@ -[gd_scene format=3 uid="uid://dm7hh7ibuin78"] +[gd_scene load_steps=2 format=3 uid="uid://dm7hh7ibuin78"] + +[ext_resource type="PackedScene" uid="uid://dwphmxstaxn4v" path="res://table/lable.tscn" id="1_2wdrh"] [node name="Control" type="Control"] layout_mode = 3 @@ -6,8 +8,14 @@ anchors_preset = 0 offset_right = 96.0 offset_bottom = 24.0 +[node name="Lable" parent="." instance=ExtResource("1_2wdrh")] +layout_mode = 0 +offset_right = 368.0 +offset_bottom = 21.0 + [node name="CheckButton" type="CheckButton" parent="."] layout_mode = 0 -offset_left = 30.0 -offset_right = 74.0 -offset_bottom = 24.0 +offset_left = 161.0 +offset_top = -2.0 +offset_right = 205.0 +offset_bottom = 22.0