scriptenv?

This commit is contained in:
MihailRis
2024-04-21 15:41:47 +03:00
parent d213902648
commit 635e512142
26 changed files with 128 additions and 158 deletions
+6 -6
View File
@@ -6,7 +6,7 @@
#include <glm/glm.hpp>
#include "../../logic/scripting/Environment.h"
#include "../../logic/scripting/scripting.h"
#include "../../frontend/locale/langs.h"
#include "../../util/stringutil.h"
#include "../../delegates.h"
@@ -32,12 +32,12 @@ std::shared_ptr<Button> guiutil::gotoButton(
));
}
std::shared_ptr<gui::UINode> guiutil::create(const std::string& source, int envid) {
scripting::Environment env(envid);
std::shared_ptr<gui::UINode> guiutil::create(const std::string& source, scriptenv env) {
if (env == nullptr) {
env = scripting::get_root_environment();
}
UiXmlReader reader(env);
auto node = reader.readXML("<string>", source);
env.release();
return node;
return reader.readXML("<string>", source);
}
void guiutil::alert(GUI* gui, const std::wstring& text, runnable on_hidden) {
+2 -1
View File
@@ -4,6 +4,7 @@
#include <memory>
#include <string>
#include "GUI.h"
#include "../../typedefs.h"
#include "../../delegates.h"
namespace gui {
@@ -23,7 +24,7 @@ namespace guiutil {
/// @brief Create element from XML
/// @param source XML
std::shared_ptr<gui::UINode> create(const std::string& source, int env=0);
std::shared_ptr<gui::UINode> create(const std::string& source, scriptenv env=0);
void alert(
gui::GUI* gui,
+12 -13
View File
@@ -13,7 +13,6 @@
#include "../../frontend/locale/langs.h"
#include "../../logic/scripting/scripting.h"
#include "../../logic/scripting/Environment.h"
#include "../../util/stringutil.h"
#include "../../window/Events.h"
@@ -86,7 +85,7 @@ static void _readUINode(UiXmlReader& reader, xml::xmlelement element, UINode& no
}
if (element->has("position-func")) {
auto supplier = scripting::create_vec2_supplier(
reader.getEnvironment().getId(),
reader.getEnvironment(),
element->attr("position-func").getText(),
reader.getFilename()+".lua"
);
@@ -111,7 +110,7 @@ static void _readUINode(UiXmlReader& reader, xml::xmlelement element, UINode& no
std::string text = element->attr("onclick").getText();
if (!text.empty()) {
auto callback = scripting::create_runnable(
reader.getEnvironment().getId(),
reader.getEnvironment(),
text,
reader.getFilename()
);
@@ -210,7 +209,7 @@ static std::shared_ptr<UINode> readLabel(UiXmlReader& reader, xml::xmlelement el
}
if (element->has("supplier")) {
auto supplier = scripting::create_wstring_supplier(
reader.getEnvironment().getId(),
reader.getEnvironment(),
element->attr("supplier").getText(),
reader.getFilename()
);
@@ -264,7 +263,7 @@ static std::shared_ptr<UINode> readCheckBox(UiXmlReader& reader, xml::xmlelement
if (element->has("consumer")) {
auto consumer = scripting::create_bool_consumer(
reader.getEnvironment().getId(),
reader.getEnvironment(),
element->attr("consumer").getText(),
reader.getFilename()
);
@@ -273,7 +272,7 @@ static std::shared_ptr<UINode> readCheckBox(UiXmlReader& reader, xml::xmlelement
if (element->has("supplier")) {
auto supplier = scripting::create_bool_supplier(
reader.getEnvironment().getId(),
reader.getEnvironment(),
element->attr("supplier").getText(),
reader.getFilename()
);
@@ -299,7 +298,7 @@ static std::shared_ptr<UINode> readTextBox(UiXmlReader& reader, xml::xmlelement
if (element->has("consumer")) {
auto consumer = scripting::create_wstring_consumer(
reader.getEnvironment().getId(),
reader.getEnvironment(),
element->attr("consumer").getText(),
reader.getFilename()
);
@@ -308,7 +307,7 @@ static std::shared_ptr<UINode> readTextBox(UiXmlReader& reader, xml::xmlelement
if (element->has("supplier")) {
auto supplier = scripting::create_wstring_supplier(
reader.getEnvironment().getId(),
reader.getEnvironment(),
element->attr("supplier").getText(),
reader.getFilename()
);
@@ -322,7 +321,7 @@ static std::shared_ptr<UINode> readTextBox(UiXmlReader& reader, xml::xmlelement
}
if (element->has("validator")) {
auto validator = scripting::create_wstring_validator(
reader.getEnvironment().getId(),
reader.getEnvironment(),
element->attr("validator").getText(),
reader.getFilename()
);
@@ -348,7 +347,7 @@ static std::shared_ptr<UINode> readTrackBar(UiXmlReader& reader, xml::xmlelement
_readUINode(reader, element, *bar);
if (element->has("consumer")) {
auto consumer = scripting::create_number_consumer(
reader.getEnvironment().getId(),
reader.getEnvironment(),
element->attr("consumer").getText(),
reader.getFilename()
);
@@ -356,7 +355,7 @@ static std::shared_ptr<UINode> readTrackBar(UiXmlReader& reader, xml::xmlelement
}
if (element->has("supplier")) {
auto supplier = scripting::create_number_supplier(
reader.getEnvironment().getId(),
reader.getEnvironment(),
element->attr("supplier").getText(),
reader.getFilename()
);
@@ -381,7 +380,7 @@ static std::shared_ptr<UINode> readInputBindBox(UiXmlReader& reader, xml::xmlele
return bindbox;
}
UiXmlReader::UiXmlReader(const scripting::Environment& env) : env(env) {
UiXmlReader::UiXmlReader(const scriptenv& env) : env(env) {
contextStack.push("");
add("image", readImage);
add("label", readLabel);
@@ -460,6 +459,6 @@ const std::string& UiXmlReader::getFilename() const {
return filename;
}
const scripting::Environment& UiXmlReader::getEnvironment() const {
const scriptenv& UiXmlReader::getEnvironment() const {
return env;
}
+3 -7
View File
@@ -9,10 +9,6 @@
#include "GUI.h"
#include "../../coders/xml.h"
namespace scripting {
class Environment;
}
namespace gui {
class UiXmlReader;
@@ -23,9 +19,9 @@ namespace gui {
std::unordered_set<std::string> ignored;
std::stack<std::string> contextStack;
std::string filename;
const scripting::Environment& env;
const scriptenv& env;
public:
UiXmlReader(const scripting::Environment& env);
UiXmlReader(const scriptenv& env);
void add(const std::string& tag, uinode_reader reader);
bool hasReader(const std::string& tag) const;
@@ -56,7 +52,7 @@ namespace gui {
);
const std::string& getContext() const;
const scripting::Environment& getEnvironment() const;
const scriptenv& getEnvironment() const;
const std::string& getFilename() const;
};
}