More work on the ROM browse feature. It can now be dynamically (re)set

from within the Launcher options.  The previous 'Reload' button now
serves a dual role.  While in browse mode, the button is renamed as
'Go Up' and serves as a previous directory command.  While not in browse
mode, it's renamed as 'Reload' and reloads the current file-to-propname
mapping.

Also added 'rombrowse' commandline argument (true/false) to select either
browse mode (true) or not (false).


git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@1031 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
This commit is contained in:
stephena 2006-03-09 17:04:01 +00:00
parent 6bfabf0e15
commit 0578b45112
5 changed files with 58 additions and 29 deletions

View File

@ -13,7 +13,7 @@
// See the file "license" for information on usage and redistribution of
// this file, and for a DISCLAIMER OF ALL WARRANTIES.
//
// $Id: Settings.cxx,v 1.79 2006-03-06 02:26:16 stephena Exp $
// $Id: Settings.cxx,v 1.80 2006-03-09 17:04:01 stephena Exp $
//============================================================================
#include <cassert>
@ -76,6 +76,7 @@ Settings::Settings(OSystem* osystem)
setInternal("sssingle", "false");
setInternal("romdir", "");
setInternal("rombrowse", "false");
setInternal("lastrom", "");
setInternal("modtime", ""); // romdir last modification time
}

View File

@ -13,7 +13,7 @@
// See the file "license" for information on usage and redistribution of
// this file, and for a DISCLAIMER OF ALL WARRANTIES.
//
// $Id: LauncherDialog.cxx,v 1.44 2006-03-09 00:29:52 stephena Exp $
// $Id: LauncherDialog.cxx,v 1.45 2006-03-09 17:04:01 stephena Exp $
//
// Based on code from ScummVM - Scumm Interpreter
// Copyright (C) 2002-2004 The ScummVM project
@ -45,8 +45,8 @@ LauncherDialog::LauncherDialog(OSystem* osystem, DialogContainer* parent,
int x, int y, int w, int h)
: Dialog(osystem, parent, x, y, w, h),
myStartButton(NULL),
myRelPrevButton(NULL),
myOptionsButton(NULL),
myReloadButton(NULL),
myQuitButton(NULL),
myList(NULL),
myGameList(NULL),
@ -100,44 +100,44 @@ LauncherDialog::LauncherDialog(OSystem* osystem, DialogContainer* parent,
xpos = 10; ypos += myNote->getHeight() + 4;
#ifndef MAC_OSX
myStartButton = new ButtonWidget(this, font, xpos, ypos, bwidth, bheight,
"Play", kStartCmd, 'S');
"Play", kStartCmd, 0);
myStartButton->setEditable(true);
wid.push_back(myStartButton);
xpos += bwidth + 8;
myRelPrevButton = new ButtonWidget(this, font, xpos, ypos, bwidth, bheight,
"", kRelPrevCmd, 0);
myRelPrevButton->setEditable(true);
wid.push_back(myRelPrevButton);
xpos += bwidth + 8;
myOptionsButton = new ButtonWidget(this, font, xpos, ypos, bwidth, bheight,
"Options", kOptionsCmd, 'O');
"Options", kOptionsCmd, 0);
myOptionsButton->setEditable(true);
wid.push_back(myOptionsButton);
xpos += bwidth + 8;
myReloadButton = new ButtonWidget(this, font, xpos, ypos, bwidth, bheight,
"Reload", kReloadCmd, 'R');
myReloadButton->setEditable(true);
wid.push_back(myReloadButton);
xpos += bwidth + 8;
myQuitButton = new ButtonWidget(this, font, xpos, ypos, bwidth, bheight,
"Quit", kQuitCmd, 'Q');
"Quit", kQuitCmd, 0);
myQuitButton->setEditable(true);
wid.push_back(myQuitButton);
xpos += bwidth + 8;
mySelectedItem = 0; // Highlight 'Play' button
#else
myQuitButton = new ButtonWidget(this, font, xpos, ypos, bwidth, bheight,
"Quit", kQuitCmd, 'Q');
"Quit", kQuitCmd, 0);
myQuitButton->setEditable(true);
wid.push_back(myQuitButton);
xpos += bwidth + 8;
myOptionsButton = new ButtonWidget(this, font, xpos, ypos, bwidth, bheight,
"Options", kOptionsCmd, 'O');
"Options", kOptionsCmd, 0);
myOptionsButton->setEditable(true);
wid.push_back(myOptionsButton);
xpos += bwidth + 8;
myReloadButton = new ButtonWidget(this, font, xpos, ypos, bwidth, bheight,
"Reload", kReloadCmd, 'R');
myReloadButton->setEditable(true);
wid.push_back(myReloadButton);
myRel_PrevButton = new ButtonWidget(this, font, xpos, ypos, bwidth, bheight,
"", kRelPrevCmd, 0);
myRel_PrevButton->setEditable(true);
wid.push_back(myRel_PrevButton);
xpos += bwidth + 8;
myStartButton = new ButtonWidget(this, font, xpos, ypos, bwidth, bheight,
"Play", kStartCmd, 'Q');
"Play", kStartCmd, 0);
myStartButton->setEditable(true);
wid.push_back(myStartButton);
xpos += bwidth + 8;
@ -154,6 +154,10 @@ LauncherDialog::LauncherDialog(OSystem* osystem, DialogContainer* parent,
myGameList = new GameList();
addToFocusList(wid);
// (De)activate browse mode
myBrowseModeFlag = instance()->settings().getBool("rombrowse");
myRelPrevButton->setLabel(myBrowseModeFlag ? "Go Up" : "Reload");
}
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
@ -178,8 +182,8 @@ void LauncherDialog::loadConfig()
void LauncherDialog::enableButtons(bool enable)
{
myStartButton->setEnabled(enable);
myRelPrevButton->setEnabled(enable);
myOptionsButton->setEnabled(enable);
myReloadButton->setEnabled(enable);
myQuitButton->setEnabled(enable);
}
@ -509,9 +513,13 @@ void LauncherDialog::handleCommand(CommandSender* sender, int cmd,
parent()->addDialog(myOptions);
break;
case kReloadCmd:
updateListing(true); // force a reload from disk
case kRelPrevCmd:
{
FilesystemNode dir(myCurrentDir);
myCurrentDir = dir.getParent().path();
updateListing(!myBrowseModeFlag); // Force full update in non-browse mode
break;
}
case kListSelectionChangedCmd:
item = myList->getSelected();
@ -525,9 +533,15 @@ void LauncherDialog::handleCommand(CommandSender* sender, int cmd,
break;
case kRomDirChosenCmd:
myCurrentDir = instance()->settings().getString("romdir");
updateListing();
break;
case kBrowseChangedCmd:
myBrowseModeFlag = instance()->settings().getBool("rombrowse");
myRelPrevButton->setLabel(myBrowseModeFlag ? "Go Up" : "Reload");
break;
default:
Dialog::handleCommand(sender, cmd, data, 0);
}

View File

@ -13,7 +13,7 @@
// See the file "license" for information on usage and redistribution of
// this file, and for a DISCLAIMER OF ALL WARRANTIES.
//
// $Id: LauncherDialog.hxx,v 1.16 2006-03-09 00:29:52 stephena Exp $
// $Id: LauncherDialog.hxx,v 1.17 2006-03-09 17:04:01 stephena Exp $
//
// Based on code from ScummVM - Scumm Interpreter
// Copyright (C) 2002-2004 The ScummVM project
@ -39,7 +39,8 @@ enum {
kChooseRomDirCmd = 'roms', // rom select
kChooseSnapDirCmd = 'snps', // snap select
kRomDirChosenCmd = 'romc', // rom chosen
kSnapDirChosenCmd = 'snpc' // snap chosen
kSnapDirChosenCmd = 'snpc', // snap chosen
kBrowseChangedCmd = 'broc' // browse mode toggled
};
class LauncherDialog : public Dialog
@ -61,8 +62,8 @@ class LauncherDialog : public Dialog
protected:
ButtonWidget* myStartButton;
ButtonWidget* myRelPrevButton;
ButtonWidget* myOptionsButton;
ButtonWidget* myReloadButton;
ButtonWidget* myQuitButton;
StringListWidget* myList;
@ -88,8 +89,8 @@ class LauncherDialog : public Dialog
enum {
kStartCmd = 'STRT',
kRelPrevCmd = 'REPV',
kOptionsCmd = 'OPTI',
kReloadCmd = 'RELO',
kQuitCmd = 'QUIT'
};
};

View File

@ -13,7 +13,7 @@
// See the file "license" for information on usage and redistribution of
// this file, and for a DISCLAIMER OF ALL WARRANTIES.
//
// $Id: LauncherOptionsDialog.cxx,v 1.14 2006-02-22 17:38:04 stephena Exp $
// $Id: LauncherOptionsDialog.cxx,v 1.15 2006-03-09 17:04:01 stephena Exp $
//
// Based on code from ScummVM - Scumm Interpreter
// Copyright (C) 2002-2004 The ScummVM project
@ -59,11 +59,16 @@ LauncherOptionsDialog::LauncherOptionsDialog(
_w - xpos - 10, font.getLineHeight(),
"", kTextAlignLeft);
// Use ROM browse mode
xpos = 30; ypos += myRomPath->getHeight() + 8;
myBrowseCheckbox = new CheckboxWidget(myTab, font, xpos, ypos,
"Browse folders");
// 2) The snapshot settings tab
myTab->addTab(" Snapshot Settings ");
// Snapshot path
xpos = 15;
xpos = 15; ypos = vBorder + 5;
new ButtonWidget(myTab, font, xpos, ypos, bwidth, bheight, "Path",
kChooseSnapDirCmd, 0);
xpos += bwidth + 20;
@ -82,7 +87,7 @@ LauncherOptionsDialog::LauncherOptionsDialog(
mySnapTypePopup->appendEntry("md5sum", 2);
// Snapshot single or multiple saves
xpos = 30; ypos += mySnapTypePopup->getHeight() + 8;
xpos = 30; ypos += mySnapTypePopup->getHeight() + 5;
mySnapSingleCheckbox = new CheckboxWidget(myTab, font, xpos, ypos,
"Multiple snapshots");
@ -127,6 +132,9 @@ void LauncherOptionsDialog::loadConfig()
s = instance()->settings().getString("romdir");
myRomPath->setLabel(s);
b = instance()->settings().getBool("rombrowse");
myBrowseCheckbox->setState(b);
s = instance()->settings().getString("ssdir");
mySnapPath->setLabel(s);
@ -153,6 +161,9 @@ void LauncherOptionsDialog::saveConfig()
s = myRomPath->getLabel();
instance()->settings().setString("romdir", s);
b = myBrowseCheckbox->getState();
instance()->settings().setBool("rombrowse", b);
s = mySnapPath->getLabel();
instance()->settings().setString("ssdir", s);
@ -195,6 +206,7 @@ void LauncherOptionsDialog::handleCommand(CommandSender* sender, int cmd,
case kOKCmd:
saveConfig();
close();
sendCommand(kBrowseChangedCmd, 0, 0); // Call this before refreshing ROMs
sendCommand(kRomDirChosenCmd, 0, 0); // Let the boss know romdir has changed
break;

View File

@ -13,7 +13,7 @@
// See the file "license" for information on usage and redistribution of
// this file, and for a DISCLAIMER OF ALL WARRANTIES.
//
// $Id: LauncherOptionsDialog.hxx,v 1.8 2006-02-22 17:38:04 stephena Exp $
// $Id: LauncherOptionsDialog.hxx,v 1.9 2006-03-09 17:04:01 stephena Exp $
//
// Based on code from ScummVM - Scumm Interpreter
// Copyright (C) 2002-2004 The ScummVM project
@ -53,6 +53,7 @@ class LauncherOptionsDialog : public Dialog, public CommandSender
// Rom path controls
StaticTextWidget* myRomPath;
CheckboxWidget* myBrowseCheckbox;
// Snapshot controls
StaticTextWidget* mySnapPath;