Перейти к основному содержимому

mp.ui — 19 функций

Все модальные диалоги выполняются на GUI-потоке через BlockingQueuedConnection — безопасно вызывать из worker-потока.

ФункцияВозвратОписание
info(title, text)voidInfo message box
warning(title, text)voidWarning message box
error(title, text)voidError message box
question(title, text, ok?, cancel?)booltrue если принято; кастомные надписи кнопок
choice(title, text, buttons[])intMulti-button; возвращает 1-based индекс
input_text(title, label, default?)text, okВвод текста
input_number(title, label, def?, min?, max?)number, okDouble (2 decimals)
input_int(title, label, def?, min?, max?)int, okЦелое
input_choice(title, label, items[], currentIdx?)text, okCombo-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)voidfalse подавляет 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")