Button constructor update
This commit is contained in:
parent
1ba563d42a
commit
4d6e4c8b87
@ -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);
|
||||
|
||||
@ -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;
|
||||
|
||||
|
||||
@ -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);
|
||||
|
||||
|
||||
@ -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;
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user