mirror of https://github.com/stella-emu/stella.git
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:
parent
40a66edee4
commit
a16f862193
|
@ -1766,8 +1766,13 @@
|
||||||
</tr>
|
</tr>
|
||||||
|
|
||||||
<tr>
|
<tr>
|
||||||
<td><pre>-showinfo <0|1|2></pre></td>
|
<td><pre>-loglevel <0|1|2></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 <1|0></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>
|
||||||
|
|
||||||
|
|
|
@ -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;
|
||||||
}
|
}
|
||||||
|
|
|
@ -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);
|
||||||
|
|
||||||
|
|
|
@ -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"
|
||||||
|
|
|
@ -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;
|
||||||
|
|
|
@ -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
|
||||||
};
|
};
|
||||||
|
|
||||||
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
|
|
@ -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;
|
||||||
|
}
|
||||||
|
}
|
|
@ -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
|
|
@ -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;
|
||||||
|
|
|
@ -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'
|
||||||
|
|
|
@ -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:
|
||||||
|
|
|
@ -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();
|
||||||
|
|
|
@ -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 \
|
||||||
|
|
|
@ -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;
|
||||||
};
|
};
|
||||||
|
|
Loading…
Reference in New Issue