Button constructor update

This commit is contained in:
MihailRis 2024-01-31 06:37:53 +03:00
parent 1ba563d42a
commit 4d6e4c8b87
4 changed files with 42 additions and 49 deletions

View File

@ -91,10 +91,12 @@ Button::Button(std::shared_ptr<UINode> content, glm::vec4 padding)
scrollable(false);
}
Button::Button(std::wstring text, glm::vec4 padding, glm::vec4 margin)
Button::Button(std::wstring text, glm::vec4 padding, onaction action)
: Panel(vec2(32,32), padding, 0)
{
setMargin(margin);
if (action) {
listenAction(action);
}
scrollable(false);
label = std::make_shared<Label>(text);

View File

@ -62,8 +62,8 @@ namespace gui {
public:
Button(std::shared_ptr<UINode> content, glm::vec4 padding=glm::vec4(2.0f));
Button(std::wstring text,
glm::vec4 padding=glm::vec4(2.0f),
glm::vec4 margin=glm::vec4(1.0f));
glm::vec4 padding,
onaction action);
virtual void drawBackground(const GfxContext* pctx, Assets* assets) override;

View File

@ -11,13 +11,11 @@ using glm::vec2;
using glm::vec4;
std::shared_ptr<Button> guiutil::backButton(std::shared_ptr<PagesControl> menu) {
auto button = std::make_shared<Button>(
langs::get(L"Back"), vec4(10.f)
return std::make_shared<Button>(
langs::get(L"Back"), vec4(10.f), [=](GUI*) {
menu->back();
}
);
button->listenAction([=](GUI* gui) {
menu->back();
});
return button;
}
std::shared_ptr<Button> guiutil::gotoButton(
@ -26,11 +24,9 @@ std::shared_ptr<Button> guiutil::gotoButton(
std::shared_ptr<PagesControl> menu
) {
text = langs::get(text, L"menu");
auto button = std::make_shared<Button>(text, vec4(10.f));
button->listenAction([=](GUI* gui) {
return std::make_shared<Button>(text, vec4(10.f), [=](GUI* gui) {
menu->set(page);
});
return button;
}
void guiutil::alert(GUI* gui, const std::wstring& text, gui::runnable on_hidden) {
@ -56,13 +52,15 @@ void guiutil::alert(GUI* gui, const std::wstring& text, gui::runnable on_hidden)
} else {
panel->add(std::make_shared<Label>(text));
}
auto button = std::make_shared<Button>(langs::get(L"Ok"), vec4(10.f));
button->listenAction([=](GUI* gui) {
if (on_hidden)
on_hidden();
menu->back();
});
panel->add(button);
panel->add(std::make_shared<Button>(
langs::get(L"Ok"), vec4(10.f),
[=](GUI* gui) {
if (on_hidden) {
on_hidden();
}
menu->back();
}
));
panel->refresh();
menu->add("<alert>", panel);
menu->set("<alert>");
@ -84,19 +82,15 @@ void guiutil::confirm(
auto subpanel = std::make_shared<Panel>(vec2(600, 53));
subpanel->setColor(vec4(0));
auto yesbtn = std::make_shared<Button>(yestext, vec4(8.f));
yesbtn->listenAction([=](GUI*){
subpanel->add(std::make_shared<Button>(yestext, vec4(8.f), [=](GUI*){
if (on_confirm)
on_confirm();
menu->back();
});
subpanel->add(yesbtn);
}));
auto nobtn = std::make_shared<Button>(notext, vec4(8.f));
nobtn->listenAction([=](GUI*){
subpanel->add(std::make_shared<Button>(notext, vec4(8.f), [=](GUI*){
menu->back();
});
subpanel->add(nobtn);
}));
panel->add(subpanel);

View File

@ -77,9 +77,9 @@ static std::shared_ptr<Button> create_button(
gui::onaction action
) {
auto btn = std::make_shared<Button>(
langs::get(text, L"menu"), padding, margin
langs::get(text, L"menu"), padding, action
);
btn->listenAction(action);
btn->setMargin(margin);
return btn;
}
@ -115,13 +115,11 @@ static void show_content_missing(
subpanel->maxLength(400);
panel->add(subpanel);
auto button = std::make_shared<Button>(
langs::get(L"Back to Main Menu", L"menu"), vec4(8.0f)
);
button->listenAction([=](GUI*){
menu->back();
});
panel->add(button);
panel->add(std::make_shared<Button>(
langs::get(L"Back to Main Menu", L"menu"), vec4(8.0f), [=](GUI*){
menu->back();
}
));
menu->set("missing-content");
}
@ -157,12 +155,13 @@ void create_languages_panel(Engine* engine) {
std::string& fullName = locale.name;
auto button = std::make_shared<Button>(
util::str2wstr_utf8(fullName), vec4(10.f)
util::str2wstr_utf8(fullName),
vec4(10.f),
[=](GUI*) {
engine->setLanguage(name);
menu->back();
}
);
button->listenAction([=](GUI*) {
engine->setLanguage(name);
menu->back();
});
panel->add(button);
}
panel->add(guiutil::backButton(menu));
@ -260,13 +259,11 @@ void create_main_menu_panel(Engine* engine) {
panel->add(create_worlds_panel(engine));
panel->add(guiutil::gotoButton(L"Settings", "settings", menu));
auto quitbtn = std::make_shared<Button>(
langs::get(L"Quit", L"menu"), vec4(10.f)
);
quitbtn->listenAction([](GUI* gui) {
Window::setShouldClose(true);
});
panel->add(quitbtn);
panel->add(std::make_shared<Button>(
langs::get(L"Quit", L"menu"), vec4(10.f), [](GUI*) {
Window::setShouldClose(true);
}
));
}
typedef std::function<void(const ContentPack& pack)> packconsumer;