aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--graphics/VectorRenderer.cpp74
-rw-r--r--graphics/VectorRenderer.h7
-rw-r--r--gui/ThemeEval.cpp4
-rw-r--r--gui/ThemeParser.cpp4
-rw-r--r--gui/ThemeParser.h1
-rw-r--r--gui/ThemeRenderer.cpp18
-rw-r--r--gui/themebrowser.cpp2
-rw-r--r--gui/themes/default.inc544
-rw-r--r--gui/themes/makedeftheme.py26
-rw-r--r--gui/themes/scummclassic.zip (renamed from gui/themes/scummodern.stx)bin39807 -> 28291 bytes
-rw-r--r--gui/themes/scummclassic/THEMERC1
-rw-r--r--gui/themes/scummclassic/classic_gfx.stx360
-rw-r--r--gui/themes/scummclassic/classic_layout.stx730
-rw-r--r--gui/themes/scummodern.zipbin69091 -> 122557 bytes
-rw-r--r--gui/themes/scummodern/THEMERC1
-rw-r--r--gui/themes/scummodern/checkbox.bmpbin0 -> 774 bytes
-rw-r--r--gui/themes/scummodern/cursor.bmpbin0 -> 3126 bytes
-rw-r--r--gui/themes/scummodern/cursor_small.bmpbin0 -> 1062 bytes
-rw-r--r--gui/themes/scummodern/helvr12-l1.fccbin0 -> 5615 bytes
-rw-r--r--gui/themes/scummodern/logo.bmpbin0 -> 68214 bytes
-rw-r--r--gui/themes/scummodern/scummodern_gfx.stx464
-rw-r--r--gui/themes/scummodern/scummodern_layout.stx602
-rw-r--r--gui/themes/scummodern/scummodern_layout_320.stx579
-rw-r--r--gui/themes/scummtheme.py87
24 files changed, 3193 insertions, 311 deletions
diff --git a/graphics/VectorRenderer.cpp b/graphics/VectorRenderer.cpp
index 17a221a725..16797fa930 100644
--- a/graphics/VectorRenderer.cpp
+++ b/graphics/VectorRenderer.cpp
@@ -477,7 +477,7 @@ template<typename PixelType, typename PixelFormat>
void VectorRendererSpec<PixelType, PixelFormat>::
drawRoundedSquare(int x, int y, int r, int w, int h) {
if (x + w > Base::_activeSurface->w || y + h > Base::_activeSurface->h ||
- w <= 0 || h <= 0 || x < 0 || y < 0)
+ w <= 0 || h <= 0 || x < 0 || y < 0 || r <= 0)
return;
if ((r << 1) > w || (r << 1) > h)
@@ -527,6 +527,13 @@ drawTab(int x, int y, int r, int w, int h) {
if (x + w > Base::_activeSurface->w || y + h > Base::_activeSurface->h ||
w <= 0 || h <= 0 || x < 0 || y < 0 || r > w || r > h)
return;
+
+ if (r == 0 && Base::_bevel > 0) {
+ drawBevelTabAlg(x, y, w, h, Base::_bevel, _bevelColor, _fgColor, (Base::_dynamicData >> 16), (Base::_dynamicData & 0xFFFF));
+ return;
+ }
+
+ if (r == 0) return;
switch (Base::_fillMode) {
case kFillDisabled:
@@ -696,6 +703,51 @@ drawTabAlg(int x1, int y1, int w, int h, int r, PixelType color, VectorRenderer:
}
}
+
+/** BEVELED TABS FOR CLASSIC THEME **/
+template<typename PixelType, typename PixelFormat>
+void VectorRendererSpec<PixelType, PixelFormat>::
+drawBevelTabAlg(int x, int y, int w, int h, int bevel, PixelType top_color, PixelType bottom_color, int baseLeft, int baseRight) {
+ int pitch = Base::surfacePitch();
+ int i, j;
+
+ PixelType *ptr_left = (PixelType *)_activeSurface->getBasePtr(x, y);
+
+ i = bevel;
+ while (i--) {
+ colorFill(ptr_left, ptr_left + w, top_color);
+ ptr_left += pitch;
+ }
+
+ if (baseLeft > 0) {
+ i = h - bevel;
+ ptr_left = (PixelType *)_activeSurface->getBasePtr(x, y);
+ while (i--) {
+ colorFill(ptr_left, ptr_left + bevel, top_color);
+ ptr_left += pitch;
+ }
+ }
+
+ i = h - bevel;
+ j = bevel;
+ ptr_left = (PixelType *)_activeSurface->getBasePtr(x + w - bevel, y);
+ while (i--) {
+ colorFill(ptr_left + j, ptr_left + bevel, bottom_color);
+ if (j > 0) j--;
+ ptr_left += pitch;
+ }
+
+ i = bevel;
+ ptr_left = (PixelType *)_activeSurface->getBasePtr(x + w - bevel, y + h - bevel);
+ while (i--) {
+ colorFill(ptr_left, ptr_left + baseRight + bevel, bottom_color);
+
+ if (baseLeft)
+ colorFill(ptr_left - w - baseLeft + bevel, ptr_left - w + bevel + bevel, top_color);
+ ptr_left += pitch;
+ }
+}
+
/** SQUARE ALGORITHM **/
template<typename PixelType, typename PixelFormat>
void VectorRendererSpec<PixelType, PixelFormat>::
@@ -732,10 +784,26 @@ drawSquareAlg(int x, int y, int w, int h, PixelType color, VectorRenderer::FillM
/** SQUARE ALGORITHM **/
template<typename PixelType, typename PixelFormat>
void VectorRendererSpec<PixelType, PixelFormat>::
-drawBevelSquareAlg(int x, int y, int w, int h, int bevel, PixelType top_color, PixelType bottom_color) {
- PixelType *ptr_left = (PixelType *)_activeSurface->getBasePtr(x, y);
+drawBevelSquareAlg(int x, int y, int w, int h, int bevel, PixelType top_color, PixelType bottom_color, bool fill) {
int pitch = Base::surfacePitch();
+
+ int height = h;
+ PixelType *ptr_fill = (PixelType *)_activeSurface->getBasePtr(x, y);
+
+ if (fill) {
+ while (height--) {
+ blendFill(ptr_fill, ptr_fill + w, _bgColor, 200);
+ ptr_fill += pitch;
+ }
+ }
+
int i, j;
+ x = MAX(x - bevel, 0);
+ y = MAX(y - bevel, 0);
+ h += bevel << 1;
+ w += bevel << 1;
+
+ PixelType *ptr_left = (PixelType *)_activeSurface->getBasePtr(x, y);
i = bevel;
while (i--) {
diff --git a/graphics/VectorRenderer.h b/graphics/VectorRenderer.h
index 34c9c2c8a5..0407028556 100644
--- a/graphics/VectorRenderer.h
+++ b/graphics/VectorRenderer.h
@@ -405,7 +405,7 @@ public:
void drawCallback_BEVELSQ(const Common::Rect &area, const DrawStep &step) {
uint16 x, y, w, h;
stepGetPositions(step, area, x, y, w, h);
- drawBeveledSquare(x, y, w, h, step.extraData);
+ drawBeveledSquare(x, y, w, h, _bevel);
}
void drawCallback_TAB(const Common::Rect &area, const DrawStep &step) {
@@ -599,7 +599,7 @@ public:
void drawTab(int x, int y, int r, int w, int h);
void drawBeveledSquare(int x, int y, int w, int h, int bevel) {
- drawBevelSquareAlg(x, y, w, h, bevel, _fgColor, _bgColor);
+ drawBevelSquareAlg(x, y, w, h, bevel, _bevelColor, _fgColor, Base::_fillMode != kFillDisabled);
}
void drawString(const Graphics::Font *font, const Common::String &text,
@@ -860,8 +860,9 @@ protected:
virtual void drawSquareAlg(int x, int y, int w, int h, PixelType color, FillMode fill_m);
virtual void drawTriangleVertAlg(int x, int y, int w, int h, bool inverted, PixelType color, FillMode fill_m);
virtual void drawTriangleFast(int x, int y, int size, bool inverted, PixelType color, FillMode fill_m);
- virtual void drawBevelSquareAlg(int x, int y, int w, int h, int bevel, PixelType top_color, PixelType bottom_color);
+ virtual void drawBevelSquareAlg(int x, int y, int w, int h, int bevel, PixelType top_color, PixelType bottom_color, bool fill);
virtual void drawTabAlg(int x, int y, int w, int h, int r, PixelType color, VectorRenderer::FillMode fill_m, int baseLeft = 0, int baseRight = 0);
+ virtual void drawBevelTabAlg(int x, int y, int w, int h, int bevel, PixelType topColor, PixelType bottomColor, int baseLeft = 0, int baseRight = 0);
/**
* SHADOW DRAWING ALGORITHMS
diff --git a/gui/ThemeEval.cpp b/gui/ThemeEval.cpp
index f93706cb47..2d8290ffa8 100644
--- a/gui/ThemeEval.cpp
+++ b/gui/ThemeEval.cpp
@@ -139,6 +139,8 @@ void ThemeLayoutVertical::reflowLayout() {
_h += _children[i]->getHeight() + _spacing;
}
}
+
+ _h -= _spacing;
}
void ThemeLayoutHorizontal::reflowLayout() {
@@ -198,6 +200,8 @@ void ThemeLayoutHorizontal::reflowLayout() {
_h = MAX(_h, (int16)(_children[i]->getHeight() + _paddingTop + _paddingBottom));
}
+
+ _w -= _spacing;
}
ThemeEval::~ThemeEval() {
diff --git a/gui/ThemeParser.cpp b/gui/ThemeParser.cpp
index 3167f94009..6972d89b6f 100644
--- a/gui/ThemeParser.cpp
+++ b/gui/ThemeParser.cpp
@@ -375,10 +375,6 @@ bool ThemeParser::parseDrawStep(ParserNode *stepNode, Graphics::DrawStep *drawst
}
}
- if (functionName == "bevelsq") {
- __PARSER_ASSIGN_INT(extraData, "bevel", true);
- }
-
if (functionName == "triangle") {
drawstep->extraData = VectorRenderer::kTriangleUp;
diff --git a/gui/ThemeParser.h b/gui/ThemeParser.h
index e4821ef00f..5c6ecd6649 100644
--- a/gui/ThemeParser.h
+++ b/gui/ThemeParser.h
@@ -150,7 +150,6 @@ protected:
XML_PROP(gradient_factor, false)
XML_PROP(bevel_color, false)
XML_PROP(fill, false)
- XML_PROP(bevel, false)
XML_PROP(radius, false)
XML_PROP(width, false)
XML_PROP(height, false)
diff --git a/gui/ThemeRenderer.cpp b/gui/ThemeRenderer.cpp
index 80e605ac85..f018910944 100644
--- a/gui/ThemeRenderer.cpp
+++ b/gui/ThemeRenderer.cpp
@@ -37,6 +37,8 @@
#include "gui/ThemeEval.h"
#include "graphics/VectorRenderer.h"
+#define GUI_ENABLE_BUILTIN_THEME
+
namespace GUI {
using namespace Graphics;
@@ -401,6 +403,9 @@ bool ThemeRenderer::loadDefaultXML() {
if (!parser()->loadBuffer((const byte*)defaultXML, strlen(defaultXML), false))
return false;
+
+ _themeName = "ScummVM Classic Theme (Builtin Version)";
+ _themeFileName = "builtin";
return parser()->parse();
#else
@@ -541,9 +546,9 @@ void ThemeRenderer::queueBitmap(const Graphics::Surface *bitmap, const Common::R
void ThemeRenderer::drawDD(const DrawQueue &q, bool draw, bool restore) {
Common::Rect extendedRect = q.area;
- extendedRect.grow(kDirtyRectangleThreshold);
- extendedRect.right += _widgets[q.type]->_backgroundOffset;
- extendedRect.bottom += _widgets[q.type]->_backgroundOffset;
+ extendedRect.grow(kDirtyRectangleThreshold + _widgets[q.type]->_backgroundOffset);
+// extendedRect.right += _widgets[q.type]->_backgroundOffset;
+// extendedRect.bottom += _widgets[q.type]->_backgroundOffset;
if (restore)
restoreBackground(extendedRect);
@@ -584,8 +589,11 @@ void ThemeRenderer::calcBackgroundOffset(DrawData type) {
uint maxShadow = 0;
for (Common::List<Graphics::DrawStep>::const_iterator step = _widgets[type]->_steps.begin();
step != _widgets[type]->_steps.end(); ++step) {
- if (((*step).autoWidth || (*step).autoHeight) && (*step).shadow > maxShadow)
- maxShadow = (*step).shadow;
+ if ((step->autoWidth || step->autoHeight) && step->shadow > maxShadow)
+ maxShadow = step->shadow;
+
+ if (step->drawingCall == &Graphics::VectorRenderer::drawCallback_BEVELSQ && step->bevel > maxShadow)
+ maxShadow = step->bevel;
}
_widgets[type]->_backgroundOffset = maxShadow;
diff --git a/gui/themebrowser.cpp b/gui/themebrowser.cpp
index 2f1ab48f2d..490248619b 100644
--- a/gui/themebrowser.cpp
+++ b/gui/themebrowser.cpp
@@ -91,7 +91,7 @@ void ThemeBrowser::updateListing() {
// classic is always build in
Entry th;
- th.name = "ScummVM Modern Theme (Builtin Version)";
+ th.name = "ScummVM Classic Theme (Builtin Version)";
th.file = "builtin";
_themes.push_back(th);
diff --git a/gui/themes/default.inc b/gui/themes/default.inc
index 262260a7fc..d87a1f5632 100644
--- a/gui/themes/default.inc
+++ b/gui/themes/default.inc
@@ -1,137 +1,101 @@
"<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 = 'lightgrey' "
+"rgb = '104, 104, 104' "
"/> "
-"<color name = 'shadowcolor' "
-"rgb = '63, 60, 17' "
+"<color name = 'darkgrey' "
+"rgb = '64, 64, 64' "
+"/> "
+"<color name = 'green' "
+"rgb = '32, 160, 32' "
+"/> "
+"<color name = 'green2' "
+"rgb = '0, 255, 0' "
"/> "
"</palette> "
-"<bitmaps> "
-"<bitmap filename = 'logo.bmp'/> "
-"<bitmap filename = 'cursor.bmp'/> "
-"</bitmaps> "
"<fonts> "
"<font id = 'text_default' "
"file = 'default' "
-"color = 'black' "
+"color = 'green' "
"/> "
"<font id = 'text_hover' "
"file = 'default' "
-"color = 'bgreen' "
+"color = 'green2' "
"/> "
"<font id = 'text_disabled' "
"file = 'default' "
-"color = '128, 128, 128' "
+"color = 'lightgrey' "
"/> "
"<font id = 'text_inverted' "
"file = 'default' "
-"color = '0, 0, 0' "
+"color = 'black' "
"/> "
"<font id = 'text_button' "
"file = 'default' "
-"color = 'white' "
+"color = 'green' "
"/> "
"<font id = 'text_button_hover' "
"file = 'default' "
-"color = 'blandyellow' "
+"color = 'green2' "
"/> "
"<font id = 'text_normal' "
-"file = 'helvr12-l1.bdf' "
-"color = 'black' "
+"file = 'default' "
+"color = 'green' "
"/> "
"</fonts> "
-"<defaults fill = 'gradient' fg_color = 'white' bevel_color = '237, 169, 72'/> "
+"<defaults fill = 'foreground' fg_color = 'darkgrey' bg_color = 'black' shadow = '0' bevel_color = 'lightgrey'/> "
"<drawdata id = 'text_selection' cache = false> "
"<drawstep func = 'square' "
"fill = 'foreground' "
-"fg_color = 'bgreen' "
+"fg_color = 'green' "
"/> "
"</drawdata> "
"<drawdata id = 'mainmenu_bg' cache = false> "
"<drawstep func = 'fill' "
-"fill = 'gradient' "
-"gradient_start = '208, 112, 8' "
-"gradient_end = '232, 192, 16' "
+"fill = 'foreground' "
+"fg_color = 'black' "
"/> "
"</drawdata> "
"<drawdata id = 'special_bg' cache = false> "
-"<drawstep func = 'roundedsq' "
-"radius = '4' "
-"fill = 'gradient' "
-"stroke = '0' "
-"gradient_start = '208, 112, 8' "
-"gradient_end = '232, 192, 16' "
-"shadow = '3' "
+"<drawstep func = 'bevelsq' "
+"bevel = '2' "
"/> "
"</drawdata> "
"<drawdata id = 'separator' cache = false> "
"<drawstep func = 'square' "
"fill = 'foreground' "
-"height = '1' "
+"height = '2' "
"ypos = 'center' "
-"fg_color = 'black' "
+"fg_color = 'lightgrey' "
"/> "
"</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' "
+"<drawstep func = 'bevelsq' "
+"bevel = '2' "
"/> "
"</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' "
+"<drawstep func = 'square' "
+"fill = 'foreground' "
+"fg_color = 'green2' "
"/> "
"</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' "
+"<drawstep func = 'square' "
+"fill = 'foreground' "
+"fg_color = 'green' "
"/> "
"</drawdata> "
"<drawdata id = 'scrollbar_button_idle' cache = false> "
-"<drawstep func = 'roundedsq' "
-"radius = '4' "
+"<drawstep func = 'bevelsq' "
+"bevel = '2' "
"fill = 'none' "
-"fg_color = '176, 164, 160' "
-"stroke = 1 "
"/> "
"<drawstep func = 'triangle' "
-"fg_color = '0, 0, 0' "
+"fg_color = 'green' "
"fill = 'foreground' "
"width = 'auto' "
"height = 'auto' "
@@ -141,15 +105,12 @@
"/> "
"</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 = 'bevelsq' "
+"bevel = '2' "
+"fill = 'none' "
"/> "
"<drawstep func = 'triangle' "
-"fg_color = '0, 0, 0' "
+"fg_color = 'green2' "
"fill = 'foreground' "
"width = 'auto' "
"height = 'auto' "
@@ -159,17 +120,14 @@
"/> "
"</drawdata> "
"<drawdata id = 'tab_active' cache = false> "
-"<text font = 'text_default' "
+"<text font = 'text_hover' "
"vertical_align = 'center' "
"horizontal_align = 'center' "
"/> "
"<drawstep func = 'tab' "
-"radius = '4' "
-"stroke = '0' "
-"fill = 'gradient' "
-"gradient_end = 'xtrabrightred' "
-"gradient_start = 'blandyellow' "
-"shadow = 3 "
+"bevel = '2' "
+"radius = '0' "
+"fill = 'none' "
"/> "
"</drawdata> "
"<drawdata id = 'tab_inactive' cache = false> "
@@ -178,62 +136,50 @@
"horizontal_align = 'center' "
"/> "
"<drawstep func = 'tab' "
-"radius = '4' "
-"stroke = '0' "
-"fill = 'foreground' "
-"fg_color = '240, 205, 118' "
-"shadow = 3 "
+"bevel = '2' "
+"radius = '0' "
+"fill = 'none' "
"/> "
"</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 "
+"<drawstep func = 'bevelsq' "
+"bevel = '2' "
+"fill = 'none' "
+"/> "
+"</drawdata> "
+"<drawdata id = 'slider_disabled' cache = false> "
+"<drawstep func = 'square' "
"fill = 'foreground' "
-"fg_color = 'blandyellow' "
-"bevel = 1 "
-"bevel_color = 'shadowcolor' "
+"fg_color = 'lightgrey' "
"/> "
"</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' "
+"<drawstep func = 'square' "
+"fill = 'foreground' "
+"fg_color = 'green' "
"/> "
"</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' "
+"<drawstep func = 'square' "
+"fill = 'foreground' "
+"fg_color = 'green2' "
+"/> "
+"</drawdata> "
+"<drawdata id = 'widget_small' cache = false> "
+"<drawstep func = 'bevelsq' "
+"bevel = '2' "
+"fill = 'none' "
"/> "
"</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 = 'bevelsq' "
+"bevel = '2' "
+"fill = 'none' "
"/> "
"<drawstep func = 'triangle' "
-"fg_color = '63, 60, 52' "
+"fg_color = 'green' "
"fill = 'foreground' "
"width = 'height' "
"height = 'auto' "
@@ -247,16 +193,12 @@
"/> "
"</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 = 'bevelsq' "
+"bevel = '2' "
+"fill = 'none' "
"/> "
"<drawstep func = 'triangle' "
-"fg_color = '63, 60, 52' "
+"fg_color = 'green2' "
"fill = 'foreground' "
"width = 'height' "
"height = 'auto' "
@@ -270,28 +212,25 @@
"/> "
"</drawdata> "
"<drawdata id = 'widget_textedit' cache = false> "
-"<drawstep func = 'roundedsq' "
-"fill = 'foreground' "
-"radius = 4 "
-"fg_color = 'blandyellow' "
-"shadow = 0 "
-"bevel = 1 "
-"bevel_color = 'shadowcolor' "
+"<drawstep func = 'bevelsq' "
+"bevel = '2' "
+"fill = 'none' "
+"/> "
+"</drawdata> "
+"<drawdata id = 'plain_bg' cache = false> "
+"<drawstep func = 'bevelsq' "
+"bevel = '2' "
"/> "
"</drawdata> "
"<drawdata id = 'caret' cache = false> "
"<drawstep func = 'square' "
"fill = 'foreground' "
-"fg_color = 'black' "
+"fg_color = 'lightgrey' "
"/> "
"</drawdata> "
"<drawdata id = 'default_bg' cache = false> "
-"<drawstep func = 'roundedsq' "
-"radius = 12 "
-"stroke = 0 "
-"fg_color = 'xtrabrightred' "
-"fill = 'foreground' "
-"shadow = 3 "
+"<drawstep func = 'bevelsq' "
+"bevel = '2' "
"/> "
"</drawdata> "
"<drawdata id = 'button_idle' cache = false> "
@@ -299,15 +238,9 @@
"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 "
+"<drawstep func = 'bevelsq' "
+"bevel = '2' "
+"fill = 'none' "
"/> "
"</drawdata> "
"<drawdata id = 'button_hover' cache = false> "
@@ -315,17 +248,9 @@
"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 "
+"<drawstep func = 'bevelsq' "
+"bevel = '2' "
+"fill = 'none' "
"/> "
"</drawdata> "
"<drawdata id = 'button_disabled' cache = false> "
@@ -333,12 +258,9 @@
"vertical_align = 'center' "
"horizontal_align = 'center' "
"/> "
-"<drawstep func = 'roundedsq' "
-"radius = '8' "
-"stroke = 0 "
-"fill = 'foreground' "
-"fg_color = '200, 200, 200' "
-"shadow = 3 "
+"<drawstep func = 'bevelsq' "
+"bevel = '2' "
+"fill = 'none' "
"/> "
"</drawdata> "
"<drawdata id = 'checkbox_disabled' cache = false> "
@@ -346,13 +268,9 @@
"vertical_align = 'top' "
"horizontal_align = 'left' "
"/> "
-"<drawstep func = 'roundedsq' "
+"<drawstep func = 'bevelsq' "
+"bevel = '2' "
"fill = 'none' "
-"radius = 4 "
-"fg_color = 'black' "
-"shadow = 0 "
-"bevel = 1 "
-"bevel_color = 'shadowcolor' "
"/> "
"</drawdata> "
"<drawdata id = 'checkbox_selected' cache = false> "
@@ -360,15 +278,9 @@
"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' "
+"<drawstep func = 'bevelsq' "
+"bevel = '2' "
+"fill = 'none' "
"/> "
"</drawdata> "
"<drawdata id = 'checkbox_default' cache = false> "
@@ -376,66 +288,70 @@
"vertical_align = 'top' "
"horizontal_align = 'left' "
"/> "
-"<drawstep func = 'roundedsq' "
-"fill = 'foreground' "
-"radius = 4 "
-"fg_color = 'blandyellow' "
-"shadow = 0 "
-"bevel = 1 "
-"bevel_color = 'shadowcolor' "
+"<drawstep func = 'bevelsq' "
+"bevel = '2' "
+"fill = 'none' "
"/> "
"</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 "
+"<drawstep func = 'bevelsq' "
+"bevel = '2' "
"/> "
"</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 = 'TabLabelWidth' value = '110' /> "
+"<def resolution = '320xY, 256x240' var = 'Line.Height' value = '12' /> "
+"<def resolution = '320xY, 256x240' var = 'Font.Height' value = '10' /> "
+"<def resolution = '320xY, 256x240' var = 'TabLabelWidth' value = '100' /> "
"<def var = 'WidgetSize' value = 'kBigWidgetSize' /> "
-"<def resolution = '320xY' var = 'WidgetSize' value = 'kNormalWidgetSize' /> "
-"<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 = 'About.OuterBorder' value = '80'/> "
-"<def resolution = '320xY' var = 'About.OuterBorder' value = '16'/> "
-"<def var = 'ListWidget.hlLeftPadding' value = '0'/> "
-"<def var = 'ListWidget.hlRightPadding' value = '16'/> "
"<def var = 'PopUpWidget.labelSpacing' value = '10' /> "
-"<def var = 'ShowLauncherLogo' value = '1'/> "
-"<def resolution = '320xY' var = 'ShowLauncherLogo' value = '0'/> "
+"<def resolution = '320xY, 256x240' var = 'WidgetSize' value = 'kNormalWidgetSize' /> "
+"<def resolution = '320xY, 256x240' var = 'About.OuterBorder' value = '10'/> "
+"<def resolution = '320xY, 256x240' var = 'PopUpWidget.labelSpacing' value = '6' /> "
+"<def var = 'Layout.Spacing' value = '8' /> "
+"<def var = 'ShowLauncherLogo' value = '0'/> "
+"<def var = 'ScummSaveLoad.ExtInfo.Visible' value = '1'/> "
+"<def resolution = '320xY, 256x240' var = 'ScummSaveLoad.ExtInfo.Visible' value = '0'/> "
"<widget name = 'OptionsLabel' "
"size = '110, Globals.Line.Height' "
"/> "
"<widget name = 'SmallLabel' "
"size = '24, Globals.Line.Height' "
"/> "
+"<widget name = 'ShortOptionsLabel' "
+"size = '60, Globals.Line.Height' "
+"/> "
+"<widget resolution = '320xY, 256x240' name = 'ShortOptionsLabel' "
+"size = '40, Globals.Line.Height' "
+"/> "
"<widget name = 'Button' "
"size = 'kBigButtonWidth, kBigButtonHeight' "
"/> "
-"<widget resolution = '320xY' "
-"name = 'Button' "
+"<widget name = 'Slider' "
+"size = 'kBigSliderWidth, kBigSliderHeight' "
+"/> "
+"<widget resolution = '320xY, 256x240' name = 'Button' "
"size = 'kButtonWidth, kButtonHeight' "
"/> "
-"<widget name = 'Slider' "
-"size = '128, 18' "
+"<widget resolution = '320xY, 256x240' name = 'Slider' "
+"size = 'kSliderWidth, kSliderHeight' "
"/> "
"<widget name = 'PopUp' "
"size = '-1, 19' "
"/> "
+"<widget name = 'PopUp' resolution = '320xY, 256x240' "
+"size = '-1, 15' "
+"/> "
"<widget name = 'Checkbox' "
-"size = '-1, Globals.Line.Height' "
+"size = '-1, 14' "
+"/> "
+"<widget name = 'Checkbox' resolution = '320xY, 256x240' "
+"size = '-1, 10' "
"/> "
"<widget name = 'ListWidget' "
"padding = '5, 0, 8, 0' "
@@ -444,96 +360,106 @@
"padding = '7, 5, 0, 0' "
"/> "
"<widget name = 'EditTextWidget' "
-"padding = '7, 5, 0, 0' "
+"padding = '5, 5, 0, 0' "
"/> "
"<widget name = 'Console' "
"padding = '7, 5, 5, 5' "
"/> "
-"<widget name = 'TabWidget'> "
-"<child name = 'Tab' "
+"<widget name = 'TabWidget.Tab' "
"size = '75, 27' "
"padding = '0, 0, 8, 0' "
"/> "
-"<child name = 'NavButton' "
+"<widget name = 'TabWidget.NavButton' "
"size = '15, 18' "
"padding = '0, 3, 4, 0' "
"/> "
-"</widget> "
+"<widget name = 'TabWidget.Tab' resolution = '320xY, 256x240' "
+"size = '45, 16' "
+"padding = '0, 0, 0, 0' "
+"/> "
+"<widget name = 'TabWidget.NavButton' resolution = '320xY, 256x240' "
+"size = '32, 18' "
+"padding = '0, 3, 4, 0' "
+"/> "
"</globals> "
"<dialog name = 'Launcher' overlays = 'screen'> "
-"<layout type = 'vertical' center = 'true' padding = '23, 23, 8, 23'> "
+"<layout type = 'vertical' center = 'true' padding = '16, 16, 8, 8'> "
"<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 = 'GameList'/> "
+"<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '10'> "
"<widget name = 'AddGameButton' "
-"type = 'Button' "
+"width = '190' "
+"height = '20' "
"/> "
"<widget name = 'EditGameButton' "
-"type = 'Button' "
+"width = '190' "
+"height = '20' "
"/> "
"<widget name = 'RemoveGameButton' "
-"type = 'Button' "
+"width = '190' "
+"height = '20' "
"/> "
-"<space size = '16' /> "
-"<widget name = 'OptionsButton' "
-"type = 'Button' "
+"</layout> "
+"<space size = '12'/> "
+"<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '10'> "
+"<widget name = 'QuitButton' "
+"width = '140' "
+"height = '20' "
"/> "
"<widget name = 'AboutButton' "
-"type = 'Button' "
+"width = '140' "
+"height = '20' "
"/> "
-"<space size = '16' /> "
-"<widget name = 'QuitButton' "
-"type = 'Button' "
+"<widget name = 'OptionsButton' "
+"width = '140' "
+"height = '20' "
+"/> "
+"<widget name = 'StartButton' "
+"width = '140' "
+"height = '20' "
"/> "
-"<space/> "
-"</layout> "
-"<widget name = 'GameList'/> "
"</layout> "
"</layout> "
"</dialog> "
-"<dialog resolution = '320xY' name = 'Launcher' overlays = 'screen'> "
-"<layout type = 'vertical' center = 'true' padding = '8, 8, 8, 8'> "
+"<dialog name = 'Launcher' overlays = 'screen' resolution = '320xY, 256x240'> "
+"<layout type = 'vertical' center = 'true' padding = '8, 8, 4, 4'> "
"<widget name = 'Version' "
"height = 'Globals.Line.Height' "
"/> "
-"<widget name = 'GameList' width = '304' height = '120'/> "
-"<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '6'> "
+"<widget name = 'GameList'/> "
+"<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '10'> "
"<widget name = 'AddGameButton' "
-"width = '95' "
-"height = 'Globals.Button.Height' "
+"width = '90' "
+"height = '12' "
"/> "
"<widget name = 'EditGameButton' "
-"width = '95' "
-"height = 'Globals.Button.Height' "
+"width = '90' "
+"height = '12' "
"/> "
"<widget name = 'RemoveGameButton' "
-"width = '95' "
-"height = 'Globals.Button.Height' "
+"width = '90' "
+"height = '12' "
"/> "
"</layout> "
-"<layout type = 'horizontal' padding = '0, 0, 0, 0'> "
+"<space size = '4'/> "
+"<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '10'> "
"<widget name = 'QuitButton' "
-"type = 'Button' "
+"width = '65' "
+"height = '12' "
"/> "
"<widget name = 'AboutButton' "
-"type = 'Button' "
+"width = '65' "
+"height = '12' "
"/> "
"<widget name = 'OptionsButton' "
-"type = 'Button' "
+"width = '65' "
+"height = '12' "
"/> "
"<widget name = 'StartButton' "
-"type = 'Button' "
+"width = '65' "
+"height = '12' "
"/> "
"</layout> "
"</layout> "
@@ -575,6 +501,43 @@
"<widget name = 'TabWidget'/> "
"</layout> "
"</dialog> "
+"<dialog name = 'Browser' overlays = 'screen' inset = '16' shading = 'dim' resolution = '320xY, 256x240'> "
+"<layout type = 'vertical' padding = '8, 8, 8, 8' direction = 'bottom2top'> "
+"<layout type = 'horizontal' padding = '0, 0, 16, 0' direction = 'right2left'> "
+"<widget name = 'Choose' "
+"type = 'Button' "
+"/> "
+"<widget name = 'Cancel' "
+"type = 'Button' "
+"/> "
+"<space/> "
+"<widget name = 'Up' "
+"type = 'Button' "
+"/> "
+"</layout> "
+"<widget name = 'List'/> "
+"<widget name = 'Path' "
+"height = 'Globals.Line.Height' "
+"/> "
+"<widget name = 'Headline' "
+"height = 'Globals.Line.Height' "
+"/> "
+"</layout> "
+"</dialog> "
+"<dialog name = 'GlobalOptions' overlays = 'screen' inset = '16' shading = 'dim' resolution = '320xY, 256x240'> "
+"<layout type = 'vertical' padding = '0, 0, 0, 0' direction = 'bottom2top'> "
+"<layout type = 'horizontal' direction = 'right2left' padding = '8, 8, 8, 2'> "
+"<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' "
@@ -604,7 +567,7 @@
"type = 'OptionsLabel' "
"/> "
"<widget name = 'subToggleButton' "
-"width = '150' "
+"width = 'Globals.Slider.Width' "
"height = 'Globals.Slider.Height' "
"/> "
"</layout> "
@@ -689,7 +652,8 @@
"type = 'Slider' "
"/> "
"<widget name = 'mcMidiGainLabel' "
-"type = 'SmallLabel' "
+"width = '32' "
+"height = 'Globals.Line.Height' "
"/> "
"</layout> "
"</layout> "
@@ -720,6 +684,14 @@
"height = 'Globals.Line.Height' "
"/> "
"</layout> "
+"<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '16'> "
+"<widget name = 'PluginsButton' "
+"type = 'Button' "
+"/> "
+"<widget name = 'PluginsPath' "
+"height = 'Globals.Line.Height' "
+"/> "
+"</layout> "
"</layout> "
"</dialog> "
"<dialog name = 'GlobalOptions_Misc' overlays = 'Dialog.GlobalOptions.TabWidget'> "
@@ -751,6 +723,20 @@
"<widget name = 'TabWidget'/> "
"</layout> "
"</dialog> "
+"<dialog name = 'GameOptions' overlays = 'screen' inset = '16' shading = 'dim' resolution = '320xY, 256x240'> "
+"<layout type = 'vertical' padding = '0, 0, 0, 0' direction = 'bottom2top' spacing = '16'> "
+"<layout type = 'horizontal' direction = 'right2left' padding = '8, 8, 8, 2'> "
+"<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' "
@@ -787,7 +773,7 @@
"<layout type = 'vertical' padding = '16, 16, 16, 16'> "
"<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '16'> "
"<widget name = 'Id' "
-"type = 'OptionsLabel' "
+"type = 'ShortOptionsLabel' "
"/> "
"<widget name = 'Domain' "
"type = 'PopUp' "
@@ -795,7 +781,7 @@
"</layout> "
"<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '16'> "
"<widget name = 'Name' "
-"type = 'OptionsLabel' "
+"type = 'ShortOptionsLabel' "
"/> "
"<widget name = 'Desc' "
"type = 'PopUp' "
@@ -955,4 +941,26 @@
"</layout> "
"</layout> "
"</dialog> "
+"<dialog name = 'ScummHelp' overlays = 'screen_center'> "
+"<layout type = 'vertical' padding = '8, 8, 8, 8' direction = 'bottom2top'> "
+"<layout type = 'horizontal' padding = '0, 0, 16, 0'> "
+"<widget name = 'Prev' "
+"type = 'Button' "
+"/> "
+"<widget name = 'Next' "
+"type = 'Button' "
+"/> "
+"<space size = '32'/> "
+"<widget name = 'Close' "
+"type = 'Button' "
+"/> "
+"</layout> "
+"<widget name = 'HelpText' "
+"height = '220' "
+"/> "
+"<widget name = 'Title' "
+"height = 'Globals.Line.Height' "
+"/> "
+"</layout> "
+"</dialog> "
"</layout_info> "
diff --git a/gui/themes/makedeftheme.py b/gui/themes/makedeftheme.py
deleted file mode 100644
index c2ece4c26b..0000000000
--- a/gui/themes/makedeftheme.py
+++ /dev/null
@@ -1,26 +0,0 @@
-#!/usr/bin/env python
-# encoding: utf-8
-import sys
-import re
-
-def main():
- theme_file = open(sys.argv[1], "r")
- def_file = open("default.inc", "w")
- comm = re.compile("\/\*(.*?)\*\/", re.DOTALL)
-
- try:
- output = ""
- for line in theme_file:
- output += line.rstrip("\r\n\t ").lstrip() + " \n"
-
- output = re.sub(comm, "", output).replace("\t", " ").replace(" ", " ").splitlines()
-
- for line in output:
- if line and not line.isspace():
- def_file.write("\"" + line + "\"\n")
- finally:
- theme_file.close()
- def_file.close()
-
-if __name__ == "__main__":
- sys.exit(main())
diff --git a/gui/themes/scummodern.stx b/gui/themes/scummclassic.zip
index 5399ed62f0..653f789baf 100644
--- a/gui/themes/scummodern.stx
+++ b/gui/themes/scummclassic.zip
Binary files differ
diff --git a/gui/themes/scummclassic/THEMERC b/gui/themes/scummclassic/THEMERC
new file mode 100644
index 0000000000..df6c0508b2
--- /dev/null
+++ b/gui/themes/scummclassic/THEMERC
@@ -0,0 +1 @@
+[SCUMMVM_THEME_V23:ScummVM Classic Theme:No Author] \ No newline at end of file
diff --git a/gui/themes/scummclassic/classic_gfx.stx b/gui/themes/scummclassic/classic_gfx.stx
new file mode 100644
index 0000000000..66c442066d
--- /dev/null
+++ b/gui/themes/scummclassic/classic_gfx.stx
@@ -0,0 +1,360 @@
+/* ScummVM - Graphic Adventure Engine
+ *
+ * ScummVM is the legal property of its developers, whose names
+ * are too numerous to list here. Please refer to the COPYRIGHT
+ * file distributed with this source distribution.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ *
+ * $URL$
+ * $Id$
+ *
+ */
+
+<render_info>
+ <palette>
+ <color name = 'black'
+ rgb = '0, 0, 0'
+ />
+ <color name = 'lightgrey'
+ rgb = '104, 104, 104'
+ />
+ <color name = 'darkgrey'
+ rgb = '64, 64, 64'
+ />
+ <color name = 'green'
+ rgb = '32, 160, 32'
+ />
+ <color name = 'green2'
+ rgb = '0, 255, 0'
+ />
+ </palette>
+
+ <fonts>
+ <font id = 'text_default'
+ file = 'default'
+ color = 'green'
+ />
+ <font id = 'text_hover'
+ file = 'default'
+ color = 'green2'
+ />
+ <font id = 'text_disabled'
+ file = 'default'
+ color = 'lightgrey'
+ />
+ <font id = 'text_inverted'
+ file = 'default'
+ color = 'black'
+ />
+ <font id = 'text_button'
+ file = 'default'
+ color = 'green'
+ />
+ <font id = 'text_button_hover'
+ file = 'default'
+ color = 'green2'
+ />
+ <font id = 'text_normal'
+ file = 'default'
+ color = 'green'
+ />
+ </fonts>
+
+ <defaults fill = 'foreground' fg_color = 'darkgrey' bg_color = 'black' shadow = '0' bevel_color = 'lightgrey'/>
+
+ <drawdata id = 'text_selection' cache = false>
+ <drawstep func = 'square'
+ fill = 'foreground'
+ fg_color = 'green'
+ />
+ </drawdata>
+
+ <drawdata id = 'mainmenu_bg' cache = false>
+ <drawstep func = 'fill'
+ fill = 'foreground'
+ fg_color = 'black'
+ />
+ </drawdata>
+
+ <drawdata id = 'special_bg' cache = false>
+ <drawstep func = 'bevelsq'
+ bevel = '2'
+ />
+ </drawdata>
+
+ <drawdata id = 'separator' cache = false>
+ <drawstep func = 'square'
+ fill = 'foreground'
+ height = '2'
+ ypos = 'center'
+ fg_color = 'lightgrey'
+ />
+ </drawdata>
+
+ <drawdata id = 'scrollbar_base' cache = false>
+ <drawstep func = 'bevelsq'
+ bevel = '2'
+ />
+ </drawdata>
+
+ <drawdata id = 'scrollbar_handle_hover' cache = false>
+ <drawstep func = 'square'
+ fill = 'foreground'
+ fg_color = 'green2'
+ />
+ </drawdata>
+
+ <drawdata id = 'scrollbar_handle_idle' cache = false>
+ <drawstep func = 'square'
+ fill = 'foreground'
+ fg_color = 'green'
+ />
+ </drawdata>
+
+ <drawdata id = 'scrollbar_button_idle' cache = false>
+ <drawstep func = 'bevelsq'
+ bevel = '2'
+ fill = 'none'
+ />
+ <drawstep func = 'triangle'
+ fg_color = 'green'
+ fill = 'foreground'
+ width = 'auto'
+ height = 'auto'
+ xpos = 'center'
+ ypos = 'center'
+ orientation = 'top'
+ />
+ </drawdata>
+
+ <drawdata id = 'scrollbar_button_hover' cache = false>
+ <drawstep func = 'bevelsq'
+ bevel = '2'
+ fill = 'none'
+ />
+ <drawstep func = 'triangle'
+ fg_color = 'green2'
+ fill = 'foreground'
+ width = 'auto'
+ height = 'auto'
+ xpos = 'center'
+ ypos = 'center'
+ orientation = 'top'
+ />
+ </drawdata>
+
+ <drawdata id = 'tab_active' cache = false>
+ <text font = 'text_hover'
+ vertical_align = 'center'
+ horizontal_align = 'center'
+ />
+ <drawstep func = 'tab'
+ bevel = '2'
+ radius = '0'
+ fill = 'none'
+ />
+ </drawdata>
+
+ <drawdata id = 'tab_inactive' cache = false>
+ <text font = 'text_default'
+ vertical_align = 'center'
+ horizontal_align = 'center'
+ />
+ <drawstep func = 'tab'
+ bevel = '2'
+ radius = '0'
+ fill = 'none'
+ />
+ </drawdata>
+
+ <drawdata id = 'tab_background' cache = false>
+ </drawdata>
+
+ <drawdata id = 'widget_slider' cache = false>
+ <drawstep func = 'bevelsq'
+ bevel = '2'
+ fill = 'none'
+ />
+ </drawdata>
+
+ <drawdata id = 'slider_disabled' cache = false>
+ <drawstep func = 'square'
+ fill = 'foreground'
+ fg_color = 'lightgrey'
+ />
+ </drawdata>
+
+ <drawdata id = 'slider_full' cache = false>
+ <drawstep func = 'square'
+ fill = 'foreground'
+ fg_color = 'green'
+ />
+ </drawdata>
+
+ <drawdata id = 'slider_hover' cache = false>
+ <drawstep func = 'square'
+ fill = 'foreground'
+ fg_color = 'green2'
+ />
+ </drawdata>
+
+ <drawdata id = 'widget_small' cache = false>
+ <drawstep func = 'bevelsq'
+ bevel = '2'
+ fill = 'none'
+ />
+ </drawdata>
+
+ <drawdata id = 'popup_idle' cache = false>
+ <drawstep func = 'bevelsq'
+ bevel = '2'
+ fill = 'none'
+ />
+ <drawstep func = 'triangle'
+ fg_color = 'green'
+ 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 = 'bevelsq'
+ bevel = '2'
+ fill = 'none'
+ />
+ <drawstep func = 'triangle'
+ fg_color = 'green2'
+ 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 = 'widget_textedit' cache = false>
+ <drawstep func = 'bevelsq'
+ bevel = '2'
+ fill = 'none'
+ />
+ </drawdata>
+
+ <drawdata id = 'plain_bg' cache = false>
+ <drawstep func = 'bevelsq'
+ bevel = '2'
+ />
+ </drawdata>
+
+ <drawdata id = 'caret' cache = false>
+ <drawstep func = 'square'
+ fill = 'foreground'
+ fg_color = 'lightgrey'
+ />
+ </drawdata>
+
+ <drawdata id = 'default_bg' cache = false>
+ <drawstep func = 'bevelsq'
+ bevel = '2'
+ />
+ </drawdata>
+
+ <drawdata id = 'button_idle' cache = false>
+ <text font = 'text_button'
+ vertical_align = 'center'
+ horizontal_align = 'center'
+ />
+ <drawstep func = 'bevelsq'
+ bevel = '2'
+ fill = 'none'
+ />
+ </drawdata>
+
+ <drawdata id = 'button_hover' cache = false>
+ <text font = 'text_button_hover'
+ vertical_align = 'center'
+ horizontal_align = 'center'
+ />
+ <drawstep func = 'bevelsq'
+ bevel = '2'
+ fill = 'none'
+ />
+ </drawdata>
+
+ <drawdata id = 'button_disabled' cache = false>
+ <text font = 'text_disabled'
+ vertical_align = 'center'
+ horizontal_align = 'center'
+ />
+ <drawstep func = 'bevelsq'
+ bevel = '2'
+ fill = 'none'
+ />
+ </drawdata>
+
+ <drawdata id = 'checkbox_disabled' cache = false>
+ <text font = 'text_disabled'
+ vertical_align = 'top'
+ horizontal_align = 'left'
+ />
+ <drawstep func = 'bevelsq'
+ bevel = '2'
+ fill = 'none'
+ />
+ </drawdata>
+
+ <drawdata id = 'checkbox_selected' cache = false>
+ <text font = 'text_default'
+ vertical_align = 'top'
+ horizontal_align = 'left'
+ />
+ <drawstep func = 'bevelsq'
+ bevel = '2'
+ fill = 'none'
+ />
+/* TODO */
+ </drawdata>
+
+ <drawdata id = 'checkbox_default' cache = false>
+ <text font = 'text_default'
+ vertical_align = 'top'
+ horizontal_align = 'left'
+ />
+ <drawstep func = 'bevelsq'
+ bevel = '2'
+ fill = 'none'
+ />
+ </drawdata>
+
+ <drawdata id = 'widget_default' cache = false>
+ <drawstep func = 'bevelsq'
+ bevel = '2'
+ />
+ </drawdata>
+</render_info> \ No newline at end of file
diff --git a/gui/themes/scummclassic/classic_layout.stx b/gui/themes/scummclassic/classic_layout.stx
new file mode 100644
index 0000000000..bfb09a511b
--- /dev/null
+++ b/gui/themes/scummclassic/classic_layout.stx
@@ -0,0 +1,730 @@
+/* ScummVM - Graphic Adventure Engine
+ *
+ * ScummVM is the legal property of its developers, whose names
+ * are too numerous to list here. Please refer to the COPYRIGHT
+ * file distributed with this source distribution.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ *
+ * $URL$
+ * $Id$
+ *
+ */
+
+<layout_info>
+ <globals>
+ <def var = 'Line.Height' value = '16' />
+ <def var = 'Font.Height' value = '16' />
+ <def var = 'TabLabelWidth' value = '110' />
+
+ <def resolution = "320xY, 256x240" var = 'Line.Height' value = '12' />
+ <def resolution = "320xY, 256x240" var = 'Font.Height' value = '10' />
+ <def resolution = "320xY, 256x240" var = 'TabLabelWidth' value = '100' />
+
+ <def var = 'WidgetSize' value = 'kBigWidgetSize' />
+ <def var = 'About.OuterBorder' value = '80'/>
+ <def var = 'PopUpWidget.labelSpacing' value = '10' />
+
+ <def resolution = "320xY, 256x240" var = 'WidgetSize' value = 'kNormalWidgetSize' />
+ <def resolution = "320xY, 256x240" var = 'About.OuterBorder' value = '10'/>
+ <def resolution = "320xY, 256x240" var = 'PopUpWidget.labelSpacing' value = '6' />
+
+ <def var = 'Layout.Spacing' value = '8' />
+ <def var = 'ShowLauncherLogo' value = '0'/>
+
+ <def var = 'ScummSaveLoad.ExtInfo.Visible' value = '1'/>
+ <def resolution = "320xY, 256x240" var = 'ScummSaveLoad.ExtInfo.Visible' value = '0'/>
+
+ <widget name = 'OptionsLabel'
+ size = '110, Globals.Line.Height'
+ />
+ <widget name = 'SmallLabel'
+ size = '24, Globals.Line.Height'
+ />
+
+ <widget name = 'ShortOptionsLabel'
+ size = '60, Globals.Line.Height'
+ />
+ <widget resolution = "320xY, 256x240" name = 'ShortOptionsLabel'
+ size = '40, Globals.Line.Height'
+ />
+
+
+ <widget name = 'Button'
+ size = 'kBigButtonWidth, kBigButtonHeight'
+ />
+ <widget name = 'Slider'
+ size = 'kBigSliderWidth, kBigSliderHeight'
+ />
+
+ <widget resolution = "320xY, 256x240" name = 'Button'
+ size = 'kButtonWidth, kButtonHeight'
+ />
+ <widget resolution = "320xY, 256x240" name = 'Slider'
+ size = 'kSliderWidth, kSliderHeight'
+ />
+
+ <widget name = 'PopUp'
+ size = '-1, 19'
+ />
+ <widget name = 'PopUp' resolution = "320xY, 256x240"
+ size = '-1, 15'
+ />
+
+ <widget name = 'Checkbox'
+ size = '-1, 14'
+ />
+ <widget name = 'Checkbox' resolution = "320xY, 256x240"
+ size = '-1, 10'
+ />
+
+ <widget name = 'ListWidget'
+ padding = '5, 0, 8, 0'
+ />
+ <widget name = 'PopUpWidget'
+ padding = '7, 5, 0, 0'
+ />
+ <widget name = 'EditTextWidget'
+ padding = '5, 5, 0, 0'
+ />
+ <widget name = 'Console'
+ padding = '7, 5, 5, 5'
+ />
+ <widget name = 'TabWidget.Tab'
+ size = '75, 27'
+ padding = '0, 0, 8, 0'
+ />
+ <widget name = 'TabWidget.NavButton'
+ size = '15, 18'
+ padding = '0, 3, 4, 0'
+ />
+
+ <widget name = 'TabWidget.Tab' resolution = "320xY, 256x240"
+ size = '45, 16'
+ padding = '0, 0, 0, 0'
+ />
+ <widget name = 'TabWidget.NavButton' resolution = "320xY, 256x240"
+ size = '32, 18'
+ padding = '0, 3, 4, 0'
+ />
+ </globals>
+
+ <dialog name = 'Launcher' overlays = 'screen'>
+ <layout type = 'vertical' center = 'true' padding = '16, 16, 8, 8'>
+ <widget name = 'Version'
+ height = 'Globals.Line.Height'
+ />
+ <widget name = 'GameList'/>
+ <layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '10'>
+ <widget name = 'AddGameButton'
+ width = '190'
+ height = '20'
+ />
+ <widget name = 'EditGameButton'
+ width = '190'
+ height = '20'
+ />
+ <widget name = 'RemoveGameButton'
+ width = '190'
+ height = '20'
+ />
+ </layout>
+ <space size = '12'/>
+ <layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '10'>
+ <widget name = 'QuitButton'
+ width = '140'
+ height = '20'
+ />
+ <widget name = 'AboutButton'
+ width = '140'
+ height = '20'
+ />
+ <widget name = 'OptionsButton'
+ width = '140'
+ height = '20'
+ />
+ <widget name = 'StartButton'
+ width = '140'
+ height = '20'
+ />
+ </layout>
+ </layout>
+ </dialog>
+
+ <dialog name = 'Launcher' overlays = 'screen' resolution = "320xY, 256x240">
+ <layout type = 'vertical' center = 'true' padding = '8, 8, 4, 4'>
+ <widget name = 'Version'
+ height = 'Globals.Line.Height'
+ />
+ <widget name = 'GameList'/>
+ <layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '10'>
+ <widget name = 'AddGameButton'
+ width = '90'
+ height = '12'
+ />
+ <widget name = 'EditGameButton'
+ width = '90'
+ height = '12'
+ />
+ <widget name = 'RemoveGameButton'
+ width = '90'
+ height = '12'
+ />
+ </layout>
+ <space size = '4'/>
+ <layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '10'>
+ <widget name = 'QuitButton'
+ width = '65'
+ height = '12'
+ />
+ <widget name = 'AboutButton'
+ width = '65'
+ height = '12'
+ />
+ <widget name = 'OptionsButton'
+ width = '65'
+ height = '12'
+ />
+ <widget name = 'StartButton'
+ width = '65'
+ height = '12'
+ />
+ </layout>
+ </layout>
+ </dialog>
+
+ <dialog name = 'Browser' overlays = 'Dialog.Launcher.GameList' shading = 'dim'>
+ <layout type = 'vertical' padding = '8, 8, 8, 8' direction = 'bottom2top'>
+ <layout type = 'horizontal' padding = '0, 0, 16, 0' direction = 'right2left'>
+ <widget name = 'Choose'
+ type = 'Button'
+ />
+ <widget name = 'Cancel'
+ type = 'Button'
+ />
+ <space/>
+ <widget name = 'Up'
+ type = 'Button'
+ />
+ </layout>
+ <widget name = 'List'/>
+ <widget name = 'Path'
+ height = 'Globals.Line.Height'
+ />
+ <widget name = 'Headline'
+ height = 'Globals.Line.Height'
+ />
+ </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 = 'Browser' overlays = 'screen' inset = '16' shading = 'dim' resolution = "320xY, 256x240">
+ <layout type = 'vertical' padding = '8, 8, 8, 8' direction = 'bottom2top'>
+ <layout type = 'horizontal' padding = '0, 0, 16, 0' direction = 'right2left'>
+ <widget name = 'Choose'
+ type = 'Button'
+ />
+ <widget name = 'Cancel'
+ type = 'Button'
+ />
+ <space/>
+ <widget name = 'Up'
+ type = 'Button'
+ />
+ </layout>
+ <widget name = 'List'/>
+ <widget name = 'Path'
+ height = 'Globals.Line.Height'
+ />
+ <widget name = 'Headline'
+ height = 'Globals.Line.Height'
+ />
+ </layout>
+ </dialog>
+
+ <dialog name = 'GlobalOptions' overlays = 'screen' inset = '16' shading = 'dim' resolution = "320xY, 256x240">
+ <layout type = 'vertical' padding = '0, 0, 0, 0' direction = 'bottom2top'>
+ <layout type = 'horizontal' direction = 'right2left' padding = '8, 8, 8, 2'>
+ <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 = 'Globals.Slider.Width'
+ 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'
+ type = 'SmallLabel'
+ />
+ </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'
+ type = 'SmallLabel'
+ />
+ </layout>
+ <layout type = 'horizontal' padding = '0, 0, 0, 0'>
+ <widget name = 'vcSfxText'
+ type = 'OptionsLabel'
+ />
+ <widget name = 'vcSfxSlider'
+ type = 'Slider'
+ />
+ <widget name = 'vcSfxLabel'
+ type = 'SmallLabel'
+ />
+ </layout>
+ <layout type = 'horizontal' padding = '0, 0, 0, 0'>
+ <widget name = 'vcSpeechText'
+ type = 'OptionsLabel'
+ />
+ <widget name = 'vcSpeechSlider'
+ type = 'Slider'
+ />
+ <widget name = 'vcSpeechLabel'
+ type = 'SmallLabel'
+ />
+ </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 type = 'horizontal' padding = '0, 0, 0, 0' spacing = '16'>
+ <widget name = 'PluginsButton'
+ type = 'Button'
+ />
+ <widget name = 'PluginsPath'
+ 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' overlays = 'screen' inset = '16' shading = 'dim' resolution = "320xY, 256x240">
+ <layout type = 'vertical' padding = '0, 0, 0, 0' direction = 'bottom2top' spacing = '16'>
+ <layout type = 'horizontal' direction = 'right2left' padding = '8, 8, 8, 2'>
+ <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 = 'ShortOptionsLabel'
+ />
+ <widget name = 'Domain'
+ type = 'PopUp'
+ />
+ </layout>
+ <layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '16'>
+ <widget name = 'Name'
+ type = 'ShortOptionsLabel'
+ />
+ <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>
+
+ <dialog name = 'ScummMain' overlays = 'screen_center'>
+ <layout type = 'vertical' padding = '8, 8, 8, 8'>
+ <widget name = 'Resume'
+ type = 'Button'
+ />
+ <space size = '15'/>
+ <widget name = 'Load'
+ type = 'Button'
+ />
+ <widget name = 'Save'
+ type = 'Button'
+ />
+ <space size = '15'/>
+ <widget name = 'Options'
+ type = 'Button'
+ />
+ <widget name = 'Help'
+ type = 'Button'
+ />
+ <widget name = 'About'
+ type = 'Button'
+ />
+ <space size = '15'/>
+ <widget name = 'Quit'
+ type = 'Button'
+ />
+ </layout>
+ </dialog>
+
+ <dialog name = 'ScummConfig' overlays = 'screen_center'>
+ <layout type = 'vertical' padding = '8, 8, 8, 8' center = 'true' direction = 'bottom2top'>
+ <layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '8'>
+ <space size = 'Globals.Button.Width' />
+ <widget name = 'Cancel'
+ type = 'Button'
+ />
+ <widget name = 'Ok'
+ type = 'Button'
+ />
+ </layout>
+ <space size = '100'/>
+ <layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '8'>
+ <widget name = 'subSubtitleSpeedDesc'
+ type = 'OptionsLabel'
+ />
+ <widget name = 'subSubtitleSpeedSlider'
+ type = 'Slider'
+ />
+ <widget name = 'subSubtitleSpeedLabel'
+ type = 'SmallLabel'
+ />
+ </layout>
+ <layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '8'>
+ <widget name = 'subToggleDesc'
+ type = 'OptionsLabel'
+ />
+ <widget name = 'subToggleButton'
+ width = '158'
+ height = 'Globals.Slider.Height'
+ />
+ </layout>
+ <layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '8'>
+ <widget name = 'vcSpeechText'
+ type = 'OptionsLabel'
+ />
+ <widget name = 'vcSpeechSlider'
+ type = 'Slider'
+ />
+ <widget name = 'vcSpeechLabel'
+ type = 'SmallLabel'
+ />
+ </layout>
+ <layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '8'>
+ <widget name = 'vcSfxText'
+ type = 'OptionsLabel'
+ />
+ <widget name = 'vcSfxSlider'
+ type = 'Slider'
+ />
+ <widget name = 'vcSfxLabel'
+ type = 'SmallLabel'
+ />
+ </layout>
+ <layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '8'>
+ <widget name = 'vcMusicText'
+ type = 'OptionsLabel'
+ />
+ <widget name = 'vcMusicSlider'
+ type = 'Slider'
+ />
+ <widget name = 'vcMusicLabel'
+ type = 'SmallLabel'
+ />
+ </layout>
+ </layout>
+ </dialog>
+
+ <dialog name = 'ScummSaveLoad' overlays = 'screen'>
+ <layout type = 'vertical' padding = '8, 8, 8, 8' center = 'true' direction = 'bottom2top'>
+ <layout type = 'horizontal' padding = '0, 0, 16, 0' direction = 'right2left'>
+ <widget name = 'Choose'
+ type = 'Button'
+ />
+ <widget name = 'Cancel'
+ type = 'Button'
+ />
+ <space/>
+ </layout>
+ <layout type = 'horizontal' padding = '0, 0, 0, 0' direction = 'right2left' spacing = '16'>
+ <layout type = 'vertical' padding = '0, 0, 0, 0'>
+ <widget name = 'Thumbnail'
+ width = '180'
+ height = '200'
+ />
+ <space/>
+ </layout>
+ <widget name = 'List' />
+ </layout>
+ </layout>
+ </dialog>
+
+ <dialog name = 'ScummHelp' overlays = 'screen_center'>
+ <layout type = 'vertical' padding = '8, 8, 8, 8' direction = 'bottom2top'>
+ <layout type = 'horizontal' padding = '0, 0, 16, 0'>
+ <widget name = 'Prev'
+ type = 'Button'
+ />
+ <widget name = 'Next'
+ type = 'Button'
+ />
+ <space size = '32'/>
+ <widget name = 'Close'
+ type = 'Button'
+ />
+ </layout>
+ <widget name = 'HelpText'
+ height = '220'
+ />
+ <widget name = 'Title'
+ height = 'Globals.Line.Height'
+ />
+ </layout>
+ </dialog>
+</layout_info> \ No newline at end of file
diff --git a/gui/themes/scummodern.zip b/gui/themes/scummodern.zip
index 66e0a736e8..1cd8471709 100644
--- a/gui/themes/scummodern.zip
+++ b/gui/themes/scummodern.zip
Binary files differ
diff --git a/gui/themes/scummodern/THEMERC b/gui/themes/scummodern/THEMERC
new file mode 100644
index 0000000000..d11c959867
--- /dev/null
+++ b/gui/themes/scummodern/THEMERC
@@ -0,0 +1 @@
+[SCUMMVM_THEME_V23:ScummVM Modern Theme:No Author] \ No newline at end of file
diff --git a/gui/themes/scummodern/checkbox.bmp b/gui/themes/scummodern/checkbox.bmp
new file mode 100644
index 0000000000..a0b91b569f
--- /dev/null
+++ b/gui/themes/scummodern/checkbox.bmp
Binary files differ
diff --git a/gui/themes/scummodern/cursor.bmp b/gui/themes/scummodern/cursor.bmp
new file mode 100644
index 0000000000..e7bdb60cad
--- /dev/null
+++ b/gui/themes/scummodern/cursor.bmp
Binary files differ
diff --git a/gui/themes/scummodern/cursor_small.bmp b/gui/themes/scummodern/cursor_small.bmp
new file mode 100644
index 0000000000..5f25f32f1a
--- /dev/null
+++ b/gui/themes/scummodern/cursor_small.bmp
Binary files differ
diff --git a/gui/themes/scummodern/helvr12-l1.fcc b/gui/themes/scummodern/helvr12-l1.fcc
new file mode 100644
index 0000000000..651a25934a
--- /dev/null
+++ b/gui/themes/scummodern/helvr12-l1.fcc
Binary files differ
diff --git a/gui/themes/scummodern/logo.bmp b/gui/themes/scummodern/logo.bmp
new file mode 100644
index 0000000000..659ec47d03
--- /dev/null
+++ b/gui/themes/scummodern/logo.bmp
Binary files differ
diff --git a/gui/themes/scummodern/scummodern_gfx.stx b/gui/themes/scummodern/scummodern_gfx.stx
new file mode 100644
index 0000000000..672d3915e2
--- /dev/null
+++ b/gui/themes/scummodern/scummodern_gfx.stx
@@ -0,0 +1,464 @@
+/* ScummVM - Graphic Adventure Engine
+ *
+ * ScummVM is the legal property of its developers, whose names
+ * are too numerous to list here. Please refer to the COPYRIGHT
+ * file distributed with this source distribution.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ *
+ * $URL$
+ * $Id$
+ *
+ */
+
+<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>
+
+ <bitmaps>
+ <bitmap filename = 'logo.bmp'/>
+ <bitmap filename = 'cursor.bmp'/>
+ <bitmap filename = 'cursor_small.bmp'/>
+ <bitmap filename = 'checkbox.bmp'/>
+ </bitmaps>
+
+ <fonts>
+ <font id = 'text_default'
+ file = 'default'
+ color = 'black'
+ />
+ <font id = 'text_hover'
+ file = 'default'
+ color = 'bgreen'
+ />
+ <font id = 'text_disabled'
+ file = 'default'
+ color = '128, 128, 128'
+ />
+ <font id = 'text_inverted'
+ file = 'default'
+ color = '0, 0, 0'
+ />
+ <font id = 'text_button'
+ file = 'default'
+ color = 'white'
+ />
+ <font id = 'text_button_hover'
+ file = 'default'
+ color = 'blandyellow'
+ />
+ <font id = 'text_normal'
+ file = 'helvr12-l1.bdf'
+ color = 'black'
+ />
+ </fonts>
+
+ <defaults fill = 'gradient' fg_color = 'white' bevel_color = '237, 169, 72'/>
+
+ <cursor file = 'cursor.bmp' hotspot = '0, 0' scale = '3'/>
+ <cursor resolution = '320xY, 256x240' file = 'cursor_small.bmp' hotspot = '0, 0' scale = '3'/>
+
+ <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 = 'special_bg' cache = false>
+ <drawstep func = 'roundedsq'
+ radius = '4'
+ fill = 'gradient'
+ stroke = '0'
+ gradient_start = '208, 112, 8'
+ gradient_end = '232, 192, 16'
+ shadow = '3'
+ />
+ </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 = 'widget_textedit' cache = false>
+ <drawstep func = 'roundedsq'
+ fill = 'foreground'
+ radius = 4
+ fg_color = 'blandyellow'
+ shadow = 0
+ bevel = 1
+ bevel_color = 'shadowcolor'
+ />
+ </drawdata>
+
+ <drawdata id = 'plain_bg' cache = false>
+ <drawstep func = 'roundedsq'
+ radius = 8
+ stroke = 0
+ gradient_start = 'blandyellow'
+ gradient_end = 'xtrabrightred'
+ fill = 'gradient'
+ shadow = 3
+ />
+ </drawdata>
+
+ <drawdata id = 'caret' cache = false>
+ <drawstep func = 'square'
+ fill = 'foreground'
+ fg_color = 'black'
+ />
+ </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 = 'bitmap'
+ file = 'checkbox.bmp'
+ />
+ </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'
+ radius = 8
+ stroke = 0
+ gradient_start = 'blandyellow'
+ gradient_end = 'xtrabrightred'
+ gradient_factor = '6'
+ fill = 'gradient'
+ shadow = 3
+ />
+ </drawdata>
+</render_info> \ No newline at end of file
diff --git a/gui/themes/scummodern/scummodern_layout.stx b/gui/themes/scummodern/scummodern_layout.stx
new file mode 100644
index 0000000000..808004ab66
--- /dev/null
+++ b/gui/themes/scummodern/scummodern_layout.stx
@@ -0,0 +1,602 @@
+/* ScummVM - Graphic Adventure Engine
+ *
+ * ScummVM is the legal property of its developers, whose names
+ * are too numerous to list here. Please refer to the COPYRIGHT
+ * file distributed with this source distribution.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ *
+ * $URL$
+ * $Id$
+ *
+ */
+
+<layout_info resolution = '-320xY'>
+ <globals>
+ <def var = 'Line.Height' value = '16' />
+ <def var = 'Font.Height' value = '16' />
+ <def var = 'TabLabelWidth' value = '110' />
+
+ <def var = 'WidgetSize' value = 'kBigWidgetSize' />
+
+ <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 = 'About.OuterBorder' value = '80'/>
+
+ <def var = 'ListWidget.hlLeftPadding' value = '0'/>
+ <def var = 'ListWidget.hlRightPadding' value = '0'/>
+ <def var = 'PopUpWidget.labelSpacing' value = '10' />
+
+ <def var = 'ShowLauncherLogo' value = '1'/>
+
+ <def var = 'ScummSaveLoad.ExtInfo.Visible' value = '1'/>
+
+ <widget name = 'OptionsLabel'
+ size = '110, Globals.Line.Height'
+ />
+ <widget name = 'SmallLabel'
+ size = '24, Globals.Line.Height'
+ />
+
+ <widget name = 'Button'
+ size = 'kBigButtonWidth, kBigButtonHeight'
+ />
+
+
+ <widget name = 'Slider'
+ size = 'kBigSliderWidth, kBigSliderHeight'
+ />
+ <widget name = 'PopUp'
+ size = '-1, 19'
+ />
+ <widget name = 'Checkbox'
+ size = '-1, Globals.Line.Height'
+ />
+ <widget name = 'ListWidget'
+ padding = '5, 0, 8, 0'
+ />
+ <widget name = 'PopUpWidget'
+ padding = '7, 5, 0, 0'
+ />
+ <widget name = 'EditTextWidget'
+ padding = '5, 5, 0, 0'
+ />
+ <widget name = 'Console'
+ padding = '7, 5, 5, 5'
+ />
+ <widget name = 'TabWidget.Tab'
+ size = '75, 27'
+ padding = '0, 0, 8, 0'
+ />
+ <widget name = 'TabWidget.NavButton'
+ size = '15, 18'
+ padding = '0, 3, 4, 0'
+ />
+ </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' padding = '0, 0, 0, 0'>
+ <widget name = 'GameList'/>
+ <layout type = 'vertical' padding = '10, 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'
+ />
+ </layout>
+ </layout>
+ </layout>
+ </dialog>
+
+ <dialog name = 'Browser' overlays = 'Dialog.Launcher.GameList' shading = 'dim'>
+ <layout type = 'vertical' padding = '8, 8, 8, 8' direction = 'bottom2top'>
+ <layout type = 'horizontal' padding = '0, 0, 16, 0' direction = 'right2left'>
+ <widget name = 'Choose'
+ type = 'Button'
+ />
+ <widget name = 'Cancel'
+ type = 'Button'
+ />
+ <space/>
+ <widget name = 'Up'
+ type = 'Button'
+ />
+ </layout>
+ <widget name = 'List'/>
+ <widget name = 'Path'
+ height = 'Globals.Line.Height'
+ />
+ <widget name = 'Headline'
+ height = 'Globals.Line.Height'
+ />
+ </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'
+ type = 'SmallLabel'
+ />
+ </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'
+ type = 'SmallLabel'
+ />
+ </layout>
+ <layout type = 'horizontal' padding = '0, 0, 0, 0'>
+ <widget name = 'vcSfxText'
+ type = 'OptionsLabel'
+ />
+ <widget name = 'vcSfxSlider'
+ type = 'Slider'
+ />
+ <widget name = 'vcSfxLabel'
+ type = 'SmallLabel'
+ />
+ </layout>
+ <layout type = 'horizontal' padding = '0, 0, 0, 0'>
+ <widget name = 'vcSpeechText'
+ type = 'OptionsLabel'
+ />
+ <widget name = 'vcSpeechSlider'
+ type = 'Slider'
+ />
+ <widget name = 'vcSpeechLabel'
+ type = 'SmallLabel'
+ />
+ </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 type = 'horizontal' padding = '0, 0, 0, 0' spacing = '16'>
+ <widget name = 'PluginsButton'
+ type = 'Button'
+ />
+ <widget name = 'PluginsPath'
+ 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>
+
+ <dialog name = 'ScummMain' overlays = 'screen_center'>
+ <layout type = 'vertical' padding = '8, 8, 8, 8'>
+ <widget name = 'Resume'
+ type = 'Button'
+ />
+ <space size = '15'/>
+ <widget name = 'Load'
+ type = 'Button'
+ />
+ <widget name = 'Save'
+ type = 'Button'
+ />
+ <space size = '15'/>
+ <widget name = 'Options'
+ type = 'Button'
+ />
+ <widget name = 'Help'
+ type = 'Button'
+ />
+ <widget name = 'About'
+ type = 'Button'
+ />
+ <space size = '15'/>
+ <widget name = 'Quit'
+ type = 'Button'
+ />
+ </layout>
+ </dialog>
+
+ <dialog name = 'ScummConfig' overlays = 'screen_center'>
+ <layout type = 'vertical' padding = '8, 8, 8, 8' center = 'true' direction = 'bottom2top'>
+ <layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '8'>
+ <space size = 'Globals.Button.Width' />
+ <widget name = 'Cancel'
+ type = 'Button'
+ />
+ <widget name = 'Ok'
+ type = 'Button'
+ />
+ </layout>
+ <space size = '100'/>
+ <layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '8'>
+ <widget name = 'subSubtitleSpeedDesc'
+ type = 'OptionsLabel'
+ />
+ <widget name = 'subSubtitleSpeedSlider'
+ type = 'Slider'
+ />
+ <widget name = 'subSubtitleSpeedLabel'
+ type = 'SmallLabel'
+ />
+ </layout>
+ <layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '8'>
+ <widget name = 'subToggleDesc'
+ type = 'OptionsLabel'
+ />
+ <widget name = 'subToggleButton'
+ width = '158'
+ height = 'Globals.Slider.Height'
+ />
+ </layout>
+ <layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '8'>
+ <widget name = 'vcSpeechText'
+ type = 'OptionsLabel'
+ />
+ <widget name = 'vcSpeechSlider'
+ type = 'Slider'
+ />
+ <widget name = 'vcSpeechLabel'
+ type = 'SmallLabel'
+ />
+ </layout>
+ <layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '8'>
+ <widget name = 'vcSfxText'
+ type = 'OptionsLabel'
+ />
+ <widget name = 'vcSfxSlider'
+ type = 'Slider'
+ />
+ <widget name = 'vcSfxLabel'
+ type = 'SmallLabel'
+ />
+ </layout>
+ <layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '8'>
+ <widget name = 'vcMusicText'
+ type = 'OptionsLabel'
+ />
+ <widget name = 'vcMusicSlider'
+ type = 'Slider'
+ />
+ <widget name = 'vcMusicLabel'
+ type = 'SmallLabel'
+ />
+ </layout>
+ </layout>
+ </dialog>
+
+ <dialog name = 'ScummSaveLoad' overlays = 'screen'>
+ <layout type = 'vertical' padding = '8, 8, 8, 8' center = 'true' direction = 'bottom2top'>
+ <layout type = 'horizontal' padding = '0, 0, 16, 0' direction = 'right2left'>
+ <widget name = 'Choose'
+ type = 'Button'
+ />
+ <widget name = 'Cancel'
+ type = 'Button'
+ />
+ <space/>
+ </layout>
+ <layout type = 'horizontal' padding = '0, 0, 0, 0' direction = 'right2left' spacing = '16'>
+ <layout type = 'vertical' padding = '0, 0, 0, 0'>
+ <widget name = 'Thumbnail'
+ width = '180'
+ height = '200'
+ />
+ <space/>
+ </layout>
+ <widget name = 'List' />
+ </layout>
+ </layout>
+ </dialog>
+
+ <dialog name = 'ScummHelp' overlays = 'screen_center'>
+ <layout type = 'vertical' padding = '8, 8, 8, 8' direction = 'bottom2top'>
+ <layout type = 'horizontal' padding = '0, 0, 16, 0'>
+ <widget name = 'Prev'
+ type = 'Button'
+ />
+ <widget name = 'Next'
+ type = 'Button'
+ />
+ <space size = '32'/>
+ <widget name = 'Close'
+ type = 'Button'
+ />
+ </layout>
+ <widget name = 'HelpText'
+ height = '220'
+ />
+ <widget name = 'Title'
+ height = 'Globals.Line.Height'
+ />
+ </layout>
+ </dialog>
+</layout_info> \ No newline at end of file
diff --git a/gui/themes/scummodern/scummodern_layout_320.stx b/gui/themes/scummodern/scummodern_layout_320.stx
new file mode 100644
index 0000000000..07ea81371f
--- /dev/null
+++ b/gui/themes/scummodern/scummodern_layout_320.stx
@@ -0,0 +1,579 @@
+/* ScummVM - Graphic Adventure Engine
+ *
+ * ScummVM is the legal property of its developers, whose names
+ * are too numerous to list here. Please refer to the COPYRIGHT
+ * file distributed with this source distribution.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ *
+ * $URL$
+ * $Id$
+ *
+ */
+
+<layout_info resolution = "320xY, 256x240">
+ <globals>
+ <def var = 'Line.Height' value = '12' />
+ <def var = 'Font.Height' value = '10' />
+ <def var = 'TabLabelWidth' value = '100' />
+
+ <def var = 'WidgetSize' value = 'kNormalWidgetSize' />
+ <def var = 'About.OuterBorder' value = '10'/>
+ <def var = 'PopUpWidget.labelSpacing' value = '6' />
+
+ <def var = 'ShowLauncherLogo' value = '0'/>
+ <def var = 'ScummSaveLoad.ExtInfo.Visible' value = '0'/>
+
+ <widget name = 'Button'
+ size = 'kButtonWidth, kButtonHeight'
+ />
+
+ <widget name = 'Slider'
+ size = 'kSliderWidth, kSliderHeight'
+ />
+
+ <widget name = 'OptionsLabel'
+ size = '110, Globals.Line.Height'
+ />
+ <widget name = 'SmallLabel'
+ size = '18, Globals.Line.Height'
+ />
+ <widget name = 'PopUp'
+ size = '-1, 15'
+ />
+ <widget name = 'Checkbox'
+ size = '-1, Globals.Line.Height'
+ />
+ <widget name = 'ListWidget'
+ padding = '5, 0, 8, 0'
+ />
+ <widget name = 'PopUpWidget'
+ padding = '7, 5, 0, 0'
+ />
+ <widget name = 'EditTextWidget'
+ padding = '5, 5, 0, 0'
+ />
+ <widget name = 'Console'
+ padding = '7, 5, 5, 5'
+ />
+ <widget name = 'TabWidget.Tab'
+ size = '45, 16'
+ padding = '0, 0, 2, 0'
+ />
+ <widget name = 'TabWidget.NavButton'
+ size = '32, 18'
+ padding = '0, 3, 4, 0'
+ />
+ </globals>
+
+ <dialog name = 'Launcher' overlays = 'screen'>
+ <layout type = 'vertical' center = 'true' padding = '8, 8, 8, 8'>
+ <widget name = 'Version'
+ height = 'Globals.Line.Height'
+ />
+ <widget name = 'GameList'/>
+ <layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '6'>
+ <widget name = 'AddGameButton'
+ width = '95'
+ height = 'Globals.Button.Height'
+ />
+ <widget name = 'EditGameButton'
+ width = '95'
+ height = 'Globals.Button.Height'
+ />
+ <widget name = 'RemoveGameButton'
+ width = '95'
+ height = 'Globals.Button.Height'
+ />
+ </layout>
+ <layout type = 'horizontal' padding = '0, 0, 0, 0'>
+ <widget name = 'QuitButton'
+ type = 'Button'
+ />
+ <widget name = 'AboutButton'
+ type = 'Button'
+ />
+ <widget name = 'OptionsButton'
+ type = 'Button'
+ />
+ <widget name = 'StartButton'
+ type = 'Button'
+ />
+ </layout>
+ </layout>
+ </dialog>
+
+ <dialog name = 'Browser' overlays = 'screen' inset = '16' shading = 'dim'>
+ <layout type = 'vertical' padding = '8, 8, 8, 8' direction = 'bottom2top'>
+ <layout type = 'horizontal' padding = '0, 0, 16, 0' direction = 'right2left'>
+ <widget name = 'Choose'
+ type = 'Button'
+ />
+ <widget name = 'Cancel'
+ type = 'Button'
+ />
+ <space/>
+ <widget name = 'Up'
+ type = 'Button'
+ />
+ </layout>
+ <widget name = 'List'/>
+ <widget name = 'Path'
+ height = 'Globals.Line.Height'
+ />
+ <widget name = 'Headline'
+ height = 'Globals.Line.Height'
+ />
+ </layout>
+ </dialog>
+
+ <dialog name = 'GlobalOptions' overlays = 'screen' inset = '16' shading = 'dim'>
+ <layout type = 'vertical' padding = '0, 0, 0, 0' direction = 'bottom2top'>
+ <layout type = 'horizontal' direction = 'right2left' padding = '8, 8, 8, 2'>
+ <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 = 'Globals.Slider.Width'
+ 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'
+ type = 'SmallLabel'
+ />
+ </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'
+ type = 'SmallLabel'
+ />
+ </layout>
+ <layout type = 'horizontal' padding = '0, 0, 0, 0'>
+ <widget name = 'vcSfxText'
+ type = 'OptionsLabel'
+ />
+ <widget name = 'vcSfxSlider'
+ type = 'Slider'
+ />
+ <widget name = 'vcSfxLabel'
+ type = 'SmallLabel'
+ />
+ </layout>
+ <layout type = 'horizontal' padding = '0, 0, 0, 0'>
+ <widget name = 'vcSpeechText'
+ type = 'OptionsLabel'
+ />
+ <widget name = 'vcSpeechSlider'
+ type = 'Slider'
+ />
+ <widget name = 'vcSpeechLabel'
+ type = 'SmallLabel'
+ />
+ </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 type = 'horizontal' padding = '0, 0, 0, 0' spacing = '16'>
+ <widget name = 'PluginsButton'
+ type = 'Button'
+ />
+ <widget name = 'PluginsPath'
+ 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 = 'screen' inset = '16' shading = 'dim'>
+ <layout type = 'vertical' padding = '0, 0, 0, 0' direction = 'bottom2top' spacing = '16'>
+ <layout type = 'horizontal' direction = 'right2left' padding = '8, 8, 8, 2'>
+ <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'
+ width = '35'
+ height = 'Globals.Line.Height'
+ />
+ <widget name = 'Domain'
+ type = 'PopUp'
+ />
+ </layout>
+ <layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '16'>
+ <widget name = 'Name'
+ width = '35'
+ height = 'Globals.Line.Height'
+ />
+ <widget name = 'Desc'
+ type = 'PopUp'
+ />
+ </layout>
+ <space size = '8'/>
+ <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>
+
+ <dialog name = 'ScummMain' overlays = 'screen_center'>
+ <layout type = 'vertical' padding = '4, 4, 4, 4'>
+ <widget name = 'Resume'
+ type = 'Button'
+ />
+ <space size = '8'/>
+ <widget name = 'Load'
+ type = 'Button'
+ />
+ <widget name = 'Save'
+ type = 'Button'
+ />
+ <space size = '8'/>
+ <widget name = 'Options'
+ type = 'Button'
+ />
+ <widget name = 'Help'
+ type = 'Button'
+ />
+ <widget name = 'About'
+ type = 'Button'
+ />
+ <space size = '8'/>
+ <widget name = 'Quit'
+ type = 'Button'
+ />
+ </layout>
+ </dialog>
+
+ <dialog name = 'ScummConfig' overlays = 'screen_center'>
+ <layout type = 'vertical' padding = '8, 8, 8, 8' center = 'true' direction = 'bottom2top'>
+ <layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '8'>
+ <space size = 'Globals.Button.Width' />
+ <widget name = 'Cancel'
+ type = 'Button'
+ />
+ <widget name = 'Ok'
+ type = 'Button'
+ />
+ </layout>
+ <space size = '100'/>
+ <layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '8'>
+ <widget name = 'subSubtitleSpeedDesc'
+ type = 'OptionsLabel'
+ />
+ <widget name = 'subSubtitleSpeedSlider'
+ type = 'Slider'
+ />
+ <widget name = 'subSubtitleSpeedLabel'
+ type = 'SmallLabel'
+ />
+ </layout>
+ <layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '8'>
+ <widget name = 'subToggleDesc'
+ type = 'OptionsLabel'
+ />
+ <widget name = 'subToggleButton'
+ width = 'Globals.Slider.Width'
+ height = 'Globals.Slider.Height'
+ />
+ </layout>
+ <layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '8'>
+ <widget name = 'vcSpeechText'
+ type = 'OptionsLabel'
+ />
+ <widget name = 'vcSpeechSlider'
+ type = 'Slider'
+ />
+ <widget name = 'vcSpeechLabel'
+ type = 'SmallLabel'
+ />
+ </layout>
+ <layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '8'>
+ <widget name = 'vcSfxText'
+ type = 'OptionsLabel'
+ />
+ <widget name = 'vcSfxSlider'
+ type = 'Slider'
+ />
+ <widget name = 'vcSfxLabel'
+ type = 'SmallLabel'
+ />
+ </layout>
+ <layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '8'>
+ <widget name = 'vcMusicText'
+ type = 'OptionsLabel'
+ />
+ <widget name = 'vcMusicSlider'
+ type = 'Slider'
+ />
+ <widget name = 'vcMusicLabel'
+ type = 'SmallLabel'
+ />
+ </layout>
+ </layout>
+ </dialog>
+
+ <dialog name = 'ScummSaveLoad' overlays = 'screen'>
+ <layout type = 'vertical' padding = '8, 8, 8, 8' center = 'true' direction = 'bottom2top'>
+ <layout type = 'horizontal' padding = '0, 0, 16, 0' direction = 'right2left'>
+ <widget name = 'Choose'
+ type = 'Button'
+ />
+ <widget name = 'Cancel'
+ type = 'Button'
+ />
+ <space/>
+ </layout>
+ <widget name = 'List' />
+ <widget name = 'Title' height = 'Globals.Line.Height'/>
+ </layout>
+ </dialog>
+
+ <dialog name = 'ScummHelp' overlays = 'screen_center'>
+ <layout type = 'vertical' padding = '8, 8, 8, 8' direction = 'bottom2top'>
+ <layout type = 'horizontal' padding = '0, 0, 4, 0'>
+ <widget name = 'Prev'
+ type = 'Button'
+ />
+ <widget name = 'Next'
+ type = 'Button'
+ />
+ <space size = '32'/>
+ <widget name = 'Close'
+ type = 'Button'
+ />
+ </layout>
+ <widget name = 'HelpText'
+ height = '170'
+ />
+ <widget name = 'Title'
+ height = 'Globals.Line.Height'
+ />
+ </layout>
+ </dialog>
+</layout_info>
diff --git a/gui/themes/scummtheme.py b/gui/themes/scummtheme.py
new file mode 100644
index 0000000000..202372cfea
--- /dev/null
+++ b/gui/themes/scummtheme.py
@@ -0,0 +1,87 @@
+#!/usr/bin/env python
+# encoding: utf-8
+import sys
+import re
+import os
+import zipfile
+
+def buildTheme(themeName):
+ if not os.path.isdir(themeName):
+ print "Invalid theme name: " + themeName
+ return
+
+ zf = zipfile.ZipFile(themeName + ".zip", 'w')
+
+ print "Building '" + themeName + "' theme:"
+ os.chdir(themeName)
+
+ for filename in os.listdir('.'):
+ if os.path.isfile(filename) and not filename[0] == '.':
+ zf.write(filename, './' + filename)
+ print " Adding file: " + filename
+
+ os.chdir('../')
+
+ zf.close()
+
+def buildAllThemes():
+ for f in os.listdir('.'):
+ if os.path.isdir(os.path.join('.', f)) and not f[0] == '.':
+ buildTheme(f)
+
+def parseSTX(theme_file, def_file):
+ comm = re.compile("\/\*(.*?)\*\/", re.DOTALL)
+
+ output = ""
+ for line in theme_file:
+ output += line.rstrip("\r\n\t ").lstrip() + " \n"
+
+ output = re.sub(comm, "", output).replace("\t", " ").replace(" ", " ").replace("\"", "'").splitlines()
+
+ for line in output:
+ if line and not line.isspace():
+ def_file.write("\"" + line + "\"\n")
+
+def buildDefTheme(themeName):
+ def_file = open("default.inc", "w")
+
+ if not os.path.isdir(themeName):
+ print "Cannot open default theme dir."
+
+ for filename in os.listdir(themeName):
+ filename = os.path.join(themeName, filename)
+ if os.path.isfile(filename) and filename.endswith(".stx"):
+ theme_file = open(filename, "r")
+ parseSTX(theme_file, def_file)
+ theme_file.close()
+
+ def_file.close()
+
+def printUsage():
+ print "==============================="
+ print "ScummVM Theme Generation Script"
+ print "==============================="
+ print "Usage:"
+ print "scummtheme.py makeall"
+ print " Builds all the available themes.\n"
+ print "scummtheme.py make [themename]"
+ print " Builds the theme called 'themename'.\n"
+ print "scummtheme.py default [themename]"
+ print " Creates a 'default.inc' file to embed the given theme in the source code.\n"
+
+def main():
+
+ if len(sys.argv) == 2 and sys.argv[1] == "makeall":
+ buildAllThemes()
+
+ elif len(sys.argv) == 3 and sys.argv[1] == "make":
+ buildTheme(sys.argv[2])
+
+ elif len(sys.argv) == 3 and sys.argv[1] == "default":
+ buildDefTheme(sys.argv[2])
+
+ else:
+ printUsage()
+
+if __name__ == "__main__":
+ sys.exit(main())