mirror of https://github.com/stella-emu/stella.git
Refactored snapshot-related UI code into a new 'Snapshot Settings' dialog,
since it was getting too unwieldy for 'Config Paths', and didn't properly belong there anyway. git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2751 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
This commit is contained in:
parent
f01bd88cfb
commit
125d7542d5
|
@ -22,7 +22,7 @@
|
|||
|
||||
#include <cstdlib>
|
||||
|
||||
#define STELLA_VERSION "3.9_beta1"
|
||||
#define STELLA_VERSION "3.9_beta2"
|
||||
#define STELLA_BUILD atoi("$Rev$" + 6)
|
||||
|
||||
#endif
|
||||
|
|
|
@ -15,9 +15,6 @@
|
|||
// this file, and for a DISCLAIMER OF ALL WARRANTIES.
|
||||
//
|
||||
// $Id$
|
||||
//
|
||||
// Based on code from ScummVM - Scumm Interpreter
|
||||
// Copyright (C) 2002-2004 The ScummVM project
|
||||
//============================================================================
|
||||
|
||||
#include "bspf.hxx"
|
||||
|
@ -29,10 +26,10 @@
|
|||
#include "PopUpWidget.hxx"
|
||||
#include "Settings.hxx"
|
||||
|
||||
#include "FileSnapDialog.hxx"
|
||||
#include "ConfigPathDialog.hxx"
|
||||
|
||||
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||
FileSnapDialog::FileSnapDialog(
|
||||
ConfigPathDialog::ConfigPathDialog(
|
||||
OSystem* osystem, DialogContainer* parent,
|
||||
const GUI::Font& font, GuiObject* boss,
|
||||
int max_w, int max_h)
|
||||
|
@ -43,7 +40,7 @@ FileSnapDialog::FileSnapDialog(
|
|||
{
|
||||
const int lineHeight = font.getLineHeight(),
|
||||
fontWidth = font.getMaxCharWidth(),
|
||||
buttonWidth = font.getStringWidth("Snapshot load path:") + 20,
|
||||
buttonWidth = font.getStringWidth("Properties file:") + 20,
|
||||
buttonHeight = font.getLineHeight() + 4;
|
||||
const int vBorder = 8;
|
||||
int xpos, ypos;
|
||||
|
@ -52,7 +49,7 @@ FileSnapDialog::FileSnapDialog(
|
|||
|
||||
// Set real dimensions
|
||||
_w = 56 * fontWidth + 8;
|
||||
_h = 13 * (lineHeight + 4) + 10;
|
||||
_h = 9 * (lineHeight + 4) + 10;
|
||||
|
||||
xpos = vBorder; ypos = vBorder;
|
||||
|
||||
|
@ -66,28 +63,8 @@ FileSnapDialog::FileSnapDialog(
|
|||
_w - xpos - 10, lineHeight, "");
|
||||
wid.push_back(myRomPath);
|
||||
|
||||
// Snapshot path (save files)
|
||||
xpos = vBorder; ypos += romButton->getHeight() + 3;
|
||||
b = new ButtonWidget(this, font, xpos, ypos, buttonWidth, buttonHeight,
|
||||
"Snapshot save path:", kChooseSnapSaveDirCmd);
|
||||
wid.push_back(b);
|
||||
xpos += buttonWidth + 10;
|
||||
mySnapSavePath = new EditTextWidget(this, font, xpos, ypos + 2,
|
||||
_w - xpos - 10, lineHeight, "");
|
||||
wid.push_back(mySnapSavePath);
|
||||
|
||||
// Snapshot path (load files)
|
||||
xpos = vBorder; ypos += romButton->getHeight() + 3;
|
||||
b = new ButtonWidget(this, font, xpos, ypos, buttonWidth, buttonHeight,
|
||||
"Snapshot load path:", kChooseSnapLoadDirCmd);
|
||||
wid.push_back(b);
|
||||
xpos += buttonWidth + 10;
|
||||
mySnapLoadPath = new EditTextWidget(this, font, xpos, ypos + 2,
|
||||
_w - xpos - 10, lineHeight, "");
|
||||
wid.push_back(mySnapLoadPath);
|
||||
|
||||
// Cheat file
|
||||
xpos = vBorder; ypos += b->getHeight() + 3;
|
||||
xpos = vBorder; ypos += romButton->getHeight() + 3;
|
||||
b = new ButtonWidget(this, font, xpos, ypos, buttonWidth, buttonHeight,
|
||||
"Cheat file:", kChooseCheatFileCmd);
|
||||
wid.push_back(b);
|
||||
|
@ -136,37 +113,6 @@ FileSnapDialog::FileSnapDialog(
|
|||
_w - xpos - 10, lineHeight, "");
|
||||
wid.push_back(myNVRamPath);
|
||||
|
||||
// Snapshot single or multiple saves
|
||||
xpos = 30; ypos += b->getHeight() + 5;
|
||||
mySnapSingle = new CheckboxWidget(this, font, xpos, ypos,
|
||||
"Overwrite snapshots");
|
||||
wid.push_back(mySnapSingle);
|
||||
|
||||
// Snapshot in 1x mode (ignore scaling)
|
||||
xpos += mySnapSingle->getWidth() + 20;
|
||||
mySnap1x = new CheckboxWidget(this, font, xpos, ypos,
|
||||
"Snapshot in 1x mode");
|
||||
wid.push_back(mySnap1x);
|
||||
|
||||
// Snapshot interval (continuous mode)
|
||||
VariantList items;
|
||||
items.clear();
|
||||
items.push_back("1 second", "1");
|
||||
items.push_back("2 seconds", "2");
|
||||
items.push_back("3 seconds", "3");
|
||||
items.push_back("4 seconds", "4");
|
||||
items.push_back("5 seconds", "5");
|
||||
items.push_back("6 seconds", "6");
|
||||
items.push_back("7 seconds", "7");
|
||||
items.push_back("8 seconds", "8");
|
||||
items.push_back("9 seconds", "9");
|
||||
items.push_back("10 seconds", "10");
|
||||
xpos = 30; ypos += b->getHeight();
|
||||
mySnapInterval = new PopUpWidget(this, font, xpos, ypos,
|
||||
font.getStringWidth("10 seconds"), lineHeight,
|
||||
items, "Continuous snapshot interval: ");
|
||||
wid.push_back(mySnapInterval);
|
||||
|
||||
// Add Defaults, OK and Cancel buttons
|
||||
b = new ButtonWidget(this, font, 10, _h - buttonHeight - 10,
|
||||
font.getStringWidth("Defaults") + 20, buttonHeight,
|
||||
|
@ -188,43 +134,32 @@ FileSnapDialog::FileSnapDialog(
|
|||
}
|
||||
|
||||
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||
FileSnapDialog::~FileSnapDialog()
|
||||
ConfigPathDialog::~ConfigPathDialog()
|
||||
{
|
||||
delete myBrowser;
|
||||
}
|
||||
|
||||
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||
void FileSnapDialog::loadConfig()
|
||||
void ConfigPathDialog::loadConfig()
|
||||
{
|
||||
const Settings& settings = instance().settings();
|
||||
myRomPath->setText(settings.getString("romdir"));
|
||||
mySnapSavePath->setText(settings.getString("snapsavedir"));
|
||||
mySnapLoadPath->setText(settings.getString("snaploaddir"));
|
||||
myCheatFile->setText(settings.getString("cheatfile"));
|
||||
myPaletteFile->setText(settings.getString("palettefile"));
|
||||
myPropsFile->setText(settings.getString("propsfile"));
|
||||
myNVRamPath->setText(settings.getString("nvramdir"));
|
||||
myStatePath->setText(settings.getString("statedir"));
|
||||
mySnapSingle->setState(settings.getBool("sssingle"));
|
||||
mySnap1x->setState(settings.getBool("ss1x"));
|
||||
mySnapInterval->setSelected(instance().settings().getString("ssinterval"), "2");
|
||||
}
|
||||
|
||||
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||
void FileSnapDialog::saveConfig()
|
||||
void ConfigPathDialog::saveConfig()
|
||||
{
|
||||
instance().settings().setValue("romdir", myRomPath->getText());
|
||||
instance().settings().setValue("snapsavedir", mySnapSavePath->getText());
|
||||
instance().settings().setValue("snaploaddir", mySnapLoadPath->getText());
|
||||
instance().settings().setValue("cheatfile", myCheatFile->getText());
|
||||
instance().settings().setValue("palettefile", myPaletteFile->getText());
|
||||
instance().settings().setValue("propsfile", myPropsFile->getText());
|
||||
instance().settings().setValue("statedir", myStatePath->getText());
|
||||
instance().settings().setValue("nvramdir", myNVRamPath->getText());
|
||||
instance().settings().setValue("sssingle", mySnapSingle->getState());
|
||||
instance().settings().setValue("ss1x", mySnap1x->getState());
|
||||
instance().settings().setValue("ssinterval",
|
||||
mySnapInterval->getSelectedTag().toString());
|
||||
|
||||
// Flush changes to disk and inform the OSystem
|
||||
instance().saveConfig();
|
||||
|
@ -232,7 +167,7 @@ void FileSnapDialog::saveConfig()
|
|||
}
|
||||
|
||||
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||
void FileSnapDialog::setDefaults()
|
||||
void ConfigPathDialog::setDefaults()
|
||||
{
|
||||
FilesystemNode node;
|
||||
const string& basedir = instance().baseDir();
|
||||
|
@ -240,9 +175,6 @@ void FileSnapDialog::setDefaults()
|
|||
node = FilesystemNode("~");
|
||||
myRomPath->setText(node.getShortPath());
|
||||
|
||||
mySnapSavePath->setText(instance().defaultSnapSaveDir());
|
||||
mySnapLoadPath->setText(instance().defaultSnapLoadDir());
|
||||
|
||||
const string& cheatfile = basedir + "stella.cht";
|
||||
node = FilesystemNode(cheatfile);
|
||||
myCheatFile->setText(node.getShortPath());
|
||||
|
@ -262,14 +194,10 @@ void FileSnapDialog::setDefaults()
|
|||
const string& statedir = basedir + "state";
|
||||
node = FilesystemNode(statedir);
|
||||
myStatePath->setText(node.getShortPath());
|
||||
|
||||
mySnapSingle->setState(false);
|
||||
mySnap1x->setState(false);
|
||||
mySnapInterval->setSelected("2", "2");
|
||||
}
|
||||
|
||||
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||
void FileSnapDialog::handleCommand(CommandSender* sender, int cmd,
|
||||
void ConfigPathDialog::handleCommand(CommandSender* sender, int cmd,
|
||||
int data, int id)
|
||||
{
|
||||
switch (cmd)
|
||||
|
@ -277,8 +205,8 @@ void FileSnapDialog::handleCommand(CommandSender* sender, int cmd,
|
|||
case kOKCmd:
|
||||
saveConfig();
|
||||
close();
|
||||
if(myIsGlobal)
|
||||
sendCommand(kRomDirChosenCmd, 0, 0); // Let the boss know romdir has changed
|
||||
if(myIsGlobal) // Let the boss know romdir has changed
|
||||
sendCommand(LauncherDialog::kRomDirChosenCmd, 0, 0);
|
||||
break;
|
||||
|
||||
case kDefaultsCmd:
|
||||
|
@ -287,17 +215,7 @@ void FileSnapDialog::handleCommand(CommandSender* sender, int cmd,
|
|||
|
||||
case kChooseRomDirCmd:
|
||||
myBrowser->show("Select ROM directory:", myRomPath->getText(),
|
||||
BrowserDialog::Directories, kRomDirChosenCmd);
|
||||
break;
|
||||
|
||||
case kChooseSnapSaveDirCmd:
|
||||
myBrowser->show("Select snapshot save directory:", mySnapSavePath->getText(),
|
||||
BrowserDialog::Directories, kSnapSaveDirChosenCmd);
|
||||
break;
|
||||
|
||||
case kChooseSnapLoadDirCmd:
|
||||
myBrowser->show("Select snapshot load directory:", mySnapLoadPath->getText(),
|
||||
BrowserDialog::Directories, kSnapLoadDirChosenCmd);
|
||||
BrowserDialog::Directories, LauncherDialog::kRomDirChosenCmd);
|
||||
break;
|
||||
|
||||
case kChooseCheatFileCmd:
|
||||
|
@ -325,56 +243,32 @@ void FileSnapDialog::handleCommand(CommandSender* sender, int cmd,
|
|||
BrowserDialog::Directories, kStateDirChosenCmd);
|
||||
break;
|
||||
|
||||
case kRomDirChosenCmd:
|
||||
{
|
||||
case LauncherDialog::kRomDirChosenCmd:
|
||||
myRomPath->setText(myBrowser->getResult().getShortPath());
|
||||
break;
|
||||
}
|
||||
|
||||
case kSnapSaveDirChosenCmd:
|
||||
{
|
||||
mySnapSavePath->setText(myBrowser->getResult().getShortPath());
|
||||
break;
|
||||
}
|
||||
|
||||
case kSnapLoadDirChosenCmd:
|
||||
{
|
||||
mySnapLoadPath->setText(myBrowser->getResult().getShortPath());
|
||||
break;
|
||||
}
|
||||
|
||||
case kCheatFileChosenCmd:
|
||||
{
|
||||
myCheatFile->setText(myBrowser->getResult().getShortPath());
|
||||
break;
|
||||
}
|
||||
|
||||
case kPaletteFileChosenCmd:
|
||||
{
|
||||
myPaletteFile->setText(myBrowser->getResult().getShortPath());
|
||||
break;
|
||||
}
|
||||
|
||||
case kPropsFileChosenCmd:
|
||||
{
|
||||
myPropsFile->setText(myBrowser->getResult().getShortPath());
|
||||
break;
|
||||
}
|
||||
|
||||
case kNVRamDirChosenCmd:
|
||||
{
|
||||
myNVRamPath->setText(myBrowser->getResult().getShortPath());
|
||||
break;
|
||||
}
|
||||
|
||||
case kStateDirChosenCmd:
|
||||
{
|
||||
myStatePath->setText(myBrowser->getResult().getShortPath());
|
||||
break;
|
||||
}
|
||||
|
||||
case kReloadRomDirCmd:
|
||||
sendCommand(kReloadRomDirCmd, 0, 0);
|
||||
case LauncherDialog::kReloadRomDirCmd:
|
||||
sendCommand(LauncherDialog::kReloadRomDirCmd, 0, 0);
|
||||
break;
|
||||
|
||||
default:
|
|
@ -15,13 +15,10 @@
|
|||
// this file, and for a DISCLAIMER OF ALL WARRANTIES.
|
||||
//
|
||||
// $Id$
|
||||
//
|
||||
// Based on code from ScummVM - Scumm Interpreter
|
||||
// Copyright (C) 2002-2004 The ScummVM project
|
||||
//============================================================================
|
||||
|
||||
#ifndef FILE_SNAP_DIALOG_HXX
|
||||
#define FILE_SNAP_DIALOG_HXX
|
||||
#ifndef CONFIG_PATH_DIALOG_HXX
|
||||
#define CONFIG_PATH_DIALOG_HXX
|
||||
|
||||
class OSystem;
|
||||
class GuiObject;
|
||||
|
@ -36,13 +33,13 @@ class StaticTextWidget;
|
|||
#include "Dialog.hxx"
|
||||
#include "Command.hxx"
|
||||
|
||||
class FileSnapDialog : public Dialog, public CommandSender
|
||||
class ConfigPathDialog : public Dialog, public CommandSender
|
||||
{
|
||||
public:
|
||||
FileSnapDialog(OSystem* osystem, DialogContainer* parent,
|
||||
const GUI::Font& font, GuiObject* boss,
|
||||
int max_w, int max_h);
|
||||
~FileSnapDialog();
|
||||
ConfigPathDialog(OSystem* osystem, DialogContainer* parent,
|
||||
const GUI::Font& font, GuiObject* boss,
|
||||
int max_w, int max_h);
|
||||
~ConfigPathDialog();
|
||||
|
||||
void handleCommand(CommandSender* sender, int cmd, int data, int id);
|
||||
|
||||
|
@ -58,8 +55,6 @@ class FileSnapDialog : public Dialog, public CommandSender
|
|||
kChooseCheatFileCmd = 'LOcf', // cheatfile (stella.cht)
|
||||
kChoosePaletteFileCmd = 'LOpf', // palette file (stella.pal)
|
||||
kChoosePropsFileCmd = 'LOpr', // properties file (stella.pro)
|
||||
kChooseSnapSaveDirCmd = 'LOss', // snapshot dir (save files)
|
||||
kChooseSnapLoadDirCmd = 'LOsl', // snapshot dir (load files)
|
||||
kChooseNVRamDirCmd = 'LOnv', // nvram (flash/eeprom) dir
|
||||
kStateDirChosenCmd = 'LOsc', // state dir changed
|
||||
kCheatFileChosenCmd = 'LOcc', // cheatfile changed
|
||||
|
@ -77,13 +72,6 @@ class FileSnapDialog : public Dialog, public CommandSender
|
|||
EditTextWidget* myCheatFile;
|
||||
EditTextWidget* myPaletteFile;
|
||||
EditTextWidget* myPropsFile;
|
||||
EditTextWidget* mySnapSavePath;
|
||||
EditTextWidget* mySnapLoadPath;
|
||||
|
||||
// Other snapshot settings
|
||||
CheckboxWidget* mySnapSingle;
|
||||
CheckboxWidget* mySnap1x;
|
||||
PopUpWidget* mySnapInterval;
|
||||
|
||||
// Indicates if this dialog is used for global (vs. in-game) settings
|
||||
bool myIsGlobal;
|
|
@ -564,14 +564,6 @@ void LauncherDialog::handleCommand(CommandSender* sender, int cmd,
|
|||
updateListing();
|
||||
break;
|
||||
|
||||
case kSnapSaveDirChosenCmd:
|
||||
// Stub just in case we need it
|
||||
break;
|
||||
|
||||
case kSnapLoadDirChosenCmd:
|
||||
// Stub just in case we need it
|
||||
break;
|
||||
|
||||
case kReloadRomDirCmd:
|
||||
updateListing();
|
||||
break;
|
||||
|
|
|
@ -47,17 +47,16 @@ class StringListWidget;
|
|||
#include "Stack.hxx"
|
||||
#include "MessageBox.hxx"
|
||||
|
||||
// These must be accessible from dialogs created by this class
|
||||
enum {
|
||||
kRomDirChosenCmd = 'romc', // rom chosen
|
||||
kSnapSaveDirChosenCmd = 'snsc', // snap chosen (save files)
|
||||
kSnapLoadDirChosenCmd = 'snlc', // snap chosen (load files)
|
||||
kReloadRomDirCmd = 'rdrl', // reload the current listing
|
||||
kReloadFiltersCmd = 'rlfl' // reload filtering options and current listing
|
||||
};
|
||||
|
||||
class LauncherDialog : public Dialog
|
||||
{
|
||||
public:
|
||||
// These must be accessible from dialogs created by this class
|
||||
enum {
|
||||
kRomDirChosenCmd = 'romc', // rom chosen
|
||||
kReloadRomDirCmd = 'rdrl', // reload the current listing
|
||||
kReloadFiltersCmd = 'rlfl' // reload filtering options and current listing
|
||||
};
|
||||
|
||||
public:
|
||||
LauncherDialog(OSystem* osystem, DialogContainer* parent,
|
||||
int x, int y, int w, int h);
|
||||
|
|
|
@ -191,7 +191,7 @@ void LauncherFilterDialog::saveConfig()
|
|||
}
|
||||
|
||||
// Let parent know about the changes
|
||||
sendCommand(kReloadFiltersCmd, 0, 0);
|
||||
sendCommand(LauncherDialog::kReloadFiltersCmd, 0, 0);
|
||||
}
|
||||
|
||||
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||
|
|
|
@ -29,7 +29,8 @@
|
|||
#include "AudioDialog.hxx"
|
||||
#include "InputDialog.hxx"
|
||||
#include "UIDialog.hxx"
|
||||
#include "FileSnapDialog.hxx"
|
||||
#include "SnapshotDialog.hxx"
|
||||
#include "ConfigPathDialog.hxx"
|
||||
#include "RomAuditDialog.hxx"
|
||||
#include "GameInfoDialog.hxx"
|
||||
#include "LoggerDialog.hxx"
|
||||
|
@ -55,7 +56,8 @@ OptionsDialog::OptionsDialog(OSystem* osystem, DialogContainer* parent,
|
|||
myAudioDialog(NULL),
|
||||
myInputDialog(NULL),
|
||||
myUIDialog(NULL),
|
||||
myFileSnapDialog(NULL),
|
||||
mySnapshotDialog(NULL),
|
||||
myConfigPathDialog(NULL),
|
||||
myGameInfoDialog(NULL),
|
||||
myCheatCodeDialog(NULL),
|
||||
myLoggerDialog(NULL),
|
||||
|
@ -64,34 +66,37 @@ OptionsDialog::OptionsDialog(OSystem* osystem, DialogContainer* parent,
|
|||
myIsGlobal(global)
|
||||
{
|
||||
const GUI::Font& font = instance().font();
|
||||
const int buttonWidth = font.getStringWidth("Game Properties") + 20,
|
||||
const int buttonWidth = font.getStringWidth("Snapshot Settings") + 20,
|
||||
buttonHeight = font.getLineHeight() + 6,
|
||||
rowHeight = font.getLineHeight() + 10;
|
||||
|
||||
_w = 2 * buttonWidth + 30;
|
||||
_h = 6 * rowHeight + 15;
|
||||
_h = 7 * rowHeight + 15;
|
||||
|
||||
int xoffset = 10, yoffset = 10;
|
||||
WidgetArray wid;
|
||||
ButtonWidget* b = NULL;
|
||||
|
||||
myVideoSettingsButton = addODButton("Video Settings", kVidCmd);
|
||||
wid.push_back(myVideoSettingsButton);
|
||||
b = addODButton("Video Settings", kVidCmd);
|
||||
wid.push_back(b);
|
||||
|
||||
myAudioSettingsButton = addODButton("Audio Settings", kAudCmd);
|
||||
b = addODButton("Audio Settings", kAudCmd);
|
||||
#ifndef SOUND_SUPPORT
|
||||
myAudioSettingsButton->clearFlags(WIDGET_ENABLED);
|
||||
b->clearFlags(WIDGET_ENABLED);
|
||||
#endif
|
||||
wid.push_back(myAudioSettingsButton);
|
||||
wid.push_back(b);
|
||||
|
||||
b = addODButton("Input Settings", kInptCmd);
|
||||
wid.push_back(b);
|
||||
|
||||
myUIButton = addODButton("UI Settings", kUsrIfaceCmd);
|
||||
wid.push_back(myUIButton);
|
||||
b = addODButton("UI Settings", kUsrIfaceCmd);
|
||||
wid.push_back(b);
|
||||
|
||||
myFileSnapButton = addODButton("Config Paths", kFileSnapCmd);
|
||||
wid.push_back(myFileSnapButton);
|
||||
b = addODButton("Snapshot Settings", kSnapCmd);
|
||||
wid.push_back(b);
|
||||
|
||||
b = addODButton("Config Paths", kFileSnapCmd);
|
||||
wid.push_back(b);
|
||||
|
||||
myRomAuditButton = addODButton("Audit ROMs", kAuditCmd);
|
||||
wid.push_back(myRomAuditButton);
|
||||
|
@ -108,33 +113,34 @@ OptionsDialog::OptionsDialog(OSystem* osystem, DialogContainer* parent,
|
|||
#endif
|
||||
wid.push_back(myCheatCodeButton);
|
||||
|
||||
myLoggerButton = addODButton("System Logs", kLoggerCmd);
|
||||
wid.push_back(myLoggerButton);
|
||||
b = addODButton("System Logs", kLoggerCmd);
|
||||
wid.push_back(b);
|
||||
|
||||
myHelpButton = addODButton("Help", kHelpCmd);
|
||||
wid.push_back(myHelpButton);
|
||||
b = addODButton("Help", kHelpCmd);
|
||||
wid.push_back(b);
|
||||
|
||||
myAboutButton = addODButton("About", kAboutCmd);
|
||||
wid.push_back(myAboutButton);
|
||||
b = addODButton("About", kAboutCmd);
|
||||
wid.push_back(b);
|
||||
|
||||
b = addODButton("Exit Menu", kExitCmd);
|
||||
wid.push_back(b);
|
||||
addCancelWidget(b);
|
||||
|
||||
// Now create all the dialogs attached to each menu button
|
||||
myVideoDialog = new VideoDialog(osystem, parent, font, max_w, max_h);
|
||||
myAudioDialog = new AudioDialog(osystem, parent, font);
|
||||
myInputDialog = new InputDialog(osystem, parent, font, max_w, max_h);
|
||||
myUIDialog = new UIDialog(osystem, parent, font);
|
||||
myFileSnapDialog = new FileSnapDialog(osystem, parent, font, boss, max_w, max_h);
|
||||
myVideoDialog = new VideoDialog(osystem, parent, font, max_w, max_h);
|
||||
myAudioDialog = new AudioDialog(osystem, parent, font);
|
||||
myInputDialog = new InputDialog(osystem, parent, font, max_w, max_h);
|
||||
myUIDialog = new UIDialog(osystem, parent, font);
|
||||
mySnapshotDialog = new SnapshotDialog(osystem, parent, font, boss, max_w, max_h);
|
||||
myConfigPathDialog = new ConfigPathDialog(osystem, parent, font, boss, max_w, max_h);
|
||||
myRomAuditDialog = new RomAuditDialog(osystem, parent, font, max_w, max_h);
|
||||
myGameInfoDialog = new GameInfoDialog(osystem, parent, font, this);
|
||||
#ifdef CHEATCODE_SUPPORT
|
||||
myCheatCodeDialog = new CheatCodeDialog(osystem, parent, font);
|
||||
#endif
|
||||
myLoggerDialog = new LoggerDialog(osystem, parent, font, max_w, max_h);
|
||||
myHelpDialog = new HelpDialog(osystem, parent, font);
|
||||
myAboutDialog = new AboutDialog(osystem, parent, font);
|
||||
myLoggerDialog = new LoggerDialog(osystem, parent, font, max_w, max_h);
|
||||
myHelpDialog = new HelpDialog(osystem, parent, font);
|
||||
myAboutDialog = new AboutDialog(osystem, parent, font);
|
||||
|
||||
addToFocusList(wid);
|
||||
|
||||
|
@ -147,9 +153,6 @@ OptionsDialog::OptionsDialog(OSystem* osystem, DialogContainer* parent,
|
|||
{
|
||||
myRomAuditButton->clearFlags(WIDGET_ENABLED);
|
||||
}
|
||||
#ifdef _WIN32_WCE
|
||||
myAudioSettingsButton->clearFlags(WIDGET_ENABLED); // not honored in wince port
|
||||
#endif
|
||||
}
|
||||
|
||||
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||
|
@ -159,7 +162,8 @@ OptionsDialog::~OptionsDialog()
|
|||
delete myAudioDialog;
|
||||
delete myInputDialog;
|
||||
delete myUIDialog;
|
||||
delete myFileSnapDialog;
|
||||
delete mySnapshotDialog;
|
||||
delete myConfigPathDialog;
|
||||
delete myRomAuditDialog;
|
||||
delete myGameInfoDialog;
|
||||
#ifdef CHEATCODE_SUPPORT
|
||||
|
@ -214,8 +218,12 @@ void OptionsDialog::handleCommand(CommandSender* sender, int cmd,
|
|||
myUIDialog->open();
|
||||
break;
|
||||
|
||||
case kSnapCmd:
|
||||
mySnapshotDialog->open();
|
||||
break;
|
||||
|
||||
case kFileSnapCmd:
|
||||
myFileSnapDialog->open();
|
||||
myConfigPathDialog->open();
|
||||
break;
|
||||
|
||||
case kAuditCmd:
|
||||
|
|
|
@ -30,7 +30,8 @@ class VideoDialog;
|
|||
class AudioDialog;
|
||||
class InputDialog;
|
||||
class UIDialog;
|
||||
class FileSnapDialog;
|
||||
class SnapshotDialog;
|
||||
class ConfigPathDialog;
|
||||
class RomAuditDialog;
|
||||
class GameInfoDialog;
|
||||
class CheatCodeDialog;
|
||||
|
@ -54,28 +55,22 @@ class OptionsDialog : public Dialog
|
|||
virtual void handleCommand(CommandSender* sender, int cmd, int data, int id);
|
||||
|
||||
private:
|
||||
VideoDialog* myVideoDialog;
|
||||
AudioDialog* myAudioDialog;
|
||||
InputDialog* myInputDialog;
|
||||
UIDialog* myUIDialog;
|
||||
FileSnapDialog* myFileSnapDialog;
|
||||
RomAuditDialog* myRomAuditDialog;
|
||||
GameInfoDialog* myGameInfoDialog;
|
||||
CheatCodeDialog* myCheatCodeDialog;
|
||||
LoggerDialog* myLoggerDialog;
|
||||
HelpDialog* myHelpDialog;
|
||||
AboutDialog* myAboutDialog;
|
||||
VideoDialog* myVideoDialog;
|
||||
AudioDialog* myAudioDialog;
|
||||
InputDialog* myInputDialog;
|
||||
UIDialog* myUIDialog;
|
||||
SnapshotDialog* mySnapshotDialog;
|
||||
ConfigPathDialog* myConfigPathDialog;
|
||||
RomAuditDialog* myRomAuditDialog;
|
||||
GameInfoDialog* myGameInfoDialog;
|
||||
CheatCodeDialog* myCheatCodeDialog;
|
||||
LoggerDialog* myLoggerDialog;
|
||||
HelpDialog* myHelpDialog;
|
||||
AboutDialog* myAboutDialog;
|
||||
|
||||
ButtonWidget* myVideoSettingsButton;
|
||||
ButtonWidget* myAudioSettingsButton;
|
||||
ButtonWidget* myUIButton;
|
||||
ButtonWidget* myFileSnapButton;
|
||||
ButtonWidget* myRomAuditButton;
|
||||
ButtonWidget* myGameInfoButton;
|
||||
ButtonWidget* myCheatCodeButton;
|
||||
ButtonWidget* myLoggerButton;
|
||||
ButtonWidget* myHelpButton;
|
||||
ButtonWidget* myAboutButton;
|
||||
|
||||
// Indicates if this dialog is used for global (vs. in-game) settings
|
||||
bool myIsGlobal;
|
||||
|
@ -85,6 +80,7 @@ class OptionsDialog : public Dialog
|
|||
kAudCmd = 'AUDO',
|
||||
kInptCmd = 'INPT',
|
||||
kUsrIfaceCmd = 'URIF',
|
||||
kSnapCmd = 'SNAP',
|
||||
kFileSnapCmd = 'FLSN',
|
||||
kAuditCmd = 'RAUD',
|
||||
kInfoCmd = 'INFO',
|
||||
|
|
|
@ -0,0 +1,197 @@
|
|||
//============================================================================
|
||||
//
|
||||
// SSSS tt lll lll
|
||||
// SS SS tt ll ll
|
||||
// SS tttttt eeee ll ll aaaa
|
||||
// SSSS tt ee ee ll ll aa
|
||||
// SS tt eeeeee ll ll aaaaa -- "An Atari 2600 VCS Emulator"
|
||||
// SS SS tt ee ll ll aa aa
|
||||
// SSSS ttt eeeee llll llll aaaaa
|
||||
//
|
||||
// Copyright (c) 1995-2013 by Bradford W. Mott, Stephen Anthony
|
||||
// and the Stella Team
|
||||
//
|
||||
// See the file "License.txt" for information on usage and redistribution of
|
||||
// this file, and for a DISCLAIMER OF ALL WARRANTIES.
|
||||
//
|
||||
// $Id$
|
||||
//============================================================================
|
||||
|
||||
#include "bspf.hxx"
|
||||
|
||||
#include "BrowserDialog.hxx"
|
||||
#include "EditTextWidget.hxx"
|
||||
#include "FSNode.hxx"
|
||||
#include "LauncherDialog.hxx"
|
||||
#include "PopUpWidget.hxx"
|
||||
#include "Settings.hxx"
|
||||
|
||||
#include "SnapshotDialog.hxx"
|
||||
|
||||
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||
SnapshotDialog::SnapshotDialog(
|
||||
OSystem* osystem, DialogContainer* parent,
|
||||
const GUI::Font& font, GuiObject* boss,
|
||||
int max_w, int max_h)
|
||||
: Dialog(osystem, parent, 0, 0, 0, 0),
|
||||
myBrowser(NULL)
|
||||
{
|
||||
const int lineHeight = font.getLineHeight(),
|
||||
fontWidth = font.getMaxCharWidth(),
|
||||
buttonWidth = font.getStringWidth("Snapshot load path:") + 20,
|
||||
buttonHeight = font.getLineHeight() + 4;
|
||||
const int vBorder = 8;
|
||||
int xpos, ypos;
|
||||
WidgetArray wid;
|
||||
ButtonWidget* b;
|
||||
|
||||
// Set real dimensions
|
||||
_w = 56 * fontWidth + 8;
|
||||
_h = 13 * (lineHeight + 4) + 10;
|
||||
|
||||
xpos = vBorder; ypos = vBorder;
|
||||
|
||||
// Snapshot path (save files)
|
||||
b = new ButtonWidget(this, font, xpos, ypos, buttonWidth, buttonHeight,
|
||||
"Snapshot save path:", kChooseSnapSaveDirCmd);
|
||||
wid.push_back(b);
|
||||
xpos += buttonWidth + 10;
|
||||
mySnapSavePath = new EditTextWidget(this, font, xpos, ypos + 2,
|
||||
_w - xpos - 10, lineHeight, "");
|
||||
wid.push_back(mySnapSavePath);
|
||||
|
||||
// Snapshot path (load files)
|
||||
xpos = vBorder; ypos += buttonHeight + 3;
|
||||
b = new ButtonWidget(this, font, xpos, ypos, buttonWidth, buttonHeight,
|
||||
"Snapshot load path:", kChooseSnapLoadDirCmd);
|
||||
wid.push_back(b);
|
||||
xpos += buttonWidth + 10;
|
||||
mySnapLoadPath = new EditTextWidget(this, font, xpos, ypos + 2,
|
||||
_w - xpos - 10, lineHeight, "");
|
||||
wid.push_back(mySnapLoadPath);
|
||||
|
||||
// Snapshot single or multiple saves
|
||||
xpos = 30; ypos += b->getHeight() + 5;
|
||||
mySnapSingle = new CheckboxWidget(this, font, xpos, ypos,
|
||||
"Overwrite snapshots");
|
||||
wid.push_back(mySnapSingle);
|
||||
|
||||
// Snapshot in 1x mode (ignore scaling)
|
||||
xpos += mySnapSingle->getWidth() + 20;
|
||||
mySnap1x = new CheckboxWidget(this, font, xpos, ypos,
|
||||
"Snapshot in 1x mode");
|
||||
wid.push_back(mySnap1x);
|
||||
|
||||
// Snapshot interval (continuous mode)
|
||||
VariantList items;
|
||||
items.clear();
|
||||
items.push_back("1 second", "1");
|
||||
items.push_back("2 seconds", "2");
|
||||
items.push_back("3 seconds", "3");
|
||||
items.push_back("4 seconds", "4");
|
||||
items.push_back("5 seconds", "5");
|
||||
items.push_back("6 seconds", "6");
|
||||
items.push_back("7 seconds", "7");
|
||||
items.push_back("8 seconds", "8");
|
||||
items.push_back("9 seconds", "9");
|
||||
items.push_back("10 seconds", "10");
|
||||
xpos = 30; ypos += b->getHeight();
|
||||
mySnapInterval = new PopUpWidget(this, font, xpos, ypos,
|
||||
font.getStringWidth("10 seconds"), lineHeight,
|
||||
items, "Continuous snapshot interval: ");
|
||||
wid.push_back(mySnapInterval);
|
||||
|
||||
// Add Defaults, OK and Cancel buttons
|
||||
b = new ButtonWidget(this, font, 10, _h - buttonHeight - 10,
|
||||
font.getStringWidth("Defaults") + 20, buttonHeight,
|
||||
"Defaults", kDefaultsCmd);
|
||||
wid.push_back(b);
|
||||
addOKCancelBGroup(wid, font);
|
||||
|
||||
addToFocusList(wid);
|
||||
|
||||
// Create file browser dialog
|
||||
myBrowser = new BrowserDialog(this, font, max_w, max_h);
|
||||
}
|
||||
|
||||
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||
SnapshotDialog::~SnapshotDialog()
|
||||
{
|
||||
delete myBrowser;
|
||||
}
|
||||
|
||||
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||
void SnapshotDialog::loadConfig()
|
||||
{
|
||||
const Settings& settings = instance().settings();
|
||||
mySnapSavePath->setText(settings.getString("snapsavedir"));
|
||||
mySnapLoadPath->setText(settings.getString("snaploaddir"));
|
||||
mySnapSingle->setState(settings.getBool("sssingle"));
|
||||
mySnap1x->setState(settings.getBool("ss1x"));
|
||||
mySnapInterval->setSelected(instance().settings().getString("ssinterval"), "2");
|
||||
}
|
||||
|
||||
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||
void SnapshotDialog::saveConfig()
|
||||
{
|
||||
instance().settings().setValue("snapsavedir", mySnapSavePath->getText());
|
||||
instance().settings().setValue("snaploaddir", mySnapLoadPath->getText());
|
||||
instance().settings().setValue("sssingle", mySnapSingle->getState());
|
||||
instance().settings().setValue("ss1x", mySnap1x->getState());
|
||||
instance().settings().setValue("ssinterval",
|
||||
mySnapInterval->getSelectedTag().toString());
|
||||
|
||||
// Flush changes to disk and inform the OSystem
|
||||
instance().saveConfig();
|
||||
instance().setConfigPaths();
|
||||
}
|
||||
|
||||
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||
void SnapshotDialog::setDefaults()
|
||||
{
|
||||
mySnapSavePath->setText(instance().defaultSnapSaveDir());
|
||||
mySnapLoadPath->setText(instance().defaultSnapLoadDir());
|
||||
|
||||
mySnapSingle->setState(false);
|
||||
mySnap1x->setState(false);
|
||||
mySnapInterval->setSelected("2", "2");
|
||||
}
|
||||
|
||||
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||
void SnapshotDialog::handleCommand(CommandSender* sender, int cmd,
|
||||
int data, int id)
|
||||
{
|
||||
switch (cmd)
|
||||
{
|
||||
case kOKCmd:
|
||||
saveConfig();
|
||||
close();
|
||||
break;
|
||||
|
||||
case kDefaultsCmd:
|
||||
setDefaults();
|
||||
break;
|
||||
|
||||
case kChooseSnapSaveDirCmd:
|
||||
myBrowser->show("Select snapshot save directory:", mySnapSavePath->getText(),
|
||||
BrowserDialog::Directories, kSnapSaveDirChosenCmd);
|
||||
break;
|
||||
|
||||
case kChooseSnapLoadDirCmd:
|
||||
myBrowser->show("Select snapshot load directory:", mySnapLoadPath->getText(),
|
||||
BrowserDialog::Directories, kSnapLoadDirChosenCmd);
|
||||
break;
|
||||
|
||||
case kSnapSaveDirChosenCmd:
|
||||
mySnapSavePath->setText(myBrowser->getResult().getShortPath());
|
||||
break;
|
||||
|
||||
case kSnapLoadDirChosenCmd:
|
||||
mySnapLoadPath->setText(myBrowser->getResult().getShortPath());
|
||||
break;
|
||||
|
||||
default:
|
||||
Dialog::handleCommand(sender, cmd, data, 0);
|
||||
break;
|
||||
}
|
||||
}
|
|
@ -0,0 +1,71 @@
|
|||
//============================================================================
|
||||
//
|
||||
// SSSS tt lll lll
|
||||
// SS SS tt ll ll
|
||||
// SS tttttt eeee ll ll aaaa
|
||||
// SSSS tt ee ee ll ll aa
|
||||
// SS tt eeeeee ll ll aaaaa -- "An Atari 2600 VCS Emulator"
|
||||
// SS SS tt ee ll ll aa aa
|
||||
// SSSS ttt eeeee llll llll aaaaa
|
||||
//
|
||||
// Copyright (c) 1995-2013 by Bradford W. Mott, Stephen Anthony
|
||||
// and the Stella Team
|
||||
//
|
||||
// See the file "License.txt" for information on usage and redistribution of
|
||||
// this file, and for a DISCLAIMER OF ALL WARRANTIES.
|
||||
//
|
||||
// $Id$
|
||||
//============================================================================
|
||||
|
||||
#ifndef SNAPSHOT_DIALOG_HXX
|
||||
#define SNAPSHOT_DIALOG_HXX
|
||||
|
||||
class OSystem;
|
||||
class GuiObject;
|
||||
class DialogContainer;
|
||||
class BrowserDialog;
|
||||
class CheckboxWidget;
|
||||
class PopUpWidget;
|
||||
class EditTextWidget;
|
||||
class SliderWidget;
|
||||
class StaticTextWidget;
|
||||
|
||||
#include "Dialog.hxx"
|
||||
#include "Command.hxx"
|
||||
|
||||
class SnapshotDialog : public Dialog
|
||||
{
|
||||
public:
|
||||
SnapshotDialog(OSystem* osystem, DialogContainer* parent,
|
||||
const GUI::Font& font, GuiObject* boss,
|
||||
int max_w, int max_h);
|
||||
~SnapshotDialog();
|
||||
|
||||
void handleCommand(CommandSender* sender, int cmd, int data, int id);
|
||||
|
||||
private:
|
||||
void loadConfig();
|
||||
void saveConfig();
|
||||
void setDefaults();
|
||||
|
||||
private:
|
||||
enum {
|
||||
kChooseSnapSaveDirCmd = 'LOss', // snapshot dir (save files)
|
||||
kChooseSnapLoadDirCmd = 'LOsl', // snapshot dir (load files)
|
||||
kSnapSaveDirChosenCmd = 'snsc', // snap chosen (save files)
|
||||
kSnapLoadDirChosenCmd = 'snlc' // snap chosen (load files)
|
||||
};
|
||||
|
||||
BrowserDialog* myBrowser;
|
||||
|
||||
// Config paths
|
||||
EditTextWidget* mySnapSavePath;
|
||||
EditTextWidget* mySnapLoadPath;
|
||||
|
||||
// Other snapshot settings
|
||||
CheckboxWidget* mySnapSingle;
|
||||
CheckboxWidget* mySnap1x;
|
||||
PopUpWidget* mySnapInterval;
|
||||
};
|
||||
|
||||
#endif
|
|
@ -14,7 +14,8 @@ MODULE_OBJS := \
|
|||
src/gui/EditTextWidget.o \
|
||||
src/gui/EventMappingWidget.o \
|
||||
src/gui/FileListWidget.o \
|
||||
src/gui/FileSnapDialog.o \
|
||||
src/gui/ConfigPathDialog.o \
|
||||
src/gui/SnapshotDialog.o \
|
||||
src/gui/Font.o \
|
||||
src/gui/GameInfoDialog.o \
|
||||
src/gui/GameList.o \
|
||||
|
|
|
@ -396,7 +396,7 @@ SDLmain.lib
|
|||
<ClCompile Include="..\gui\EditableWidget.cxx" />
|
||||
<ClCompile Include="..\gui\EditTextWidget.cxx" />
|
||||
<ClCompile Include="..\gui\EventMappingWidget.cxx" />
|
||||
<ClCompile Include="..\gui\FileSnapDialog.cxx" />
|
||||
<ClCompile Include="..\gui\ConfigPathDialog.cxx" />
|
||||
<ClCompile Include="..\gui\Font.cxx" />
|
||||
<ClCompile Include="..\gui\GameInfoDialog.cxx" />
|
||||
<ClCompile Include="..\gui\GameList.cxx" />
|
||||
|
@ -651,7 +651,7 @@ SDLmain.lib
|
|||
<ClInclude Include="..\gui\EditableWidget.hxx" />
|
||||
<ClInclude Include="..\gui\EditTextWidget.hxx" />
|
||||
<ClInclude Include="..\gui\EventMappingWidget.hxx" />
|
||||
<ClInclude Include="..\gui\FileSnapDialog.hxx" />
|
||||
<ClInclude Include="..\gui\ConfigPathDialog.hxx" />
|
||||
<ClInclude Include="..\gui\Font.hxx" />
|
||||
<ClInclude Include="..\gui\GameInfoDialog.hxx" />
|
||||
<ClInclude Include="..\gui\GameList.hxx" />
|
||||
|
|
|
@ -405,7 +405,7 @@
|
|||
<ClCompile Include="..\gui\EventMappingWidget.cxx">
|
||||
<Filter>Source Files\gui</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\gui\FileSnapDialog.cxx">
|
||||
<ClCompile Include="..\gui\ConfigPathDialog.cxx">
|
||||
<Filter>Source Files\gui</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\gui\Font.cxx">
|
||||
|
@ -1121,7 +1121,7 @@
|
|||
<ClInclude Include="..\gui\EventMappingWidget.hxx">
|
||||
<Filter>Header Files\gui</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\gui\FileSnapDialog.hxx">
|
||||
<ClInclude Include="..\gui\ConfigPathDialog.hxx">
|
||||
<Filter>Header Files\gui</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\gui\Font.hxx">
|
||||
|
|
Loading…
Reference in New Issue