mp.ui — 19 функций
Все модальные диалоги выполняются на GUI-потоке через
BlockingQueuedConnection — безопасно вызывать из worker-потока.
| Функция | Возврат | Описание |
|---|---|---|
info(title, text) | void | Info message box |
warning(title, text) | void | Warning message box |
error(title, text) | void | Error message box |
question(title, text, ok?, cancel?) | bool | true если принято; кастомные надписи кнопок |
choice(title, text, buttons[]) | int | Multi-button; возвращает 1-based индекс |
input_text(title, label, default?) | text, ok | Ввод текста |
input_number(title, label, def?, min?, max?) | number, ok | Double (2 decimals) |
input_int(title, label, def?, min?, max?) | int, ok | Целое |
input_choice(title, label, items[], currentIdx?) | text, ok | Combo-box |
open_file_dialog(title?, dir?, filter?) | string | Выбранный путь или пусто |
save_file_dialog(title?, dir?, filter?) | string | Выбранный путь или пусто |
get_theme() | string | "light" | "dark" | "telegram" | "telegram_dark" | "unknown" |
set_theme(name) | void | Переключить т ему сразу |
is_dark() | bool | Текущая тема — тёмная |
get_color(field) | string | Цвет палитры как #RRGGBB |
set_popups(enabled) | void | false подавляет backend-диалоги Info/Warning/Error на время скрипта |
set_statusbar(label, value) | void | Скрывает стандартные виджеты чексумм; показывает "label: value" |
reset_statusbar() | void | Восстанавливает стандартный статус-бар |
output(text) | void | Добавить строку в Script Console output panel |
Тихий режим
set_popups(false) подавляет backend Info / Warning / Error
модальные окна на время скрипта — mp.backend.* ok / err
по-прежнему приходят в скрипт, просто без модального прерывания.
На scriptFinished авто-сбрасывается в true, краш скрипта не
оставит GUI без диалогов.
Перехват статус-бара
Используется чексум-скриптами:
mp.ui.set_statusbar("RL78 Block 0", "0xABCD") -- скрывает стандартные виджеты
-- ...
mp.ui.reset_statusbar() -- восстанавливает
Пример
mp.ui.info("Заголовок", "Привет")
local yes = mp.ui.question("Подтверждение", "Продолжить?")
local sn, ok = mp.ui.input_text("Mass production", "Серийный:", "SN001")
local path = mp.ui.open_file_dialog("Открыть", nil, "HEX (*.hex)")
mp.ui.set_theme("dark")