- Fixed --gui-theme command line description

- Added --list-themes command line command to list available GUI themes

svn-id: r35681
This commit is contained in:
Johannes Schickel 2009-01-02 20:21:21 +00:00
parent 1b0f945471
commit 6fd559b4f6
4 changed files with 35 additions and 14 deletions

View File

@ -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<GUI::GuiManager::ThemeDescriptor> 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);

View File

@ -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<ThemeDescriptor> &list) {
void GuiManager::listUsableThemes(Common::List<ThemeDescriptor> &list) {
ThemeDescriptor th;
th.name = "ScummVM Classic Theme (Builtin Version)";
th.id = "builtin";
@ -159,10 +158,10 @@ void GuiManager::listUseableThemes(Common::List<ThemeDescriptor> &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<ThemeDescriptor> &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<ThemeDescriptor> &list) {
output.clear();
}
void GuiManager::listUseableThemes(Common::FSNode node, Common::List<ThemeDescriptor> &list) {
void GuiManager::listUsableThemes(Common::FSNode node, Common::List<ThemeDescriptor> &list) {
if (!node.exists() || !node.isReadable() || !node.isDirectory())
return;
@ -252,7 +251,7 @@ void GuiManager::listUseableThemes(Common::FSNode node, Common::List<ThemeDescri
return;
for (Common::FSList::iterator i = fileList.begin(); i != fileList.end(); ++i)
listUseableThemes(*i, list);
listUsableThemes(*i, list);
}
Common::String GuiManager::findThemeFile(const Common::String &id) {
@ -273,7 +272,7 @@ Common::String GuiManager::findThemeFile(const Common::String &id) {
// a complete theme list, thus it is slower than it could be.
// But it is the easiest solution for now.
Common::List<ThemeDescriptor> list;
listUseableThemes(list);
listUsableThemes(list);
for (Common::List<ThemeDescriptor>::const_iterator i = list.begin(); i != list.end(); ++i) {
if (id.equalsIgnoreCase(i->id))

View File

@ -102,7 +102,7 @@ public:
/**
* Lists all theme files useable.
*/
void listUseableThemes(Common::List<ThemeDescriptor> &list);
static void listUsableThemes(Common::List<ThemeDescriptor> &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<ThemeDescriptor> &list);
static void listUsableThemes(Common::FSNode node, Common::List<ThemeDescriptor> &list);
};
} // End of namespace GUI

View File

@ -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)