diff --git a/check.sh b/check.sh new file mode 100644 index 00000000..2f104301 --- /dev/null +++ b/check.sh @@ -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 diff --git a/config/banned_ranges.json b/config/banned-ranges.json similarity index 100% rename from config/banned_ranges.json rename to config/banned-ranges.json diff --git a/config/service_config.ini b/config/service-config.ini similarity index 100% rename from config/service_config.ini rename to config/service-config.ini diff --git a/config/setting_prd_control.json b/config/setting-prd-control.json similarity index 100% rename from config/setting_prd_control.json rename to config/setting-prd-control.json diff --git a/project.godot b/project.godot index 90068c9c..5ff17ff5 100644 --- a/project.godot +++ b/project.godot @@ -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] diff --git a/scenes/button-flat/nine-patch-button.gd b/scenes/button-flat/nine-patch-button.gd index c3928789..7936e624 100644 --- a/scenes/button-flat/nine-patch-button.gd +++ b/scenes/button-flat/nine-patch-button.gd @@ -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") diff --git a/scenes/count-danger/count_danger_pad.tscn b/scenes/count-danger/count-danger-pad.tscn similarity index 100% rename from scenes/count-danger/count_danger_pad.tscn rename to scenes/count-danger/count-danger-pad.tscn diff --git a/scenes/frame-ecm-list/scroll-ecm-list.gd b/scenes/frame-ecm-list/scroll-ecm-list.gd index 1ff8dc60..39933aae 100644 --- a/scenes/frame-ecm-list/scroll-ecm-list.gd +++ b/scenes/frame-ecm-list/scroll-ecm-list.gd @@ -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 diff --git a/scenes/frame-threats/emit-led.tscn b/scenes/frame-threats/emit-led.tscn index da699172..e7aa1f1d 100644 --- a/scenes/frame-threats/emit-led.tscn +++ b/scenes/frame-threats/emit-led.tscn @@ -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") diff --git a/scenes/frame-threats/scroll-threats.gd b/scenes/frame-threats/scroll-threats.gd index c224021b..8308ca39 100644 --- a/scenes/frame-threats/scroll-threats.gd +++ b/scenes/frame-threats/scroll-threats.gd @@ -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]) diff --git a/scenes/tabs-switch/tab-switch.gd b/scenes/tabs-switch/tab-switch.gd index 6e510749..b3f85221 100644 --- a/scenes/tabs-switch/tab-switch.gd +++ b/scenes/tabs-switch/tab-switch.gd @@ -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) diff --git a/scenes/tabs-switch/tab-switch.tscn b/scenes/tabs-switch/tab-switch.tscn index b1e913d0..43d8d050 100644 --- a/scenes/tabs-switch/tab-switch.tscn +++ b/scenes/tabs-switch/tab-switch.tscn @@ -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") diff --git a/scenes/tabs-switch/тренаж_режим.gd b/scenes/tabs-switch/тренаж-режим.gd similarity index 100% rename from scenes/tabs-switch/тренаж_режим.gd rename to scenes/tabs-switch/тренаж-режим.gd diff --git a/scenes/tabs-switch/тренаж_режим.gd.uid b/scenes/tabs-switch/тренаж-режим.gd.uid similarity index 100% rename from scenes/tabs-switch/тренаж_режим.gd.uid rename to scenes/tabs-switch/тренаж-режим.gd.uid diff --git a/scenes/tilemap/ship_mark.tscn b/scenes/tilemap/ship-mark.tscn similarity index 100% rename from scenes/tilemap/ship_mark.tscn rename to scenes/tilemap/ship-mark.tscn diff --git a/scenes/tilemap/tilemap.gd b/scenes/tilemap/tilemap.gd index b3ea9577..c12ce22d 100644 --- a/scenes/tilemap/tilemap.gd +++ b/scenes/tilemap/tilemap.gd @@ -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 diff --git a/scenes/контроль/connect_pribor.gd b/scenes/контроль/connect-pribor.gd similarity index 100% rename from scenes/контроль/connect_pribor.gd rename to scenes/контроль/connect-pribor.gd diff --git a/scenes/контроль/connect_pribor.gd.uid b/scenes/контроль/connect-pribor.gd.uid similarity index 100% rename from scenes/контроль/connect_pribor.gd.uid rename to scenes/контроль/connect-pribor.gd.uid diff --git a/scenes/контроль/control_prd.gd b/scenes/контроль/control-prd.gd similarity index 100% rename from scenes/контроль/control_prd.gd rename to scenes/контроль/control-prd.gd diff --git a/scenes/контроль/control_prd.gd.uid b/scenes/контроль/control-prd.gd.uid similarity index 100% rename from scenes/контроль/control_prd.gd.uid rename to scenes/контроль/control-prd.gd.uid diff --git a/scenes/контроль/panel_container.gd b/scenes/контроль/panel-container.gd similarity index 100% rename from scenes/контроль/panel_container.gd rename to scenes/контроль/panel-container.gd diff --git a/scenes/контроль/panel_container.gd.uid b/scenes/контроль/panel-container.gd.uid similarity index 100% rename from scenes/контроль/panel_container.gd.uid rename to scenes/контроль/panel-container.gd.uid diff --git a/scenes/контроль/контроль.tscn b/scenes/контроль/контроль.tscn index 8aa514fc..ddeac03e 100644 --- a/scenes/контроль/контроль.tscn +++ b/scenes/контроль/контроль.tscn @@ -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') diff --git a/scenes/настройки/настройки.gd b/scenes/настройки/настройки.gd index b4d49ee7..fef86543 100644 --- a/scenes/настройки/настройки.gd +++ b/scenes/настройки/настройки.gd @@ -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] diff --git a/scenes/настройки/настройки.tscn b/scenes/настройки/настройки.tscn index 950d3e74..88f5604f 100644 --- a/scenes/настройки/настройки.tscn +++ b/scenes/настройки/настройки.tscn @@ -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"] diff --git a/scenes/работа/работа.gd b/scenes/работа/работа.gd index 2fb1bec2..10d86c7d 100644 --- a/scenes/работа/работа.gd +++ b/scenes/работа/работа.gd @@ -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() diff --git a/scenes/работа/работа.tscn b/scenes/работа/работа.tscn index 0759e92e..6220c622 100644 --- a/scenes/работа/работа.tscn +++ b/scenes/работа/работа.tscn @@ -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"] diff --git a/scripts/interfer.gd b/scripts/interfer.gd index 77c3ae53..7a23863d 100644 --- a/scripts/interfer.gd +++ b/scripts/interfer.gd @@ -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] diff --git a/scripts/prd.gd b/scripts/prd.gd index 8a56a356..24d6c0d9 100644 --- a/scripts/prd.gd +++ b/scripts/prd.gd @@ -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 diff --git a/scripts/pribor-prd.gd b/scripts/pribor-prd.gd index 7aae3f02..e34ba3a8 100644 --- a/scripts/pribor-prd.gd +++ b/scripts/pribor-prd.gd @@ -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 diff --git a/shaders/select_tr.gdshader b/shaders/select-tr.gdshader similarity index 100% rename from shaders/select_tr.gdshader rename to shaders/select-tr.gdshader diff --git a/shaders/select_tr.gdshader.uid b/shaders/select-tr.gdshader.uid similarity index 100% rename from shaders/select_tr.gdshader.uid rename to shaders/select-tr.gdshader.uid diff --git a/table/editl.gd b/table/editl.gd new file mode 100644 index 00000000..88645b73 --- /dev/null +++ b/table/editl.gd @@ -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) diff --git a/table/editl.gd.uid b/table/editl.gd.uid new file mode 100644 index 00000000..a2f655c3 --- /dev/null +++ b/table/editl.gd.uid @@ -0,0 +1 @@ +uid://bky7xlpaj21sj diff --git a/table/editl.tscn b/table/editl.tscn index e1d02dc1..44fd2976 100644 --- a/table/editl.tscn +++ b/table/editl.tscn @@ -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") diff --git a/table/lable.gd b/table/lable.gd new file mode 100644 index 00000000..2ad5db8a --- /dev/null +++ b/table/lable.gd @@ -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) diff --git a/table/lable.gd.uid b/table/lable.gd.uid new file mode 100644 index 00000000..2b9e2c3f --- /dev/null +++ b/table/lable.gd.uid @@ -0,0 +1 @@ +uid://bjw0gwcqxx30d diff --git a/table/lable.tscn b/table/lable.tscn index 63372de7..25c38ded 100644 --- a/table/lable.tscn +++ b/table/lable.tscn @@ -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") diff --git a/table/node.gd b/table/node.gd new file mode 100644 index 00000000..88645b73 --- /dev/null +++ b/table/node.gd @@ -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) diff --git a/table/node.gd.uid b/table/node.gd.uid new file mode 100644 index 00000000..7df355ca --- /dev/null +++ b/table/node.gd.uid @@ -0,0 +1 @@ +uid://c71233c2tqc2u diff --git a/table/node.tscn b/table/node.tscn index 120347d2..5178856f 100644 --- a/table/node.tscn +++ b/table/node.tscn @@ -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") diff --git a/table/set-toggle.gd b/table/set-toggle.gd new file mode 100644 index 00000000..66cbf7a6 --- /dev/null +++ b/table/set-toggle.gd @@ -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 diff --git a/table/set-toggle.gd.uid b/table/set-toggle.gd.uid new file mode 100644 index 00000000..35ebd964 --- /dev/null +++ b/table/set-toggle.gd.uid @@ -0,0 +1 @@ +uid://btvrqnnjjum20 diff --git a/table/set-toggle.tscn b/table/set-toggle.tscn index 39a32422..ab5acf4f 100644 --- a/table/set-toggle.tscn +++ b/table/set-toggle.tscn @@ -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") diff --git a/table/settings-toggle.gd b/table/settings-toggle.gd new file mode 100644 index 00000000..66cbf7a6 --- /dev/null +++ b/table/settings-toggle.gd @@ -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 diff --git a/table/settings-toggle.gd.uid b/table/settings-toggle.gd.uid new file mode 100644 index 00000000..729538f3 --- /dev/null +++ b/table/settings-toggle.gd.uid @@ -0,0 +1 @@ +uid://bh7mb1aeu1uk6 diff --git a/table/settings-toggle.tscn b/table/settings-toggle.tscn index b0edb12c..3dac0144 100644 --- a/table/settings-toggle.tscn +++ b/table/settings-toggle.tscn @@ -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") diff --git a/table/ячейка-2.gd b/table/ячейка-2.gd new file mode 100644 index 00000000..6fbc9f84 --- /dev/null +++ b/table/ячейка-2.gd @@ -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) diff --git a/table/ячейка-2.gd.uid b/table/ячейка-2.gd.uid new file mode 100644 index 00000000..4917e9d0 --- /dev/null +++ b/table/ячейка-2.gd.uid @@ -0,0 +1 @@ +uid://dqexdg24cp6rq diff --git a/table/ячейка-2.tscn b/table/ячейка-2.tscn index 2cbfae74..0c3566e4 100644 --- a/table/ячейка-2.tscn +++ b/table/ячейка-2.tscn @@ -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") diff --git a/table/ячейка-цвет.gd b/table/ячейка-цвет.gd new file mode 100644 index 00000000..0d67a6e5 --- /dev/null +++ b/table/ячейка-цвет.gd @@ -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) diff --git a/table/ячейка-цвет.gd.uid b/table/ячейка-цвет.gd.uid new file mode 100644 index 00000000..31e07acc --- /dev/null +++ b/table/ячейка-цвет.gd.uid @@ -0,0 +1 @@ +uid://b36c83manfems diff --git a/table/ячейка-цвет.tscn b/table/ячейка-цвет.tscn index e239b982..8171867e 100644 --- a/table/ячейка-цвет.tscn +++ b/table/ячейка-цвет.tscn @@ -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")