[Scummvm-cvs-logs] SF.net SVN: scummvm:[33676] scummvm/branches/gsoc2008-gui/gui

Tanoku at users.sourceforge.net Tanoku at users.sourceforge.net
Thu Aug 7 12:53:34 CEST 2008


Revision: 33676
          http://scummvm.svn.sourceforge.net/scummvm/?rev=33676&view=rev
Author:   Tanoku
Date:     2008-08-07 10:53:33 +0000 (Thu, 07 Aug 2008)

Log Message:
-----------
Game Options menu parsing.
Added support for importing layouts inside other layouts.
Misc bugfixes.

Modified Paths:
--------------
    scummvm/branches/gsoc2008-gui/gui/TabWidget.cpp
    scummvm/branches/gsoc2008-gui/gui/ThemeEval.cpp
    scummvm/branches/gsoc2008-gui/gui/ThemeEval.h
    scummvm/branches/gsoc2008-gui/gui/ThemeParser.cpp
    scummvm/branches/gsoc2008-gui/gui/ThemeParser.h
    scummvm/branches/gsoc2008-gui/gui/ThemeRenderer.cpp
    scummvm/branches/gsoc2008-gui/gui/dialog.cpp
    scummvm/branches/gsoc2008-gui/gui/launcher.cpp
    scummvm/branches/gsoc2008-gui/gui/themes/default.inc
    scummvm/branches/gsoc2008-gui/gui/themes/modern.stx
    scummvm/branches/gsoc2008-gui/gui/widget.cpp

Modified: scummvm/branches/gsoc2008-gui/gui/TabWidget.cpp
===================================================================
--- scummvm/branches/gsoc2008-gui/gui/TabWidget.cpp	2008-08-07 09:11:23 UTC (rev 33675)
+++ scummvm/branches/gsoc2008-gui/gui/TabWidget.cpp	2008-08-07 10:53:33 UTC (rev 33676)
@@ -28,6 +28,8 @@
 #include "gui/newgui.h"
 #include "gui/eval.h"
 
+#include "gui/ThemeEval.h"
+
 namespace GUI {
 
 enum {
@@ -55,14 +57,14 @@
 	_activeTab = -1;
 	_firstVisibleTab = 0;
 
-	_tabWidth = g_gui.evaluator()->getVar("TabWidget.tabWidth");
-	_tabHeight = g_gui.evaluator()->getVar("TabWidget.tabHeight");
-	_titleVPad = g_gui.evaluator()->getVar("TabWidget.titleVPad");
+	_tabWidth = g_gui.xmlEval()->getVar("Globals.TabWidget.Tab.Width");
+	_tabHeight = g_gui.xmlEval()->getVar("Globals.TabWidget.Tab.Height");
+	_titleVPad = g_gui.xmlEval()->getVar("Globals.TabWidget.Tab.Padding.Top");
 
-	_butRP = g_gui.evaluator()->getVar("TabWidget.navButtonRightPad", 0);
-	_butTP = g_gui.evaluator()->getVar("TabWidget.navButtonTopPad", 0);
-	_butW = g_gui.evaluator()->getVar("TabWidget.navButtonW", 10);
-	_butH = g_gui.evaluator()->getVar("TabWidget.navButtonH", 10);
+	_butRP = g_gui.xmlEval()->getVar("Globals.TabWidget.navButtonPadding.Right", 0);
+	_butTP = g_gui.xmlEval()->getVar("Globals.TabWidget.NavButton.Padding.Top", 0);
+	_butW = g_gui.xmlEval()->getVar("Globals.TabWidget.NavButton.Width", 10);
+	_butH = g_gui.xmlEval()->getVar("Globals.TabWidget.NavButton.Height", 10);
 
 	int x = _w - _butRP - _butW * 2 - 2;
 	int y = _butTP - _tabHeight;
@@ -96,7 +98,7 @@
 
 	int numTabs = _tabs.size();
 
-	if (g_gui.evaluator()->getVar("TabWidget.tabWidth") == 0) {
+	if (g_gui.xmlEval()->getVar("Globals.TabWidget.Tab.Width") == 0) {
 		if (_tabWidth == 0)
 			_tabWidth = 40;
 		// Determine the new tab width
@@ -216,9 +218,9 @@
 		}
 	}
 
-	_tabHeight = g_gui.evaluator()->getVar("TabWidget.tabHeight");
-	_tabWidth = g_gui.evaluator()->getVar("TabWidget.tabWidth");
-	_titleVPad = g_gui.evaluator()->getVar("TabWidget.titleVPad");
+	_tabHeight = g_gui.xmlEval()->getVar("Globals.TabWidget.Tab.Height");
+	_tabWidth = g_gui.xmlEval()->getVar("Globals.TabWidget.Tab.Width");
+	_titleVPad = g_gui.xmlEval()->getVar("Globals.TabWidget.Tab.Padding.Top");
 
 	if (_tabWidth == 0) {
 		_tabWidth = 40;
@@ -234,10 +236,10 @@
 		}
 	}
 
-	_butRP = g_gui.evaluator()->getVar("TabWidget.navButtonRightPad", 0);
-	_butTP = g_gui.evaluator()->getVar("TabWidget.navButtonTopPad", 0);
-	_butW = g_gui.evaluator()->getVar("TabWidget.navButtonW", 10);
-	_butH = g_gui.evaluator()->getVar("TabWidget.navButtonH", 10);
+	_butRP = g_gui.xmlEval()->getVar("Globals.TabWidget.NavButton.PaddingRight", 0);
+	_butTP = g_gui.xmlEval()->getVar("Globals.TabWidget.NavButton.Padding.Top", 0);
+	_butW = g_gui.xmlEval()->getVar("GlobalsTabWidget.NavButton.Width", 10);
+	_butH = g_gui.xmlEval()->getVar("Globals.TabWidget.NavButton.Height", 10);
 
 	int x = _w - _butRP - _butW * 2 - 2;
 	int y = _butTP - _tabHeight;

Modified: scummvm/branches/gsoc2008-gui/gui/ThemeEval.cpp
===================================================================
--- scummvm/branches/gsoc2008-gui/gui/ThemeEval.cpp	2008-08-07 09:11:23 UTC (rev 33675)
+++ scummvm/branches/gsoc2008-gui/gui/ThemeEval.cpp	2008-08-07 10:53:33 UTC (rev 33676)
@@ -59,9 +59,13 @@
 	assert(_children.size() <= 1);
 	
 	if (_children.size()) {
+		_children[0]->resetLayout();
 		_children[0]->setWidth(_w);
 		_children[0]->setHeight(_h);
 		_children[0]->reflowLayout();
+		
+//		_children[0]->setX(_x);
+//		_children[0]->setY(_y);
 	}
 }
 
@@ -75,6 +79,7 @@
 	for (uint i = 0; i < _children.size(); ++i) {
 		assert(_children[i]->getLayoutType() != kLayoutVertical);
 	
+		_children[i]->resetLayout();
 		_children[i]->reflowLayout();
 	
 		if (i != _children.size() - 1)
@@ -88,7 +93,7 @@
 			
 		_children[i]->setY(curY);
 		
-		if (_centered)
+		if (_centered && _children[i]->getWidth() < _w)
 			_children[i]->setX((_w >> 1) - (_children[i]->getWidth() >> 1));
 		else
 			_children[i]->setX(curX);
@@ -115,22 +120,24 @@
 	for (uint i = 0; i < _children.size(); ++i) {
 		assert(_children[i]->getLayoutType() != kLayoutHorizontal);
 	
+		_children[i]->resetLayout();
 		_children[i]->reflowLayout();
 	
 		if (i != _children.size() - 1)
 			assert(_children[i]->getWidth() != -1);
-			
-		if (i == 0)
-			assert(_children[i]->getHeight() != -1);
 	
 		if (_children[i]->getHeight() == -1)
-			_children[i]->setHeight(_h - _paddingTop - _paddingBottom);
+			_children[i]->setHeight((_h == -1 ? getParentH() : _h) - _paddingTop - _paddingBottom);
 
 		if (_children[i]->getWidth() == -1)
 			_children[i]->setWidth(getParentW() - _w - _spacing);
 			
 		_children[i]->setX(curX);
-		_children[i]->setY(curY);
+		
+		if (_centered && _children[i]->getHeight() < _h)
+			_children[i]->setY((_h >> 1) - (_children[i]->getHeight() >> 1));
+		else
+			_children[i]->setY(curY);
 			
 		if (_reverse) {
 			for (int j = i - 1; j >= 0; --j)
@@ -145,27 +152,24 @@
 }
 
 
-void ThemeEval::addWidget(const Common::String &name, int w, int h, const Common::String &type) {
-	ThemeLayoutWidget *widget = new ThemeLayoutWidget(_curLayout.top(), name);
-	
+void ThemeEval::addWidget(const Common::String &name, int w, int h, const Common::String &type, bool enabled) {	
 	int typeW = -1;
 	int typeH = -1;
 	
 	if (!type.empty()) {
 		typeW = getVar("Globals." + type + ".Width", -1);
 		typeH = getVar("Globals." + type + ".Height", -1);
-	}	
+	}
 	
-	widget->setWidth(typeW == -1 ? w : typeW);
-	widget->setHeight(typeH == -1 ? h : typeH);
+	ThemeLayoutWidget *widget = new ThemeLayoutWidget(_curLayout.top(), name, 
+								typeW == -1 ? w : typeW, 
+								typeH == -1 ? h : typeH);
 	
 	_curLayout.top()->addChild(widget);
+	setVar(_curDialog + "." + name + ".Enabled", enabled ? 1 : 0);
 }
 
-void ThemeEval::addDialog(const Common::String &name, const Common::String &overlays) {
-	ThemeLayout *layout = new ThemeLayoutMain();
-	_layouts[name] = layout;
-
+void ThemeEval::addDialog(const Common::String &name, const Common::String &overlays, bool enabled) {
 	int16 x, y;
 	uint16 w, h;
 	
@@ -177,10 +181,8 @@
 		error("Error when loading dialog position for '%s'", overlays.c_str());
 	}
 	
-	layout->setX(x);
-	layout->setY(y);
-	layout->setWidth(w);
-	layout->setHeight(h);
+	ThemeLayout *layout = new ThemeLayoutMain(x, y, w, h);
+	_layouts[name] = layout;
 
 	layout->setPadding(
 		getVar("Globals.Padding.Left", 0),
@@ -190,6 +192,8 @@
 		);
 	
 	_curLayout.push(layout);
+	_curDialog = name;
+	setVar(name + ".Enabled", enabled ? 1 : 0);
 }
 
 void ThemeEval::addLayout(ThemeLayout::LayoutType type, int spacing, bool reverse, bool center) {
@@ -219,4 +223,12 @@
 	_curLayout.top()->addChild(space);
 }
 
+bool ThemeEval::addImportedLayout(const Common::String &name) {
+	if (!_layouts.contains(name))
+		return false;
+		
+	_curLayout.top()->importLayout(_layouts[name]);
+	return true;
 }
+
+}

Modified: scummvm/branches/gsoc2008-gui/gui/ThemeEval.h
===================================================================
--- scummvm/branches/gsoc2008-gui/gui/ThemeEval.h	2008-08-07 09:11:23 UTC (rev 33675)
+++ scummvm/branches/gsoc2008-gui/gui/ThemeEval.h	2008-08-07 10:53:33 UTC (rev 33676)
@@ -60,6 +60,13 @@
 		
 	virtual void reflowLayout() = 0;
 	
+	virtual void resetLayout() {
+		_x = 0;
+		_y = 0;
+		_w = _defaultW;
+		_h = _defaultH;
+	}
+	
 	void addChild(ThemeLayout *child) { _children.push_back(child); }
 	
 	void setPadding(int8 left, int8 right, int8 top, int8 bottom) {
@@ -154,8 +161,27 @@
 		return true;
 	}
 	
+	virtual ThemeLayout *buildCopy() = 0;
+	
+	void importLayout(ThemeLayout *layout) {
+		assert(layout->getLayoutType() == kLayoutMain);
+		
+		if (layout->_children.size() == 0)
+			return;
+		
+		layout = layout->_children[0];
+		
+		if (getLayoutType() == layout->getLayoutType()) {
+			for (uint i = 0; i < layout->_children.size(); ++i)
+				_children.push_back(layout->_children[i]->buildCopy()); 
+		} else {
+			_children.push_back(layout->buildCopy()); 
+		}
+	}
+	
 protected:
 	int16 _x, _y, _w, _h;
+	int16 _defaultW, _defaultH;
 	int8 _paddingTop, _paddingBottom, _paddingLeft, _paddingRight;
 	int8 _spacing;
 	Common::Array<ThemeLayout*> _children;
@@ -167,10 +193,28 @@
 
 class ThemeLayoutMain : public ThemeLayout {
 public:
-	ThemeLayoutMain() : ThemeLayout(0, "") {}
+	ThemeLayoutMain(int16 x, int16 y, int16 w, int16 h) : ThemeLayout(0, "") {
+		_w = _defaultW = w;
+		_h = _defaultH = h;
+		_x = _defaultX = x;
+		_y = _defaultY = y;
+	}
 	void reflowLayout();
+	
+	void resetLayout() {
+		ThemeLayout::resetLayout();
+		_x = _defaultX;
+		_y = _defaultY;
+	}
+	
 	const char *getName() { return "Global Layout"; }
 	LayoutType getLayoutType() { return kLayoutMain; }
+	
+	ThemeLayout *buildCopy() { assert(!"Do not copy Main Layouts!"); return 0; }
+	
+protected:
+	int16 _defaultX;
+	int16 _defaultY;
 };	
 
 class ThemeLayoutVertical : public ThemeLayout {
@@ -185,6 +229,16 @@
 	void reflowLayout();
 	const char *getName() { return "Vertical Layout"; }
 	LayoutType getLayoutType() { return kLayoutVertical; }
+	
+	
+	ThemeLayout *buildCopy() { 
+		ThemeLayoutVertical *n = new ThemeLayoutVertical(*this);
+		
+		for (uint i = 0; i < n->_children.size(); ++ i)
+			n->_children[i] = n->_children[i]->buildCopy();
+		
+		return n;
+	}
 };
 
 class ThemeLayoutHorizontal : public ThemeLayout {
@@ -199,25 +253,40 @@
 	void reflowLayout();
 	const char *getName() { return "Horizontal Layout"; }
 	LayoutType getLayoutType() { return kLayoutHorizontal; }
+	
+	ThemeLayout *buildCopy() { 
+		ThemeLayoutHorizontal *n = new ThemeLayoutHorizontal(*this);
+		
+		for (uint i = 0; i < n->_children.size(); ++ i)
+			n->_children[i] = n->_children[i]->buildCopy();
+		
+		return n;
+	}
 };
 
 class ThemeLayoutWidget : public ThemeLayout {
 public:
-	ThemeLayoutWidget(ThemeLayout *p, const Common::String &name) : ThemeLayout(p, name) {}
+	ThemeLayoutWidget(ThemeLayout *p, const Common::String &name, int16 w, int16 h) : ThemeLayout(p, name) {
+		_w = _defaultW = w;
+		_h = _defaultH = h;
+	}
+	
 	bool getWidgetData(const Common::String &name, int16 &x, int16 &y, uint16 &w, uint16 &h);
 	void reflowLayout() {}
 	LayoutType getLayoutType() { return kLayoutWidget; }
+	
+	ThemeLayout *buildCopy() { return new ThemeLayoutWidget(*this); }
 };
 
 class ThemeLayoutSpacing : public ThemeLayout {
 public:
 	ThemeLayoutSpacing(ThemeLayout *p, int size) : ThemeLayout(p, "") {
 		if (p->getLayoutType() == kLayoutHorizontal) {
-			_w = size;
-			_h = 1;
+			_w = _defaultW = size;
+			_h = _defaultH = 1;
 		} else if (p->getLayoutType() == kLayoutVertical) {
-			_w = 1;
-			_h = size;
+			_w = _defaultW = 1;
+			_h = _defaultH = size;
 		}
 	}
 	
@@ -225,6 +294,8 @@
 	void reflowLayout() {}
 	LayoutType getLayoutType() { return kLayoutWidget; }
 	const char *getName() { return "SPACE"; }
+	
+	ThemeLayout *buildCopy() { return new ThemeLayoutSpacing(*this); }
 };
 	
 class ThemeEval {
@@ -238,7 +309,7 @@
 	
 	int getVar(const Common::String &s) {
 		if (!_vars.contains(s)) {
-			warning("Missing variable: '%s'", s.c_str());
+			error("CRITICAL: Missing variable: '%s'", s.c_str());
 			return -13375; //EVAL_UNDEF_VAR
 		} 
 		
@@ -246,21 +317,17 @@
 	}
 	
 	int getVar(const Common::String &s, int def) {
-		if (_vars.contains(s))
-			return _vars[s];
-		
-		warning("Returning default value %d for '%s'", def, s.c_str());
-		return def;
-//		return (_vars.contains(s)) ? _vars[s] : def;
+		return (_vars.contains(s)) ? _vars[s] : def;
 	}
 	
 	void setVar(const String &name, int val) { _vars[name] = val; }
 	
 	bool hasVar(const Common::String &name) { return _vars.contains(name); }
 	
-	void addDialog(const Common::String &name, const Common::String &overlays);
+	void addDialog(const Common::String &name, const Common::String &overlays, bool enabled = true);
 	void addLayout(ThemeLayout::LayoutType type, int spacing, bool reverse, bool center = false);
-	void addWidget(const Common::String &name, int w, int h, const Common::String &type);
+	void addWidget(const Common::String &name, int w, int h, const Common::String &type, bool enabled = true);
+	bool addImportedLayout(const Common::String &name);
 	void addSpace(int size);
 	
 	void addPadding(int16 l, int16 r, int16 t, int16 b) {
@@ -268,7 +335,7 @@
 	}
 	
 	void closeLayout() { _curLayout.pop(); }
-	void closeDialog() { _curLayout.pop()->reflowLayout(); }
+	void closeDialog() { _curLayout.pop()->reflowLayout(); _curDialog.clear(); }
 	
 	bool getWidgetData(const Common::String &widget, int16 &x, int16 &y, uint16 &w, uint16 &h) {
 		Common::StringTokenizer tokenizer(widget, ".");
@@ -298,14 +365,15 @@
 	}
 
 	void debugDraw(Graphics::Surface *screen, const Graphics::Font *font) {
-		_layouts["Dialog.GlobalOptions"]->debugDraw(screen, font);
-		_layouts["Dialog.GlobalOptions_Graphics"]->debugDraw(screen, font);
+		_layouts["Dialog.GameOptions"]->debugDraw(screen, font);
+		_layouts["Dialog.GameOptions_Graphics"]->debugDraw(screen, font);
 	}
 	
 private:
 	VariablesMap _vars;
 	LayoutsMap _layouts;
 	Common::Stack<ThemeLayout*> _curLayout;
+	Common::String _curDialog;
 };
 
 

Modified: scummvm/branches/gsoc2008-gui/gui/ThemeParser.cpp
===================================================================
--- scummvm/branches/gsoc2008-gui/gui/ThemeParser.cpp	2008-08-07 09:11:23 UTC (rev 33675)
+++ scummvm/branches/gsoc2008-gui/gui/ThemeParser.cpp	2008-08-07 10:53:33 UTC (rev 33676)
@@ -458,6 +458,14 @@
 		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 @@
 				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,8 +500,17 @@
 
 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;
 		if (node->values["shading"] == "dim")
@@ -508,6 +525,13 @@
 	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 @@
 		_theme->themeEval()->addPadding(paddingL, paddingR, paddingT, paddingB);
 	}
 	
-	
-
 	return true;
 }
 

Modified: scummvm/branches/gsoc2008-gui/gui/ThemeParser.h
===================================================================
--- scummvm/branches/gsoc2008-gui/gui/ThemeParser.h	2008-08-07 09:11:23 UTC (rev 33675)
+++ scummvm/branches/gsoc2008-gui/gui/ThemeParser.h	2008-08-07 10:53:33 UTC (rev 33676)
@@ -437,17 +437,24 @@
 				XML_PROP(name, true)
 				XML_PROP(overlays, true)
 				XML_PROP(shading, false)
+				XML_PROP(enabled, false)
 				XML_KEY(layout)
 					XML_PROP(type, true)
 					XML_PROP(center, false)
 					XML_PROP(direction, false)
 					XML_PROP(padding, false)
 					XML_PROP(spacing, false)
+					
+					XML_KEY(import)
+						XML_PROP(layout, true)
+					KEY_END()
+					
 					XML_KEY(widget)
 						XML_PROP(name, true)
 						XML_PROP(width, false)
 						XML_PROP(height, false)
 						XML_PROP(type, false)
+						XML_PROP(enabled, false)
 					KEY_END()
 					
 					XML_KEY(space)
@@ -481,6 +488,7 @@
 	bool parserCallback_child(ParserNode *node);
 	bool parserCallback_layout(ParserNode *node);
 	bool parserCallback_space(ParserNode *node);
+	bool parserCallback_import(ParserNode *node);
 	
 	bool closedKeyCallback(ParserNode *node);
 	

Modified: scummvm/branches/gsoc2008-gui/gui/ThemeRenderer.cpp
===================================================================
--- scummvm/branches/gsoc2008-gui/gui/ThemeRenderer.cpp	2008-08-07 09:11:23 UTC (rev 33675)
+++ scummvm/branches/gsoc2008-gui/gui/ThemeRenderer.cpp	2008-08-07 10:53:33 UTC (rev 33676)
@@ -691,8 +691,8 @@
 	renderDirtyScreen();
 
 // 	_vectorRenderer->fillSurface();
- //	themeEval()->debugDraw(_screen, _font);
- //	_vectorRenderer->copyWholeFrame(_system);
+// 	themeEval()->debugDraw(_screen, _font);
+// 	_vectorRenderer->copyWholeFrame(_system);
 }
 
 void ThemeRenderer::renderDirtyScreen() {

Modified: scummvm/branches/gsoc2008-gui/gui/dialog.cpp
===================================================================
--- scummvm/branches/gsoc2008-gui/gui/dialog.cpp	2008-08-07 09:11:23 UTC (rev 33675)
+++ scummvm/branches/gsoc2008-gui/gui/dialog.cpp	2008-08-07 10:53:33 UTC (rev 33676)
@@ -150,7 +150,8 @@
 	// Draw all children
 	Widget *w = _firstWidget;
 	while (w) {
-		if (w->_debugVisible) w->draw();
+		//if (w->_debugVisible) 
+		w->draw();
 		w = w->_next;
 	}
 }

Modified: scummvm/branches/gsoc2008-gui/gui/launcher.cpp
===================================================================
--- scummvm/branches/gsoc2008-gui/gui/launcher.cpp	2008-08-07 09:11:23 UTC (rev 33675)
+++ scummvm/branches/gsoc2008-gui/gui/launcher.cpp	2008-08-07 10:53:33 UTC (rev 33676)
@@ -143,7 +143,7 @@
 };
 
 EditGameDialog::EditGameDialog(const String &domain, const String &desc)
-	: OptionsDialog(domain, "gameoptions") {
+	: OptionsDialog(domain, "GameOptions") {
 
 	int labelWidth = g_gui.evaluator()->getVar("tabPopupsLabelW");
 
@@ -159,7 +159,7 @@
 	}
 
 	// GUI:  Add tab widget
-	TabWidget *tab = new TabWidget(this, "gameoptions_tabwidget");
+	TabWidget *tab = new TabWidget(this, "GameOptions.TabWidget");
 	tab->setHints(THEME_HINT_FIRST_DRAW | THEME_HINT_SAVE_BACKGROUND);
 
 	//
@@ -168,15 +168,15 @@
 	tab->addTab("Game");
 
 	// GUI:  Label & edit widget for the game ID
-	new StaticTextWidget(tab, "gameoptions_id", "ID:");
-	_domainWidget = new DomainEditTextWidget(tab, "gameoptions_domain", _domain);
+	new StaticTextWidget(tab, "GameOptions_Game.Id", "ID:");
+	_domainWidget = new DomainEditTextWidget(tab, "GameOptions_Game.Domain", _domain);
 
 	// GUI:  Label & edit widget for the description
-	new StaticTextWidget(tab, "gameoptions_name", "Name:");
-	_descriptionWidget = new EditTextWidget(tab, "gameoptions_desc", description);
+	new StaticTextWidget(tab, "GameOptions_Game.Name", "Name:");
+	_descriptionWidget = new EditTextWidget(tab, "GameOptions_Game.Desc", description);
 
 	// Language popup
-	_langPopUp = new PopUpWidget(tab, "gameoptions_lang", "Language:", labelWidth);
+	_langPopUp = new PopUpWidget(tab, "GameOptions_Game.Lang", "Language:", labelWidth);
 	_langPopUp->appendEntry("<default>");
 	_langPopUp->appendEntry("");
 	const Common::LanguageDescription *l = Common::g_languages;
@@ -185,7 +185,7 @@
 	}
 
 	// Platform popup
-	_platformPopUp = new PopUpWidget(tab, "gameoptions_platform", "Platform:", labelWidth);
+	_platformPopUp = new PopUpWidget(tab, "GameOptions_Game.Platform", "Platform:", labelWidth);
 	_platformPopUp->appendEntry("<default>");
 	_platformPopUp->appendEntry("");
 	const Common::PlatformDescription *p = Common::g_platforms;
@@ -198,37 +198,37 @@
 	//
 	tab->addTab("Graphics");
 
-	_globalGraphicsOverride = new CheckboxWidget(tab, "gameoptions_graphicsCheckbox", "Override global graphic settings", kCmdGlobalGraphicsOverride, 0);
+	_globalGraphicsOverride = new CheckboxWidget(tab, "GameOptions_Graphics.EnableTabCheckbox", "Override global graphic settings", kCmdGlobalGraphicsOverride, 0);
 
-	addGraphicControls(tab, "gameoptions_");
+	addGraphicControls(tab, "GameOptions_Graphics.");
 
 	//
 	// 4) The audio tab
 	//
 	tab->addTab("Audio");
 
-	_globalAudioOverride = new CheckboxWidget(tab, "gameoptions_audioCheckbox", "Override global audio settings", kCmdGlobalAudioOverride, 0);
+	_globalAudioOverride = new CheckboxWidget(tab, "GameOptions_Audio.EnableTabCheckbox", "Override global audio settings", kCmdGlobalAudioOverride, 0);
 
-	addAudioControls(tab, "gameoptions_");
-	addSubtitleControls(tab, "gameoptions_");
+	addAudioControls(tab, "GameOptions_Audio.");
+	addSubtitleControls(tab, "GameOptions_Audio.");
 
 	//
 	// 5) The volume tab
 	//
 	tab->addTab("Volume");
 
-	_globalVolumeOverride = new CheckboxWidget(tab, "gameoptions_volumeCheckbox", "Override global volume settings", kCmdGlobalVolumeOverride, 0);
+	_globalVolumeOverride = new CheckboxWidget(tab, "GameOptions_Volume.EnableTabCheckbox", "Override global volume settings", kCmdGlobalVolumeOverride, 0);
 
-	addVolumeControls(tab, "gameoptions_");
+	addVolumeControls(tab, "GameOptions_Volume.");
 
 	//
 	// 6) The MIDI tab
 	//
 	tab->addTab("MIDI");
 
-	_globalMIDIOverride = new CheckboxWidget(tab, "gameoptions_midiCheckbox", "Override global MIDI settings", kCmdGlobalMIDIOverride, 0);
+	_globalMIDIOverride = new CheckboxWidget(tab, "GameOptions_MIDI.EnableTabCheckbox", "Override global MIDI settings", kCmdGlobalMIDIOverride, 0);
 
-	addMIDIControls(tab, "gameoptions_");
+	addMIDIControls(tab, "GameOptions_MIDI.");
 
 	//
 	// 2) The 'Path' tab
@@ -239,29 +239,29 @@
 	// in the small version of the GUI.
 
 	// GUI:  Button + Label for the game path
-	new ButtonWidget(tab, "gameoptions_gamepath", "Game Path:", kCmdGameBrowser, 0);
-	_gamePathWidget = new StaticTextWidget(tab, "gameoptions_gamepathText", gamePath);
+	new ButtonWidget(tab, "GameOptions_Paths.Gamepath", "Game Path:", kCmdGameBrowser, 0);
+	_gamePathWidget = new StaticTextWidget(tab, "GameOptions_Paths.GamepathText", gamePath);
 
 	// GUI:  Button + Label for the additional path
-	new ButtonWidget(tab, "gameoptions_extrapath", "Extra Path:", kCmdExtraBrowser, 0);
-	_extraPathWidget = new StaticTextWidget(tab, "gameoptions_extrapathText", extraPath);
+	new ButtonWidget(tab, "GameOptions_Paths.Extrapath", "Extra Path:", kCmdExtraBrowser, 0);
+	_extraPathWidget = new StaticTextWidget(tab, "GameOptions_Paths.ExtrapathText", extraPath);
 	if (extraPath.empty() || !ConfMan.hasKey("extrapath", _domain)) {
 		_extraPathWidget->setLabel("None");
 	}
 
 	// GUI:  Button + Label for the save path
-	new ButtonWidget(tab, "gameoptions_savepath", "Save Path:", kCmdSaveBrowser, 0);
-	_savePathWidget = new StaticTextWidget(tab, "gameoptions_savepathText", savePath);
+	new ButtonWidget(tab, "GameOptions_Paths.Savepath", "Save Path:", kCmdSaveBrowser, 0);
+	_savePathWidget = new StaticTextWidget(tab, "GameOptions_Paths.SavepathText", savePath);
 	if (savePath.empty() || !ConfMan.hasKey("savepath", _domain)) {
 		_savePathWidget->setLabel("Default");
 	}
-
+	
 	// Activate the first tab
 	tab->setActiveTab(0);
 
 	// Add OK & Cancel buttons
-	new ButtonWidget(this, "gameoptions_cancel", "Cancel", kCloseCmd, 0);
-	new ButtonWidget(this, "gameoptions_ok", "OK", kOKCmd, 0);
+	new ButtonWidget(this, "GameOptions.Cancel", "Cancel", kCloseCmd, 0);
+	new ButtonWidget(this, "GameOptions.Ok", "OK", kOKCmd, 0);
 }
 
 void EditGameDialog::reflowLayout() {

Modified: scummvm/branches/gsoc2008-gui/gui/themes/default.inc
===================================================================
--- scummvm/branches/gsoc2008-gui/gui/themes/default.inc	2008-08-07 09:11:23 UTC (rev 33675)
+++ scummvm/branches/gsoc2008-gui/gui/themes/default.inc	2008-08-07 10:53:33 UTC (rev 33676)
@@ -1 +1 @@
-"   <render_info> <palette> <color name = 'darkred' rgb = '168, 42, 12' /> <color name = 'brightred' rgb = '200, 124, 104' /> <color name = 'xtrabrightred' rgb = '251, 241, 206' /> <color name = 'blandyellow' rgb = '247, 228, 166' /> <color name = 'bgreen' rgb = '96, 160, 8' /> <color name = 'blue' rgb = '0, 255, 255' /> <color name = 'black' rgb = '0, 0, 0' /> <color name = 'white' rgb = '255, 255, 255' /> <color name = 'shadowcolor' rgb = '63, 60, 17' /> </palette> <fonts> <font id = 'text_default' type = 'default' color = 'black' /> <font id = 'text_hover' type = 'default' color = 'bgreen' /> <font id = 'text_disabled' type = 'default' color = '128, 128, 128' /> <font id = 'text_inverted' type = 'default' color = '0, 0, 0' /> <font id = 'text_button' type = 'default' color = 'white' /> <font id = 'text_button_hover' type = 'default' color = 'blandyellow' /> </fonts> <defaults fill = 'gradient' fg_color = 'white' bevel_color = '237, 169, 72'/> <drawdata id = 'text_selection' cache = false> <drawstep func = 'square' fill = 'foreground' fg_color = 'bgreen' /> </drawdata> <drawdata id = 'mainmenu_bg' cache = false> <drawstep func = 'fill' fill = 'gradient' gradient_start = '208, 112, 8' gradient_end = '232, 192, 16' /> </drawdata> <drawdata id = 'separator' cache = false> <drawstep func = 'square' fill = 'foreground' height = '1' ypos = 'center' fg_color = 'black' /> </drawdata> <drawdata id = 'scrollbar_base' cache = false> <drawstep func = 'roundedsq' stroke = 1 radius = 6 fill = 'background' fg_color = '176, 164, 160' bg_color = '240, 228, 160' /> </drawdata> <drawdata id = 'scrollbar_handle_hover' cache = false> <drawstep func = 'roundedsq' stroke = 1 radius = 6 fill = 'gradient' fg_color = 'blandyellow' gradient_start = 'xtrabrightred' gradient_end = 'darkred' /> </drawdata> <drawdata id = 'scrollbar_handle_idle' cache = false> <drawstep func = 'roundedsq' stroke = 1 radius = 6 fill = 'gradient' fg_color = 'blandyellow' gradient_start = 'brightred' gradient_end = 'darkred' /> </drawdata> <drawdata id = 'scrollbar_button_idle' cache = false> <drawstep func = 'roundedsq' radius = '4' fill = 'none' fg_color = '176, 164, 160' stroke = 1 /> <drawstep func = 'triangle' fg_color = '0, 0, 0' fill = 'foreground' width = 'auto' height = 'auto' xpos = 'center' ypos = 'center' orientation = 'top' /> </drawdata> <drawdata id = 'scrollbar_button_hover' cache = false> <drawstep func = 'roundedsq' radius = '4' fill = 'background' fg_color = '120, 120, 120' bg_color = '206, 121, 99' stroke = 1 /> <drawstep func = 'triangle' fg_color = '0, 0, 0' fill = 'foreground' width = 'auto' height = 'auto' xpos = 'center' ypos = 'center' orientation = 'top' /> </drawdata> <drawdata id = 'tab_active' cache = false> <text font = 'text_default' vertical_align = 'center' horizontal_align = 'center' /> <drawstep func = 'tab' radius = '4' stroke = '0' fill = 'gradient' gradient_end = 'xtrabrightred' gradient_start = 'blandyellow' shadow = 3 /> </drawdata> <drawdata id = 'tab_inactive' cache = false> <text font = 'text_default' vertical_align = 'center' horizontal_align = 'center' /> <drawstep func = 'tab' radius = '4' stroke = '0' fill = 'foreground' fg_color = '240, 205, 118' shadow = 3 /> </drawdata> <drawdata id = 'tab_background' cache = false> <drawstep func = 'tab' radius = '8' stroke = '0' fill = 'foreground' fg_color = '232, 180, 81' shadow = 3 /> </drawdata> <drawdata id = 'widget_slider' cache = false> <drawstep func = 'roundedsq' stroke = 0 radius = 4 fill = 'foreground' fg_color = 'blandyellow' bevel = 1 bevel_color = 'shadowcolor' /> </drawdata> <drawdata id = 'slider_full' cache = false> <drawstep func = 'roundedsq' stroke = 1 radius = 4 fill = 'gradient' fg_color = '123, 112, 56' gradient_start = 'brightred' gradient_end = 'darkred' /> </drawdata> <drawdata id = 'slider_hover' cache = false> <drawstep func = 'roundedsq' stroke = 1 radius = 4 fill = 'gradient' fg_color = '123, 112, 56' gradient_start = 'xtrabrightred' gradient_end = 'darkred' /> </drawdata> <drawdata id = 'popup_idle' cache = false> <drawstep func = 'roundedsq' stroke = 0 radius = 4 fill = 'foreground' fg_color = '250, 237, 190' shadow = 2 /> <drawstep func = 'triangle' fg_color = '63, 60, 52' fill = 'foreground' width = 'height' height = 'auto' xpos = 'right' ypos = 'center' orientation = 'bottom' /> <text font = 'text_default' vertical_align = 'center' horizontal_align = 'right' /> </drawdata>  <drawdata id = 'popup_hover' cache = false> <drawstep func = 'roundedsq' stroke = 0 radius = 4 fill = 'gradient' gradient_start = 'blandyellow' gradient_end = '250, 237, 190' shadow = 0 /> <drawstep func = 'triangle' fg_color = '63, 60, 52' fill = 'foreground' width = 'height' height = 'auto' xpos = 'right' ypos = 'center' orientation = 'bottom' /> <text font = 'text_hover' vertical_align = 'center' horizontal_align = 'right' /> </drawdata>  <drawdata id = 'default_bg' cache = false> <drawstep func = 'roundedsq' radius = 12 stroke = 0 fg_color = 'xtrabrightred' fill = 'foreground' shadow = 3 /> </drawdata> <drawdata id = 'button_idle' cache = false> <text font = 'text_button' vertical_align = 'center' horizontal_align = 'center' /> <drawstep func = 'roundedsq' radius = '6' stroke = 1 fill = 'gradient' shadow = 0 fg_color = 'shadowcolor' gradient_start = 'brightred' gradient_end = 'darkred' bevel = 1 /> </drawdata> <drawdata id = 'button_hover' cache = false> <text font = 'text_button_hover' vertical_align = 'center' horizontal_align = 'center' /> <drawstep func = 'roundedsq' radius = '6' gradient_factor = 1 stroke = 1 fill = 'gradient' shadow = 0 fg_color = 'shadowcolor' gradient_start = 'xtrabrightred' gradient_end = 'darkred' bevel_color = 'xtrabrightred' bevel = 1 /> </drawdata> <drawdata id = 'button_disabled' cache = false> <text font = 'text_disabled' vertical_align = 'center' horizontal_align = 'center' /> <drawstep func = 'roundedsq' radius = '8' stroke = 0 fill = 'foreground' fg_color = '200, 200, 200' shadow = 3 /> </drawdata> <drawdata id = 'checkbox_disabled' cache = false> <text font = 'text_disabled' vertical_align = 'top' horizontal_align = 'left' /> <drawstep func = 'roundedsq' fill = 'none' radius = 4 fg_color = 'black' shadow = 0 bevel = 1 bevel_color = 'shadowcolor' /> </drawdata> <drawdata id = 'checkbox_selected' cache = false> <text font = 'text_default' vertical_align = 'top' horizontal_align = 'left' /> <drawstep func = 'roundedsq' fill = 'gradient' radius = 4 fg_color = 'white' gradient_start = 'brightred' gradient_end = 'darkred' shadow = 0 bevel = 1 bevel_color = 'shadowcolor' /> </drawdata> <drawdata id = 'checkbox_default' cache = false> <text font = 'text_default' vertical_align = 'top' horizontal_align = 'left' /> <drawstep func = 'roundedsq' fill = 'foreground' radius = 4 fg_color = 'blandyellow' shadow = 0 bevel = 1 bevel_color = 'shadowcolor' /> </drawdata> <drawdata id = 'widget_default' cache = false> <drawstep func = 'roundedsq' gradient_factor = 6 radius = '8' fill = 'gradient' gradient_start = '240, 224, 136' gradient_end = 'xtrabrightred' shadow = 3 /> </drawdata> </render_info> <layout_info> <globals> <def var = 'Widget.Size' value = '32' /> <def var = 'Line.Height' value = '16' /> <def var = 'Font.Height' value = '16' /> <def var = 'Padding.Bottom' value = '16' /> <def var = 'Padding.Left' value = '16' /> <def var = 'Padding.Right' value = '16' /> <def var = 'Padding.Top' value = '16' /> <def var = 'ListWidget.hlLeftPadding' value = '8'/> <def var = 'ListWidget.hlRightPadding' value = '16'/> <widget name = 'OptionsLabel' size = '110, Globals.Line.Height' /> <widget name = 'Button' size = '120, 25' /> <widget name = 'Slider' size = '256, 32' /> <widget name = 'PopUp' size = '-1, 19' /> <widget name = 'Checkbox' size = '-1, Globals.Line.Height' /> <widget name = 'ListWidget' padding = '7, 5, 3, 3' /> <widget name = 'PopUpWidget' padding = '7, 5, 0, 0' /> <widget name = 'EditTextWidget' padding = '7, 5, 0, 0' /> <widget name = 'Console' padding = '7, 5, 5, 5' /> <widget name = 'TabWidget'> <child name = 'Tab' size = '75, 27' padding = '0, 0, 8, 0' /> <child name = 'NavButton' size = '15, 18' padding = '0, 3, 4, 0' /> </widget> </globals> <dialog name = 'Launcher' overlays = 'screen'> <layout type = 'vertical' center = 'true' padding = '23, 23, 8, 23'> <widget name = 'Version' width = '247' height = 'Globals.Line.Height' /> <widget name = 'Logo' width = '283' height = '80' /> <layout type = 'horizontal' direction = 'right2left' padding = '0, 0, 0, 0'> <layout type = 'vertical' padding = '16, 0, 0, 0'> <widget name = 'StartButton' type = 'Button' /> <space size = '16' /> <widget name = 'AddGameButton' type = 'Button' /> <widget name = 'EditGameButton' type = 'Button' /> <widget name = 'RemoveGameButton' type = 'Button' /> <space size = '16' /> <widget name = 'OptionsButton' type = 'Button' /> <widget name = 'AboutButton' type = 'Button' /> <space size = '16' /> <widget name = 'QuitButton' type = 'Button' /> <space/> </layout> <widget name = 'GameList'/> </layout> </layout> </dialog> <dialog name = 'GlobalOptions' overlays = 'Dialog.Launcher.GameList' shading = 'dim'> <layout type = 'vertical' padding = '0, 0, 0, 0' direction = 'bottom2top'> <layout type = 'horizontal' direction = 'right2left' padding = '16, 16, 16, 16'> <widget name = 'Ok' type = 'Button' /> <widget name = 'Cancel' type = 'Button' /> <space/> </layout> <widget name = 'TabWidget'/> </layout> </dialog> <dialog name = 'GlobalOptions_Graphics' overlays = 'Dialog.GlobalOptions.TabWidget'> <layout type = 'vertical' padding = '16, 16, 16, 16' spacing = '8'> <widget name = 'grModePopup' type = 'PopUp' /> <widget name = 'grRenderPopup' type = 'PopUp' /> <widget name = 'grAspectCheckbox' type = 'Checkbox' /> <widget name = 'grFullscreenCheckbox' type = 'Checkbox' /> </layout> </dialog> <dialog name = 'GlobalOptions_Audio' overlays = 'Dialog.GlobalOptions.TabWidget'> <layout type = 'vertical' padding = '16, 16, 16, 16' spacing = '8'> <widget name = 'auMidiPopup' type = 'PopUp' /> <widget name = 'auSampleRatePopup' type = 'PopUp' /> <layout type = 'horizontal' padding = '0, 0, 0, 0'> <widget name = 'subToggleDesc' type = 'OptionsLabel' /> <widget name = 'subToggleButton' width = '150' height = 'Globals.Slider.Height' /> </layout> <layout type = 'horizontal' padding = '0, 0, 0, 0'> <widget name = 'subSubtitleSpeedDesc' type = 'OptionsLabel' /> <widget name = 'subSubtitleSpeedSlider' type = 'Slider' /> <widget name = 'subSubtitleSpeedLabel' width = '32' height = 'Globals.Line.Height' /> </layout> </layout> </dialog> <dialog name = 'GlobalOptions_Volume' overlays = 'Dialog.GlobalOptions.TabWidget'> <layout type = 'vertical' padding = '16, 16, 16, 16' spacing = '8'> <layout type = 'horizontal' padding = '0, 0, 0, 0'> <widget name = 'vcMusicText' type = 'OptionsLabel' /> <widget name = 'vcMusicSlider' type = 'Slider' /> <widget name = 'vcMusicLabel' width = '32' height = 'Globals.Line.Height' /> </layout> <layout type = 'horizontal' padding = '0, 0, 0, 0'> <widget name = 'vcSfxText' type = 'OptionsLabel' /> <widget name = 'vcSfxSlider' type = 'Slider' /> <widget name = 'vcSfxLabel' width = '32' height = 'Globals.Line.Height' /> </layout> <layout type = 'horizontal' padding = '0, 0, 0, 0'> <widget name = 'vcSpeechText' type = 'OptionsLabel' /> <widget name = 'vcSpeechSlider' type = 'Slider' /> <widget name = 'vcSpeechLabel' width = '32' height = 'Globals.Line.Height' /> </layout> </layout> </dialog> <dialog name = 'GlobalOptions_MIDI' overlays = 'Dialog.GlobalOptions.TabWidget'> <layout type = 'vertical' padding = '16, 16, 16, 16' spacing = '8'> <layout type = 'horizontal' padding = '0, 0, 0, 0'> <widget name = 'mcFontButton' type = 'Button' /> <widget name = 'mcFontClearButton' height = 'Globals.Line.Height' width = 'Globals.Line.Height' /> <widget name = 'mcFontPath' height = 'Globals.Line.Height' /> </layout> <widget name = 'mcMixedCheckbox' type = 'Checkbox' /> <widget name = 'mcMt32Checkbox' type = 'Checkbox' /> <widget name = 'mcGSCheckbox' type = 'Checkbox' /> <layout type = 'horizontal' padding = '0, 0, 0, 0'> <widget name = 'mcMidiGainText' type = 'OptionsLabel' /> <widget name = 'mcMidiGainSlider' type = 'Slider' /> <widget name = 'mcMidiGainLabel' width = '32' height = 'Globals.Line.Height' /> </layout> </layout> </dialog> <dialog name = 'GlobalOptions_Paths' overlays = 'Dialog.GlobalOptions.TabWidget'> <layout type = 'vertical' padding = '16, 16, 16, 16' spacing = '8'> <layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '16'> <widget name = 'SaveButton' type = 'Button' /> <widget name = 'SavePath' height = 'Globals.Line.Height' /> </layout> <layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '16'> <widget name = 'ThemeButton' type = 'Button' /> <widget name = 'ThemePath' height = 'Globals.Line.Height' /> </layout> <layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '16'> <widget name = 'ExtraButton' type = 'Button' /> <widget name = 'ExtraPath' height = 'Globals.Line.Height' /> </layout> </layout> </dialog> <dialog name = 'GlobalOptions_Misc' overlays = 'Dialog.GlobalOptions.TabWidget'> <layout type = 'vertical' padding = '16, 16, 16, 16' spacing = '8'> <layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '16'> <widget name = 'ThemeButton' type = 'Button' /> <widget name = 'CurTheme' height = 'Globals.Line.Height' /> </layout> <widget name = 'AutosavePeriod' type = 'PopUp' /> </layout> </dialog> </layout_info> "
+"   <render_info> <palette> <color name = 'darkred' rgb = '168, 42, 12' /> <color name = 'brightred' rgb = '200, 124, 104' /> <color name = 'xtrabrightred' rgb = '251, 241, 206' /> <color name = 'blandyellow' rgb = '247, 228, 166' /> <color name = 'bgreen' rgb = '96, 160, 8' /> <color name = 'blue' rgb = '0, 255, 255' /> <color name = 'black' rgb = '0, 0, 0' /> <color name = 'white' rgb = '255, 255, 255' /> <color name = 'shadowcolor' rgb = '63, 60, 17' /> </palette> <fonts> <font id = 'text_default' type = 'default' color = 'black' /> <font id = 'text_hover' type = 'default' color = 'bgreen' /> <font id = 'text_disabled' type = 'default' color = '128, 128, 128' /> <font id = 'text_inverted' type = 'default' color = '0, 0, 0' /> <font id = 'text_button' type = 'default' color = 'white' /> <font id = 'text_button_hover' type = 'default' color = 'blandyellow' /> </fonts> <defaults fill = 'gradient' fg_color = 'white' bevel_color = '237, 169, 72'/> <drawdata id = 'text_selection' cache = false> <drawstep func = 'square' fill = 'foreground' fg_color = 'bgreen' /> </drawdata> <drawdata id = 'mainmenu_bg' cache = false> <drawstep func = 'fill' fill = 'gradient' gradient_start = '208, 112, 8' gradient_end = '232, 192, 16' /> </drawdata> <drawdata id = 'separator' cache = false> <drawstep func = 'square' fill = 'foreground' height = '1' ypos = 'center' fg_color = 'black' /> </drawdata> <drawdata id = 'scrollbar_base' cache = false> <drawstep func = 'roundedsq' stroke = 1 radius = 6 fill = 'background' fg_color = '176, 164, 160' bg_color = '240, 228, 160' /> </drawdata> <drawdata id = 'scrollbar_handle_hover' cache = false> <drawstep func = 'roundedsq' stroke = 1 radius = 6 fill = 'gradient' fg_color = 'blandyellow' gradient_start = 'xtrabrightred' gradient_end = 'darkred' /> </drawdata> <drawdata id = 'scrollbar_handle_idle' cache = false> <drawstep func = 'roundedsq' stroke = 1 radius = 6 fill = 'gradient' fg_color = 'blandyellow' gradient_start = 'brightred' gradient_end = 'darkred' /> </drawdata> <drawdata id = 'scrollbar_button_idle' cache = false> <drawstep func = 'roundedsq' radius = '4' fill = 'none' fg_color = '176, 164, 160' stroke = 1 /> <drawstep func = 'triangle' fg_color = '0, 0, 0' fill = 'foreground' width = 'auto' height = 'auto' xpos = 'center' ypos = 'center' orientation = 'top' /> </drawdata> <drawdata id = 'scrollbar_button_hover' cache = false> <drawstep func = 'roundedsq' radius = '4' fill = 'background' fg_color = '120, 120, 120' bg_color = '206, 121, 99' stroke = 1 /> <drawstep func = 'triangle' fg_color = '0, 0, 0' fill = 'foreground' width = 'auto' height = 'auto' xpos = 'center' ypos = 'center' orientation = 'top' /> </drawdata> <drawdata id = 'tab_active' cache = false> <text font = 'text_default' vertical_align = 'center' horizontal_align = 'center' /> <drawstep func = 'tab' radius = '4' stroke = '0' fill = 'gradient' gradient_end = 'xtrabrightred' gradient_start = 'blandyellow' shadow = 3 /> </drawdata> <drawdata id = 'tab_inactive' cache = false> <text font = 'text_default' vertical_align = 'center' horizontal_align = 'center' /> <drawstep func = 'tab' radius = '4' stroke = '0' fill = 'foreground' fg_color = '240, 205, 118' shadow = 3 /> </drawdata> <drawdata id = 'tab_background' cache = false> <drawstep func = 'tab' radius = '8' stroke = '0' fill = 'foreground' fg_color = '232, 180, 81' shadow = 3 /> </drawdata> <drawdata id = 'widget_slider' cache = false> <drawstep func = 'roundedsq' stroke = 0 radius = 4 fill = 'foreground' fg_color = 'blandyellow' bevel = 1 bevel_color = 'shadowcolor' /> </drawdata> <drawdata id = 'slider_full' cache = false> <drawstep func = 'roundedsq' stroke = 1 radius = 4 fill = 'gradient' fg_color = '123, 112, 56' gradient_start = 'brightred' gradient_end = 'darkred' /> </drawdata> <drawdata id = 'slider_hover' cache = false> <drawstep func = 'roundedsq' stroke = 1 radius = 4 fill = 'gradient' fg_color = '123, 112, 56' gradient_start = 'xtrabrightred' gradient_end = 'darkred' /> </drawdata> <drawdata id = 'popup_idle' cache = false> <drawstep func = 'roundedsq' stroke = 0 radius = 4 fill = 'foreground' fg_color = '250, 237, 190' shadow = 2 /> <drawstep func = 'triangle' fg_color = '63, 60, 52' fill = 'foreground' width = 'height' height = 'auto' xpos = 'right' ypos = 'center' orientation = 'bottom' /> <text font = 'text_default' vertical_align = 'center' horizontal_align = 'right' /> </drawdata>  <drawdata id = 'popup_hover' cache = false> <drawstep func = 'roundedsq' stroke = 0 radius = 4 fill = 'gradient' gradient_start = 'blandyellow' gradient_end = '250, 237, 190' shadow = 0 /> <drawstep func = 'triangle' fg_color = '63, 60, 52' fill = 'foreground' width = 'height' height = 'auto' xpos = 'right' ypos = 'center' orientation = 'bottom' /> <text font = 'text_hover' vertical_align = 'center' horizontal_align = 'right' /> </drawdata>  <drawdata id = 'default_bg' cache = false> <drawstep func = 'roundedsq' radius = 12 stroke = 0 fg_color = 'xtrabrightred' fill = 'foreground' shadow = 3 /> </drawdata> <drawdata id = 'button_idle' cache = false> <text font = 'text_button' vertical_align = 'center' horizontal_align = 'center' /> <drawstep func = 'roundedsq' radius = '6' stroke = 1 fill = 'gradient' shadow = 0 fg_color = 'shadowcolor' gradient_start = 'brightred' gradient_end = 'darkred' bevel = 1 /> </drawdata> <drawdata id = 'button_hover' cache = false> <text font = 'text_button_hover' vertical_align = 'center' horizontal_align = 'center' /> <drawstep func = 'roundedsq' radius = '6' gradient_factor = 1 stroke = 1 fill = 'gradient' shadow = 0 fg_color = 'shadowcolor' gradient_start = 'xtrabrightred' gradient_end = 'darkred' bevel_color = 'xtrabrightred' bevel = 1 /> </drawdata> <drawdata id = 'button_disabled' cache = false> <text font = 'text_disabled' vertical_align = 'center' horizontal_align = 'center' /> <drawstep func = 'roundedsq' radius = '8' stroke = 0 fill = 'foreground' fg_color = '200, 200, 200' shadow = 3 /> </drawdata> <drawdata id = 'checkbox_disabled' cache = false> <text font = 'text_disabled' vertical_align = 'top' horizontal_align = 'left' /> <drawstep func = 'roundedsq' fill = 'none' radius = 4 fg_color = 'black' shadow = 0 bevel = 1 bevel_color = 'shadowcolor' /> </drawdata> <drawdata id = 'checkbox_selected' cache = false> <text font = 'text_default' vertical_align = 'top' horizontal_align = 'left' /> <drawstep func = 'roundedsq' fill = 'gradient' radius = 4 fg_color = 'white' gradient_start = 'brightred' gradient_end = 'darkred' shadow = 0 bevel = 1 bevel_color = 'shadowcolor' /> </drawdata> <drawdata id = 'checkbox_default' cache = false> <text font = 'text_default' vertical_align = 'top' horizontal_align = 'left' /> <drawstep func = 'roundedsq' fill = 'foreground' radius = 4 fg_color = 'blandyellow' shadow = 0 bevel = 1 bevel_color = 'shadowcolor' /> </drawdata> <drawdata id = 'widget_default' cache = false> <drawstep func = 'roundedsq' gradient_factor = 6 radius = '8' fill = 'gradient' gradient_start = '240, 224, 136' gradient_end = 'xtrabrightred' shadow = 3 /> </drawdata> </render_info> <layout_info> <globals> <def var = 'Widget.Size' value = '32' /> <def var = 'Line.Height' value = '16' /> <def var = 'Font.Height' value = '16' /> <def var = 'Padding.Bottom' value = '16' /> <def var = 'Padding.Left' value = '16' /> <def var = 'Padding.Right' value = '16' /> <def var = 'Padding.Top' value = '16' /> <def var = 'ListWidget.hlLeftPadding' value = '8'/> <def var = 'ListWidget.hlRightPadding' value = '16'/> <widget name = 'OptionsLabel' size = '110, Globals.Line.Height' /> <widget name = 'Button' size = '120, 25' /> <widget name = 'Slider' size = '256, 32' /> <widget name = 'PopUp' size = '-1, 19' /> <widget name = 'Checkbox' size = '-1, Globals.Line.Height' /> <widget name = 'ListWidget' padding = '7, 5, 3, 3' /> <widget name = 'PopUpWidget' padding = '7, 5, 0, 0' /> <widget name = 'EditTextWidget' padding = '7, 5, 0, 0' /> <widget name = 'Console' padding = '7, 5, 5, 5' /> <widget name = 'TabWidget'> <child name = 'Tab' size = '75, 27' padding = '0, 0, 8, 0' /> <child name = 'NavButton' size = '15, 18' padding = '0, 3, 4, 0' /> </widget> </globals> <dialog name = 'Launcher' overlays = 'screen'> <layout type = 'vertical' center = 'true' padding = '23, 23, 8, 23'> <widget name = 'Version' width = '247' height = 'Globals.Line.Height' /> <widget name = 'Logo' width = '283' height = '80' /> <layout type = 'horizontal' direction = 'right2left' padding = '0, 0, 0, 0'> <layout type = 'vertical' padding = '16, 0, 0, 0'> <widget name = 'StartButton' type = 'Button' /> <space size = '16' /> <widget name = 'AddGameButton' type = 'Button' /> <widget name = 'EditGameButton' type = 'Button' /> <widget name = 'RemoveGameButton' type = 'Button' /> <space size = '16' /> <widget name = 'OptionsButton' type = 'Button' /> <widget name = 'AboutButton' type = 'Button' /> <space size = '16' /> <widget name = 'QuitButton' type = 'Button' /> <space/> </layout> <widget name = 'GameList'/> </layout> </layout> </dialog> <dialog name = 'GlobalOptions' overlays = 'Dialog.Launcher.GameList' shading = 'dim'> <layout type = 'vertical' padding = '0, 0, 0, 0' direction = 'bottom2top'> <layout type = 'horizontal' direction = 'right2left' padding = '16, 16, 16, 16'> <widget name = 'Ok' type = 'Button' /> <widget name = 'Cancel' type = 'Button' /> <space/> </layout> <widget name = 'TabWidget'/> </layout> </dialog> <dialog name = 'GlobalOptions_Graphics' overlays = 'Dialog.GlobalOptions.TabWidget'> <layout type = 'vertical' padding = '16, 16, 16, 16' spacing = '8'> <widget name = 'grModePopup' type = 'PopUp' /> <widget name = 'grRenderPopup' type = 'PopUp' /> <widget name = 'grAspectCheckbox' type = 'Checkbox' /> <widget name = 'grFullscreenCheckbox' type = 'Checkbox' /> </layout> </dialog> <dialog name = 'GlobalOptions_Audio' overlays = 'Dialog.GlobalOptions.TabWidget'> <layout type = 'vertical' padding = '16, 16, 16, 16' spacing = '8'> <widget name = 'auMidiPopup' type = 'PopUp' /> <widget name = 'auSampleRatePopup' type = 'PopUp' /> <layout type = 'horizontal' padding = '0, 0, 0, 0'> <widget name = 'subToggleDesc' type = 'OptionsLabel' /> <widget name = 'subToggleButton' width = '150' height = 'Globals.Slider.Height' /> </layout> <layout type = 'horizontal' padding = '0, 0, 0, 0'> <widget name = 'subSubtitleSpeedDesc' type = 'OptionsLabel' /> <widget name = 'subSubtitleSpeedSlider' type = 'Slider' /> <widget name = 'subSubtitleSpeedLabel' width = '32' height = 'Globals.Line.Height' /> </layout> </layout> </dialog> <dialog name = 'GlobalOptions_Volume' overlays = 'Dialog.GlobalOptions.TabWidget'> <layout type = 'vertical' padding = '16, 16, 16, 16' spacing = '8'> <layout type = 'horizontal' padding = '0, 0, 0, 0'> <widget name = 'vcMusicText' type = 'OptionsLabel' /> <widget name = 'vcMusicSlider' type = 'Slider' /> <widget name = 'vcMusicLabel' width = '32' height = 'Globals.Line.Height' /> </layout> <layout type = 'horizontal' padding = '0, 0, 0, 0'> <widget name = 'vcSfxText' type = 'OptionsLabel' /> <widget name = 'vcSfxSlider' type = 'Slider' /> <widget name = 'vcSfxLabel' width = '32' height = 'Globals.Line.Height' /> </layout> <layout type = 'horizontal' padding = '0, 0, 0, 0'> <widget name = 'vcSpeechText' type = 'OptionsLabel' /> <widget name = 'vcSpeechSlider' type = 'Slider' /> <widget name = 'vcSpeechLabel' width = '32' height = 'Globals.Line.Height' /> </layout> </layout> </dialog> <dialog name = 'GlobalOptions_MIDI' overlays = 'Dialog.GlobalOptions.TabWidget'> <layout type = 'vertical' padding = '16, 16, 16, 16' spacing = '8'> <layout type = 'horizontal' padding = '0, 0, 0, 0'> <widget name = 'mcFontButton' type = 'Button' /> <widget name = 'mcFontClearButton' height = 'Globals.Line.Height' width = 'Globals.Line.Height' /> <widget name = 'mcFontPath' height = 'Globals.Line.Height' /> </layout> <widget name = 'mcMixedCheckbox' type = 'Checkbox' /> <widget name = 'mcMt32Checkbox' type = 'Checkbox' /> <widget name = 'mcGSCheckbox' type = 'Checkbox' /> <layout type = 'horizontal' padding = '0, 0, 0, 0'> <widget name = 'mcMidiGainText' type = 'OptionsLabel' /> <widget name = 'mcMidiGainSlider' type = 'Slider' /> <widget name = 'mcMidiGainLabel' width = '32' height = 'Globals.Line.Height' /> </layout> </layout> </dialog> <dialog name = 'GlobalOptions_Paths' overlays = 'Dialog.GlobalOptions.TabWidget'> <layout type = 'vertical' padding = '16, 16, 16, 16' spacing = '8'> <layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '16'> <widget name = 'SaveButton' type = 'Button' /> <widget name = 'SavePath' height = 'Globals.Line.Height' /> </layout> <layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '16'> <widget name = 'ThemeButton' type = 'Button' /> <widget name = 'ThemePath' height = 'Globals.Line.Height' /> </layout> <layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '16'> <widget name = 'ExtraButton' type = 'Button' /> <widget name = 'ExtraPath' height = 'Globals.Line.Height' /> </layout> </layout> </dialog> <dialog name = 'GlobalOptions_Misc' overlays = 'Dialog.GlobalOptions.TabWidget'> <layout type = 'vertical' padding = '16, 16, 16, 16' spacing = '8'> <layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '16'> <widget name = 'ThemeButton' type = 'Button' /> <widget name = 'CurTheme' height = 'Globals.Line.Height' /> </layout> <widget name = 'AutosavePeriod' type = 'PopUp' /> </layout> </dialog> <dialog name = 'GameOptions' overlays = 'Dialog.Launcher.GameList' shading = 'dim'> <layout type = 'vertical' padding = '0, 0, 0, 0' direction = 'bottom2top' spacing = '16'> <layout type = 'horizontal' direction = 'right2left' padding = '16, 16, 16, 16'> <widget name = 'Ok' type = 'Button' /> <widget name = 'Cancel' type = 'Button' /> <space/> </layout> <widget name = 'TabWidget'/> </layout> </dialog> <dialog name = 'GameOptions_Graphics' overlays = 'Dialog.GlobalOptions.TabWidget'> <layout type = 'vertical' padding = '16, 16, 16, 16' spacing = '8'> <widget name = 'EnableTabCheckbox' type = 'Checkbox' /> <import layout = 'Dialog.GlobalOptions_Graphics' /> </layout> </dialog> <dialog name = 'GameOptions_Audio' overlays = 'Dialog.GlobalOptions.TabWidget'> <layout type = 'vertical' padding = '16, 16, 16, 16' spacing = '8'> <widget name = 'EnableTabCheckbox' type = 'Checkbox' /> <import layout = 'Dialog.GlobalOptions_Audio' /> </layout> </dialog> <dialog name = 'GameOptions_MIDI' overlays = 'Dialog.GlobalOptions.TabWidget'> <layout type = 'vertical' padding = '16, 16, 16, 16' spacing = '8'> <widget name = 'EnableTabCheckbox' type = 'Checkbox' /> <import layout = 'Dialog.GlobalOptions_MIDI' /> </layout> </dialog> <dialog name = 'GameOptions_Volume' overlays = 'Dialog.GlobalOptions.TabWidget'> <layout type = 'vertical' padding = '16, 16, 16, 16' spacing = '8'> <widget name = 'EnableTabCheckbox' type = 'Checkbox' /> <import layout = 'Dialog.GlobalOptions_Volume' /> </layout> </dialog> <dialog name = 'GameOptions_Game' overlays = 'Dialog.GameOptions.TabWidget' shading = 'dim'> <layout type = 'vertical' padding = '16, 16, 16, 16'> <layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '16'> <widget name = 'Id' type = 'OptionsLabel' /> <widget name = 'Domain' type = 'PopUp' /> </layout> <layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '16'> <widget name = 'Name' type = 'OptionsLabel' /> <widget name = 'Desc' type = 'PopUp' /> </layout> <widget name = 'Lang' type = 'PopUp' /> <widget name = 'Platform' type = 'PopUp' /> </layout> </dialog> <dialog name = 'GameOptions_Paths' overlays = 'Dialog.GameOptions.TabWidget' shading = 'dim'> <layout type = 'vertical' padding = '16, 16, 16, 16'> <layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '16' center = 'true'> <widget name = 'Savepath' type = 'Button' /> <widget name = 'SavepathText' height = 'Globals.Line.Height' /> </layout> <layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '16' center = 'true'> <widget name = 'Extrapath' type = 'Button' /> <widget name = 'ExtrapathText' height = 'Globals.Line.Height' /> </layout> <layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '16' center = 'true'> <widget name = 'Gamepath' type = 'Button' /> <widget name = 'GamepathText' height = 'Globals.Line.Height' /> </layout> </layout> </dialog> </layout_info> "

Modified: scummvm/branches/gsoc2008-gui/gui/themes/modern.stx
===================================================================
--- scummvm/branches/gsoc2008-gui/gui/themes/modern.stx	2008-08-07 09:11:23 UTC (rev 33675)
+++ scummvm/branches/gsoc2008-gui/gui/themes/modern.stx	2008-08-07 10:53:33 UTC (rev 33676)
@@ -706,4 +706,111 @@
 			/>
 		</layout>
 	</dialog>
+	
+	<dialog name = 'GameOptions' overlays = 'Dialog.Launcher.GameList' shading = 'dim'>
+		<layout type = 'vertical' padding = '0, 0, 0, 0' direction = 'bottom2top' spacing = '16'>
+			<layout type = 'horizontal' direction = 'right2left' padding = '16, 16, 16, 16'>
+				<widget name = 'Ok' 
+						type = 'Button'
+				/>
+				<widget name = 'Cancel'
+						type = 'Button'
+				/>
+				<space/>
+			</layout>
+			<widget name = 'TabWidget'/>
+		</layout>
+	</dialog>
+	
+	<dialog name = 'GameOptions_Graphics' overlays = 'Dialog.GlobalOptions.TabWidget'>
+		<layout type = 'vertical' padding = '16, 16, 16, 16' spacing = '8'>
+			<widget name = 'EnableTabCheckbox'
+					type = 'Checkbox'
+			/>
+			<import layout = 'Dialog.GlobalOptions_Graphics' />
+		</layout>
+	</dialog>
+	
+	<dialog name = 'GameOptions_Audio' overlays = 'Dialog.GlobalOptions.TabWidget'>
+		<layout type = 'vertical' padding = '16, 16, 16, 16' spacing = '8'>
+			<widget name = 'EnableTabCheckbox'
+					type = 'Checkbox'
+			/>
+			<import layout = 'Dialog.GlobalOptions_Audio' />
+		</layout>
+	</dialog>
+	
+	<dialog name = 'GameOptions_MIDI' overlays = 'Dialog.GlobalOptions.TabWidget'>
+		<layout type = 'vertical' padding = '16, 16, 16, 16' spacing = '8'>
+			<widget name = 'EnableTabCheckbox'
+					type = 'Checkbox'
+			/>
+			<import layout = 'Dialog.GlobalOptions_MIDI' />
+		</layout>
+	</dialog>
+	
+	<dialog name = 'GameOptions_Volume' overlays = 'Dialog.GlobalOptions.TabWidget'>
+		<layout type = 'vertical' padding = '16, 16, 16, 16' spacing = '8'>
+			<widget name = 'EnableTabCheckbox'
+					type = 'Checkbox'
+			/>
+			<import layout = 'Dialog.GlobalOptions_Volume' />
+		</layout>
+	</dialog>
+	
+	<dialog name = 'GameOptions_Game' overlays = 'Dialog.GameOptions.TabWidget' shading = 'dim'>
+		<layout type = 'vertical' padding = '16, 16, 16, 16'>
+			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '16'>
+				<widget name = 'Id'
+						type = 'OptionsLabel'
+				/>
+				<widget name = 'Domain'
+						type = 'PopUp'
+				/>
+			</layout>
+			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '16'>
+				<widget name = 'Name'
+						type = 'OptionsLabel'
+				/>
+				<widget name = 'Desc'
+						type = 'PopUp'
+				/>
+			</layout>
+			<widget name = 'Lang'
+					type = 'PopUp'
+			/>
+			<widget name = 'Platform'
+					type = 'PopUp'
+			/>
+		</layout>
+	</dialog>
+	
+	<dialog name = 'GameOptions_Paths' overlays = 'Dialog.GameOptions.TabWidget' shading = 'dim'>
+		<layout type = 'vertical' padding = '16, 16, 16, 16'>
+			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '16' center = 'true'>
+				<widget name = 'Savepath'
+						type = 'Button'
+				/>
+				<widget name = 'SavepathText'
+						height = 'Globals.Line.Height'
+				/>
+			</layout>
+			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '16' center = 'true'>
+				<widget name = 'Extrapath'
+						type = 'Button'
+				/>
+				<widget name = 'ExtrapathText'
+						height = 'Globals.Line.Height'
+				/>
+			</layout>
+			<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '16' center = 'true'>
+				<widget name = 'Gamepath'
+						type = 'Button'
+				/>
+				<widget name = 'GamepathText'
+						height = 'Globals.Line.Height'
+				/>
+			</layout>
+		</layout>
+	</dialog>
 </layout_info>
\ No newline at end of file

Modified: scummvm/branches/gsoc2008-gui/gui/widget.cpp
===================================================================
--- scummvm/branches/gsoc2008-gui/gui/widget.cpp	2008-08-07 09:11:23 UTC (rev 33675)
+++ scummvm/branches/gsoc2008-gui/gui/widget.cpp	2008-08-07 10:53:33 UTC (rev 33676)
@@ -29,6 +29,8 @@
 #include "gui/eval.h"
 #include "gui/newgui.h"
 
+#include "gui/ThemeEval.h"
+
 namespace GUI {
 
 Widget::Widget(GuiObject *boss, int x, int y, int w, int h)
@@ -153,14 +155,14 @@
 }
 
 bool Widget::isEnabled() const {
-	if (g_gui.evaluator()->getVar(_name + ".enabled") == 0) {
+	if (g_gui.xmlEval()->getVar("Dialog." + _name + ".Enabled", 1) == 0) {
 		return false;
 	}
 	return ((_flags & WIDGET_ENABLED) != 0);
 }
 
 bool Widget::isVisible() const {
-	if (g_gui.evaluator()->getVar(_name + ".visible") == 0)
+	if (g_gui.xmlEval()->getVar("Dialog." + _name + ".Visible", 1) == 0)
 		return false;
 
 	return !(_flags & WIDGET_INVISIBLE);


This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.




More information about the Scummvm-git-logs mailing list