aboutsummaryrefslogtreecommitdiff
path: root/gui/ThemeParser.cpp
diff options
context:
space:
mode:
authorVicent Marti2008-08-07 10:53:33 +0000
committerVicent Marti2008-08-07 10:53:33 +0000
commit21989844a9800fe76af93c6b2d70ffd76bf73546 (patch)
treead06bf78192552f820f8474e82fde31371343a29 /gui/ThemeParser.cpp
parent8cb26074bd8d5381d11cae9e9acb2da3df9d5387 (diff)
downloadscummvm-rg350-21989844a9800fe76af93c6b2d70ffd76bf73546.tar.gz
scummvm-rg350-21989844a9800fe76af93c6b2d70ffd76bf73546.tar.bz2
scummvm-rg350-21989844a9800fe76af93c6b2d70ffd76bf73546.zip
Game Options menu parsing.
Added support for importing layouts inside other layouts. Misc bugfixes. svn-id: r33676
Diffstat (limited to 'gui/ThemeParser.cpp')
-rw-r--r--gui/ThemeParser.cpp30
1 files changed, 26 insertions, 4 deletions
diff --git a/gui/ThemeParser.cpp b/gui/ThemeParser.cpp
index 868b6fa9e7..eec0826a8f 100644
--- a/gui/ThemeParser.cpp
+++ b/gui/ThemeParser.cpp
@@ -458,6 +458,14 @@ bool ThemeParser::parserCallback_widget(ParserNode *node) {
var = node->values["name"];
int width = -1;
int height = -1;
+ bool enabled = true;
+
+ if (node->values.contains("enabled")) {
+ if (node->values["enabled"] == "false")
+ enabled = false;
+ else if (node->values["enabled"] != "true")
+ return parserError("Invalid value for Widget enabling (expecting true/false)");
+ }
if (node->values.contains("width")) {
if (_theme->themeEval()->hasVar(node->values["width"]) == true)
@@ -475,7 +483,7 @@ bool ThemeParser::parserCallback_widget(ParserNode *node) {
return parserError("Corrupted height value in key for %s", var.c_str());
}
- _theme->themeEval()->addWidget(var, width, height, node->values["type"]);
+ _theme->themeEval()->addWidget(var, width, height, node->values["type"], enabled);
}
return true;
@@ -492,7 +500,16 @@ bool ThemeParser::parserCallback_child(ParserNode *node) {
bool ThemeParser::parserCallback_dialog(ParserNode *node) {
Common::String var = "Dialog." + node->values["name"];
- _theme->themeEval()->addDialog(var, node->values["overlays"]);
+ bool enabled = true;
+
+ if (node->values.contains("enabled")) {
+ if (node->values["enabled"] == "false")
+ enabled = false;
+ else if (node->values["enabled"] != "true")
+ return parserError("Invalid value for Dialog enabling (expecting true/false)");
+ }
+
+ _theme->themeEval()->addDialog(var, node->values["overlays"], enabled);
if (node->values.contains("shading")) {
int shading = 0;
@@ -508,6 +525,13 @@ bool ThemeParser::parserCallback_dialog(ParserNode *node) {
return true;
}
+bool ThemeParser::parserCallback_import(ParserNode *node) {
+
+ if (!_theme->themeEval()->addImportedLayout(node->values["layout"]))
+ return parserError("Error when importing external layout");
+ return true;
+}
+
bool ThemeParser::parserCallback_layout(ParserNode *node) {
int spacing = -1;
@@ -535,8 +559,6 @@ bool ThemeParser::parserCallback_layout(ParserNode *node) {
_theme->themeEval()->addPadding(paddingL, paddingR, paddingT, paddingB);
}
-
-
return true;
}