From 88a50afe227c0db85f87c66228cf611ddaa31ab8 Mon Sep 17 00:00:00 2001 From: lepshiy Date: Wed, 5 Mar 2025 16:37:38 +0300 Subject: [PATCH] =?UTF-8?q?=D0=94=D0=BE=D1=80=D0=B0=D0=B1=D0=BE=D1=82?= =?UTF-8?q?=D0=BA=D0=B0.=20=D0=A1=D0=BE=D1=85=D1=80=D0=B0=D0=BD=D0=B5?= =?UTF-8?q?=D0=BD=D0=B8=D0=B5=20=D0=BD=D0=B0=D1=81=D1=82=D1=80=D0=BE=D0=B5?= =?UTF-8?q?=D0=BA.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- scenes/frame-ecm-params/scroll-ecm-params.gd | 16 ++++---- scenes/настройки/настройки.gd | 39 ++++++++++++++++++-- scenes/настройки/настройки.tscn | 11 +++--- scripts/settings.gd | 37 +++++++++---------- table/settings_taggle.tscn | 10 ++++- 5 files changed, 77 insertions(+), 36 deletions(-) diff --git a/scenes/frame-ecm-params/scroll-ecm-params.gd b/scenes/frame-ecm-params/scroll-ecm-params.gd index f98ed5a8..14f25121 100644 --- a/scenes/frame-ecm-params/scroll-ecm-params.gd +++ b/scenes/frame-ecm-params/scroll-ecm-params.gd @@ -4,7 +4,7 @@ class_name scroll_ecm_params extends ScrollContainer const CellLineEdit = preload('res://table/ячейка-2.tscn') ## Ячейка таблицы. const TableHeader = preload('res://table/header.tscn') ## Ячейка заголовок таблицы. -const CellTaggleBtn = preload('res://table/taggle.tscn') +const CellTaggleBtn = preload('res://table/set_taggle.tscn') const TABLE_HEADER = [ TableHeader, TableHeader ] ## Описание ряда заголовка. const TABLE_ROW = [ CellLineEdit, CellLineEdit ] ## Описание ряда. @@ -38,13 +38,13 @@ func init_table(): $table.set_node_alligment(0, MOD_ROW_INDEX, HORIZONTAL_ALIGNMENT_LEFT) $table.set_node_editable(0, MOD_ROW_INDEX, false) var taggle_node = $table.get_node2(1, MOD_ROW_INDEX) - for item in taggle_node.get_children(): - item.size.x = 85 - item.size.y = 25 - item.position.x = 0 - item.position.y = 0 - taggle_node.size.x = 85 - taggle_node.size.y = 25 + #for item in taggle_node.get_children(): + #item.size.x = 85 + #item.size.y = 25 + #item.position.x = 0 + #item.position.y = 0 + #taggle_node.size.x = 85 + #taggle_node.size.y = 25 var taggle_btn = taggle_node.get_children()[1] taggle_btn.connect('pressed', on_taggle_btn.bind(taggle_btn)) taggle_btn.disabled = true diff --git a/scenes/настройки/настройки.gd b/scenes/настройки/настройки.gd index 3dafa9ce..671099dd 100644 --- a/scenes/настройки/настройки.gd +++ b/scenes/настройки/настройки.gd @@ -52,8 +52,6 @@ const SETTING_TABLE = [ ['уарэп-спт25-1', TableEdit, TableEdit ], ['уарэп-спт25-2', TableEdit, TableEdit ] ] - - const SUPPRESS = 18 # Строка - Подавление const KEYBORD = 19 # Строка - Виртуальная клавиатура const HIDE_EMS2 = 20 # Строка - Скрыть вкладку ЭМС 2 @@ -114,7 +112,12 @@ func setting_tab(): if parameter in settings.UnitProfiles: var unit_data = settings.UnitProfiles[parameter] var profiles = $scroll_set/table.get_node2(1, i) - profiles.text = str(unit_data[1]) + ":" + str(unit_data[2][0]) + var joined_data = "" + for j in range(unit_data[2].size()): + joined_data += str(unit_data[2][j]) + if j < unit_data[2].size() - 1: + joined_data += "," + profiles.text = str(unit_data[1]) + " : " + joined_data $end_table.set_header(HEADER_ROW) $end_table.set_header_text(HEADER_ROW_TEXT) $end_table.set_columns_min_size([600, 950]) @@ -134,3 +137,33 @@ func button_settings(): ems2_hide_node.connect('pressed', on_ems2_pressed.bind(ems2_hide_node)) ems2_hide_node.set_pressed(true) on_ems2_pressed(ems2_hide_node) + + +func _on_btn_save_settings_pressed(): + var json_data = {} + for i in range(SETTING_TABLE.size()): + var parameter = SETTING_TABLE[i][0] + if parameter in settings.UnitProfiles: + var profiles = $scroll_set/table.get_node2(1, i) + var value = profiles.get_text() + if parameter not in json_data: + json_data[parameter] = [] + if value.find(":") != -1: + var parts = value.split(":") + var ip = parts[0].strip_edges() + var ports = parts[1].split(",") + json_data[parameter].append(ip) + for port in ports: + if port == "true": + json_data[parameter].append(true) + elif port == "false": + json_data[parameter].append(false) + var file = FileAccess.open(settings.settings_file, FileAccess.WRITE) + if file: + var json_conv = JSON.new() + var json_string = json_conv.stringify(json_data) + file.store_string(json_string) + file.close() + log.info('Настройки сохранены в файл %s' % settings.settings_file) + else: + log.info('Не удалось открыть файл для записи %s' % settings.settings_file) diff --git a/scenes/настройки/настройки.tscn b/scenes/настройки/настройки.tscn index 080f0e09..1c8ab22e 100644 --- a/scenes/настройки/настройки.tscn +++ b/scenes/настройки/настройки.tscn @@ -26,7 +26,7 @@ layout_mode = 0 offset_left = 16.0 offset_top = 44.0 offset_right = 1584.0 -offset_bottom = 1136.0 +offset_bottom = 988.0 [node name="table" type="GridContainer" parent="scroll_set"] layout_mode = 2 @@ -35,13 +35,12 @@ script = ExtResource("2_6sx73") [node name="end_table" type="GridContainer" parent="."] layout_mode = 0 offset_left = 16.0 -offset_top = 1137.0 +offset_top = 1000.0 offset_right = 16.0 -offset_bottom = 1137.0 +offset_bottom = 1000.0 script = ExtResource("2_6sx73") -[node name="btn_save" type="Button" parent="."] -visible = false +[node name="btn_save_settings" type="Button" parent="."] layout_mode = 0 offset_left = 1523.0 offset_top = 1062.0 @@ -53,3 +52,5 @@ theme_override_styles/focus = SubResource("StyleBoxEmpty_bgm7i") theme_override_styles/pressed = SubResource("StyleBoxEmpty_eifcy") theme_override_styles/normal = SubResource("StyleBoxEmpty_exytp") icon = ExtResource("3_xqtce") + +[connection signal="pressed" from="btn_save_settings" to="." method="_on_btn_save_settings_pressed"] diff --git a/scripts/settings.gd b/scripts/settings.gd index 1ce31659..10435600 100644 --- a/scripts/settings.gd +++ b/scripts/settings.gd @@ -45,25 +45,24 @@ var settings_program: Dictionary func _ready() -> void: var file = FileAccess.open(settings_file, FileAccess.READ) - if not file: - log.info('Не удалось открыть файл настроек %s, использованы настройики по умолчанию' % settings_file) - return - var read = file.get_as_text() - file.close() - var json_conv: = JSON.new() - if Error.OK != json_conv.parse(read): - log.info('Не удалось прочитать файл настроек %s, использованы настройики по умолчанию' % settings_file) - return - var json_data = json_conv.get_data() - settings_program.merge(json_data) - for key in UnitProfiles.keys(): - if not json_data.has(key): continue - UnitProfiles[key][1] = json_data[key][0] - for i in len(json_data[key]) - 1: - if json_data[key][1][i+1].is_valid_int(): - UnitProfiles[key][2][i] = int(json_data[key][i+1]) - else: - UnitProfiles[key][2][i] = json_data[key][i+1] + if file != null: + var read = file.get_as_text() + file.close() + var json_conv: = JSON.new() + if Error.OK == json_conv.parse(read): + var json_data = json_conv.get_data() + settings_program.merge(json_data) + for key in UnitProfiles.keys(): + if json_data.has(key): + UnitProfiles[key][1] = json_data[key][0] + for i in len(json_data[key]) - 1: + if typeof(json_data[key][i+1]) == TYPE_STRING: + if json_data[key][i+1].is_valid_int(): + UnitProfiles[key][2][i] = int(json_data[key][i+1]) + else: + UnitProfiles[key][2][i] = json_data[key][i+1] + else: + UnitProfiles[key][2][i] = json_data[key][i+1] log.info('Модуль настроек готов') diff --git a/table/settings_taggle.tscn b/table/settings_taggle.tscn index 79fe2c4a..76facf9b 100644 --- a/table/settings_taggle.tscn +++ b/table/settings_taggle.tscn @@ -1,7 +1,12 @@ -[gd_scene load_steps=2 format=3 uid="uid://5rw652cmnybi"] +[gd_scene load_steps=4 format=3 uid="uid://5rw652cmnybi"] [ext_resource type="PackedScene" uid="uid://dspa16ufrpanp" path="res://table/ячейка-2.tscn" id="1_qcan0"] +[sub_resource type="StyleBoxEmpty" id="StyleBoxEmpty_q2spu"] + +[sub_resource type="Theme" id="Theme_hnhcj"] +CheckButton/styles/focus = SubResource("StyleBoxEmpty_q2spu") + [node name="SettingsTaggle" type="Control"] layout_mode = 3 anchors_preset = 15 @@ -11,7 +16,9 @@ grow_horizontal = 2 grow_vertical = 2 [node name="LineEdit" parent="." instance=ExtResource("1_qcan0")] +layout_mode = 0 offset_right = 950.0 +editable = false [node name="CheckButton" type="CheckButton" parent="."] layout_mode = 0 @@ -19,3 +26,4 @@ offset_left = 453.0 offset_top = 4.0 offset_right = 497.0 offset_bottom = 28.0 +theme = SubResource("Theme_hnhcj")