Доработка. Сохранение настроек.

This commit is contained in:
lepshiy
2025-03-05 16:37:38 +03:00
parent f83a6fc3b8
commit 88a50afe22
5 changed files with 77 additions and 36 deletions

View File

@@ -4,7 +4,7 @@ class_name scroll_ecm_params extends ScrollContainer
const CellLineEdit = preload('res://table/ячейка-2.tscn') ## Ячейка таблицы. const CellLineEdit = preload('res://table/ячейка-2.tscn') ## Ячейка таблицы.
const TableHeader = preload('res://table/header.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_HEADER = [ TableHeader, TableHeader ] ## Описание ряда заголовка.
const TABLE_ROW = [ CellLineEdit, CellLineEdit ] ## Описание ряда. 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_alligment(0, MOD_ROW_INDEX, HORIZONTAL_ALIGNMENT_LEFT)
$table.set_node_editable(0, MOD_ROW_INDEX, false) $table.set_node_editable(0, MOD_ROW_INDEX, false)
var taggle_node = $table.get_node2(1, MOD_ROW_INDEX) var taggle_node = $table.get_node2(1, MOD_ROW_INDEX)
for item in taggle_node.get_children(): #for item in taggle_node.get_children():
item.size.x = 85 #item.size.x = 85
item.size.y = 25 #item.size.y = 25
item.position.x = 0 #item.position.x = 0
item.position.y = 0 #item.position.y = 0
taggle_node.size.x = 85 #taggle_node.size.x = 85
taggle_node.size.y = 25 #taggle_node.size.y = 25
var taggle_btn = taggle_node.get_children()[1] var taggle_btn = taggle_node.get_children()[1]
taggle_btn.connect('pressed', on_taggle_btn.bind(taggle_btn)) taggle_btn.connect('pressed', on_taggle_btn.bind(taggle_btn))
taggle_btn.disabled = true taggle_btn.disabled = true

View File

@@ -52,8 +52,6 @@ const SETTING_TABLE = [
['уарэп-спт25-1', TableEdit, TableEdit ], ['уарэп-спт25-1', TableEdit, TableEdit ],
['уарэп-спт25-2', TableEdit, TableEdit ] ['уарэп-спт25-2', TableEdit, TableEdit ]
] ]
const SUPPRESS = 18 # Строка - Подавление const SUPPRESS = 18 # Строка - Подавление
const KEYBORD = 19 # Строка - Виртуальная клавиатура const KEYBORD = 19 # Строка - Виртуальная клавиатура
const HIDE_EMS2 = 20 # Строка - Скрыть вкладку ЭМС 2 const HIDE_EMS2 = 20 # Строка - Скрыть вкладку ЭМС 2
@@ -114,7 +112,12 @@ func setting_tab():
if parameter in settings.UnitProfiles: if parameter in settings.UnitProfiles:
var unit_data = settings.UnitProfiles[parameter] var unit_data = settings.UnitProfiles[parameter]
var profiles = $scroll_set/table.get_node2(1, i) 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(HEADER_ROW)
$end_table.set_header_text(HEADER_ROW_TEXT) $end_table.set_header_text(HEADER_ROW_TEXT)
$end_table.set_columns_min_size([600, 950]) $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.connect('pressed', on_ems2_pressed.bind(ems2_hide_node))
ems2_hide_node.set_pressed(true) ems2_hide_node.set_pressed(true)
on_ems2_pressed(ems2_hide_node) 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)

View File

@@ -26,7 +26,7 @@ layout_mode = 0
offset_left = 16.0 offset_left = 16.0
offset_top = 44.0 offset_top = 44.0
offset_right = 1584.0 offset_right = 1584.0
offset_bottom = 1136.0 offset_bottom = 988.0
[node name="table" type="GridContainer" parent="scroll_set"] [node name="table" type="GridContainer" parent="scroll_set"]
layout_mode = 2 layout_mode = 2
@@ -35,13 +35,12 @@ script = ExtResource("2_6sx73")
[node name="end_table" type="GridContainer" parent="."] [node name="end_table" type="GridContainer" parent="."]
layout_mode = 0 layout_mode = 0
offset_left = 16.0 offset_left = 16.0
offset_top = 1137.0 offset_top = 1000.0
offset_right = 16.0 offset_right = 16.0
offset_bottom = 1137.0 offset_bottom = 1000.0
script = ExtResource("2_6sx73") script = ExtResource("2_6sx73")
[node name="btn_save" type="Button" parent="."] [node name="btn_save_settings" type="Button" parent="."]
visible = false
layout_mode = 0 layout_mode = 0
offset_left = 1523.0 offset_left = 1523.0
offset_top = 1062.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/pressed = SubResource("StyleBoxEmpty_eifcy")
theme_override_styles/normal = SubResource("StyleBoxEmpty_exytp") theme_override_styles/normal = SubResource("StyleBoxEmpty_exytp")
icon = ExtResource("3_xqtce") icon = ExtResource("3_xqtce")
[connection signal="pressed" from="btn_save_settings" to="." method="_on_btn_save_settings_pressed"]

View File

@@ -45,25 +45,24 @@ var settings_program: Dictionary
func _ready() -> void: func _ready() -> void:
var file = FileAccess.open(settings_file, FileAccess.READ) var file = FileAccess.open(settings_file, FileAccess.READ)
if not file: if file != null:
log.info('Не удалось открыть файл настроек %s, использованы настройики по умолчанию' % settings_file) var read = file.get_as_text()
return file.close()
var read = file.get_as_text() var json_conv: = JSON.new()
file.close() if Error.OK == json_conv.parse(read):
var json_conv: = JSON.new() var json_data = json_conv.get_data()
if Error.OK != json_conv.parse(read): settings_program.merge(json_data)
log.info('Не удалось прочитать файл настроек %s, использованы настройики по умолчанию' % settings_file) for key in UnitProfiles.keys():
return if json_data.has(key):
var json_data = json_conv.get_data() UnitProfiles[key][1] = json_data[key][0]
settings_program.merge(json_data) for i in len(json_data[key]) - 1:
for key in UnitProfiles.keys(): if typeof(json_data[key][i+1]) == TYPE_STRING:
if not json_data.has(key): continue if json_data[key][i+1].is_valid_int():
UnitProfiles[key][1] = json_data[key][0] UnitProfiles[key][2][i] = int(json_data[key][i+1])
for i in len(json_data[key]) - 1: else:
if json_data[key][1][i+1].is_valid_int(): UnitProfiles[key][2][i] = json_data[key][i+1]
UnitProfiles[key][2][i] = int(json_data[key][i+1]) else:
else: UnitProfiles[key][2][i] = json_data[key][i+1]
UnitProfiles[key][2][i] = json_data[key][i+1]
log.info('Модуль настроек готов') log.info('Модуль настроек готов')

View File

@@ -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"] [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"] [node name="SettingsTaggle" type="Control"]
layout_mode = 3 layout_mode = 3
anchors_preset = 15 anchors_preset = 15
@@ -11,7 +16,9 @@ grow_horizontal = 2
grow_vertical = 2 grow_vertical = 2
[node name="LineEdit" parent="." instance=ExtResource("1_qcan0")] [node name="LineEdit" parent="." instance=ExtResource("1_qcan0")]
layout_mode = 0
offset_right = 950.0 offset_right = 950.0
editable = false
[node name="CheckButton" type="CheckButton" parent="."] [node name="CheckButton" type="CheckButton" parent="."]
layout_mode = 0 layout_mode = 0
@@ -19,3 +26,4 @@ offset_left = 453.0
offset_top = 4.0 offset_top = 4.0
offset_right = 497.0 offset_right = 497.0
offset_bottom = 28.0 offset_bottom = 28.0
theme = SubResource("Theme_hnhcj")