Removed 'launcherexts' and associated LauncherFilterDialog.

Introduced 'launcherroms' argument, which specifies to show only ROMs or all files in the launcher.
This functionality is tied to a RMB context menu in the launcher; eventually we may add a checkbox to the UI for it.
This commit is contained in:
Stephen Anthony 2018-08-31 13:51:42 -02:30
parent 70ec216d1a
commit 65d23b4a6e
9 changed files with 63 additions and 378 deletions

View File

@ -17,19 +17,19 @@
* Note: because of major TIA sound changes, the state file format has * Note: because of major TIA sound changes, the state file format has
changed, and old state files will not work with this release. changed, and old state files will not work with this release.
* New cycle exact audio core based on work by Chris Brenner (crispy); greatly * New cycle exact audio core based on work by Chris Brenner (crispy);
improved audio emulation accuracy (i.e. E.T., Ms. Pacman). greatly improved audio emulation accuracy (i.e. E.T., Ms. Pacman).
* Full rewrite of the audio subsystem; resample TIA output to target sample * Full rewrite of the audio subsystem; resample TIA output to target
rate directly in Stella. sample rate directly in Stella.
* Added option to force stereo sound for all ROMs, or to use the setting * Added option to force stereo sound for all ROMs, or to use the
on a per-ROM basis. setting on a per-ROM basis.
* Threading: decouple emulation from frame rendering. * Threading: decouple emulation from frame rendering.
* Main loop rewritten; emulating speed and timing is now much more faithful * Main loop rewritten; emulating speed and timing is now much more
(i.e. speed in Pick'n'Pile). faithful (i.e. speed in Pick'n'Pile).
* Audio settings replaced with new 'audio.xxx' settings. * Audio settings replaced with new 'audio.xxx' settings.
@ -43,10 +43,21 @@
* UI modernization (new widget look, dialog titles added, dialogs * UI modernization (new widget look, dialog titles added, dialogs
refactored). refactored).
* Fixed excessive CPU usage while in UI modes (ROM launcher, debugger, etc). * Fixed excessive CPU usage while in UI modes (ROM launcher, debugger,
etc).
* The bankswitch scheme can now be forced by naming the ROM with a
specific extension (ie: .f8s for F8SC, .fe for FE, etc). The
supported extensions are the same as the ones from HarmonyCart and
UnoCart.
* The 'launcherexts' option has been replaced by a true/false option
named 'launcherroms', which specifies to show only ROMs or all files
in the ROM launcher.
* Changes in 'Game Properties' dialog * Changes in 'Game Properties' dialog
- 'Default' button now affects only current tab like in all other dialogs. - 'Default' button now affects only current tab like in all other
dialogs.
- 'Display' and 'Console' tab changes are now immediate. - 'Display' and 'Console' tab changes are now immediate.
- Fixed bug when selecting 'Auto-detect' format for 50Hz ROMs - Fixed bug when selecting 'Auto-detect' format for 50Hz ROMs
@ -78,8 +89,8 @@
* The UNIX builds now use the system-installed PNG and ZLIB libraries * The UNIX builds now use the system-installed PNG and ZLIB libraries
by default. by default.
* For better compatibility, the Windows 32-bit version does not require SSE2 * For better compatibility, the Windows 32-bit version does not require
anymore. SSE2 anymore.
* Updated included PNG library to latest stable version. * Updated included PNG library to latest stable version.

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.5 KiB

View File

@ -42,7 +42,7 @@
<li><a href="#ROMInfo">ROM Launcher</a></li> <li><a href="#ROMInfo">ROM Launcher</a></li>
<ul> <ul>
<li><a href="#ROMInfoViewer">ROM Launcher Viewer</a></li> <li><a href="#ROMInfoViewer">ROM Launcher Viewer</a></li>
<li><a href="#ROMLauchnerContextMenu">ROM Launcher Context Menu</a></li> <li><a href="#ROMLauncherContextMenu">ROM Launcher Context Menu</a></li>
</ul> </ul>
<li><a href="#ROMAudit">ROM Audit Mode</a></li> <li><a href="#ROMAudit">ROM Audit Mode</a></li>
<li><a href="#Adaptor">Stelladaptor/2600-daptor Support</a></li> <li><a href="#Adaptor">Stelladaptor/2600-daptor Support</a></li>
@ -255,8 +255,10 @@
<li>Supports high quality TIA emulation using the TIA core from <li>Supports high quality TIA emulation using the TIA core from
<a href="https://github.com/6502ts/6502.ts">6502.ts</a> by <a href="https://github.com/6502ts/6502.ts">6502.ts</a> by
Christian Speckner</li> Christian Speckner</li>
<li>Supports high quality sound emulation using code derived from Ron Fries' <li>Supports high quality sound emulation using code derived from Chris Brenner's
TIA Sound Emulation library, including stereo sound support</li> Atari 2600 FPGA project, including cycle-accurate audio, analog interference
from mixing of audio channels, as well as stereo sound support; dynamic
sound resampling is also included</li>
<li>Emulates the Atari 2600 Joystick Controllers using your computer's keyboard, <li>Emulates the Atari 2600 Joystick Controllers using your computer's keyboard,
joysticks or mouse</li> joysticks or mouse</li>
<li>Emulates the Atari 2600 Keyboard Controllers using your computer's keyboard</li> <li>Emulates the Atari 2600 Keyboard Controllers using your computer's keyboard</li>
@ -287,6 +289,7 @@
<li>Supports DPC+/CDF bankswitching schemes from the <a href="http://harmony.atariage.com">Harmony Cart</a>, <li>Supports DPC+/CDF bankswitching schemes from the <a href="http://harmony.atariage.com">Harmony Cart</a>,
including <a href="http://thumbulator.blogspot.ca">partial emulation of the ARM processor</a></li> including <a href="http://thumbulator.blogspot.ca">partial emulation of the ARM processor</a></li>
<li>Supports cartridge autodetection for almost all bankswitching schemes</li> <li>Supports cartridge autodetection for almost all bankswitching schemes</li>
<li>Supports using ROM filename extensions to force specific bankswitching schemes</li>
<li>Supports Supercharger single-load and multi-load games</li> <li>Supports Supercharger single-load and multi-load games</li>
<li>Supports ROMs stored in ZIP and GZIP format, as well as the usual raw A26/BIN/ROM formats</li> <li>Supports ROMs stored in ZIP and GZIP format, as well as the usual raw A26/BIN/ROM formats</li>
<li>Supports property file for setting the properties associated with games</li> <li>Supports property file for setting the properties associated with games</li>
@ -2227,11 +2230,9 @@
</tr> </tr>
<tr> <tr>
<td><pre>-launcherexts &lt;allfiles|allroms|LIST&gt;</pre></td> <td><pre>-launcherroms &lt;1|0&gt;</pre></td>
<td>Specifies which files to show in the ROM launcher <td>Specifies whether to show ROMs only (the default) or all
('allfiles' is self-explanatory, 'allroms' is all files files in the ROM launcher.</td>
with valid rom extensions (currently: a26, bin, rom,
gz, zip), 'LIST' is a ':' separated list of valid rom extensions.</td>
</tr> </tr>
<tr> <tr>
@ -2901,7 +2902,7 @@
case sensitive, so you don't need to worry about capital or lower-case case sensitive, so you don't need to worry about capital or lower-case
letters.</p> letters.</p>
<h3><b><a name="ROMLauchnerContextMenu">ROM Lauchner Context Menu</a></b></h3> <h3><b><a name="ROMLauncherContextMenu">ROM Launcher Context Menu</a></b></h3>
<p>The ROM launcher also contains a context menu, selected by clicking the <p>The ROM launcher also contains a context menu, selected by clicking the
right mouse button anywhere in the current window. This context menu right mouse button anywhere in the current window. This context menu
@ -2938,23 +2939,14 @@
</table> </table>
</li> </li>
<li><p><b>Filter listing</b>: Selecting this option shows a dialog whereby
one can filter the types of files shown in the listing. The dialog is as
follows:</p>
<p><img src="graphics/launcher_filter.png"></p>
<p>Currently, the choices are as follows:</p>
<p><ul>
<li><b>All files</b> - self explanatory, show all files in the ROM
listing. This is the default, and emulates the behaviour of
all previous versions of Stella.</li>
<li><b>All roms</b> - show only files with a valid ROM extension.
Currently, this means extensions .a26, .bin, .rom, .gz, .zip.</li>
<li><b>ROMs ending with</b> - show only files with a ROM extension
as selected from the checkboxes.</li>
</ul></p>
</li>
<li><b>Reload listing</b>: Selecting this performs a reload of the <br><li><b>Show only ROM files</b>: Selecting this reloads the current listing,
showing only files that have a valid ROM extension.</li>
<br><li><b>Show all files</b>: Selecting this reloads the current listing,
showing <i>all</i> files (with no restriction on file name).</li>
<br><li><b>Reload listing</b>: Selecting this performs a reload of the
current listing. It is an alternative to pressing the Control-r current listing. It is an alternative to pressing the Control-r
key combo.</li> key combo.</li>
</ol></p> </ol></p>

View File

@ -115,7 +115,7 @@ Settings::Settings(OSystem& osystem)
setInternal("exitlauncher", "false"); setInternal("exitlauncher", "false");
setInternal("launcherres", GUI::Size(900, 600)); setInternal("launcherres", GUI::Size(900, 600));
setInternal("launcherfont", "medium"); setInternal("launcherfont", "medium");
setInternal("launcherexts", "allroms"); setInternal("launcherroms", "true");
setInternal("romviewer", "1"); setInternal("romviewer", "1");
setInternal("lastrom", ""); setInternal("lastrom", "");
@ -536,10 +536,7 @@ void Settings::usage() const
<< " -launcherres <WxH> The resolution to use in ROM launcher mode\n" << " -launcherres <WxH> The resolution to use in ROM launcher mode\n"
<< " -launcherfont <small|medium| Use the specified font in the ROM launcher\n" << " -launcherfont <small|medium| Use the specified font in the ROM launcher\n"
<< " large>\n" << " large>\n"
<< " -launcherexts <allfiles| Show files with the given extensions in ROM\n" << " -launcherroms <1|0> Show only ROMs in the launcher (vs. all files)\n"
<< " launcher\n"
<< " allroms| (exts is a ':' separated list of extensions)\n"
<< " exts\n"
<< " -romviewer <0|1|2> Show ROM info viewer at given zoom level in ROM\n" << " -romviewer <0|1|2> Show ROM info viewer at given zoom level in ROM\n"
<< " launcher (0 for off)\n" << " launcher (0 for off)\n"
<< " -listdelay <delay> Time to wait between keypresses in list widgets\n" << " -listdelay <delay> Time to wait between keypresses in list widgets\n"

View File

@ -27,7 +27,6 @@
#include "MD5.hxx" #include "MD5.hxx"
#include "OptionsDialog.hxx" #include "OptionsDialog.hxx"
#include "GlobalPropsDialog.hxx" #include "GlobalPropsDialog.hxx"
#include "LauncherFilterDialog.hxx"
#include "MessageBox.hxx" #include "MessageBox.hxx"
#include "OSystem.hxx" #include "OSystem.hxx"
#include "FrameBuffer.hxx" #include "FrameBuffer.hxx"
@ -179,7 +178,8 @@ LauncherDialog::LauncherDialog(OSystem& osystem, DialogContainer& parent,
// Create context menu for ROM list options // Create context menu for ROM list options
VariantList l; VariantList l;
VarList::push_back(l, "Power-on options" + ELLIPSIS, "override"); VarList::push_back(l, "Power-on options" + ELLIPSIS, "override");
VarList::push_back(l, "Filter listing" + ELLIPSIS, "filter"); VarList::push_back(l, "Show only ROM files" + ELLIPSIS, "roms");
VarList::push_back(l, "Show all files" + ELLIPSIS, "allfiles");
VarList::push_back(l, "Reload listing", "reload"); VarList::push_back(l, "Reload listing", "reload");
myMenu = make_unique<ContextMenu>(this, osystem.frameBuffer().font(), l); myMenu = make_unique<ContextMenu>(this, osystem.frameBuffer().font(), l);
@ -187,11 +187,8 @@ LauncherDialog::LauncherDialog(OSystem& osystem, DialogContainer& parent,
// ROM properties // ROM properties
myGlobalProps = make_unique<GlobalPropsDialog>(this, osystem.frameBuffer().font()); myGlobalProps = make_unique<GlobalPropsDialog>(this, osystem.frameBuffer().font());
// Create dialog whereby the files shown in the ROM listing can be customized // Do we show only ROMs or all files?
myFilters = make_unique<LauncherFilterDialog>(this, osystem.frameBuffer().font()); showOnlyROMs(instance().settings().getBool("launcherroms"));
// Figure out which filters are needed for the ROM listing
setListFilters();
} }
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
@ -292,16 +289,9 @@ void LauncherDialog::loadDirListing()
bool isDir = f.isDirectory(); bool isDir = f.isDirectory();
const string& name = isDir ? (" [" + f.getName() + "]") : f.getName(); const string& name = isDir ? (" [" + f.getName() + "]") : f.getName();
// Honour the filtering settings // Do we want to show only ROMs or all files?
// Showing only certain ROM extensions is determined by the extension if(!isDir && myShowOnlyROMs && !Bankswitch::isValidRomName(f))
// that we want - if there are no extensions, it implies show all files continue;
// In this way, showing all files is on the 'fast code path'
if(!isDir && myRomExts.size() > 0)
{
// Skip over those names we've filtered out
if(!LauncherFilterDialog::isValidRomName(name, myRomExts))
continue;
}
// Skip over files that don't match the pattern in the 'pattern' textbox // Skip over files that don't match the pattern in the 'pattern' textbox
if(domatch && !isDir && !matchPattern(name, myPattern->getText())) if(domatch && !isDir && !matchPattern(name, myPattern->getText()))
@ -347,9 +337,10 @@ void LauncherDialog::handleContextMenu()
{ {
myGlobalProps->open(); myGlobalProps->open();
} }
else if(cmd == "filter") else if(cmd == "roms" || cmd == "allfiles")
{ {
myFilters->open(); showOnlyROMs(cmd == "roms");
updateListing();
} }
else if(cmd == "reload") else if(cmd == "reload")
{ {
@ -358,11 +349,10 @@ void LauncherDialog::handleContextMenu()
} }
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
void LauncherDialog::setListFilters() void LauncherDialog::showOnlyROMs(bool state)
{ {
const string& exts = instance().settings().getString("launcherexts"); myShowOnlyROMs = state;
myRomExts.clear(); instance().settings().setValue("launcherroms", state);
LauncherFilterDialog::parseExts(myRomExts, exts);
} }
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
@ -511,8 +501,8 @@ void LauncherDialog::handleCommand(CommandSender* sender, int cmd,
updateListing(); updateListing();
break; break;
case kReloadFiltersCmd: case kOnlyROMsCmd:
setListFilters(); showOnlyROMs(data); // NOTE: present for when we add a widget for this
updateListing(); updateListing();
break; break;

View File

@ -26,7 +26,6 @@ class GameList;
class BrowserDialog; class BrowserDialog;
class OptionsDialog; class OptionsDialog;
class GlobalPropsDialog; class GlobalPropsDialog;
class LauncherFilterDialog;
class OSystem; class OSystem;
class Properties; class Properties;
class EditTextWidget; class EditTextWidget;
@ -47,10 +46,10 @@ class LauncherDialog : public Dialog
public: public:
// These must be accessible from dialogs created by this class // These must be accessible from dialogs created by this class
enum { enum {
kLoadROMCmd = 'STRT', // load currently selected ROM kLoadROMCmd = 'STRT', // load currently selected ROM
kRomDirChosenCmd = 'romc', // rom dir chosen kRomDirChosenCmd = 'romc', // rom dir chosen
kReloadRomDirCmd = 'rdrl', // reload the current listing kReloadRomDirCmd = 'rdrl', // reload the current listing
kReloadFiltersCmd = 'rlfl' // reload filtering options and current listing kOnlyROMsCmd = 'rdor' // what to show has changed (ROMs vs. all files)
}; };
public: public:
@ -88,7 +87,7 @@ class LauncherDialog : public Dialog
void loadDirListing(); void loadDirListing();
void loadRomInfo(); void loadRomInfo();
void handleContextMenu(); void handleContextMenu();
void setListFilters(); void showOnlyROMs(bool state);
bool matchPattern(const string& s, const string& pattern) const; bool matchPattern(const string& s, const string& pattern) const;
private: private:
@ -96,7 +95,6 @@ class LauncherDialog : public Dialog
unique_ptr<GameList> myGameList; unique_ptr<GameList> myGameList;
unique_ptr<ContextMenu> myMenu; unique_ptr<ContextMenu> myMenu;
unique_ptr<GlobalPropsDialog> myGlobalProps; unique_ptr<GlobalPropsDialog> myGlobalProps;
unique_ptr<LauncherFilterDialog> myFilters;
unique_ptr<BrowserDialog> myRomDir; unique_ptr<BrowserDialog> myRomDir;
ButtonWidget* myStartButton; ButtonWidget* myStartButton;
@ -116,7 +114,7 @@ class LauncherDialog : public Dialog
FilesystemNode myCurrentNode; FilesystemNode myCurrentNode;
Common::FixedStack<string> myNodeNames; Common::FixedStack<string> myNodeNames;
StringList myRomExts; bool myShowOnlyROMs;
enum { enum {
kPrevDirCmd = 'PRVD', kPrevDirCmd = 'PRVD',

View File

@ -1,224 +0,0 @@
//============================================================================
//
// 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-2018 by Bradford W. Mott, Stephen Anthony
// and the Stella Team
//
// See the file "License.txt" for information on usage and redistribution of
// this file, and for a DISCLAIMER OF ALL WARRANTIES.
//============================================================================
#include "bspf.hxx"
#include "Dialog.hxx"
#include "OSystem.hxx"
#include "FSNode.hxx"
#include "PopUpWidget.hxx"
#include "Settings.hxx"
#include "Widget.hxx"
#include "Font.hxx"
#include "LauncherDialog.hxx"
#include "LauncherFilterDialog.hxx"
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
LauncherFilterDialog::LauncherFilterDialog(GuiObject* boss, const GUI::Font& font)
: Dialog(boss->instance(), boss->parent(), font, "Filter file list"),
CommandSender(boss)
{
const int lineHeight = font.getLineHeight(),
buttonWidth = font.getStringWidth("Defaults") + 20,
buttonHeight = font.getLineHeight() + 4;
int xpos, ypos;
int lwidth = font.getStringWidth("Show "),
pwidth = font.getStringWidth("ROMs ending with");
WidgetArray wid;
VariantList items;
// Set real dimensions
_w = 3 * buttonWidth + 20 + 4 * 8;
xpos = 10; ypos = 10 + _th;
// Types of files to show
VarList::push_back(items, "All files", "allfiles");
VarList::push_back(items, "All ROMs", "allroms");
VarList::push_back(items, "ROMs ending with", "__EXTS");
myFileType =
new PopUpWidget(this, font, xpos, ypos, pwidth, lineHeight, items,
"Show ", lwidth, kFileTypeChanged);
wid.push_back(myFileType);
ypos += lineHeight + 10;
// Different types of ROM extensions
xpos += font.getStringWidth("Show ");
myRomType[0] = new CheckboxWidget(this, font, xpos, ypos, ourRomTypes[0][0]);
int rightcol = xpos + myRomType[0]->getWidth() + 8 * 3;
myRomType[3] = new CheckboxWidget(this, font, rightcol, ypos, ourRomTypes[0][3]);
ypos += lineHeight + 4;
myRomType[1] = new CheckboxWidget(this, font, xpos, ypos, ourRomTypes[0][1]);
myRomType[4] = new CheckboxWidget(this, font, rightcol, ypos, ourRomTypes[0][4]);
ypos += lineHeight + 4;
myRomType[2] = new CheckboxWidget(this, font, xpos, ypos, ourRomTypes[0][2]);
ypos += lineHeight + 10;
_h = ypos + buttonHeight + 20;
// Add Defaults, OK and Cancel buttons
addDefaultsOKCancelBGroup(wid, font);
addToFocusList(wid);
}
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
void LauncherFilterDialog::parseExts(StringList& list, const string& type)
{
// Assume the list is empty before this method is called
if(type == "allroms")
{
for(uInt32 i = 0; i < 5; ++i)
list.push_back(ourRomTypes[1][i]);
}
else if(type != "allfiles")
{
// Since istringstream swallows whitespace, we have to make the
// delimiters be spaces
string exts = type, ext;
replace(exts.begin(), exts.end(), ':', ' ');
istringstream buf(exts);
while(buf >> ext)
{
for(uInt32 i = 0; i < 5; ++i)
{
if(ourRomTypes[1][i] == ext)
{
list.push_back(ext);
break;
}
}
}
}
}
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
bool LauncherFilterDialog::isValidRomName(const string& name,
const StringList& exts)
{
string::size_type idx = name.find_last_of('.');
if(idx != string::npos)
{
const char* const ext = name.c_str() + idx + 1;
for(const auto& s: exts)
if(BSPF::equalsIgnoreCase(ext, s))
return true;
}
return false;
}
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
void LauncherFilterDialog::loadConfig()
{
handleFileTypeChange(instance().settings().getString("launcherexts"));
}
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
void LauncherFilterDialog::saveConfig()
{
const string& type = myFileType->getSelectedTag().toString();
if(type == "allfiles" || type == "allroms")
instance().settings().setValue("launcherexts", type);
else
{
ostringstream buf;
for(uInt32 i = 0; i < 5; ++i)
if(myRomType[i]->getState())
buf << ourRomTypes[1][i] << ":";
// No ROMs selected means use all files
if(buf.str() == "")
instance().settings().setValue("launcherexts", "allfiles");
else
instance().settings().setValue("launcherexts", buf.str());
}
// Let parent know about the changes
sendCommand(LauncherDialog::kReloadFiltersCmd, 0, 0);
}
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
void LauncherFilterDialog::setDefaults()
{
handleFileTypeChange("allroms");
}
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
void LauncherFilterDialog::handleFileTypeChange(const string& type)
{
bool enable = (type != "allfiles" && type != "allroms");
for(uInt32 i = 0; i < 5; ++i)
myRomType[i]->setEnabled(enable);
if(enable)
{
myFileType->setSelected("__EXTS", "");
// Since istringstream swallows whitespace, we have to make the
// delimiters be spaces
string exts = type, ext;
replace(exts.begin(), exts.end(), ':', ' ');
istringstream buf(exts);
while(buf >> ext)
{
for(uInt32 i = 0; i < 5; ++i)
{
if(ourRomTypes[1][i] == ext)
{
myRomType[i]->setState(true);
break;
}
}
}
}
else
myFileType->setSelected(type, "");
}
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
void LauncherFilterDialog::handleCommand(CommandSender* sender, int cmd,
int data, int id)
{
switch(cmd)
{
case GuiObject::kOKCmd:
saveConfig();
close();
break;
case GuiObject::kDefaultsCmd:
setDefaults();
break;
case kFileTypeChanged:
handleFileTypeChange(myFileType->getSelectedTag().toString());
break;
default:
Dialog::handleCommand(sender, cmd, data, 0);
break;
}
}
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
const char* const LauncherFilterDialog::ourRomTypes[2][5] = {
{ ".a26", ".bin", ".rom", ".zip", ".gz" },
{ "a26", "bin", "rom", "zip", "gz" }
};

View File

@ -1,78 +0,0 @@
//============================================================================
//
// 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-2018 by Bradford W. Mott, Stephen Anthony
// and the Stella Team
//
// See the file "License.txt" for information on usage and redistribution of
// this file, and for a DISCLAIMER OF ALL WARRANTIES.
//============================================================================
#ifndef LAUNCHER_FILTER_DIALOG_HXX
#define LAUNCHER_FILTER_DIALOG_HXX
class CommandSender;
class DialogContainer;
class FilesystemNode;
class CheckboxWidget;
class PopUpWidget;
class OSystem;
#include "bspf.hxx"
#include "Dialog.hxx"
#include "Settings.hxx"
class LauncherFilterDialog : public Dialog, public CommandSender
{
public:
LauncherFilterDialog(GuiObject* boss, const GUI::Font& font);
virtual ~LauncherFilterDialog() = default;
/** Add valid extensions from 'exts' to the given StringList */
static void parseExts(StringList& list, const string& exts);
/**
Is this a valid ROM filename (does it have a valid extension from
those specified in the list of extensions).
@param name Filename of potential ROM file
@param exts The list of extensions to consult
*/
static bool isValidRomName(const string& name, const StringList& exts);
private:
void loadConfig() override;
void saveConfig() override;
void setDefaults() override;
void handleFileTypeChange(const string& type);
void handleCommand(CommandSender* sender, int cmd, int data, int id) override;
private:
PopUpWidget* myFileType;
CheckboxWidget* myRomType[5];
enum {
kFileTypeChanged = 'LFDc'
};
// Holds static strings representing ROM types
static const char* const ourRomTypes[2][5];
private:
// Following constructors and assignment operators not supported
LauncherFilterDialog() = delete;
LauncherFilterDialog(const LauncherFilterDialog&) = delete;
LauncherFilterDialog(LauncherFilterDialog&&) = delete;
LauncherFilterDialog& operator=(const LauncherFilterDialog&) = delete;
LauncherFilterDialog& operator=(LauncherFilterDialog&&) = delete;
};
#endif

View File

@ -27,7 +27,6 @@ MODULE_OBJS := \
src/gui/InputTextDialog.o \ src/gui/InputTextDialog.o \
src/gui/JoystickDialog.o \ src/gui/JoystickDialog.o \
src/gui/LauncherDialog.o \ src/gui/LauncherDialog.o \
src/gui/LauncherFilterDialog.o \
src/gui/Launcher.o \ src/gui/Launcher.o \
src/gui/ListWidget.o \ src/gui/ListWidget.o \
src/gui/LoggerDialog.o \ src/gui/LoggerDialog.o \