Доработка. Сохранение настроек.
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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"]
|
||||
|
||||
@@ -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('Модуль настроек готов')
|
||||
|
||||
|
||||
|
||||
@@ -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")
|
||||
|
||||
Reference in New Issue
Block a user