xml: second Button constructor support
This commit is contained in:
parent
8b8bc55ff7
commit
bd2eb13118
@ -244,12 +244,11 @@ std::shared_ptr<Panel> create_worlds_panel(Engine* engine) {
|
||||
});
|
||||
btn->add(std::make_shared<Label>(namews), glm::vec2(8, 8));
|
||||
|
||||
auto image = std::make_shared<Image>("gui/delete_icon", glm::vec2(32, 32));
|
||||
image->setColor(glm::vec4(1, 1, 1, 0.5f));
|
||||
|
||||
auto delbtn = std::make_shared<Button>(image, glm::vec4(2));
|
||||
delbtn->setColor(glm::vec4(0.0f));
|
||||
delbtn->setHoverColor(glm::vec4(1.0f, 1.0f, 1.0f, 0.17f));
|
||||
auto delbtn = std::dynamic_pointer_cast<Button>(guiutil::create(
|
||||
"<button color='#00000000' hover-color='#FFFFFF2B' padding='2,2,2,2'>"
|
||||
" <image src='gui/delete_icon' size='32,32' color='#FFFFFF80'/>"
|
||||
"</button>"
|
||||
));
|
||||
delbtn->listenAction([=](GUI* gui) {
|
||||
guiutil::confirm(gui, langs::get(L"delete-confirm", L"world")+
|
||||
L" ("+util::str2wstr_utf8(folder.u8string())+L")", [=]() {
|
||||
@ -281,8 +280,7 @@ void create_main_menu_panel(Engine* engine) {
|
||||
}
|
||||
|
||||
void create_404_page(Engine* engine) {
|
||||
auto menu = engine->getGUI()->getMenu();
|
||||
|
||||
auto menu = engine->getGUI()->getMenu();
|
||||
auto panel = menus::create_page(engine, "404", 400, 0.0f, 8);
|
||||
panel->add(guiutil::create("<label context='menu'>@Page does not exists</label>"));
|
||||
panel->add(guiutil::backButton(menu));
|
||||
|
||||
@ -118,7 +118,7 @@ void UiXmlReader::readUINode(UiXmlReader& reader, xml::xmlelement element, UINod
|
||||
_readUINode(reader, element, node);
|
||||
}
|
||||
|
||||
static void _readPanel(UiXmlReader& reader, xml::xmlelement element, Panel& panel) {
|
||||
static void _readPanel(UiXmlReader& reader, xml::xmlelement element, Panel& panel, bool subnodes=true) {
|
||||
_readUINode(reader, element, panel);
|
||||
|
||||
if (element->has("padding")) {
|
||||
@ -136,12 +136,14 @@ static void _readPanel(UiXmlReader& reader, xml::xmlelement element, Panel& pane
|
||||
if (element->has("max-length")) {
|
||||
panel.setMaxLength(element->attr("max-length").asInt());
|
||||
}
|
||||
for (auto& sub : element->getElements()) {
|
||||
if (sub->isText())
|
||||
continue;
|
||||
auto subnode = reader.readUINode(sub);
|
||||
if (subnode) {
|
||||
panel.add(subnode);
|
||||
if (subnodes) {
|
||||
for (auto& sub : element->getElements()) {
|
||||
if (sub->isText())
|
||||
continue;
|
||||
auto subnode = reader.readUINode(sub);
|
||||
if (subnode) {
|
||||
panel.add(subnode);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -197,9 +199,16 @@ static std::shared_ptr<UINode> readPanel(UiXmlReader& reader, xml::xmlelement el
|
||||
}
|
||||
|
||||
static std::shared_ptr<UINode> readButton(UiXmlReader& reader, xml::xmlelement element) {
|
||||
std::wstring text = readAndProcessInnerText(element, reader.getContext());
|
||||
auto button = std::make_shared<Button>(text, glm::vec4(0.0f), nullptr);
|
||||
_readPanel(reader, element, *button);
|
||||
std::shared_ptr<Button> button;
|
||||
if (!element->getElements().empty()) {
|
||||
glm::vec4 padding = element->attr("padding", "0,0,0,0").asVec4();
|
||||
button = std::make_shared<Button>(reader.readUINode(element->getElements().at(0)), padding);
|
||||
_readPanel(reader, element, *button, false);
|
||||
} else {
|
||||
std::wstring text = readAndProcessInnerText(element, reader.getContext());
|
||||
button = std::make_shared<Button>(text, glm::vec4(0.0f), nullptr);
|
||||
_readPanel(reader, element, *button, true);
|
||||
}
|
||||
|
||||
if (element->has("onclick")) {
|
||||
auto callback = scripting::create_runnable(
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user