Button constructor update
This commit is contained in:
@@ -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);
|
||||||
|
|||||||
@@ -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;
|
||||||
|
|
||||||
|
|||||||
@@ -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
@@ -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;
|
||||||
|
|||||||
Reference in New Issue
Block a user