Merge remote-tracking branch 'sasha/master'
# Conflicts: # scenes/работа.tscn
This commit is contained in:
BIN
data/кнопка-масштаб.png
Normal file
BIN
data/кнопка-масштаб.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 203 B |
34
data/кнопка-масштаб.png.import
Normal file
34
data/кнопка-масштаб.png.import
Normal file
@@ -0,0 +1,34 @@
|
||||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://c1maea6yhd3k7"
|
||||
path="res://.godot/imported/кнопка-масштаб.png-506c26462e59a71e6707c554c495504e.ctex"
|
||||
metadata={
|
||||
"vram_texture": false
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://data/кнопка-масштаб.png"
|
||||
dest_files=["res://.godot/imported/кнопка-масштаб.png-506c26462e59a71e6707c554c495504e.ctex"]
|
||||
|
||||
[params]
|
||||
|
||||
compress/mode=0
|
||||
compress/high_quality=false
|
||||
compress/lossy_quality=0.7
|
||||
compress/hdr_compression=1
|
||||
compress/normal_map=0
|
||||
compress/channel_pack=0
|
||||
mipmaps/generate=false
|
||||
mipmaps/limit=-1
|
||||
roughness/mode=0
|
||||
roughness/src_normal=""
|
||||
process/fix_alpha_border=true
|
||||
process/premult_alpha=false
|
||||
process/normal_map_invert_y=false
|
||||
process/hdr_as_srgb=false
|
||||
process/hdr_clamp_exposure=false
|
||||
process/size_limit=0
|
||||
detect_3d/compress_to=1
|
||||
@@ -35,6 +35,7 @@ YemsDevs="*res://scripts/yems-devs.gd"
|
||||
Yemsboards="*res://scripts/yemsboards.gd"
|
||||
YemsConsts="*res://scripts/yems-consts.gd"
|
||||
interfer="*res://scripts/interfer.gd"
|
||||
hotkeys="*res://scripts/hotkeys.gd"
|
||||
|
||||
[debug]
|
||||
|
||||
@@ -55,7 +56,8 @@ gdscript/warnings/integer_division=0
|
||||
window/size/viewport_width=1600
|
||||
window/size/viewport_height=1200
|
||||
window/subwindows/embed_subwindows=false
|
||||
window/stretch/mode="viewport"
|
||||
window/stretch/mode="canvas_items"
|
||||
window/dpi/allow_hidpi=false
|
||||
window/vsync/vsync_mode=false
|
||||
|
||||
[editor]
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
[gd_scene load_steps=9 format=3 uid="uid://da7w3vkhadfwe"]
|
||||
|
||||
[ext_resource type="Script" path="res://scenes/nine-patch-button.gd" id="1_uqldr"]
|
||||
[ext_resource type="Texture2D" uid="uid://ct0ajcwno03h7" path="res://data/кнопка-квадрат-0.png" id="2_0loew"]
|
||||
[ext_resource type="Texture2D" uid="uid://ct0ajcwno03h7" path="res://data/кнопка-квадрат-0.png" id="2_ak74m"]
|
||||
|
||||
[sub_resource type="StyleBoxEmpty" id="1"]
|
||||
|
||||
@@ -22,17 +22,6 @@ theme_override_styles/panel = SubResource("1")
|
||||
script = ExtResource("1_uqldr")
|
||||
toggle_mode = true
|
||||
|
||||
[node name="state" type="NinePatchRect" parent="."]
|
||||
show_behind_parent = true
|
||||
layout_mode = 2
|
||||
texture = ExtResource("2_0loew")
|
||||
patch_margin_left = 10
|
||||
patch_margin_top = 10
|
||||
patch_margin_right = 10
|
||||
patch_margin_bottom = 10
|
||||
axis_stretch_horizontal = 1
|
||||
axis_stretch_vertical = 1
|
||||
|
||||
[node name="button" type="Button" parent="."]
|
||||
layout_mode = 2
|
||||
theme_override_styles/normal = SubResource("6")
|
||||
@@ -43,7 +32,15 @@ theme_override_styles/focus = SubResource("4")
|
||||
toggle_mode = true
|
||||
clip_text = true
|
||||
|
||||
[node name="label" type="Label" parent="."]
|
||||
[node name="state" type="NinePatchRect" parent="."]
|
||||
show_behind_parent = true
|
||||
layout_mode = 2
|
||||
texture = ExtResource("2_ak74m")
|
||||
patch_margin_left = 10
|
||||
patch_margin_top = 10
|
||||
patch_margin_right = 10
|
||||
patch_margin_bottom = 10
|
||||
axis_stretch_horizontal = 2
|
||||
axis_stretch_vertical = 2
|
||||
|
||||
[connection signal="toggled" from="button" to="." method="_on_button_toggled"]
|
||||
|
||||
@@ -1,5 +1,7 @@
|
||||
extends Sprite2D
|
||||
|
||||
func sv(val: float) -> float: return val / ($строб.scale.x / 2.0) * 0.125
|
||||
|
||||
func set_strob_visible(val: bool): $строб.visible = val
|
||||
func set_strob_center(val: Vector2): $строб.position = val
|
||||
func set_strob_dir(val: float): $строб.material.set('shader_parameter/dir', val)
|
||||
@@ -17,4 +19,4 @@ func get_strob_radius() -> float: return $строб.material.get('shader_par
|
||||
func get_radius_outter() -> float: return material.get('shader_parameter/radius_outter')
|
||||
func get_radius_inner() -> float: return material.get('shader_parameter/radius_inner')
|
||||
|
||||
func sv(val: float) -> float: return val / ($строб.scale.x / 2.0) * 0.125
|
||||
func set_view_mode(val: int): material.set('shader_parameter/mode', val);
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
[sub_resource type="PlaceholderTexture2D" id="PlaceholderTexture2D_2bft1"]
|
||||
size = Vector2(1600, 1200)
|
||||
|
||||
[sub_resource type="ShaderMaterial" id="ShaderMaterial_wl0b8"]
|
||||
[sub_resource type="ShaderMaterial" id="ShaderMaterial_pnsbm"]
|
||||
resource_local_to_scene = true
|
||||
shader = ExtResource("4_gb4a1")
|
||||
shader_parameter/color = Color(1, 1, 1, 0.168627)
|
||||
@@ -26,6 +26,6 @@ centered = false
|
||||
script = ExtResource("2_vkwmy")
|
||||
|
||||
[node name="строб" parent="." instance=ExtResource("3_uhdvc")]
|
||||
material = SubResource("ShaderMaterial_wl0b8")
|
||||
material = SubResource("ShaderMaterial_pnsbm")
|
||||
position = Vector2(560, 560)
|
||||
scale = Vector2(1100, 1100)
|
||||
|
||||
@@ -1,3 +1,3 @@
|
||||
extends TabContainer
|
||||
|
||||
func _enter_tree() -> void: REPNetwork.logger_page = $журнал
|
||||
func _enter_tree() -> void: REPNetwork.logger_page = $Журнал
|
||||
|
||||
@@ -1,27 +1,32 @@
|
||||
[gd_scene load_steps=6 format=3 uid="uid://3slb0i3pvowc"]
|
||||
[gd_scene load_steps=7 format=3 uid="uid://3slb0i3pvowc"]
|
||||
|
||||
[ext_resource type="Script" path="res://scenes/tab-switch.gd" id="1_qroqt"]
|
||||
[ext_resource type="PackedScene" uid="uid://b276iygic5itk" path="res://scenes/работа.tscn" id="2_pdbvn"]
|
||||
[ext_resource type="PackedScene" uid="uid://lwmw4egynmd1" path="res://scenes/контроль.tscn" id="3_2apbp"]
|
||||
[ext_resource type="PackedScene" uid="uid://trt0q8th3bn2" path="res://scenes/журнал.tscn" id="4_yq6c0"]
|
||||
[ext_resource type="PackedScene" uid="uid://dab6loryocc73" path="res://scenes/ЭМС.tscn" id="5_tlyql"]
|
||||
[ext_resource type="PackedScene" uid="uid://bnptm4rlp60dq" path="res://scenes/настройки.tscn" id="6_rxq15"]
|
||||
|
||||
[node name="tab_switch" type="TabContainer"]
|
||||
offset_right = 1600.0
|
||||
offset_bottom = 1200.0
|
||||
script = ExtResource("1_qroqt")
|
||||
|
||||
[node name="работа" parent="." instance=ExtResource("2_pdbvn")]
|
||||
[node name="Работа" parent="." instance=ExtResource("2_pdbvn")]
|
||||
layout_mode = 2
|
||||
|
||||
[node name="контроль" parent="." instance=ExtResource("3_2apbp")]
|
||||
[node name="Контроль" parent="." instance=ExtResource("3_2apbp")]
|
||||
visible = false
|
||||
layout_mode = 2
|
||||
|
||||
[node name="журнал" parent="." instance=ExtResource("4_yq6c0")]
|
||||
[node name="Журнал" parent="." instance=ExtResource("4_yq6c0")]
|
||||
visible = false
|
||||
layout_mode = 2
|
||||
|
||||
[node name="ЭМС" parent="." instance=ExtResource("5_tlyql")]
|
||||
visible = false
|
||||
layout_mode = 2
|
||||
|
||||
[node name="Настройки" parent="." instance=ExtResource("6_rxq15")]
|
||||
visible = false
|
||||
layout_mode = 2
|
||||
|
||||
@@ -29,7 +29,7 @@ func _ready() -> void:
|
||||
|
||||
## Инициализация основных элементов экрана ЭМС
|
||||
func init_boards():
|
||||
# Выставление позиций элементов ЭМС на экране
|
||||
# Выставление позиций элементов ЭМС на экране
|
||||
$scrollin.set_position(Vector2(posx,posy))
|
||||
$scrollout.set_position(Vector2(posx+650,posy))
|
||||
$scrl_in_set.set_position(Vector2(posx,posy + 700))
|
||||
@@ -39,7 +39,7 @@ func init_boards():
|
||||
$btn_flash_write.set_position(Vector2(posx,posy+ 935))
|
||||
$btn_connect.set_position(Vector2(posx+590,posy-25))
|
||||
$btn_disconnect.set_position(Vector2(posx+587,posy + 675))
|
||||
|
||||
|
||||
g_boards['КЭМС'] = Yemsboards.EmsBoard.new('КЭМС', 0x130, YemsConsts.INPUT_ROWS, YemsConsts.OUTPUT_ROWS)
|
||||
g_boards['П5-28'] = Yemsboards.EmsBoard.new('П5-28', 0x140, YemsConsts.INPUT_ROWS1, YemsConsts.OUTPUT_ROWS1)
|
||||
init_tbl_in()
|
||||
@@ -47,7 +47,7 @@ func init_boards():
|
||||
init_tbl_out()
|
||||
$scrollout/tbl_out.pin_header($scrollout, self)
|
||||
$scrl_in_set/tbl_in_set.pin_header($scrl_in_set, self)
|
||||
$scrl_out_set/tbl_out_set.pin_header($scrl_out_set, self)
|
||||
$scrl_out_set/tbl_out_set.pin_header($scrl_out_set, self)
|
||||
init_tbl_files()
|
||||
$scrl_files/tbl_files.pin_header($scrl_files, self)
|
||||
$btn_connect.connect('pressed', Callable(self, 'on_btn_connect'))
|
||||
@@ -106,7 +106,7 @@ func init_tbl_files():
|
||||
|
||||
## Инициализация таблиц входов
|
||||
func init_tbl_in():
|
||||
# Инициализация основной таблицы входов, в ней отображается информация о параметрах и состоянии
|
||||
# Инициализация основной таблицы входов, в ней отображается информация о параметрах и состоянии
|
||||
var header_type: Array = [TableHeader, TableHeader, CellFront, CellFrontRear, TableHeader]
|
||||
var header_text: Array = ['Входы', 'Соединитель', 'мкс', 'мкс', 'Состояние']
|
||||
var row_type: Array = [CellLineEdit, CellLineEdit, CellLineEdit, CellLineEdit, CellState]
|
||||
@@ -131,7 +131,7 @@ func init_tbl_in():
|
||||
$scrollin/tbl_in.set_columns_min_size(column_size)
|
||||
$scrollin/tbl_in.connect('row_pressed', Callable(self, 'on_row_pressed_in'))
|
||||
$scrollin/tbl_in.connect('selected_changed', Callable(self, 'on_selected_changed_in'))
|
||||
|
||||
|
||||
# Инициализация таблицы изменения параметров входа и списка выходов связанных с ним
|
||||
header_text[0] = 'Вход'
|
||||
$scrl_in_set/tbl_in_set.set_header(header_type)
|
||||
@@ -215,7 +215,7 @@ func init_tbl_out():
|
||||
$scrollout/tbl_out.set_columns_alignments(yams_alligment_out)
|
||||
$scrollout/tbl_out.connect('row_pressed', Callable(self, 'on_row_pressed_out'))
|
||||
$scrollout/tbl_out.connect('selected_changed', Callable(self, 'on_selected_changed_out'))
|
||||
|
||||
|
||||
# Инициализация таблицы изменения параметров выхода и списка входов связанных с ним
|
||||
header_text[0] = 'Выход'
|
||||
$scrl_out_set/tbl_out_set.set_header([TableHeader, TableHeader, CellFront, CellFrontRear, TableHeader, TableHeader])
|
||||
@@ -340,7 +340,7 @@ func add_connection_dev(tbl, dev1, dev2, set_row, user_data):
|
||||
dev2.connect_devs[dev1.connector] = user_data
|
||||
|
||||
|
||||
## Отключает возможность редактирования LineEdit в таблице [param tbl] - таблица,
|
||||
## Отключает возможность редактирования LineEdit в таблице [param tbl] - таблица,
|
||||
## [param num_col] - номер колонки, [param i_row] - номер столбца
|
||||
func disable_edit(tbl, num_col: int, i_row: int):
|
||||
for col in range(num_col):
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
extends Control
|
||||
extends Panel
|
||||
|
||||
|
||||
func on_line_changed(unit, addr): Log.message(Logger.INFO, 'Состояние связи: %s %s' % [unit, addr])
|
||||
@@ -16,8 +16,9 @@ func _enter_tree():
|
||||
|
||||
func _ready() -> void:
|
||||
Log.info('Модуль журнала работы готов')
|
||||
Log.info('Аргументы коммандной строки: \"%s\"' % OS.get_cmdline_args())
|
||||
Log.info('Операционная система: %s' % [OS.get_distribution_name()])
|
||||
Threats.connect('threat_new', Callable(self, 'on_threats_changed').bind('Цель обнаружена'))
|
||||
Threats.connect('threat_new', Callable(self, 'on_threats_changed').bind('Цель обнаружена'))
|
||||
Threats.connect('threat_lost', Callable(self, 'on_threats_changed').bind('Цель потеряна'))
|
||||
|
||||
|
||||
|
||||
@@ -3,8 +3,7 @@
|
||||
[ext_resource type="Script" path="res://scenes/журнал.gd" id="1_qjw6d"]
|
||||
[ext_resource type="Script" path="res://addons/godot-logger/scripts/logger_output.gd" id="2_l1pni"]
|
||||
|
||||
[node name="журнал" type="Control"]
|
||||
layout_mode = 3
|
||||
[node name="журнал" type="Panel"]
|
||||
anchors_preset = 15
|
||||
anchor_right = 1.0
|
||||
anchor_bottom = 1.0
|
||||
@@ -47,8 +46,8 @@ text = "Очистить"
|
||||
|
||||
[node name="dlg_file" type="FileDialog" parent="."]
|
||||
gui_embed_subwindows = true
|
||||
initial_position = 2
|
||||
title = "Сохранить журнал работы в файл"
|
||||
initial_position = 2
|
||||
size = Vector2i(900, 900)
|
||||
borderless = true
|
||||
ok_button_text = "Да"
|
||||
|
||||
15
scenes/настройки.gd
Normal file
15
scenes/настройки.gd
Normal file
@@ -0,0 +1,15 @@
|
||||
extends Panel
|
||||
|
||||
|
||||
# Called when the node enters the scene tree for the first time.
|
||||
func _ready() -> void:
|
||||
if OS.get_cmdline_args().has('++ограниченный'):
|
||||
$Label2.text = 'Текущий режим доступа: ограниченный'
|
||||
for node in $GridContainer.get_children():
|
||||
if node is Button:
|
||||
node.disabled = true
|
||||
|
||||
|
||||
# Called every frame. 'delta' is the elapsed time since the previous frame.
|
||||
func _process(delta: float) -> void:
|
||||
pass
|
||||
240
scenes/настройки.tscn
Normal file
240
scenes/настройки.tscn
Normal file
@@ -0,0 +1,240 @@
|
||||
[gd_scene load_steps=2 format=3 uid="uid://bnptm4rlp60dq"]
|
||||
|
||||
[ext_resource type="Script" path="res://scenes/настройки.gd" id="1_2l3rd"]
|
||||
|
||||
[node name="Настройки" type="Panel"]
|
||||
script = ExtResource("1_2l3rd")
|
||||
|
||||
[node name="GridContainer" type="GridContainer" parent="."]
|
||||
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="."]
|
||||
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="."]
|
||||
layout_mode = 0
|
||||
offset_left = 16.0
|
||||
offset_top = 27.0
|
||||
offset_right = 445.0
|
||||
offset_bottom = 49.0
|
||||
text = "Текущий режим доступа: полный"
|
||||
@@ -33,7 +33,6 @@ var strob_width_begin: float ## Ширина строба по углу
|
||||
signal drag_begin ## Вызывается в момент начала перетаскивания
|
||||
signal drag_continue ## Вызывается во время продолжения перетаскивания
|
||||
signal drag_end ## Вызывается в момент завершения перетаскивания
|
||||
signal full_screen ## Вызывается при смене режима окна полный экран - оконный
|
||||
|
||||
|
||||
## Состояние перетаскивания
|
||||
@@ -44,8 +43,7 @@ enum DragFSM {
|
||||
}
|
||||
|
||||
|
||||
## Переключант режим окна программы полный экран - обычный
|
||||
func _on_full_screen(): toggle_full_screen(window_0_id)
|
||||
func on_button_view_toggled(toggled: bool): $canvas.set_view_mode(int(toggled))
|
||||
|
||||
|
||||
## Обработчик сигнала изменения списка целей
|
||||
@@ -54,8 +52,9 @@ func on_threats_resized(threats: Dictionary): $count_all_pad/count_all.text = '%
|
||||
|
||||
## Производит инициализацию
|
||||
func _ready():
|
||||
$btn_strobe.button_connect('pressed', Callable(self, 'on_button_strobe_pressed'))
|
||||
$btn_off.set_pressed(true)
|
||||
$btn_strob.button_connect('pressed', Callable(self, 'on_button_strobe_pressed'))
|
||||
$btn_view.button_connect('toggled', Callable(self, 'on_button_view_toggled'))
|
||||
$grd_btns/btn_off.set_pressed(true)
|
||||
on_button_strobe_pressed()
|
||||
drag_fsm = DragFSM.OFF
|
||||
var nodes: Array = get_tree().get_nodes_in_group('группа-режим-помехи')
|
||||
@@ -101,12 +100,9 @@ func on_threat_lost(th) -> void:
|
||||
|
||||
## Обработчик нажатия кнопки "Строб". Управляет отображением строба
|
||||
func on_button_strobe_pressed() -> void:
|
||||
if $btn_strobe.is_pressed():
|
||||
$canvas.set_strob_visible(true)
|
||||
drag_fsm = DragFSM.IDLE
|
||||
else:
|
||||
$canvas.set_strob_visible(false)
|
||||
drag_fsm = DragFSM.OFF
|
||||
if not is_inside_tree(): return
|
||||
drag_fsm = DragFSM.IDLE if $btn_strob.is_pressed() else DragFSM.OFF
|
||||
$canvas.set_strob_visible(drag_fsm == DragFSM.IDLE)
|
||||
|
||||
|
||||
## Поведение радиокнопок в группе. Управляет состоянием кнопок в радиогруппе
|
||||
@@ -175,16 +171,16 @@ func _input(event) -> void:
|
||||
drag_fsm = DragFSM.IDLE
|
||||
emit_signal('drag_end', event)
|
||||
elif event is InputEventKey:
|
||||
if event.pressed and event.physical_keycode == KEY_F11:
|
||||
emit_signal('full_screen')
|
||||
elif event.physical_keycode == KEY_SHIFT:
|
||||
if event.physical_keycode == KEY_SHIFT:
|
||||
shift_pressed = event.pressed
|
||||
|
||||
|
||||
## Переключает режим окна программы полный - обычный экран
|
||||
func toggle_full_screen(id: int) -> void:
|
||||
var mode = DisplayServer.window_get_mode(id)
|
||||
mode = DisplayServer.WINDOW_MODE_WINDOWED \
|
||||
if mode == DisplayServer.WINDOW_MODE_FULLSCREEN \
|
||||
else DisplayServer.WINDOW_MODE_FULLSCREEN
|
||||
DisplayServer.window_set_mode(mode, id)
|
||||
## Изменяет масштаб
|
||||
func _on_btn_scale_pressed() -> void:
|
||||
var i_scale = $btn_scale.get_meta('i_scale')
|
||||
var prefix = $btn_scale.get_meta('prefix')
|
||||
var scales = $btn_scale.get_meta('scales')
|
||||
i_scale += 1
|
||||
i_scale %= scales.size()
|
||||
$btn_scale.set_meta('i_scale', i_scale)
|
||||
$btn_scale/lbl.text = '%s %.0f км' % [prefix, scales[i_scale]]
|
||||
|
||||
@@ -1,18 +1,19 @@
|
||||
[gd_scene load_steps=10 format=3 uid="uid://b276iygic5itk"]
|
||||
[gd_scene load_steps=11 format=3 uid="uid://b276iygic5itk"]
|
||||
|
||||
[ext_resource type="Script" path="res://scenes/работа.gd" id="1_n5csv"]
|
||||
[ext_resource type="PackedScene" uid="uid://nl1vklubr5kr" path="res://scenes/bip.tscn" id="2_27xk6"]
|
||||
[ext_resource type="Texture2D" uid="uid://cs6i1xwx0pmdk" path="res://data/рамка-панели.png" id="3_pmi4q"]
|
||||
[ext_resource type="Script" path="res://scenes/scroll-threats.gd" id="4_i4425"]
|
||||
[ext_resource type="Script" path="res://table/table.gd" id="5_wx56q"]
|
||||
[ext_resource type="Script" path="res://scenes/scroll-params.gd" id="6_sbmqs"]
|
||||
[ext_resource type="PackedScene" uid="uid://b5kjdyxuwsot5" path="res://scenes/canvas.tscn" id="7_cnnmi"]
|
||||
[ext_resource type="PackedScene" uid="uid://da7w3vkhadfwe" path="res://scenes/button-flat.tscn" id="8_ldm1g"]
|
||||
[ext_resource type="FontFile" uid="uid://befva8r034a4v" path="res://data/DSEG7Classic-Regular.ttf" id="9_mjlke"]
|
||||
[ext_resource type="Script" path="res://scenes/работа.gd" id="1_vmjjl"]
|
||||
[ext_resource type="PackedScene" uid="uid://nl1vklubr5kr" path="res://scenes/bip.tscn" id="2_ew6j4"]
|
||||
[ext_resource type="Texture2D" uid="uid://cs6i1xwx0pmdk" path="res://data/рамка-панели.png" id="3_38cyn"]
|
||||
[ext_resource type="Script" path="res://scenes/scroll-threats.gd" id="4_6pit6"]
|
||||
[ext_resource type="Script" path="res://table/table.gd" id="5_0lwxu"]
|
||||
[ext_resource type="Script" path="res://scenes/scroll-params.gd" id="6_v4chn"]
|
||||
[ext_resource type="PackedScene" uid="uid://b5kjdyxuwsot5" path="res://scenes/canvas.tscn" id="7_pvt8f"]
|
||||
[ext_resource type="PackedScene" uid="uid://da7w3vkhadfwe" path="res://scenes/button-flat.tscn" id="8_r2k1p"]
|
||||
[ext_resource type="FontFile" uid="uid://befva8r034a4v" path="res://data/DSEG7Classic-Regular.ttf" id="9_lr4kl"]
|
||||
[ext_resource type="Texture2D" uid="uid://c1maea6yhd3k7" path="res://data/кнопка-масштаб.png" id="10_7gljt"]
|
||||
|
||||
[node name="Работа" type="Panel"]
|
||||
script = ExtResource("1_n5csv")
|
||||
Bip = ExtResource("2_27xk6")
|
||||
script = ExtResource("1_vmjjl")
|
||||
Bip = ExtResource("2_ew6j4")
|
||||
col_grey = Color(0.34902, 0.643137, 0.772549, 0.168627)
|
||||
col_red = Color(1, 0.568627, 0.431373, 0.239216)
|
||||
drag_scale_band = 0.05
|
||||
@@ -40,7 +41,7 @@ offset_bottom = 1169.0
|
||||
layout_mode = 2
|
||||
size_flags_horizontal = 3
|
||||
size_flags_vertical = 3
|
||||
texture = ExtResource("3_pmi4q")
|
||||
texture = ExtResource("3_38cyn")
|
||||
patch_margin_left = 15
|
||||
patch_margin_top = 30
|
||||
patch_margin_right = 15
|
||||
@@ -64,18 +65,18 @@ offset_left = 4.0
|
||||
offset_top = 51.0
|
||||
offset_right = 476.0
|
||||
offset_bottom = 282.0
|
||||
script = ExtResource("4_i4425")
|
||||
script = ExtResource("4_6pit6")
|
||||
|
||||
[node name="table" type="GridContainer" parent="grd_side/frm_threats/scroll"]
|
||||
layout_mode = 2
|
||||
columns = 4
|
||||
script = ExtResource("5_wx56q")
|
||||
script = ExtResource("5_0lwxu")
|
||||
|
||||
[node name="frm_params" type="NinePatchRect" parent="grd_side"]
|
||||
layout_mode = 2
|
||||
size_flags_horizontal = 3
|
||||
size_flags_vertical = 3
|
||||
texture = ExtResource("3_pmi4q")
|
||||
texture = ExtResource("3_38cyn")
|
||||
patch_margin_left = 15
|
||||
patch_margin_top = 30
|
||||
patch_margin_right = 15
|
||||
@@ -99,17 +100,17 @@ offset_left = 4.0
|
||||
offset_top = 27.0
|
||||
offset_right = 476.0
|
||||
offset_bottom = 282.0
|
||||
script = ExtResource("6_sbmqs")
|
||||
script = ExtResource("6_v4chn")
|
||||
|
||||
[node name="table" type="GridContainer" parent="grd_side/frm_params/scroll"]
|
||||
layout_mode = 2
|
||||
script = ExtResource("5_wx56q")
|
||||
script = ExtResource("5_0lwxu")
|
||||
|
||||
[node name="frm_ecm_list" type="NinePatchRect" parent="grd_side"]
|
||||
layout_mode = 2
|
||||
size_flags_horizontal = 3
|
||||
size_flags_vertical = 3
|
||||
texture = ExtResource("3_pmi4q")
|
||||
texture = ExtResource("3_38cyn")
|
||||
patch_margin_left = 15
|
||||
patch_margin_top = 30
|
||||
patch_margin_right = 15
|
||||
@@ -129,20 +130,60 @@ vertical_alignment = 1
|
||||
|
||||
[node name="scroll" type="ScrollContainer" parent="grd_side/frm_ecm_list"]
|
||||
layout_mode = 0
|
||||
offset_left = 4.0
|
||||
offset_left = 8.0
|
||||
offset_top = 57.0
|
||||
offset_right = 472.0
|
||||
offset_bottom = 285.0
|
||||
offset_bottom = 237.0
|
||||
|
||||
[node name="table" type="GridContainer" parent="grd_side/frm_ecm_list/scroll"]
|
||||
layout_mode = 2
|
||||
script = ExtResource("5_wx56q")
|
||||
script = ExtResource("5_0lwxu")
|
||||
|
||||
[node name="grd_forced" type="GridContainer" parent="grd_side/frm_ecm_list"]
|
||||
layout_mode = 0
|
||||
offset_left = 8.0
|
||||
offset_top = 245.0
|
||||
offset_right = 472.0
|
||||
offset_bottom = 281.0
|
||||
columns = 4
|
||||
|
||||
[node name="btn_srn" parent="grd_side/frm_ecm_list/grd_forced" groups=["группа-принудительно"] instance=ExtResource("8_r2k1p")]
|
||||
layout_mode = 2
|
||||
size_flags_horizontal = 3
|
||||
size_flags_vertical = 3
|
||||
tooltip_text = "Включает принудительную помеху"
|
||||
text = "СРН"
|
||||
metadata/rfi_name = "ozp1"
|
||||
|
||||
[node name="btn_jtids" parent="grd_side/frm_ecm_list/grd_forced" groups=["группа-принудительно"] instance=ExtResource("8_r2k1p")]
|
||||
editor_description = "Кнопка для принудительного включения группы секторов в режим JTIDS"
|
||||
layout_mode = 2
|
||||
size_flags_horizontal = 3
|
||||
size_flags_vertical = 3
|
||||
text = "JTIDS"
|
||||
metadata/rfi_name = "ozp1"
|
||||
|
||||
[node name="btn_kupd" parent="grd_side/frm_ecm_list/grd_forced" groups=["группа-принудительно"] instance=ExtResource("8_r2k1p")]
|
||||
layout_mode = 2
|
||||
size_flags_horizontal = 3
|
||||
size_flags_vertical = 3
|
||||
tooltip_text = "Кнопка для принудительного включения группы секторов в режим КУПД"
|
||||
text = "КУПД"
|
||||
metadata/rfi_name = "ozp1"
|
||||
|
||||
[node name="btn_cancel" parent="grd_side/frm_ecm_list/grd_forced" groups=["прин-секторы-срн"] instance=ExtResource("8_r2k1p")]
|
||||
layout_mode = 2
|
||||
size_flags_horizontal = 3
|
||||
size_flags_vertical = 3
|
||||
text = "Отключить все"
|
||||
pressed = true
|
||||
metadata/rfi_name = "<off>"
|
||||
|
||||
[node name="frm_ecm_params" type="NinePatchRect" parent="grd_side"]
|
||||
layout_mode = 2
|
||||
size_flags_horizontal = 3
|
||||
size_flags_vertical = 3
|
||||
texture = ExtResource("3_pmi4q")
|
||||
texture = ExtResource("3_38cyn")
|
||||
patch_margin_left = 15
|
||||
patch_margin_top = 30
|
||||
patch_margin_right = 15
|
||||
@@ -156,7 +197,7 @@ anchor_right = 1.0
|
||||
offset_bottom = 22.0
|
||||
grow_horizontal = 2
|
||||
theme_override_colors/font_color = Color(0, 0, 0, 1)
|
||||
text = "Параметры помехи"
|
||||
text = "Параметры сеанса"
|
||||
horizontal_alignment = 1
|
||||
vertical_alignment = 1
|
||||
|
||||
@@ -169,172 +210,118 @@ offset_bottom = 282.0
|
||||
|
||||
[node name="table" type="GridContainer" parent="grd_side/frm_ecm_params/scroll"]
|
||||
layout_mode = 2
|
||||
script = ExtResource("5_wx56q")
|
||||
script = ExtResource("5_0lwxu")
|
||||
|
||||
[node name="canvas" parent="." instance=ExtResource("7_cnnmi")]
|
||||
[node name="canvas" parent="." instance=ExtResource("7_pvt8f")]
|
||||
metadata/_edit_lock_ = true
|
||||
|
||||
[node name="btn_auto_threat" parent="." instance=ExtResource("8_ldm1g")]
|
||||
[node name="grd_btns" type="GridContainer" parent="."]
|
||||
layout_mode = 0
|
||||
offset_left = 912.0
|
||||
offset_top = 67.0
|
||||
offset_right = 1102.0
|
||||
offset_bottom = 117.0
|
||||
text = "Автоматически"
|
||||
offset_left = 8.0
|
||||
offset_top = 1116.0
|
||||
offset_right = 1104.0
|
||||
offset_bottom = 1170.0
|
||||
columns = 14
|
||||
|
||||
[node name="btn_strobe" parent="." instance=ExtResource("8_ldm1g")]
|
||||
layout_mode = 0
|
||||
offset_left = 912.0
|
||||
offset_top = 6.0
|
||||
offset_right = 1102.0
|
||||
offset_bottom = 56.0
|
||||
text = "Строб"
|
||||
|
||||
[node name="btn_p5" parent="." groups=["группа-режим-помехи"] instance=ExtResource("8_ldm1g")]
|
||||
layout_mode = 1
|
||||
anchors_preset = -1
|
||||
offset_left = 980.0
|
||||
offset_top = 1118.0
|
||||
offset_right = 1045.0
|
||||
offset_bottom = 1168.0
|
||||
grow_horizontal = 2
|
||||
grow_vertical = 2
|
||||
text = "ОЗП-1"
|
||||
metadata/rfi_name = "ozp1"
|
||||
|
||||
[node name="btn_p6" parent="." groups=["группа-режим-помехи"] instance=ExtResource("8_ldm1g")]
|
||||
layout_mode = 0
|
||||
offset_left = 840.0
|
||||
offset_top = 1118.0
|
||||
offset_right = 905.0
|
||||
offset_bottom = 1168.0
|
||||
text = "СВ-М2"
|
||||
metadata/rfi_name = "svm2"
|
||||
|
||||
[node name="btn_p7" parent="." groups=["группа-режим-помехи"] instance=ExtResource("8_ldm1g")]
|
||||
layout_mode = 0
|
||||
offset_left = 910.0
|
||||
offset_top = 1118.0
|
||||
offset_right = 975.0
|
||||
offset_bottom = 1168.0
|
||||
text = "K1"
|
||||
metadata/rfi_name = "k1"
|
||||
|
||||
[node name="btn_p8" parent="." groups=["группа-режим-помехи"] instance=ExtResource("8_ldm1g")]
|
||||
layout_mode = 0
|
||||
offset_left = 770.0
|
||||
offset_top = 1118.0
|
||||
offset_right = 835.0
|
||||
offset_bottom = 1168.0
|
||||
text = "СВ-И1"
|
||||
metadata/rfi_name = "svi1"
|
||||
|
||||
[node name="btn_p9" parent="." groups=["группа-режим-помехи"] instance=ExtResource("8_ldm1g")]
|
||||
layout_mode = 0
|
||||
offset_left = 700.0
|
||||
offset_top = 1118.0
|
||||
offset_right = 765.0
|
||||
offset_bottom = 1168.0
|
||||
text = "ПД-ЧМ"
|
||||
metadata/rfi_name = "pdchm"
|
||||
|
||||
[node name="btn_p10" parent="." groups=["группа-режим-помехи"] instance=ExtResource("8_ldm1g")]
|
||||
layout_mode = 1
|
||||
anchors_preset = -1
|
||||
offset_left = 630.0
|
||||
offset_top = 1118.0
|
||||
offset_right = 695.0
|
||||
offset_bottom = 1168.0
|
||||
grow_horizontal = 2
|
||||
grow_vertical = 2
|
||||
text = "ПД-М4С"
|
||||
metadata/rfi_name = "pdm4s"
|
||||
|
||||
[node name="btn_p11" parent="." groups=["группа-режим-помехи"] instance=ExtResource("8_ldm1g")]
|
||||
layout_mode = 0
|
||||
offset_left = 350.0
|
||||
offset_top = 1118.0
|
||||
offset_right = 415.0
|
||||
offset_bottom = 1168.0
|
||||
text = "ЛЧМ-1"
|
||||
metadata/rfi_name = "lchm1"
|
||||
|
||||
[node name="btn_p12" parent="." groups=["группа-режим-помехи"] instance=ExtResource("8_ldm1g")]
|
||||
layout_mode = 1
|
||||
anchors_preset = -1
|
||||
offset_left = 420.0
|
||||
offset_top = 1118.0
|
||||
offset_right = 485.0
|
||||
offset_bottom = 1168.0
|
||||
grow_horizontal = 2
|
||||
grow_vertical = 2
|
||||
text = "МЧМ-1"
|
||||
metadata/rfi_name = "mchm1"
|
||||
|
||||
[node name="btn_p13" parent="." groups=["группа-режим-помехи"] instance=ExtResource("8_ldm1g")]
|
||||
layout_mode = 1
|
||||
anchors_preset = -1
|
||||
offset_left = 490.0
|
||||
offset_top = 1118.0
|
||||
offset_right = 555.0
|
||||
offset_bottom = 1168.0
|
||||
grow_horizontal = 2
|
||||
grow_vertical = 2
|
||||
text = "ПД-М2"
|
||||
metadata/rfi_name = "pdm2"
|
||||
|
||||
[node name="btn_p14" parent="." groups=["группа-режим-помехи"] instance=ExtResource("8_ldm1g")]
|
||||
layout_mode = 1
|
||||
anchors_preset = -1
|
||||
offset_left = 560.0
|
||||
offset_top = 1118.0
|
||||
offset_right = 625.0
|
||||
offset_bottom = 1168.0
|
||||
grow_horizontal = 2
|
||||
grow_vertical = 2
|
||||
text = "ПД-М4"
|
||||
metadata/rfi_name = "pdm4"
|
||||
|
||||
[node name="btn_p15" parent="." groups=["группа-режим-помехи"] instance=ExtResource("8_ldm1g")]
|
||||
layout_mode = 1
|
||||
anchors_preset = -1
|
||||
offset_left = 280.0
|
||||
offset_top = 1118.0
|
||||
offset_right = 345.0
|
||||
offset_bottom = 1168.0
|
||||
grow_horizontal = 2
|
||||
grow_vertical = 2
|
||||
text = "СРН-М2"
|
||||
metadata/rfi_name = "srnm2"
|
||||
|
||||
[node name="btn_p16" parent="." groups=["группа-режим-помехи"] instance=ExtResource("8_ldm1g")]
|
||||
layout_mode = 0
|
||||
offset_left = 210.0
|
||||
offset_top = 1118.0
|
||||
offset_right = 275.0
|
||||
offset_bottom = 1168.0
|
||||
text = "СРН-И1"
|
||||
metadata/rfi_name = "srni1"
|
||||
|
||||
[node name="btn_off" parent="." groups=["группа-режим-помехи"] instance=ExtResource("8_ldm1g")]
|
||||
layout_mode = 0
|
||||
offset_left = 140.0
|
||||
offset_top = 1118.0
|
||||
offset_right = 205.0
|
||||
offset_bottom = 1168.0
|
||||
[node name="btn_off" parent="grd_btns" groups=["группа-режим-помехи"] instance=ExtResource("8_r2k1p")]
|
||||
layout_mode = 2
|
||||
size_flags_horizontal = 3
|
||||
size_flags_vertical = 3
|
||||
text = "Откл."
|
||||
pressed = true
|
||||
metadata/rfi_name = "<off>"
|
||||
|
||||
[node name="btn_auto_rfi" parent="." groups=["группа-режим-помехи"] instance=ExtResource("8_ldm1g")]
|
||||
layout_mode = 0
|
||||
offset_left = 10.0
|
||||
offset_top = 1118.0
|
||||
offset_right = 135.0
|
||||
offset_bottom = 1168.0
|
||||
text = "Автоматически"
|
||||
[node name="btn_auto_rfi" parent="grd_btns" groups=["группа-режим-помехи"] instance=ExtResource("8_r2k1p")]
|
||||
layout_mode = 2
|
||||
size_flags_horizontal = 3
|
||||
size_flags_vertical = 3
|
||||
text = "Автомат"
|
||||
metadata/rfi_name = "<auto>"
|
||||
|
||||
[node name="btn_p12" parent="grd_btns" groups=["группа-режим-помехи"] instance=ExtResource("8_r2k1p")]
|
||||
layout_mode = 2
|
||||
size_flags_horizontal = 3
|
||||
size_flags_vertical = 3
|
||||
text = "МЧМ-1"
|
||||
metadata/rfi_name = "mchm1"
|
||||
|
||||
[node name="btn_p16" parent="grd_btns" groups=["группа-режим-помехи"] instance=ExtResource("8_r2k1p")]
|
||||
layout_mode = 2
|
||||
size_flags_horizontal = 3
|
||||
size_flags_vertical = 3
|
||||
text = "СРН-И1"
|
||||
metadata/rfi_name = "srni1"
|
||||
|
||||
[node name="btn_p15" parent="grd_btns" groups=["группа-режим-помехи"] instance=ExtResource("8_r2k1p")]
|
||||
layout_mode = 2
|
||||
size_flags_horizontal = 3
|
||||
size_flags_vertical = 3
|
||||
text = "СРН-М2"
|
||||
metadata/rfi_name = "srnm2"
|
||||
|
||||
[node name="btn_p14" parent="grd_btns" groups=["группа-режим-помехи"] instance=ExtResource("8_r2k1p")]
|
||||
layout_mode = 2
|
||||
size_flags_horizontal = 3
|
||||
size_flags_vertical = 3
|
||||
text = "ПД-М4"
|
||||
metadata/rfi_name = "pdm4"
|
||||
|
||||
[node name="btn_p13" parent="grd_btns" groups=["группа-режим-помехи"] instance=ExtResource("8_r2k1p")]
|
||||
layout_mode = 2
|
||||
size_flags_horizontal = 3
|
||||
size_flags_vertical = 3
|
||||
text = "ПД-М2"
|
||||
metadata/rfi_name = "pdm2"
|
||||
|
||||
[node name="btn_p11" parent="grd_btns" groups=["группа-режим-помехи"] instance=ExtResource("8_r2k1p")]
|
||||
layout_mode = 2
|
||||
size_flags_horizontal = 3
|
||||
size_flags_vertical = 3
|
||||
text = "ЛЧМ-1"
|
||||
metadata/rfi_name = "lchm1"
|
||||
|
||||
[node name="btn_p10" parent="grd_btns" groups=["группа-режим-помехи"] instance=ExtResource("8_r2k1p")]
|
||||
layout_mode = 2
|
||||
size_flags_horizontal = 3
|
||||
size_flags_vertical = 3
|
||||
text = "ПД-М4С"
|
||||
metadata/rfi_name = "pdm4s"
|
||||
|
||||
[node name="btn_p9" parent="grd_btns" groups=["группа-режим-помехи"] instance=ExtResource("8_r2k1p")]
|
||||
layout_mode = 2
|
||||
size_flags_horizontal = 3
|
||||
size_flags_vertical = 3
|
||||
text = "ПД-ЧМ"
|
||||
metadata/rfi_name = "pdchm"
|
||||
|
||||
[node name="btn_p8" parent="grd_btns" groups=["группа-режим-помехи"] instance=ExtResource("8_r2k1p")]
|
||||
layout_mode = 2
|
||||
size_flags_horizontal = 3
|
||||
size_flags_vertical = 3
|
||||
text = "СВ-И1"
|
||||
metadata/rfi_name = "svi1"
|
||||
|
||||
[node name="btn_p7" parent="grd_btns" groups=["группа-режим-помехи"] instance=ExtResource("8_r2k1p")]
|
||||
layout_mode = 2
|
||||
size_flags_horizontal = 3
|
||||
size_flags_vertical = 3
|
||||
text = "K1"
|
||||
metadata/rfi_name = "k1"
|
||||
|
||||
[node name="btn_p6" parent="grd_btns" groups=["группа-режим-помехи"] instance=ExtResource("8_r2k1p")]
|
||||
layout_mode = 2
|
||||
size_flags_horizontal = 3
|
||||
size_flags_vertical = 3
|
||||
text = "СВ-М2"
|
||||
metadata/rfi_name = "svm2"
|
||||
|
||||
[node name="btn_p5" parent="grd_btns" groups=["группа-режим-помехи"] instance=ExtResource("8_r2k1p")]
|
||||
layout_mode = 2
|
||||
size_flags_horizontal = 3
|
||||
size_flags_vertical = 3
|
||||
text = "ОЗП-1"
|
||||
metadata/rfi_name = "ozp1"
|
||||
|
||||
[node name="count_all_pad" type="Label" parent="."]
|
||||
self_modulate = Color(0.403922, 0.403922, 0.403922, 1)
|
||||
layout_mode = 0
|
||||
@@ -342,7 +329,7 @@ offset_left = 96.0
|
||||
offset_top = 109.0
|
||||
offset_right = 164.0
|
||||
offset_bottom = 142.0
|
||||
theme_override_fonts/font = ExtResource("9_mjlke")
|
||||
theme_override_fonts/font = ExtResource("9_lr4kl")
|
||||
theme_override_font_sizes/font_size = 20
|
||||
text = "88"
|
||||
vertical_alignment = 1
|
||||
@@ -351,7 +338,7 @@ vertical_alignment = 1
|
||||
layout_mode = 0
|
||||
offset_right = 68.0
|
||||
offset_bottom = 33.0
|
||||
theme_override_fonts/font = ExtResource("9_mjlke")
|
||||
theme_override_fonts/font = ExtResource("9_lr4kl")
|
||||
theme_override_font_sizes/font_size = 20
|
||||
text = "00"
|
||||
vertical_alignment = 1
|
||||
@@ -363,15 +350,16 @@ offset_left = 96.0
|
||||
offset_top = 29.0
|
||||
offset_right = 188.0
|
||||
offset_bottom = 88.0
|
||||
theme_override_fonts/font = ExtResource("9_mjlke")
|
||||
theme_override_fonts/font = ExtResource("9_lr4kl")
|
||||
theme_override_font_sizes/font_size = 56
|
||||
text = "88"
|
||||
|
||||
[node name="count_danger" type="Label" parent="count_danger_pad"]
|
||||
modulate = Color(0.8, 0.533333, 0.27451, 1)
|
||||
layout_mode = 0
|
||||
offset_right = 92.0
|
||||
offset_bottom = 59.0
|
||||
theme_override_fonts/font = ExtResource("9_mjlke")
|
||||
theme_override_fonts/font = ExtResource("9_lr4kl")
|
||||
theme_override_font_sizes/font_size = 56
|
||||
text = "00"
|
||||
|
||||
@@ -401,6 +389,61 @@ offset_right = 83.0
|
||||
offset_bottom = 72.0
|
||||
text = "Опасных:"
|
||||
|
||||
[node name="btn_auto_threat" parent="." instance=ExtResource("8_r2k1p")]
|
||||
layout_mode = 0
|
||||
offset_left = 1022.0
|
||||
offset_top = 6.0
|
||||
offset_right = 1096.0
|
||||
offset_bottom = 60.0
|
||||
size_flags_horizontal = 3
|
||||
size_flags_vertical = 3
|
||||
text = "Автомат"
|
||||
|
||||
[node name="btn_strob" parent="." instance=ExtResource("8_r2k1p")]
|
||||
layout_mode = 2
|
||||
offset_left = 1022.0
|
||||
offset_top = 66.0
|
||||
offset_right = 1096.0
|
||||
offset_bottom = 120.0
|
||||
size_flags_horizontal = 3
|
||||
size_flags_vertical = 3
|
||||
tooltip_text = "Кнопка для выбора сектора при помощи клика мышкой"
|
||||
text = "Строб"
|
||||
|
||||
[node name="btn_view" parent="." instance=ExtResource("8_r2k1p")]
|
||||
layout_mode = 2
|
||||
offset_left = 874.0
|
||||
offset_top = 1023.0
|
||||
offset_right = 948.0
|
||||
offset_bottom = 1056.0
|
||||
size_flags_horizontal = 3
|
||||
size_flags_vertical = 3
|
||||
text = "Вид"
|
||||
|
||||
[node name="btn_scale" type="TextureButton" parent="."]
|
||||
self_modulate = Color(1, 1, 1, 0.509804)
|
||||
layout_mode = 0
|
||||
offset_left = 952.0
|
||||
offset_top = 1038.0
|
||||
offset_right = 1104.0
|
||||
offset_bottom = 1056.0
|
||||
tooltip_text = "Измененяет масштаб"
|
||||
action_mode = 0
|
||||
texture_normal = ExtResource("10_7gljt")
|
||||
ignore_texture_size = true
|
||||
stretch_mode = 0
|
||||
metadata/i_scale = 0
|
||||
metadata/prefix = "Масштаб:"
|
||||
metadata/scales = [10.0, 20.0, 50.0, 100.0, 250.0]
|
||||
|
||||
[node name="lbl" type="Label" parent="btn_scale"]
|
||||
layout_mode = 0
|
||||
offset_top = -18.0
|
||||
offset_right = 152.0
|
||||
offset_bottom = 1.0
|
||||
text = "Масштаб: 200 км"
|
||||
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="full_screen" from="." to="." method="toggle_full_screen" binds= [0]]
|
||||
[connection signal="pressed" from="btn_scale" to="." method="_on_btn_scale_pressed"]
|
||||
|
||||
20
scripts/hotkeys.gd
Normal file
20
scripts/hotkeys.gd
Normal file
@@ -0,0 +1,20 @@
|
||||
extends Node
|
||||
|
||||
|
||||
func _ready() -> void:
|
||||
signaller.connect('full_screen', Callable(self, 'toggle_full_screen').bind(0))
|
||||
|
||||
|
||||
func _input(event: InputEvent) -> void:
|
||||
if event is InputEventKey:
|
||||
if event.pressed and event.physical_keycode == KEY_F11:
|
||||
signaller.emit_signal('full_screen')
|
||||
|
||||
|
||||
## Переключает режим окна программы полный - обычный экран
|
||||
func toggle_full_screen(id: int) -> void:
|
||||
var mode = DisplayServer.window_get_mode(id)
|
||||
mode = DisplayServer.WINDOW_MODE_WINDOWED \
|
||||
if mode == DisplayServer.WINDOW_MODE_FULLSCREEN \
|
||||
else DisplayServer.WINDOW_MODE_FULLSCREEN
|
||||
DisplayServer.window_set_mode(mode, id)
|
||||
@@ -50,7 +50,7 @@ func _ready() -> void:
|
||||
unit.connect('command_fail', Callable(logger_page, 'on_command_fail').bind(unit_key))
|
||||
|
||||
for key in units: Log.info('%s %s:%d' % [units[key].name, key[0], key[1]])
|
||||
|
||||
|
||||
var timer_interfer: = Timer.new()
|
||||
add_child(timer_interfer)
|
||||
timer_interfer.connect('timeout', Callable(self, 'on_timer_interfer'))
|
||||
@@ -73,7 +73,7 @@ func on_timer_interfer():
|
||||
var pac = json.to_utf8_buffer()
|
||||
sock_capsrpb.set_dest_address(repsettings.UnitProfiles['уарэп-капсрпб-отп'][1], repsettings.UnitProfiles['уарэп-капсрпб-отп'][2])
|
||||
sock_capsrpb.put_packet(pac)
|
||||
|
||||
|
||||
var msg_type8 = {}
|
||||
var time = Time.get_datetime_dict_from_system()
|
||||
msg_type8['ts'] = 8
|
||||
|
||||
@@ -1,16 +1,22 @@
|
||||
class_name Signaller extends Node
|
||||
|
||||
|
||||
## Обмен сигналами между узлами
|
||||
## Обмен сигналами между узлами. Здесь объявлены сигналы, которые используют
|
||||
## два и более узла, из разных файлов.
|
||||
|
||||
|
||||
## Вызывается, когда оператор выбирает цель.
|
||||
## [param threats] - Словарь. Ключ - идентификатор (номер) цели. Значение - цель
|
||||
## [param threats] - Словарь. Ключ - идентификатор (номер) цели. Значение - цель [br]
|
||||
## [param th] - Выбранная цель [br]
|
||||
signal threat_selected(threats: Dictionary, th)
|
||||
|
||||
|
||||
## Вызывается, когда оператор снимает выбор цели.
|
||||
## [param threats] - Словарь. Ключ - идентификатор (номер) цели. Значение - цель
|
||||
## [param threats] - Словарь. Ключ - идентификатор (номер) цели. Значение - цель [br]
|
||||
## [param th] - Ранее выбранная цель [br]
|
||||
signal threat_unselected(threats: Dictionary, th)
|
||||
|
||||
|
||||
## Вызывается, когда пользователь переключает режим окна программы полный экран - оконный
|
||||
## [param id] - Идентификатор окна. Присваевается вручную
|
||||
signal full_screen(id: int)
|
||||
|
||||
@@ -9,30 +9,33 @@ uniform vec4 color0: source_color = vec4(0.38, 0.47, 0.51, 0.4);
|
||||
uniform vec4 color1: source_color = vec4(0.39, 0.44, 0.50, 0.4);
|
||||
uniform float radius_inner = 200.0; /* Радиус внутренний. Должно быть равно ant_band_r0_0 */
|
||||
uniform float radius_outter = 550.0; /* Радиус внешний. Должно быть равно ant_band_r1_6 */
|
||||
uniform int mode = 0; /* Режим отображения. Приоритет РТО - 0, приоритет РЛС - 1 */
|
||||
|
||||
const float ant_band_count_0 = 2.0;
|
||||
const float ant_band_count_1 = 2.0;
|
||||
const float ant_band_count_2 = 2.0;
|
||||
const float ant_band_count_3 = 2.0;
|
||||
const float ant_band_count_4 = 2.0;
|
||||
const float ant_band_count_5 = 2.0;
|
||||
const float ant_band_count_6 = 2.0;
|
||||
const int ant_band_count_0 = 2;
|
||||
const int ant_band_count_1 = 2;
|
||||
const int ant_band_count_2 = 2;
|
||||
const int ant_band_count_3 = 2;
|
||||
const int ant_band_count_4 = 2;
|
||||
const int ant_band_count_5 = 2;
|
||||
const int ant_band_count_6 = 2;
|
||||
|
||||
const float ant_band_r0_0[] = {200.0, 480.0};
|
||||
const float ant_band_r0_1[] = {250.0, 490.0};
|
||||
const float ant_band_r0_2[] = {300.0, 500.0};
|
||||
const float ant_band_r0_3[] = {350.0, 510.0};
|
||||
const float ant_band_r0_4[] = {400.0, 520.0};
|
||||
const float ant_band_r0_5[] = {450.0, 530.0};
|
||||
const float ant_band_r0_6[] = {500.0, 540.0};
|
||||
|
||||
const float ant_band_r1_0[] = {250.0, 490.0};
|
||||
const float ant_band_r1_1[] = {300.0, 500.0};
|
||||
const float ant_band_r1_2[] = {350.0, 510.0};
|
||||
const float ant_band_r1_3[] = {400.0, 520.0};
|
||||
const float ant_band_r1_4[] = {450.0, 530.0};
|
||||
const float ant_band_r1_5[] = {500.0, 540.0};
|
||||
const float ant_band_r1_6[] = {550.0, 550.0};
|
||||
|
||||
const float ant_band_r0_0 = 200.0;
|
||||
const float ant_band_r0_1 = 250.0;
|
||||
const float ant_band_r0_2 = 300.0;
|
||||
const float ant_band_r0_3 = 350.0;
|
||||
const float ant_band_r0_4 = 400.0;
|
||||
const float ant_band_r0_5 = 450.0;
|
||||
const float ant_band_r0_6 = 500.0;
|
||||
|
||||
const float ant_band_r1_0 = 250.0;
|
||||
const float ant_band_r1_1 = 300.0;
|
||||
const float ant_band_r1_2 = 350.0;
|
||||
const float ant_band_r1_3 = 400.0;
|
||||
const float ant_band_r1_4 = 450.0;
|
||||
const float ant_band_r1_5 = 500.0;
|
||||
const float ant_band_r1_6 = 550.0;
|
||||
const float d4 = 90.0;
|
||||
const float ds = 1.0;
|
||||
|
||||
@@ -60,10 +63,10 @@ void sector(inout vec4 c, vec2 uv, vec2 center, float a, float da, float r0, flo
|
||||
}
|
||||
|
||||
|
||||
void antenas(inout vec4 c, vec2 uv, vec2 p0, float cnt, float r0, float r1, vec4 c0, vec4 c1)
|
||||
void antenas(inout vec4 c, vec2 uv, vec2 p0, int cnt, float r0, float r1, vec4 c0, vec4 c1)
|
||||
{
|
||||
float da = 180.0f / float(cnt);
|
||||
for (int i = int(-cnt); i <= int(cnt); i ++)
|
||||
for (int i = -cnt; i <= cnt; i ++)
|
||||
{
|
||||
float v = float(i & 1);
|
||||
vec4 col = v * c0 + (1.0f - v) * c1;
|
||||
@@ -113,13 +116,13 @@ void fragment()
|
||||
COLOR = vec4(0, 0, 0, 0.0); //texture(TEXTURE, UV); // Цвет текущей точки
|
||||
|
||||
// Сетка антенн
|
||||
antenas(COLOR, uv, pc0, ant_band_count_0, ant_band_r0_0, ant_band_r1_0, color1, color0);
|
||||
antenas(COLOR, uv, pc0, ant_band_count_1, ant_band_r0_1, ant_band_r1_1, color0, color1);
|
||||
antenas(COLOR, uv, pc0, ant_band_count_2, ant_band_r0_2, ant_band_r1_2, color1, color0);
|
||||
antenas(COLOR, uv, pc0, ant_band_count_3, ant_band_r0_3, ant_band_r1_3, color0, color1);
|
||||
antenas(COLOR, uv, pc0, ant_band_count_4, ant_band_r0_4, ant_band_r1_4, color1, color0);
|
||||
antenas(COLOR, uv, pc0, ant_band_count_5, ant_band_r0_5, ant_band_r1_5, color0, color1);
|
||||
antenas(COLOR, uv, pc0, ant_band_count_6, ant_band_r0_6, ant_band_r1_6, color1, color0);
|
||||
antenas(COLOR, uv, pc0, ant_band_count_0, ant_band_r0_0[mode], ant_band_r1_0[mode], color1, color0);
|
||||
antenas(COLOR, uv, pc0, ant_band_count_1, ant_band_r0_1[mode], ant_band_r1_1[mode], color0, color1);
|
||||
antenas(COLOR, uv, pc0, ant_band_count_2, ant_band_r0_2[mode], ant_band_r1_2[mode], color1, color0);
|
||||
antenas(COLOR, uv, pc0, ant_band_count_3, ant_band_r0_3[mode], ant_band_r1_3[mode], color0, color1);
|
||||
antenas(COLOR, uv, pc0, ant_band_count_4, ant_band_r0_4[mode], ant_band_r1_4[mode], color1, color0);
|
||||
antenas(COLOR, uv, pc0, ant_band_count_5, ant_band_r0_5[mode], ant_band_r1_5[mode], color0, color1);
|
||||
antenas(COLOR, uv, pc0, ant_band_count_6, ant_band_r0_6[mode], ant_band_r1_6[mode], color1, color0);
|
||||
}
|
||||
"
|
||||
|
||||
@@ -131,3 +134,4 @@ shader_parameter/color0 = Color(0.380392, 0.470588, 0.509804, 0.537255)
|
||||
shader_parameter/color1 = Color(0.3315, 0.45645, 0.51, 0.537255)
|
||||
shader_parameter/radius_inner = 200.0
|
||||
shader_parameter/radius_outter = 550.0
|
||||
shader_parameter/mode = 0
|
||||
|
||||
@@ -25,6 +25,7 @@ const META_EVENT_NAME = 'event_name' ## Имя свойс
|
||||
var header: GridContainer ## Заголовок таблицы
|
||||
var in_focus: = false ## Фокус пользовательского ввода
|
||||
var nodes: = {} ## Все ячейки таблицы и дополнительные элементы
|
||||
var columns_min_size = [] ## Ширина каждой колонки
|
||||
var ScnNode: PackedScene ## Прототип ячейки таблицы
|
||||
var ScnSelector: PackedScene ## Прототип индикатора выбранного ряда
|
||||
var selector_color_proc: Callable ## Ссылка на процедуру генератора цвета индикатора выбранного ряда
|
||||
@@ -179,7 +180,11 @@ func set_columns_min_size(sizes: Array) -> void:
|
||||
assert((columns == 1) or (columns == sizes.size()))
|
||||
columns = sizes.size()
|
||||
var rows_count: = get_rows_count()
|
||||
for i_row in rows_count: set_nodes_min_size(i_row, sizes)
|
||||
columns_min_size.clear()
|
||||
for sz in sizes:
|
||||
columns_min_size.append(sz)
|
||||
for i_row in rows_count:
|
||||
set_nodes_min_size(i_row, sizes, NODE_KEY_FORMAT)
|
||||
if nodes.has(HEAD_KEY_FORMAT % [0, 0]):
|
||||
set_nodes_min_size(0, sizes, HEAD_KEY_FORMAT)
|
||||
|
||||
@@ -318,6 +323,7 @@ func add_row(row_types: Array) -> void:
|
||||
assert(columns == row_types.size(), 'ошибка: %s количество колонок установлено ранее - %d, но требуется %d' % [self, columns, row_types.size()])
|
||||
var i_row: int = get_rows_count()
|
||||
assert(i_row < MAX_INDEX, 'ошибка: слишком много рядов, больше %d' % (MAX_INDEX + 1))
|
||||
var allow_set_size = columns_min_size.size() >= row_types.size()
|
||||
for i_col in columns:
|
||||
var node_type = row_types[i_col]
|
||||
var node = node_type.instantiate()
|
||||
@@ -325,6 +331,9 @@ func add_row(row_types: Array) -> void:
|
||||
var node_key: String = NODE_KEY_FORMAT % [i_row, i_col]
|
||||
node.name = node_key
|
||||
add_child(node)
|
||||
if allow_set_size:
|
||||
node.custom_minimum_size.x = columns_min_size[i_col]
|
||||
node.set_deferred('size.x', columns_min_size[i_col])
|
||||
nodes[node_key] = node
|
||||
var conn = Callable(self, '_on_focus_entered').bind(node)
|
||||
node.connect('focus_entered', conn)
|
||||
@@ -483,6 +492,9 @@ func set_rows_text(rows: Array) -> void:
|
||||
|
||||
## [param i_row] - Индекс ряда.
|
||||
func set_nodes_min_size(i_row: int, sizes: Array, key_format: String = NODE_KEY_FORMAT) -> void:
|
||||
columns_min_size.clear()
|
||||
for sz in sizes:
|
||||
columns_min_size.append(sz)
|
||||
for i_col in columns:
|
||||
var key: = get_node_key(key_format, i_col, i_row)
|
||||
var node = nodes[key]
|
||||
|
||||
Reference in New Issue
Block a user