From 6fd559b4f66bae48cb0c86ed5ebb2ec4a9814c59 Mon Sep 17 00:00:00 2001 From: Johannes Schickel Date: Fri, 2 Jan 2009 20:21:21 +0000 Subject: - Fixed --gui-theme command line description - Added --list-themes command line command to list available GUI themes svn-id: r35681 --- base/commandLine.cpp | 24 +++++++++++++++++++++++- gui/GuiManager.cpp | 19 +++++++++---------- gui/GuiManager.h | 4 ++-- gui/themebrowser.cpp | 2 +- 4 files changed, 35 insertions(+), 14 deletions(-) diff --git a/base/commandLine.cpp b/base/commandLine.cpp index 2605796ca9..0c94776113 100644 --- a/base/commandLine.cpp +++ b/base/commandLine.cpp @@ -34,6 +34,8 @@ #include "sound/mididrv.h" +#include "gui/GuiManager.h" + #define DETECTOR_TESTING_HACK namespace Base { @@ -68,8 +70,9 @@ static const char HELP_STRING[] = " -g, --gfx-mode=MODE Select graphics scaler (1x,2x,3x,2xsai,super2xsai,\n" " supereagle,advmame2x,advmame3x,hq2x,hq3x,tv2x,\n" " dotmatrix)\n" - " --gui-theme=THEME Select GUI theme (default, modern, classic)\n" + " --gui-theme=THEME Select GUI theme\n" " --themepath=PATH Path to where GUI themes are stored\n" + " --list-themes Lists all usable GUI themes\n" " -e, --music-driver=MODE Select music driver (see README for details)\n" " -q, --language=LANG Select language (en,de,fr,it,pt,es,jp,zh,kr,se,gb,\n" " hb,ru,cz)\n" @@ -484,6 +487,9 @@ Common::String parseCommandLine(Common::StringMap &settings, int argc, char **ar } END_OPTION + DO_LONG_COMMAND("list-themes") + END_OPTION + DO_LONG_OPTION("target-md5") END_OPTION @@ -617,6 +623,19 @@ static void listSaves(const char *target) { ConfMan.setActiveDomain(oldDomain); } +/** Lists all usable themes */ +static void listThemes() { + typedef Common::List ThList; + ThList thList; + GUI::GuiManager::listUsableThemes(thList); + + printf("Theme Description\n"); + printf("-------------- ------------------------------------------------\n"); + + for (ThList::const_iterator i = thList.begin(); i != thList.end(); ++i) + printf("%-14s %s\n", i->id.c_str(), i->name.c_str()); +} + #ifdef DETECTOR_TESTING_HACK static void runDetectorTest() { @@ -715,6 +734,9 @@ bool processSettings(Common::String &command, Common::StringMap &settings) { } else if (command == "list-saves") { listSaves(settings["list-saves"].c_str()); return false; + } else if (command == "list-themes") { + listThemes(); + return false; } else if (command == "version") { printf("%s\n", gScummVMFullVersion); printf("Features compiled in: %s\n", gScummVMFeatures); diff --git a/gui/GuiManager.cpp b/gui/GuiManager.cpp index fc2b2c1a4b..95ab7e9fac 100644 --- a/gui/GuiManager.cpp +++ b/gui/GuiManager.cpp @@ -60,7 +60,6 @@ GuiManager::GuiManager() : _redrawStatus(kRedrawDisabled), // Clear the cursor memset(_cursor, 0xFF, sizeof(_cursor)); - ConfMan.registerDefault("gui_theme", "scummmodern"); Common::String themefile(ConfMan.get("gui_theme")); @@ -151,7 +150,7 @@ struct TDComparator { } // end of anonymous namespace -void GuiManager::listUseableThemes(Common::List &list) { +void GuiManager::listUsableThemes(Common::List &list) { ThemeDescriptor th; th.name = "ScummVM Classic Theme (Builtin Version)"; th.id = "builtin"; @@ -159,10 +158,10 @@ void GuiManager::listUseableThemes(Common::List &list) { list.push_back(th); if (ConfMan.hasKey("themepath")) - listUseableThemes(Common::FSNode(ConfMan.get("themepath")), list); + listUsableThemes(Common::FSNode(ConfMan.get("themepath")), list); #ifdef DATA_PATH - listUseableThemes(Common::FSNode(DATA_PATH), list); + listUsableThemes(Common::FSNode(DATA_PATH), list); #endif #ifdef MACOSX @@ -171,16 +170,16 @@ void GuiManager::listUseableThemes(Common::List &list) { char buf[256]; if (CFURLGetFileSystemRepresentation(resourceUrl, true, (UInt8 *)buf, 256)) { Common::FSNode resourcePath(buf); - listUseableThemes(resourcePath, list); + listUsableThemes(resourcePath, list); } CFRelease(resourceUrl); } #endif if (ConfMan.hasKey("extrapath")) - listUseableThemes(Common::FSNode(ConfMan.get("extrapath")), list); + listUsableThemes(Common::FSNode(ConfMan.get("extrapath")), list); - listUseableThemes(Common::FSNode("."), list); + listUsableThemes(Common::FSNode("."), list); // Now we need to strip all duplicates // TODO: It might not be the best idea to strip duplicates. The user might @@ -199,7 +198,7 @@ void GuiManager::listUseableThemes(Common::List &list) { output.clear(); } -void GuiManager::listUseableThemes(Common::FSNode node, Common::List &list) { +void GuiManager::listUsableThemes(Common::FSNode node, Common::List &list) { if (!node.exists() || !node.isReadable() || !node.isDirectory()) return; @@ -252,7 +251,7 @@ void GuiManager::listUseableThemes(Common::FSNode node, Common::List list; - listUseableThemes(list); + listUsableThemes(list); for (Common::List::const_iterator i = list.begin(); i != list.end(); ++i) { if (id.equalsIgnoreCase(i->id)) diff --git a/gui/GuiManager.h b/gui/GuiManager.h index 5e97fd82a2..2f3f3711ab 100644 --- a/gui/GuiManager.h +++ b/gui/GuiManager.h @@ -102,7 +102,7 @@ public: /** * Lists all theme files useable. */ - void listUseableThemes(Common::List &list); + static void listUsableThemes(Common::List &list); protected: enum RedrawStatus { kRedrawDisabled = 0, @@ -159,7 +159,7 @@ protected: void screenChange(); Common::String findThemeFile(const Common::String &id); - void listUseableThemes(Common::FSNode node, Common::List &list); + static void listUsableThemes(Common::FSNode node, Common::List &list); }; } // End of namespace GUI diff --git a/gui/themebrowser.cpp b/gui/themebrowser.cpp index 7fc35e9bf0..b3db9a3405 100644 --- a/gui/themebrowser.cpp +++ b/gui/themebrowser.cpp @@ -95,7 +95,7 @@ void ThemeBrowser::handleCommand(CommandSender *sender, uint32 cmd, uint32 data) void ThemeBrowser::updateListing() { _themes.clear(); - g_gui.listUseableThemes(_themes); + GuiManager::listUsableThemes(_themes); Common::StringList list; for (ThemeDescList::const_iterator i = _themes.begin(); i != _themes.end(); ++i) -- cgit v1.2.3