mirror of https://github.com/stella-emu/stella.git
Some restructuring and cleanup of PopUpWidget/ContextMenu functionality.
Those widgets now take two items per entry; the string to display, and the one to use (in essence a key/value pair). This really shortens the code in quite a few places. TIA graphical filters are now selectable from the UI, and correctly change video mode (in TIA mode). git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@1545 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
This commit is contained in:
parent
b1ac5bd951
commit
a661d6b804
|
@ -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: RiotWidget.cxx,v 1.6 2008-06-13 13:14:50 stephena Exp $
|
||||
// $Id: RiotWidget.cxx,v 1.7 2008-07-25 12:41:41 stephena Exp $
|
||||
//
|
||||
// Based on code from ScummVM - Scumm Interpreter
|
||||
// Copyright (C) 2002-2004 The ScummVM project
|
||||
|
@ -91,7 +91,7 @@ RiotWidget::RiotWidget(GuiObject* boss, const GUI::Font& font,
|
|||
lineHeight = font.getLineHeight();
|
||||
int xpos = 10, ypos = 25, lwidth = 9 * fontWidth, col = 0;
|
||||
StaticTextWidget* t;
|
||||
StringList items;
|
||||
StringMap items;
|
||||
|
||||
// Set the strings to be used in the various bit registers
|
||||
// We only do this once because it's the state that changes, not the strings
|
||||
|
@ -159,8 +159,8 @@ RiotWidget::RiotWidget(GuiObject* boss, const GUI::Font& font,
|
|||
lwidth = font.getStringWidth("P0 Diff: ");
|
||||
xpos = col; ypos += 3 * lineHeight;
|
||||
items.clear();
|
||||
items.push_back("B/easy");
|
||||
items.push_back("A/hard");
|
||||
items.push_back("B/easy", "b");
|
||||
items.push_back("A/hard", "a");
|
||||
myP0Diff = new PopUpWidget(boss, font, xpos, ypos, pwidth, lineHeight, items,
|
||||
"P0 Diff: ", lwidth, kP0DiffChanged);
|
||||
myP0Diff->setTarget(this);
|
||||
|
@ -174,8 +174,8 @@ RiotWidget::RiotWidget(GuiObject* boss, const GUI::Font& font,
|
|||
// TV Type
|
||||
ypos += myP1Diff->getHeight() + 5;
|
||||
items.clear();
|
||||
items.push_back("B&W");
|
||||
items.push_back("Color");
|
||||
items.push_back("B&W", "bw");
|
||||
items.push_back("Color", "color");
|
||||
myTVType = new PopUpWidget(boss, font, xpos, ypos, pwidth, lineHeight, items,
|
||||
"TV Type: ", lwidth, kTVTypeChanged);
|
||||
myTVType->setTarget(this);
|
||||
|
@ -345,11 +345,11 @@ void RiotWidget::handleCommand(CommandSender* sender, int cmd, int data, int id)
|
|||
break;
|
||||
|
||||
case kP0DiffChanged:
|
||||
riot.diffP0((bool)myP0Diff->getSelected());
|
||||
riot.diffP0(myP0Diff->getSelectedTag() != "b");
|
||||
break;
|
||||
|
||||
case kP1DiffChanged:
|
||||
riot.diffP1((bool)myP1Diff->getSelected());
|
||||
riot.diffP1(myP1Diff->getSelectedTag() != "b");
|
||||
break;
|
||||
|
||||
case kTVTypeChanged:
|
||||
|
|
|
@ -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: RomListWidget.cxx,v 1.14 2008-06-19 12:01:30 stephena Exp $
|
||||
// $Id: RomListWidget.cxx,v 1.15 2008-07-25 12:41:41 stephena Exp $
|
||||
//
|
||||
// Based on code from ScummVM - Scumm Interpreter
|
||||
// Copyright (C) 2002-2004 The ScummVM project
|
||||
|
@ -32,10 +32,10 @@ RomListWidget::RomListWidget(GuiObject* boss, const GUI::Font& font,
|
|||
{
|
||||
_type = kRomListWidget;
|
||||
|
||||
StringList l;
|
||||
StringMap l;
|
||||
// l.push_back("Add bookmark");
|
||||
l.push_back("Save ROM");
|
||||
l.push_back("Set PC");
|
||||
l.push_back("Save ROM", "saverom");
|
||||
l.push_back("Set PC", "setpc");
|
||||
myMenu = new ContextMenu(this, font, l);
|
||||
|
||||
// Take advantage of a wide debugger window when possible
|
||||
|
|
|
@ -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: RomWidget.cxx,v 1.26 2008-06-19 19:15:44 stephena Exp $
|
||||
// $Id: RomWidget.cxx,v 1.27 2008-07-25 12:41:41 stephena Exp $
|
||||
//
|
||||
// Based on code from ScummVM - Scumm Interpreter
|
||||
// Copyright (C) 2002-2004 The ScummVM project
|
||||
|
@ -126,15 +126,15 @@ void RomWidget::handleCommand(CommandSender* sender, int cmd, int data, int id)
|
|||
|
||||
case kCMenuItemSelectedCmd:
|
||||
{
|
||||
const string& rmb = myRomList->myMenu->getSelectedString();
|
||||
const string& rmb = myRomList->myMenu->getSelectedTag();
|
||||
|
||||
if(rmb == "Save ROM")
|
||||
if(rmb == "saverom")
|
||||
{
|
||||
mySaveRom->show(_x + 50, _y + 80);
|
||||
mySaveRom->setTitle("");
|
||||
mySaveRom->setEmitSignal(kRomNameEntered);
|
||||
}
|
||||
else if(rmb == "Set PC")
|
||||
else if(rmb == "setpc")
|
||||
setPC(myRomList->getSelected());
|
||||
|
||||
break;
|
||||
|
|
|
@ -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: TiaOutputWidget.cxx,v 1.17 2008-06-19 12:01:30 stephena Exp $
|
||||
// $Id: TiaOutputWidget.cxx,v 1.18 2008-07-25 12:41:41 stephena Exp $
|
||||
//
|
||||
// Based on code from ScummVM - Scumm Interpreter
|
||||
// Copyright (C) 2002-2004 The ScummVM project
|
||||
|
@ -44,10 +44,10 @@ TiaOutputWidget::TiaOutputWidget(GuiObject* boss, const GUI::Font& font,
|
|||
_type = kTiaOutputWidget;
|
||||
|
||||
// Create context menu for commands
|
||||
StringList l;
|
||||
l.push_back("Fill to scanline");
|
||||
l.push_back("Set breakpoint");
|
||||
l.push_back("Set zoom position");
|
||||
StringMap l;
|
||||
l.push_back("Fill to scanline", "scanline");
|
||||
l.push_back("Set breakpoint", "bp");
|
||||
l.push_back("Set zoom position", "zoom");
|
||||
myMenu = new ContextMenu(this, font, l);
|
||||
}
|
||||
|
||||
|
@ -109,36 +109,34 @@ void TiaOutputWidget::handleCommand(CommandSender* sender, int cmd, int data, in
|
|||
switch(cmd)
|
||||
{
|
||||
case kCMenuItemSelectedCmd:
|
||||
switch(myMenu->getSelected())
|
||||
{
|
||||
const string& rmb = myMenu->getSelectedTag();
|
||||
|
||||
if(rmb == "scanline")
|
||||
{
|
||||
case 0:
|
||||
ostringstream command;
|
||||
int lines = myClickY + ystart -
|
||||
instance().debugger().tiaDebug().scanlines();
|
||||
if(lines > 0)
|
||||
{
|
||||
ostringstream command;
|
||||
int lines = myClickY + ystart -
|
||||
instance().debugger().tiaDebug().scanlines();
|
||||
if(lines > 0)
|
||||
{
|
||||
command << "scanline #" << lines;
|
||||
instance().debugger().parser().run(command.str());
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
case 1:
|
||||
{
|
||||
ostringstream command;
|
||||
int scanline = myClickY + ystart;
|
||||
command << "breakif _scan==#" << scanline;
|
||||
command << "scanline #" << lines;
|
||||
instance().debugger().parser().run(command.str());
|
||||
break;
|
||||
}
|
||||
|
||||
case 2:
|
||||
if(myZoom)
|
||||
myZoom->setPos(myClickX, myClickY);
|
||||
break;
|
||||
}
|
||||
else if(rmb == "bp")
|
||||
{
|
||||
ostringstream command;
|
||||
int scanline = myClickY + ystart;
|
||||
command << "breakif _scan==#" << scanline;
|
||||
instance().debugger().parser().run(command.str());
|
||||
}
|
||||
else if(rmb == "zoom")
|
||||
{
|
||||
if(myZoom)
|
||||
myZoom->setPos(myClickX, myClickY);
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -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: TiaZoomWidget.cxx,v 1.17 2008-06-19 12:01:30 stephena Exp $
|
||||
// $Id: TiaZoomWidget.cxx,v 1.18 2008-07-25 12:41:41 stephena Exp $
|
||||
//
|
||||
// Based on code from ScummVM - Scumm Interpreter
|
||||
// Copyright (C) 2002-2004 The ScummVM project
|
||||
|
@ -56,10 +56,10 @@ TiaZoomWidget::TiaZoomWidget(GuiObject* boss, const GUI::Font& font,
|
|||
myYCenter = myNumRows >> 1;
|
||||
|
||||
// Create context menu for zoom levels
|
||||
StringList l;
|
||||
l.push_back("2x zoom");
|
||||
l.push_back("4x zoom");
|
||||
l.push_back("8x zoom");
|
||||
StringMap l;
|
||||
l.push_back("2x zoom", "2");
|
||||
l.push_back("4x zoom", "4");
|
||||
l.push_back("8x zoom", "8");
|
||||
myMenu = new ContextMenu(this, font, l);
|
||||
}
|
||||
|
||||
|
@ -204,14 +204,7 @@ void TiaZoomWidget::handleCommand(CommandSender* sender, int cmd, int data, int
|
|||
{
|
||||
case kCMenuItemSelectedCmd:
|
||||
{
|
||||
int item = myMenu->getSelected(), level = 0;
|
||||
if(item == 0)
|
||||
level = 2;
|
||||
else if(item == 1)
|
||||
level = 4;
|
||||
else if(item == 2)
|
||||
level = 8;
|
||||
|
||||
int level = (int) atoi(myMenu->getSelectedTag().c_str());
|
||||
if(level > 0)
|
||||
zoom(level);
|
||||
break;
|
||||
|
|
|
@ -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: FrameBuffer.cxx,v 1.136 2008-07-22 14:54:39 stephena Exp $
|
||||
// $Id: FrameBuffer.cxx,v 1.137 2008-07-25 12:41:41 stephena Exp $
|
||||
//============================================================================
|
||||
|
||||
#include <algorithm>
|
||||
|
@ -625,21 +625,25 @@ uInt8 FrameBuffer::getPhosphor(uInt8 c1, uInt8 c2)
|
|||
}
|
||||
|
||||
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||
const StringList& FrameBuffer::supportedTIAFilters(const string& type)
|
||||
const StringMap& FrameBuffer::supportedTIAFilters(const string& type)
|
||||
{
|
||||
myTIAFilters.clear();
|
||||
|
||||
uInt32 max_zoom = maxWindowSizeForScreen(320, 210,
|
||||
myOSystem->desktopWidth(), myOSystem->desktopHeight());
|
||||
#ifdef SMALL_SCREEN
|
||||
uInt32 firstmode = 0;
|
||||
#else
|
||||
uInt32 firstmode = 1;
|
||||
#endif
|
||||
myTIAFilters.clear();
|
||||
for(uInt32 i = firstmode; i < GFX_NumModes; ++i)
|
||||
{
|
||||
// For now, just include all filters
|
||||
// This will change once OpenGL-only filters are added
|
||||
myTIAFilters.push_back(ourGraphicsModes[i].description);
|
||||
cerr << ourGraphicsModes[i].description << endl;
|
||||
if(ourGraphicsModes[i].zoom <= max_zoom)
|
||||
{
|
||||
myTIAFilters.push_back(ourGraphicsModes[i].description,
|
||||
ourGraphicsModes[i].name);
|
||||
}
|
||||
}
|
||||
return myTIAFilters;
|
||||
}
|
||||
|
@ -1073,14 +1077,14 @@ void FBSurface::drawString(const GUI::Font* font, const string& s,
|
|||
|
||||
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||
FrameBuffer::GraphicsMode FrameBuffer::ourGraphicsModes[GFX_NumModes] = {
|
||||
{ GFX_Zoom1x, "zoom1x", "Zoom 1x", 1 },
|
||||
{ GFX_Zoom2x, "zoom2x", "Zoom 2x", 2 },
|
||||
{ GFX_Zoom3x, "zoom3x", "Zoom 3x", 3 },
|
||||
{ GFX_Zoom4x, "zoom4x", "Zoom 4x", 4 },
|
||||
{ GFX_Zoom5x, "zoom5x", "Zoom 5x", 5 },
|
||||
{ GFX_Zoom6x, "zoom6x", "Zoom 6x", 6 },
|
||||
{ GFX_Zoom7x, "zoom7x", "Zoom 7x", 7 },
|
||||
{ GFX_Zoom8x, "zoom8x", "Zoom 8x", 8 },
|
||||
{ GFX_Zoom9x, "zoom9x", "Zoom 9x", 9 },
|
||||
{ GFX_Zoom10x, "zoom10x", "Zoom 10x", 10 }
|
||||
{ GFX_Zoom1x, "zoom1x", "Zoom 1x", 1, 0x3 },
|
||||
{ GFX_Zoom2x, "zoom2x", "Zoom 2x", 2, 0x3 },
|
||||
{ GFX_Zoom3x, "zoom3x", "Zoom 3x", 3, 0x3 },
|
||||
{ GFX_Zoom4x, "zoom4x", "Zoom 4x", 4, 0x3 },
|
||||
{ GFX_Zoom5x, "zoom5x", "Zoom 5x", 5, 0x3 },
|
||||
{ GFX_Zoom6x, "zoom6x", "Zoom 6x", 6, 0x3 },
|
||||
{ GFX_Zoom7x, "zoom7x", "Zoom 7x", 7, 0x3 },
|
||||
{ GFX_Zoom8x, "zoom8x", "Zoom 8x", 8, 0x3 },
|
||||
{ GFX_Zoom9x, "zoom9x", "Zoom 9x", 9, 0x3 },
|
||||
{ GFX_Zoom10x, "zoom10x", "Zoom 10x", 10, 0x3 }
|
||||
};
|
||||
|
|
|
@ -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: FrameBuffer.hxx,v 1.101 2008-07-22 14:54:39 stephena Exp $
|
||||
// $Id: FrameBuffer.hxx,v 1.102 2008-07-25 12:41:41 stephena Exp $
|
||||
//============================================================================
|
||||
|
||||
#ifndef FRAMEBUFFER_HXX
|
||||
|
@ -90,7 +90,7 @@ enum {
|
|||
turn drawn here as well.
|
||||
|
||||
@author Stephen Anthony
|
||||
@version $Id: FrameBuffer.hxx,v 1.101 2008-07-22 14:54:39 stephena Exp $
|
||||
@version $Id: FrameBuffer.hxx,v 1.102 2008-07-25 12:41:41 stephena Exp $
|
||||
*/
|
||||
class FrameBuffer
|
||||
{
|
||||
|
@ -223,7 +223,7 @@ class FrameBuffer
|
|||
/**
|
||||
Get the supported TIA filters for the given framebuffer type.
|
||||
*/
|
||||
const StringList& supportedTIAFilters(const string& type);
|
||||
const StringMap& supportedTIAFilters(const string& type);
|
||||
|
||||
/**
|
||||
Set up the TIA/emulation palette for a screen of any depth > 8.
|
||||
|
@ -307,6 +307,7 @@ class FrameBuffer
|
|||
const char* name;
|
||||
const char* description;
|
||||
uInt32 zoom;
|
||||
uInt8 avail; // 0x1 bit -> software, 0x2 bit -> opengl
|
||||
};
|
||||
|
||||
// Contains all relevant info for the dimensions of an SDL screen
|
||||
|
@ -382,7 +383,7 @@ class FrameBuffer
|
|||
Uint32 myAvgPalette[256][256];
|
||||
|
||||
// Names of the TIA filters that can be used for this framebuffer
|
||||
StringList myTIAFilters;
|
||||
StringMap myTIAFilters;
|
||||
|
||||
private:
|
||||
/**
|
||||
|
@ -510,7 +511,7 @@ class FrameBuffer
|
|||
FrameBuffer type.
|
||||
|
||||
@author Stephen Anthony
|
||||
@version $Id: FrameBuffer.hxx,v 1.101 2008-07-22 14:54:39 stephena Exp $
|
||||
@version $Id: FrameBuffer.hxx,v 1.102 2008-07-25 12:41:41 stephena Exp $
|
||||
*/
|
||||
// Text alignment modes for drawString()
|
||||
enum TextAlignment {
|
||||
|
|
|
@ -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: AudioDialog.cxx,v 1.28 2008-06-13 13:14:51 stephena Exp $
|
||||
// $Id: AudioDialog.cxx,v 1.29 2008-07-25 12:41:41 stephena Exp $
|
||||
//
|
||||
// Based on code from ScummVM - Scumm Interpreter
|
||||
// Copyright (C) 2002-2004 The ScummVM project
|
||||
|
@ -50,7 +50,7 @@ AudioDialog::AudioDialog(OSystem* osystem, DialogContainer* parent,
|
|||
int lwidth = font.getStringWidth("Fragment Size: "),
|
||||
pwidth = font.getStringWidth("4096");
|
||||
WidgetArray wid;
|
||||
StringList items;
|
||||
StringMap items;
|
||||
|
||||
// Set real dimensions
|
||||
// _w = 35 * fontWidth + 10;
|
||||
|
@ -73,12 +73,12 @@ AudioDialog::AudioDialog(OSystem* osystem, DialogContainer* parent,
|
|||
|
||||
// Fragment size
|
||||
items.clear();
|
||||
items.push_back("128");
|
||||
items.push_back("256");
|
||||
items.push_back("512");
|
||||
items.push_back("1024");
|
||||
items.push_back("2048");
|
||||
items.push_back("4096");
|
||||
items.push_back("128", "128");
|
||||
items.push_back("256", "256");
|
||||
items.push_back("512", "512");
|
||||
items.push_back("1024", "1024");
|
||||
items.push_back("2048", "2048");
|
||||
items.push_back("4096", "4096");
|
||||
myFragsizePopup = new PopUpWidget(this, font, xpos, ypos,
|
||||
pwidth + myVolumeLabel->getWidth() - 4, lineHeight,
|
||||
items, "Fragment size: ", lwidth);
|
||||
|
@ -87,11 +87,11 @@ AudioDialog::AudioDialog(OSystem* osystem, DialogContainer* parent,
|
|||
|
||||
// Output frequency
|
||||
items.clear();
|
||||
items.push_back("11025");
|
||||
items.push_back("22050");
|
||||
items.push_back("31400");
|
||||
items.push_back("44100");
|
||||
items.push_back("48000");
|
||||
items.push_back("11025", "11025");
|
||||
items.push_back("22050", "22050");
|
||||
items.push_back("31400", "31400");
|
||||
items.push_back("44100", "44100");
|
||||
items.push_back("48000", "48000");
|
||||
myFreqPopup = new PopUpWidget(this, font, xpos, ypos,
|
||||
pwidth + myVolumeLabel->getWidth() - 4, lineHeight,
|
||||
items, "Output freq: ", lwidth);
|
||||
|
@ -136,50 +136,24 @@ AudioDialog::~AudioDialog()
|
|||
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||
void AudioDialog::loadConfig()
|
||||
{
|
||||
bool b;
|
||||
int i;
|
||||
|
||||
// Volume
|
||||
myVolumeSlider->setValue(instance().settings().getInt("volume"));
|
||||
myVolumeLabel->setLabel(instance().settings().getString("volume"));
|
||||
|
||||
// Fragsize
|
||||
i = instance().settings().getInt("fragsize");
|
||||
if(i == 128) i = 0;
|
||||
else if(i == 256) i = 1;
|
||||
else if(i == 512) i = 2;
|
||||
else if(i == 1024) i = 3;
|
||||
else if(i == 2048) i = 4;
|
||||
else if(i == 4096) i = 5;
|
||||
else i = 2; // default to '512'
|
||||
myFragsizePopup->setSelected(i);
|
||||
myFragsizePopup->setSelected(instance().settings().getString("fragsize"), "512");
|
||||
|
||||
// Output frequency
|
||||
i = instance().settings().getInt("freq");
|
||||
if(i == 11025) i = 0;
|
||||
else if(i == 22050) i = 1;
|
||||
else if(i == 31400) i = 2;
|
||||
else if(i == 44100) i = 3;
|
||||
else if(i == 48000) i = 4;
|
||||
else i = 2; // default to '31400'
|
||||
myFreqPopup->setSelected(i);
|
||||
myFreqPopup->setSelected(instance().settings().getString("freq"), "31400");
|
||||
|
||||
// TIA frequency
|
||||
i = instance().settings().getInt("tiafreq");
|
||||
if(i == 11025) i = 0;
|
||||
else if(i == 22050) i = 1;
|
||||
else if(i == 31400) i = 2;
|
||||
else if(i == 44100) i = 3;
|
||||
else if(i == 48000) i = 4;
|
||||
else i = 2; // default to '31400'
|
||||
myTiaFreqPopup->setSelected(i);
|
||||
myTiaFreqPopup->setSelected(instance().settings().getString("tiafreq"), "31400");
|
||||
|
||||
// Clip volume
|
||||
b = instance().settings().getBool("clipvol");
|
||||
myClipVolumeCheckbox->setState(b);
|
||||
myClipVolumeCheckbox->setState(instance().settings().getBool("clipvol"));
|
||||
|
||||
// Enable sound
|
||||
b = instance().settings().getBool("sound");
|
||||
bool b = instance().settings().getBool("sound");
|
||||
mySoundEnableCheckbox->setState(b);
|
||||
|
||||
// Make sure that mutually-exclusive items are not enabled at the same time
|
||||
|
@ -190,33 +164,24 @@ void AudioDialog::loadConfig()
|
|||
void AudioDialog::saveConfig()
|
||||
{
|
||||
Settings& settings = instance().settings();
|
||||
string s;
|
||||
bool b;
|
||||
int i;
|
||||
|
||||
// Volume
|
||||
i = myVolumeSlider->getValue();
|
||||
instance().sound().setVolume(i);
|
||||
instance().sound().setVolume(myVolumeSlider->getValue());
|
||||
|
||||
// Fragsize
|
||||
s = myFragsizePopup->getSelectedString();
|
||||
settings.setString("fragsize", s);
|
||||
settings.setString("fragsize", myFragsizePopup->getSelectedTag());
|
||||
|
||||
// Output frequency
|
||||
s = myFreqPopup->getSelectedString();
|
||||
settings.setString("freq", s);
|
||||
settings.setString("freq", myFreqPopup->getSelectedTag());
|
||||
|
||||
// TIA frequency
|
||||
s = myTiaFreqPopup->getSelectedString();
|
||||
settings.setString("tiafreq", s);
|
||||
settings.setString("tiafreq", myTiaFreqPopup->getSelectedTag());
|
||||
|
||||
// Enable/disable volume clipping (requires a restart to take effect)
|
||||
b = myClipVolumeCheckbox->getState();
|
||||
settings.setBool("clipvol", b);
|
||||
settings.setBool("clipvol", myClipVolumeCheckbox->getState());
|
||||
|
||||
// Enable/disable sound (requires a restart to take effect)
|
||||
b = mySoundEnableCheckbox->getState();
|
||||
instance().sound().setEnabled(b);
|
||||
instance().sound().setEnabled(mySoundEnableCheckbox->getState());
|
||||
|
||||
// Only force a re-initialization when necessary, since it can
|
||||
// be a time-consuming operation
|
||||
|
@ -230,9 +195,9 @@ void AudioDialog::setDefaults()
|
|||
myVolumeSlider->setValue(100);
|
||||
myVolumeLabel->setLabel("100");
|
||||
|
||||
myFragsizePopup->setSelected(2); // 512 bytes
|
||||
myFreqPopup->setSelected(2); // 31400 Hz
|
||||
myTiaFreqPopup->setSelected(2); // 31400 Hz
|
||||
myFragsizePopup->setSelected("512", "");
|
||||
myFreqPopup->setSelected("31400", "");
|
||||
myTiaFreqPopup->setSelected("31400", "");
|
||||
|
||||
myClipVolumeCheckbox->setState(true);
|
||||
mySoundEnableCheckbox->setState(true);
|
||||
|
|
|
@ -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: ContextMenu.cxx,v 1.4 2008-06-19 19:15:44 stephena Exp $
|
||||
// $Id: ContextMenu.cxx,v 1.5 2008-07-25 12:41:41 stephena Exp $
|
||||
//
|
||||
// Based on code from ScummVM - Scumm Interpreter
|
||||
// Copyright (C) 2002-2004 The ScummVM project
|
||||
|
@ -27,10 +27,9 @@
|
|||
|
||||
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||
ContextMenu::ContextMenu(GuiObject* boss, const GUI::Font& font,
|
||||
const StringList& items, int cmd)
|
||||
const StringMap& items, int cmd)
|
||||
: Dialog(&boss->instance(), &boss->parent(), 0, 0, 16, 16),
|
||||
CommandSender(boss),
|
||||
_entries(items),
|
||||
_currentItem(-1),
|
||||
_selectedItem(-1),
|
||||
_rowHeight(font.getLineHeight()),
|
||||
|
@ -40,6 +39,21 @@ ContextMenu::ContextMenu(GuiObject* boss, const GUI::Font& font,
|
|||
_xorig(0),
|
||||
_yorig(0)
|
||||
{
|
||||
addItems(items);
|
||||
}
|
||||
|
||||
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||
ContextMenu::~ContextMenu()
|
||||
{
|
||||
_entries.clear();
|
||||
}
|
||||
|
||||
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||
void ContextMenu::addItems(const StringMap& items)
|
||||
{
|
||||
_entries.clear();
|
||||
_entries = items;
|
||||
|
||||
// Create two columns of entries if there are more than 10 items
|
||||
if(_entries.size() > 10)
|
||||
{
|
||||
|
@ -59,7 +73,7 @@ ContextMenu::ContextMenu(GuiObject* boss, const GUI::Font& font,
|
|||
int maxwidth = 0;
|
||||
for(unsigned int i = 0; i < _entries.size(); ++i)
|
||||
{
|
||||
int length = _font->getStringWidth(_entries[i]);
|
||||
int length = _font->getStringWidth(_entries[i].first);
|
||||
if(length > maxwidth)
|
||||
maxwidth = length;
|
||||
}
|
||||
|
@ -69,12 +83,6 @@ ContextMenu::ContextMenu(GuiObject* boss, const GUI::Font& font,
|
|||
_h = _entriesPerColumn * _rowHeight + 4;
|
||||
}
|
||||
|
||||
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||
ContextMenu::~ContextMenu()
|
||||
{
|
||||
_entries.clear();
|
||||
}
|
||||
|
||||
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||
void ContextMenu::show(uInt32 x, uInt32 y, int item)
|
||||
{
|
||||
|
@ -124,11 +132,21 @@ void ContextMenu::setSelected(int item)
|
|||
}
|
||||
|
||||
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||
void ContextMenu::setSelected(const string& name)
|
||||
void ContextMenu::setSelected(const string& tag, const string& defaultTag)
|
||||
{
|
||||
for(unsigned int item = 0; item < _entries.size(); ++item)
|
||||
{
|
||||
if(_entries[item] == name)
|
||||
if(BSPF_strcasecmp(_entries[item].second.c_str(), tag.c_str()) == 0)
|
||||
{
|
||||
setSelected(item);
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
// If we get this far, the value wasn't found; use the default value
|
||||
for(unsigned int item = 0; item < _entries.size(); ++item)
|
||||
{
|
||||
if(BSPF_strcasecmp(_entries[item].second.c_str(), defaultTag.c_str()) == 0)
|
||||
{
|
||||
setSelected(item);
|
||||
return;
|
||||
|
@ -155,9 +173,15 @@ int ContextMenu::getSelected() const
|
|||
}
|
||||
|
||||
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||
const string& ContextMenu::getSelectedString() const
|
||||
const string& ContextMenu::getSelectedName() const
|
||||
{
|
||||
return (_selectedItem >= 0) ? _entries[_selectedItem] : EmptyString;
|
||||
return (_selectedItem >= 0) ? _entries[_selectedItem].first : EmptyString;
|
||||
}
|
||||
|
||||
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||
const string& ContextMenu::getSelectedTag() const
|
||||
{
|
||||
return (_selectedItem >= 0) ? _entries[_selectedItem].second : EmptyString;
|
||||
}
|
||||
|
||||
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||
|
@ -324,8 +348,6 @@ void ContextMenu::drawDialog()
|
|||
|
||||
if(_dirty)
|
||||
{
|
||||
FBSurface& s = surface();
|
||||
|
||||
// Draw menu border and background
|
||||
s.fillRect(_x+1, _y+1, _w-2, _h-2, kWidColor);
|
||||
s.box(_x, _y, _w, _h, kColor, kShadowColor);
|
||||
|
@ -363,7 +385,7 @@ void ContextMenu::drawDialog()
|
|||
w = _w - 4;
|
||||
}
|
||||
if(hilite) s.fillRect(x, y, w, _rowHeight, kTextColorHi);
|
||||
s.drawString(_font, _entries[i], x + 1, y + 2, w - 2,
|
||||
s.drawString(_font, _entries[i].first, x + 1, y + 2, w - 2,
|
||||
hilite ? kWidColor : kTextColor);
|
||||
}
|
||||
s.addDirtyRect(_x, _y, _w, _h);
|
||||
|
|
|
@ -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: ContextMenu.hxx,v 1.4 2008-06-19 19:15:44 stephena Exp $
|
||||
// $Id: ContextMenu.hxx,v 1.5 2008-07-25 12:41:41 stephena Exp $
|
||||
//
|
||||
// Based on code from ScummVM - Scumm Interpreter
|
||||
// Copyright (C) 2002-2004 The ScummVM project
|
||||
|
@ -43,17 +43,20 @@ class ContextMenu : public Dialog, public CommandSender
|
|||
{
|
||||
public:
|
||||
ContextMenu(GuiObject* boss, const GUI::Font& font,
|
||||
const StringList& items, int cmd = 0);
|
||||
const StringMap& items, int cmd = 0);
|
||||
virtual ~ContextMenu();
|
||||
|
||||
/** Add the given items to the widget. */
|
||||
void addItems(const StringMap& items);
|
||||
|
||||
/** Show context menu onscreen at the specified coordinates */
|
||||
void show(uInt32 x, uInt32 y, int item = -1);
|
||||
|
||||
/** Select the entry at the given index. */
|
||||
void setSelected(int item);
|
||||
|
||||
/** Select the first entry matching the given name. */
|
||||
void setSelected(const string& name);
|
||||
/** Select the first entry matching the given tag. */
|
||||
void setSelected(const string& tag, const string& defaultTag);
|
||||
|
||||
/** Select the highest/last entry in the internal list. */
|
||||
void setSelectedMax();
|
||||
|
@ -63,7 +66,8 @@ class ContextMenu : public Dialog, public CommandSender
|
|||
|
||||
/** Accessor methods for the currently selected item. */
|
||||
int getSelected() const;
|
||||
const string& getSelectedString() const;
|
||||
const string& getSelectedName() const;
|
||||
const string& getSelectedTag() const;
|
||||
|
||||
/** This dialog uses its own positioning, so we override Dialog::center() */
|
||||
void center();
|
||||
|
@ -92,7 +96,7 @@ class ContextMenu : public Dialog, public CommandSender
|
|||
void sendSelection();
|
||||
|
||||
private:
|
||||
StringList _entries;
|
||||
StringMap _entries;
|
||||
|
||||
int _currentItem;
|
||||
int _selectedItem;
|
||||
|
|
|
@ -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: GameInfoDialog.cxx,v 1.57 2008-06-13 13:14:51 stephena Exp $
|
||||
// $Id: GameInfoDialog.cxx,v 1.58 2008-07-25 12:41:41 stephena Exp $
|
||||
//
|
||||
// Based on code from ScummVM - Scumm Interpreter
|
||||
// Copyright (C) 2002-2004 The ScummVM project
|
||||
|
@ -48,9 +48,8 @@ GameInfoDialog::GameInfoDialog(
|
|||
buttonHeight = font.getLineHeight() + 4;
|
||||
const int vBorder = 4;
|
||||
int xpos, ypos, lwidth, fwidth, pwidth, tabID;
|
||||
unsigned int i;
|
||||
WidgetArray wid;
|
||||
StringList items;
|
||||
StringMap items, ports, ctrls;
|
||||
|
||||
// The tab widget
|
||||
xpos = 2; ypos = vBorder;
|
||||
|
@ -111,8 +110,8 @@ GameInfoDialog::GameInfoDialog(
|
|||
"Sound:", kTextAlignLeft);
|
||||
pwidth = font.getStringWidth("Stereo");
|
||||
items.clear();
|
||||
items.push_back("Mono");
|
||||
items.push_back("Stereo");
|
||||
items.push_back("Mono", "MONO");
|
||||
items.push_back("Stereo", "STEREO");
|
||||
mySound = new PopUpWidget(myTab, font, xpos+lwidth, ypos,
|
||||
pwidth, lineHeight, items, "", 0, 0);
|
||||
wid.push_back(mySound);
|
||||
|
@ -122,8 +121,31 @@ GameInfoDialog::GameInfoDialog(
|
|||
"Type:", kTextAlignLeft);
|
||||
pwidth = font.getStringWidth("SB (128-256k SUPERbanking)");
|
||||
items.clear();
|
||||
for(i = 0; i < kNumCartTypes; ++i)
|
||||
items.push_back(ourCartridgeList[i][0]);
|
||||
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" );
|
||||
myType = new PopUpWidget(myTab, font, xpos+lwidth, ypos,
|
||||
pwidth, lineHeight, items, "", 0, 0);
|
||||
wid.push_back(myType);
|
||||
|
@ -142,8 +164,8 @@ GameInfoDialog::GameInfoDialog(
|
|||
new StaticTextWidget(myTab, font, xpos, ypos+1, lwidth, fontHeight,
|
||||
"Left Difficulty:", kTextAlignLeft);
|
||||
items.clear();
|
||||
items.push_back("B");
|
||||
items.push_back("A");
|
||||
items.push_back("B", "B");
|
||||
items.push_back("A", "A");
|
||||
myLeftDiff = new PopUpWidget(myTab, font, xpos+lwidth, ypos,
|
||||
pwidth, lineHeight, items, "", 0, 0);
|
||||
wid.push_back(myLeftDiff);
|
||||
|
@ -160,8 +182,8 @@ GameInfoDialog::GameInfoDialog(
|
|||
new StaticTextWidget(myTab, font, xpos, ypos+1, lwidth, fontHeight,
|
||||
"TV Type:", kTextAlignLeft);
|
||||
items.clear();
|
||||
items.push_back("Color");
|
||||
items.push_back("B & W");
|
||||
items.push_back("Color", "COLOR");
|
||||
items.push_back("B & W", "BLACKANDWHITE");
|
||||
myTVType = new PopUpWidget(myTab, font, xpos+lwidth, ypos,
|
||||
pwidth, lineHeight, items, "", 0, 0);
|
||||
wid.push_back(myTVType);
|
||||
|
@ -179,43 +201,45 @@ GameInfoDialog::GameInfoDialog(
|
|||
pwidth = font.getStringWidth("CX-22 Trakball");
|
||||
new StaticTextWidget(myTab, font, xpos, ypos+1, lwidth, fontHeight,
|
||||
"P0 Controller:", kTextAlignLeft);
|
||||
items.clear();
|
||||
for(i = 0; i < kNumControllerTypes; ++i)
|
||||
items.push_back(ourControllerList[i][0]);
|
||||
ctrls.clear();
|
||||
ctrls.push_back("Joystick", "JOYSTICK" );
|
||||
ctrls.push_back("Paddles", "PADDLES" );
|
||||
ctrls.push_back("BoosterGrip", "BOOSTERGRIP" );
|
||||
ctrls.push_back("Driving", "DRIVING" );
|
||||
ctrls.push_back("Keyboard", "KEYBOARD" );
|
||||
ctrls.push_back("CX-22 Trakball", "TRACKBALL22" );
|
||||
ctrls.push_back("CX-80 Mouse", "TRACKBALL80" );
|
||||
ctrls.push_back("AmigaMouse", "AMIGAMOUSE" );
|
||||
ctrls.push_back("AtariVox", "ATARIVOX" );
|
||||
ctrls.push_back("SaveKey", "SAVEKEY" );
|
||||
myP0Controller = new PopUpWidget(myTab, font, xpos+lwidth, ypos,
|
||||
pwidth, lineHeight, items, "", 0, 0);
|
||||
pwidth, lineHeight, ctrls, "", 0, 0);
|
||||
wid.push_back(myP0Controller);
|
||||
|
||||
xpos += lwidth+myP0Controller->getWidth() + 4;
|
||||
new StaticTextWidget(myTab, font, xpos, ypos+1, font.getStringWidth("in "),
|
||||
fontHeight, "in ", kTextAlignLeft);
|
||||
xpos += font.getStringWidth("in ");
|
||||
items.clear();
|
||||
items.push_back("left port");
|
||||
items.push_back("right port");
|
||||
ports.clear();
|
||||
ports.push_back("left port", "L");
|
||||
ports.push_back("right port", "R");
|
||||
myLeftPort = new PopUpWidget(myTab, font, xpos, ypos, pwidth, lineHeight,
|
||||
items, "", 0, kLeftCChanged);
|
||||
ports, "", 0, kLeftCChanged);
|
||||
wid.push_back(myLeftPort);
|
||||
|
||||
xpos = 10; ypos += lineHeight + 5;
|
||||
new StaticTextWidget(myTab, font, xpos, ypos+1, lwidth, fontHeight,
|
||||
"P1 Controller:", kTextAlignLeft);
|
||||
items.clear();
|
||||
for(i = 0; i < kNumControllerTypes; ++i)
|
||||
items.push_back(ourControllerList[i][0]);
|
||||
myP1Controller = new PopUpWidget(myTab, font, xpos+lwidth, ypos,
|
||||
pwidth, lineHeight, items, "", 0, 0);
|
||||
pwidth, lineHeight, ctrls, "", 0, 0);
|
||||
wid.push_back(myP1Controller);
|
||||
|
||||
xpos += lwidth+myP1Controller->getWidth() + 4;
|
||||
new StaticTextWidget(myTab, font, xpos, ypos+1, font.getStringWidth("in "),
|
||||
fontHeight, "in ", kTextAlignLeft);
|
||||
xpos += font.getStringWidth("in ");
|
||||
items.clear();
|
||||
items.push_back("left port");
|
||||
items.push_back("right port");
|
||||
myRightPort = new PopUpWidget(myTab, font, xpos, ypos, pwidth, lineHeight,
|
||||
items, "", 0, kRightCChanged);
|
||||
ports, "", 0, kRightCChanged);
|
||||
wid.push_back(myRightPort);
|
||||
|
||||
xpos = 10; ypos += lineHeight + 5;
|
||||
|
@ -223,8 +247,8 @@ GameInfoDialog::GameInfoDialog(
|
|||
new StaticTextWidget(myTab, font, xpos, ypos+1, lwidth, fontHeight,
|
||||
"Swap Paddles:", kTextAlignLeft);
|
||||
items.clear();
|
||||
items.push_back("Yes");
|
||||
items.push_back("No");
|
||||
items.push_back("Yes", "YES");
|
||||
items.push_back("No", "NO");
|
||||
mySwapPaddles = new PopUpWidget(myTab, font, xpos+lwidth, ypos,
|
||||
pwidth, lineHeight, items, "", 0, 0);
|
||||
wid.push_back(mySwapPaddles);
|
||||
|
@ -244,13 +268,13 @@ GameInfoDialog::GameInfoDialog(
|
|||
new StaticTextWidget(myTab, font, xpos, ypos+1, lwidth, fontHeight,
|
||||
"Format:", kTextAlignLeft);
|
||||
items.clear();
|
||||
items.push_back("Auto-detect");
|
||||
items.push_back("NTSC");
|
||||
items.push_back("PAL");
|
||||
items.push_back("SECAM");
|
||||
items.push_back("NTSC50");
|
||||
items.push_back("PAL60");
|
||||
items.push_back("SECAM60");
|
||||
items.push_back("Auto-detect", "AUTO-DETECT");
|
||||
items.push_back("NTSC", "NTSC");
|
||||
items.push_back("PAL", "PAL");
|
||||
items.push_back("SECAM", "SECAM");
|
||||
items.push_back("NTSC50", "NTSC50");
|
||||
items.push_back("PAL60", "PAL60");
|
||||
items.push_back("SECAM60", "SECAM60");
|
||||
myFormat = new PopUpWidget(myTab, font, xpos+lwidth, ypos,
|
||||
pwidth, lineHeight, items, "", 0, 0);
|
||||
wid.push_back(myFormat);
|
||||
|
@ -274,8 +298,8 @@ GameInfoDialog::GameInfoDialog(
|
|||
new StaticTextWidget(myTab, font, xpos, ypos+1, lwidth, fontHeight,
|
||||
"Use Phosphor:", kTextAlignLeft);
|
||||
items.clear();
|
||||
items.push_back("Yes");
|
||||
items.push_back("No");
|
||||
items.push_back("Yes", "YES");
|
||||
items.push_back("No", "NO");
|
||||
myPhosphor = new PopUpWidget(myTab, font, xpos+lwidth, ypos, pwidth,
|
||||
lineHeight, items, "", 0, kPhosphorChanged);
|
||||
wid.push_back(myPhosphor);
|
||||
|
@ -297,8 +321,8 @@ GameInfoDialog::GameInfoDialog(
|
|||
new StaticTextWidget(myTab, font, xpos, ypos+1, lwidth, fontHeight,
|
||||
"Use HMBlanks:", kTextAlignLeft);
|
||||
items.clear();
|
||||
items.push_back("Yes");
|
||||
items.push_back("No");
|
||||
items.push_back("Yes", "YES");
|
||||
items.push_back("No", "NO");
|
||||
myHmoveBlanks = new PopUpWidget(myTab, font, xpos+lwidth, ypos, pwidth,
|
||||
lineHeight, items, "", 0, 0);
|
||||
wid.push_back(myHmoveBlanks);
|
||||
|
@ -362,126 +386,45 @@ void GameInfoDialog::loadView()
|
|||
if(!myPropertiesLoaded)
|
||||
return;
|
||||
|
||||
string s;
|
||||
int i;
|
||||
|
||||
// Cartridge properties
|
||||
s = myGameProperties.get(Cartridge_Name);
|
||||
myName->setEditString(s);
|
||||
|
||||
s = myGameProperties.get(Cartridge_MD5);
|
||||
myMD5->setLabel(s);
|
||||
|
||||
s = myGameProperties.get(Cartridge_Manufacturer);
|
||||
myManufacturer->setEditString(s);
|
||||
|
||||
s = myGameProperties.get(Cartridge_ModelNo);
|
||||
myModelNo->setEditString(s);
|
||||
|
||||
s = myGameProperties.get(Cartridge_Rarity);
|
||||
myRarity->setEditString(s);
|
||||
|
||||
s = myGameProperties.get(Cartridge_Note);
|
||||
myNote->setEditString(s);
|
||||
|
||||
s = myGameProperties.get(Cartridge_Sound);
|
||||
mySound->clearSelection();
|
||||
if(s == "MONO") mySound->setSelected(0);
|
||||
else if(s == "STEREO") mySound->setSelected(1);
|
||||
|
||||
s = myGameProperties.get(Cartridge_Type);
|
||||
myType->clearSelection();
|
||||
for(i = 0; i < kNumCartTypes; ++i)
|
||||
{
|
||||
if(s == ourCartridgeList[i][1])
|
||||
break;
|
||||
}
|
||||
myType->setSelected(i);
|
||||
myName->setEditString(myGameProperties.get(Cartridge_Name));
|
||||
myMD5->setLabel(myGameProperties.get(Cartridge_MD5));
|
||||
myManufacturer->setEditString(myGameProperties.get(Cartridge_Manufacturer));
|
||||
myModelNo->setEditString(myGameProperties.get(Cartridge_ModelNo));
|
||||
myRarity->setEditString(myGameProperties.get(Cartridge_Rarity));
|
||||
myNote->setEditString(myGameProperties.get(Cartridge_Note));
|
||||
mySound->setSelected(myGameProperties.get(Cartridge_Sound), "MONO");
|
||||
myType->setSelected(myGameProperties.get(Cartridge_Type), "AUTO-DETECT");
|
||||
|
||||
// Console properties
|
||||
s = myGameProperties.get(Console_LeftDifficulty);
|
||||
myLeftDiff->clearSelection();
|
||||
if(s == "B") myLeftDiff->setSelected(0);
|
||||
else if(s == "A") myLeftDiff->setSelected(1);
|
||||
myLeftDiff->setSelected(myGameProperties.get(Console_LeftDifficulty), "B");
|
||||
myRightDiff->setSelected(myGameProperties.get(Console_RightDifficulty), "B");
|
||||
myTVType->setSelected(myGameProperties.get(Console_TelevisionType), "COLOR");
|
||||
|
||||
s = myGameProperties.get(Console_RightDifficulty);
|
||||
myRightDiff->clearSelection();
|
||||
if(s == "B") myRightDiff->setSelected(0);
|
||||
else if(s == "A") myRightDiff->setSelected(1);
|
||||
|
||||
s = myGameProperties.get(Console_TelevisionType);
|
||||
myTVType->clearSelection();
|
||||
if(s == "COLOR") myTVType->setSelected(0);
|
||||
else if(s == "BLACKANDWHITE") myTVType->setSelected(1);
|
||||
|
||||
s = myGameProperties.get(Console_SwapPorts);
|
||||
myLeftPort->clearSelection();
|
||||
myRightPort->clearSelection();
|
||||
myLeftPort->setSelected(s == "NO" ? 0 : 1);
|
||||
myRightPort->setSelected(s == "NO" ? 1 : 0);
|
||||
const string& swap = myGameProperties.get(Console_SwapPorts);
|
||||
myLeftPort->setSelected((swap == "NO" ? "L" : "R"), "L");
|
||||
myRightPort->setSelected((swap == "NO" ? "R" : "L"), "R");
|
||||
|
||||
// Controller properties
|
||||
s = myGameProperties.get(Controller_Left);
|
||||
myP0Controller->clearSelection();
|
||||
for(i = 0; i < kNumControllerTypes; ++i)
|
||||
{
|
||||
if(s == ourControllerList[i][1])
|
||||
break;
|
||||
}
|
||||
myP0Controller->setSelected(i);
|
||||
|
||||
s = myGameProperties.get(Controller_Right);
|
||||
myP1Controller->clearSelection();
|
||||
for(i = 0; i < kNumControllerTypes; ++i)
|
||||
{
|
||||
if(s == ourControllerList[i][1])
|
||||
break;
|
||||
}
|
||||
myP1Controller->setSelected(i);
|
||||
|
||||
s = myGameProperties.get(Controller_SwapPaddles);
|
||||
mySwapPaddles->clearSelection();
|
||||
if(s == "YES") mySwapPaddles->setSelected(0);
|
||||
else if(s == "NO") mySwapPaddles->setSelected(1);
|
||||
myP0Controller->setSelected(myGameProperties.get(Controller_Left), "JOYSTICK");
|
||||
myP1Controller->setSelected(myGameProperties.get(Controller_Right), "JOYSTICK");
|
||||
mySwapPaddles->setSelected(myGameProperties.get(Controller_SwapPaddles), "NO");
|
||||
|
||||
// Display properties
|
||||
s = myGameProperties.get(Display_Format);
|
||||
myFormat->clearSelection();
|
||||
if(s == "AUTO-DETECT") myFormat->setSelected(0);
|
||||
else if(s == "NTSC") myFormat->setSelected(1);
|
||||
else if(s == "PAL") myFormat->setSelected(2);
|
||||
else if(s == "SECAM") myFormat->setSelected(3);
|
||||
else if(s == "NTSC50") myFormat->setSelected(4);
|
||||
else if(s == "PAL60") myFormat->setSelected(5);
|
||||
else if(s == "SECAM60") myFormat->setSelected(6);
|
||||
myFormat->setSelected(myGameProperties.get(Display_Format), "AUTO-DETECT");
|
||||
myYStart->setEditString(myGameProperties.get(Display_YStart));
|
||||
myHeight->setEditString(myGameProperties.get(Display_Height));
|
||||
|
||||
s = myGameProperties.get(Display_YStart);
|
||||
myYStart->setEditString(s);
|
||||
const string& phos = myGameProperties.get(Display_Phosphor);
|
||||
myPhosphor->setSelected(phos, "NO");
|
||||
myPPBlend->setEnabled(phos != "NO");
|
||||
myPPBlendLabel->setEnabled(phos != "NO");
|
||||
|
||||
s = myGameProperties.get(Display_Height);
|
||||
myHeight->setEditString(s);
|
||||
const string& blend = myGameProperties.get(Display_PPBlend);
|
||||
myPPBlend->setValue(atoi(blend.c_str()));
|
||||
myPPBlendLabel->setLabel(blend);
|
||||
|
||||
s = myGameProperties.get(Display_Phosphor);
|
||||
myPhosphor->clearSelection();
|
||||
myPPBlend->setEnabled(false);
|
||||
myPPBlendLabel->setEnabled(false);
|
||||
if(s == "YES")
|
||||
{
|
||||
myPhosphor->setSelected(0);
|
||||
myPPBlend->setEnabled(true);
|
||||
myPPBlendLabel->setEnabled(true);
|
||||
}
|
||||
else if(s == "NO")
|
||||
myPhosphor->setSelected(1);
|
||||
|
||||
s = myGameProperties.get(Display_PPBlend);
|
||||
myPPBlend->setValue(atoi(s.c_str()));
|
||||
myPPBlendLabel->setLabel(s);
|
||||
|
||||
s = myGameProperties.get(Emulation_HmoveBlanks);
|
||||
myHmoveBlanks->clearSelection();
|
||||
if(s == "YES") myHmoveBlanks->setSelected(0);
|
||||
else if(s == "NO") myHmoveBlanks->setSelected(1);
|
||||
myHmoveBlanks->setSelected(myGameProperties.get(Emulation_HmoveBlanks), "YES");
|
||||
|
||||
myTab->loadConfig();
|
||||
}
|
||||
|
@ -492,101 +435,33 @@ void GameInfoDialog::saveConfig()
|
|||
if(!myPropertiesLoaded)
|
||||
return;
|
||||
|
||||
string s;
|
||||
int i, tag;
|
||||
|
||||
// Cartridge properties
|
||||
s = myName->getEditString();
|
||||
myGameProperties.set(Cartridge_Name, s);
|
||||
|
||||
s = myManufacturer->getEditString();
|
||||
myGameProperties.set(Cartridge_Manufacturer, s);
|
||||
|
||||
s = myModelNo->getEditString();
|
||||
myGameProperties.set(Cartridge_ModelNo, s);
|
||||
|
||||
s = myRarity->getEditString();
|
||||
myGameProperties.set(Cartridge_Rarity, s);
|
||||
|
||||
s = myNote->getEditString();
|
||||
myGameProperties.set(Cartridge_Note, s);
|
||||
|
||||
tag = mySound->getSelected();
|
||||
s = (tag == 0) ? "Mono" : "Stereo";
|
||||
myGameProperties.set(Cartridge_Sound, s);
|
||||
|
||||
tag = myType->getSelected();
|
||||
for(i = 0; i < kNumCartTypes; ++i)
|
||||
{
|
||||
if(i == tag)
|
||||
{
|
||||
myGameProperties.set(Cartridge_Type, ourCartridgeList[i][1]);
|
||||
break;
|
||||
}
|
||||
}
|
||||
myGameProperties.set(Cartridge_Name, myName->getEditString());
|
||||
myGameProperties.set(Cartridge_Manufacturer, myManufacturer->getEditString());
|
||||
myGameProperties.set(Cartridge_ModelNo, myModelNo->getEditString());
|
||||
myGameProperties.set(Cartridge_Rarity, myRarity->getEditString());
|
||||
myGameProperties.set(Cartridge_Note, myNote->getEditString());
|
||||
myGameProperties.set(Cartridge_Sound, mySound->getSelectedTag());
|
||||
myGameProperties.set(Cartridge_Type, myType->getSelectedTag());
|
||||
|
||||
// Console properties
|
||||
tag = myLeftDiff->getSelected();
|
||||
s = (tag == 0) ? "B" : "A";
|
||||
myGameProperties.set(Console_LeftDifficulty, s);
|
||||
|
||||
tag = myRightDiff->getSelected();
|
||||
s = (tag == 0) ? "B" : "A";
|
||||
myGameProperties.set(Console_RightDifficulty, s);
|
||||
|
||||
tag = myTVType->getSelected();
|
||||
s = (tag == 0) ? "Color" : "BlackAndWhite";
|
||||
myGameProperties.set(Console_TelevisionType, s);
|
||||
myGameProperties.set(Console_LeftDifficulty, myLeftDiff->getSelectedTag());
|
||||
myGameProperties.set(Console_RightDifficulty, myRightDiff->getSelectedTag());
|
||||
myGameProperties.set(Console_TelevisionType, myTVType->getSelectedTag());
|
||||
|
||||
// Controller properties
|
||||
tag = myP0Controller->getSelected();
|
||||
for(i = 0; i < kNumControllerTypes; ++i)
|
||||
{
|
||||
if(i == tag)
|
||||
{
|
||||
myGameProperties.set(Controller_Left, ourControllerList[i][1]);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
tag = myP1Controller->getSelected();
|
||||
for(i = 0; i < kNumControllerTypes; ++i)
|
||||
{
|
||||
if(i == tag)
|
||||
{
|
||||
myGameProperties.set(Controller_Right, ourControllerList[i][1]);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
tag = myLeftPort->getSelected();
|
||||
s = (tag == 0) ? "No" : "Yes";
|
||||
myGameProperties.set(Console_SwapPorts, s);
|
||||
|
||||
tag = mySwapPaddles->getSelected();
|
||||
s = (tag == 0) ? "Yes" : "No";
|
||||
myGameProperties.set(Controller_SwapPaddles, s);
|
||||
myGameProperties.set(Controller_Left, myP0Controller->getSelectedTag());
|
||||
myGameProperties.set(Controller_Right, myP1Controller->getSelectedTag());
|
||||
myGameProperties.set(Console_SwapPorts, myLeftPort->getSelectedTag());
|
||||
myGameProperties.set(Controller_SwapPaddles, mySwapPaddles->getSelectedTag());
|
||||
|
||||
// Display properties
|
||||
s = myFormat->getSelectedString(); // use string directly
|
||||
myGameProperties.set(Display_Format, s);
|
||||
|
||||
s = myYStart->getEditString();
|
||||
myGameProperties.set(Display_YStart, s);
|
||||
|
||||
s = myHeight->getEditString();
|
||||
myGameProperties.set(Display_Height, s);
|
||||
|
||||
tag = myPhosphor->getSelected();
|
||||
s = (tag == 0) ? "Yes" : "No";
|
||||
myGameProperties.set(Display_Phosphor, s);
|
||||
|
||||
s = myPPBlendLabel->getLabel();
|
||||
myGameProperties.set(Display_PPBlend, s);
|
||||
|
||||
tag = myHmoveBlanks->getSelected();
|
||||
s = (tag == 0) ? "Yes" : "No";
|
||||
myGameProperties.set(Emulation_HmoveBlanks, s);
|
||||
myGameProperties.set(Display_Format, myFormat->getSelectedTag());
|
||||
myGameProperties.set(Display_YStart, myYStart->getEditString());
|
||||
myGameProperties.set(Display_Height, myHeight->getEditString());
|
||||
myGameProperties.set(Display_Phosphor, myPhosphor->getSelectedTag());
|
||||
myGameProperties.set(Display_PPBlend, myPPBlendLabel->getLabel());
|
||||
myGameProperties.set(Emulation_HmoveBlanks, myHmoveBlanks->getSelectedTag());
|
||||
|
||||
// Determine whether to add or remove an entry from the properties set
|
||||
if(myDefaultsSelected)
|
||||
|
@ -639,7 +514,7 @@ void GameInfoDialog::handleCommand(CommandSender* sender, int cmd,
|
|||
|
||||
case kPhosphorChanged:
|
||||
{
|
||||
bool status = myPhosphor->getSelected() == 0 ? true : false;
|
||||
bool status = myPhosphor->getSelectedTag() == "YES";
|
||||
myPPBlend->setEnabled(status);
|
||||
myPPBlendLabel->setEnabled(status);
|
||||
break;
|
||||
|
@ -654,46 +529,3 @@ void GameInfoDialog::handleCommand(CommandSender* sender, int cmd,
|
|||
break;
|
||||
}
|
||||
}
|
||||
|
||||
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||
const char* GameInfoDialog::ourControllerList[kNumControllerTypes][2] = {
|
||||
{ "Joystick", "JOYSTICK" },
|
||||
{ "Paddles", "PADDLES" },
|
||||
{ "BoosterGrip", "BOOSTERGRIP" },
|
||||
{ "Driving", "DRIVING" },
|
||||
{ "Keyboard", "KEYBOARD" },
|
||||
{ "CX-22 Trakball", "TRACKBALL22" },
|
||||
{ "CX-80 Mouse", "TRACKBALL80" },
|
||||
{ "AmigaMouse", "AMIGAMOUSE" },
|
||||
{ "AtariVox", "ATARIVOX" },
|
||||
{ "SaveKey", "SAVEKEY" }
|
||||
};
|
||||
|
||||
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||
const char* GameInfoDialog::ourCartridgeList[kNumCartTypes][2] = {
|
||||
{ "Auto-detect", "AUTO-DETECT" },
|
||||
{ "0840 (8K ECONObanking)", "0840" },
|
||||
{ "2K (2K Atari)", "2K" },
|
||||
{ "3E (32K Tigervision)", "3E" },
|
||||
{ "3F (512K Tigervision)", "3F" },
|
||||
{ "4A50 (64K 4A50 + ram)", "4A50" },
|
||||
{ "4K (4K Atari)", "4K" },
|
||||
{ "AR (Supercharger)", "AR" },
|
||||
{ "CV (Commavid extra ram)", "CV" },
|
||||
{ "DPC (Pitfall II)", "DPC" },
|
||||
{ "E0 (8K Parker Bros)", "E0" },
|
||||
{ "E7 (16K M-network)", "E7" },
|
||||
{ "F4 (32K Atari)", "F4" },
|
||||
{ "F4SC (32K Atari + ram)", "F4SC" },
|
||||
{ "F6 (16K Atari)", "F6" },
|
||||
{ "F6SC (16K Atari + ram)", "F6SC" },
|
||||
{ "F8 (8K Atari)", "F8" },
|
||||
{ "F8SC (8K Atari + ram)", "F8SC" },
|
||||
{ "FASC (CBS RAM Plus)", "FASC" },
|
||||
{ "FE (8K Decathlon)", "FE" },
|
||||
{ "MB (Dynacom Megaboy)", "MB" },
|
||||
{ "MC (C. Wilkson Megacart)", "MC" },
|
||||
{ "SB (128-256k SUPERbanking)", "SB" },
|
||||
{ "UA (8K UA Ltd.)", "UA" },
|
||||
{ "X07 (64K AtariAge)", "X07" }
|
||||
};
|
||||
|
|
|
@ -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: GameInfoDialog.hxx,v 1.33 2008-05-12 22:40:26 stephena Exp $
|
||||
// $Id: GameInfoDialog.hxx,v 1.34 2008-07-25 12:41:41 stephena Exp $
|
||||
//
|
||||
// Based on code from ScummVM - Scumm Interpreter
|
||||
// Copyright (C) 2002-2004 The ScummVM project
|
||||
|
@ -87,19 +87,11 @@ class GameInfoDialog : public Dialog, public CommandSender
|
|||
StaticTextWidget* myPPBlendLabel;
|
||||
PopUpWidget* myHmoveBlanks;
|
||||
|
||||
// Structure used for cartridge and controller types
|
||||
struct PropType {
|
||||
const char* name;
|
||||
const char* comparitor;
|
||||
};
|
||||
|
||||
enum {
|
||||
kLeftCChanged = 'LCch',
|
||||
kRightCChanged = 'RCch',
|
||||
kPhosphorChanged = 'PPch',
|
||||
kPPBlendChanged = 'PBch',
|
||||
kNumCartTypes = 25,
|
||||
kNumControllerTypes = 10
|
||||
kPPBlendChanged = 'PBch'
|
||||
};
|
||||
|
||||
/** Game properties for currently loaded ROM */
|
||||
|
@ -110,12 +102,6 @@ class GameInfoDialog : public Dialog, public CommandSender
|
|||
|
||||
/** Indicates that the default properties have been loaded */
|
||||
bool myDefaultsSelected;
|
||||
|
||||
/** Holds static strings for Cartridge type */
|
||||
static const char* ourCartridgeList[kNumCartTypes][2];
|
||||
|
||||
/** Holds static strings for Controller type */
|
||||
static const char* ourControllerList[kNumControllerTypes][2];
|
||||
};
|
||||
|
||||
#endif
|
||||
|
|
|
@ -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: InputDialog.cxx,v 1.33 2008-06-13 13:14:51 stephena Exp $
|
||||
// $Id: InputDialog.cxx,v 1.34 2008-07-25 12:41:41 stephena Exp $
|
||||
//============================================================================
|
||||
|
||||
#include "bspf.hxx"
|
||||
|
@ -99,7 +99,7 @@ void InputDialog::addVDeviceTab(const GUI::Font& font)
|
|||
fontHeight = font.getFontHeight();
|
||||
int xpos, ypos, lwidth, pwidth, tabID;
|
||||
WidgetArray wid;
|
||||
StringList items;
|
||||
StringMap items;
|
||||
|
||||
// Virtual device/ports
|
||||
tabID = myTab->addTab("Virtual Devs");
|
||||
|
@ -110,8 +110,8 @@ void InputDialog::addVDeviceTab(const GUI::Font& font)
|
|||
pwidth = font.getStringWidth("right virtual port");
|
||||
|
||||
items.clear();
|
||||
items.push_back("left virtual port");
|
||||
items.push_back("right virtual port");
|
||||
items.push_back("left virtual port", "left");
|
||||
items.push_back("right virtual port", "right");
|
||||
myLeftPort = new PopUpWidget(myTab, font, xpos, ypos, pwidth, lineHeight, items,
|
||||
"Stelladaptor 1 is: ", lwidth, kLeftChanged);
|
||||
wid.push_back(myLeftPort);
|
||||
|
@ -205,8 +205,8 @@ void InputDialog::loadConfig()
|
|||
void InputDialog::saveConfig()
|
||||
{
|
||||
// Left & right ports
|
||||
const string& sa1 = myLeftPort->getSelected() == 1 ? "right" : "left";
|
||||
const string& sa2 = myRightPort->getSelected() == 1 ? "right" : "left";
|
||||
const string& sa1 = myLeftPort->getSelectedTag();
|
||||
const string& sa2 = myRightPort->getSelectedTag();
|
||||
instance().eventHandler().mapStelladaptors(sa1, sa2);
|
||||
|
||||
// Joystick deadzone
|
||||
|
|
|
@ -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: PopUpWidget.cxx,v 1.41 2008-06-19 12:01:31 stephena Exp $
|
||||
// $Id: PopUpWidget.cxx,v 1.42 2008-07-25 12:41:41 stephena Exp $
|
||||
//
|
||||
// Based on code from ScummVM - Scumm Interpreter
|
||||
// Copyright (C) 2002-2004 The ScummVM project
|
||||
|
@ -43,7 +43,7 @@ static unsigned int up_down_arrows[8] = {
|
|||
|
||||
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||
PopUpWidget::PopUpWidget(GuiObject* boss, const GUI::Font& font,
|
||||
int x, int y, int w, int h, const StringList& list,
|
||||
int x, int y, int w, int h, const StringMap& list,
|
||||
const string& label, int labelWidth, int cmd)
|
||||
: Widget(boss, font, x, y - 1, w, h + 2),
|
||||
CommandSender(boss),
|
||||
|
@ -133,7 +133,7 @@ void PopUpWidget::drawWidget(bool hilite)
|
|||
!isEnabled() ? kColor : hilite ? kTextColorHi : kTextColor);
|
||||
|
||||
// Draw the selected entry, if any
|
||||
const string& name = myMenu->getSelectedString();
|
||||
const string& name = myMenu->getSelectedName();
|
||||
TextAlignment align = (_font->getStringWidth(name) > w-6) ?
|
||||
kTextAlignRight : kTextAlignLeft;
|
||||
s.drawString(_font, name, x+2, _y+myTextY, w-6,
|
||||
|
|
|
@ -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: PopUpWidget.hxx,v 1.21 2008-06-13 13:14:51 stephena Exp $
|
||||
// $Id: PopUpWidget.hxx,v 1.22 2008-07-25 12:41:41 stephena Exp $
|
||||
//
|
||||
// Based on code from ScummVM - Scumm Interpreter
|
||||
// Copyright (C) 2002-2004 The ScummVM project
|
||||
|
@ -44,19 +44,24 @@ class PopUpWidget : public Widget, public CommandSender
|
|||
{
|
||||
public:
|
||||
PopUpWidget(GuiObject* boss, const GUI::Font& font,
|
||||
int x, int y, int w, int h, const StringList& items,
|
||||
int x, int y, int w, int h, const StringMap& items,
|
||||
const string& label, int labelWidth = 0, int cmd = 0);
|
||||
~PopUpWidget();
|
||||
|
||||
/** Add the given items to the widget. */
|
||||
|
||||
/** Various selection methods passed directly to the underlying menu
|
||||
See ContextMenu.hxx for more information. */
|
||||
void setSelected(int item) { myMenu->setSelected(item); }
|
||||
void setSelected(const string& name) { myMenu->setSelected(name); }
|
||||
void setSelectedMax() { myMenu->setSelectedMax(); }
|
||||
void clearSelection() { myMenu->clearSelection(); }
|
||||
void addItems(const StringMap& items) { myMenu->addItems(items); }
|
||||
void setSelected(int item) { myMenu->setSelected(item); }
|
||||
void setSelected(const string& tag,
|
||||
const string& def) { myMenu->setSelected(tag, def); }
|
||||
void setSelectedMax() { myMenu->setSelectedMax(); }
|
||||
void clearSelection() { myMenu->clearSelection(); }
|
||||
|
||||
int getSelected() const { return myMenu->getSelected(); }
|
||||
const string& getSelectedString() const { return myMenu->getSelectedString(); }
|
||||
int getSelected() const { return myMenu->getSelected(); }
|
||||
const string& getSelectedName() const { return myMenu->getSelectedName(); }
|
||||
const string& getSelectedTag() const { return myMenu->getSelectedTag(); }
|
||||
|
||||
bool wantsFocus() { return true; }
|
||||
|
||||
|
|
|
@ -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: StringList.hxx,v 1.8 2008-02-06 13:45:24 stephena Exp $
|
||||
// $Id: StringList.hxx,v 1.9 2008-07-25 12:41:41 stephena Exp $
|
||||
//
|
||||
// Based on code from ScummVM - Scumm Interpreter
|
||||
// Copyright (C) 2002-2004 The ScummVM project
|
||||
|
@ -62,4 +62,14 @@ class StringList : public Common::Array<string>
|
|||
}
|
||||
};
|
||||
|
||||
class StringMap : public Common::Array< pair<string,string> >
|
||||
{
|
||||
public:
|
||||
void push_back(const string& name, const string& tag)
|
||||
{
|
||||
ensureCapacity(_size + 1);
|
||||
_data[_size++] = make_pair(name, tag);
|
||||
}
|
||||
};
|
||||
|
||||
#endif
|
||||
|
|
|
@ -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: UIDialog.cxx,v 1.14 2008-06-13 13:14:52 stephena Exp $
|
||||
// $Id: UIDialog.cxx,v 1.15 2008-07-25 12:41:41 stephena Exp $
|
||||
//
|
||||
// Based on code from ScummVM - Scumm Interpreter
|
||||
// Copyright (C) 2002-2004 The ScummVM project
|
||||
|
@ -48,7 +48,7 @@ UIDialog::UIDialog(OSystem* osystem, DialogContainer* parent,
|
|||
int xpos, ypos, tabID;
|
||||
int lwidth, pwidth = font.getStringWidth("Standard");
|
||||
WidgetArray wid;
|
||||
StringList items;
|
||||
StringMap items;
|
||||
|
||||
// Set real dimensions
|
||||
// _w = 36 * fontWidth + 10;
|
||||
|
@ -97,8 +97,8 @@ UIDialog::UIDialog(OSystem* osystem, DialogContainer* parent,
|
|||
|
||||
// Launcher font
|
||||
items.clear();
|
||||
items.push_back("Small");
|
||||
items.push_back("Large");
|
||||
items.push_back("Small", "small");
|
||||
items.push_back("Large", "large");
|
||||
myLauncherFontPopup =
|
||||
new PopUpWidget(myTab, font, xpos, ypos+1, pwidth, lineHeight, items,
|
||||
"Launcher Font: ", lwidth);
|
||||
|
@ -176,8 +176,8 @@ UIDialog::UIDialog(OSystem* osystem, DialogContainer* parent,
|
|||
// UI Palette
|
||||
ypos += 1;
|
||||
items.clear();
|
||||
items.push_back("Standard");
|
||||
items.push_back("Classic");
|
||||
items.push_back("Standard", "1");
|
||||
items.push_back("Classic", "2");
|
||||
myPalettePopup = new PopUpWidget(myTab, font, xpos, ypos, pwidth, lineHeight,
|
||||
items, "Interface Palette: ", lwidth);
|
||||
wid.push_back(myPalettePopup);
|
||||
|
@ -249,11 +249,10 @@ void UIDialog::loadConfig()
|
|||
|
||||
// Launcher font
|
||||
const string& s = instance().settings().getString("launcherfont");
|
||||
myLauncherFontPopup->setSelected(s == "large" ? 1 : 0);
|
||||
myLauncherFontPopup->setSelected(s, "small");
|
||||
|
||||
// ROM launcher info viewer
|
||||
bool b = instance().settings().getBool("romviewer");
|
||||
myRomViewerCheckbox->setState(b);
|
||||
myRomViewerCheckbox->setState(instance().settings().getBool("romviewer"));
|
||||
|
||||
// Debugger size
|
||||
instance().settings().getSize("debuggerres", w, h);
|
||||
|
@ -268,9 +267,8 @@ void UIDialog::loadConfig()
|
|||
myDebuggerHeightLabel->setValue(h);
|
||||
|
||||
// UI palette
|
||||
int i = instance().settings().getInt("uipalette");
|
||||
if(i < 1 || i > 2) i = 1;
|
||||
myPalettePopup->setSelected(i-1);
|
||||
const string& pal = instance().settings().getString("uipalette");
|
||||
myPalettePopup->setSelected(pal, "1");
|
||||
|
||||
// Mouse wheel lines
|
||||
int mw = instance().settings().getInt("mwheel");
|
||||
|
@ -290,7 +288,7 @@ void UIDialog::saveConfig()
|
|||
|
||||
// Launcher font
|
||||
instance().settings().setString("launcherfont",
|
||||
myLauncherFontPopup->getSelected() == 1 ? "large" : "small");
|
||||
myLauncherFontPopup->getSelectedTag());
|
||||
|
||||
// ROM launcher info viewer
|
||||
instance().settings().setBool("romviewer", myRomViewerCheckbox->getState());
|
||||
|
@ -300,8 +298,8 @@ void UIDialog::saveConfig()
|
|||
myDebuggerWidthSlider->getValue(), myDebuggerHeightSlider->getValue());
|
||||
|
||||
// UI palette
|
||||
instance().settings().setInt("uipalette",
|
||||
myPalettePopup->getSelected() + 1);
|
||||
instance().settings().setString("uipalette",
|
||||
myPalettePopup->getSelectedTag());
|
||||
|
||||
// Mouse wheel lines
|
||||
int mw = myWheelLinesSlider->getValue();
|
||||
|
@ -334,7 +332,7 @@ void UIDialog::setDefaults()
|
|||
break;
|
||||
|
||||
case 2: // Misc. options
|
||||
myPalettePopup->setSelected(0);
|
||||
myPalettePopup->setSelected("1", "1");
|
||||
myWheelLinesSlider->setValue(4);
|
||||
myWheelLinesLabel->setValue(4);
|
||||
break;
|
||||
|
|
|
@ -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: VideoDialog.cxx,v 1.53 2008-07-22 14:54:39 stephena Exp $
|
||||
// $Id: VideoDialog.cxx,v 1.54 2008-07-25 12:41:41 stephena Exp $
|
||||
//
|
||||
// Based on code from ScummVM - Scumm Interpreter
|
||||
// Copyright (C) 2002-2004 The ScummVM project
|
||||
|
@ -49,7 +49,7 @@ VideoDialog::VideoDialog(OSystem* osystem, DialogContainer* parent,
|
|||
int lwidth = font.getStringWidth("Dirty Rects: "),
|
||||
pwidth = font.getStringWidth("1920x1200");
|
||||
WidgetArray wid;
|
||||
StringList items;
|
||||
StringMap items;
|
||||
|
||||
// Set real dimensions
|
||||
// _w = 46 * fontWidth + 10;
|
||||
|
@ -59,9 +59,9 @@ VideoDialog::VideoDialog(OSystem* osystem, DialogContainer* parent,
|
|||
|
||||
// Video renderer
|
||||
items.clear();
|
||||
items.push_back("Software");
|
||||
items.push_back("Software", "soft");
|
||||
#ifdef DISPLAY_OPENGL
|
||||
items.push_back("OpenGL");
|
||||
items.push_back("OpenGL", "gl");
|
||||
#endif
|
||||
myRendererPopup = new PopUpWidget(this, font, xpos, ypos, pwidth, lineHeight,
|
||||
items, "Renderer: ", lwidth,
|
||||
|
@ -69,79 +69,52 @@ VideoDialog::VideoDialog(OSystem* osystem, DialogContainer* parent,
|
|||
wid.push_back(myRendererPopup);
|
||||
ypos += lineHeight + 4;
|
||||
|
||||
// Video filter
|
||||
// TIA filters (will be dynamically filled later)
|
||||
items.clear();
|
||||
items.push_back("Linear");
|
||||
items.push_back("Nearest");
|
||||
myFilterPopup = new PopUpWidget(this, font, xpos, ypos, pwidth, lineHeight,
|
||||
items, "GL Filter: ", lwidth);
|
||||
wid.push_back(myFilterPopup);
|
||||
myTIAFilterPopup = new PopUpWidget(this, font, xpos, ypos, pwidth,
|
||||
lineHeight, items, "TIA Filter: ", lwidth);
|
||||
wid.push_back(myTIAFilterPopup);
|
||||
ypos += lineHeight + 4;
|
||||
|
||||
// GL FS stretch
|
||||
// TIA Palette
|
||||
items.clear();
|
||||
items.push_back("Never");
|
||||
items.push_back("UI mode");
|
||||
items.push_back("TIA mode");
|
||||
items.push_back("Always");
|
||||
myFSStretchPopup = new PopUpWidget(this, font, xpos, ypos, pwidth, lineHeight,
|
||||
items, "GL Stretch: ", lwidth);
|
||||
wid.push_back(myFSStretchPopup);
|
||||
ypos += lineHeight + 4;
|
||||
|
||||
// Palette
|
||||
items.clear();
|
||||
items.push_back("Standard");
|
||||
items.push_back("Z26");
|
||||
items.push_back("User");
|
||||
myPalettePopup = new PopUpWidget(this, font, xpos, ypos, pwidth,
|
||||
lineHeight, items, "Palette: ", lwidth);
|
||||
wid.push_back(myPalettePopup);
|
||||
items.push_back("Standard", "standard");
|
||||
items.push_back("Z26", "z26");
|
||||
items.push_back("User", "user");
|
||||
myTIAPalettePopup = new PopUpWidget(this, font, xpos, ypos, pwidth,
|
||||
lineHeight, items, "TIA Palette: ", lwidth);
|
||||
wid.push_back(myTIAPalettePopup);
|
||||
ypos += lineHeight + 4;
|
||||
|
||||
// Fullscreen resolution
|
||||
items.clear();
|
||||
items.push_back("Auto");
|
||||
items.push_back("Auto", "auto");
|
||||
for(uInt32 i = 0; i < instance().supportedResolutions().size(); ++i)
|
||||
items.push_back(instance().supportedResolutions()[i].name);
|
||||
items.push_back(instance().supportedResolutions()[i].name,
|
||||
instance().supportedResolutions()[i].name);
|
||||
myFSResPopup = new PopUpWidget(this, font, xpos, ypos, pwidth,
|
||||
lineHeight, items, "FS Res: ", lwidth);
|
||||
wid.push_back(myFSResPopup);
|
||||
ypos += lineHeight + 4;
|
||||
|
||||
#if 0
|
||||
// Available TIA filters
|
||||
// GL Video filter
|
||||
items.clear();
|
||||
for(uInt32 i = 0; i < instance().frameBuffer().supportedTIAFilters().size(); ++i)
|
||||
items.push_back(instance().supportedResolutions()[i].name);
|
||||
myFSResPopup = new PopUpWidget(this, font, xpos, ypos, pwidth,
|
||||
lineHeight, items, "FS Res: ", lwidth);
|
||||
wid.push_back(myFSResPopup);
|
||||
items.push_back("Linear", "linear");
|
||||
items.push_back("Nearest", "nearest");
|
||||
myGLFilterPopup = new PopUpWidget(this, font, xpos, ypos, pwidth, lineHeight,
|
||||
items, "GL Filter: ", lwidth);
|
||||
wid.push_back(myGLFilterPopup);
|
||||
ypos += lineHeight + 4;
|
||||
#endif
|
||||
|
||||
#if 0
|
||||
// Available UI zoom levels
|
||||
myUIZoomSlider = new SliderWidget(this, font, xpos, ypos, pwidth, lineHeight,
|
||||
"UI Zoom: ", lwidth, kUIZoomChanged);
|
||||
myUIZoomSlider->setMinValue(1); myUIZoomSlider->setMaxValue(10);
|
||||
wid.push_back(myUIZoomSlider);
|
||||
myUIZoomLabel =
|
||||
new StaticTextWidget(this, font, xpos + myUIZoomSlider->getWidth() + 4,
|
||||
ypos + 1, fontWidth * 2, fontHeight, "", kTextAlignLeft);
|
||||
myUIZoomLabel->setFlags(WIDGET_CLEARBG);
|
||||
ypos += lineHeight + 4;
|
||||
#endif
|
||||
|
||||
// Available TIA zoom levels
|
||||
myTIAZoomSlider = new SliderWidget(this, font, xpos, ypos, pwidth, lineHeight,
|
||||
"TIA Zoom: ", lwidth, kTIAZoomChanged);
|
||||
myTIAZoomSlider->setMinValue(1); myTIAZoomSlider->setMaxValue(10);
|
||||
wid.push_back(myTIAZoomSlider);
|
||||
myTIAZoomLabel =
|
||||
new StaticTextWidget(this, font, xpos + myTIAZoomSlider->getWidth() + 4,
|
||||
ypos + 1, fontWidth * 2, fontHeight, "", kTextAlignLeft);
|
||||
myTIAZoomLabel->setFlags(WIDGET_CLEARBG);
|
||||
// GL FS stretch
|
||||
items.clear();
|
||||
items.push_back("Never", "never");
|
||||
items.push_back("UI mode", "ui");
|
||||
items.push_back("TIA mode", "tia");
|
||||
items.push_back("Always", "always");
|
||||
myGLStretchPopup = new PopUpWidget(this, font, xpos, ypos, pwidth, lineHeight,
|
||||
items, "GL Stretch: ", lwidth);
|
||||
wid.push_back(myGLStretchPopup);
|
||||
ypos += lineHeight + 4;
|
||||
|
||||
// GL aspect ratio
|
||||
|
@ -212,15 +185,13 @@ VideoDialog::VideoDialog(OSystem* osystem, DialogContainer* parent,
|
|||
|
||||
// Disable certain functions when we know they aren't present
|
||||
#ifndef DISPLAY_GL
|
||||
myFilterPopup->clearFlags(WIDGET_ENABLED);
|
||||
myGLFilterPopup->clearFlags(WIDGET_ENABLED);
|
||||
myGLStretchPopup->clearFlags(WIDGET_ENABLED);
|
||||
myAspectRatioSlider->clearFlags(WIDGET_ENABLED);
|
||||
myAspectRatioLabel->clearFlags(WIDGET_ENABLED);
|
||||
myFSStretchPopup->clearFlags(WIDGET_ENABLED);
|
||||
myUseVSyncCheckbox->clearFlags(WIDGET_ENABLED);
|
||||
#endif
|
||||
#ifndef WINDOWED_SUPPORT
|
||||
myTIAZoomSlider->clearFlags(WIDGET_ENABLED);
|
||||
myTIAZoomLabel->clearFlags(WIDGET_ENABLED);
|
||||
myFullscreenCheckbox->clearFlags(WIDGET_ENABLED);
|
||||
myCenterCheckbox->clearFlags(WIDGET_ENABLED);
|
||||
#endif
|
||||
|
@ -234,135 +205,84 @@ VideoDialog::~VideoDialog()
|
|||
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||
void VideoDialog::loadConfig()
|
||||
{
|
||||
string s;
|
||||
bool b;
|
||||
int i;
|
||||
|
||||
// Renderer setting
|
||||
s = BSPF_tolower(instance().settings().getString("video"));
|
||||
myRendererPopup->clearSelection();
|
||||
if(s == "soft") myRendererPopup->setSelected(0);
|
||||
else if(s == "gl") myRendererPopup->setSelected(1);
|
||||
myRendererPopup->setSelected(
|
||||
instance().settings().getString("video"), "soft");
|
||||
|
||||
// Filter setting
|
||||
s = BSPF_tolower(instance().settings().getString("gl_filter"));
|
||||
myFilterPopup->clearSelection();
|
||||
if(s == "linear") myFilterPopup->setSelected(0);
|
||||
else if(s == "nearest") myFilterPopup->setSelected(1);
|
||||
// TIA Filter
|
||||
// taken care of in ::handleRendererChange()
|
||||
|
||||
// GL stretch setting
|
||||
s = BSPF_tolower(instance().settings().getString("gl_fsmax"));
|
||||
myFSStretchPopup->clearSelection();
|
||||
if(s == "never") myFSStretchPopup->setSelected(0);
|
||||
else if(s == "ui") myFSStretchPopup->setSelected(1);
|
||||
else if(s == "tia") myFSStretchPopup->setSelected(2);
|
||||
else if(s == "always") myFSStretchPopup->setSelected(3);
|
||||
|
||||
// Palette
|
||||
s = BSPF_tolower(instance().settings().getString("palette"));
|
||||
myPalettePopup->clearSelection();
|
||||
if(s == "standard") myPalettePopup->setSelected(0);
|
||||
else if(s == "z26") myPalettePopup->setSelected(1);
|
||||
else if(s == "user") myPalettePopup->setSelected(2);
|
||||
// TIA Palette
|
||||
myTIAPalettePopup->setSelected(
|
||||
instance().settings().getString("palette"), "standard");
|
||||
|
||||
// Fullscreen resolution
|
||||
s = BSPF_tolower(instance().settings().getString("fullres"));
|
||||
myFSResPopup->clearSelection();
|
||||
if(s == "auto") myFSResPopup->setSelected(0);
|
||||
else myFSResPopup->setSelected(s);
|
||||
if(myFSResPopup->getSelected() < 0)
|
||||
myFSResPopup->setSelectedMax();
|
||||
myFSResPopup->setSelected(
|
||||
instance().settings().getString("fullres"), "auto");
|
||||
|
||||
/*
|
||||
// TIA zoom level
|
||||
s = instance().settings().getString("zoom_tia");
|
||||
i = instance().settings().getInt("zoom_tia");
|
||||
myTIAZoomSlider->setValue(i);
|
||||
myTIAZoomLabel->setLabel(s);
|
||||
*/
|
||||
// GL Filter setting
|
||||
myGLFilterPopup->setSelected(
|
||||
instance().settings().getString("gl_filter"), "linear");
|
||||
|
||||
// GL stretch setting
|
||||
myGLStretchPopup->setSelected(
|
||||
instance().settings().getString("gl_fsmax"), "never");
|
||||
|
||||
// GL aspect ratio setting
|
||||
s = instance().settings().getString("gl_aspect");
|
||||
i = instance().settings().getInt("gl_aspect");
|
||||
myAspectRatioSlider->setValue(i);
|
||||
myAspectRatioLabel->setLabel(s);
|
||||
myAspectRatioSlider->setValue(instance().settings().getInt("gl_aspect"));
|
||||
myAspectRatioLabel->setLabel(instance().settings().getString("gl_aspect"));
|
||||
|
||||
// Framerate (0 or -1 means disabled)
|
||||
s = instance().settings().getString("framerate");
|
||||
i = instance().settings().getInt("framerate");
|
||||
myFrameRateSlider->setValue(i < 0 ? 0 : i);
|
||||
myFrameRateLabel->setLabel(i < 0 ? "0" : s);
|
||||
int rate = instance().settings().getInt("framerate");
|
||||
myFrameRateSlider->setValue(rate < 0 ? 0 : rate);
|
||||
myFrameRateLabel->setLabel(rate < 0 ? "0" :
|
||||
instance().settings().getString("framerate"));
|
||||
|
||||
// Fullscreen
|
||||
b = instance().settings().getBool("fullscreen");
|
||||
bool b = instance().settings().getBool("fullscreen");
|
||||
myFullscreenCheckbox->setState(b);
|
||||
handleFullscreenChange(b);
|
||||
|
||||
// PAL color-loss effect
|
||||
b = instance().settings().getBool("colorloss");
|
||||
myColorLossCheckbox->setState(b);
|
||||
myColorLossCheckbox->setState(instance().settings().getBool("colorloss"));
|
||||
|
||||
// Use sync to vertical blank (GL mode only)
|
||||
b = instance().settings().getBool("gl_vsync");
|
||||
myUseVSyncCheckbox->setState(b);
|
||||
myUseVSyncCheckbox->setState(instance().settings().getBool("gl_vsync"));
|
||||
|
||||
// Center window
|
||||
b = instance().settings().getBool("center");
|
||||
myCenterCheckbox->setState(b);
|
||||
myCenterCheckbox->setState(instance().settings().getBool("center"));
|
||||
|
||||
// Make sure that mutually-exclusive items are not enabled at the same time
|
||||
i = myRendererPopup->getSelected();
|
||||
handleRendererChange(i);
|
||||
// Also, this sets the TIA filters, so it cannot be removed from here
|
||||
handleRendererChange(myRendererPopup->getSelectedTag());
|
||||
}
|
||||
|
||||
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||
void VideoDialog::saveConfig()
|
||||
{
|
||||
string s;
|
||||
int i;
|
||||
bool b;
|
||||
|
||||
// Renderer setting
|
||||
i = myRendererPopup->getSelected();
|
||||
if(i == 0) s = "soft";
|
||||
else if(i == 1) s = "gl";
|
||||
instance().settings().setString("video", s);
|
||||
instance().settings().setString("video", myRendererPopup->getSelectedTag());
|
||||
|
||||
// Filter setting
|
||||
i = myFilterPopup->getSelected();
|
||||
if(i == 0) s = "linear";
|
||||
else if(i == 1) s = "nearest";
|
||||
instance().settings().setString("gl_filter", s);
|
||||
// TIA Filter
|
||||
instance().settings().setString("tia_filter", myTIAFilterPopup->getSelectedTag());
|
||||
|
||||
// GL stretch setting
|
||||
i = myFSStretchPopup->getSelected();
|
||||
if(i == 0) s = "never";
|
||||
else if(i == 1) s = "ui";
|
||||
else if(i == 2) s = "tia";
|
||||
else if(i == 3) s = "always";
|
||||
instance().settings().setString("gl_fsmax", s);
|
||||
|
||||
// Palette
|
||||
i = myPalettePopup->getSelected();
|
||||
if(i == 0) s = "standard";
|
||||
else if(i == 1) s = "z26";
|
||||
else if(i == 2) s = "user";
|
||||
instance().settings().setString("palette", s);
|
||||
// TIA Palette
|
||||
instance().settings().setString("palette", myTIAPalettePopup->getSelectedTag());
|
||||
|
||||
// Fullscreen resolution
|
||||
s = myFSResPopup->getSelectedString();
|
||||
instance().settings().setString("fullres", s);
|
||||
instance().settings().setString("fullres", myFSResPopup->getSelectedTag());
|
||||
|
||||
// TIA Scaler
|
||||
s = myTIAZoomLabel->getLabel();
|
||||
instance().settings().setString("zoom_tia", s);
|
||||
// GL Filter setting
|
||||
instance().settings().setString("gl_filter", myGLFilterPopup->getSelectedTag());
|
||||
|
||||
// GL stretch setting
|
||||
instance().settings().setString("gl_fsmax", myGLStretchPopup->getSelectedTag());
|
||||
|
||||
// GL aspect ratio setting
|
||||
s = myAspectRatioLabel->getLabel();
|
||||
instance().settings().setString("gl_aspect", s);
|
||||
instance().settings().setString("gl_aspect", myAspectRatioLabel->getLabel());
|
||||
|
||||
// Framerate
|
||||
i = myFrameRateSlider->getValue();
|
||||
int i = myFrameRateSlider->getValue();
|
||||
instance().settings().setInt("framerate", i);
|
||||
if(&instance().console())
|
||||
{
|
||||
|
@ -372,20 +292,16 @@ void VideoDialog::saveConfig()
|
|||
}
|
||||
|
||||
// Fullscreen
|
||||
b = myFullscreenCheckbox->getState();
|
||||
instance().settings().setBool("fullscreen", b);
|
||||
instance().settings().setBool("fullscreen", myFullscreenCheckbox->getState());
|
||||
|
||||
// PAL color-loss effect
|
||||
b = myColorLossCheckbox->getState();
|
||||
instance().settings().setBool("colorloss", b);
|
||||
instance().settings().setBool("colorloss", myColorLossCheckbox->getState());
|
||||
|
||||
// Use sync to vertical blank (GL mode only)
|
||||
b = myUseVSyncCheckbox->getState();
|
||||
instance().settings().setBool("gl_vsync", b);
|
||||
instance().settings().setBool("gl_vsync", myUseVSyncCheckbox->getState());
|
||||
|
||||
// Center window
|
||||
b = myCenterCheckbox->getState();
|
||||
instance().settings().setBool("center", b);
|
||||
instance().settings().setBool("center", myCenterCheckbox->getState());
|
||||
|
||||
// Finally, issue a complete framebuffer re-initialization
|
||||
instance().createFrameBuffer(false);
|
||||
|
@ -394,13 +310,17 @@ void VideoDialog::saveConfig()
|
|||
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||
void VideoDialog::setDefaults()
|
||||
{
|
||||
myRendererPopup->setSelected(0);
|
||||
myFilterPopup->setSelected(0);
|
||||
myFSStretchPopup->setSelected(0);
|
||||
myPalettePopup->setSelected(0);
|
||||
myFSResPopup->setSelectedMax();
|
||||
myTIAZoomSlider->setValue(2);
|
||||
myTIAZoomLabel->setLabel("2");
|
||||
myRendererPopup->setSelected("soft", "");
|
||||
myTIAFilterPopup->setSelected(
|
||||
#ifdef SMALL_SCREEN
|
||||
"zoom1x", "");
|
||||
#else
|
||||
"zoom2x", "");
|
||||
#endif
|
||||
myTIAPalettePopup->setSelected("standard", "");
|
||||
myFSResPopup->setSelected("auto", "");
|
||||
myGLFilterPopup->setSelected("linear", "");
|
||||
myGLStretchPopup->setSelected("never", "");
|
||||
myAspectRatioSlider->setValue(100);
|
||||
myAspectRatioLabel->setLabel("100");
|
||||
myFrameRateSlider->setValue(0);
|
||||
|
@ -412,25 +332,36 @@ void VideoDialog::setDefaults()
|
|||
myCenterCheckbox->setState(true);
|
||||
|
||||
// Make sure that mutually-exclusive items are not enabled at the same time
|
||||
handleRendererChange(0); // 0 indicates software mode
|
||||
handleFullscreenChange(false); // indicates fullscreen deactivated
|
||||
handleRendererChange("soft");
|
||||
handleFullscreenChange(false);
|
||||
}
|
||||
|
||||
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||
void VideoDialog::handleRendererChange(int item)
|
||||
void VideoDialog::handleRendererChange(const string& mode)
|
||||
{
|
||||
// TIA filters are dynamically loaded, since they depend on the size of
|
||||
// the desktop and which renderer we're using
|
||||
const StringMap& items = instance().frameBuffer().supportedTIAFilters(mode);
|
||||
myTIAFilterPopup->addItems(items);
|
||||
myTIAFilterPopup->setSelected(instance().settings().getString("tia_filter"),
|
||||
#ifdef SMALL_SCREEN
|
||||
"zoom1x");
|
||||
#else
|
||||
"zoom2x");
|
||||
#endif
|
||||
|
||||
#ifdef DISPLAY_OPENGL
|
||||
// When we're in software mode, certain OpenGL-related options are disabled
|
||||
bool gl = (item > 0) ? true : false;
|
||||
bool gl = (mode == "gl");
|
||||
|
||||
myFilterPopup->setEnabled(gl);
|
||||
myFSStretchPopup->setEnabled(gl);
|
||||
myGLFilterPopup->setEnabled(gl);
|
||||
myGLStretchPopup->setEnabled(gl);
|
||||
myAspectRatioSlider->setEnabled(gl);
|
||||
myAspectRatioLabel->setEnabled(gl);
|
||||
myUseVSyncCheckbox->setEnabled(gl);
|
||||
#endif
|
||||
|
||||
_dirty = true;
|
||||
#endif
|
||||
}
|
||||
|
||||
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||
|
@ -439,9 +370,6 @@ void VideoDialog::handleFullscreenChange(bool enable)
|
|||
#ifdef WINDOWED_SUPPORT
|
||||
myFSResPopup->setEnabled(enable);
|
||||
|
||||
myTIAZoomSlider->setEnabled(!enable);
|
||||
myTIAZoomLabel->setEnabled(!enable);
|
||||
|
||||
_dirty = true;
|
||||
#endif
|
||||
}
|
||||
|
@ -462,11 +390,7 @@ void VideoDialog::handleCommand(CommandSender* sender, int cmd,
|
|||
break;
|
||||
|
||||
case kRendererChanged:
|
||||
handleRendererChange(data);
|
||||
break;
|
||||
|
||||
case kTIAZoomChanged:
|
||||
myTIAZoomLabel->setValue(myTIAZoomSlider->getValue());
|
||||
handleRendererChange(myRendererPopup->getSelectedTag());
|
||||
break;
|
||||
|
||||
case kAspectRatioChanged:
|
||||
|
|
|
@ -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: VideoDialog.hxx,v 1.23 2008-02-06 13:45:24 stephena Exp $
|
||||
// $Id: VideoDialog.hxx,v 1.24 2008-07-25 12:41:41 stephena Exp $
|
||||
//
|
||||
// Based on code from ScummVM - Scumm Interpreter
|
||||
// Copyright (C) 2002-2004 The ScummVM project
|
||||
|
@ -45,22 +45,19 @@ class VideoDialog : public Dialog
|
|||
void saveConfig();
|
||||
void setDefaults();
|
||||
|
||||
void handleRendererChange(int item);
|
||||
void handleRendererChange(const string& mode);
|
||||
void handleFullscreenChange(bool enable);
|
||||
virtual void handleCommand(CommandSender* sender, int cmd, int data, int id);
|
||||
|
||||
private:
|
||||
PopUpWidget* myRendererPopup;
|
||||
PopUpWidget* myFilterPopup;
|
||||
PopUpWidget* myFSStretchPopup;
|
||||
PopUpWidget* myTIAFilterPopup;
|
||||
PopUpWidget* myTIAPalettePopup;
|
||||
PopUpWidget* myFSResPopup;
|
||||
PopUpWidget* myGLFilterPopup;
|
||||
PopUpWidget* myGLStretchPopup;
|
||||
SliderWidget* myAspectRatioSlider;
|
||||
StaticTextWidget* myAspectRatioLabel;
|
||||
PopUpWidget* myPalettePopup;
|
||||
PopUpWidget* myFSResPopup;
|
||||
SliderWidget* myUIZoomSlider;
|
||||
StaticTextWidget* myUIZoomLabel;
|
||||
SliderWidget* myTIAZoomSlider;
|
||||
StaticTextWidget* myTIAZoomLabel;
|
||||
|
||||
SliderWidget* myFrameRateSlider;
|
||||
StaticTextWidget* myFrameRateLabel;
|
||||
|
@ -72,8 +69,6 @@ class VideoDialog : public Dialog
|
|||
enum {
|
||||
kRendererChanged = 'VDrd',
|
||||
kAspectRatioChanged = 'VDar',
|
||||
kUIZoomChanged = 'VDui',
|
||||
kTIAZoomChanged = 'VDti',
|
||||
kFrameRateChanged = 'VDfr',
|
||||
kFullScrChanged = 'VDfs'
|
||||
};
|
||||
|
|
Loading…
Reference in New Issue