diff options
author | Neeraj Kumar | 2010-08-06 20:13:41 +0000 |
---|---|---|
committer | Neeraj Kumar | 2010-08-06 20:13:41 +0000 |
commit | 7e126ed299cb789340cb2f8d409338dbdd6c8235 (patch) | |
tree | 91f6e4be633fd579922ddf270443011582b8f9ec /gui/launcher.cpp | |
parent | 6c0855f3d3efc52478ba9ce019fbd4c9287f4691 (diff) | |
parent | 4ae7427eed781613e2cda096d0f61c77883bca05 (diff) | |
download | scummvm-rg350-7e126ed299cb789340cb2f8d409338dbdd6c8235.tar.gz scummvm-rg350-7e126ed299cb789340cb2f8d409338dbdd6c8235.tar.bz2 scummvm-rg350-7e126ed299cb789340cb2f8d409338dbdd6c8235.zip |
TESTBED: Merged changes from trunk to my branch
svn-id: r51798
Diffstat (limited to 'gui/launcher.cpp')
-rw-r--r-- | gui/launcher.cpp | 191 |
1 files changed, 108 insertions, 83 deletions
diff --git a/gui/launcher.cpp b/gui/launcher.cpp index 0f484c5233..d50e7ce578 100644 --- a/gui/launcher.cpp +++ b/gui/launcher.cpp @@ -30,6 +30,7 @@ #include "common/util.h" #include "common/savefile.h" #include "common/system.h" +#include "common/translation.h" #include "gui/about.h" #include "gui/browser.h" @@ -71,6 +72,7 @@ enum { kCmdGlobalGraphicsOverride = 'OGFX', kCmdGlobalAudioOverride = 'OSFX', kCmdGlobalMIDIOverride = 'OMID', + kCmdGlobalMT32Override = 'OM32', kCmdGlobalVolumeOverride = 'OVOL', kCmdChooseSoundFontCmd = 'chsf', @@ -87,8 +89,8 @@ enum { */ class DomainEditTextWidget : public EditTextWidget { public: - DomainEditTextWidget(GuiObject *boss, const String &name, const String &text) - : EditTextWidget(boss, name, text) { + DomainEditTextWidget(GuiObject *boss, const String &name, const String &text, const char *tooltip = 0) + : EditTextWidget(boss, name, text, tooltip) { } protected: @@ -143,6 +145,7 @@ protected: CheckboxWidget *_globalGraphicsOverride; CheckboxWidget *_globalAudioOverride; CheckboxWidget *_globalMIDIOverride; + CheckboxWidget *_globalMT32Override; CheckboxWidget *_globalVolumeOverride; }; @@ -166,30 +169,31 @@ EditGameDialog::EditGameDialog(const String &domain, const String &desc) // // 1) The game tab // - tab->addTab("Game"); + tab->addTab(_("Game")); // GUI: Label & edit widget for the game ID - new StaticTextWidget(tab, "GameOptions_Game.Id", "ID:"); - _domainWidget = new DomainEditTextWidget(tab, "GameOptions_Game.Domain", _domain); + new StaticTextWidget(tab, "GameOptions_Game.Id", _("ID:"), _("Short game identifier used for referring to savegames and running the game from the command line")); + _domainWidget = new DomainEditTextWidget(tab, "GameOptions_Game.Domain", _domain, _("Short game identifier used for referring to savegames and running the game from the command line")); // GUI: Label & edit widget for the description - new StaticTextWidget(tab, "GameOptions_Game.Name", "Name:"); - _descriptionWidget = new EditTextWidget(tab, "GameOptions_Game.Desc", description); + new StaticTextWidget(tab, "GameOptions_Game.Name", _("Name:"), _("Full title of the game")); + _descriptionWidget = new EditTextWidget(tab, "GameOptions_Game.Desc", description, _("Full title of the game")); // Language popup - _langPopUpDesc = new StaticTextWidget(tab, "GameOptions_Game.LangPopupDesc", "Language:"); - _langPopUp = new PopUpWidget(tab, "GameOptions_Game.LangPopup"); - _langPopUp->appendEntry("<default>"); - _langPopUp->appendEntry(""); + _langPopUpDesc = new StaticTextWidget(tab, "GameOptions_Game.LangPopupDesc", _("Language:"), _("Language of the game. This will not turn your Spanish game version into English")); + _langPopUp = new PopUpWidget(tab, "GameOptions_Game.LangPopup", _("Language of the game. This will not turn your Spanish game version into English")); + _langPopUp->appendEntry(_("<default>"), 0); + _langPopUp->appendEntry("", 0); const Common::LanguageDescription *l = Common::g_languages; for (; l->code; ++l) { - _langPopUp->appendEntry(l->description, l->id); + if (checkGameGUIOptionLanguage(l->id, _guioptionsString)) + _langPopUp->appendEntry(l->description, l->id); } // Platform popup - _platformPopUpDesc = new StaticTextWidget(tab, "GameOptions_Game.PlatformPopupDesc", "Platform:"); - _platformPopUp = new PopUpWidget(tab, "GameOptions_Game.PlatformPopup"); - _platformPopUp->appendEntry("<default>"); + _platformPopUpDesc = new StaticTextWidget(tab, "GameOptions_Game.PlatformPopupDesc", _("Platform:"), _("Platform the game was originally designed for")); + _platformPopUp = new PopUpWidget(tab, "GameOptions_Game.PlatformPopup", _("Platform the game was originally designed for")); + _platformPopUp->appendEntry(_("<default>")); _platformPopUp->appendEntry(""); const Common::PlatformDescription *p = Common::g_platforms; for (; p->code; ++p) { @@ -197,39 +201,39 @@ EditGameDialog::EditGameDialog(const String &domain, const String &desc) } // - // 3) The graphics tab + // 2) The graphics tab // - _graphicsTabId = tab->addTab(g_system->getOverlayWidth() > 320 ? "Graphics" : "GFX"); + _graphicsTabId = tab->addTab(g_system->getOverlayWidth() > 320 ? _("Graphics") : _("GFX")); - _globalGraphicsOverride = new CheckboxWidget(tab, "GameOptions_Graphics.EnableTabCheckbox", "Override global graphic settings", kCmdGlobalGraphicsOverride, 0); + _globalGraphicsOverride = new CheckboxWidget(tab, "GameOptions_Graphics.EnableTabCheckbox", _("Override global graphic settings"), 0, kCmdGlobalGraphicsOverride); addGraphicControls(tab, "GameOptions_Graphics."); // - // 4) The audio tab + // 3) The audio tab // - tab->addTab("Audio"); + tab->addTab(_("Audio")); - _globalAudioOverride = new CheckboxWidget(tab, "GameOptions_Audio.EnableTabCheckbox", "Override global audio settings", kCmdGlobalAudioOverride, 0); + _globalAudioOverride = new CheckboxWidget(tab, "GameOptions_Audio.EnableTabCheckbox", _("Override global audio settings"), 0, kCmdGlobalAudioOverride); addAudioControls(tab, "GameOptions_Audio."); addSubtitleControls(tab, "GameOptions_Audio."); // - // 5) The volume tab + // 4) The volume tab // - tab->addTab("Volume"); + tab->addTab(_("Volume")); - _globalVolumeOverride = new CheckboxWidget(tab, "GameOptions_Volume.EnableTabCheckbox", "Override global volume settings", kCmdGlobalVolumeOverride, 0); + _globalVolumeOverride = new CheckboxWidget(tab, "GameOptions_Volume.EnableTabCheckbox", _("Override global volume settings"), 0, kCmdGlobalVolumeOverride); addVolumeControls(tab, "GameOptions_Volume."); // - // 6) The MIDI tab + // 5) The MIDI tab // - tab->addTab("MIDI"); + tab->addTab(_("MIDI")); - _globalMIDIOverride = new CheckboxWidget(tab, "GameOptions_MIDI.EnableTabCheckbox", "Override global MIDI settings", kCmdGlobalMIDIOverride, 0); + _globalMIDIOverride = new CheckboxWidget(tab, "GameOptions_MIDI.EnableTabCheckbox", _("Override global MIDI settings"), 0, kCmdGlobalMIDIOverride); if (_guioptions & Common::GUIO_NOMIDI) _globalMIDIOverride->setEnabled(false); @@ -237,32 +241,44 @@ EditGameDialog::EditGameDialog(const String &domain, const String &desc) addMIDIControls(tab, "GameOptions_MIDI."); // - // 2) The 'Path' tab + // 6) The MT-32 tab // - tab->addTab("Paths"); + tab->addTab(_("MT-32")); + + _globalMT32Override = new CheckboxWidget(tab, "GameOptions_MT32.EnableTabCheckbox", _("Override global MT-32 settings"), 0, kCmdGlobalMT32Override); + + //if (_guioptions & Common::GUIO_NOMIDI) + // _globalMT32Override->setEnabled(false); + + addMT32Controls(tab, "GameOptions_MT32."); + + // + // 7) The Paths tab + // + tab->addTab(_("Paths")); // These buttons have to be extra wide, or the text will be truncated // in the small version of the GUI. // GUI: Button + Label for the game path - new ButtonWidget(tab, "GameOptions_Paths.Gamepath", "Game Path:", kCmdGameBrowser, 0); + new ButtonWidget(tab, "GameOptions_Paths.Gamepath", _("Game Path:"), 0, kCmdGameBrowser); _gamePathWidget = new StaticTextWidget(tab, "GameOptions_Paths.GamepathText", gamePath); // GUI: Button + Label for the additional path - new ButtonWidget(tab, "GameOptions_Paths.Extrapath", "Extra Path:", kCmdExtraBrowser, 0); - _extraPathWidget = new StaticTextWidget(tab, "GameOptions_Paths.ExtrapathText", extraPath); + new ButtonWidget(tab, "GameOptions_Paths.Extrapath", _("Extra Path:"), _("Specifies path to additional data used the game"), kCmdExtraBrowser); + _extraPathWidget = new StaticTextWidget(tab, "GameOptions_Paths.ExtrapathText", extraPath, _("Specifies path to additional data used the game")); // GUI: Button + Label for the save path - new ButtonWidget(tab, "GameOptions_Paths.Savepath", "Save Path:", kCmdSaveBrowser, 0); - _savePathWidget = new StaticTextWidget(tab, "GameOptions_Paths.SavepathText", savePath); + new ButtonWidget(tab, "GameOptions_Paths.Savepath", _("Save Path:"), _("Specifies where your savegames are put"), kCmdSaveBrowser); + _savePathWidget = new StaticTextWidget(tab, "GameOptions_Paths.SavepathText", savePath, _("Specifies where your savegames are put")); // Activate the first tab tab->setActiveTab(0); _tabWidget = tab; // Add OK & Cancel buttons - new ButtonWidget(this, "GameOptions.Cancel", "Cancel", kCloseCmd, 0); - new ButtonWidget(this, "GameOptions.Ok", "OK", kOKCmd, 0); + new ButtonWidget(this, "GameOptions.Cancel", _("Cancel"), 0, kCloseCmd); + new ButtonWidget(this, "GameOptions.Ok", _("OK"), 0, kOKCmd); } void EditGameDialog::open() { @@ -270,12 +286,12 @@ void EditGameDialog::open() { String extraPath(ConfMan.get("extrapath", _domain)); if (extraPath.empty() || !ConfMan.hasKey("extrapath", _domain)) { - _extraPathWidget->setLabel("None"); + _extraPathWidget->setLabel(_("None")); } String savePath(ConfMan.get("savepath", _domain)); if (savePath.empty() || !ConfMan.hasKey("savepath", _domain)) { - _savePathWidget->setLabel("Default"); + _savePathWidget->setLabel(_("Default")); } int sel, i; @@ -303,24 +319,25 @@ void EditGameDialog::open() { e = ConfMan.hasKey("soundfont", _domain) || ConfMan.hasKey("multi_midi", _domain) || - ConfMan.hasKey("native_mt32", _domain) || - ConfMan.hasKey("enable_gs", _domain) || ConfMan.hasKey("midi_gain", _domain); _globalMIDIOverride->setState(e); + e = ConfMan.hasKey("native_mt32", _domain) || + ConfMan.hasKey("enable_gs", _domain); + _globalMT32Override->setState(e); + // TODO: game path - const Common::LanguageDescription *l = Common::g_languages; const Common::Language lang = Common::parseLanguage(ConfMan.get("language", _domain)); - sel = 0; if (ConfMan.hasKey("language", _domain)) { - for (i = 0; l->code; ++l, ++i) { - if (lang == l->id) - sel = i + 2; - } + _langPopUp->setSelectedTag(lang); + } + + if (_langPopUp->numEntries() <= 3) { // If only one language is avaliable + _langPopUpDesc->setEnabled(false); + _langPopUp->setEnabled(false); } - _langPopUp->setSelected(sel); const Common::PlatformDescription *p = Common::g_platforms; @@ -349,11 +366,11 @@ void EditGameDialog::close() { ConfMan.set("path", gamePath, _domain); String extraPath(_extraPathWidget->getLabel()); - if (!extraPath.empty() && (extraPath != "None")) + if (!extraPath.empty() && (extraPath != _("None"))) ConfMan.set("extrapath", extraPath, _domain); String savePath(_savePathWidget->getLabel()); - if (!savePath.empty() && (savePath != "Default")) + if (!savePath.empty() && (savePath != _("Default"))) ConfMan.set("savepath", savePath, _domain); Common::Platform platform = (Common::Platform)_platformPopUp->getSelectedTag(); @@ -382,19 +399,23 @@ void EditGameDialog::handleCommand(CommandSender *sender, uint32 cmd, uint32 dat setMIDISettingsState(data != 0); draw(); break; + case kCmdGlobalMT32Override: + setMT32SettingsState(data != 0); + draw(); + break; case kCmdGlobalVolumeOverride: setVolumeSettingsState(data != 0); draw(); break; case kCmdChooseSoundFontCmd: { - BrowserDialog browser("Select SoundFont", false); + BrowserDialog browser(_("Select SoundFont"), false); if (browser.runModal() > 0) { // User made this choice... Common::FSNode file(browser.getResult()); _soundFont->setLabel(file.getPath()); - if (!file.getPath().empty() && (file.getPath() != "None")) + if (!file.getPath().empty() && (file.getPath() != _("None"))) _soundFontClearButton->setEnabled(true); else _soundFontClearButton->setEnabled(false); @@ -406,7 +427,7 @@ void EditGameDialog::handleCommand(CommandSender *sender, uint32 cmd, uint32 dat // Change path for the game case kCmdGameBrowser: { - BrowserDialog browser("Select directory with game data", true); + BrowserDialog browser(_("Select directory with game data"), true); if (browser.runModal() > 0) { // User made his choice... Common::FSNode dir(browser.getResult()); @@ -424,7 +445,7 @@ void EditGameDialog::handleCommand(CommandSender *sender, uint32 cmd, uint32 dat // Change path for extra game data (eg, using sword cutscenes when playing via CD) case kCmdExtraBrowser: { - BrowserDialog browser("Select additional game directory", true); + BrowserDialog browser(_("Select additional game directory"), true); if (browser.runModal() > 0) { // User made his choice... Common::FSNode dir(browser.getResult()); @@ -436,7 +457,7 @@ void EditGameDialog::handleCommand(CommandSender *sender, uint32 cmd, uint32 dat } // Change path for stored save game (perm and temp) data case kCmdSaveBrowser: { - BrowserDialog browser("Select directory for saved games", true); + BrowserDialog browser(_("Select directory for saved games"), true); if (browser.runModal() > 0) { // User made his choice... Common::FSNode dir(browser.getResult()); @@ -455,7 +476,7 @@ void EditGameDialog::handleCommand(CommandSender *sender, uint32 cmd, uint32 dat || newDomain.hasPrefix("_") || newDomain == ConfigManager::kApplicationDomain || ConfMan.hasGameDomain(newDomain)) { - MessageDialog alert("This game ID is already taken. Please choose another one."); + MessageDialog alert(_("This game ID is already taken. Please choose another one.")); alert.runModal(); return; } @@ -496,39 +517,39 @@ LauncherDialog::LauncherDialog() new StaticTextWidget(this, "Launcher.Version", gScummVMFullVersion); #endif - new ButtonWidget(this, "Launcher.QuitButton", "Quit", kQuitCmd, 'Q'); - new ButtonWidget(this, "Launcher.AboutButton", "About...", kAboutCmd, 'B'); - new ButtonWidget(this, "Launcher.OptionsButton", "Options...", kOptionsCmd, 'O'); + new ButtonWidget(this, "Launcher.QuitButton", _("~Q~uit"), _("Quit ScummVM"), kQuitCmd); + new ButtonWidget(this, "Launcher.AboutButton", _("A~b~out..."), _("About ScummVM"), kAboutCmd); + new ButtonWidget(this, "Launcher.OptionsButton", _("~O~ptions..."), _("Change global ScummVM options"), kOptionsCmd); _startButton = - new ButtonWidget(this, "Launcher.StartButton", "Start", kStartCmd, 'S'); + new ButtonWidget(this, "Launcher.StartButton", _("~S~tart"), _("Start selected game"), kStartCmd); _loadButton = - new ButtonWidget(this, "Launcher.LoadGameButton", "Load...", kLoadGameCmd, 'L'); + new ButtonWidget(this, "Launcher.LoadGameButton", _("~L~oad..."), _("Load savegame for selected game"), kLoadGameCmd); // Above the lowest button rows: two more buttons (directly below the list box) _addButton = - new ButtonWidget(this, "Launcher.AddGameButton", "Add Game...", kAddGameCmd, 'A'); + new ButtonWidget(this, "Launcher.AddGameButton", _("~A~dd Game..."), _("Hold Shift for Mass Add"), kAddGameCmd); _editButton = - new ButtonWidget(this, "Launcher.EditGameButton", "Edit Game...", kEditGameCmd, 'E'); + new ButtonWidget(this, "Launcher.EditGameButton", _("~E~dit Game..."), _("Change game options"), kEditGameCmd); _removeButton = - new ButtonWidget(this, "Launcher.RemoveGameButton", "Remove Game", kRemoveGameCmd, 'R'); + new ButtonWidget(this, "Launcher.RemoveGameButton", _("~R~emove Game"), _("Remove game from the list. The game data files stay intact"), kRemoveGameCmd); // Search box _searchDesc = 0; #ifndef DISABLE_FANCY_THEMES _searchPic = 0; if (g_gui.xmlEval()->getVar("Globals.ShowSearchPic") == 1 && g_gui.theme()->supportsImages()) { - _searchPic = new GraphicsWidget(this, "Launcher.SearchPic"); + _searchPic = new GraphicsWidget(this, "Launcher.SearchPic", _("Search in game list")); _searchPic->setGfx(g_gui.theme()->getImageSurface(ThemeEngine::kImageSearch)); } else #endif - _searchDesc = new StaticTextWidget(this, "Launcher.SearchDesc", "Search:"); + _searchDesc = new StaticTextWidget(this, "Launcher.SearchDesc", _("Search:")); - _searchWidget = new EditTextWidget(this, "Launcher.Search", _search, kSearchCmd); - _searchClearButton = new ButtonWidget(this, "Launcher.SearchClearButton", "C", kSearchClearCmd, 0); + _searchWidget = new EditTextWidget(this, "Launcher.Search", _search, 0, kSearchCmd); + _searchClearButton = new ButtonWidget(this, "Launcher.SearchClearButton", "C", _("Clear value"), kSearchClearCmd); // Add list with game titles - _list = new ListWidget(this, "Launcher.GameList", kListSearchCmd); + _list = new ListWidget(this, "Launcher.GameList", 0, kListSearchCmd); _list->setEditable(false); _list->setNumberingMode(kListNumberingOff); @@ -544,10 +565,10 @@ LauncherDialog::LauncherDialog() updateButtons(); // Create file browser dialog - _browser = new BrowserDialog("Select directory with game data", true); + _browser = new BrowserDialog(_("Select directory with game data"), true); // Create Load dialog - _loadDialog = new SaveLoadChooser("Load game:", "Load"); + _loadDialog = new SaveLoadChooser(_("Load game:"), _("Load")); } void LauncherDialog::selectTarget(const String &target) { @@ -619,8 +640,12 @@ void LauncherDialog::updateListing() { description = g.description(); } - if (description.empty()) - description = "Unknown (target " + iter->_key + ", gameid " + gameid + ")"; + if (description.empty()) { + char tmp[200]; + + snprintf(tmp, 200, "Unknown (target %s, gameid %s)", iter->_key.c_str(), gameid.c_str()); + description = tmp; + } if (!gameid.empty() && !description.empty()) { // Insert the game into the launcher list @@ -652,8 +677,8 @@ void LauncherDialog::addGame() { const bool massAdd = (modifiers & Common::KBD_SHIFT) != 0; if (massAdd) { - MessageDialog alert("Do you really want to run the mass game detector? " - "This could potentially add a huge number of games.", "Yes", "No"); + MessageDialog alert(_("Do you really want to run the mass game detector? " + "This could potentially add a huge number of games."), _("Yes"), _("No")); if (alert.runModal() == GUI::kMessageOK && _browser->runModal() > 0) { MassAddDialog massAddDlg(_browser->getResult()); @@ -700,7 +725,7 @@ void LauncherDialog::addGame() { Common::FSNode dir(_browser->getResult()); Common::FSList files; if (!dir.getChildren(files, Common::FSNode::kListAll)) { - MessageDialog alert("ScummVM couldn't open the specified directory!"); + MessageDialog alert(_("ScummVM couldn't open the specified directory!")); alert.runModal(); return; } @@ -712,7 +737,7 @@ void LauncherDialog::addGame() { int idx; if (candidates.empty()) { // No game was found in the specified directory - MessageDialog alert("ScummVM could not find any game in the specified directory!"); + MessageDialog alert(_("ScummVM could not find any game in the specified directory!")); alert.runModal(); idx = -1; @@ -726,7 +751,7 @@ void LauncherDialog::addGame() { for (idx = 0; idx < (int)candidates.size(); idx++) list.push_back(candidates[idx].description()); - ChooserDialog dialog("Pick the game:"); + ChooserDialog dialog(_("Pick the game:")); dialog.setList(list); idx = dialog.runModal(); } @@ -802,7 +827,7 @@ Common::String addGameToConf(const GameDescriptor &result) { } void LauncherDialog::removeGame(int item) { - MessageDialog alert("Do you really want to remove this game configuration?", "Yes", "No"); + MessageDialog alert(_("Do you really want to remove this game configuration?"), _("Yes"), _("No")); if (alert.runModal() == GUI::kMessageOK) { // Remove the currently selected game from the list @@ -865,11 +890,11 @@ void LauncherDialog::loadGame(int item) { } } else { MessageDialog dialog - ("This game does not support loading games from the launcher.", "OK"); + (_("This game does not support loading games from the launcher."), _("OK")); dialog.runModal(); } } else { - MessageDialog dialog("ScummVM could not find any engine capable of running the selected game!", "OK"); + MessageDialog dialog(_("ScummVM could not find any engine capable of running the selected game!"), _("OK")); dialog.runModal(); } } @@ -981,8 +1006,8 @@ void LauncherDialog::updateButtons() { int modifiers = g_system->getEventManager()->getModifierState(); const bool massAdd = (modifiers & Common::KBD_SHIFT) != 0; const char *newAddButtonLabel = massAdd - ? "Mass Add..." - : "Add Game..."; + ? _("Mass Add...") + : _("Add Game..."); if (_addButton->getLabel() != newAddButtonLabel) _addButton->setLabel(newAddButtonLabel); @@ -1029,7 +1054,7 @@ void LauncherDialog::reflowLayout() { } } else { if (!_searchDesc) - _searchDesc = new StaticTextWidget(this, "Launcher.SearchDesc", "Search:"); + _searchDesc = new StaticTextWidget(this, "Launcher.SearchDesc", _("Search:")); if (_searchPic) { removeWidget(_searchPic); |