From 8f9ae542caeba178c8e821945e509fdee11c19f4 Mon Sep 17 00:00:00 2001 From: sasha80 Date: Thu, 15 May 2025 15:04:25 +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=9F=D0=B5=D1=80=D0=B5=D0=BE=D0=BF=D1=80?= =?UTF-8?q?=D0=B5=D0=B4=D0=B5=D0=BB=D0=B5=D0=BD=D0=B8=D0=B5=20=D0=BF=D0=B0?= =?UTF-8?q?=D1=80=D0=B0=D0=BC=D0=B5=D1=82=D1=80=D0=BE=D0=B2=20=D1=87=D0=B5?= =?UTF-8?q?=D1=80=D0=B5=D0=B7=20=D0=B0=D1=80=D0=B3=D1=83=D0=BC=D0=B5=D0=BD?= =?UTF-8?q?=D1=82=D1=8B=20=D0=BA=D0=BE=D0=BC=D0=B0=D0=BD=D0=B4=D0=BD=D0=BE?= =?UTF-8?q?=D0=B9=20=D1=81=D1=82=D1=80=D0=BE=D0=BA=D0=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- scenes/настройки/настройки.gd | 39 ++++++++++++++++++++++++++++++++++- 1 file changed, 38 insertions(+), 1 deletion(-) diff --git a/scenes/настройки/настройки.gd b/scenes/настройки/настройки.gd index 1b7fa891..f5c43a4a 100644 --- a/scenes/настройки/настройки.gd +++ b/scenes/настройки/настройки.gd @@ -96,6 +96,39 @@ func on_checkbutton_pressed(i_row: int): on_row_pressed(i_row) +func parse_cmd_line_args(settings_data: Dictionary): + var args = OS.get_cmdline_args() + for i in args.size(): + var key: String = args[i] + key = key.lstrip('\'').rstrip('\'').lstrip('\"').rstrip('\"') + if not settings_data.has(key): + continue + if not ((i + 1) < args.size()): + push_error('для аргумента \"%s\" не указано значение.' % key) + break + var val0 = args[i + 1] + var val1 = settings_data[key] + val0 = val0.lstrip('\'').rstrip('\'').lstrip('\"').rstrip('\"') + if typeof(val1) == TYPE_BOOL: + if val0 not in ['yes', 'true', 'да', 'no', 'false', 'нет']: + push_error('для аргумента \"%s\" указано неверное значение \"%s\".' % [key, val0]) + break + settings_data[key] = true if val0 in ['yes', 'true', 'да'] else false + elif typeof(val1) == TYPE_ARRAY: + var val0s = val0.split(',') + if val0s.size() != val1.size(): + push_error('для аргумента \"%s\" указано неверное значение \"%s\" (исходное: \"%s\").' % [key, val0, val1]) + break + for j in val0s.size(): + var val: String = val0s[j] + if tools.type_is_num(val): + val0s[j] = int(val) + elif val in ['true', 'false']: + val0s[j] = true if val == 'true' else false + else: + val0s[j] = val + + func setting_tab(): $heard_table.set_header(HEADER_ROW) $heard_table.set_header_text(HEADER_ROW_TEXT) @@ -114,6 +147,9 @@ func setting_tab(): log.warning('Не удалось разобрать \"%s\", будут использованы настройки по умолчанию' % abs_path) else: log.warning('Файл \"%s\" не найден, будут использованы настройки по умолчанию' % abs_path) + + parse_cmd_line_args(settings_data) + for i in SETTING_TABLE.size(): var setting_str = SETTING_TABLE[i] var parameter = setting_str[0] @@ -176,7 +212,8 @@ func _on_btn_save_settings_pressed(): 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 parameter not in json_data: + json_data[parameter] = [] if value.find(':') != -1: var parts = value.split(':') var ip = parts[0].strip_edges()