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

Tanoku at users.sourceforge.net Tanoku at users.sourceforge.net
Tue Aug 5 11:54:38 CEST 2008


Revision: 33630
          http://scummvm.svn.sourceforge.net/scummvm/?rev=33630&view=rev
Author:   Tanoku
Date:     2008-08-05 09:54:36 +0000 (Tue, 05 Aug 2008)

Log Message:
-----------
Massive refactoring on the layout parsing API.
Added support for layout spacings.
Fixed bug in theme conversion python script.

Modified Paths:
--------------
    scummvm/branches/gsoc2008-gui/common/xmlparser.h
    scummvm/branches/gsoc2008-gui/dists/msvc9/scummvm.vcproj
    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.h
    scummvm/branches/gsoc2008-gui/gui/module.mk
    scummvm/branches/gsoc2008-gui/gui/newgui.h
    scummvm/branches/gsoc2008-gui/gui/theme.h
    scummvm/branches/gsoc2008-gui/gui/themes/default.inc
    scummvm/branches/gsoc2008-gui/gui/themes/makedeftheme.py
    scummvm/branches/gsoc2008-gui/gui/themes/modern.stx

Modified: scummvm/branches/gsoc2008-gui/common/xmlparser.h
===================================================================
--- scummvm/branches/gsoc2008-gui/common/xmlparser.h	2008-08-05 02:31:26 UTC (rev 33629)
+++ scummvm/branches/gsoc2008-gui/common/xmlparser.h	2008-08-05 09:54:36 UTC (rev 33630)
@@ -504,7 +504,7 @@
 		while (isValidNameChar(_text[_pos]))
 			_token += _text[_pos++];
 
-		return isspace(_text[_pos]) != 0 || _text[_pos] == '>' || _text[_pos] == '=';
+		return isspace(_text[_pos]) != 0 || _text[_pos] == '>' || _text[_pos] == '=' || _text[_pos] == '/';
 	}
 
 	/**

Modified: scummvm/branches/gsoc2008-gui/dists/msvc9/scummvm.vcproj
===================================================================
--- scummvm/branches/gsoc2008-gui/dists/msvc9/scummvm.vcproj	2008-08-05 02:31:26 UTC (rev 33629)
+++ scummvm/branches/gsoc2008-gui/dists/msvc9/scummvm.vcproj	2008-08-05 09:54:36 UTC (rev 33630)
@@ -1244,6 +1244,10 @@
 				>
 			</File>
 			<File
+				RelativePath="..\..\gui\ThemeEval.cpp"
+				>
+			</File>
+			<File
 				RelativePath="..\..\gui\ThemeRenderer.h"
 				>
 			</File>

Modified: scummvm/branches/gsoc2008-gui/gui/ThemeEval.h
===================================================================
--- scummvm/branches/gsoc2008-gui/gui/ThemeEval.h	2008-08-05 02:31:26 UTC (rev 33629)
+++ scummvm/branches/gsoc2008-gui/gui/ThemeEval.h	2008-08-05 09:54:36 UTC (rev 33630)
@@ -40,227 +40,179 @@
 namespace GUI {
 	
 class ThemeLayout {
-public:
-	int16 x, y, w, h;
-	int paddingTop, paddingBottom, paddingLeft, paddingRight;
-	int spacing;
-	Common::Array<ThemeLayout*> children;
-	ThemeLayout *parent;
 
-	uint16 debugcolor;
-	
+public:
 	enum LayoutType {
-		kLayoutNone,
+		kLayoutMain,
 		kLayoutVertical,
 		kLayoutHorizontal,
 		kLayoutWidget
 	};
 	
-	enum LayoutParsing {
-		kLayoutParseDefault,
-		kLayoutParseTop2Bottom,
-		kLayoutParseBottom2Top,
-		kLayoutParseLeft2Right,
-		kLayoutParseRight2Left
-	} parsingMode;
+	ThemeLayout(ThemeLayout *p, const Common::String &name) : 
+		_parent(p), _name(name), _x(0), _y(0), _w(-1), _h(-1), _reverse(false),
+			_paddingLeft(0), _paddingRight(0), _paddingTop(0), _paddingBottom(0) { }
+		
+	virtual ~ThemeLayout() {
+		_children.clear();
+	}
+		
+	virtual void reflowLayout() = 0;
 	
-	virtual LayoutType getLayoutType() { return kLayoutNone; }
-	virtual void reflowLayout() {
-		assert(children.size() <= 1);
+	void addChild(ThemeLayout *child) { _children.push_back(child); }
+	
+	void setPadding(int8 left, int8 right, int8 top, int8 bottom) {
+		_paddingLeft = left;
+		_paddingRight = right;
+		_paddingTop = top;
+		_paddingBottom = bottom;
+	}
+	
+	void setSpacing(int8 spacing) {
+		_spacing = spacing;
+	}
+
+	int16 getParentX() { return _parent ? _parent->_x : 0; }
+	int16 getParentY() { return _parent ? _parent->_y : 0; }
+	
+	int16 getParentW() {
+		ThemeLayout *p = _parent;
+		int width = 0;
 		
-		if (children.size()) {
-			children[0]->w = w;
-			children[0]->h = h;
-			children[0]->reflowLayout();
-			children[0]->setX(0);
-			children[0]->setY(0);
+		while (p && p->getLayoutType() != kLayoutMain) {
+			width += p->_paddingRight + p->_paddingLeft;
+			if (p->getLayoutType() == kLayoutHorizontal) {
+				for (uint i = 0; i < p->_children.size(); ++i)
+					if (p->_children[i]->getLayoutType() == kLayoutWidget)
+						width += p->_children[i]->getHeight() + p->_spacing;
+			}
+			p = p->_parent;
 		}
+		
+		return p->getWidth() - width;
 	}
 	
-	virtual const char *getName() { return "Global Layout"; }
+	int16 getParentH() {
+		ThemeLayout *p = _parent;
+		int height = 0;
+		
+		while (p && p->getLayoutType() != kLayoutMain) {
+			height += p->_paddingBottom + p->_paddingTop;
+			if (p->getLayoutType() == kLayoutVertical) {
+				for (uint i = 0; i < p->_children.size(); ++i)
+					if (p->_children[i]->getLayoutType() == kLayoutWidget)
+						height += p->_children[i]->getHeight() + p->_spacing;
+			}
+			p = p->_parent;
+		}
+		
+		return p->getHeight() - height;
+	}
 	
-	int16 getParentW() { return parent ? parent->w - parent->paddingLeft - parent->paddingRight : g_system->getOverlayWidth(); }
-	int16 getParentH() { return parent ? parent->h - parent->paddingTop - parent->paddingBottom : g_system->getOverlayHeight(); }
-	int16 getParentX() { return parent ? parent->x : 0; }
-	int16 getParentY() { return parent ? parent->y : 0; }
+	int16 getX() { return _x; }
+	int16 getY() { return _y; }
+	int16 getWidth() { return _w; }
+	int16 getHeight() { return _h; }
 	
 	void setX(int newX) {
-		x += newX;
-		for (uint i = 0; i < children.size(); ++i)
-			children[i]->setX(newX);
+		_x += newX;
+		for (uint i = 0; i < _children.size(); ++i)
+			_children[i]->setX(newX);
 	}
 	
 	void setY(int newY) {
-		y += newY;
-		for (uint i = 0; i < children.size(); ++i)
-			children[i]->setY(newY);
+		_y += newY;
+		for (uint i = 0; i < _children.size(); ++i)
+			_children[i]->setY(newY);
 	}
 	
-	ThemeLayout(ThemeLayout *p) : parent(p), x(0), y(0), w(-1), h(-1) { debugcolor = rand() % 0xFFFF; }
+	void setWidth(int16 width) { _w = width; }
+	void setHeight(int16 height) { _h = height; }
 	
-	virtual void debugPrintIndent(int indent) {
-		while (indent--)
-			printf("    ");
-	}
-
 	void debugDraw(Graphics::Surface *screen, const Graphics::Font *font) {
-		uint16 color = debugcolor;
-		font->drawString(screen, getName(), x, y, w, color, Graphics::kTextAlignRight, 0, true);
-		screen->hLine(x, y, x + w, color);
-		screen->hLine(x, y + h, x + w, color);
-		screen->vLine(x, y, y + h, color);
-		screen->vLine(x + w, y, y + h, color);
+		uint16 color = 0xFFFF;
+		font->drawString(screen, getName(), _x, _y, _w, color, Graphics::kTextAlignRight, 0, true);
+		screen->hLine(_x, _y, _x + _w, color);
+		screen->hLine(_x, _y + _h, _x + _w , color);
+		screen->vLine(_x, _y, _y + _h, color);
+		screen->vLine(_x + _w, _y, _y + _h, color);
 
-		for (uint i = 0; i < children.size(); ++i)
-			children[i]->debugDraw(screen, font);
+		for (uint i = 0; i < _children.size(); ++i)
+			_children[i]->debugDraw(screen, font);
 	}
 	
-	virtual void debugPrint(int indent = 0) {
-		debugPrintIndent(indent);
-		switch (getLayoutType()) {
-			case kLayoutNone:
-				printf("Dialog Layout  ::  ");
-				break;
-			
-			case kLayoutVertical:
-				printf("Vertical Layout  ::  ");
-				break;
-				
-			case kLayoutHorizontal:
-				printf("Horizontal Layout  ::  ");
-				break;
-				
-			case kLayoutWidget:
-				printf("WIDGET (%s)  ::  ", getName());
-				break;
-		}
+	virtual LayoutType getLayoutType() = 0;
+	virtual const char *getName() { return _name.c_str(); }
 	
-		printf("X: %d / Y: %d / W: %d / H: %d\n", x, y, w, h);
-		
-		for (uint i = 0; i < children.size(); ++i)
-			children[i]->debugPrint(indent + 1);
-	}
+	virtual bool getWidgetData(const Common::String &name, int16 &x, int16 &y, int16 &w, int16 &h);
 	
-	virtual ~ThemeLayout() {
-		children.clear();
-	}
+protected:
+	int16 _x, _y, _w, _h;
+	int8 _paddingTop, _paddingBottom, _paddingLeft, _paddingRight;
+	int8 _spacing;
+	Common::Array<ThemeLayout*> _children;
+	ThemeLayout *_parent;
+	bool _reverse;
+	Common::String _name;
 };
 
-class ThemeLayoutVertical : public ThemeLayout {
+class ThemeLayoutMain : public ThemeLayout {
 public:
-	LayoutType getLayoutType() { return kLayoutVertical; }
-	
-	ThemeLayoutVertical(ThemeLayout *p) : ThemeLayout(p) {}
+	ThemeLayoutMain() : ThemeLayout(0, "") {}
+	void reflowLayout();
+	const char *getName() { return "Global Layout"; }
+	LayoutType getLayoutType() { return kLayoutMain; }
+};	
 
-	const char *getName() { return "Vertical Layout"; }
-	
-	void reflowLayout() {
-		int curX, curY, mul;
-		
-		if (parsingMode == kLayoutParseTop2Bottom) {
-			curX = paddingLeft;
-			curY = paddingTop;
-			mul = 1;
-		} else {
-			curX = paddingLeft;
-			curY = getParentH() - paddingBottom;
-			mul = -1;
-		}
-
-		h = paddingTop + paddingBottom;
-		
-		for (uint i = 0; i < children.size(); ++i) {
-			assert(children[i]->getLayoutType() != kLayoutVertical);
-		
-			children[i]->reflowLayout();
-		
-			if (i != children.size() - 1)
-				assert(children[i]->h != -1);
-			
-			if (i == 0)
-				assert(children[i]->w != -1);
-				
-			children[i]->setX(curX);
-			children[i]->setY((parsingMode == kLayoutParseBottom2Top) ? curY - children[i]->h : curY);
-		
-			if (children[i]->w == -1)
-				children[i]->w = w - paddingLeft - paddingRight;
-				
-			w = MAX(w, (int16)(children[i]->w + paddingLeft + paddingRight));
-				
-			if (children[i]->h == -1)
-				children[i]->h = 32;
-			
-			h += children[i]->h + spacing;
-	
-			curY += (children[i]->h + spacing) * mul;
-		}
-		
-		
+class ThemeLayoutVertical : public ThemeLayout {
+public:
+	ThemeLayoutVertical(ThemeLayout *p, int spacing, bool reverse) : ThemeLayout(p, "") {
+		_spacing = spacing;
+		_reverse = reverse;
 	}
+		
+	void reflowLayout();
+	const char *getName() { return "Vertical Layout"; }
+	LayoutType getLayoutType() { return kLayoutVertical; }
 };
 
 class ThemeLayoutHorizontal : public ThemeLayout {
 public:
-	LayoutType getLayoutType() { return kLayoutHorizontal; }
-	
-	ThemeLayoutHorizontal(ThemeLayout *p) : ThemeLayout(p) {}
-
-	const char *getName() { return "Horizontal Layout"; }
-	
-	void reflowLayout() {
-		int curX, curY;
-	
-		curX = paddingLeft;
-		curY = paddingTop;
-		w = paddingLeft + paddingRight;
-			
-		for (uint i = 0; i < children.size(); ++i) {
-			assert(children[i]->getLayoutType() != kLayoutHorizontal);
-		
-			children[i]->reflowLayout();
-		
-			if (i != children.size() - 1)
-				assert(children[i]->w != -1);
-				
-			if (i == 0)
-				assert(children[i]->h != -1);
-			
-			
-			children[i]->setX(curX);
-			children[i]->setY(curY);
-		
-			if (children[i]->h == -1)
-				children[i]->h = h - paddingTop - paddingBottom;
-
-			if (children[i]->w == -1)
-				children[i]->w = getParentW() - w - spacing;
-				
-			h = MAX(h, (int16)(children[i]->h + paddingTop + paddingBottom));
-
-			if (parsingMode == kLayoutParseRight2Left) {
-				for (int j = i - 1; j >= 0; --j)
-					children[j]->setX(children[i]->w + spacing);
-			} else {
-				curX += (children[i]->w + spacing);
-			}
-
-			w += children[i]->w + spacing;
-		}
+	ThemeLayoutHorizontal(ThemeLayout *p, int spacing, bool reverse) : 
+		ThemeLayout(p, "") {
+		_spacing = spacing;
+		_reverse = reverse;
 	}
+		
+	void reflowLayout();
+	const char *getName() { return "Horizontal Layout"; }
+	LayoutType getLayoutType() { return kLayoutHorizontal; }
 };
 
 class ThemeLayoutWidget : public ThemeLayout {
 public:
+	ThemeLayoutWidget(ThemeLayout *p, const Common::String &name) : ThemeLayout(p, name) {}
+	bool getWidgetData(const Common::String &name, int16 &x, int16 &y, int16 &w, int16 &h);
+	void reflowLayout() {}
 	LayoutType getLayoutType() { return kLayoutWidget; }
-	void reflowLayout() {
-		
+};
+
+class ThemeLayoutSpacing : public ThemeLayout {
+public:
+	ThemeLayoutSpacing(ThemeLayout *p, int size) : ThemeLayout(p, "") {
+		if (p->getLayoutType() == kLayoutHorizontal) {
+			_w = size;
+			_h = 1;
+		} else if (p->getLayoutType() == kLayoutVertical) {
+			_w = 1;
+			_h = size;
+		}
 	}
-	ThemeLayoutWidget(ThemeLayout *p, const Common::String &name) : ThemeLayout(p), widgetName(name) {}
 	
-	const char *getName() { return widgetName.c_str(); }
-	
-	Common::String widgetName;
+	bool getWidgetData(const Common::String &name, int16 &x, int16 &y, int16 &w, int16 &h) { return false; }
+	void reflowLayout() {}
+	LayoutType getLayoutType() { return kLayoutWidget; }
+	const char *getName() { return "SPACE"; }
 };
 	
 class ThemeEval {
@@ -275,7 +227,7 @@
 	int getVar(const Common::String &s) {
 		if (!_vars.contains(s)) {
 			warning("Missing variable: '%s'", s.c_str());
-			return -1;
+			return -13375; //EVAL_UNDEF_VAR
 		} 
 		
 		return _vars[s];
@@ -289,67 +241,16 @@
 	
 	bool hasVar(const Common::String &name) { return _vars.contains(name); }
 	
-	void addDialog(const Common::String &name) {
-		ThemeLayout *layout = new ThemeLayout(0);
-		_layouts[name] = layout;
-		
-		layout->x = 0;
-		layout->y = 0;
-		layout->w = g_system->getOverlayWidth();
-		layout->h = g_system->getOverlayHeight();
-
-		layout->paddingBottom = getVar("Globals.Padding.Bottom", 0);
-		layout->paddingTop = getVar("Globals.Padding.Top", 0);
-		layout->paddingRight = getVar("Globals.Padding.Right", 0);
-		layout->paddingLeft = getVar("Globals.Padding.Left", 0);
-		
-		_curLayout.push(layout);
-	}
+	void addDialog(const Common::String &name);
+	void addLayout(ThemeLayout::LayoutType type, bool reverse);
+	void addWidget(const Common::String &name, int w, int h);
+	void addSpacing(int size);
 	
-	void addLayout(ThemeLayout::LayoutType type, ThemeLayout::LayoutParsing parsingMode) {
-		ThemeLayout *layout = 0;
-		ThemeLayout::LayoutParsing def = ThemeLayout::kLayoutParseDefault;
-		
-		if (type == ThemeLayout::kLayoutVertical) {
-			layout = new ThemeLayoutVertical(_curLayout.top());
-			def = ThemeLayout::kLayoutParseTop2Bottom;
-		} else if (type == ThemeLayout::kLayoutHorizontal) {
-			layout = new ThemeLayoutHorizontal(_curLayout.top());
-			def = ThemeLayout::kLayoutParseLeft2Right;
-		}
-		
-		layout->parsingMode = (parsingMode == ThemeLayout::kLayoutParseDefault) ? def : parsingMode;
-		layout->paddingBottom = getVar("Globals.Padding.Bottom", 0);
-		layout->paddingTop = getVar("Globals.Padding.Top", 0);
-		layout->paddingRight = getVar("Globals.Padding.Right", 0);
-		layout->paddingLeft = getVar("Globals.Padding.Left", 0);
-
-		layout->spacing = 4;
-		
-		_curLayout.top()->children.push_back(layout);
-		_curLayout.push(layout);
-	}
+	void closeLayout() { _curLayout.pop(); }
+	void closeDialog() { _curLayout.pop()->reflowLayout(); }
 	
-	void closeLayout() {
-		_curLayout.pop();
-	}
 	
-	void closeDialog() {
-		_curLayout.top()->reflowLayout();
-		printf("DEBUG LAYOUT PRINT:\n");
-		
-		_curLayout.top()->debugPrint();
-	}
 	
-	void addWidget(const Common::String &name, int w, int h) {
-		ThemeLayoutWidget *widget = new ThemeLayoutWidget(_curLayout.top(), name);
-		
-		widget->w = w;
-		widget->h = h;
-		
-		_curLayout.top()->children.push_back(widget);
-	}
-	
 	void debugPrint() {
 		printf("Debug variable list:\n");
 		
@@ -360,7 +261,7 @@
 	}
 
 	void debugDraw(Graphics::Surface *screen, const Graphics::Font *font) {
-		_curLayout.top()->debugDraw(screen, font);
+		_layouts["Dialog.Launcher"]->debugDraw(screen, font);
 	}
 	
 private:

Modified: scummvm/branches/gsoc2008-gui/gui/ThemeParser.cpp
===================================================================
--- scummvm/branches/gsoc2008-gui/gui/ThemeParser.cpp	2008-08-05 02:31:26 UTC (rev 33629)
+++ scummvm/branches/gsoc2008-gui/gui/ThemeParser.cpp	2008-08-05 09:54:36 UTC (rev 33630)
@@ -492,11 +492,7 @@
 }
 
 bool ThemeParser::parserCallback_dialog(ParserNode *node) {
-	Common::String var = "Dialog." + node->values["name"] + ".";
-	
-//	if (!parseCommonLayoutProps(node, var))
-//		return parserError("Error when parsing Layout properties of '%s'.", var.c_str());
-		
+	Common::String var = "Dialog." + node->values["name"];
 	_theme->themeEval()->addDialog(var);
 		
 	return true;
@@ -504,26 +500,25 @@
 
 bool ThemeParser::parserCallback_layout(ParserNode *node) {
 	
-	if (!node->values.contains("type"))
-		return parserError("Layouts need a specific type (vertical or horizontal).");
-		
-	GUI::ThemeLayout::LayoutType type = GUI::ThemeLayout::kLayoutNone;
-	GUI::ThemeLayout::LayoutParsing parsing = GUI::ThemeLayout::kLayoutParseDefault;
-	
 	if (node->values["type"] == "vertical")
-		type = GUI::ThemeLayout::kLayoutVertical;
+		_theme->themeEval()->addLayout(GUI::ThemeLayout::kLayoutVertical, node->values["direction"] == "bottom2top");
 	else if (node->values["type"] == "horizontal")
-		type = GUI::ThemeLayout::kLayoutHorizontal;
+		_theme->themeEval()->addLayout(GUI::ThemeLayout::kLayoutHorizontal, node->values["direction"] == "right2left");
 
-	if (node->values.contains("direction")) {
-		if (node->values["direction"] == "right2left")
-			parsing = GUI::ThemeLayout::kLayoutParseRight2Left;
-	}
-		
-	_theme->themeEval()->addLayout(type, parsing);
 	return true;
 }
 
+bool ThemeParser::parserCallback_space(ParserNode *node) {
+	int size = -1;
+	
+	if (node->values.contains("size"))
+		if (!parseIntegerKey(node->values["size"].c_str(), 1, &size))
+			return parserError("Invalid value for Spacing size.");
+			
+	_theme->themeEval()->addSpacing(size);
+	return true;
+}
+
 bool ThemeParser::closedKeyCallback(ParserNode *node) {
 	if (node->name == "layout")
 		_theme->themeEval()->closeLayout();

Modified: scummvm/branches/gsoc2008-gui/gui/ThemeParser.h
===================================================================
--- scummvm/branches/gsoc2008-gui/gui/ThemeParser.h	2008-08-05 02:31:26 UTC (rev 33629)
+++ scummvm/branches/gsoc2008-gui/gui/ThemeParser.h	2008-08-05 09:54:36 UTC (rev 33630)
@@ -439,6 +439,8 @@
 					XML_PROP(type, true)
 					XML_PROP(align, false)
 					XML_PROP(direction, false)
+					XML_PROP(padding, false)
+					XML_PROP(spacing, false)
 					XML_KEY(widget)
 						XML_PROP(name, true)
 						XML_PROP(width, false)
@@ -446,7 +448,7 @@
 					KEY_END()
 					
 					XML_KEY(space)
-						XML_PROP(size, true)
+						XML_PROP(size, false)
 					KEY_END()
 					
 					XML_KEY_RECURSIVE(layout)
@@ -475,7 +477,7 @@
 	bool parserCallback_dialog(ParserNode *node);
 	bool parserCallback_child(ParserNode *node);
 	bool parserCallback_layout(ParserNode *node);
-	bool parserCallback_space(ParserNode *node) { return true; }
+	bool parserCallback_space(ParserNode *node);
 	
 	bool closedKeyCallback(ParserNode *node);
 	

Modified: scummvm/branches/gsoc2008-gui/gui/ThemeRenderer.h
===================================================================
--- scummvm/branches/gsoc2008-gui/gui/ThemeRenderer.h	2008-08-05 02:31:26 UTC (rev 33629)
+++ scummvm/branches/gsoc2008-gui/gui/ThemeRenderer.h	2008-08-05 09:54:36 UTC (rev 33630)
@@ -412,6 +412,8 @@
 	void finishBuffering() {
 		_buffering = false;
 	}
+	
+	void *evaluator() { return _themeEval; }
 
 protected:
 	

Modified: scummvm/branches/gsoc2008-gui/gui/module.mk
===================================================================
--- scummvm/branches/gsoc2008-gui/gui/module.mk	2008-08-05 02:31:26 UTC (rev 33629)
+++ scummvm/branches/gsoc2008-gui/gui/module.mk	2008-08-05 09:54:36 UTC (rev 33630)
@@ -24,6 +24,7 @@
 	themebrowser.o \
 	widget.o \
 	theme.o \
+	ThemeEval.o \
 	ThemeClassic.o \
 	ThemeModern.o \
 	ThemeParser.o \

Modified: scummvm/branches/gsoc2008-gui/gui/newgui.h
===================================================================
--- scummvm/branches/gsoc2008-gui/gui/newgui.h	2008-08-05 02:31:26 UTC (rev 33629)
+++ scummvm/branches/gsoc2008-gui/gui/newgui.h	2008-08-05 09:54:36 UTC (rev 33630)
@@ -39,6 +39,7 @@
 
 class Dialog;
 class Eval;
+class ThemeEval;
 
 #define g_gui	(GUI::NewGui::instance())
 
@@ -77,7 +78,9 @@
 
 	bool loadNewTheme(const Common::String &file);
 	Theme *theme() { return _theme; }
+	
 	Eval *evaluator() { return _theme->_evaluator; }
+	ThemeEval *xmlEval() { return (ThemeEval*)_theme->evaluator(); }
 
 	const Graphics::Font &getFont(Theme::FontStyle style = Theme::kFontStyleBold) const { return *(_theme->getFont(style)); }
 	int getFontHeight(Theme::FontStyle style = Theme::kFontStyleBold) const { return _theme->getFontHeight(style); }

Modified: scummvm/branches/gsoc2008-gui/gui/theme.h
===================================================================
--- scummvm/branches/gsoc2008-gui/gui/theme.h	2008-08-05 02:31:26 UTC (rev 33629)
+++ scummvm/branches/gsoc2008-gui/gui/theme.h	2008-08-05 09:54:36 UTC (rev 33630)
@@ -365,6 +365,8 @@
 	void loadTheme(Common::ConfigFile &config, bool reset = true);
 	void loadTheme(Common::ConfigFile &config, bool reset, bool doBackendSpecificPostProcessing);
 	Eval *_evaluator;
+	
+	virtual void *evaluator() { return (void*)_evaluator; }
 
 	static bool themeConfigUseable(const Common::String &file, const Common::String &style="", Common::String *cStyle=0, Common::ConfigFile *cfg=0);
 

Modified: scummvm/branches/gsoc2008-gui/gui/themes/default.inc
===================================================================
--- scummvm/branches/gsoc2008-gui/gui/themes/default.inc	2008-08-05 02:31:26 UTC (rev 33629)
+++ scummvm/branches/gsoc2008-gui/gui/themes/default.inc	2008-08-05 09:54:36 UTC (rev 33630)
@@ -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' />  <widget name = 'Inset' pos = '23, 94' size = '666, 666' /> <widget name = 'Button' size = '120, 25' /> <widget name = 'Slider' size = '666, 666' /> <widget name = 'ListWidget' padding = '7, 5, 5, 5' /> <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'> <layout type = 'vertical' align = 'center'> <widget name = 'Version' width = '247' height = 'Globals.Line.Height' /> <widget name = 'Logo' width = '283' height = '80' /> <layout type = 'horizontal' direction = 'right2left'> <layout type = 'vertical'> <widget name = 'StartButton' width = 'Globals.Button.Width' height = 'Globals.Button.Height' /> <space size = 20 /> <widget name = 'AddGameButton' width = 'Globals.Button.Width' height = 'Globals.Button.Height' /> <widget name = 'EditGameButton' width = 'Globals.Button.Width' height = 'Globals.Button.Height' /> <widget name = 'RemoveGameButton' width = 'Globals.Button.Width' height = 'Globals.Button.Height' /> <widget name = 'OptionsButton' width = 'Globals.Button.Width' height = 'Globals.Button.Height' /> <widget name = 'AboutButton' width = 'Globals.Button.Width' height = 'Globals.Button.Height' /> <widget name = 'QuittButton' width = 'Globals.Button.Width' height = 'Globals.Button.Height' /> </layout> <widget name = 'GameList'/> </layout> </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' />  <widget name = 'Inset' pos = '23, 94' size = '666, 666' /> <widget name = 'Button' size = '120, 25' /> <widget name = 'Slider' size = '666, 666' /> <widget name = 'ListWidget' padding = '7, 5, 5, 5' /> <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'> <layout type = 'vertical' align = 'center'> <widget name = 'Version' width = '247' height = 'Globals.Line.Height' /> <widget name = 'Logo' width = '283' height = '80' /> <layout type = 'horizontal' direction = 'right2left'> <layout type = 'vertical'> <widget name = 'StartButton' width = 'Globals.Button.Width' height = 'Globals.Button.Height' /> <widget name = 'AddGameButton' width = 'Globals.Button.Width' height = 'Globals.Button.Height' /> <widget name = 'EditGameButton' width = 'Globals.Button.Width' height = 'Globals.Button.Height' /> <widget name = 'RemoveGameButton' width = 'Globals.Button.Width' height = 'Globals.Button.Height' /> <widget name = 'OptionsButton' width = 'Globals.Button.Width' height = 'Globals.Button.Height' /> <widget name = 'AboutButton' width = 'Globals.Button.Width' height = 'Globals.Button.Height' /> <widget name = 'QuittButton' width = 'Globals.Button.Width' height = 'Globals.Button.Height' /> <space/> </layout> <widget name = 'GameList'/> </layout> </layout> </dialog> </layout_info> "

Modified: scummvm/branches/gsoc2008-gui/gui/themes/makedeftheme.py
===================================================================
--- scummvm/branches/gsoc2008-gui/gui/themes/makedeftheme.py	2008-08-05 02:31:26 UTC (rev 33629)
+++ scummvm/branches/gsoc2008-gui/gui/themes/makedeftheme.py	2008-08-05 09:54:36 UTC (rev 33630)
@@ -6,14 +6,13 @@
 def main():
 	theme_file = open(sys.argv[1], "r")
 	def_file = open("default.inc", "w")
-	comment = re.compile("\/\*(.*)\*\/")
 	
 	try:
 		output = "\""
 		for line in theme_file:
 			output += (line.rstrip("\n\r ").lstrip() + " ")
 		
-		output = re.sub("\/\*(.*)\*\/", "", output)
+		output = re.sub("\/\*(.*?)\*\/", "", output)
 		def_file.write(output + "\"\n")
 	finally:
 		theme_file.close()

Modified: scummvm/branches/gsoc2008-gui/gui/themes/modern.stx
===================================================================
--- scummvm/branches/gsoc2008-gui/gui/themes/modern.stx	2008-08-05 02:31:26 UTC (rev 33629)
+++ scummvm/branches/gsoc2008-gui/gui/themes/modern.stx	2008-08-05 09:54:36 UTC (rev 33630)
@@ -480,7 +480,6 @@
 							width = 'Globals.Button.Width'
 							height = 'Globals.Button.Height'
 					/>
-					<space size = 20 />
 					<widget name = 'AddGameButton'
 						width = 'Globals.Button.Width'
 						height = 'Globals.Button.Height'
@@ -505,6 +504,7 @@
 						width = 'Globals.Button.Width'
 						height = 'Globals.Button.Height'
 					/>
+					<space/>
 				</layout>
 				<widget name = 'GameList'/>
 			</layout>


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