add gui.confirm(...)

This commit is contained in:
MihailRis
2025-01-02 16:53:28 +03:00
parent e2f6c263e7
commit 7fce735ca1
6 changed files with 76 additions and 5 deletions
+9 -5
View File
@@ -50,11 +50,13 @@ void guiutil::alert(
}
void guiutil::confirm(
const std::shared_ptr<gui::Menu>& menu,
const std::wstring& text,
const runnable& on_confirm,
std::wstring yestext,
std::wstring notext) {
const std::shared_ptr<gui::Menu>& menu,
const std::wstring& text,
const runnable& on_confirm,
const runnable& on_deny,
std::wstring yestext,
std::wstring notext
) {
if (yestext.empty()) yestext = langs::get(L"Yes");
if (notext.empty()) notext = langs::get(L"No");
@@ -71,6 +73,8 @@ void guiutil::confirm(
}));
subpanel->add(std::make_shared<Button>(notext, glm::vec4(8.f), [=](GUI*){
if (on_deny)
on_deny();
menu->back();
}));
+1
View File
@@ -22,6 +22,7 @@ namespace guiutil {
const std::shared_ptr<gui::Menu>& menu,
const std::wstring& text,
const runnable& on_confirm=nullptr,
const runnable& on_deny=nullptr,
std::wstring yestext=L"",
std::wstring notext=L"");
+1
View File
@@ -122,6 +122,7 @@ static void show_convert_request(
engine.getGUI()->getMenu(),
langs::get(message),
on_confirm,
nullptr,
L"",
langs::get(L"Cancel")
);
+29
View File
@@ -759,6 +759,34 @@ static int l_gui_escape_markup(lua::State* L) {
return lua::pushstring(L, text);
}
static int l_gui_confirm(lua::State* L) {
auto question = lua::require_wstring(L, 1);
lua::pushvalue(L, 2);
auto onconfirm = lua::create_runnable(L);
runnable ondeny = nullptr;
if (lua::gettop(L) > 2) {
lua::pushvalue(L, 3);
ondeny = lua::create_runnable(L);
}
std::wstring yestext = L"";
if (lua::gettop(L) > 3) {
yestext = lua::require_wstring(L, 4);
}
std::wstring notext = L"";
if (lua::gettop(L) > 4) {
notext = lua::require_wstring(L, 5);
}
guiutil::confirm(
engine->getGUI()->getMenu(),
question,
onconfirm,
ondeny,
yestext,
notext
);
return 0;
}
const luaL_Reg guilib[] = {
{"get_viewport", lua::wrap<l_gui_getviewport>},
{"getattr", lua::wrap<l_gui_getattr>},
@@ -768,6 +796,7 @@ const luaL_Reg guilib[] = {
{"get_locales_info", lua::wrap<l_gui_get_locales_info>},
{"clear_markup", lua::wrap<l_gui_clear_markup>},
{"escape_markup", lua::wrap<l_gui_escape_markup>},
{"confirm", lua::wrap<l_gui_confirm>},
{"__reindex", lua::wrap<l_gui_reindex>},
{NULL, NULL}
};