Added logging capability and viewer. This is useful for those platforms that

don't normally use the commandline (mostly Windows, but in some cases OSX as
well).  The 'showinfo' commandline argument has been renamed 'loglevel', but
it has the same purpose.  A new option 'logtoconsole' has been added, which
determines whether log output should also be directed to the commandline/
console (previously, it was always printed to the console).  All these items
are now accessible from Options -> System Logs.

For anyone reading this (and that cares), now I can finally move on to the
OpenGL rewrite.  The plan is that the new code will use OpenGL ES, which
is a subset of OpenGL 1.5.  The main advantages are that you won't need
an advanced OpenGL card, and OpenGL ES is supported on most new 'smaller'
systems (iPhone, Android, etc), making ports much easier.


git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2264 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
This commit is contained in:
stephena 2011-08-16 13:38:34 +00:00
parent 40a66edee4
commit a16f862193
14 changed files with 296 additions and 44 deletions

View File

@ -1766,8 +1766,13 @@
</tr> </tr>
<tr> <tr>
<td><pre>-showinfo &lt;0|1|2&gt;</pre></td> <td><pre>-loglevel &lt;0|1|2&gt;</pre></td>
<td>Shows some application & game info on the commandline while Stella is running. Zero completely disables output (except for serious errors), while the remaining numbers show increasingly more detail.</td> <td>Indicates level of logging to perform while the application is running. Zero completely disables logging (except for serious errors), while the remaining numbers show increasingly more detail.</td>
</tr>
<tr>
<td><pre>-logtoconsole &lt;1|0&gt;</pre></td>
<td>Indicates that logged output should be printed to the console/commandline as it's being collected. An internal log will still be kept, and the amount of logging is still controlled by 'loglevel'.</td>
</tr> </tr>
<tr> <tr>
@ -2267,7 +2272,7 @@
<tr><td>Interface Palette</td><td>palette to use for UI elements</td><td>-uipalette</td></tr> <tr><td>Interface Palette</td><td>palette to use for UI elements</td><td>-uipalette</td></tr>
<tr><td>List quick delay</td><td>time to wait between keypresses in listwidget</td><td>-listdelay</td></tr> <tr><td>List quick delay</td><td>time to wait between keypresses in listwidget</td><td>-listdelay</td></tr>
<tr><td>Mouse wheel scroll</td><td>number of lines mouse scroll will move in listwidget</td><td>-mscroll</td></tr> <tr><td>Mouse wheel scroll</td><td>number of lines mouse scroll will move in listwidget</td><td>-mscroll</td></tr>
<tr><td>Show Info level</td><td>amount of logging information to display</td><td>-showinfo</td></tr> <tr><td>FIXME</td><td>fix this snapshot</td><td>...</td></tr>
</table> </table>
</td> </td>
</tr> </tr>
@ -2694,8 +2699,8 @@
</tr> </tr>
<tr> <tr>
<td>-showinfo 1</td> <td>-center 1</td>
<td>showinfo = 1 (or showinfo = true)</td> <td>center = 1 (or center = true)</td>
</tr> </tr>
</table> </table>

View File

@ -646,9 +646,9 @@ void OSystem::logMessage(const string& message, uInt8 level)
cout << message << flush; cout << message << flush;
myLogMessages += message; myLogMessages += message;
} }
else if(level <= (uInt8)mySettings->getInt("showinfo")) else if(level <= (uInt8)mySettings->getInt("loglevel"))
{ {
if(1) // TODO - messages should be output to console if(mySettings->getBool("logtoconsole"))
cout << message << flush; cout << message << flush;
myLogMessages += message; myLogMessages += message;
} }

View File

@ -378,11 +378,11 @@ class OSystem
void quit() { myQuitLoop = true; } void quit() { myQuitLoop = true; }
/** /**
Output a message to the a log (normally stdout). Append a message to the internal log.
@param message The message to be output @param message The message to be appended
@param level If 0, always output the message, only output when @param level If 0, always output the message, only append when
level is less than or equal to that in 'showinfo' level is less than or equal to that in 'loglevel'
*/ */
void logMessage(const string& message, uInt8 level); void logMessage(const string& message, uInt8 level);

View File

@ -121,7 +121,8 @@ Settings::Settings(OSystem* osystem)
// Misc options // Misc options
setInternal("autoslot", "false"); setInternal("autoslot", "false");
setInternal("showinfo", "1"); setInternal("loglevel", "1");
setInternal("logtoconsole", "0");
setInternal("tiadriven", "false"); setInternal("tiadriven", "false");
setInternal("ramrandom", "true"); setInternal("ramrandom", "true");
setInternal("avoxport", ""); setInternal("avoxport", "");
@ -321,9 +322,9 @@ void Settings::validate()
if(s != "low" && s != "medium" && s != "high") if(s != "low" && s != "medium" && s != "high")
setInternal("tv_noise", "off"); setInternal("tv_noise", "off");
i = getInt("showinfo"); i = getInt("loglevel");
if(i < 0 || i > 2) if(i < 0 || i > 2)
setInternal("showinfo", "1"); setInternal("loglevel", "1");
} }
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
@ -352,7 +353,8 @@ void Settings::usage()
<< " -gl_fsmax <1|0> Stretch GL image in fullscreen emulation mode\n" << " -gl_fsmax <1|0> Stretch GL image in fullscreen emulation mode\n"
<< " -gl_vsync <1|0> Enable synchronize to vertical blank interrupt\n" << " -gl_vsync <1|0> Enable synchronize to vertical blank interrupt\n"
<< " -gl_texrect <1|0> Enable GL_TEXTURE_RECTANGLE extension\n" << " -gl_texrect <1|0> Enable GL_TEXTURE_RECTANGLE extension\n"
// << " -gl_accel <1|0> Enable SDL_GL_ACCELERATED_VISUAL\n" #if 0
<< " -gl_accel <1|0> Enable SDL_GL_ACCELERATED_VISUAL\n"
<< " -tv_tex <off|type> OpenGL TV texturing, type is one of the following:\n" << " -tv_tex <off|type> OpenGL TV texturing, type is one of the following:\n"
<< " normal Aligned in a grid\n" << " normal Aligned in a grid\n"
<< " stag Aligned in a staggered grid\n" << " stag Aligned in a staggered grid\n"
@ -365,6 +367,7 @@ void Settings::usage()
<< " medium \n" << " medium \n"
<< " high \n" << " high \n"
<< " -tv_phos <1|0> OpenGL TV phosphor burn-off\n" << " -tv_phos <1|0> OpenGL TV phosphor burn-off\n"
#endif
<< endl << endl
#endif #endif
<< " -tia_filter <filter> Use the specified filter in emulation mode\n" << " -tia_filter <filter> Use the specified filter in emulation mode\n"
@ -390,7 +393,8 @@ void Settings::usage()
<< endl << endl
#endif #endif
<< " -cheat <code> Use the specified cheatcode (see manual for description)\n" << " -cheat <code> Use the specified cheatcode (see manual for description)\n"
<< " -showinfo <0|1|2> Shows some application/game info on commandline\n" << " -loglevel <0|1|2> Set level of logging during application run\n"
<< " -logtoconsole <1|0> Log output to console/commandline\n"
<< " -joydeadzone <number> Sets 'deadzone' area for analog joysticks (0-29)\n" << " -joydeadzone <number> Sets 'deadzone' area for analog joysticks (0-29)\n"
<< " -joyallow4 <1|0> Allow all 4 directions on a joystick to be pressed simultaneously\n" << " -joyallow4 <1|0> Allow all 4 directions on a joystick to be pressed simultaneously\n"
<< " -usemouse <1|0> Use mouse for various controllers (paddle, driving, etc)\n" << " -usemouse <1|0> Use mouse for various controllers (paddle, driving, etc)\n"

View File

@ -1361,8 +1361,6 @@ bool TIA::poke(uInt16 addr, uInt8 value)
case NUSIZ0: // Number-size of player-missle 0 case NUSIZ0: // Number-size of player-missle 0
{ {
// TODO - 08-11-2009: determine correct delay instead of always
// using '8'.
myNUSIZ0 = value; myNUSIZ0 = value;
mySuppressP0 = 0; mySuppressP0 = 0;
break; break;
@ -1370,8 +1368,6 @@ bool TIA::poke(uInt16 addr, uInt8 value)
case NUSIZ1: // Number-size of player-missle 1 case NUSIZ1: // Number-size of player-missle 1
{ {
// TODO - 08-11-2009: determine correct delay instead of always
// using '8'.
myNUSIZ1 = value; myNUSIZ1 = value;
mySuppressP1 = 0; mySuppressP1 = 0;
break; break;

View File

@ -616,10 +616,53 @@ uInt8 TIATables::DisabledMask[640];
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
const Int16 TIATables::PokeDelay[64] = { const Int16 TIATables::PokeDelay[64] = {
0, 1, 0, 0, 8, 8, 0, 0, 0, 0, 0, 1, 1, -1, -1, -1, 0, // VSYNC
0, 0, 8, 8, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, // VBLANK (0) / 1
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, // WSYNC
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // RSYNC
0, // NUSIZ0 (0) / 8 TODO - calculate this instead of hardcoding
0, // NUSIZ1 (0) / 8 TODO - calculate this instead of hardcoding
0, // COLUP0
0, // COLUP1
0, // COLUPF
0, // COLUBK
0, // CTRLPF
1, // REFP0
1, // REFP1
-1, // PF0 (4) / -1
-1, // PF1 (4) / -1
-1, // PF2 (4) / -1
0, // RESP0
0, // RESP1
8, // RESM0 (0) / 8
8, // RESM1 (0) / 8
0, // RESBL
0, // AUDC0 (-1) / 0
0, // AUDC1 (-1) / 0
0, // AUDF0 (-1) / 0
0, // AUDF1 (-1) / 0
0, // AUDV0 (-1) / 0
0, // AUDV1 (-1) / 0
1, // GRP0
1, // GRP1
1, // ENAM0
1, // ENAM1
1, // ENABL
0, // HMP0
0, // HMP1
0, // HMM0
0, // HMM1
0, // HMBL
0, // VDELP0
0, // VDELP1
0, // VDELBL
0, // RESMP0
0, // RESMP1
3, // HMOVE
0, // HMCLR
0, // CXCLR
// remaining values are undefined TIA write locations
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
}; };
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

149
src/gui/LoggerDialog.cxx Normal file
View File

@ -0,0 +1,149 @@
//============================================================================
//
// 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-2011 by Bradford W. Mott, Stephen Anthony
// and the Stella Team
//
// See the file "License.txt" for information on usage and redistribution of
// this file, and for a DISCLAIMER OF ALL WARRANTIES.
//
// $Id$
//============================================================================
#include <fstream>
#include "bspf.hxx"
#include "Dialog.hxx"
#include "DialogContainer.hxx"
#include "FSNode.hxx"
#include "GuiObject.hxx"
#include "OSystem.hxx"
#include "Settings.hxx"
#include "PopUpWidget.hxx"
#include "StringListWidget.hxx"
#include "StringParser.hxx"
#include "Widget.hxx"
#include "LoggerDialog.hxx"
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
LoggerDialog::LoggerDialog(OSystem* osystem, DialogContainer* parent,
const GUI::Font& font, int max_w, int max_h)
: Dialog(osystem, parent, 0, 0, 0, 0),
myLogInfo(NULL)
{
const int lineHeight = font.getLineHeight(),
buttonWidth = font.getStringWidth("Save log to disk") + 20,
buttonHeight = font.getLineHeight() + 4;
int xpos, ypos;
WidgetArray wid;
// Set real dimensions
// This is one dialog that can take as much space as is available
_w = BSPF_min(max_w, 480);
_h = BSPF_min(max_h, 380);
// Test listing of the log output
xpos = 10; ypos = 10;
myLogInfo = new StringListWidget(this, instance().consoleFont(), xpos, ypos,
_w - 2 * xpos, _h - buttonHeight - ypos - 20 -
2 * lineHeight);
myLogInfo->setNumberingMode(kListNumberingOff);
myLogInfo->setEditable(false);
wid.push_back(myLogInfo);
ypos += myLogInfo->getHeight() + 8;
// Level of logging (how much info to print)
xpos += 20;
StringMap items;
items.clear();
items.push_back("None", "0");
items.push_back("Basic", "1");
items.push_back("Verbose", "2");
myLogLevel =
new PopUpWidget(this, font, xpos, ypos, font.getStringWidth("Verbose"),
lineHeight, items, "Log level: ",
font.getStringWidth("Log level: "));
wid.push_back(myLogLevel);
// Should log output also be shown on the console?
xpos += myLogLevel->getWidth() + 30;
myLogToConsole = new CheckboxWidget(this, font, xpos, ypos, "Print to console");
wid.push_back(myLogToConsole);
// Add Defaults, OK and Cancel buttons
ButtonWidget* b;
b = new ButtonWidget(this, font, 10, _h - buttonHeight - 10,
buttonWidth, buttonHeight, "Save log to disk", kDefaultsCmd);
wid.push_back(b);
addOKCancelBGroup(wid, font);
addToFocusList(wid);
}
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
LoggerDialog::~LoggerDialog()
{
}
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
void LoggerDialog::loadConfig()
{
StringParser parser(instance().logMessages());
myLogInfo->setList(parser.stringList());
myLogInfo->setSelected(0);
myLogLevel->setSelected(instance().settings().getString("loglevel"), "1");
myLogToConsole->setState(instance().settings().getBool("logtoconsole"));
}
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
void LoggerDialog::saveConfig()
{
instance().settings().setString("loglevel",
myLogLevel->getSelectedTag());
instance().settings().setBool("logtoconsole", myLogToConsole->getState());
}
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
void LoggerDialog::saveLogFile()
{
string path = AbstractFilesystemNode::getAbsolutePath("stella", "~", "log");
FilesystemNode node(path);
ofstream out(node.getPath(true).c_str(), ios::out);
if(out.is_open())
{
out << instance().logMessages();
out.close();
}
}
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
void LoggerDialog::handleCommand(CommandSender* sender, int cmd,
int data, int id)
{
switch(cmd)
{
case kOKCmd:
saveConfig();
close();
break;
case kDefaultsCmd:
saveLogFile();
break;
default:
Dialog::handleCommand(sender, cmd, data, 0);
break;
}
}

51
src/gui/LoggerDialog.hxx Normal file
View File

@ -0,0 +1,51 @@
//============================================================================
//
// 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-2011 by Bradford W. Mott, Stephen Anthony
// and the Stella Team
//
// See the file "License.txt" for information on usage and redistribution of
// this file, and for a DISCLAIMER OF ALL WARRANTIES.
//
// $Id$
//============================================================================
#ifndef LOGGER_DIALOG_HXX
#define LOGGER_DIALOG_HXX
class GuiObject;
class CheckboxWidget;
class PopUpWidget;
class StringListWidget;
#include "Dialog.hxx"
#include "bspf.hxx"
class LoggerDialog : public Dialog
{
public:
LoggerDialog(OSystem* osystem, DialogContainer* parent, const GUI::Font& font, int max_w, int max_h);
virtual ~LoggerDialog();
protected:
void loadConfig();
void saveConfig();
void saveLogFile();
virtual void handleCommand(CommandSender* sender, int cmd, int data, int id);
private:
StringListWidget* myLogInfo;
PopUpWidget* myLogLevel;
CheckboxWidget* myLogToConsole;
};
#endif

View File

@ -32,6 +32,7 @@
#include "FileSnapDialog.hxx" #include "FileSnapDialog.hxx"
#include "RomAuditDialog.hxx" #include "RomAuditDialog.hxx"
#include "GameInfoDialog.hxx" #include "GameInfoDialog.hxx"
#include "LoggerDialog.hxx"
#include "HelpDialog.hxx" #include "HelpDialog.hxx"
#include "AboutDialog.hxx" #include "AboutDialog.hxx"
#include "OptionsDialog.hxx" #include "OptionsDialog.hxx"
@ -57,6 +58,7 @@ OptionsDialog::OptionsDialog(OSystem* osystem, DialogContainer* parent,
myFileSnapDialog(NULL), myFileSnapDialog(NULL),
myGameInfoDialog(NULL), myGameInfoDialog(NULL),
myCheatCodeDialog(NULL), myCheatCodeDialog(NULL),
myLoggerDialog(NULL),
myHelpDialog(NULL), myHelpDialog(NULL),
myAboutDialog(NULL), myAboutDialog(NULL),
myIsGlobal(global) myIsGlobal(global)
@ -106,6 +108,9 @@ OptionsDialog::OptionsDialog(OSystem* osystem, DialogContainer* parent,
#endif #endif
wid.push_back(myCheatCodeButton); wid.push_back(myCheatCodeButton);
myLoggerButton = addODButton("System Logs", kLoggerCmd);
wid.push_back(myLoggerButton);
myHelpButton = addODButton("Help", kHelpCmd); myHelpButton = addODButton("Help", kHelpCmd);
wid.push_back(myHelpButton); wid.push_back(myHelpButton);
@ -127,6 +132,7 @@ OptionsDialog::OptionsDialog(OSystem* osystem, DialogContainer* parent,
#ifdef CHEATCODE_SUPPORT #ifdef CHEATCODE_SUPPORT
myCheatCodeDialog = new CheatCodeDialog(osystem, parent, font); myCheatCodeDialog = new CheatCodeDialog(osystem, parent, font);
#endif #endif
myLoggerDialog = new LoggerDialog(osystem, parent, font, max_w, max_h);
myHelpDialog = new HelpDialog(osystem, parent, font); myHelpDialog = new HelpDialog(osystem, parent, font);
myAboutDialog = new AboutDialog(osystem, parent, font); myAboutDialog = new AboutDialog(osystem, parent, font);
@ -159,6 +165,7 @@ OptionsDialog::~OptionsDialog()
#ifdef CHEATCODE_SUPPORT #ifdef CHEATCODE_SUPPORT
delete myCheatCodeDialog; delete myCheatCodeDialog;
#endif #endif
delete myLoggerDialog;
delete myHelpDialog; delete myHelpDialog;
delete myAboutDialog; delete myAboutDialog;
} }
@ -225,6 +232,10 @@ void OptionsDialog::handleCommand(CommandSender* sender, int cmd,
break; break;
#endif #endif
case kLoggerCmd:
parent().addDialog(myLoggerDialog);
break;
case kHelpCmd: case kHelpCmd:
parent().addDialog(myHelpDialog); parent().addDialog(myHelpDialog);
break; break;

View File

@ -36,6 +36,7 @@ class GameInfoDialog;
class CheatCodeDialog; class CheatCodeDialog;
class HelpDialog; class HelpDialog;
class AboutDialog; class AboutDialog;
class LoggerDialog;
class OSystem; class OSystem;
#include "Dialog.hxx" #include "Dialog.hxx"
@ -61,6 +62,7 @@ class OptionsDialog : public Dialog
RomAuditDialog* myRomAuditDialog; RomAuditDialog* myRomAuditDialog;
GameInfoDialog* myGameInfoDialog; GameInfoDialog* myGameInfoDialog;
CheatCodeDialog* myCheatCodeDialog; CheatCodeDialog* myCheatCodeDialog;
LoggerDialog* myLoggerDialog;
HelpDialog* myHelpDialog; HelpDialog* myHelpDialog;
AboutDialog* myAboutDialog; AboutDialog* myAboutDialog;
@ -71,6 +73,7 @@ class OptionsDialog : public Dialog
ButtonWidget* myRomAuditButton; ButtonWidget* myRomAuditButton;
ButtonWidget* myGameInfoButton; ButtonWidget* myGameInfoButton;
ButtonWidget* myCheatCodeButton; ButtonWidget* myCheatCodeButton;
ButtonWidget* myLoggerButton;
ButtonWidget* myHelpButton; ButtonWidget* myHelpButton;
ButtonWidget* myAboutButton; ButtonWidget* myAboutButton;
@ -86,6 +89,7 @@ class OptionsDialog : public Dialog
kAuditCmd = 'RAUD', kAuditCmd = 'RAUD',
kInfoCmd = 'INFO', kInfoCmd = 'INFO',
kCheatCmd = 'CHET', kCheatCmd = 'CHET',
kLoggerCmd = 'LOGG',
kHelpCmd = 'HELP', kHelpCmd = 'HELP',
kAboutCmd = 'ABOU', kAboutCmd = 'ABOU',
kExitCmd = 'EXIM' kExitCmd = 'EXIM'

View File

@ -251,16 +251,6 @@ UIDialog::UIDialog(OSystem* osystem, DialogContainer* parent,
wid.push_back(myWheelLinesPopup); wid.push_back(myWheelLinesPopup);
ypos += lineHeight + 4; ypos += lineHeight + 4;
// Amount of output to show with 'showinfo'
items.clear();
items.push_back("None", "0");
items.push_back("Basic", "1");
items.push_back("Verbose", "2");
myShowInfoPopup = new PopUpWidget(myTab, font, xpos, ypos, pwidth, lineHeight,
items, "Show Info level: ", lwidth);
wid.push_back(myShowInfoPopup);
ypos += lineHeight + 4;
// Add items for tab 2 // Add items for tab 2
addToFocusList(wid, tabID); addToFocusList(wid, tabID);
@ -333,10 +323,6 @@ void UIDialog::loadConfig()
const string& mw = instance().settings().getString("mwheel"); const string& mw = instance().settings().getString("mwheel");
myWheelLinesPopup->setSelected(mw, "1"); myWheelLinesPopup->setSelected(mw, "1");
// Showinfo
const string& si = instance().settings().getString("showinfo");
myShowInfoPopup->setSelected(si, "1");
myTab->loadConfig(); myTab->loadConfig();
} }
@ -372,10 +358,6 @@ void UIDialog::saveConfig()
instance().settings().setString("mwheel", instance().settings().setString("mwheel",
myWheelLinesPopup->getSelectedTag()); myWheelLinesPopup->getSelectedTag());
ScrollBarWidget::setWheelLines(atoi(myWheelLinesPopup->getSelectedTag().c_str())); ScrollBarWidget::setWheelLines(atoi(myWheelLinesPopup->getSelectedTag().c_str()));
// Show info
instance().settings().setString("showinfo",
myShowInfoPopup->getSelectedTag());
} }
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
@ -407,7 +389,6 @@ void UIDialog::setDefaults()
myPalettePopup->setSelected("1", "1"); myPalettePopup->setSelected("1", "1");
myListDelayPopup->setSelected("300", "300"); myListDelayPopup->setSelected("300", "300");
myWheelLinesPopup->setSelected("4", "4"); myWheelLinesPopup->setSelected("4", "4");
myShowInfoPopup->setSelected("1", "1");
break; break;
default: default:

View File

@ -62,7 +62,6 @@ class UIDialog : public Dialog
PopUpWidget* myPalettePopup; PopUpWidget* myPalettePopup;
PopUpWidget* myListDelayPopup; PopUpWidget* myListDelayPopup;
PopUpWidget* myWheelLinesPopup; PopUpWidget* myWheelLinesPopup;
PopUpWidget* myShowInfoPopup;
private: private:
void loadConfig(); void loadConfig();

View File

@ -24,6 +24,7 @@ MODULE_OBJS := \
src/gui/Launcher.o \ src/gui/Launcher.o \
src/gui/LauncherDialog.o \ src/gui/LauncherDialog.o \
src/gui/LauncherFilterDialog.o \ src/gui/LauncherFilterDialog.o \
src/gui/LoggerDialog.o \
src/gui/ListWidget.o \ src/gui/ListWidget.o \
src/gui/Menu.o \ src/gui/Menu.o \
src/gui/MessageBox.o \ src/gui/MessageBox.o \

View File

@ -279,6 +279,8 @@
DC6B2BA511037FF200F199A7 /* CartDebug.hxx in Headers */ = {isa = PBXBuildFile; fileRef = DC6B2BA111037FF200F199A7 /* CartDebug.hxx */; }; DC6B2BA511037FF200F199A7 /* CartDebug.hxx in Headers */ = {isa = PBXBuildFile; fileRef = DC6B2BA111037FF200F199A7 /* CartDebug.hxx */; };
DC6B2BA611037FF200F199A7 /* DiStella.cxx in Sources */ = {isa = PBXBuildFile; fileRef = DC6B2BA211037FF200F199A7 /* DiStella.cxx */; }; DC6B2BA611037FF200F199A7 /* DiStella.cxx in Sources */ = {isa = PBXBuildFile; fileRef = DC6B2BA211037FF200F199A7 /* DiStella.cxx */; };
DC6B2BA711037FF200F199A7 /* DiStella.hxx in Headers */ = {isa = PBXBuildFile; fileRef = DC6B2BA311037FF200F199A7 /* DiStella.hxx */; }; DC6B2BA711037FF200F199A7 /* DiStella.hxx in Headers */ = {isa = PBXBuildFile; fileRef = DC6B2BA311037FF200F199A7 /* DiStella.hxx */; };
DC6C726213CDEA0A008A5975 /* LoggerDialog.cxx in Sources */ = {isa = PBXBuildFile; fileRef = DC6C726013CDEA0A008A5975 /* LoggerDialog.cxx */; };
DC6C726313CDEA0A008A5975 /* LoggerDialog.hxx in Headers */ = {isa = PBXBuildFile; fileRef = DC6C726113CDEA0A008A5975 /* LoggerDialog.hxx */; };
DC74D6A1138D4D7E00F05C5C /* StringList.hxx in Headers */ = {isa = PBXBuildFile; fileRef = DC74D69F138D4D7E00F05C5C /* StringList.hxx */; }; DC74D6A1138D4D7E00F05C5C /* StringList.hxx in Headers */ = {isa = PBXBuildFile; fileRef = DC74D69F138D4D7E00F05C5C /* StringList.hxx */; };
DC74D6A2138D4D7E00F05C5C /* StringParser.hxx in Headers */ = {isa = PBXBuildFile; fileRef = DC74D6A0138D4D7E00F05C5C /* StringParser.hxx */; }; DC74D6A2138D4D7E00F05C5C /* StringParser.hxx in Headers */ = {isa = PBXBuildFile; fileRef = DC74D6A0138D4D7E00F05C5C /* StringParser.hxx */; };
DC8078DB0B4BD5F3005E9305 /* DebuggerExpressions.hxx in Headers */ = {isa = PBXBuildFile; fileRef = DC8078DA0B4BD5F3005E9305 /* DebuggerExpressions.hxx */; }; DC8078DB0B4BD5F3005E9305 /* DebuggerExpressions.hxx in Headers */ = {isa = PBXBuildFile; fileRef = DC8078DA0B4BD5F3005E9305 /* DebuggerExpressions.hxx */; };
@ -684,6 +686,8 @@
DC6B2BA111037FF200F199A7 /* CartDebug.hxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = CartDebug.hxx; path = ../debugger/CartDebug.hxx; sourceTree = SOURCE_ROOT; }; DC6B2BA111037FF200F199A7 /* CartDebug.hxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = CartDebug.hxx; path = ../debugger/CartDebug.hxx; sourceTree = SOURCE_ROOT; };
DC6B2BA211037FF200F199A7 /* DiStella.cxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = DiStella.cxx; path = ../debugger/DiStella.cxx; sourceTree = SOURCE_ROOT; }; DC6B2BA211037FF200F199A7 /* DiStella.cxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = DiStella.cxx; path = ../debugger/DiStella.cxx; sourceTree = SOURCE_ROOT; };
DC6B2BA311037FF200F199A7 /* DiStella.hxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = DiStella.hxx; path = ../debugger/DiStella.hxx; sourceTree = SOURCE_ROOT; }; DC6B2BA311037FF200F199A7 /* DiStella.hxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = DiStella.hxx; path = ../debugger/DiStella.hxx; sourceTree = SOURCE_ROOT; };
DC6C726013CDEA0A008A5975 /* LoggerDialog.cxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = LoggerDialog.cxx; path = ../gui/LoggerDialog.cxx; sourceTree = SOURCE_ROOT; };
DC6C726113CDEA0A008A5975 /* LoggerDialog.hxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = LoggerDialog.hxx; path = ../gui/LoggerDialog.hxx; sourceTree = SOURCE_ROOT; };
DC74D69F138D4D7E00F05C5C /* StringList.hxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = StringList.hxx; path = ../common/StringList.hxx; sourceTree = SOURCE_ROOT; }; DC74D69F138D4D7E00F05C5C /* StringList.hxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = StringList.hxx; path = ../common/StringList.hxx; sourceTree = SOURCE_ROOT; };
DC74D6A0138D4D7E00F05C5C /* StringParser.hxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = StringParser.hxx; path = ../common/StringParser.hxx; sourceTree = SOURCE_ROOT; }; DC74D6A0138D4D7E00F05C5C /* StringParser.hxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = StringParser.hxx; path = ../common/StringParser.hxx; sourceTree = SOURCE_ROOT; };
DC8078DA0B4BD5F3005E9305 /* DebuggerExpressions.hxx */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.h; name = DebuggerExpressions.hxx; path = ../debugger/DebuggerExpressions.hxx; sourceTree = SOURCE_ROOT; }; DC8078DA0B4BD5F3005E9305 /* DebuggerExpressions.hxx */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.h; name = DebuggerExpressions.hxx; path = ../debugger/DebuggerExpressions.hxx; sourceTree = SOURCE_ROOT; };
@ -1167,6 +1171,8 @@
DC5D2C5F0F129B1E004D1660 /* LauncherFilterDialog.hxx */, DC5D2C5F0F129B1E004D1660 /* LauncherFilterDialog.hxx */,
2DDBEAC0084578BF00812C11 /* ListWidget.cxx */, 2DDBEAC0084578BF00812C11 /* ListWidget.cxx */,
2DDBEAC1084578BF00812C11 /* ListWidget.hxx */, 2DDBEAC1084578BF00812C11 /* ListWidget.hxx */,
DC6C726013CDEA0A008A5975 /* LoggerDialog.cxx */,
DC6C726113CDEA0A008A5975 /* LoggerDialog.hxx */,
2DDBEAC2084578BF00812C11 /* Menu.cxx */, 2DDBEAC2084578BF00812C11 /* Menu.cxx */,
2DDBEAC3084578BF00812C11 /* Menu.hxx */, 2DDBEAC3084578BF00812C11 /* Menu.hxx */,
DC98F35411F5B56200AA520F /* MessageBox.cxx */, DC98F35411F5B56200AA520F /* MessageBox.cxx */,
@ -1473,6 +1479,7 @@
DC69670E1361FD0A0036499D /* pngstruct.h in Headers */, DC69670E1361FD0A0036499D /* pngstruct.h in Headers */,
DC74D6A1138D4D7E00F05C5C /* StringList.hxx in Headers */, DC74D6A1138D4D7E00F05C5C /* StringList.hxx in Headers */,
DC74D6A2138D4D7E00F05C5C /* StringParser.hxx in Headers */, DC74D6A2138D4D7E00F05C5C /* StringParser.hxx in Headers */,
DC6C726313CDEA0A008A5975 /* LoggerDialog.hxx in Headers */,
); );
runOnlyForDeploymentPostprocessing = 0; runOnlyForDeploymentPostprocessing = 0;
}; };
@ -1732,6 +1739,7 @@
DC98F35611F5B56200AA520F /* MessageBox.cxx in Sources */, DC98F35611F5B56200AA520F /* MessageBox.cxx in Sources */,
DCFFE59D12100E1400DFA000 /* ComboDialog.cxx in Sources */, DCFFE59D12100E1400DFA000 /* ComboDialog.cxx in Sources */,
DCD2839812E39F1200A808DC /* Thumbulator.cxx in Sources */, DCD2839812E39F1200A808DC /* Thumbulator.cxx in Sources */,
DC6C726213CDEA0A008A5975 /* LoggerDialog.cxx in Sources */,
); );
runOnlyForDeploymentPostprocessing = 0; runOnlyForDeploymentPostprocessing = 0;
}; };