Добавление диалогового окна настроек в код в Studio
Версия: 1.4
Дата релиза: 17 апреля 2023
Шаблоны настроек задаются в контекстном меню Плагины -> Код -> Редактор -> Редактирование настроек
В диалоговом окне редатирования настроек доступен следующий функионал, показанные на скриншоте ниже:
После настройки шаблонов, можно вызвать форму по названию шаблона в коде Studio, используя метод set_settings. При вызове метода открывается диалоговое окно, в котором пользователь вводит значения. При нажатии OK (если данные валидны) возвращается JSON-объект. Если данные не валидны, отобразится сообщение с ошибкой и пользователю придется скорректировать введенные значения. Если пользователь закроет окно не через кнопку OK - вернется JSON-объект с полем IsSettingsInput:false.
С помощью методов add_setting_from_file и add_setting_from_json можно программно добавить настройку из JSON. При этом структура JSON должна соответствовать следующей:
{
"Name": "Название шаблона",
"IsDontAskAgain": false, // открывать окно ввода настроект только в первый, а после использовать введенные пользователем данные
"Items": [
{
"Id": 1,
"SettingsControl": "TextBox|TextArea|RadioButton|ComboBox|CheckBox|Slider|NumberBox",
"PlaceHolder": "Визульное название для поля",
"PropertyName": "Имя свойства в JSON-модели (без пробелов)",
"IsRequired": false, // обязателен ли ввод поля
"SettingsOptions": {
"DefaultValue": null, // значение по умолчанию
"ItemsSource": [ // для списковых полей (RadioButton|ComboBox)
{
"Text": "",
"IsDefault": false
},
{
"Text": "",
"IsDefault": false
}],
"Min": 0.0, // ограничение для Slider
"Max": 0.0 // ограничение для Slider
},
{
"Id": 2,
"SettingsControl": "TextBox",
"PlaceHolder": "",
"PropertyName": "",
"IsRequired": false,
"SettingsOptions": {
"DefaultValue": null,
"ItemsSource": [],
"Min": 0.0,
"Max": 0.0
},
// ...
]
}
Задать значения для настроек
Описание возврата: JSON строка с введенными данными в форме
Примеры использования<?php
// инициализация
$xhe_host = '127.0.0.1:7010';
$relative_app_dir = '..\\..\\..\\';
require($relative_app_dir.'Templates/init.php');
include($relative_app_dir.'Templates/_for_tests_.php');
$bUTF8Ver = true;
$PHP_Use_Trought_Shell = true;
// рабочая папка
$script_folder = $debug->get_cur_script_folder();
// отсносительный путь
$app_dir = realpath($script_folder.$relative_app_dir);
// тестовые данные
$test = new _for_tests_($script_folder, $settingseditor);
// начало теста
$test->echo_header('set_settings');
//1
echo "1. Установить настройки пользователя\n";
$settings = $settingseditor->set_settings("User Info");
echo "Получена строка в формате JSON: \n";
echo $settings."\n";
// конец теста
echo "\n<hr><br>";
// выход
$app->quit();
?>
// связь с платформой
xhe_host = '127.0.0.1:7014'
_path = require('path')
relative_app_dir = '..\\..\\..\\'
echo = require(_path.join(relative_app_dir, 'Templates JS', 'init.js'))
_for_tests_ = require(_path.join(relative_app_dir, 'Templates JS', '_for_tests_.js'))
// рабочая папка
script_folder = debug.get_cur_script_folder()
// отсносительны йпуть
app_dir = _path.resolve(_path.join(script_folder, relative_app_dir))
// тестовые данные
test = new _for_tests_(script_folder, settingseditor)
// начало теста
test.echo_header('set_settings')
//1
echo("1. Установить настройки пользователя\n")
settings = settingseditor.set_settings("User Info")
echo("Получена строка в формате JSON: \n")
echo(`${settings}\n`)
// конец теста
echo('\n<hr><br>')
// выход
app.quit()
# дополнительные пути
import sys, os
relative_app_dir = '..\\..\\..\\'
sys.path.append(os.path.join(relative_app_dir, 'Templates PY'))
# связь с платофрмой
xhe_host = '127.0.0.1:7010'
from xweb_human_emulator import *
from _for_tests_ import _for_tests_
# рабочая папка
script_folder = debug.get_cur_script_folder()
# относительный путь
app_dir = os.path.abspath(os.path.join(script_folder, relative_app_dir))
# тестовые данные
test = _for_tests_(script_folder, settingseditor)
# начало теста
test.echo_header('set_settings')
#1
print("1. Установить настройки пользователя")
settings = settingseditor.set_settings("User Info")
print("Получена строка в формате JSON: ")
print(settings)
# конец теста
print('\n<hr><br>')
# выход
app.quit()
Добавить настройку из JSON файла (если настройка существует, она заменяется на новую)
Описание возврата: Логический результат выполнения операции
Примеры использования<?php
// инициализация
$xhe_host = '127.0.0.1:7010';
$relative_app_dir = '..\\..\\..\\';
require($relative_app_dir.'Templates/init.php');
include($relative_app_dir.'Templates/_for_tests_.php');
$bUTF8Ver = true;
$PHP_Use_Trought_Shell = true;
// рабочая папка
$script_folder = $debug->get_cur_script_folder();
// отсносительный путь
$app_dir = realpath($script_folder.$relative_app_dir);
// тестовые данные
$test = new _for_tests_($script_folder, $settingseditor);
// начало теста
$test->echo_header('add_setting_from_file');
$filepath = $test->get_test_file_full_path('test_file.json');
//1 Добавить новую настройку из файла
$result = $settingseditor->add_setting_from_file($filepath);
// конец теста
echo "\n<hr><br>";
// выход
$app->quit();
?>
// связь с платформой
xhe_host = '127.0.0.1:7014'
_path = require('path')
relative_app_dir = '..\\..\\..\\'
echo = require(_path.join(relative_app_dir, 'Templates JS', 'init.js'))
_for_tests_ = require(_path.join(relative_app_dir, 'Templates JS', '_for_tests_.js'))
// рабочая папка
script_folder = debug.get_cur_script_folder()
// отсносительны йпуть
app_dir = _path.resolve(_path.join(script_folder, relative_app_dir))
// тестовые данные
test = new _for_tests_(script_folder, settingseditor)
// начало теста
test.echo_header('add_setting_from_file')
filepath = test.get_test_file_full_path('test_file.json')
//1 Добавить новую настройку из файла
result = settingseditor.add_setting_from_file(filepath)
// конец теста
echo('\n<hr><br>')
// выход
app.quit()
# дополнительные пути
import sys, os
relative_app_dir = '..\\..\\..\\'
sys.path.append(os.path.join(relative_app_dir, 'Templates PY'))
# связь с платофрмой
xhe_host = '127.0.0.1:7010'
from xweb_human_emulator import *
from _for_tests_ import _for_tests_
# рабочая папка
script_folder = debug.get_cur_script_folder()
# относительный путь
app_dir = os.path.abspath(os.path.join(script_folder, relative_app_dir))
# тестовые данные
test = _for_tests_(script_folder, settingseditor)
# начало теста
test.echo_header('add_setting_from_file')
filepath = test.get_test_file_full_path('test_file.json')
#1 Добавить новую настройку из файла
result = settingseditor.add_setting_from_file(filepath)
# конец теста
print('\n<hr><br>')
# выход
app.quit()
Добавить настройку из строки JSON
Описание возврата: Логический результат выполнения операции
Примеры использования<?php
// инициализация
$xhe_host = '127.0.0.1:7010';
$relative_app_dir = '..\\..\\..\\';
require($relative_app_dir.'Templates/init.php');
include($relative_app_dir.'Templates/_for_tests_.php');
$bUTF8Ver = true;
$PHP_Use_Trought_Shell = true;
// рабочая папка
$script_folder = $debug->get_cur_script_folder();
// отсносительный путь
$app_dir = realpath($script_folder.$relative_app_dir);
// тестовые данные
$test = new _for_tests_($script_folder, $settingseditor);
// начало теста
$test->echo_header('add_setting_from_json');
$xjson = '{
"Name": "Test Setting",
"Items": [
{
"Id": 1,
"SettingsControl": "CheckBox",
"PlaceHolder": "Получать уведомления?",
"PropertyName": "ReceiveNotifications",
"IsRequired": "false",
"SettingsOptions": {
"DefaultValue": "True"
}
}
]
}';
$result = $settingseditor->add_setting_from_json($xjson);
// конец теста
echo "\n<hr><br>";
// выход
$app->quit();
?>
// связь с платформой
xhe_host = '127.0.0.1:7014'
_path = require('path')
relative_app_dir = '..\\..\\..\\'
echo = require(_path.join(relative_app_dir, 'Templates JS', 'init.js'))
_for_tests_ = require(_path.join(relative_app_dir, 'Templates JS', '_for_tests_.js'))
// рабочая папка
script_folder = debug.get_cur_script_folder()
// отсносительны йпуть
app_dir = _path.resolve(_path.join(script_folder, relative_app_dir))
// тестовые данные
test = new _for_tests_(script_folder, settingseditor)
// начало теста
test.echo_header('add_setting_from_json')
xjson = `{
"Name": "Test Setting",
"Items": [
{
"Id": 1,
"SettingsControl": "CheckBox",
"PlaceHolder": "Получать уведомления?",
"PropertyName": "ReceiveNotifications",
"IsRequired": "false",
"SettingsOptions": {
"DefaultValue": "True"
}
}
]
}`
result = settingseditor.add_setting_from_json(xjson)
// конец теста
echo('\n<hr><br>')
// выход
app.quit()
# дополнительные пути
import sys, os
relative_app_dir = '..\\..\\..\\'
sys.path.append(os.path.join(relative_app_dir, 'Templates PY'))
# связь с платофрмой
xhe_host = '127.0.0.1:7010'
from xweb_human_emulator import *
from _for_tests_ import _for_tests_
# рабочая папка
script_folder = debug.get_cur_script_folder()
# относительный путь
app_dir = os.path.abspath(os.path.join(script_folder, relative_app_dir))
# тестовые данные
test = _for_tests_(script_folder, settingseditor)
# начало теста
test.echo_header('add_setting_from_json')
xjson = {
"Name": "Test Setting",
"Items": [
{
"Id": 1,
"SettingsControl": "CheckBox",
"PlaceHolder": "Получать уведомления?",
"PropertyName": "ReceiveNotifications",
"IsRequired": "false",
"SettingsOptions": {
"DefaultValue": "True"
}
}
]
}
result = settingseditor.add_setting_from_json(xjson)
# конец теста
print('\n<hr><br>')
# выход
app.quit()
Проеряет существует ли шаблон настройки по указанному имени
Описание возврата: True - если настройка существует
Примеры использования<?php
// инициализация
$xhe_host = '127.0.0.1:7010';
$relative_app_dir = '..\\..\\..\\';
require($relative_app_dir.'Templates/init.php');
include($relative_app_dir.'Templates/_for_tests_.php');
$bUTF8Ver = true;
$PHP_Use_Trought_Shell = true;
// рабочая папка
$script_folder = $debug->get_cur_script_folder();
// отсносительный путь
$app_dir = realpath($script_folder.$relative_app_dir);
// тестовые данные
$test = new _for_tests_($script_folder, $settingseditor);
// начало теста
$test->echo_header('is_exist');
//1
echo "1. Проверить, существует ли настройка\n";
$settings = $settingseditor->is_exist("User Info");
// конец теста
echo "\n<hr><br>";
// выход
$app->quit();
?>
// связь с платформой
xhe_host = '127.0.0.1:7014'
_path = require('path')
relative_app_dir = '..\\..\\..\\'
echo = require(_path.join(relative_app_dir, 'Templates JS', 'init.js'))
_for_tests_ = require(_path.join(relative_app_dir, 'Templates JS', '_for_tests_.js'))
// рабочая папка
script_folder = debug.get_cur_script_folder()
// отсносительны йпуть
app_dir = _path.resolve(_path.join(script_folder, relative_app_dir))
// тестовые данные
test = new _for_tests_(script_folder, settingseditor)
// начало теста
test.echo_header('is_exist')
//1
echo("1. Проверить, существует ли настройка\n")
settings = settingseditor.is_exist("User Info")
// конец теста
echo('\n<hr><br>')
// выход
app.quit()
# дополнительные пути
import sys, os
relative_app_dir = '..\\..\\..\\'
sys.path.append(os.path.join(relative_app_dir, 'Templates PY'))
# связь с платофрмой
xhe_host = '127.0.0.1:7010'
from xweb_human_emulator import *
from _for_tests_ import _for_tests_
# рабочая папка
script_folder = debug.get_cur_script_folder()
# относительный путь
app_dir = os.path.abspath(os.path.join(script_folder, relative_app_dir))
# тестовые данные
test = _for_tests_(script_folder, settingseditor)
# начало теста
test.echo_header('is_exist')
#1
print("1. Проверить, существует ли настройка")
settings = settingseditor.is_exist("User Info")
# конец теста
print('\n<hr><br>')
# выход
app.quit()