diff options
| author | Vicent Marti | 2008-08-07 10:53:33 +0000 | 
|---|---|---|
| committer | Vicent Marti | 2008-08-07 10:53:33 +0000 | 
| commit | 21989844a9800fe76af93c6b2d70ffd76bf73546 (patch) | |
| tree | ad06bf78192552f820f8474e82fde31371343a29 /gui/ThemeParser.cpp | |
| parent | 8cb26074bd8d5381d11cae9e9acb2da3df9d5387 (diff) | |
| download | scummvm-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.cpp | 30 | 
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;  }  | 
