Fixed 'Game Info' button in Options Dialog to only be shown when a valid

ROM has been selected in the ROM launcher (or if we're in emulation mode).

BTW, I forgot to mention in the previous commit that Stella now only
recognizes ROMs if they're named with the following extensions: .bin,
.a26, .rom, .zip, .gz (not case sensitive).  Right now, attempting to
select something else prints an error message.  Eventually, a MessageBox
will be shown indicating that the filename isn't valid.

For now, this restriction is only for files started from the built-in
launcher.  I haven't decided if it should apply to the commandline as well.


git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@1427 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
This commit is contained in:
stephena 2008-03-12 22:04:53 +00:00
parent 3b32d07c1d
commit 90dce82289
7 changed files with 50 additions and 26 deletions

View File

@ -13,7 +13,7 @@
// See the file "license" for information on usage and redistribution of
// this file, and for a DISCLAIMER OF ALL WARRANTIES.
//
// $Id: GameInfoDialog.cxx,v 1.49 2008-02-27 20:13:55 stephena Exp $
// $Id: GameInfoDialog.cxx,v 1.50 2008-03-12 22:04:51 stephena Exp $
//
// Based on code from ScummVM - Scumm Interpreter
// Copyright (C) 2002-2004 The ScummVM project
@ -336,15 +336,11 @@ void GameInfoDialog::loadConfig()
}
else if(&myOSystem->launcher())
{
string file;
const string& md5 = myOSystem->launcher().romMD5(file);
const string& md5 = myOSystem->launcher().selectedRomMD5();
if(md5 != "")
{
instance()->propSet().getMD5(md5, myGameProperties);
myPropertiesLoaded = true;
myGameProperties.set(Cartridge_Name, file);
myGameProperties.set(Cartridge_ModelNo, file);
myGameProperties.set(Cartridge_Manufacturer, file);
loadView();
}
}
@ -640,7 +636,7 @@ void GameInfoDialog::setDefaults()
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
void GameInfoDialog::handleCommand(CommandSender* sender, int cmd,
int data, int id)
int data, int id)
{
switch (cmd)
{
@ -683,6 +679,7 @@ const char* GameInfoDialog::ourControllerList[kNumControllerTypes][2] = {
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
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" },
@ -705,6 +702,5 @@ const char* GameInfoDialog::ourCartridgeList[kNumCartTypes][2] = {
{ "MC (C. Wilkson Megacart)", "MC" },
{ "SB (128-256k SUPERbanking)", "SB" },
{ "UA (8K UA Ltd.)", "UA" },
{ "X07 (64K AtariAge)", "X07" },
{ "0840 (8K ECONObanking)", "0840" }
{ "X07 (64K AtariAge)", "X07" }
};

View File

@ -13,7 +13,7 @@
// See the file "license" for information on usage and redistribution of
// this file, and for a DISCLAIMER OF ALL WARRANTIES.
//
// $Id: Launcher.cxx,v 1.21 2008-02-06 13:45:23 stephena Exp $
// $Id: Launcher.cxx,v 1.22 2008-03-12 22:04:51 stephena Exp $
//============================================================================
#include <sstream>
@ -62,7 +62,7 @@ void Launcher::initializeVideo()
}
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
string Launcher::romMD5(string& file)
string Launcher::selectedRomMD5()
{
return ((LauncherDialog*)myBaseDialog)->selectedRomMD5(file);
return ((LauncherDialog*)myBaseDialog)->selectedRomMD5();
}

View File

@ -13,7 +13,7 @@
// See the file "license" for information on usage and redistribution of
// this file, and for a DISCLAIMER OF ALL WARRANTIES.
//
// $Id: Launcher.hxx,v 1.14 2008-02-06 13:45:24 stephena Exp $
// $Id: Launcher.hxx,v 1.15 2008-03-12 22:04:51 stephena Exp $
//============================================================================
#ifndef LAUNCHER_HXX
@ -28,7 +28,7 @@ class OSystem;
The base dialog for the ROM launcher in Stella.
@author Stephen Anthony
@version $Id: Launcher.hxx,v 1.14 2008-02-06 13:45:24 stephena Exp $
@version $Id: Launcher.hxx,v 1.15 2008-03-12 22:04:51 stephena Exp $
*/
class Launcher : public DialogContainer
{
@ -49,9 +49,9 @@ class Launcher : public DialogContainer
void initializeVideo();
/**
Get game properties for the currently selected ROM.
Wrapper for LauncherDialog::selectedRomMD5() method.
*/
string romMD5(string& file);
string selectedRomMD5();
private:
// The width and height of this dialog

View File

@ -13,7 +13,7 @@
// See the file "license" for information on usage and redistribution of
// this file, and for a DISCLAIMER OF ALL WARRANTIES.
//
// $Id: LauncherDialog.cxx,v 1.77 2008-03-12 19:42:36 stephena Exp $
// $Id: LauncherDialog.cxx,v 1.78 2008-03-12 22:04:52 stephena Exp $
//
// Based on code from ScummVM - Scumm Interpreter
// Copyright (C) 2002-2004 The ScummVM project
@ -172,10 +172,11 @@ LauncherDialog::~LauncherDialog()
}
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
string LauncherDialog::selectedRomMD5(string& file)
string LauncherDialog::selectedRomMD5()
{
int item = myList->getSelected();
if(item < 0 || myGameList->isDir(item))
if(item < 0 || myGameList->isDir(item) ||
!isValidRomName(myGameList->name(item)))
return "";
// Make sure we have a valid md5 for this ROM
@ -183,10 +184,8 @@ string LauncherDialog::selectedRomMD5(string& file)
{
const string& md5 = MD5FromFile(myGameList->path(item));
myGameList->setMd5(item, md5);
return md5;
}
else
return myGameList->md5(item);
return myGameList->md5(item);
}
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

View File

@ -13,7 +13,7 @@
// See the file "license" for information on usage and redistribution of
// this file, and for a DISCLAIMER OF ALL WARRANTIES.
//
// $Id: LauncherDialog.hxx,v 1.32 2008-03-12 19:42:36 stephena Exp $
// $Id: LauncherDialog.hxx,v 1.33 2008-03-12 22:04:53 stephena Exp $
//
// Based on code from ScummVM - Scumm Interpreter
// Copyright (C) 2002-2004 The ScummVM project
@ -54,7 +54,12 @@ class LauncherDialog : public Dialog
int x, int y, int w, int h);
~LauncherDialog();
string selectedRomMD5(string& file);
/**
Get MD5sum for the currently selected file
@return md5sum if a valid ROM file, else the empty string
*/
string selectedRomMD5();
/**
Is this a valid ROM filename (does it have a valid extension?)

View File

@ -13,7 +13,7 @@
// See the file "license" for information on usage and redistribution of
// this file, and for a DISCLAIMER OF ALL WARRANTIES.
//
// $Id: OptionsDialog.cxx,v 1.63 2008-03-12 19:42:36 stephena Exp $
// $Id: OptionsDialog.cxx,v 1.64 2008-03-12 22:04:53 stephena Exp $
//
// Based on code from ScummVM - Scumm Interpreter
// Copyright (C) 2002-2004 The ScummVM project
@ -33,6 +33,7 @@
#include "HelpDialog.hxx"
#include "AboutDialog.hxx"
#include "OptionsDialog.hxx"
#include "Launcher.hxx"
#ifdef CHEATCODE_SUPPORT
#include "CheatCodeDialog.hxx"
@ -183,6 +184,28 @@ OptionsDialog::~OptionsDialog()
delete myAboutDialog;
}
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
void OptionsDialog::loadConfig()
{
// Determine whether we should show the 'Game Information' button
// We always show it in emulation mode, or if a valid ROM is selected
// in launcher mode
switch(instance()->eventHandler().state())
{
case EventHandler::S_EMULATE:
myGameInfoButton->setFlags(WIDGET_ENABLED);
break;
case EventHandler::S_LAUNCHER:
if(instance()->launcher().selectedRomMD5() != "")
myGameInfoButton->setFlags(WIDGET_ENABLED);
else
myGameInfoButton->clearFlags(WIDGET_ENABLED);
break;
default:
break;
}
}
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
void OptionsDialog::handleCommand(CommandSender* sender, int cmd,
int data, int id)

View File

@ -13,7 +13,7 @@
// See the file "license" for information on usage and redistribution of
// this file, and for a DISCLAIMER OF ALL WARRANTIES.
//
// $Id: OptionsDialog.hxx,v 1.26 2008-02-06 13:45:24 stephena Exp $
// $Id: OptionsDialog.hxx,v 1.27 2008-03-12 22:04:53 stephena Exp $
//
// Based on code from ScummVM - Scumm Interpreter
// Copyright (C) 2002-2004 The ScummVM project
@ -47,6 +47,7 @@ class OptionsDialog : public Dialog
virtual ~OptionsDialog();
private:
void loadConfig();
virtual void handleCommand(CommandSender* sender, int cmd, int data, int id);
void checkBounds(int width, int height, int* x, int* y, int* w, int* h);