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
+4 -2
View File
@@ -91,10 +91,12 @@ Button::Button(std::shared_ptr<UINode> content, glm::vec4 padding)
scrollable(false); 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) : Panel(vec2(32,32), padding, 0)
{ {
setMargin(margin); if (action) {
listenAction(action);
}
scrollable(false); scrollable(false);
label = std::make_shared<Label>(text); label = std::make_shared<Label>(text);
+2 -2
View File
@@ -62,8 +62,8 @@ namespace gui {
public: public:
Button(std::shared_ptr<UINode> content, glm::vec4 padding=glm::vec4(2.0f)); Button(std::shared_ptr<UINode> content, glm::vec4 padding=glm::vec4(2.0f));
Button(std::wstring text, Button(std::wstring text,
glm::vec4 padding=glm::vec4(2.0f), glm::vec4 padding,
glm::vec4 margin=glm::vec4(1.0f)); onaction action);
virtual void drawBackground(const GfxContext* pctx, Assets* assets) override; virtual void drawBackground(const GfxContext* pctx, Assets* assets) override;
+18 -24
View File
@@ -11,13 +11,11 @@ using glm::vec2;
using glm::vec4; using glm::vec4;
std::shared_ptr<Button> guiutil::backButton(std::shared_ptr<PagesControl> menu) { std::shared_ptr<Button> guiutil::backButton(std::shared_ptr<PagesControl> menu) {
auto button = std::make_shared<Button>( return std::make_shared<Button>(
langs::get(L"Back"), vec4(10.f) langs::get(L"Back"), vec4(10.f), [=](GUI*) {
menu->back();
}
); );
button->listenAction([=](GUI* gui) {
menu->back();
});
return button;
} }
std::shared_ptr<Button> guiutil::gotoButton( std::shared_ptr<Button> guiutil::gotoButton(
@@ -26,11 +24,9 @@ std::shared_ptr<Button> guiutil::gotoButton(
std::shared_ptr<PagesControl> menu std::shared_ptr<PagesControl> menu
) { ) {
text = langs::get(text, L"menu"); text = langs::get(text, L"menu");
auto button = std::make_shared<Button>(text, vec4(10.f)); return std::make_shared<Button>(text, vec4(10.f), [=](GUI* gui) {
button->listenAction([=](GUI* gui) {
menu->set(page); menu->set(page);
}); });
return button;
} }
void guiutil::alert(GUI* gui, const std::wstring& text, gui::runnable on_hidden) { 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 { } else {
panel->add(std::make_shared<Label>(text)); panel->add(std::make_shared<Label>(text));
} }
auto button = std::make_shared<Button>(langs::get(L"Ok"), vec4(10.f)); panel->add(std::make_shared<Button>(
button->listenAction([=](GUI* gui) { langs::get(L"Ok"), vec4(10.f),
if (on_hidden) [=](GUI* gui) {
on_hidden(); if (on_hidden) {
menu->back(); on_hidden();
}); }
panel->add(button); menu->back();
}
));
panel->refresh(); panel->refresh();
menu->add("<alert>", panel); menu->add("<alert>", panel);
menu->set("<alert>"); menu->set("<alert>");
@@ -84,19 +82,15 @@ void guiutil::confirm(
auto subpanel = std::make_shared<Panel>(vec2(600, 53)); auto subpanel = std::make_shared<Panel>(vec2(600, 53));
subpanel->setColor(vec4(0)); subpanel->setColor(vec4(0));
auto yesbtn = std::make_shared<Button>(yestext, vec4(8.f)); subpanel->add(std::make_shared<Button>(yestext, vec4(8.f), [=](GUI*){
yesbtn->listenAction([=](GUI*){
if (on_confirm) if (on_confirm)
on_confirm(); on_confirm();
menu->back(); menu->back();
}); }));
subpanel->add(yesbtn);
auto nobtn = std::make_shared<Button>(notext, vec4(8.f)); subpanel->add(std::make_shared<Button>(notext, vec4(8.f), [=](GUI*){
nobtn->listenAction([=](GUI*){
menu->back(); menu->back();
}); }));
subpanel->add(nobtn);
panel->add(subpanel); panel->add(subpanel);
+18 -21
View File
@@ -77,9 +77,9 @@ static std::shared_ptr<Button> create_button(
gui::onaction action gui::onaction action
) { ) {
auto btn = std::make_shared<Button>( 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; return btn;
} }
@@ -115,13 +115,11 @@ static void show_content_missing(
subpanel->maxLength(400); subpanel->maxLength(400);
panel->add(subpanel); panel->add(subpanel);
auto button = std::make_shared<Button>( panel->add(std::make_shared<Button>(
langs::get(L"Back to Main Menu", L"menu"), vec4(8.0f) langs::get(L"Back to Main Menu", L"menu"), vec4(8.0f), [=](GUI*){
); menu->back();
button->listenAction([=](GUI*){ }
menu->back(); ));
});
panel->add(button);
menu->set("missing-content"); menu->set("missing-content");
} }
@@ -157,12 +155,13 @@ void create_languages_panel(Engine* engine) {
std::string& fullName = locale.name; std::string& fullName = locale.name;
auto button = std::make_shared<Button>( 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(button);
} }
panel->add(guiutil::backButton(menu)); panel->add(guiutil::backButton(menu));
@@ -260,13 +259,11 @@ void create_main_menu_panel(Engine* engine) {
panel->add(create_worlds_panel(engine)); panel->add(create_worlds_panel(engine));
panel->add(guiutil::gotoButton(L"Settings", "settings", menu)); panel->add(guiutil::gotoButton(L"Settings", "settings", menu));
auto quitbtn = std::make_shared<Button>( panel->add(std::make_shared<Button>(
langs::get(L"Quit", L"menu"), vec4(10.f) langs::get(L"Quit", L"menu"), vec4(10.f), [](GUI*) {
); Window::setShouldClose(true);
quitbtn->listenAction([](GUI* gui) { }
Window::setShouldClose(true); ));
});
panel->add(quitbtn);
} }
typedef std::function<void(const ContentPack& pack)> packconsumer; typedef std::function<void(const ContentPack& pack)> packconsumer;