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

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 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

View File

@@ -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)

View File

@@ -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"]

View File

@@ -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('Модуль настроек готов')

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"]
[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")