mirror of https://github.com/stella-emu/stella.git
Rearrangement of GUI-specific code from Debugger to DebuggerDialog; more
cleanups and removals to follow. git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2794 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
This commit is contained in:
parent
bcb4c592d3
commit
77dfaa0ebc
|
@ -173,11 +173,8 @@ void Debugger::initialize()
|
||||||
myHeight = BSPF_max(myHeight, 720u);
|
myHeight = BSPF_max(myHeight, 720u);
|
||||||
myOSystem->settings().setValue("debuggerres", GUI::Size(myWidth, myHeight));
|
myOSystem->settings().setValue("debuggerres", GUI::Size(myWidth, myHeight));
|
||||||
|
|
||||||
const GUI::Rect& r = getDialogBounds();
|
|
||||||
|
|
||||||
delete myBaseDialog; myBaseDialog = myDialog = NULL;
|
delete myBaseDialog; myBaseDialog = myDialog = NULL;
|
||||||
myDialog = new DebuggerDialog(myOSystem, this,
|
myDialog = new DebuggerDialog(myOSystem, this, 0, 0, myWidth, myHeight);
|
||||||
r.left, r.top, r.width(), r.height());
|
|
||||||
myBaseDialog = myDialog;
|
myBaseDialog = myDialog;
|
||||||
|
|
||||||
myRewindManager = new RewindManager(*myOSystem, myDialog->rewindButton());
|
myRewindManager = new RewindManager(*myOSystem, myDialog->rewindButton());
|
||||||
|
@ -187,10 +184,8 @@ void Debugger::initialize()
|
||||||
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
FBInitStatus Debugger::initializeVideo()
|
FBInitStatus Debugger::initializeVideo()
|
||||||
{
|
{
|
||||||
const GUI::Rect& r = getDialogBounds();
|
|
||||||
|
|
||||||
string title = string("Stella ") + STELLA_VERSION + ": Debugger mode";
|
string title = string("Stella ") + STELLA_VERSION + ": Debugger mode";
|
||||||
return myOSystem->frameBuffer().initialize(title, r.width(), r.height());
|
return myOSystem->frameBuffer().initialize(title, myWidth, myHeight);
|
||||||
}
|
}
|
||||||
|
|
||||||
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
@ -561,74 +556,6 @@ void Debugger::setQuitState()
|
||||||
mySystem.m6502().execute(1);
|
mySystem.m6502().execute(1);
|
||||||
}
|
}
|
||||||
|
|
||||||
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
|
||||||
GUI::Rect Debugger::getDialogBounds() const
|
|
||||||
{
|
|
||||||
// The dialog bounds are the actual size of the entire dialog container
|
|
||||||
GUI::Rect r(0, 0, myWidth, myHeight);
|
|
||||||
return r;
|
|
||||||
}
|
|
||||||
|
|
||||||
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
|
||||||
GUI::Rect Debugger::getTiaBounds() const
|
|
||||||
{
|
|
||||||
// The area showing the TIA image (NTSC and PAL supported, up to 260 lines)
|
|
||||||
GUI::Rect r(0, 0, 320, 260);
|
|
||||||
return r;
|
|
||||||
}
|
|
||||||
|
|
||||||
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
|
||||||
GUI::Rect Debugger::getRomBounds() const
|
|
||||||
{
|
|
||||||
// The ROM area is the full area to the right of the tabs
|
|
||||||
const GUI::Rect& dialog = getDialogBounds();
|
|
||||||
const GUI::Rect& status = getStatusBounds();
|
|
||||||
|
|
||||||
int x1 = status.right + 1;
|
|
||||||
int y1 = 0;
|
|
||||||
int x2 = dialog.right;
|
|
||||||
int y2 = dialog.bottom;
|
|
||||||
GUI::Rect r(x1, y1, x2, y2);
|
|
||||||
|
|
||||||
return r;
|
|
||||||
}
|
|
||||||
|
|
||||||
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
|
||||||
GUI::Rect Debugger::getStatusBounds() const
|
|
||||||
{
|
|
||||||
// The status area is the full area to the right of the TIA image
|
|
||||||
// extending as far as necessary
|
|
||||||
// 30% of any space above 1030 pixels will be allocated to this area
|
|
||||||
const GUI::Rect& dlg = getDialogBounds();
|
|
||||||
const GUI::Rect& tia = getTiaBounds();
|
|
||||||
|
|
||||||
int x1 = tia.right + 1;
|
|
||||||
int y1 = 0;
|
|
||||||
int x2 = tia.right + 225 + (dlg.width() > 1030 ?
|
|
||||||
(int) (0.35 * (dlg.width() - 1030)) : 0);
|
|
||||||
int y2 = tia.bottom;
|
|
||||||
GUI::Rect r(x1, y1, x2, y2);
|
|
||||||
|
|
||||||
return r;
|
|
||||||
}
|
|
||||||
|
|
||||||
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
|
||||||
GUI::Rect Debugger::getTabBounds() const
|
|
||||||
{
|
|
||||||
// The tab area is the full area below the TIA image
|
|
||||||
const GUI::Rect& dialog = getDialogBounds();
|
|
||||||
const GUI::Rect& tia = getTiaBounds();
|
|
||||||
const GUI::Rect& status = getStatusBounds();
|
|
||||||
|
|
||||||
int x1 = 0;
|
|
||||||
int y1 = tia.bottom + 1;
|
|
||||||
int x2 = status.right + 1;
|
|
||||||
int y2 = dialog.bottom;
|
|
||||||
GUI::Rect r(x1, y1, x2, y2);
|
|
||||||
|
|
||||||
return r;
|
|
||||||
}
|
|
||||||
|
|
||||||
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
bool Debugger::addFunction(const string& name, const string& definition,
|
bool Debugger::addFunction(const string& name, const string& definition,
|
||||||
Expression* exp, bool builtin)
|
Expression* exp, bool builtin)
|
||||||
|
|
|
@ -46,7 +46,6 @@ class ButtonWidget;
|
||||||
#include "DebuggerDialog.hxx"
|
#include "DebuggerDialog.hxx"
|
||||||
#include "DebuggerParser.hxx"
|
#include "DebuggerParser.hxx"
|
||||||
#include "System.hxx"
|
#include "System.hxx"
|
||||||
#include "Rect.hxx"
|
|
||||||
#include "Stack.hxx"
|
#include "Stack.hxx"
|
||||||
#include "bspf.hxx"
|
#include "bspf.hxx"
|
||||||
|
|
||||||
|
@ -227,16 +226,6 @@ class Debugger : public DialogContainer
|
||||||
*/
|
*/
|
||||||
static Debugger& debugger() { return *myStaticDebugger; }
|
static Debugger& debugger() { return *myStaticDebugger; }
|
||||||
|
|
||||||
/**
|
|
||||||
Get the dimensions of the various debugger dialog areas
|
|
||||||
(takes mediasource into account)
|
|
||||||
*/
|
|
||||||
GUI::Rect getDialogBounds() const;
|
|
||||||
GUI::Rect getTiaBounds() const;
|
|
||||||
GUI::Rect getRomBounds() const;
|
|
||||||
GUI::Rect getStatusBounds() const;
|
|
||||||
GUI::Rect getTabBounds() const;
|
|
||||||
|
|
||||||
/* These are now exposed so Expressions can use them. */
|
/* These are now exposed so Expressions can use them. */
|
||||||
int peek(int addr) { return mySystem.peek(addr); }
|
int peek(int addr) { return mySystem.peek(addr); }
|
||||||
int dpeek(int addr) { return mySystem.peek(addr) | (mySystem.peek(addr+1) << 8); }
|
int dpeek(int addr) { return mySystem.peek(addr) | (mySystem.peek(addr+1) << 8); }
|
||||||
|
|
|
@ -34,7 +34,6 @@
|
||||||
#include "DataGridOpsWidget.hxx"
|
#include "DataGridOpsWidget.hxx"
|
||||||
#include "EditTextWidget.hxx"
|
#include "EditTextWidget.hxx"
|
||||||
#include "MessageBox.hxx"
|
#include "MessageBox.hxx"
|
||||||
#include "Rect.hxx"
|
|
||||||
#include "Debugger.hxx"
|
#include "Debugger.hxx"
|
||||||
#include "DebuggerParser.hxx"
|
#include "DebuggerParser.hxx"
|
||||||
#include "ConsoleFont.hxx"
|
#include "ConsoleFont.hxx"
|
||||||
|
@ -51,7 +50,7 @@ DebuggerDialog::DebuggerDialog(OSystem* osystem, DialogContainer* parent,
|
||||||
myFont(NULL),
|
myFont(NULL),
|
||||||
myFatalError(NULL)
|
myFatalError(NULL)
|
||||||
{
|
{
|
||||||
createFont();
|
createFont(); // Font is sized according to available space
|
||||||
|
|
||||||
addTiaArea();
|
addTiaArea();
|
||||||
addTabArea();
|
addTabArea();
|
||||||
|
@ -175,7 +174,7 @@ void DebuggerDialog::createFont()
|
||||||
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
void DebuggerDialog::showFatalMessage(const string& msg)
|
void DebuggerDialog::showFatalMessage(const string& msg)
|
||||||
{
|
{
|
||||||
const GUI::Rect& r = instance().debugger().getDialogBounds();
|
const GUI::Rect& r = getDialogBounds();
|
||||||
|
|
||||||
delete myFatalError;
|
delete myFatalError;
|
||||||
myFatalError =
|
myFatalError =
|
||||||
|
@ -188,7 +187,7 @@ void DebuggerDialog::showFatalMessage(const string& msg)
|
||||||
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
void DebuggerDialog::addTiaArea()
|
void DebuggerDialog::addTiaArea()
|
||||||
{
|
{
|
||||||
const GUI::Rect& r = instance().debugger().getTiaBounds();
|
const GUI::Rect& r = getTiaBounds();
|
||||||
|
|
||||||
myTiaOutput = new TiaOutputWidget(this, *myFont,
|
myTiaOutput = new TiaOutputWidget(this, *myFont,
|
||||||
r.left, r.top, r.width(), r.height());
|
r.left, r.top, r.width(), r.height());
|
||||||
|
@ -197,7 +196,7 @@ void DebuggerDialog::addTiaArea()
|
||||||
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
void DebuggerDialog::addTabArea()
|
void DebuggerDialog::addTabArea()
|
||||||
{
|
{
|
||||||
const GUI::Rect& r = instance().debugger().getTabBounds();
|
const GUI::Rect& r = getTabBounds();
|
||||||
const int vBorder = 4;
|
const int vBorder = 4;
|
||||||
|
|
||||||
// The tab widget
|
// The tab widget
|
||||||
|
@ -248,7 +247,7 @@ void DebuggerDialog::addStatusArea()
|
||||||
{
|
{
|
||||||
const GUI::Font& font = *myFont;
|
const GUI::Font& font = *myFont;
|
||||||
const int lineHeight = font.getLineHeight();
|
const int lineHeight = font.getLineHeight();
|
||||||
const GUI::Rect& r = instance().debugger().getStatusBounds();
|
const GUI::Rect& r = getStatusBounds();
|
||||||
int xpos, ypos;
|
int xpos, ypos;
|
||||||
|
|
||||||
xpos = r.left; ypos = r.top;
|
xpos = r.left; ypos = r.top;
|
||||||
|
@ -271,7 +270,7 @@ void DebuggerDialog::addStatusArea()
|
||||||
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
void DebuggerDialog::addRomArea()
|
void DebuggerDialog::addRomArea()
|
||||||
{
|
{
|
||||||
const GUI::Rect& r = instance().debugger().getRomBounds();
|
const GUI::Rect& r = getRomBounds();
|
||||||
const int vBorder = 4;
|
const int vBorder = 4;
|
||||||
|
|
||||||
int xpos, ypos;
|
int xpos, ypos;
|
||||||
|
@ -357,6 +356,74 @@ void DebuggerDialog::addRomArea()
|
||||||
myRomTab->setActiveTab(0);
|
myRomTab->setActiveTab(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
GUI::Rect DebuggerDialog::getDialogBounds() const
|
||||||
|
{
|
||||||
|
// The dialog bounds are the actual size of the entire dialog container
|
||||||
|
GUI::Rect r(0, 0, _w, _h);
|
||||||
|
return r;
|
||||||
|
}
|
||||||
|
|
||||||
|
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
GUI::Rect DebuggerDialog::getTiaBounds() const
|
||||||
|
{
|
||||||
|
// The area showing the TIA image (NTSC and PAL supported, up to 260 lines)
|
||||||
|
GUI::Rect r(0, 0, 320, 260);
|
||||||
|
return r;
|
||||||
|
}
|
||||||
|
|
||||||
|
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
GUI::Rect DebuggerDialog::getRomBounds() const
|
||||||
|
{
|
||||||
|
// The ROM area is the full area to the right of the tabs
|
||||||
|
const GUI::Rect& dialog = getDialogBounds();
|
||||||
|
const GUI::Rect& status = getStatusBounds();
|
||||||
|
|
||||||
|
int x1 = status.right + 1;
|
||||||
|
int y1 = 0;
|
||||||
|
int x2 = dialog.right;
|
||||||
|
int y2 = dialog.bottom;
|
||||||
|
GUI::Rect r(x1, y1, x2, y2);
|
||||||
|
|
||||||
|
return r;
|
||||||
|
}
|
||||||
|
|
||||||
|
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
GUI::Rect DebuggerDialog::getStatusBounds() const
|
||||||
|
{
|
||||||
|
// The status area is the full area to the right of the TIA image
|
||||||
|
// extending as far as necessary
|
||||||
|
// 30% of any space above 1030 pixels will be allocated to this area
|
||||||
|
const GUI::Rect& dlg = getDialogBounds();
|
||||||
|
const GUI::Rect& tia = getTiaBounds();
|
||||||
|
|
||||||
|
int x1 = tia.right + 1;
|
||||||
|
int y1 = 0;
|
||||||
|
int x2 = tia.right + 225 + (dlg.width() > 1030 ?
|
||||||
|
(int) (0.35 * (dlg.width() - 1030)) : 0);
|
||||||
|
int y2 = tia.bottom;
|
||||||
|
GUI::Rect r(x1, y1, x2, y2);
|
||||||
|
|
||||||
|
return r;
|
||||||
|
}
|
||||||
|
|
||||||
|
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
GUI::Rect DebuggerDialog::getTabBounds() const
|
||||||
|
{
|
||||||
|
// The tab area is the full area below the TIA image
|
||||||
|
const GUI::Rect& dialog = getDialogBounds();
|
||||||
|
const GUI::Rect& tia = getTiaBounds();
|
||||||
|
const GUI::Rect& status = getStatusBounds();
|
||||||
|
|
||||||
|
int x1 = 0;
|
||||||
|
int y1 = tia.bottom + 1;
|
||||||
|
int x2 = status.right + 1;
|
||||||
|
int y2 = dialog.bottom;
|
||||||
|
GUI::Rect r(x1, y1, x2, y2);
|
||||||
|
|
||||||
|
return r;
|
||||||
|
}
|
||||||
|
|
||||||
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
void DebuggerDialog::doStep()
|
void DebuggerDialog::doStep()
|
||||||
{
|
{
|
||||||
|
|
|
@ -37,6 +37,7 @@ class CartDebugWidget;
|
||||||
|
|
||||||
#include "Dialog.hxx"
|
#include "Dialog.hxx"
|
||||||
#include "MessageBox.hxx"
|
#include "MessageBox.hxx"
|
||||||
|
#include "Rect.hxx"
|
||||||
|
|
||||||
class DebuggerDialog : public Dialog
|
class DebuggerDialog : public Dialog
|
||||||
{
|
{
|
||||||
|
@ -61,11 +62,32 @@ class DebuggerDialog : public Dialog
|
||||||
EditTextWidget& message() const { return *myMessageBox; }
|
EditTextWidget& message() const { return *myMessageBox; }
|
||||||
ButtonWidget& rewindButton() const { return *myRewindButton; }
|
ButtonWidget& rewindButton() const { return *myRewindButton; }
|
||||||
|
|
||||||
|
void showFatalMessage(const string& msg);
|
||||||
|
|
||||||
|
private:
|
||||||
void loadConfig();
|
void loadConfig();
|
||||||
void handleKeyDown(StellaKey key, StellaMod mod, char ascii);
|
void handleKeyDown(StellaKey key, StellaMod mod, char ascii);
|
||||||
void handleCommand(CommandSender* sender, int cmd, int data, int id);
|
void handleCommand(CommandSender* sender, int cmd, int data, int id);
|
||||||
|
|
||||||
void showFatalMessage(const string& msg);
|
void doStep();
|
||||||
|
void doTrace();
|
||||||
|
void doScanlineAdvance();
|
||||||
|
void doAdvance();
|
||||||
|
void doRewind();
|
||||||
|
void doExitDebugger();
|
||||||
|
void doExitRom();
|
||||||
|
|
||||||
|
void createFont();
|
||||||
|
void addTiaArea();
|
||||||
|
void addTabArea();
|
||||||
|
void addStatusArea();
|
||||||
|
void addRomArea();
|
||||||
|
|
||||||
|
GUI::Rect getDialogBounds() const;
|
||||||
|
GUI::Rect getTiaBounds() const;
|
||||||
|
GUI::Rect getRomBounds() const;
|
||||||
|
GUI::Rect getStatusBounds() const;
|
||||||
|
GUI::Rect getTabBounds() const;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
enum {
|
enum {
|
||||||
|
@ -92,21 +114,6 @@ class DebuggerDialog : public Dialog
|
||||||
EditTextWidget* myMessageBox;
|
EditTextWidget* myMessageBox;
|
||||||
ButtonWidget* myRewindButton;
|
ButtonWidget* myRewindButton;
|
||||||
GUI::MessageBox* myFatalError;
|
GUI::MessageBox* myFatalError;
|
||||||
|
|
||||||
private:
|
|
||||||
void createFont();
|
|
||||||
void addTiaArea();
|
|
||||||
void addTabArea();
|
|
||||||
void addStatusArea();
|
|
||||||
void addRomArea();
|
|
||||||
|
|
||||||
void doStep();
|
|
||||||
void doTrace();
|
|
||||||
void doScanlineAdvance();
|
|
||||||
void doAdvance();
|
|
||||||
void doRewind();
|
|
||||||
void doExitDebugger();
|
|
||||||
void doExitRom();
|
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
Loading…
Reference in New Issue