Merge remote-tracking branch 'origin/master' into master-afsp

# Conflicts:
#	scenes/tabs-switch/tab-switch.tscn
#	scenes/контроль/контроль.tscn
This commit is contained in:
Maxim
2026-01-21 09:40:56 +03:00
53 changed files with 476 additions and 132 deletions

72
check.sh Normal file
View File

@@ -0,0 +1,72 @@
#!/usr/bin/env bash
if [ -z "$1" ]; then
echo "Использование: $0 <папка_для_поиска>"
exit 1
fi
TARGET_DIR="$1"
if [ ! -d "$TARGET_DIR" ]; then
echo "Ошибка: папка '$TARGET_DIR' не существует!"
exit 1
fi
echo "Поиск строк в двойных кавычках в файлах .gd (исключая комментарии)..."
echo "Папка: $TARGET_DIR"
echo "=========================================="
FOUND_MATCHES=0
# Используем Process Substitution вместо пайплайна в цикле
while IFS= read -r file; do
# Используем awk для поиска строк с кавычками, исключая комментарии
# и экранированные кавычки
MATCHES=$(awk '
BEGIN { line_num = 0 }
{
line_num++
original_line = $0
line = $0
# Ищем первый #, который не находится внутри кавычек
in_quote = 0
for (i = 1; i <= length(line); i++) {
char = substr(line, i, 1)
prev_char = substr(line, i-1, 1)
# Если находим неэкранированную кавычку, меняем состояние
if (char == "\"" && prev_char != "\\") {
in_quote = !in_quote
}
# Если находим # вне кавычек, обрезаем строку до этого места
if (char == "#" && !in_quote) {
line = substr(line, 1, i-1)
break
}
}
# Удаляем начальные и конечные пробелы
gsub(/^[[:space:]]+|[[:space:]]+$/, "", line)
# Ищем непустые строки с двойными кавычками
if (line ~ /"[^"\\]*"/) {
print line_num ": " original_line
}
}
' "$file")
if [ -n "$MATCHES" ]; then
FOUND_MATCHES=1
echo "Файл: $file"
echo "$MATCHES" | while IFS= read -r match_line; do
echo " Строка $match_line"
done
echo ""
fi
done < <(find "$TARGET_DIR" -type f -name "*.gd")
if [ "$FOUND_MATCHES" -eq 0 ]; then
echo "Совпадений не найдено."
fi

View File

@@ -62,39 +62,40 @@ interfer/closed_sectors=Color(0, 0, 0, 1)
"config/Кнопка «СВ-И1»"=false
"config/Кнопка «СВ-М2»"=false
"config/Ограниченный режим"=false
"config/Отладка контроля"=false
"config/Отладка контроля"=true
"config/Период опроса состояния АФСП, секунды"=""
"config/Период опроса состояния БПО, секунды"=""
"config/Скрыть вкладку ЭМС 2"=true
"config/Список своих протоколов"=""
"config/Текущая версия ПО УАРЭП"="master 3bff1cd Tue Nov 4 15:33:24 2025 +0300"
"config/Цвет кнопки \"Подавление\""="[0.972549021244049,0.0117647061124444,0.423529416322708,1.0]"
"config/Цвет схемы"="[0.972549021244049,0.0117647061124444,0.0274509806185961,1.0]"
"config/Цвет фона схемы"="[0.0941176488995552,0.149019613862038,1.0,1.0]"
"config/Цвет кнопки \"Подавление\""="[0.905882358551025,0.00392156885936856,0.0,1.0]"
"config/Цвет схемы"="[0.905954480171204,0.921875,0.8714599609375,1.0]"
"config/Цвет фона схемы"="[0.258926391601563,0.274618297815323,0.27734375,1.0]"
"config/Шаблон адреса сервера карт"="https://tile.openstreetmap.org/{z}/{x}/{y}.png"
"config/навигация"=["*", 60000, true, true]
"config/уарэп-5п28"=["127.0.0.1", 50777]
"config/уарэп-капсрпб"=["127.0.0.1", "127.0.0.1", 42023, 42022, false, true]
"config/уарэп-спт25-1"=["/home/user/tty0", 0, 19200, "N", 8, 1]
"config/уарэп-спт25-2"=["/home/user/tty1", 0, 19200, "N", 8, 1]
"config/уарэп-трасса"=["192.168.11.34", "192.168.11.105", 50200, 10004, false, true]
"config/уарэп-щ3"=["/home/user/tty3", 7, 19200, "N", 8, 1, 50000]
"config/уарэп-эмс"=["10.1.1.52", 50052, false, false]
"config/уарэп-яу07-1в"=["10.1.1.12", 50012, false, false]
"config/уарэп-яу07-1к"=["10.1.1.13", 50013, false, false]
"config/уарэп-яу07-1н"=["10.1.1.11", 50011, false, false]
"config/уарэп-яу07-2в"=["10.1.1.22", 50022, false, false]
"config/уарэп-яу07-2к"=["10.1.1.23", 50023, false, false]
"config/уарэп-яу07-2н"=["10.1.1.21", 50021, false, false]
"config/уарэп-яу07-3в"=["10.1.1.32", 50032, false, false]
"config/уарэп-яу07-3к"=["10.1.1.33", 50033, false, false]
"config/уарэп-яу07-3н"=["10.1.1.31", 50031, false, false]
"config/уарэп-яу07-4в"=["10.1.1.42", 50042, false, false]
"config/уарэп-яу07-4к"=["10.1.1.43", 50043, false, false]
"config/уарэп-яу07-4н"=["10.1.1.41", 50041, false, false]
"config/уарэп-яу07-общий"=["*", 50000, true, true]
"config/уарэп-яу07-частный"=["10.1.1.253", 50253, false, true]
"config/навигация"=["*", 60000.0, true, true]
"config/уарэп-5п28"=["127.0.0.1", 50777.0]
"config/уарэп-капсрпб"=["127.0.0.1", "127.0.0.1", 42023.0, 42022.0, false, true]
"config/уарэп-спт25-1"=["/home/user/tty0", 0.0, 19200.0, "N", 8.0, 1.0]
"config/уарэп-спт25-2"=["/home/user/tty1", 0.0, 19200.0, "N", 8.0, 1.0]
"config/уарэп-трасса"=["192.168.11.34", "192.168.11.105", 50200.0, 10004.0, false, true]
"config/уарэп-щ3"=["/home/user/tty3", 7.0, 19200.0, "N", 8.0, 1.0, 50000.0]
"config/уарэп-эмс"=["10.1.1.52", 50052.0, false, false]
"config/уарэп-яу07-1в"=["10.1.1.12", 50012.0, false, false]
"config/уарэп-яу07-1к"=["10.1.1.13", 50013.0, false, false]
"config/уарэп-яу07-1н"=["10.1.1.11", 50011.0, false, false]
"config/уарэп-яу07-2в"=["10.1.1.22", 50022.0, false, false]
"config/уарэп-яу07-2к"=["10.1.1.23", 50023.0, false, false]
"config/уарэп-яу07-2н"=["10.1.1.21", 50021.0, false, false]
"config/уарэп-яу07-3в"=["10.1.1.32", 50032.0, false, false]
"config/уарэп-яу07-3к"=["10.1.1.33", 50033.0, false, false]
"config/уарэп-яу07-3н"=["10.1.1.31", 50031.0, false, false]
"config/уарэп-яу07-4в"=["10.1.1.42", 50042.0, false, false]
"config/уарэп-яу07-4к"=["10.1.1.43", 50043.0, false, false]
"config/уарэп-яу07-4н"=["10.1.1.41", 50041.0, false, false]
"config/уарэп-яу07-общий"=["*", 50000.0, true, true]
"config/уарэп-яу07-частный"=["10.1.1.253", 50253.0, false, true]
config/="[0.215686276555061,0.976470589637756,1.0,1.0]"
"config/Цвет темы программы"=false
[autoload]

View File

@@ -92,9 +92,14 @@ func _enter_tree() -> void:
$back.scale = size
$back.material.set('shader_parameter/scale', size / Vector2(20.0, 20.0))
$button.connect('toggled', _on_button_toggled)
ProjectSettings.connect("settings_changed", _on_settings_changed)
pressed = _pressed
func _on_settings_changed():
apply_colors(ProjectSettings.get_setting("application/config/Цвет темы программы", false ))
func _exit_tree() -> void:
$button.disconnect('toggled', _on_button_toggled)
@@ -106,3 +111,19 @@ func set_toggle_mode(val: bool):
func _on_button_toggled(val: bool):
if val: $state.set_texture(texture_state1)
else: $state.set_texture(texture_state0)
func apply_colors(is_light: bool):
pass
#if is_light:
#$button.add_theme_color_override("font_color", Color.WHITE)
#$button.add_theme_color_override("font_hover_color", Color.WHITE)
#$button.add_theme_color_override("font_pressed_color", Color.WHITE)
#$button.add_theme_color_override("font_focus_color", Color.BLACK)
#$button.add_theme_color_override("font_disabled_color", Color.WHITE)
#$button.add_theme_color_override("font_shadow_color", Color.LIGHT_GOLDENROD)
#else:
#$button.remove_theme_color_override("font_color")
#$button.remove_theme_color_override("font_hover_color")
#$button.remove_theme_color_override("font_pressed_color")
#$button.remove_theme_color_override("font_disabled_color")

View File

@@ -4,11 +4,13 @@ extends ScrollContainer
## Отображает список помех в таблице.
const CellLineEdit = preload('res://table/ячейка-2.tscn') ## Ячейка таблицы.
const TableHeader = preload('res://table/header.tscn') ## Ячейка заголовок таблицы.
const EmitLed = preload('res://scenes/frame-threats/emit-led.tscn') ## Ячейка символа излучения
const TABLE_HEADER = [ TableHeader, TableHeader, TableHeader , TableHeader , TableHeader ] ## Описание ряда заголовка.
const TABLE_ROW = [ CellLineEdit, CellLineEdit, CellLineEdit , CellLineEdit , EmitLed ] ## Описание ряда.
const TABLE_HEADERS_TEXT = ['', 'Название', 'Пеленг', 'Состояние' , 'Излучение' ] ## Заголовки таблицы.
const TABLE_COLUMN_SIZE = [ 65, 80, 80, 130 , 90 ] ## Ширины колонок.
const TABLE_HEADER = [ TableHeader, TableHeader, TableHeader , TableHeader ] ## Описание ряда заголовка.
const TABLE_ROW = [ CellLineEdit, CellLineEdit, CellLineEdit , CellLineEdit ] ## Описание ряда.
const TABLE_HEADERS_TEXT = ['', 'Название', 'Пеленг', 'Состояние' ] ## Заголовки таблицы.
const TABLE_COLUMN_SIZE = [ 65, 100, 90, 170 ] ## Ширины колонок.
## Состояние выполнения сеанса помехи
const INTERFER_STATE = {
@@ -45,8 +47,11 @@ const COLUMN_NUMBER = 0
const COLUMN_NAME = 1
const COLUMN_AOA = 2
const COLUMN_STATE = 3
const COLUMN_EMITED = 4
const TABLE_TEXT_ROWS = 4
var course = 0.0 ## Курс корабля
var color_emit: Color
func on_rto_threat_unsel(_th_id): $table.clear_rows_selected()
@@ -91,6 +96,7 @@ func _ready():
call_deferred('init_table')
var unit_nav = network.get_unit_instance('навигация')
unit_nav.connect('data_received', on_navi_data_received)
ProjectSettings.connect('settings_changed', on_settings_changed)
func init_table():
@@ -102,9 +108,19 @@ func init_table():
func on_interfer_update(ecm, table_index):
var row = map_th_to_row(ecm)
if table_index.has(ecm.ispp):
var i_row = table_index[ecm.ispp]
$table.set_row_text(i_row, row)
if not table_index.has(ecm.ispp): return
var i_row = table_index[ecm.ispp]
$table.set_row_text(i_row, row)
var power: bool = prd.get_fs_power(ecm.nmfs)
var emit_node = $table.get_node2(COLUMN_EMITED, i_row)
var emit_txr = emit_node.get_node('texture-led')
emit_txr.position.x = 40.0
ecm.active = power
if power:
emit_txr.visible = true
emit_txr.self_modulate = color_emit
else:
emit_txr.visible = false
func on_interfer_new(ecm, table_index):
@@ -116,7 +132,7 @@ func on_interfer_new(ecm, table_index):
var i_row = $table.get_rows_count()
$table.add_row(TABLE_ROW)
$table.set_row_text(i_row, row)
$table.set_row_editable(i_row, false)
disable_edit($table, TABLE_TEXT_ROWS, i_row)
$table.set_node_user_data(0, i_row, ecm)
table_index[ecm.ispp] = i_row
$table.clear_rows_selected()
@@ -149,7 +165,7 @@ func rehash(table_index: Dictionary):
## Преобразует цель в строку таблицы
func map_th_to_row(ecm) -> Array:
var row: = Array()
row.resize(TABLE_ROW.size())
row.resize(TABLE_ROW.size() - 1)
row[COLUMN_NUMBER] = '%s' % ecm.ispp
row[COLUMN_NAME] = ''
if INTERFER_NAMES.has(ecm.krp):
@@ -175,3 +191,19 @@ func on_interfer_recommendate(ecm):
func on_navi_data_received(data: Dictionary):
course = data.get('k', 0.0)
func on_settings_changed():
var json_col = ProjectSettings.get_setting('application/config/%s' % 'Цвет кнопки \"Подавление\"', '[1.0, 1.0, 1.0, 1.0]')
var arr_col = JSON.parse_string(json_col)
color_emit = Color(arr_col[0], arr_col[1], arr_col[2], arr_col[3])
## Отключает возможность редактирования LineEdit в таблице.[br]
## [param tbl] - таблица,[br]
## [param num_col] - номер колонки,[br]
## [param i_row] - номер столбца.[br]
func disable_edit(tbl, num_col: int, i_row: int):
for col in num_col:
var node: LineEdit = tbl.get_node2(col, i_row)
node.editable = false

View File

@@ -1,6 +1,6 @@
[gd_scene load_steps=2 format=3 uid="uid://d012h4hxf2anf"]
[ext_resource type="Texture2D" uid="uid://b3woliae871je" path="res://data/отметка-неопред.png" id="1_0a4l0"]
[ext_resource type="Texture2D" uid="uid://blx6c1o1nogks" path="res://data/связь.png" id="1_0a4l0"]
[node name="emit-led" type="Control"]
layout_mode = 3
@@ -14,10 +14,11 @@ layout_mode = 1
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
offset_left = 26.0
offset_top = 11.0
offset_right = 3.0
offset_bottom = -12.0
offset_left = 25.0
offset_top = 15.0
offset_right = 17.0
offset_bottom = 7.0
grow_horizontal = 2
grow_vertical = 2
scale = Vector2(0.3, 0.3)
texture_normal = ExtResource("1_0a4l0")

View File

@@ -5,7 +5,7 @@ class_name scroll_threats extends ScrollContainer
const CellLineEdit = preload('res://table/ячейка-2.tscn') ## Ячейка таблицы.
const TableHeader = preload('res://table/header.tscn') ## Ячейка заголовок таблицы.
const EmitLed = preload('res://scenes/frame-threats/emit-led.tscn') ## Ячейка заголовок таблицы.
const EmitLed = preload('res://scenes/frame-threats/emit-led.tscn') ## Ячейка символа излучения
const TABLE_HEADER = [ TableHeader, TableHeader, TableHeader, TableHeader , TableHeader ] ## Описание ряда заголовка.
const TABLE_ROW = [ CellLineEdit, CellLineEdit, CellLineEdit, CellLineEdit, EmitLed ] ## Описание ряда.
@@ -16,6 +16,8 @@ const TABLE_COLUMN_SIZE = [ 65, 70, 110, 140,
const TABLE_TEXT_ROWS = 4
const EMIT_STATE_COL = 4
var color_emit: Color
## Снимает выделение цели.
func on_rto_threat_unsel(_th_id): $table.clear_rows_selected()
@@ -49,6 +51,7 @@ func _ready() -> void:
signaller.connect('rto_threat_sel', Callable(self, 'on_rto_threat_sel').bind($table))
signaller.connect('rto_threat_unsel', Callable(self, 'on_rto_threat_unsel'))
$table.connect('row_pressed', Callable(self, 'on_row_pressed'))
ProjectSettings.connect('settings_changed', on_settings_changed)
call_deferred('init_table')
@@ -74,7 +77,7 @@ func on_threat_update(th, table_index: Dictionary):
emit_txr.self_modulate = Color.ORANGE
elif th.emit_state == 2:
emit_txr.visible = true
emit_txr.self_modulate = Color.RED
emit_txr.self_modulate = color_emit
@@ -128,3 +131,9 @@ func disable_edit(tbl, num_col: int, i_row: int):
for col in num_col:
var node: LineEdit = tbl.get_node2(col, i_row)
node.editable = false
func on_settings_changed():
var json_col = ProjectSettings.get_setting('application/config/%s' % 'Цвет кнопки \"Подавление\"', '[1.0, 1.0, 1.0, 1.0]')
var arr_col = JSON.parse_string(json_col)
color_emit = Color(arr_col[0], arr_col[1], arr_col[2], arr_col[3])

View File

@@ -23,3 +23,17 @@ func _enter_tree() -> void:
func on_setting_changed():
var ext_cu = ProjectSettings.get_setting('application/config/Внешнее управление', false)
get_parent().get_node('remote_control').visible = ext_cu
apply_colors()
func apply_colors():
var is_light: bool = ProjectSettings.get_setting("application/config/Цвет темы программы", false)
var style = StyleBoxFlat.new()
if is_light:
style.bg_color = Color.DARK_GRAY
add_theme_stylebox_override("tabbar_background", style)
add_theme_stylebox_override("panel", style)
else:
style.bg_color = Color(0.12, 0.12, 0.12)
add_theme_stylebox_override("tabbar_background", style)
add_theme_stylebox_override("panel", style)

View File

@@ -16,9 +16,7 @@
[sub_resource type="StyleBoxEmpty" id="StyleBoxEmpty_cw2ss"]
[sub_resource type="StyleBoxEmpty" id="StyleBoxEmpty_nmdfd"]
[sub_resource type="StyleBoxEmpty" id="StyleBoxEmpty_vap7n"]
[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_vap7n"]
[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_o1r22"]
@@ -33,17 +31,14 @@ bg_color = Color(0, 100, 0, 1)
[node name="panel" type="Panel"]
offset_right = 1600.0
offset_bottom = 1200.0
theme_override_styles/panel = SubResource("StyleBoxEmpty_tidwt")
[node name="tab_switch" type="TabContainer" parent="."]
layout_mode = 0
offset_right = 1600.0
offset_bottom = 1200.0
tooltip_text = "Переключает режимы работы программы"
theme_override_styles/tab_focus = SubResource("StyleBoxEmpty_41d34")
theme_override_styles/tab_disabled = SubResource("StyleBoxEmpty_cw2ss")
theme_override_styles/tabbar_background = SubResource("StyleBoxEmpty_nmdfd")
theme_override_styles/panel = SubResource("StyleBoxEmpty_vap7n")
theme_override_styles/tabbar_background = SubResource("StyleBoxFlat_vap7n")
theme_override_styles/panel = SubResource("StyleBoxFlat_vap7n")
current_tab = 0
script = ExtResource("1_fg0vd")

View File

@@ -29,7 +29,7 @@ const TILE_REQUEST_NAME: = 'tile_request_%d'
@onready var scale_label: String
@onready var coordinates_label: String
@onready var threat_mark: PackedScene = load("res://scenes/tilemap/threat.tscn")
@onready var ship_mark: PackedScene = load("res://scenes/tilemap/ship_mark.tscn")
@onready var ship_mark: PackedScene = load("res://scenes/tilemap/ship-mark.tscn")
var ship_id := 9999
var ship_instance: Node2D = null
const default_size: = 400.0

View File

@@ -18,13 +18,13 @@
[ext_resource type="Texture2D" uid="uid://00871pb6moln" path="res://data/прогресс-фон-1.png" id="9_w6m6a"]
[ext_resource type="Texture2D" uid="uid://c1k856fxhrjnh" path="res://data/прогресс-заполнение-1.png" id="10_lbx5w"]
[ext_resource type="Texture2D" uid="uid://u7h3l0jjrsnp" path="res://data/У-УФ.png" id="11_gjf0t"]
[ext_resource type="Script" uid="uid://bncy1x53jp73d" path="res://scenes/контроль/connect_pribor.gd" id="11_u7tym"]
[ext_resource type="Script" uid="uid://bncy1x53jp73d" path="res://scenes/контроль/connect-pribor.gd" id="11_u7tym"]
[ext_resource type="Texture2D" uid="uid://vdhmga62vjsj" path="res://data/АФСП-РТР.png" id="13_32yvq"]
[ext_resource type="Texture2D" uid="uid://dm350ta8noa0v" path="res://data/У-РЭП-РПД-К.png" id="16_32yvq"]
[ext_resource type="Texture2D" uid="uid://c3cyog3gy24ft" path="res://data/У-ЭП.png" id="16_gjf0t"]
[ext_resource type="Script" uid="uid://xjs7owe2iexn" path="res://scenes/контроль/control_prd.gd" id="18_lbx5w"]
[ext_resource type="Script" uid="uid://xjs7owe2iexn" path="res://scenes/контроль/control-prd.gd" id="18_lbx5w"]
[ext_resource type="Texture2D" uid="uid://b2vf7en1jj8dv" path="res://data/У-РЭП-РПД-В.png" id="20_l5wui"]
[ext_resource type="Script" uid="uid://j16hg3u2uvu5" path="res://scenes/контроль/panel_container.gd" id="21_l5wui"]
[ext_resource type="Script" uid="uid://j16hg3u2uvu5" path="res://scenes/контроль/panel-container.gd" id="21_l5wui"]
[ext_resource type="Texture2D" uid="uid://cllxcfa130vqu" path="res://data/УА-РЭП.png" id="22_1s34a"]
[sub_resource type="GDScript" id="GDScript_iqgf5"]
@@ -110,7 +110,6 @@ func _ready():
uf_control = UFControl.new('уарэп-эмс')
signaller.connect('update_uf_serviceability', Callable(self, 'on_update_uf_serviceability').bind(pribor_node))
# Пиктограммы приборов, которые отображают состояние подключения только
for pribor_node in get_tree().get_nodes_in_group('pribor_pics'):
var unit_name = pribor_node.get_meta('unit_name')

View File

@@ -66,8 +66,9 @@ const SETTING_TABLE = [
['Цвет кнопки \"Подавление\"', TableEdit, TableColorPick, 'Цвет кнопки. Введено по требованию ПЗ' ], # 54
['Цвет фона схемы', TableEdit, TableColorPick, 'Схема прибора Э2. Изменение цвет фона'], # 55
['Цвет схемы', TableEdit, TableColorPick, 'Схема прибора Э2. Изменение цвет схемы '], # 56
['Коэффициент ширины полосы излучения', TableEdit, TableEdit, 'Изменение ширины полосы излучения помехи в зависимости от цели'], # 57
['Время повторной отправки помехи', TableEdit, TableEdit, 'Изменение времени повторной отправки помехи'] ] # 58
['Цвет темы программы', TableEdit, TableToggle, 'ВЫКЛ - темная тема, ВКЛ - светлая тема'], # 57
['Коэффициент ширины полосы излучения', TableEdit, TableEdit, 'Изменение ширины полосы излучения помехи в зависимости от цели'], # 58
['Время повторной отправки помехи', TableEdit, TableEdit, 'Изменение времени повторной отправки помехи'] ] # 59
## TODO: Придумать как избавиться от индексов
@@ -83,12 +84,14 @@ const GOS_BTN = 52 ## Разрешить работу по своим ц
const COLOR_BTN_ACT = 54 ## Цвет кнопки "Подавление"
const COLOR_WHITE = 55 ## Цвет фона схемы
const COLOR_BLACK = 56 ## Цвет схемы
const COLOR_THEME = 57 ## Цвет темы
var name_to_line_index: = {} ## Для преобразования названия параметра в номер строки
var table_color_instance: Node ## Нода цвета кнопки подавления
func on_checkbutton_pressed(i_row: int): on_row_pressed(i_row)
func on_checkbutton_pressed(i_row: int):
on_row_pressed(i_row)
## Вызывается, когда узел впервые попадает в дерево сцены.
@@ -105,28 +108,34 @@ func on_external_cu_btn_pressed(btn) -> void:
ProjectSettings.set_setting('application/config/Внешнее управление', btn.button_pressed)
if btn.button_pressed:
signaller.emit_signal('interfer_off_all')
_autosave_now()
func on_trassa_btn_pressed(btn) -> void:
ProjectSettings.set_setting('application/config/Внешнее указание Трасса', btn.button_pressed)
_autosave_now()
func on_vk_pressed(btn) -> void:
signaller.emit_signal('kb_pressed', btn.button_pressed)
_autosave_now()
func on_gos_pressed(btn) -> void:
ProjectSettings.set_setting('application/config/Включить работу по своим целям', btn.button_pressed)
_autosave_now()
func on_ems2_pressed(btn) -> void:
var state = btn.button_pressed
signaller.emit_signal('ems2_hide_pressed', state)
_autosave_now()
func on_debag_control_pressed(btn) -> void:
var state = btn.button_pressed
signaller.emit_signal("debag_control_pressed", state)
_autosave_now()
func on_row_pressed(i_row: int):
@@ -199,6 +208,7 @@ func setting_tab():
child.connect('pressed', Callable(self, 'on_checkbutton_pressed').bind(i))
var val = ProjectSettings.get_setting('application/config/%s' % param_name, true)
child.set_pressed(val)
child.pressed.connect(_autosave_now)
else:
if settings_data.has(param_name):
var val = settings_data[param_name]
@@ -207,6 +217,7 @@ func setting_tab():
if edit_node:
if edit_node is LineEdit:
$scroll_set/table.set_node_control(1, i, true)
edit_node.focus_exited.connect(_autosave_now)
$scroll_set/table.set_node_editable(1, COMMIT, false)
$scroll_set/table.set_columns_min_size([600, 950])
$scroll_set/table.set_columns_alignments(ALIGNMENT)
@@ -268,8 +279,16 @@ func button_settings():
var arr_col_b = JSON.parse_string(json_col_b)
color_black.color = Color(arr_col_b[0], arr_col_b[1], arr_col_b[2], arr_col_b[3]) if arr_col_b else Color.WHITE_SMOKE
color_black.text = JSON.stringify(arr_col_b)
var theme_node = $scroll_set/table.get_node2(1, COLOR_THEME).get_children()[0]
theme_node.connect("pressed", on_theme_toggle_pressed.bind(theme_node))
on_theme_toggle_pressed(theme_node)
func on_theme_toggle_pressed(btn: CheckButton) -> void:
var is_light = btn.button_pressed
ProjectSettings.set_setting("application/config/Цвет темы программы", is_light)
_autosave_now()
func _update_theme_colors():
var color_white = $scroll_set/table.get_node2(1, COLOR_WHITE)
var color_black = $scroll_set/table.get_node2(1, COLOR_BLACK)
@@ -281,21 +300,24 @@ func on_color_closed_w(color_white: ColorPickerButton):
var col_w = [color_white.color.r, color_white.color.g, color_white.color.b, color_white.color.a]
color_white.text = JSON.stringify(col_w)
ProjectSettings.set_setting('application/config/%s' % 'Цвет фона схемы', color_white.text)
_autosave_now()
func on_color_closed_b(color_black: ColorPickerButton):
var col_b = [color_black.color.r, color_black.color.g, color_black.color.b, color_black.color.a]
color_black.text = JSON.stringify(col_b)
ProjectSettings.set_setting('application/config/%s' % 'Цвет схемы', color_black.text)
_autosave_now()
func on_color_closed(color_btn_act: ColorPickerButton):
var col = [color_btn_act.color.r, color_btn_act.color.g, color_btn_act.color.b, color_btn_act.color.a]
color_btn_act.text = JSON.stringify(col)
ProjectSettings.set_setting('application/config/%s' % 'Цвет кнопки \"Подавление\"', color_btn_act.text)
_autosave_now()
func _on_btn_save_settings_pressed():
func _autosave_now() -> void:
var json_data = {}
for i in SETTING_TABLE.size():
var parameter = SETTING_TABLE[i][0]

View File

@@ -1,21 +1,7 @@
[gd_scene load_steps=7 format=3 uid="uid://bnptm4rlp60dq"]
[gd_scene load_steps=3 format=3 uid="uid://bnptm4rlp60dq"]
[ext_resource type="Script" uid="uid://dabpum5iqxc7y" path="res://scenes/настройки/настройки.gd" id="1_60bya"]
[ext_resource type="Script" uid="uid://c5pq0hbrij34d" path="res://table/table.gd" id="2_6sx73"]
[ext_resource type="Texture2D" uid="uid://csnts8f155sf7" path="res://data/save1.png" id="3_dbpks"]
[sub_resource type="StyleBoxTexture" id="StyleBoxTexture_pyq6h"]
texture = ExtResource("3_dbpks")
modulate_color = Color(0.8, 0.533333, 0.27451, 1)
[sub_resource type="StyleBoxTexture" id="StyleBoxTexture_l5g3r"]
texture = ExtResource("3_dbpks")
expand_margin_left = 20.0
expand_margin_top = 20.0
modulate_color = Color(0.8, 0.533333, 0.27451, 1)
[sub_resource type="StyleBoxTexture" id="StyleBoxTexture_tbxk6"]
texture = ExtResource("3_dbpks")
[node name="Настройки" type="Panel"]
script = ExtResource("1_60bya")
@@ -33,26 +19,8 @@ layout_mode = 0
offset_left = 16.0
offset_top = 44.0
offset_right = 1584.0
offset_bottom = 988.0
offset_bottom = 1144.0
[node name="table" type="GridContainer" parent="scroll_set"]
layout_mode = 2
script = ExtResource("2_6sx73")
[node name="btn_save" type="Button" parent="."]
layout_mode = 0
offset_left = 1523.0
offset_top = 1057.0
offset_right = 2035.0
offset_bottom = 1569.0
scale = Vector2(0.1, 0.1)
tooltip_text = "Сохранить настройки"
focus_mode = 0
theme_override_styles/focus = SubResource("StyleBoxTexture_pyq6h")
theme_override_styles/disabled = SubResource("StyleBoxTexture_pyq6h")
theme_override_styles/hover_pressed = SubResource("StyleBoxTexture_pyq6h")
theme_override_styles/hover = SubResource("StyleBoxTexture_pyq6h")
theme_override_styles/pressed = SubResource("StyleBoxTexture_l5g3r")
theme_override_styles/normal = SubResource("StyleBoxTexture_tbxk6")
[connection signal="pressed" from="btn_save" to="." method="_on_btn_save_settings_pressed"]

View File

@@ -135,9 +135,13 @@ func on_user_panning(): $btn_center.button_pressed = false
func on_settings_changed():
var json_col = ProjectSettings.get_setting('application/config/%s' % 'Цвет кнопки \"Подавление\"', '[1.0, 1.0, 1.0, 1.0]')
var arr_col = JSON.parse_string(json_col)
col_btn_act = Color(arr_col[0], arr_col[1], arr_col[2], arr_col[3]) if arr_col else Color.WHITE
gos_flag = ProjectSettings.get_setting('application/config/Включить работу по своим целям', true)
color_emit = ProjectSettings.get_setting('application/interfer/emit_color', Color(0.58, 0.47, 0.51, 1.0))
color_ecm = ProjectSettings.get_setting('application/interfer/interfer_color', Color(0.58, 0.47, 0.51, 1.0))
color_emit = Color(arr_col[0], arr_col[1], arr_col[2], 1.0)
color_ecm = Color(arr_col[0], arr_col[1], arr_col[2], 1.0)
color_select = ProjectSettings.get_setting('application/interfer/select_color', Color(1.0, 1.0, 1.0, 1.0))
color_closed = ProjectSettings.get_setting('application/interfer/closed_sectors', Color(0.0, 0.0, 0.0, 1.0))
min_zoom = ProjectSettings.get_setting('application/config/map_minimum_zoom', 5)
@@ -151,10 +155,6 @@ func on_settings_changed():
color_closed *= Color(1.0, 1.0, 1.0, 0.0)
color_closed_emit *= Color(1.0, 1.0, 1.0, 1.0)
var json_col = ProjectSettings.get_setting('application/config/%s' % 'Цвет кнопки \"Подавление\"', '[1.0, 1.0, 1.0, 1.0]')
var arr_col = JSON.parse_string(json_col)
col_btn_act = Color(arr_col[0], arr_col[1], arr_col[2], arr_col[3]) if arr_col else Color.WHITE
## Обработчик сигнала изменения списка целей.
func on_threats_resized(ths: Dictionary):
@@ -567,7 +567,7 @@ func set_fs_color(ecms):
continue
if ecm.krp != interfer.INTERFER_OFF:
fs_active[prd.fs_caps_id[ecm.nmfs]] = null
if ecm.svk == SVK_EMIT:
if ecm.active:
fs_emit[prd.fs_caps_id[ecm.nmfs]] = null
update_fs_colors()

View File

@@ -5,7 +5,7 @@
[ext_resource type="PackedScene" uid="uid://dem3fcec25awh" path="res://scenes/grid-side-panel/grid-side-panel.tscn" id="3_s2j0e"]
[ext_resource type="PackedScene" uid="uid://cnkbk53mi7viu" path="res://scenes/grid-buttons-ecm/grid-buttons-ecm.tscn" id="5_2jnbs"]
[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://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="Texture2D" uid="uid://c1785x8wf1hdg" path="res://data/power-0.png" id="10_cnr1s"]
[ext_resource type="PackedScene" uid="uid://ceknxxfu1loo5" path="res://scenes/tilemap/tilemap.tscn" id="10_gtwyg"]

View File

@@ -135,6 +135,7 @@ class Interfer:
var um: float ## Угол места для помехи.
var nmfs: int = 0 ## Номер модуля ФС в нумерации СТЦ
var priority: int = 0 ## Приоритет помехи
var active: bool = false ## Флаг, что фиксируется мощность на выходном усилителе
func _to_string() -> String:
return 'номер: %d название: %s частота: %0.1f МГц пеленг: %0.1f гр.' % [ispp, ITERFER_MODE[krp][0], params['freq'], kni]

View File

@@ -3,6 +3,7 @@ extends Node
enum PrdState {WORK, CONTROL}
const TIME_YAU07_SEND = 50
const MIN_UM_POWER = 200 ## минимальная мощность с усилителя, что бы отобразить значёк излучения
## Границы секторов блоков ФС по частоте в режиме РТО.
const FS_BAND_RTO: Dictionary = {
@@ -86,10 +87,10 @@ const FS_PRD: Dictionary = {
26: ['уарэп-яу07-3к', 37],
27: ['уарэп-яу07-2к', 27], }
var fs_dict: Dictionary ## Словарь с модулями ФС
var prd_dict: Dictionary ## Словарь с приборами ПРД
var course = 0.0 ## Курс корабля
var fs_caps_id: Dictionary ## Словарь соответствия номеров ФС от КАПС РПБ внутрипрограммной нумерации
var fs_dict: Dictionary ## Словарь с модулями ФС
var prd_dict: Dictionary ## Словарь с приборами ПРД
var course = 0.0 ## Курс корабля
var fs_caps_id: Dictionary ## Словарь соответствия номеров ФС от КАПС РПБ внутрипрограммной нумерации
class Fs:
@@ -124,14 +125,17 @@ class Fs:
var ready: bool = false ## Готовность сектора к излучению
var caps_online: bool = false ## Состояние связи с КАПС РПБ
var yau_07_online: bool = false ## Состояние связи ЯУ-07
var lit: int ## Литера ФС
var power: bool = false ## Признак излучения усилителей
signal update_modulation(index)
func _init(i, p_name):
prd_name = p_name
index = i
if UM_PORTS.has(index/4):
um_port = UM_PORTS[index/4]
lit = index/4
if UM_PORTS.has(lit):
um_port = UM_PORTS[lit]
func set_modulation(val):
modulation = val
@@ -158,6 +162,14 @@ class Fs:
func set_ready():
ready = isg and caps_online and yau_07_online
func set_power(power_arr: Array):
power = false
for val in power_arr:
if val > MIN_UM_POWER:
power = true
break
class PRD:
enum STATE_DEVICE {
NONE,
@@ -502,3 +514,13 @@ func on_yau07_line_changed(unit_yau07, prd_pribor):
fs.yau_07_online = unit_yau07.online
fs.set_ready()
signaller.emit_signal('fs_update_state', fs_dict)
func get_fs_power(nmfs: int):
if not fs_caps_id.has(nmfs): return false
var fs_index: int = fs_caps_id[nmfs]
var prd_obj: PRD = prd_dict[FS_PRD[fs_index][0]]
var fs: Fs = prd_obj.fs_dic[fs_index]
var power_arr: Array = prd_obj.unit_control.power_um_ukp(prd_obj.unit_yau07.status, fs.lit + 1, [], true)
fs.set_power(power_arr)
return fs.power

View File

@@ -310,7 +310,7 @@ func on_data_received(unit_pribor: Object) -> void:
if interes == 'RAY_CTRL':
count_packets_power += 1
elif interes != '':
tek_litera[_get_ray_key(state)] = power_um_ukp(status, current_litera, tek_litera[_get_ray_key(state)])
tek_litera[_get_ray_key(state)] = power_um_ukp(status, current_litera, tek_litera[_get_ray_key(state)], false)
power_for_litera[current_litera] = tek_litera
count_packets_power += 1
@@ -1158,50 +1158,52 @@ static func _should_apply_rule(fs_num: int, rule: Dictionary, results: Dictionar
## Получение мощности при выполнении контроля
static func power_um_ukp(status: PackedByteArray, litera: int, pwr_result: Array) -> Array:
static func power_um_ukp(status: PackedByteArray, litera: int, pwr_result: Array, mode_work: bool) -> Array:
const Constants: Dictionary = {'POWER_UKP_1' : 31, 'POWER_UKP_2': 63}
var power_values: Array = []
var base_offset = 0
var iteration: int = 6
var ug_valid: bool = (status[0] >> 2) & 1
if not len(status): return power_values
var ukp1_valid: bool = (status[0] >> 2) & 1
var ukp2_valid: bool = (status[0] >> 3) & 1
match litera:
1:
var value = status.decode_u16(Constants.POWER_UKP_1 + 2 * 7)
if ug_valid:
if ukp1_valid:
power_values = [value]
2:
base_offset = Constants.POWER_UKP_1
if ug_valid:
if ukp1_valid:
for i in iteration:
power_values.append(status.decode_u16(base_offset + 2 * i))
3:
base_offset = Constants.POWER_UKP_2
if ug_valid:
if ukp2_valid:
for i in iteration:
power_values.append(status.decode_u16(base_offset + 2 * i))
4:
base_offset = Constants.POWER_UKP_1
if ug_valid:
if ukp1_valid:
for i in iteration:
power_values.append(status.decode_u16(base_offset + 2 * i))
5:
base_offset = Constants.POWER_UKP_2
if ug_valid:
if ukp2_valid:
for i in iteration:
power_values.append(status.decode_u16(base_offset + 2 * i))
6:
base_offset = Constants.POWER_UKP_1
if ug_valid:
if ukp1_valid:
for i in iteration:
power_values.append(status.decode_u16(base_offset + 2 * i))
7:
base_offset = Constants.POWER_UKP_2
if ug_valid:
if ukp2_valid:
for i in iteration:
power_values.append(status.decode_u16(base_offset + 2 * i))
power_values = update_max_power_values(power_values, pwr_result)
if not mode_work:
power_values = update_max_power_values(power_values, pwr_result)
return power_values

19
table/editl.gd Normal file
View File

@@ -0,0 +1,19 @@
extends LineEdit
func _enter_tree() -> void:
ProjectSettings.connect('settings_changed', apply_colors)
func apply_colors():
var is_light: bool = ProjectSettings.get_setting("application/config/Цвет темы программы", false)
var style = get_theme_stylebox("read_only").duplicate()
if is_light:
style.bg_color = Color.GRAY
add_theme_color_override("font_color_readonly", Color.BLACK)
add_theme_color_override("font_color_placeholder", Color(0, 0, 0, 0.5))
else:
style.bg_color = Color(0.12, 0.12, 0.12)
add_theme_color_override("font_color_readonly", Color("#D8731A")) # тёмно-оранжевый
add_theme_color_override("font_color_placeholder", Color(1, 1, 1, 0.5))
add_theme_stylebox_override("read_only", style)

1
table/editl.gd.uid Normal file
View File

@@ -0,0 +1 @@
uid://bky7xlpaj21sj

View File

@@ -1,7 +1,10 @@
[gd_scene format=3 uid="uid://bvbvtgwps54yr"]
[gd_scene load_steps=2 format=3 uid="uid://bvbvtgwps54yr"]
[ext_resource type="Script" uid="uid://bky7xlpaj21sj" path="res://table/editl.gd" id="1_xd53c"]
[node name="Editl" type="LineEdit"]
offset_right = 59.875
offset_bottom = 33.0
caret_blink = true
caret_blink_interval = 0.5
script = ExtResource("1_xd53c")

15
table/lable.gd Normal file
View File

@@ -0,0 +1,15 @@
extends Label
func _enter_tree() -> void:
ProjectSettings.connect('settings_changed', apply_colors)
func apply_colors():
var is_light: bool = ProjectSettings.get_setting("application/config/Цвет темы программы", false)
var style = get_theme_stylebox("normal").duplicate()
if is_light:
style.bg_color = Color.GRAY
else:
style.bg_color = Color(0.12, 0.12, 0.12)
add_theme_stylebox_override("normal", style)

1
table/lable.gd.uid Normal file
View File

@@ -0,0 +1 @@
uid://bjw0gwcqxx30d

View File

@@ -1,4 +1,6 @@
[gd_scene load_steps=2 format=3 uid="uid://dwphmxstaxn4v"]
[gd_scene load_steps=3 format=3 uid="uid://dwphmxstaxn4v"]
[ext_resource type="Script" uid="uid://bjw0gwcqxx30d" path="res://table/lable.gd" id="1_xk0u2"]
[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_yign5"]
bg_color = Color(0.117647, 0.117647, 0.117647, 0.85098)
@@ -14,3 +16,4 @@ offset_right = 104.0
offset_bottom = 27.0
theme_override_colors/font_color = Color(1, 0.596078, 0.4, 1)
theme_override_styles/normal = SubResource("StyleBoxFlat_yign5")
script = ExtResource("1_xk0u2")

19
table/node.gd Normal file
View File

@@ -0,0 +1,19 @@
extends LineEdit
func _enter_tree() -> void:
ProjectSettings.connect('settings_changed', apply_colors)
func apply_colors():
var is_light: bool = ProjectSettings.get_setting("application/config/Цвет темы программы", false)
var style = get_theme_stylebox("read_only").duplicate()
if is_light:
style.bg_color = Color.GRAY
add_theme_color_override("font_color_readonly", Color.BLACK)
add_theme_color_override("font_color_placeholder", Color(0, 0, 0, 0.5))
else:
style.bg_color = Color(0.12, 0.12, 0.12)
add_theme_color_override("font_color_readonly", Color("#D8731A")) # тёмно-оранжевый
add_theme_color_override("font_color_placeholder", Color(1, 1, 1, 0.5))
add_theme_stylebox_override("read_only", style)

1
table/node.gd.uid Normal file
View File

@@ -0,0 +1 @@
uid://c71233c2tqc2u

View File

@@ -1,4 +1,6 @@
[gd_scene format=3 uid="uid://c1i4rwaajq7d5"]
[gd_scene load_steps=2 format=3 uid="uid://c1i4rwaajq7d5"]
[ext_resource type="Script" uid="uid://c71233c2tqc2u" path="res://table/node.gd" id="1_oh3pj"]
[node name="Label" type="LineEdit"]
offset_right = 121.0
@@ -8,3 +10,4 @@ editable = false
context_menu_enabled = false
caret_blink = true
caret_blink_interval = 0.1
script = ExtResource("1_oh3pj")

28
table/set-toggle.gd Normal file
View File

@@ -0,0 +1,28 @@
extends LineEdit
var checkbutton_material: Material
func _enter_tree() -> void:
ProjectSettings.connect('settings_changed', on_setting_changed)
func on_setting_changed():
var cb = $CheckButton
checkbutton_material = cb.material
apply_colors()
func apply_colors():
var is_light: bool = ProjectSettings.get_setting("application/config/Цвет темы программы", false)
var style = get_theme_stylebox("read_only").duplicate()
if is_light:
style.bg_color = Color.GRAY
else:
style.bg_color = Color(0.12, 0.12, 0.12)
add_theme_stylebox_override("read_only", style)
var cb = $CheckButton
if is_light:
cb.material = null
else:
cb.material = checkbutton_material

1
table/set-toggle.gd.uid Normal file
View File

@@ -0,0 +1 @@
uid://btvrqnnjjum20

View File

@@ -1,22 +1,33 @@
[gd_scene load_steps=4 format=3 uid="uid://dgidt8lifm7xe"]
[gd_scene load_steps=8 format=3 uid="uid://dgidt8lifm7xe"]
[ext_resource type="Script" uid="uid://btvrqnnjjum20" path="res://table/set-toggle.gd" id="1_kvru5"]
[ext_resource type="Shader" uid="uid://bw5mmbgeycwua" path="res://shaders/color-invers.gdshader" id="2_wrw87"]
[sub_resource type="StyleBoxEmpty" id="StyleBoxEmpty_f4oye"]
[sub_resource type="ShaderMaterial" id="ShaderMaterial_wrw87"]
shader = ExtResource("2_wrw87")
[sub_resource type="StyleBoxEmpty" id="StyleBoxEmpty_t3fqw"]
[sub_resource type="Theme" id="Theme_odxqp"]
CheckButton/styles/focus = SubResource("StyleBoxEmpty_t3fqw")
[sub_resource type="StyleBoxEmpty" id="StyleBoxEmpty_kvru5"]
[node name="LineEdit" type="LineEdit"]
offset_right = 85.0
offset_bottom = 27.0
theme_override_styles/focus = SubResource("StyleBoxEmpty_f4oye")
editable = false
script = ExtResource("1_kvru5")
[node name="CheckButton" type="CheckButton" parent="."]
material = SubResource("ShaderMaterial_wrw87")
layout_mode = 0
offset_left = 21.0
offset_top = 1.0
offset_right = 65.0
offset_bottom = 25.0
theme = SubResource("Theme_odxqp")
theme_override_styles/focus = SubResource("StyleBoxEmpty_kvru5")

28
table/settings-toggle.gd Normal file
View File

@@ -0,0 +1,28 @@
extends LineEdit
var checkbutton_material: Material
func _enter_tree() -> void:
ProjectSettings.connect('settings_changed', on_setting_changed)
func on_setting_changed():
var cb = $CheckButton
checkbutton_material = cb.material
apply_colors()
func apply_colors():
var is_light: bool = ProjectSettings.get_setting("application/config/Цвет темы программы", false)
var style = get_theme_stylebox("read_only").duplicate()
if is_light:
style.bg_color = Color.GRAY
else:
style.bg_color = Color(0.12, 0.12, 0.12)
add_theme_stylebox_override("read_only", style)
var cb = $CheckButton
if is_light:
cb.material = null
else:
cb.material = checkbutton_material

View File

@@ -0,0 +1 @@
uid://bh7mb1aeu1uk6

View File

@@ -1,32 +1,34 @@
[gd_scene load_steps=5 format=3 uid="uid://5rw652cmnybi"]
[gd_scene load_steps=6 format=3 uid="uid://5rw652cmnybi"]
[ext_resource type="Script" uid="uid://bh7mb1aeu1uk6" path="res://table/settings-toggle.gd" id="1_8lkgc"]
[ext_resource type="Shader" uid="uid://bw5mmbgeycwua" path="res://shaders/color-invers.gdshader" id="1_anyuq"]
[sub_resource type="StyleBoxEmpty" id="StyleBoxEmpty_7hsq1"]
[sub_resource type="StyleBoxEmpty" id="StyleBoxEmpty_il5wc"]
[sub_resource type="ShaderMaterial" id="ShaderMaterial_xxfw6"]
[sub_resource type="ShaderMaterial" id="ShaderMaterial_8lkgc"]
shader = ExtResource("1_anyuq")
[sub_resource type="StyleBoxEmpty" id="StyleBoxEmpty_y8485"]
[sub_resource type="StyleBoxEmpty" id="StyleBoxEmpty_8lkgc"]
[node name="LineEdit" type="LineEdit"]
offset_right = 950.0
offset_bottom = 27.0
theme_override_colors/font_uneditable_color = Color(1, 0.596078, 0.4, 1)
theme_override_colors/font_color = Color(1, 0.596078, 0.4, 1)
theme_override_styles/focus = SubResource("StyleBoxEmpty_7hsq1")
theme_override_styles/focus = SubResource("StyleBoxEmpty_il5wc")
editable = false
context_menu_enabled = false
shortcut_keys_enabled = false
middle_mouse_paste_enabled = false
selecting_enabled = false
deselect_on_focus_loss_enabled = false
script = ExtResource("1_8lkgc")
[node name="CheckButton" type="CheckButton" parent="."]
material = SubResource("ShaderMaterial_xxfw6")
material = SubResource("ShaderMaterial_8lkgc")
layout_mode = 0
offset_left = 453.0
offset_top = 1.5
offset_right = 497.0
offset_bottom = 25.5
theme_override_styles/focus = SubResource("StyleBoxEmpty_y8485")
theme_override_styles/focus = SubResource("StyleBoxEmpty_8lkgc")

23
table/ячейка-2.gd Normal file
View File

@@ -0,0 +1,23 @@
extends LineEdit
func _enter_tree() -> void:
ProjectSettings.connect('settings_changed', apply_colors)
func apply_colors():
var is_light: bool = ProjectSettings.get_setting("application/config/Цвет темы программы", false)
var style = get_theme_stylebox("normal").duplicate()
var style_1 = get_theme_stylebox("read_only").duplicate()
if is_light:
style.bg_color = Color.GRAY
style_1.bg_color = Color.GRAY
add_theme_color_override("font_color", Color.BLACK)
add_theme_color_override("font_uneditable_color", Color.BLACK)
else:
style.bg_color = Color(0.12, 0.12, 0.12)
style_1.bg_color = Color(0.12, 0.12, 0.12)
add_theme_color_override("font_color", Color(1.0, 0.596, 0.4))
add_theme_color_override("font_uneditable_color", Color(1.0, 0.596, 0.4))
add_theme_stylebox_override("normal", style)
add_theme_stylebox_override("read_only", style_1)

View File

@@ -0,0 +1 @@
uid://dqexdg24cp6rq

View File

@@ -1,4 +1,6 @@
[gd_scene load_steps=2 format=3 uid="uid://dspa16ufrpanp"]
[gd_scene load_steps=3 format=3 uid="uid://dspa16ufrpanp"]
[ext_resource type="Script" uid="uid://dqexdg24cp6rq" path="res://table/ячейка-2.gd" id="1_0fmuf"]
[sub_resource type="StyleBoxEmpty" id="StyleBoxEmpty_mla3y"]
@@ -16,3 +18,4 @@ selecting_enabled = false
deselect_on_focus_loss_enabled = false
caret_blink = true
caret_blink_interval = 0.1
script = ExtResource("1_0fmuf")

View File

@@ -0,0 +1,15 @@
extends ColorPickerButton
func _enter_tree() -> void:
ProjectSettings.connect('settings_changed', apply_colors)
func apply_colors():
var is_light: bool = ProjectSettings.get_setting("application/config/Цвет темы программы", false)
var style = get_theme_stylebox("normal").duplicate()
if is_light:
style.bg_color = Color.GRAY
else:
style.bg_color = Color(0.12, 0.12, 0.12)
add_theme_stylebox_override("normal", style)

View File

@@ -0,0 +1 @@
uid://b36c83manfems

View File

@@ -1,4 +1,8 @@
[gd_scene format=3 uid="uid://cug5xjbfdm7x7"]
[gd_scene load_steps=3 format=3 uid="uid://cug5xjbfdm7x7"]
[ext_resource type="Script" uid="uid://b36c83manfems" path="res://table/ячейка-цвет.gd" id="1_ce8lu"]
[sub_resource type="StyleBoxEmpty" id="StyleBoxEmpty_ce8lu"]
[node name="ячейка-цвет" type="ColorPickerButton"]
anchors_preset = 15
@@ -6,3 +10,5 @@ anchor_right = 1.0
anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
theme_override_styles/focus = SubResource("StyleBoxEmpty_ce8lu")
script = ExtResource("1_ce8lu")