mirror of https://github.com/stella-emu/stella.git
Added right mouse button context menu to the ROM launcher. For now, it has
three entries: 1) Override properties - temporarily override ROM properties, so that (for example) the left diff switch can be set to 'A' even if its property says to use 'B'. 2) Filter ROM listing - still TODO. 3) Reload ROM listing - functionality was already present with Ctrl-r; this just adds a UI element for it. git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@1592 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
This commit is contained in:
parent
8f59c4a08e
commit
187bec7873
|
@ -25,11 +25,11 @@ X * Make UI 'font-sensitive' and remove all hardcoded dimensions for
|
||||||
* Add option to automatically save snapshots in 1X mode (useful for
|
* Add option to automatically save snapshots in 1X mode (useful for
|
||||||
RomInfoWidget)
|
RomInfoWidget)
|
||||||
|
|
||||||
* A way to override (possibly temporarily) all properties for a ROM, and
|
X * A way to override (possibly temporarily) all properties for a ROM, and
|
||||||
use global ones instead. Tied to the current developer commandline
|
use global ones instead. Tied to the current developer commandline
|
||||||
options, but presented in a GUI (started from ROM launcher).
|
options, but presented in a GUI (started from ROM launcher).
|
||||||
|
|
||||||
* Add infrastructure to show all info gathered from a ROM (similar to what
|
X * Add infrastructure to show all info gathered from a ROM (similar to what
|
||||||
is currently displayed on the commandline). Add a UI part for this, so
|
is currently displayed on the commandline). Add a UI part for this, so
|
||||||
users aren't forced to use the commandline to see it.
|
users aren't forced to use the commandline to see it.
|
||||||
|
|
||||||
|
@ -52,12 +52,10 @@ X * Make UI 'font-sensitive' and remove all hardcoded dimensions for
|
||||||
|
|
||||||
X (4) Reload current listing (possibly tied to a RMB context menu).
|
X (4) Reload current listing (possibly tied to a RMB context menu).
|
||||||
|
|
||||||
(5) Add commandline argument to toggle launcher use.
|
|
||||||
|
|
||||||
* Research lockups in Stay Frosty ROM. Test out sample state file in
|
* Research lockups in Stay Frosty ROM. Test out sample state file in
|
||||||
AtariAge email.
|
AtariAge email.
|
||||||
|
|
||||||
* Fix issue with paddle support in Activision Bridge ROM.
|
* Fix issue with paddle support in Activision Casino ROM.
|
||||||
|
|
||||||
* More support for copy and paste.
|
* More support for copy and paste.
|
||||||
|
|
||||||
|
|
|
@ -13,7 +13,7 @@
|
||||||
// See the file "license" for information on usage and redistribution of
|
// See the file "license" for information on usage and redistribution of
|
||||||
// this file, and for a DISCLAIMER OF ALL WARRANTIES.
|
// this file, and for a DISCLAIMER OF ALL WARRANTIES.
|
||||||
//
|
//
|
||||||
// $Id: BrowserDialog.cxx,v 1.33 2009-01-01 18:13:38 stephena Exp $
|
// $Id: BrowserDialog.cxx,v 1.34 2009-01-02 01:50:03 stephena Exp $
|
||||||
//
|
//
|
||||||
// Based on code from ScummVM - Scumm Interpreter
|
// Based on code from ScummVM - Scumm Interpreter
|
||||||
// Copyright (C) 2002-2004 The ScummVM project
|
// Copyright (C) 2002-2004 The ScummVM project
|
||||||
|
@ -35,7 +35,6 @@
|
||||||
* - to select the data dir for a game
|
* - to select the data dir for a game
|
||||||
* - to select the place where save games are stored
|
* - to select the place where save games are stored
|
||||||
* - others???
|
* - others???
|
||||||
* TODO - make this dialog font sensitive
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
|
|
@ -13,7 +13,7 @@
|
||||||
// See the file "license" for information on usage and redistribution of
|
// See the file "license" for information on usage and redistribution of
|
||||||
// this file, and for a DISCLAIMER OF ALL WARRANTIES.
|
// this file, and for a DISCLAIMER OF ALL WARRANTIES.
|
||||||
//
|
//
|
||||||
// $Id: GameInfoDialog.cxx,v 1.61 2009-01-01 18:13:38 stephena Exp $
|
// $Id: GameInfoDialog.cxx,v 1.62 2009-01-02 01:50:03 stephena Exp $
|
||||||
//
|
//
|
||||||
// Based on code from ScummVM - Scumm Interpreter
|
// Based on code from ScummVM - Scumm Interpreter
|
||||||
// Copyright (C) 2002-2004 The ScummVM project
|
// Copyright (C) 2002-2004 The ScummVM project
|
||||||
|
@ -52,6 +52,12 @@ GameInfoDialog::GameInfoDialog(
|
||||||
WidgetArray wid;
|
WidgetArray wid;
|
||||||
StringMap items, ports, ctrls;
|
StringMap items, ports, ctrls;
|
||||||
|
|
||||||
|
////////////////////////////////////////////////////////////////////
|
||||||
|
// Some of the following items are also present in GlobalPropsDialog
|
||||||
|
// If any changes are ever made here, GlobalPropsDialog should also
|
||||||
|
// be updated accordingly
|
||||||
|
////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
// The tab widget
|
// The tab widget
|
||||||
xpos = 2; ypos = vBorder;
|
xpos = 2; ypos = vBorder;
|
||||||
myTab = new TabWidget(this, font, xpos, ypos, _w - 2*xpos,
|
myTab = new TabWidget(this, font, xpos, ypos, _w - 2*xpos,
|
||||||
|
|
|
@ -13,7 +13,7 @@
|
||||||
// See the file "license" for information on usage and redistribution of
|
// See the file "license" for information on usage and redistribution of
|
||||||
// this file, and for a DISCLAIMER OF ALL WARRANTIES.
|
// this file, and for a DISCLAIMER OF ALL WARRANTIES.
|
||||||
//
|
//
|
||||||
// $Id: GameInfoDialog.hxx,v 1.35 2009-01-01 18:13:38 stephena Exp $
|
// $Id: GameInfoDialog.hxx,v 1.36 2009-01-02 01:50:03 stephena Exp $
|
||||||
//
|
//
|
||||||
// Based on code from ScummVM - Scumm Interpreter
|
// Based on code from ScummVM - Scumm Interpreter
|
||||||
// Copyright (C) 2002-2004 The ScummVM project
|
// Copyright (C) 2002-2004 The ScummVM project
|
||||||
|
@ -34,6 +34,7 @@ class SliderWidget;
|
||||||
#include "Dialog.hxx"
|
#include "Dialog.hxx"
|
||||||
#include "Command.hxx"
|
#include "Command.hxx"
|
||||||
#include "Props.hxx"
|
#include "Props.hxx"
|
||||||
|
#include "StringList.hxx"
|
||||||
|
|
||||||
class GameInfoDialog : public Dialog, public CommandSender
|
class GameInfoDialog : public Dialog, public CommandSender
|
||||||
{
|
{
|
||||||
|
@ -94,13 +95,13 @@ class GameInfoDialog : public Dialog, public CommandSender
|
||||||
kPPBlendChanged = 'PBch'
|
kPPBlendChanged = 'PBch'
|
||||||
};
|
};
|
||||||
|
|
||||||
/** Game properties for currently loaded ROM */
|
// Game properties for currently loaded ROM
|
||||||
Properties myGameProperties;
|
Properties myGameProperties;
|
||||||
|
|
||||||
/** Indicates that we've got a valid properties entry */
|
// Indicates that we've got a valid properties entry
|
||||||
bool myPropertiesLoaded;
|
bool myPropertiesLoaded;
|
||||||
|
|
||||||
/** Indicates that the default properties have been loaded */
|
// Indicates that the default properties have been loaded
|
||||||
bool myDefaultsSelected;
|
bool myDefaultsSelected;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,240 @@
|
||||||
|
//============================================================================
|
||||||
|
//
|
||||||
|
// 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-2009 by Bradford W. Mott and the Stella team
|
||||||
|
//
|
||||||
|
// See the file "license" for information on usage and redistribution of
|
||||||
|
// this file, and for a DISCLAIMER OF ALL WARRANTIES.
|
||||||
|
//
|
||||||
|
// $Id: GlobalPropsDialog.cxx,v 1.1 2009-01-02 01:50:03 stephena Exp $
|
||||||
|
//
|
||||||
|
// Based on code from ScummVM - Scumm Interpreter
|
||||||
|
// Copyright (C) 2002-2004 The ScummVM project
|
||||||
|
//============================================================================
|
||||||
|
|
||||||
|
#include "bspf.hxx"
|
||||||
|
|
||||||
|
#include "Control.hxx"
|
||||||
|
#include "Dialog.hxx"
|
||||||
|
#include "OSystem.hxx"
|
||||||
|
#include "PopUpWidget.hxx"
|
||||||
|
#include "Settings.hxx"
|
||||||
|
#include "StringList.hxx"
|
||||||
|
#include "Widget.hxx"
|
||||||
|
|
||||||
|
#include "GlobalPropsDialog.hxx"
|
||||||
|
|
||||||
|
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
GlobalPropsDialog::
|
||||||
|
GlobalPropsDialog(GuiObject* boss, const GUI::Font& font, Settings& settings,
|
||||||
|
int x, int y, int w, int h)
|
||||||
|
: Dialog(&boss->instance(), &boss->parent(), x, y, w, h),
|
||||||
|
mySettings(settings)
|
||||||
|
{
|
||||||
|
const int lineHeight = font.getLineHeight(),
|
||||||
|
fontHeight = font.getFontHeight(),
|
||||||
|
buttonWidth = font.getStringWidth("Defaults") + 20,
|
||||||
|
buttonHeight = font.getLineHeight() + 4;
|
||||||
|
int xpos, ypos;
|
||||||
|
int lwidth = font.getStringWidth("Right Difficulty: "),
|
||||||
|
pwidth = font.getStringWidth("SB (128-256k SUPERbanking)");
|
||||||
|
WidgetArray wid;
|
||||||
|
StringMap items;
|
||||||
|
|
||||||
|
xpos = 10; ypos = 10;
|
||||||
|
|
||||||
|
////////////////////////////////////////////////////////////////////
|
||||||
|
// The following items are also present in GameInfoDialog
|
||||||
|
// If any changes are ever made here, GameInfoDialog should also
|
||||||
|
// be updated accordingly
|
||||||
|
////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
// Bankswitch type
|
||||||
|
new StaticTextWidget(this, font, xpos, ypos+1, lwidth, fontHeight,
|
||||||
|
"Bankswitch type:", kTextAlignLeft);
|
||||||
|
items.clear();
|
||||||
|
items.push_back("Default", "DEFAULT");
|
||||||
|
items.push_back("Auto-detect", "AUTO-DETECT");
|
||||||
|
items.push_back("0840 (8K ECONObanking)", "0840" );
|
||||||
|
items.push_back("2K (2K Atari)", "2K" );
|
||||||
|
items.push_back("3E (32K Tigervision)", "3E" );
|
||||||
|
items.push_back("3F (512K Tigervision)", "3F" );
|
||||||
|
items.push_back("4A50 (64K 4A50 + ram)", "4A50" );
|
||||||
|
items.push_back("4K (4K Atari)", "4K" );
|
||||||
|
items.push_back("AR (Supercharger)", "AR" );
|
||||||
|
items.push_back("CV (Commavid extra ram)", "CV" );
|
||||||
|
items.push_back("DPC (Pitfall II)", "DPC" );
|
||||||
|
items.push_back("E0 (8K Parker Bros)", "E0" );
|
||||||
|
items.push_back("E7 (16K M-network)", "E7" );
|
||||||
|
items.push_back("F4 (32K Atari)", "F4" );
|
||||||
|
items.push_back("F4SC (32K Atari + ram)", "F4SC" );
|
||||||
|
items.push_back("F6 (16K Atari)", "F6" );
|
||||||
|
items.push_back("F6SC (16K Atari + ram)", "F6SC" );
|
||||||
|
items.push_back("F8 (8K Atari)", "F8" );
|
||||||
|
items.push_back("F8SC (8K Atari + ram)", "F8SC" );
|
||||||
|
items.push_back("FASC (CBS RAM Plus)", "FASC" );
|
||||||
|
items.push_back("FE (8K Decathlon)", "FE" );
|
||||||
|
items.push_back("MB (Dynacom Megaboy)", "MB" );
|
||||||
|
items.push_back("MC (C. Wilkson Megacart)", "MC" );
|
||||||
|
items.push_back("SB (128-256k SUPERbanking)", "SB" );
|
||||||
|
items.push_back("UA (8K UA Ltd.)", "UA" );
|
||||||
|
items.push_back("X07 (64K AtariAge)", "X07" );
|
||||||
|
myBSType = new PopUpWidget(this, font, xpos+lwidth, ypos,
|
||||||
|
pwidth, lineHeight, items, "", 0, 0);
|
||||||
|
wid.push_back(myBSType);
|
||||||
|
ypos += lineHeight + 10;
|
||||||
|
|
||||||
|
// Left difficulty
|
||||||
|
pwidth = font.getStringWidth("Default");
|
||||||
|
new StaticTextWidget(this, font, xpos, ypos+1, lwidth, fontHeight,
|
||||||
|
"Left Difficulty:", kTextAlignLeft);
|
||||||
|
items.clear();
|
||||||
|
items.push_back("Default", "DEFAULT");
|
||||||
|
items.push_back("B", "B");
|
||||||
|
items.push_back("A", "A");
|
||||||
|
myLeftDiff = new PopUpWidget(this, font, xpos+lwidth, ypos,
|
||||||
|
pwidth, lineHeight, items, "", 0, 0);
|
||||||
|
wid.push_back(myLeftDiff);
|
||||||
|
ypos += lineHeight + 5;
|
||||||
|
|
||||||
|
// Right difficulty
|
||||||
|
new StaticTextWidget(this, font, xpos, ypos+1, lwidth, fontHeight,
|
||||||
|
"Right Difficulty:", kTextAlignLeft);
|
||||||
|
// ... use same items as above
|
||||||
|
myRightDiff = new PopUpWidget(this, font, xpos+lwidth, ypos,
|
||||||
|
pwidth, lineHeight, items, "", 0, 0);
|
||||||
|
wid.push_back(myRightDiff);
|
||||||
|
ypos += lineHeight + 5;
|
||||||
|
|
||||||
|
// TV type
|
||||||
|
new StaticTextWidget(this, font, xpos, ypos+1, lwidth, fontHeight,
|
||||||
|
"TV Type:", kTextAlignLeft);
|
||||||
|
items.clear();
|
||||||
|
items.push_back("Default", "DEFAULT");
|
||||||
|
items.push_back("Color", "COLOR");
|
||||||
|
items.push_back("B & W", "BLACKANDWHITE");
|
||||||
|
myTVType = new PopUpWidget(this, font, xpos+lwidth, ypos,
|
||||||
|
pwidth, lineHeight, items, "", 0, 0);
|
||||||
|
wid.push_back(myTVType);
|
||||||
|
ypos += lineHeight + 5;
|
||||||
|
|
||||||
|
xpos = 30; ypos += 10;
|
||||||
|
|
||||||
|
// Start with Select held down
|
||||||
|
myHoldSelect = new CheckboxWidget(this, font, xpos, ypos,
|
||||||
|
"Hold Select down");
|
||||||
|
wid.push_back(myHoldSelect);
|
||||||
|
ypos += lineHeight + 4;
|
||||||
|
|
||||||
|
// Start with Reset held down
|
||||||
|
myHoldReset = new CheckboxWidget(this, font, xpos, ypos,
|
||||||
|
"Hold Reset down");
|
||||||
|
wid.push_back(myHoldReset);
|
||||||
|
ypos += lineHeight + 4;
|
||||||
|
|
||||||
|
// Start with joy button 0 held down
|
||||||
|
myHoldButton0 = new CheckboxWidget(this, font, xpos, ypos,
|
||||||
|
"Hold Button 0 down");
|
||||||
|
wid.push_back(myHoldButton0);
|
||||||
|
|
||||||
|
// Add message concerning usage
|
||||||
|
lwidth = font.getStringWidth("(*) These changes are not saved");
|
||||||
|
new StaticTextWidget(this, font, 10, _h - 2*buttonHeight - 10, lwidth, fontHeight,
|
||||||
|
"(*) These changes are not saved", kTextAlignLeft);
|
||||||
|
|
||||||
|
// Add Defaults, OK and Cancel buttons
|
||||||
|
ButtonWidget* b;
|
||||||
|
b = new ButtonWidget(this, font, 10, _h - buttonHeight - 10,
|
||||||
|
buttonWidth, buttonHeight, "Defaults", kDefaultsCmd);
|
||||||
|
wid.push_back(b);
|
||||||
|
addOKCancelBGroup(wid, font);
|
||||||
|
|
||||||
|
addToFocusList(wid);
|
||||||
|
}
|
||||||
|
|
||||||
|
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
GlobalPropsDialog::~GlobalPropsDialog()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
void GlobalPropsDialog::loadConfig()
|
||||||
|
{
|
||||||
|
myBSType->setSelected(mySettings.getString("bs"), "DEFAULT");
|
||||||
|
myLeftDiff->setSelected(mySettings.getString("ld"), "DEFAULT");
|
||||||
|
myRightDiff->setSelected(mySettings.getString("rd"), "DEFAULT");
|
||||||
|
myTVType->setSelected(mySettings.getString("tv"), "DEFAULT");
|
||||||
|
|
||||||
|
myHoldSelect->setState(mySettings.getBool("holdselect"));
|
||||||
|
myHoldReset->setState(mySettings.getBool("holdreset"));
|
||||||
|
myHoldButton0->setState(mySettings.getBool("holdbutton0"));
|
||||||
|
}
|
||||||
|
|
||||||
|
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
void GlobalPropsDialog::saveConfig()
|
||||||
|
{
|
||||||
|
string s;
|
||||||
|
|
||||||
|
s = myBSType->getSelectedTag();
|
||||||
|
if(s == "DEFAULT") s = "";
|
||||||
|
mySettings.setString("bs", s);
|
||||||
|
|
||||||
|
s = myLeftDiff->getSelectedTag();
|
||||||
|
if(s == "DEFAULT") s = "";
|
||||||
|
mySettings.setString("ld", s);
|
||||||
|
|
||||||
|
s = myRightDiff->getSelectedTag();
|
||||||
|
if(s == "DEFAULT") s = "";
|
||||||
|
mySettings.setString("rd", s);
|
||||||
|
|
||||||
|
s = myTVType->getSelectedTag();
|
||||||
|
if(s == "DEFAULT") s = "";
|
||||||
|
mySettings.setString("tv", s);
|
||||||
|
|
||||||
|
mySettings.setBool("holdselect", myHoldSelect->getState());
|
||||||
|
mySettings.setBool("holdreset", myHoldReset->getState());
|
||||||
|
mySettings.setBool("holdbutton0", myHoldButton0->getState());
|
||||||
|
}
|
||||||
|
|
||||||
|
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
void GlobalPropsDialog::setDefaults()
|
||||||
|
{
|
||||||
|
myBSType->setSelected("DEFAULT", "");
|
||||||
|
myLeftDiff->setSelected("DEFAULT", "");
|
||||||
|
myRightDiff->setSelected("DEFAULT", "");
|
||||||
|
myTVType->setSelected("DEFAULT", "");
|
||||||
|
|
||||||
|
myHoldSelect->setState(false);
|
||||||
|
myHoldReset->setState(false);
|
||||||
|
myHoldButton0->setState(false);
|
||||||
|
|
||||||
|
_dirty = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
void GlobalPropsDialog::handleCommand(CommandSender* sender, int cmd,
|
||||||
|
int data, int id)
|
||||||
|
{
|
||||||
|
switch(cmd)
|
||||||
|
{
|
||||||
|
case kOKCmd:
|
||||||
|
saveConfig();
|
||||||
|
close();
|
||||||
|
break;
|
||||||
|
|
||||||
|
case kDefaultsCmd:
|
||||||
|
setDefaults();
|
||||||
|
break;
|
||||||
|
|
||||||
|
default:
|
||||||
|
Dialog::handleCommand(sender, cmd, data, 0);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,62 @@
|
||||||
|
//============================================================================
|
||||||
|
//
|
||||||
|
// 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-2009 by Bradford W. Mott and the Stella team
|
||||||
|
//
|
||||||
|
// See the file "license" for information on usage and redistribution of
|
||||||
|
// this file, and for a DISCLAIMER OF ALL WARRANTIES.
|
||||||
|
//
|
||||||
|
// $Id: GlobalPropsDialog.hxx,v 1.1 2009-01-02 01:50:03 stephena Exp $
|
||||||
|
//
|
||||||
|
// Based on code from ScummVM - Scumm Interpreter
|
||||||
|
// Copyright (C) 2002-2004 The ScummVM project
|
||||||
|
//============================================================================
|
||||||
|
|
||||||
|
#ifndef GLOBAL_PROPS_DIALOG_HXX
|
||||||
|
#define GLOBAL_PROPS_DIALOG_HXX
|
||||||
|
|
||||||
|
class CommandSender;
|
||||||
|
class DialogContainer;
|
||||||
|
class CheckboxWidget;
|
||||||
|
class PopUpWidget;
|
||||||
|
|
||||||
|
#include "OSystem.hxx"
|
||||||
|
#include "Dialog.hxx"
|
||||||
|
#include "Settings.hxx"
|
||||||
|
#include "bspf.hxx"
|
||||||
|
|
||||||
|
class GlobalPropsDialog : public Dialog
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
GlobalPropsDialog(GuiObject* boss, const GUI::Font& font, Settings& settings,
|
||||||
|
int x, int y, int w, int h);
|
||||||
|
~GlobalPropsDialog();
|
||||||
|
|
||||||
|
private:
|
||||||
|
void loadConfig();
|
||||||
|
void saveConfig();
|
||||||
|
void setDefaults();
|
||||||
|
|
||||||
|
virtual void handleCommand(CommandSender* sender, int cmd, int data, int id);
|
||||||
|
|
||||||
|
private:
|
||||||
|
PopUpWidget* myBSType;
|
||||||
|
PopUpWidget* myLeftDiff;
|
||||||
|
PopUpWidget* myRightDiff;
|
||||||
|
PopUpWidget* myTVType;
|
||||||
|
|
||||||
|
CheckboxWidget* myHoldSelect;
|
||||||
|
CheckboxWidget* myHoldReset;
|
||||||
|
CheckboxWidget* myHoldButton0;
|
||||||
|
|
||||||
|
Settings& mySettings;
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif
|
|
@ -13,7 +13,7 @@
|
||||||
// See the file "license" for information on usage and redistribution of
|
// See the file "license" for information on usage and redistribution of
|
||||||
// this file, and for a DISCLAIMER OF ALL WARRANTIES.
|
// this file, and for a DISCLAIMER OF ALL WARRANTIES.
|
||||||
//
|
//
|
||||||
// $Id: LauncherDialog.cxx,v 1.93 2009-01-01 18:13:38 stephena Exp $
|
// $Id: LauncherDialog.cxx,v 1.94 2009-01-02 01:50:03 stephena Exp $
|
||||||
//
|
//
|
||||||
// Based on code from ScummVM - Scumm Interpreter
|
// Based on code from ScummVM - Scumm Interpreter
|
||||||
// Copyright (C) 2002-2004 The ScummVM project
|
// Copyright (C) 2002-2004 The ScummVM project
|
||||||
|
@ -24,12 +24,14 @@
|
||||||
#include "bspf.hxx"
|
#include "bspf.hxx"
|
||||||
|
|
||||||
#include "BrowserDialog.hxx"
|
#include "BrowserDialog.hxx"
|
||||||
|
#include "ContextMenu.hxx"
|
||||||
#include "DialogContainer.hxx"
|
#include "DialogContainer.hxx"
|
||||||
#include "Dialog.hxx"
|
#include "Dialog.hxx"
|
||||||
#include "FSNode.hxx"
|
#include "FSNode.hxx"
|
||||||
#include "GameList.hxx"
|
#include "GameList.hxx"
|
||||||
#include "MD5.hxx"
|
#include "MD5.hxx"
|
||||||
#include "OptionsDialog.hxx"
|
#include "OptionsDialog.hxx"
|
||||||
|
#include "GlobalPropsDialog.hxx"
|
||||||
#include "OSystem.hxx"
|
#include "OSystem.hxx"
|
||||||
#include "Props.hxx"
|
#include "Props.hxx"
|
||||||
#include "PropsSet.hxx"
|
#include "PropsSet.hxx"
|
||||||
|
@ -52,6 +54,8 @@ LauncherDialog::LauncherDialog(OSystem* osystem, DialogContainer* parent,
|
||||||
myList(NULL),
|
myList(NULL),
|
||||||
myGameList(NULL),
|
myGameList(NULL),
|
||||||
myRomInfoWidget(NULL),
|
myRomInfoWidget(NULL),
|
||||||
|
myMenu(NULL),
|
||||||
|
myGlobalProps(NULL),
|
||||||
mySelectedItem(0)
|
mySelectedItem(0)
|
||||||
{
|
{
|
||||||
const GUI::Font& font = instance().launcherFont();
|
const GUI::Font& font = instance().launcherFont();
|
||||||
|
@ -158,6 +162,19 @@ LauncherDialog::LauncherDialog(OSystem* osystem, DialogContainer* parent,
|
||||||
myGameList = new GameList();
|
myGameList = new GameList();
|
||||||
|
|
||||||
addToFocusList(wid);
|
addToFocusList(wid);
|
||||||
|
|
||||||
|
// Create context menu for ROM list options
|
||||||
|
StringMap l;
|
||||||
|
l.push_back("Override properties", "override");
|
||||||
|
l.push_back("Filter listing", "filter");
|
||||||
|
l.push_back("Reload listing", "reload");
|
||||||
|
myMenu = new ContextMenu(this, font, l);
|
||||||
|
|
||||||
|
// Create global props dialog, which is uses to to temporarily overrride
|
||||||
|
// ROM properties
|
||||||
|
myGlobalProps =
|
||||||
|
new GlobalPropsDialog(this, osystem->font(), osystem->settings(),
|
||||||
|
0, 0, 440, 270);
|
||||||
}
|
}
|
||||||
|
|
||||||
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
@ -165,6 +182,7 @@ LauncherDialog::~LauncherDialog()
|
||||||
{
|
{
|
||||||
delete myOptions;
|
delete myOptions;
|
||||||
delete myGameList;
|
delete myGameList;
|
||||||
|
delete myMenu;
|
||||||
}
|
}
|
||||||
|
|
||||||
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
@ -319,6 +337,25 @@ void LauncherDialog::loadRomInfo()
|
||||||
myRomInfoWidget->clearProperties();
|
myRomInfoWidget->clearProperties();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
void LauncherDialog::handleContextMenu()
|
||||||
|
{
|
||||||
|
const string& cmd = myMenu->getSelectedTag();
|
||||||
|
|
||||||
|
if(cmd == "override")
|
||||||
|
{
|
||||||
|
parent().addDialog(myGlobalProps);
|
||||||
|
}
|
||||||
|
else if(cmd == "filter")
|
||||||
|
{
|
||||||
|
cerr << "TODO: add dialog for this\n";
|
||||||
|
}
|
||||||
|
else if(cmd == "reload")
|
||||||
|
{
|
||||||
|
updateListing();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
void LauncherDialog::handleKeyDown(int ascii, int keycode, int modifiers)
|
void LauncherDialog::handleKeyDown(int ascii, int keycode, int modifiers)
|
||||||
{
|
{
|
||||||
|
@ -330,6 +367,19 @@ void LauncherDialog::handleKeyDown(int ascii, int keycode, int modifiers)
|
||||||
Dialog::handleKeyDown(ascii, keycode, modifiers);
|
Dialog::handleKeyDown(ascii, keycode, modifiers);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
void LauncherDialog::handleMouseDown(int x, int y, int button, int clickCount)
|
||||||
|
{
|
||||||
|
// Grab right mouse button for context menu, send left to base class
|
||||||
|
if(button == 2)
|
||||||
|
{
|
||||||
|
// Add menu at current x,y mouse location
|
||||||
|
myMenu->show(x + getAbsX(), y + getAbsY());
|
||||||
|
}
|
||||||
|
else
|
||||||
|
Dialog::handleMouseDown(x, y, button, clickCount);
|
||||||
|
}
|
||||||
|
|
||||||
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
void LauncherDialog::handleCommand(CommandSender* sender, int cmd,
|
void LauncherDialog::handleCommand(CommandSender* sender, int cmd,
|
||||||
int data, int id)
|
int data, int id)
|
||||||
|
@ -402,6 +452,10 @@ void LauncherDialog::handleCommand(CommandSender* sender, int cmd,
|
||||||
updateListing();
|
updateListing();
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case kCMenuItemSelectedCmd:
|
||||||
|
handleContextMenu();
|
||||||
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
Dialog::handleCommand(sender, cmd, data, 0);
|
Dialog::handleCommand(sender, cmd, data, 0);
|
||||||
}
|
}
|
||||||
|
|
|
@ -13,7 +13,7 @@
|
||||||
// See the file "license" for information on usage and redistribution of
|
// See the file "license" for information on usage and redistribution of
|
||||||
// this file, and for a DISCLAIMER OF ALL WARRANTIES.
|
// this file, and for a DISCLAIMER OF ALL WARRANTIES.
|
||||||
//
|
//
|
||||||
// $Id: LauncherDialog.hxx,v 1.38 2009-01-01 18:13:38 stephena Exp $
|
// $Id: LauncherDialog.hxx,v 1.39 2009-01-02 01:50:03 stephena Exp $
|
||||||
//
|
//
|
||||||
// Based on code from ScummVM - Scumm Interpreter
|
// Based on code from ScummVM - Scumm Interpreter
|
||||||
// Copyright (C) 2002-2004 The ScummVM project
|
// Copyright (C) 2002-2004 The ScummVM project
|
||||||
|
@ -26,9 +26,11 @@
|
||||||
|
|
||||||
class ButtonWidget;
|
class ButtonWidget;
|
||||||
class CommandSender;
|
class CommandSender;
|
||||||
|
class ContextMenu;
|
||||||
class DialogContainer;
|
class DialogContainer;
|
||||||
class GameList;
|
class GameList;
|
||||||
class OptionsDialog;
|
class OptionsDialog;
|
||||||
|
class GlobalPropsDialog;
|
||||||
class OSystem;
|
class OSystem;
|
||||||
class Properties;
|
class Properties;
|
||||||
class RomInfoWidget;
|
class RomInfoWidget;
|
||||||
|
@ -62,12 +64,19 @@ class LauncherDialog : public Dialog
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
virtual void handleKeyDown(int ascii, int keycode, int modifiers);
|
virtual void handleKeyDown(int ascii, int keycode, int modifiers);
|
||||||
|
virtual void handleMouseDown(int x, int y, int button, int clickCount);
|
||||||
virtual void handleCommand(CommandSender* sender, int cmd, int data, int id);
|
virtual void handleCommand(CommandSender* sender, int cmd, int data, int id);
|
||||||
|
|
||||||
void loadConfig();
|
void loadConfig();
|
||||||
void updateListing();
|
void updateListing();
|
||||||
|
|
||||||
protected:
|
private:
|
||||||
|
void enableButtons(bool enable);
|
||||||
|
void loadDirListing();
|
||||||
|
void loadRomInfo();
|
||||||
|
void handleContextMenu();
|
||||||
|
|
||||||
|
private:
|
||||||
ButtonWidget* myStartButton;
|
ButtonWidget* myStartButton;
|
||||||
ButtonWidget* myPrevDirButton;
|
ButtonWidget* myPrevDirButton;
|
||||||
ButtonWidget* myOptionsButton;
|
ButtonWidget* myOptionsButton;
|
||||||
|
@ -82,12 +91,9 @@ class LauncherDialog : public Dialog
|
||||||
OptionsDialog* myOptions;
|
OptionsDialog* myOptions;
|
||||||
RomInfoWidget* myRomInfoWidget;
|
RomInfoWidget* myRomInfoWidget;
|
||||||
|
|
||||||
private:
|
ContextMenu* myMenu;
|
||||||
void enableButtons(bool enable);
|
GlobalPropsDialog* myGlobalProps;
|
||||||
void loadDirListing();
|
|
||||||
void loadRomInfo();
|
|
||||||
|
|
||||||
private:
|
|
||||||
int mySelectedItem;
|
int mySelectedItem;
|
||||||
int myRomInfoSize;
|
int myRomInfoSize;
|
||||||
FilesystemNode myCurrentNode;
|
FilesystemNode myCurrentNode;
|
||||||
|
|
|
@ -13,7 +13,7 @@
|
||||||
// See the file "license" for information on usage and redistribution of
|
// See the file "license" for information on usage and redistribution of
|
||||||
// this file, and for a DISCLAIMER OF ALL WARRANTIES.
|
// this file, and for a DISCLAIMER OF ALL WARRANTIES.
|
||||||
//
|
//
|
||||||
// $Id: ListWidget.hxx,v 1.22 2009-01-01 18:13:38 stephena Exp $
|
// $Id: ListWidget.hxx,v 1.23 2009-01-02 01:50:03 stephena Exp $
|
||||||
//
|
//
|
||||||
// Based on code from ScummVM - Scumm Interpreter
|
// Based on code from ScummVM - Scumm Interpreter
|
||||||
// Copyright (C) 2002-2004 The ScummVM project
|
// Copyright (C) 2002-2004 The ScummVM project
|
||||||
|
@ -36,6 +36,7 @@ enum {
|
||||||
kListItemDoubleClickedCmd = 'LIdb', // double click on item - 'data' will be item index
|
kListItemDoubleClickedCmd = 'LIdb', // double click on item - 'data' will be item index
|
||||||
kListItemActivatedCmd = 'LIac', // item activated by return/enter - 'data' will be item index
|
kListItemActivatedCmd = 'LIac', // item activated by return/enter - 'data' will be item index
|
||||||
kListItemDataChangedCmd = 'LIch', // item data changed - 'data' will be item index
|
kListItemDataChangedCmd = 'LIch', // item data changed - 'data' will be item index
|
||||||
|
kListItemRClickedCmd = 'LIrc', // right click on item - 'data' will be item index
|
||||||
kListSelectionChangedCmd = 'Lsch', // selection changed - 'data' will be item index
|
kListSelectionChangedCmd = 'Lsch', // selection changed - 'data' will be item index
|
||||||
kListScrolledCmd = 'Lscl' // list scrolled - 'data' will be current position
|
kListScrolledCmd = 'Lscl' // list scrolled - 'data' will be current position
|
||||||
};
|
};
|
||||||
|
|
|
@ -16,6 +16,7 @@ MODULE_OBJS := \
|
||||||
src/gui/Font.o \
|
src/gui/Font.o \
|
||||||
src/gui/GameInfoDialog.o \
|
src/gui/GameInfoDialog.o \
|
||||||
src/gui/GameList.o \
|
src/gui/GameList.o \
|
||||||
|
src/gui/GlobalPropsDialog.o \
|
||||||
src/gui/HelpDialog.o \
|
src/gui/HelpDialog.o \
|
||||||
src/gui/InputDialog.o \
|
src/gui/InputDialog.o \
|
||||||
src/gui/InputTextDialog.o \
|
src/gui/InputTextDialog.o \
|
||||||
|
|
Loading…
Reference in New Issue