aboutsummaryrefslogtreecommitdiff
path: root/gui
diff options
context:
space:
mode:
authorVicent Marti2008-08-05 23:58:45 +0000
committerVicent Marti2008-08-05 23:58:45 +0000
commit4256c357912bd9c2b554c22f09a2d0304e9de9a2 (patch)
tree362c9e4b58edd3951bc3822e87c135898b77bbd3 /gui
parenteb3d163439455fb941be0de73c1b3d28f3414c20 (diff)
downloadscummvm-rg350-4256c357912bd9c2b554c22f09a2d0304e9de9a2.tar.gz
scummvm-rg350-4256c357912bd9c2b554c22f09a2d0304e9de9a2.tar.bz2
scummvm-rg350-4256c357912bd9c2b554c22f09a2d0304e9de9a2.zip
Options menu layout parsing, featuring the brand new FATPOPUPS.
svn-id: r33651
Diffstat (limited to 'gui')
-rw-r--r--gui/ThemeEval.cpp21
-rw-r--r--gui/ThemeEval.h19
-rw-r--r--gui/ThemeParser.cpp2
-rw-r--r--gui/ThemeParser.h1
-rw-r--r--gui/ThemeRenderer.cpp6
-rw-r--r--gui/dialog.cpp2
-rw-r--r--gui/newgui.cpp16
-rw-r--r--gui/object.h3
-rw-r--r--gui/options.cpp42
-rw-r--r--gui/themes/default.inc2
-rw-r--r--gui/themes/modern.stx40
11 files changed, 117 insertions, 37 deletions
diff --git a/gui/ThemeEval.cpp b/gui/ThemeEval.cpp
index e13ccc0176..e2c34d8128 100644
--- a/gui/ThemeEval.cpp
+++ b/gui/ThemeEval.cpp
@@ -157,15 +157,26 @@ void ThemeEval::addWidget(const Common::String &name, int w, int h) {
_curLayout.top()->addChild(widget);
}
-void ThemeEval::addDialog(const Common::String &name) {
+void ThemeEval::addDialog(const Common::String &name, const Common::String &overlays) {
ThemeLayout *layout = new ThemeLayoutMain();
_layouts[name] = layout;
+
+ int16 x, y;
+ uint16 w, h;
- layout->setX(0);
- layout->setY(0);
- layout->setWidth(g_system->getOverlayWidth());
- layout->setHeight(g_system->getOverlayHeight());
+ if (overlays == "screen" || overlays.empty()) {
+ x = y = 0;
+ w = g_system->getOverlayWidth();
+ h = g_system->getOverlayHeight();
+ } else if (!getWidgetData(overlays, x, y, w, h)) {
+ error("Error when loading dialog position for '%s'", overlays.c_str());
+ }
+ layout->setX(x);
+ layout->setY(y);
+ layout->setWidth(w);
+ layout->setHeight(h);
+
layout->setPadding(
getVar("Globals.Padding.Left", 0),
getVar("Globals.Padding.Right", 0),
diff --git a/gui/ThemeEval.h b/gui/ThemeEval.h
index b412ba6798..671a737336 100644
--- a/gui/ThemeEval.h
+++ b/gui/ThemeEval.h
@@ -146,6 +146,13 @@ public:
virtual const char *getName() { return _name.c_str(); }
virtual bool getWidgetData(const Common::String &name, int16 &x, int16 &y, uint16 &w, uint16 &h);
+
+ virtual bool getDialogData(int16 &x, int16 &y, uint16 &w, uint16 &h) {
+ assert(getLayoutType() == kLayoutMain);
+ x = _x; y = _y;
+ w = _w; h = _h;
+ return true;
+ }
protected:
int16 _x, _y, _w, _h;
@@ -246,7 +253,7 @@ public:
bool hasVar(const Common::String &name) { return _vars.contains(name); }
- void addDialog(const Common::String &name);
+ void addDialog(const Common::String &name, const Common::String &overlays);
void addLayout(ThemeLayout::LayoutType type, bool reverse, bool center = false);
void addWidget(const Common::String &name, int w, int h);
void addSpacing(int size);
@@ -261,10 +268,17 @@ public:
bool getWidgetData(const Common::String &widget, int16 &x, int16 &y, uint16 &w, uint16 &h) {
Common::StringTokenizer tokenizer(widget, ".");
Common::String dialogName = "Dialog." + tokenizer.nextToken();
+
+ if (dialogName == "Dialog.Dialog")
+ dialogName = "Dialog." + tokenizer.nextToken();
+
Common::String widgetName = tokenizer.nextToken();
if (!_layouts.contains(dialogName))
return false;
+
+ if (widgetName.empty())
+ return _layouts[dialogName]->getDialogData(x, y, w, h);
return _layouts[dialogName]->getWidgetData(widgetName, x, y, w, h);
}
@@ -279,7 +293,8 @@ public:
}
void debugDraw(Graphics::Surface *screen, const Graphics::Font *font) {
- _layouts["Dialog.Launcher"]->debugDraw(screen, font);
+ _layouts["Dialog.GlobalOptions"]->debugDraw(screen, font);
+ _layouts["Dialog.GlobalOptions_Graphics"]->debugDraw(screen, font);
}
private:
diff --git a/gui/ThemeParser.cpp b/gui/ThemeParser.cpp
index 6c5c900f50..fafe2ccad7 100644
--- a/gui/ThemeParser.cpp
+++ b/gui/ThemeParser.cpp
@@ -493,7 +493,7 @@ bool ThemeParser::parserCallback_child(ParserNode *node) {
bool ThemeParser::parserCallback_dialog(ParserNode *node) {
Common::String var = "Dialog." + node->values["name"];
- _theme->themeEval()->addDialog(var);
+ _theme->themeEval()->addDialog(var, node->values["overlays"]);
return true;
}
diff --git a/gui/ThemeParser.h b/gui/ThemeParser.h
index 61d7262946..e26a841fe6 100644
--- a/gui/ThemeParser.h
+++ b/gui/ThemeParser.h
@@ -435,6 +435,7 @@ protected:
XML_KEY(dialog)
XML_PROP(name, true)
+ XML_PROP(overlays, true)
XML_KEY(layout)
XML_PROP(type, true)
XML_PROP(center, false)
diff --git a/gui/ThemeRenderer.cpp b/gui/ThemeRenderer.cpp
index 4a83982c8c..474b927845 100644
--- a/gui/ThemeRenderer.cpp
+++ b/gui/ThemeRenderer.cpp
@@ -695,9 +695,9 @@ void ThemeRenderer::updateScreen() {
renderDirtyScreen();
-// _vectorRenderer->fillSurface();
-// themeEval()->debugDraw(_screen, _font);
-// _vectorRenderer->copyWholeFrame(_system);
+// _vectorRenderer->fillSurface();
+ // themeEval()->debugDraw(_screen, _font);
+ // _vectorRenderer->copyWholeFrame(_system);
}
void ThemeRenderer::renderDirtyScreen() {
diff --git a/gui/dialog.cpp b/gui/dialog.cpp
index 0594941d65..ac9d0dbb4d 100644
--- a/gui/dialog.cpp
+++ b/gui/dialog.cpp
@@ -150,7 +150,7 @@ void Dialog::drawDialog() {
// Draw all children
Widget *w = _firstWidget;
while (w) {
- w->draw();
+ if (w->_debugVisible) w->draw();
w = w->_next;
}
}
diff --git a/gui/newgui.cpp b/gui/newgui.cpp
index e829a2c6f5..b8c953619c 100644
--- a/gui/newgui.cpp
+++ b/gui/newgui.cpp
@@ -58,8 +58,20 @@ enum {
void GuiObject::reflowLayout() {
if (!_name.empty()) {
- if (!g_gui.xmlEval()->getWidgetData(_name, _x, _y, _w, _h))
- error("Could not load widget position for '%s'", _name.c_str());
+ if (!g_gui.xmlEval()->getWidgetData(_name, _x, _y, _w, _h)) {
+ warning("Could not load widget position for '%s'", _name.c_str());
+
+// if ((_x = g_gui.evaluator()->getVar(_name + ".x")) == EVAL_UNDEF_VAR)
+// error("Undefined variable %s.x", _name.c_str());
+// if ((_y = g_gui.evaluator()->getVar(_name + ".y")) == EVAL_UNDEF_VAR)
+// error("Undefined variable %s.y", _name.c_str());
+// _w = g_gui.evaluator()->getVar(_name + ".w");
+// _h = g_gui.evaluator()->getVar(_name + ".h");
+ _w = _x = _y = _h = 32;
+ _debugVisible = false;
+ }
+
+ _debugVisible = true;
if (_x < 0)
error("Widget <%s> has x < 0: %d", _name.c_str(), _x);
diff --git a/gui/object.h b/gui/object.h
index 01046bd668..9e5ea5fa60 100644
--- a/gui/object.h
+++ b/gui/object.h
@@ -78,7 +78,10 @@ public:
virtual uint16 getWidth() const { return _w; }
virtual uint16 getHeight() const { return _h; }
+// Tanoku-TODO: fix this back
virtual bool isVisible() const = 0;
+ bool _debugVisible;
+
virtual void draw() = 0;
diff --git a/gui/options.cpp b/gui/options.cpp
index d6f5306ce2..76c9f8ab82 100644
--- a/gui/options.cpp
+++ b/gui/options.cpp
@@ -659,27 +659,27 @@ void OptionsDialog::reflowLayout() {
GlobalOptionsDialog::GlobalOptionsDialog()
- : OptionsDialog(Common::ConfigManager::kApplicationDomain, "globaloptions") {
+ : OptionsDialog(Common::ConfigManager::kApplicationDomain, "GlobalOptions") {
// The tab widget
- TabWidget *tab = new TabWidget(this, "globaloptions_tabwidget");
+ TabWidget *tab = new TabWidget(this, "GlobalOptions.TabWidget");
tab->setHints(THEME_HINT_FIRST_DRAW | THEME_HINT_SAVE_BACKGROUND);
//
// 1) The graphics tab
//
tab->addTab("Graphics");
- addGraphicControls(tab, "globaloptions_");
+ addGraphicControls(tab, "GlobalOptions_Graphics.");
//
// 2) The audio tab
//
tab->addTab("Audio");
- addAudioControls(tab, "globaloptions_");
- addSubtitleControls(tab, "globaloptions_");
+ addAudioControls(tab, "GlobalOptions.");
+ addSubtitleControls(tab, "GlobalOptions_Audio.");
tab->addTab("Volume");
- addVolumeControls(tab, "globaloptions_");
+ addVolumeControls(tab, "GlobalOptions_Volume.");
// TODO: cd drive setting
@@ -687,7 +687,7 @@ GlobalOptionsDialog::GlobalOptionsDialog()
// 3) The MIDI tab
//
tab->addTab("MIDI");
- addMIDIControls(tab, "globaloptions_");
+ addMIDIControls(tab, "GlobalOptions_MIDI.");
//
// 4) The miscellaneous tab
@@ -699,33 +699,33 @@ GlobalOptionsDialog::GlobalOptionsDialog()
// truncated in the small version of the GUI.
// Save game path
- new ButtonWidget(tab, "globaloptions_savebutton", "Save Path: ", kChooseSaveDirCmd, 0);
- _savePath = new StaticTextWidget(tab, "globaloptions_savepath", "/foo/bar");
+ new ButtonWidget(tab, "GlobalOptions_Paths.SaveButton", "Save Path: ", kChooseSaveDirCmd, 0);
+ _savePath = new StaticTextWidget(tab, "GlobalOptions_Paths.SavePath", "/foo/bar");
- new ButtonWidget(tab, "globaloptions_themebutton", "Theme Path:", kChooseThemeDirCmd, 0);
- _themePath = new StaticTextWidget(tab, "globaloptions_themepath", "None");
+ new ButtonWidget(tab, "GlobalOptions_Paths.ThemeButton", "Theme Path:", kChooseThemeDirCmd, 0);
+ _themePath = new StaticTextWidget(tab, "GlobalOptions_Paths.ThemePath", "None");
- new ButtonWidget(tab, "globaloptions_extrabutton", "Extra Path:", kChooseExtraDirCmd, 0);
- _extraPath = new StaticTextWidget(tab, "globaloptions_extrapath", "None");
+ new ButtonWidget(tab, "GlobalOptions_Paths.ExtraButton", "Extra Path:", kChooseExtraDirCmd, 0);
+ _extraPath = new StaticTextWidget(tab, "GlobalOptions_Paths.ExtraPath", "None");
#ifdef DYNAMIC_MODULES
- new ButtonWidget(tab, "globaloptions_pluginsbutton", "Plugins Path:", kChoosePluginsDirCmd, 0);
- _pluginsPath = new StaticTextWidget(tab, "globaloptions_pluginspath", "None");
+ new ButtonWidget(tab, "GlobalOptions_Paths.PluginsButton", "Plugins Path:", kChoosePluginsDirCmd, 0);
+ _pluginsPath = new StaticTextWidget(tab, "GlobalOptions_Paths.PluginsPath", "None");
#endif
#endif
#ifdef SMALL_SCREEN_DEVICE
- new ButtonWidget(tab, "globaloptions_keysbutton", "Keys", kChooseKeyMappingCmd, 0);
+ new ButtonWidget(tab, "GlobalOptions.KeysButton", "Keys", kChooseKeyMappingCmd, 0);
#endif
tab->addTab("Misc");
- new ButtonWidget(tab, "globaloptions_themebutton2", "Theme:", kChooseThemeCmd, 0);
- _curTheme = new StaticTextWidget(tab, "globaloptions_curtheme", g_gui.theme()->getThemeName());
+ new ButtonWidget(tab, "GlobalOptions_Misc.ThemeButton", "Theme:", kChooseThemeCmd, 0);
+ _curTheme = new StaticTextWidget(tab, "GlobalOptions_Misc.CurTheme", g_gui.theme()->getThemeName());
int labelWidth = g_gui.evaluator()->getVar("tabPopupsLabelW");
- _autosavePeriodPopUp = new PopUpWidget(tab, "globaloptions_autosaveperiod", "Autosave:", labelWidth);
+ _autosavePeriodPopUp = new PopUpWidget(tab, "GlobalOptions_Misc.AutosavePeriod", "Autosave:", labelWidth);
for (int i = 0; savePeriodLabels[i]; i++) {
_autosavePeriodPopUp->appendEntry(savePeriodLabels[i], savePeriodValues[i]);
@@ -738,8 +738,8 @@ GlobalOptionsDialog::GlobalOptionsDialog()
tab->setActiveTab(0);
// Add OK & Cancel buttons
- new ButtonWidget(this, "globaloptions_cancel", "Cancel", kCloseCmd, 0);
- new ButtonWidget(this, "globaloptions_ok", "OK", kOKCmd, 0);
+ new ButtonWidget(this, "GlobalOptions.Cancel", "Cancel", kCloseCmd, 0);
+ new ButtonWidget(this, "GlobalOptions.Ok", "OK", kOKCmd, 0);
#ifdef SMALL_SCREEN_DEVICE
_keysDialog = new KeysDialog();
diff --git a/gui/themes/default.inc b/gui/themes/default.inc
index d5ee4cc8b3..7ba64bbb83 100644
--- a/gui/themes/default.inc
+++ b/gui/themes/default.inc
@@ -1 +1 @@
-" <render_info> <palette> <color name = 'darkred' rgb = '168, 42, 12' /> <color name = 'brightred' rgb = '200, 124, 104' /> <color name = 'xtrabrightred' rgb = '251, 241, 206' /> <color name = 'blandyellow' rgb = '247, 228, 166' /> <color name = 'bgreen' rgb = '96, 160, 8' /> <color name = 'blue' rgb = '0, 255, 255' /> <color name = 'black' rgb = '0, 0, 0' /> <color name = 'white' rgb = '255, 255, 255' /> <color name = 'shadowcolor' rgb = '63, 60, 17' /> </palette> <fonts> <font id = 'text_default' type = 'default' color = 'black' /> <font id = 'text_hover' type = 'default' color = 'bgreen' /> <font id = 'text_disabled' type = 'default' color = '128, 128, 128' /> <font id = 'text_inverted' type = 'default' color = '0, 0, 0' /> <font id = 'text_button' type = 'default' color = 'white' /> <font id = 'text_button_hover' type = 'default' color = 'blandyellow' /> </fonts> <defaults fill = 'gradient' fg_color = 'white' bevel_color = '237, 169, 72'/> <drawdata id = 'text_selection' cache = false> <drawstep func = 'square' fill = 'foreground' fg_color = 'bgreen' /> </drawdata> <drawdata id = 'mainmenu_bg' cache = false> <drawstep func = 'fill' fill = 'gradient' gradient_start = '208, 112, 8' gradient_end = '232, 192, 16' /> </drawdata> <drawdata id = 'separator' cache = false> <drawstep func = 'square' fill = 'foreground' height = '1' ypos = 'center' fg_color = 'black' /> </drawdata> <drawdata id = 'scrollbar_base' cache = false> <drawstep func = 'roundedsq' stroke = 1 radius = 6 fill = 'background' fg_color = '176, 164, 160' bg_color = '240, 228, 160' /> </drawdata> <drawdata id = 'scrollbar_handle_hover' cache = false> <drawstep func = 'roundedsq' stroke = 1 radius = 6 fill = 'gradient' fg_color = 'blandyellow' gradient_start = 'xtrabrightred' gradient_end = 'darkred' /> </drawdata> <drawdata id = 'scrollbar_handle_idle' cache = false> <drawstep func = 'roundedsq' stroke = 1 radius = 6 fill = 'gradient' fg_color = 'blandyellow' gradient_start = 'brightred' gradient_end = 'darkred' /> </drawdata> <drawdata id = 'scrollbar_button_idle' cache = false> <drawstep func = 'roundedsq' radius = '4' fill = 'none' fg_color = '176, 164, 160' stroke = 1 /> <drawstep func = 'triangle' fg_color = '0, 0, 0' fill = 'foreground' width = 'auto' height = 'auto' xpos = 'center' ypos = 'center' orientation = 'top' /> </drawdata> <drawdata id = 'scrollbar_button_hover' cache = false> <drawstep func = 'roundedsq' radius = '4' fill = 'background' fg_color = '120, 120, 120' bg_color = '206, 121, 99' stroke = 1 /> <drawstep func = 'triangle' fg_color = '0, 0, 0' fill = 'foreground' width = 'auto' height = 'auto' xpos = 'center' ypos = 'center' orientation = 'top' /> </drawdata> <drawdata id = 'tab_active' cache = false> <text font = 'text_default' vertical_align = 'center' horizontal_align = 'center' /> <drawstep func = 'tab' radius = '4' stroke = '0' fill = 'gradient' gradient_end = 'xtrabrightred' gradient_start = 'blandyellow' shadow = 3 /> </drawdata> <drawdata id = 'tab_inactive' cache = false> <text font = 'text_default' vertical_align = 'center' horizontal_align = 'center' /> <drawstep func = 'tab' radius = '4' stroke = '0' fill = 'foreground' fg_color = '240, 205, 118' shadow = 3 /> </drawdata> <drawdata id = 'tab_background' cache = false> <drawstep func = 'tab' radius = '8' stroke = '0' fill = 'foreground' fg_color = '232, 180, 81' shadow = 3 /> </drawdata> <drawdata id = 'widget_slider' cache = false> <drawstep func = 'roundedsq' stroke = 0 radius = 4 fill = 'foreground' fg_color = 'blandyellow' bevel = 1 bevel_color = 'shadowcolor' /> </drawdata> <drawdata id = 'slider_full' cache = false> <drawstep func = 'roundedsq' stroke = 1 radius = 4 fill = 'gradient' fg_color = '123, 112, 56' gradient_start = 'brightred' gradient_end = 'darkred' /> </drawdata> <drawdata id = 'slider_hover' cache = false> <drawstep func = 'roundedsq' stroke = 1 radius = 4 fill = 'gradient' fg_color = '123, 112, 56' gradient_start = 'xtrabrightred' gradient_end = 'darkred' /> </drawdata> <drawdata id = 'popup_idle' cache = false> <drawstep func = 'roundedsq' stroke = 0 radius = 4 fill = 'foreground' fg_color = '250, 237, 190' shadow = 2 /> <drawstep func = 'triangle' fg_color = '63, 60, 52' fill = 'foreground' width = 'height' height = 'auto' xpos = 'right' ypos = 'center' orientation = 'bottom' /> <text font = 'text_default' vertical_align = 'center' horizontal_align = 'right' /> </drawdata> <drawdata id = 'popup_hover' cache = false> <drawstep func = 'roundedsq' stroke = 0 radius = 4 fill = 'gradient' gradient_start = 'blandyellow' gradient_end = '250, 237, 190' shadow = 0 /> <drawstep func = 'triangle' fg_color = '63, 60, 52' fill = 'foreground' width = 'height' height = 'auto' xpos = 'right' ypos = 'center' orientation = 'bottom' /> <text font = 'text_hover' vertical_align = 'center' horizontal_align = 'right' /> </drawdata> <drawdata id = 'default_bg' cache = false> <drawstep func = 'roundedsq' radius = 12 stroke = 0 fg_color = 'xtrabrightred' fill = 'foreground' shadow = 3 /> </drawdata> <drawdata id = 'button_idle' cache = false> <text font = 'text_button' vertical_align = 'center' horizontal_align = 'center' /> <drawstep func = 'roundedsq' radius = '6' stroke = 1 fill = 'gradient' shadow = 0 fg_color = 'shadowcolor' gradient_start = 'brightred' gradient_end = 'darkred' bevel = 1 /> </drawdata> <drawdata id = 'button_hover' cache = false> <text font = 'text_button_hover' vertical_align = 'center' horizontal_align = 'center' /> <drawstep func = 'roundedsq' radius = '6' gradient_factor = 1 stroke = 1 fill = 'gradient' shadow = 0 fg_color = 'shadowcolor' gradient_start = 'xtrabrightred' gradient_end = 'darkred' bevel_color = 'xtrabrightred' bevel = 1 /> </drawdata> <drawdata id = 'button_disabled' cache = false> <text font = 'text_disabled' vertical_align = 'center' horizontal_align = 'center' /> <drawstep func = 'roundedsq' radius = '8' stroke = 0 fill = 'foreground' fg_color = '200, 200, 200' shadow = 3 /> </drawdata> <drawdata id = 'checkbox_disabled' cache = false> <text font = 'text_disabled' vertical_align = 'top' horizontal_align = 'left' /> <drawstep func = 'roundedsq' fill = 'none' radius = 4 fg_color = 'black' shadow = 0 bevel = 1 bevel_color = 'shadowcolor' /> </drawdata> <drawdata id = 'checkbox_selected' cache = false> <text font = 'text_default' vertical_align = 'top' horizontal_align = 'left' /> <drawstep func = 'roundedsq' fill = 'gradient' radius = 4 fg_color = 'white' gradient_start = 'brightred' gradient_end = 'darkred' shadow = 0 bevel = 1 bevel_color = 'shadowcolor' /> </drawdata> <drawdata id = 'checkbox_default' cache = false> <text font = 'text_default' vertical_align = 'top' horizontal_align = 'left' /> <drawstep func = 'roundedsq' fill = 'foreground' radius = 4 fg_color = 'blandyellow' shadow = 0 bevel = 1 bevel_color = 'shadowcolor' /> </drawdata> <drawdata id = 'widget_default' cache = false> <drawstep func = 'roundedsq' gradient_factor = 6 radius = '8' fill = 'gradient' gradient_start = '240, 224, 136' gradient_end = 'xtrabrightred' shadow = 3 /> </drawdata> </render_info> <layout_info> <globals> <def var = 'Widget.Size' value = '32' /> <def var = 'Line.Height' value = '16' /> <def var = 'Font.Height' value = '16' /> <def var = 'Padding.Bottom' value = '16' /> <def var = 'Padding.Left' value = '16' /> <def var = 'Padding.Right' value = '16' /> <def var = 'Padding.Top' value = '16' /> <widget name = 'Inset' pos = '23, 94' size = '666, 666' /> <widget name = 'Button' size = '120, 25' /> <widget name = 'Slider' size = '666, 666' /> <widget name = 'ListWidget' padding = '7, 5, 5, 5' /> <widget name = 'PopUpWidget' padding = '7, 5, 0, 0' /> <widget name = 'EditTextWidget' padding = '7, 5, 0, 0' /> <widget name = 'Console' padding = '7, 5, 5, 5' /> <widget name = 'TabWidget'> <child name = 'Tab' size = '75, 27' padding = '0, 0, 8, 0' /> <child name = 'NavButton' size = '15, 18' padding = '0, 3, 4, 0' /> </widget> </globals> <dialog name = 'Launcher'> <layout type = 'vertical' center = 'true' padding = '23, 23, 8, 23'> <widget name = 'Version' width = '247' height = 'Globals.Line.Height' /> <widget name = 'Logo' width = '283' height = '80' /> <layout type = 'horizontal' direction = 'right2left' padding = '0, 0, 0, 0'> <layout type = 'vertical' padding = '16, 0, 0, 0'> <widget name = 'StartButton' width = 'Globals.Button.Width' height = 'Globals.Button.Height' /> <space size = '16' /> <widget name = 'AddGameButton' width = 'Globals.Button.Width' height = 'Globals.Button.Height' /> <widget name = 'EditGameButton' width = 'Globals.Button.Width' height = 'Globals.Button.Height' /> <widget name = 'RemoveGameButton' width = 'Globals.Button.Width' height = 'Globals.Button.Height' /> <space size = '16' /> <widget name = 'OptionsButton' width = 'Globals.Button.Width' height = 'Globals.Button.Height' /> <widget name = 'AboutButton' width = 'Globals.Button.Width' height = 'Globals.Button.Height' /> <space size = '16' /> <widget name = 'QuitButton' width = 'Globals.Button.Width' height = 'Globals.Button.Height' /> <space/> </layout> <widget name = 'GameList'/> </layout> </layout> </dialog> </layout_info> "
+" <render_info> <palette> <color name = 'darkred' rgb = '168, 42, 12' /> <color name = 'brightred' rgb = '200, 124, 104' /> <color name = 'xtrabrightred' rgb = '251, 241, 206' /> <color name = 'blandyellow' rgb = '247, 228, 166' /> <color name = 'bgreen' rgb = '96, 160, 8' /> <color name = 'blue' rgb = '0, 255, 255' /> <color name = 'black' rgb = '0, 0, 0' /> <color name = 'white' rgb = '255, 255, 255' /> <color name = 'shadowcolor' rgb = '63, 60, 17' /> </palette> <fonts> <font id = 'text_default' type = 'default' color = 'black' /> <font id = 'text_hover' type = 'default' color = 'bgreen' /> <font id = 'text_disabled' type = 'default' color = '128, 128, 128' /> <font id = 'text_inverted' type = 'default' color = '0, 0, 0' /> <font id = 'text_button' type = 'default' color = 'white' /> <font id = 'text_button_hover' type = 'default' color = 'blandyellow' /> </fonts> <defaults fill = 'gradient' fg_color = 'white' bevel_color = '237, 169, 72'/> <drawdata id = 'text_selection' cache = false> <drawstep func = 'square' fill = 'foreground' fg_color = 'bgreen' /> </drawdata> <drawdata id = 'mainmenu_bg' cache = false> <drawstep func = 'fill' fill = 'gradient' gradient_start = '208, 112, 8' gradient_end = '232, 192, 16' /> </drawdata> <drawdata id = 'separator' cache = false> <drawstep func = 'square' fill = 'foreground' height = '1' ypos = 'center' fg_color = 'black' /> </drawdata> <drawdata id = 'scrollbar_base' cache = false> <drawstep func = 'roundedsq' stroke = 1 radius = 6 fill = 'background' fg_color = '176, 164, 160' bg_color = '240, 228, 160' /> </drawdata> <drawdata id = 'scrollbar_handle_hover' cache = false> <drawstep func = 'roundedsq' stroke = 1 radius = 6 fill = 'gradient' fg_color = 'blandyellow' gradient_start = 'xtrabrightred' gradient_end = 'darkred' /> </drawdata> <drawdata id = 'scrollbar_handle_idle' cache = false> <drawstep func = 'roundedsq' stroke = 1 radius = 6 fill = 'gradient' fg_color = 'blandyellow' gradient_start = 'brightred' gradient_end = 'darkred' /> </drawdata> <drawdata id = 'scrollbar_button_idle' cache = false> <drawstep func = 'roundedsq' radius = '4' fill = 'none' fg_color = '176, 164, 160' stroke = 1 /> <drawstep func = 'triangle' fg_color = '0, 0, 0' fill = 'foreground' width = 'auto' height = 'auto' xpos = 'center' ypos = 'center' orientation = 'top' /> </drawdata> <drawdata id = 'scrollbar_button_hover' cache = false> <drawstep func = 'roundedsq' radius = '4' fill = 'background' fg_color = '120, 120, 120' bg_color = '206, 121, 99' stroke = 1 /> <drawstep func = 'triangle' fg_color = '0, 0, 0' fill = 'foreground' width = 'auto' height = 'auto' xpos = 'center' ypos = 'center' orientation = 'top' /> </drawdata> <drawdata id = 'tab_active' cache = false> <text font = 'text_default' vertical_align = 'center' horizontal_align = 'center' /> <drawstep func = 'tab' radius = '4' stroke = '0' fill = 'gradient' gradient_end = 'xtrabrightred' gradient_start = 'blandyellow' shadow = 3 /> </drawdata> <drawdata id = 'tab_inactive' cache = false> <text font = 'text_default' vertical_align = 'center' horizontal_align = 'center' /> <drawstep func = 'tab' radius = '4' stroke = '0' fill = 'foreground' fg_color = '240, 205, 118' shadow = 3 /> </drawdata> <drawdata id = 'tab_background' cache = false> <drawstep func = 'tab' radius = '8' stroke = '0' fill = 'foreground' fg_color = '232, 180, 81' shadow = 3 /> </drawdata> <drawdata id = 'widget_slider' cache = false> <drawstep func = 'roundedsq' stroke = 0 radius = 4 fill = 'foreground' fg_color = 'blandyellow' bevel = 1 bevel_color = 'shadowcolor' /> </drawdata> <drawdata id = 'slider_full' cache = false> <drawstep func = 'roundedsq' stroke = 1 radius = 4 fill = 'gradient' fg_color = '123, 112, 56' gradient_start = 'brightred' gradient_end = 'darkred' /> </drawdata> <drawdata id = 'slider_hover' cache = false> <drawstep func = 'roundedsq' stroke = 1 radius = 4 fill = 'gradient' fg_color = '123, 112, 56' gradient_start = 'xtrabrightred' gradient_end = 'darkred' /> </drawdata> <drawdata id = 'popup_idle' cache = false> <drawstep func = 'roundedsq' stroke = 0 radius = 4 fill = 'foreground' fg_color = '250, 237, 190' shadow = 2 /> <drawstep func = 'triangle' fg_color = '63, 60, 52' fill = 'foreground' width = 'height' height = 'auto' xpos = 'right' ypos = 'center' orientation = 'bottom' /> <text font = 'text_default' vertical_align = 'center' horizontal_align = 'right' /> </drawdata> <drawdata id = 'popup_hover' cache = false> <drawstep func = 'roundedsq' stroke = 0 radius = 4 fill = 'gradient' gradient_start = 'blandyellow' gradient_end = '250, 237, 190' shadow = 0 /> <drawstep func = 'triangle' fg_color = '63, 60, 52' fill = 'foreground' width = 'height' height = 'auto' xpos = 'right' ypos = 'center' orientation = 'bottom' /> <text font = 'text_hover' vertical_align = 'center' horizontal_align = 'right' /> </drawdata> <drawdata id = 'default_bg' cache = false> <drawstep func = 'roundedsq' radius = 12 stroke = 0 fg_color = 'xtrabrightred' fill = 'foreground' shadow = 3 /> </drawdata> <drawdata id = 'button_idle' cache = false> <text font = 'text_button' vertical_align = 'center' horizontal_align = 'center' /> <drawstep func = 'roundedsq' radius = '6' stroke = 1 fill = 'gradient' shadow = 0 fg_color = 'shadowcolor' gradient_start = 'brightred' gradient_end = 'darkred' bevel = 1 /> </drawdata> <drawdata id = 'button_hover' cache = false> <text font = 'text_button_hover' vertical_align = 'center' horizontal_align = 'center' /> <drawstep func = 'roundedsq' radius = '6' gradient_factor = 1 stroke = 1 fill = 'gradient' shadow = 0 fg_color = 'shadowcolor' gradient_start = 'xtrabrightred' gradient_end = 'darkred' bevel_color = 'xtrabrightred' bevel = 1 /> </drawdata> <drawdata id = 'button_disabled' cache = false> <text font = 'text_disabled' vertical_align = 'center' horizontal_align = 'center' /> <drawstep func = 'roundedsq' radius = '8' stroke = 0 fill = 'foreground' fg_color = '200, 200, 200' shadow = 3 /> </drawdata> <drawdata id = 'checkbox_disabled' cache = false> <text font = 'text_disabled' vertical_align = 'top' horizontal_align = 'left' /> <drawstep func = 'roundedsq' fill = 'none' radius = 4 fg_color = 'black' shadow = 0 bevel = 1 bevel_color = 'shadowcolor' /> </drawdata> <drawdata id = 'checkbox_selected' cache = false> <text font = 'text_default' vertical_align = 'top' horizontal_align = 'left' /> <drawstep func = 'roundedsq' fill = 'gradient' radius = 4 fg_color = 'white' gradient_start = 'brightred' gradient_end = 'darkred' shadow = 0 bevel = 1 bevel_color = 'shadowcolor' /> </drawdata> <drawdata id = 'checkbox_default' cache = false> <text font = 'text_default' vertical_align = 'top' horizontal_align = 'left' /> <drawstep func = 'roundedsq' fill = 'foreground' radius = 4 fg_color = 'blandyellow' shadow = 0 bevel = 1 bevel_color = 'shadowcolor' /> </drawdata> <drawdata id = 'widget_default' cache = false> <drawstep func = 'roundedsq' gradient_factor = 6 radius = '8' fill = 'gradient' gradient_start = '240, 224, 136' gradient_end = 'xtrabrightred' shadow = 3 /> </drawdata> </render_info> <layout_info> <globals> <def var = 'Widget.Size' value = '32' /> <def var = 'Line.Height' value = '16' /> <def var = 'Font.Height' value = '16' /> <def var = 'Padding.Bottom' value = '16' /> <def var = 'Padding.Left' value = '16' /> <def var = 'Padding.Right' value = '16' /> <def var = 'Padding.Top' value = '16' /> <widget name = 'Inset' pos = '23, 94' size = '666, 666' /> <widget name = 'Button' size = '120, 25' /> <widget name = 'Slider' size = '666, 666' /> <widget name = 'ListWidget' padding = '7, 5, 5, 5' /> <widget name = 'PopUpWidget' padding = '7, 5, 0, 0' /> <widget name = 'EditTextWidget' padding = '7, 5, 0, 0' /> <widget name = 'Console' padding = '7, 5, 5, 5' /> <widget name = 'TabWidget'> <child name = 'Tab' size = '75, 27' padding = '0, 0, 8, 0' /> <child name = 'NavButton' size = '15, 18' padding = '0, 3, 4, 0' /> </widget> </globals> <dialog name = 'Launcher' overlays = 'screen'> <layout type = 'vertical' center = 'true' padding = '23, 23, 8, 23'> <widget name = 'Version' width = '247' height = 'Globals.Line.Height' /> <widget name = 'Logo' width = '283' height = '80' /> <layout type = 'horizontal' direction = 'right2left' padding = '0, 0, 0, 0'> <layout type = 'vertical' padding = '16, 0, 0, 0'> <widget name = 'StartButton' width = 'Globals.Button.Width' height = 'Globals.Button.Height' /> <space size = '16' /> <widget name = 'AddGameButton' width = 'Globals.Button.Width' height = 'Globals.Button.Height' /> <widget name = 'EditGameButton' width = 'Globals.Button.Width' height = 'Globals.Button.Height' /> <widget name = 'RemoveGameButton' width = 'Globals.Button.Width' height = 'Globals.Button.Height' /> <space size = '16' /> <widget name = 'OptionsButton' width = 'Globals.Button.Width' height = 'Globals.Button.Height' /> <widget name = 'AboutButton' width = 'Globals.Button.Width' height = 'Globals.Button.Height' /> <space size = '16' /> <widget name = 'QuitButton' width = 'Globals.Button.Width' height = 'Globals.Button.Height' /> <space/> </layout> <widget name = 'GameList'/> </layout> </layout> </dialog> <dialog name = 'GlobalOptions' overlays = 'Dialog.Launcher.GameList'> <layout type = 'vertical' padding = '0, 0, 0, 0' direction = 'bottom2top'> <layout type = 'horizontal' direction = 'right2left' padding = '16, 16, 16, 16'> <widget name = 'Ok' width = 'Globals.Button.Width' height = 'Globals.Button.Height' /> <widget name = 'Cancel' width = 'Globals.Button.Width' height = 'Globals.Button.Height' /> <space/> </layout> <widget name = 'TabWidget'/> </layout> </dialog> <dialog name = 'GlobalOptions_Graphics' overlays = 'Dialog.GlobalOptions.TabWidget'> <layout type = 'vertical' padding = '16, 16, 16, 16'> <widget name = 'grModePopup' width = '512' height = '64' /> <widget name = 'grRenderPopup' width = '512' height = '64' /> <widget name = 'grAspectCheckbox' width = '256' height = '32' /> <widget name = 'grFullscreenCheckbox' width = '256' height = '32' /> </layout> </dialog> </layout_info> "
diff --git a/gui/themes/modern.stx b/gui/themes/modern.stx
index e4fc5d5c3e..8d0e91ea0c 100644
--- a/gui/themes/modern.stx
+++ b/gui/themes/modern.stx
@@ -464,7 +464,7 @@
</widget>
</globals>
- <dialog name = 'Launcher'>
+ <dialog name = 'Launcher' overlays = 'screen'>
<layout type = 'vertical' center = 'true' padding = '23, 23, 8, 23'>
<widget name = 'Version'
width = '247'
@@ -513,4 +513,42 @@
</layout>
</layout>
</dialog>
+
+ <dialog name = 'GlobalOptions' overlays = 'Dialog.Launcher.GameList'>
+ <layout type = 'vertical' padding = '0, 0, 0, 0' direction = 'bottom2top'>
+ <layout type = 'horizontal' direction = 'right2left' padding = '16, 16, 16, 16'>
+ <widget name = 'Ok'
+ width = 'Globals.Button.Width'
+ height = 'Globals.Button.Height'
+ />
+ <widget name = 'Cancel'
+ width = 'Globals.Button.Width'
+ height = 'Globals.Button.Height'
+ />
+ <space/>
+ </layout>
+ <widget name = 'TabWidget'/>
+ </layout>
+ </dialog>
+
+ <dialog name = 'GlobalOptions_Graphics' overlays = 'Dialog.GlobalOptions.TabWidget'>
+ <layout type = 'vertical' padding = '16, 16, 16, 16'>
+ <widget name = 'grModePopup'
+ width = '512'
+ height = '64'
+ />
+ <widget name = 'grRenderPopup'
+ width = '512'
+ height = '64'
+ />
+ <widget name = 'grAspectCheckbox'
+ width = '256'
+ height = '32'
+ />
+ <widget name = 'grFullscreenCheckbox'
+ width = '256'
+ height = '32'
+ />
+ </layout>
+ </dialog>
</layout_info> \ No newline at end of file