add iframe 'src' scripting property
This commit is contained in:
parent
8b0f350b69
commit
f21d9d0a25
@ -49,3 +49,7 @@ void InlineFrame::setSize(glm::vec2 size) {
|
|||||||
root->setSize(size);
|
root->setSize(size);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const std::string& InlineFrame::getSrc() const {
|
||||||
|
return src;
|
||||||
|
}
|
||||||
|
|||||||
@ -15,6 +15,8 @@ namespace gui {
|
|||||||
|
|
||||||
void act(float delta) override;
|
void act(float delta) override;
|
||||||
void setSize(glm::vec2 size) override;
|
void setSize(glm::vec2 size) override;
|
||||||
|
|
||||||
|
const std::string& getSrc() const;
|
||||||
private:
|
private:
|
||||||
std::string src;
|
std::string src;
|
||||||
std::shared_ptr<UiDocument> document;
|
std::shared_ptr<UiDocument> document;
|
||||||
|
|||||||
@ -13,6 +13,7 @@
|
|||||||
#include "graphics/ui/elements/Panel.hpp"
|
#include "graphics/ui/elements/Panel.hpp"
|
||||||
#include "graphics/ui/elements/TextBox.hpp"
|
#include "graphics/ui/elements/TextBox.hpp"
|
||||||
#include "graphics/ui/elements/TrackBar.hpp"
|
#include "graphics/ui/elements/TrackBar.hpp"
|
||||||
|
#include "graphics/ui/elements/InlineFrame.hpp"
|
||||||
#include "graphics/ui/gui_util.hpp"
|
#include "graphics/ui/gui_util.hpp"
|
||||||
#include "graphics/ui/markdown.hpp"
|
#include "graphics/ui/markdown.hpp"
|
||||||
#include "graphics/core/Font.hpp"
|
#include "graphics/core/Font.hpp"
|
||||||
@ -330,6 +331,8 @@ static int p_get_markup(UINode* node, lua::State* L) {
|
|||||||
static int p_get_src(UINode* node, lua::State* L) {
|
static int p_get_src(UINode* node, lua::State* L) {
|
||||||
if (auto image = dynamic_cast<Image*>(node)) {
|
if (auto image = dynamic_cast<Image*>(node)) {
|
||||||
return lua::pushstring(L, image->getTexture());
|
return lua::pushstring(L, image->getTexture());
|
||||||
|
} else if (auto iframe = dynamic_cast<InlineFrame*>(node)) {
|
||||||
|
return lua::pushstring(L, iframe->getSrc());
|
||||||
}
|
}
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
@ -644,6 +647,8 @@ static void p_set_markup(UINode* node, lua::State* L, int idx) {
|
|||||||
static void p_set_src(UINode* node, lua::State* L, int idx) {
|
static void p_set_src(UINode* node, lua::State* L, int idx) {
|
||||||
if (auto image = dynamic_cast<Image*>(node)) {
|
if (auto image = dynamic_cast<Image*>(node)) {
|
||||||
image->setTexture(lua::require_string(L, idx));
|
image->setTexture(lua::require_string(L, idx));
|
||||||
|
} else if (auto iframe = dynamic_cast<InlineFrame*>(node)) {
|
||||||
|
iframe->setSrc(lua::require_string(L, idx));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
static void p_set_value(UINode* node, lua::State* L, int idx) {
|
static void p_set_value(UINode* node, lua::State* L, int idx) {
|
||||||
@ -704,10 +709,10 @@ static void p_set_inventory(UINode* node, lua::State* L, int idx) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
static void p_set_focused(
|
static void p_set_focused(
|
||||||
const std::shared_ptr<UINode>& node, lua::State* L, int idx
|
UINode* node, lua::State* L, int idx
|
||||||
) {
|
) {
|
||||||
if (lua::toboolean(L, idx) && !node->isFocused()) {
|
if (lua::toboolean(L, idx) && !node->isFocused()) {
|
||||||
engine->getGUI().setFocus(node);
|
engine->getGUI().setFocus(node->shared_from_this());
|
||||||
} else if (node->isFocused()) {
|
} else if (node->isFocused()) {
|
||||||
node->defocus();
|
node->defocus();
|
||||||
}
|
}
|
||||||
@ -771,21 +776,12 @@ static int l_gui_setattr(lua::State* L) {
|
|||||||
{"page", p_set_page},
|
{"page", p_set_page},
|
||||||
{"inventory", p_set_inventory},
|
{"inventory", p_set_inventory},
|
||||||
{"cursor", p_set_cursor},
|
{"cursor", p_set_cursor},
|
||||||
|
{"focused", p_set_focused},
|
||||||
};
|
};
|
||||||
auto func = setters.find(attr);
|
auto func = setters.find(attr);
|
||||||
if (func != setters.end()) {
|
if (func != setters.end()) {
|
||||||
func->second(node.get(), L, 4);
|
func->second(node.get(), L, 4);
|
||||||
}
|
}
|
||||||
static const std::unordered_map<
|
|
||||||
std::string_view,
|
|
||||||
std::function<void(std::shared_ptr<UINode>, lua::State*, int)>>
|
|
||||||
setters2 {
|
|
||||||
{"focused", p_set_focused},
|
|
||||||
};
|
|
||||||
auto func2 = setters2.find(attr);
|
|
||||||
if (func2 != setters2.end()) {
|
|
||||||
func2->second(node, L, 4);
|
|
||||||
}
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user