For Qt GUI, moved debugger assembly view checkbox options to the debug window main menu. This gives more room to expand the bookmark viewport.
This commit is contained in:
parent
f9c785ba65
commit
77a4e610fb
|
@ -91,7 +91,7 @@ ConsoleDebugger::ConsoleDebugger(QWidget *parent)
|
||||||
QFrame *frame;
|
QFrame *frame;
|
||||||
QLabel *lbl;
|
QLabel *lbl;
|
||||||
QMenuBar *menuBar;
|
QMenuBar *menuBar;
|
||||||
QMenu *fileMenu, *debugMenu, *optMenu, *subMenu;
|
QMenu *fileMenu, *debugMenu, *optMenu, *symMenu, *subMenu;
|
||||||
QActionGroup *actGroup;
|
QActionGroup *actGroup;
|
||||||
QAction *act;
|
QAction *act;
|
||||||
float fontCharWidth;
|
float fontCharWidth;
|
||||||
|
@ -124,6 +124,18 @@ ConsoleDebugger::ConsoleDebugger(QWidget *parent)
|
||||||
// File
|
// File
|
||||||
fileMenu = menuBar->addMenu(tr("&File"));
|
fileMenu = menuBar->addMenu(tr("&File"));
|
||||||
|
|
||||||
|
// Symbols -> Load .DEB
|
||||||
|
g_config->getOption( "SDL.AutoLoadDebugFiles", &opt );
|
||||||
|
|
||||||
|
act = new QAction(tr("&Load .DEB on ROM Load"), this);
|
||||||
|
//act->setShortcut(QKeySequence( tr("F7") ) );
|
||||||
|
act->setStatusTip(tr("&Load .DEB on ROM Load"));
|
||||||
|
act->setCheckable(true);
|
||||||
|
act->setChecked( opt ? true : false );
|
||||||
|
connect( act, SIGNAL(triggered(bool)), this, SLOT(debFileAutoLoadCB(bool)) );
|
||||||
|
|
||||||
|
fileMenu->addAction(act);
|
||||||
|
|
||||||
// File -> Close
|
// File -> Close
|
||||||
act = new QAction(tr("&Close"), this);
|
act = new QAction(tr("&Close"), this);
|
||||||
act->setShortcut(QKeySequence::Close);
|
act->setShortcut(QKeySequence::Close);
|
||||||
|
@ -140,7 +152,7 @@ ConsoleDebugger::ConsoleDebugger(QWidget *parent)
|
||||||
act->setShortcut(QKeySequence( tr("F5") ) );
|
act->setShortcut(QKeySequence( tr("F5") ) );
|
||||||
act->setStatusTip(tr("Run"));
|
act->setStatusTip(tr("Run"));
|
||||||
connect( act, SIGNAL(triggered()), this, SLOT(debugRunCB(void)) );
|
connect( act, SIGNAL(triggered()), this, SLOT(debugRunCB(void)) );
|
||||||
|
|
||||||
debugMenu->addAction(act);
|
debugMenu->addAction(act);
|
||||||
|
|
||||||
// Debug -> Step Into
|
// Debug -> Step Into
|
||||||
|
@ -148,7 +160,7 @@ ConsoleDebugger::ConsoleDebugger(QWidget *parent)
|
||||||
act->setShortcut(QKeySequence( tr("F11") ) );
|
act->setShortcut(QKeySequence( tr("F11") ) );
|
||||||
act->setStatusTip(tr("Step Into"));
|
act->setStatusTip(tr("Step Into"));
|
||||||
connect( act, SIGNAL(triggered()), this, SLOT(debugStepIntoCB(void)) );
|
connect( act, SIGNAL(triggered()), this, SLOT(debugStepIntoCB(void)) );
|
||||||
|
|
||||||
debugMenu->addAction(act);
|
debugMenu->addAction(act);
|
||||||
|
|
||||||
// Debug -> Step Out
|
// Debug -> Step Out
|
||||||
|
@ -156,7 +168,7 @@ ConsoleDebugger::ConsoleDebugger(QWidget *parent)
|
||||||
act->setShortcut(QKeySequence( tr("Shift+F11") ) );
|
act->setShortcut(QKeySequence( tr("Shift+F11") ) );
|
||||||
act->setStatusTip(tr("Step Out"));
|
act->setStatusTip(tr("Step Out"));
|
||||||
connect( act, SIGNAL(triggered()), this, SLOT(debugStepOutCB(void)) );
|
connect( act, SIGNAL(triggered()), this, SLOT(debugStepOutCB(void)) );
|
||||||
|
|
||||||
debugMenu->addAction(act);
|
debugMenu->addAction(act);
|
||||||
|
|
||||||
// Debug -> Step Over
|
// Debug -> Step Over
|
||||||
|
@ -164,7 +176,7 @@ ConsoleDebugger::ConsoleDebugger(QWidget *parent)
|
||||||
act->setShortcut(QKeySequence( tr("F10") ) );
|
act->setShortcut(QKeySequence( tr("F10") ) );
|
||||||
act->setStatusTip(tr("Step Over"));
|
act->setStatusTip(tr("Step Over"));
|
||||||
connect( act, SIGNAL(triggered()), this, SLOT(debugStepOverCB(void)) );
|
connect( act, SIGNAL(triggered()), this, SLOT(debugStepOverCB(void)) );
|
||||||
|
|
||||||
debugMenu->addAction(act);
|
debugMenu->addAction(act);
|
||||||
|
|
||||||
// Debug -> Run to Selected Line
|
// Debug -> Run to Selected Line
|
||||||
|
@ -172,7 +184,7 @@ ConsoleDebugger::ConsoleDebugger(QWidget *parent)
|
||||||
act->setShortcut(QKeySequence( tr("F1") ) );
|
act->setShortcut(QKeySequence( tr("F1") ) );
|
||||||
act->setStatusTip(tr("Run to Selected Line"));
|
act->setStatusTip(tr("Run to Selected Line"));
|
||||||
connect( act, SIGNAL(triggered()), this, SLOT(debugRunToCursorCB(void)) );
|
connect( act, SIGNAL(triggered()), this, SLOT(debugRunToCursorCB(void)) );
|
||||||
|
|
||||||
debugMenu->addAction(act);
|
debugMenu->addAction(act);
|
||||||
|
|
||||||
// Debug -> Run Line
|
// Debug -> Run Line
|
||||||
|
@ -180,7 +192,7 @@ ConsoleDebugger::ConsoleDebugger(QWidget *parent)
|
||||||
act->setShortcut(QKeySequence( tr("F6") ) );
|
act->setShortcut(QKeySequence( tr("F6") ) );
|
||||||
act->setStatusTip(tr("Run Line"));
|
act->setStatusTip(tr("Run Line"));
|
||||||
connect( act, SIGNAL(triggered()), this, SLOT(debugRunLineCB(void)) );
|
connect( act, SIGNAL(triggered()), this, SLOT(debugRunLineCB(void)) );
|
||||||
|
|
||||||
debugMenu->addAction(act);
|
debugMenu->addAction(act);
|
||||||
|
|
||||||
// Debug -> Run 128 Lines
|
// Debug -> Run 128 Lines
|
||||||
|
@ -188,7 +200,7 @@ ConsoleDebugger::ConsoleDebugger(QWidget *parent)
|
||||||
act->setShortcut(QKeySequence( tr("F7") ) );
|
act->setShortcut(QKeySequence( tr("F7") ) );
|
||||||
act->setStatusTip(tr("Run 128 Lines"));
|
act->setStatusTip(tr("Run 128 Lines"));
|
||||||
connect( act, SIGNAL(triggered()), this, SLOT(debugRunLine128CB(void)) );
|
connect( act, SIGNAL(triggered()), this, SLOT(debugRunLine128CB(void)) );
|
||||||
|
|
||||||
debugMenu->addAction(act);
|
debugMenu->addAction(act);
|
||||||
|
|
||||||
debugMenu->addSeparator();
|
debugMenu->addSeparator();
|
||||||
|
@ -200,7 +212,7 @@ ConsoleDebugger::ConsoleDebugger(QWidget *parent)
|
||||||
act->setCheckable(true);
|
act->setCheckable(true);
|
||||||
act->setChecked( FCEUI_Debugger().badopbreak );
|
act->setChecked( FCEUI_Debugger().badopbreak );
|
||||||
connect( act, SIGNAL(triggered(bool)), this, SLOT(breakOnBadOpcodeCB(bool)) );
|
connect( act, SIGNAL(triggered(bool)), this, SLOT(breakOnBadOpcodeCB(bool)) );
|
||||||
|
|
||||||
debugMenu->addAction(act);
|
debugMenu->addAction(act);
|
||||||
|
|
||||||
// Debug -> Break on Unlogged Code
|
// Debug -> Break on Unlogged Code
|
||||||
|
@ -210,7 +222,7 @@ ConsoleDebugger::ConsoleDebugger(QWidget *parent)
|
||||||
act->setCheckable(true);
|
act->setCheckable(true);
|
||||||
act->setChecked( break_on_unlogged_code );
|
act->setChecked( break_on_unlogged_code );
|
||||||
connect( act, SIGNAL(triggered(bool)), this, SLOT(breakOnNewCodeCB(bool)) );
|
connect( act, SIGNAL(triggered(bool)), this, SLOT(breakOnNewCodeCB(bool)) );
|
||||||
|
|
||||||
debugMenu->addAction(act);
|
debugMenu->addAction(act);
|
||||||
|
|
||||||
// Debug -> Break on Unlogged Data
|
// Debug -> Break on Unlogged Data
|
||||||
|
@ -220,7 +232,7 @@ ConsoleDebugger::ConsoleDebugger(QWidget *parent)
|
||||||
act->setCheckable(true);
|
act->setCheckable(true);
|
||||||
act->setChecked( break_on_unlogged_data );
|
act->setChecked( break_on_unlogged_data );
|
||||||
connect( act, SIGNAL(triggered(bool)), this, SLOT(breakOnNewDataCB(bool)) );
|
connect( act, SIGNAL(triggered(bool)), this, SLOT(breakOnNewDataCB(bool)) );
|
||||||
|
|
||||||
debugMenu->addAction(act);
|
debugMenu->addAction(act);
|
||||||
|
|
||||||
// Options
|
// Options
|
||||||
|
@ -288,6 +300,65 @@ ConsoleDebugger::ConsoleDebugger(QWidget *parent)
|
||||||
actGroup->addAction(act);
|
actGroup->addAction(act);
|
||||||
subMenu->addAction(act);
|
subMenu->addAction(act);
|
||||||
|
|
||||||
|
optMenu->addSeparator();
|
||||||
|
|
||||||
|
// Options -> Open Debugger on ROM Load
|
||||||
|
g_config->getOption( "SDL.AutoOpenDebugger", &opt );
|
||||||
|
|
||||||
|
act = new QAction(tr("&Open Debugger on ROM Load"), this);
|
||||||
|
//act->setShortcut(QKeySequence( tr("F7") ) );
|
||||||
|
act->setStatusTip(tr("&Reload"));
|
||||||
|
act->setCheckable(true);
|
||||||
|
act->setChecked( opt ? true : false );
|
||||||
|
connect( act, SIGNAL(triggered(bool)), this, SLOT(autoOpenDebugCB(bool)) );
|
||||||
|
|
||||||
|
optMenu->addAction(act);
|
||||||
|
|
||||||
|
// Symbols
|
||||||
|
symMenu = menuBar->addMenu(tr("&Symbols"));
|
||||||
|
|
||||||
|
// Symbols -> Reload
|
||||||
|
act = new QAction(tr("&Reload"), this);
|
||||||
|
//act->setShortcut(QKeySequence( tr("F7") ) );
|
||||||
|
act->setStatusTip(tr("&Reload"));
|
||||||
|
//act->setCheckable(true);
|
||||||
|
//act->setChecked( break_on_unlogged_data );
|
||||||
|
connect( act, SIGNAL(triggered(void)), this, SLOT(reloadSymbolsCB(void)) );
|
||||||
|
|
||||||
|
symMenu->addAction(act);
|
||||||
|
|
||||||
|
symMenu->addSeparator();
|
||||||
|
|
||||||
|
// Symbols -> Display ROM Offsets
|
||||||
|
act = new QAction(tr("Show ROM &Offsets"), this);
|
||||||
|
//act->setShortcut(QKeySequence( tr("F7") ) );
|
||||||
|
act->setStatusTip(tr("Show ROM &Offsets"));
|
||||||
|
act->setCheckable(true);
|
||||||
|
act->setChecked(false);
|
||||||
|
connect( act, SIGNAL(triggered(bool)), this, SLOT(displayROMoffsetCB(bool)) );
|
||||||
|
|
||||||
|
symMenu->addAction(act);
|
||||||
|
|
||||||
|
// Symbols -> Symbolic Debug
|
||||||
|
act = new QAction(tr("&Symbolic Debug"), this);
|
||||||
|
//act->setShortcut(QKeySequence( tr("F7") ) );
|
||||||
|
act->setStatusTip(tr("&Symbolic Debug"));
|
||||||
|
act->setCheckable(true);
|
||||||
|
act->setChecked(true);
|
||||||
|
connect( act, SIGNAL(triggered(bool)), this, SLOT(symbolDebugEnableCB(bool)) );
|
||||||
|
|
||||||
|
symMenu->addAction(act);
|
||||||
|
|
||||||
|
// Symbols -> Symbolic Debug
|
||||||
|
act = new QAction(tr("&Register Names"), this);
|
||||||
|
//act->setShortcut(QKeySequence( tr("F7") ) );
|
||||||
|
act->setStatusTip(tr("&Register Names"));
|
||||||
|
act->setCheckable(true);
|
||||||
|
act->setChecked(true);
|
||||||
|
connect( act, SIGNAL(triggered(bool)), this, SLOT(registerNameEnableCB(bool)) );
|
||||||
|
|
||||||
|
symMenu->addAction(act);
|
||||||
|
|
||||||
//-----------------------------------------------------------------------
|
//-----------------------------------------------------------------------
|
||||||
// Menu End
|
// Menu End
|
||||||
//-----------------------------------------------------------------------
|
//-----------------------------------------------------------------------
|
||||||
|
@ -617,76 +688,24 @@ ConsoleDebugger::ConsoleDebugger(QWidget *parent)
|
||||||
vbox->addWidget( button );
|
vbox->addWidget( button );
|
||||||
connect( button, SIGNAL(clicked(void)), this, SLOT(edit_BM_CB(void)) );
|
connect( button, SIGNAL(clicked(void)), this, SLOT(edit_BM_CB(void)) );
|
||||||
|
|
||||||
hbox->addWidget( bmTree );
|
hbox->addWidget( bmTree, 10 );
|
||||||
hbox->addLayout( vbox );
|
hbox->addLayout( vbox , 1 );
|
||||||
bmFrame->setLayout( hbox );
|
bmFrame->setLayout( hbox );
|
||||||
hbox3->addWidget( bmFrame );
|
hbox3->addWidget( bmFrame );
|
||||||
vbox1->addLayout( hbox3 );
|
vbox1->addLayout( hbox3 );
|
||||||
|
|
||||||
frame = new QFrame();
|
//frame = new QFrame();
|
||||||
vbox = new QVBoxLayout();
|
//vbox = new QVBoxLayout();
|
||||||
button = new QPushButton( tr("Reset Counters") );
|
//button = new QPushButton( tr("Reset Counters") );
|
||||||
connect( button, SIGNAL(clicked(void)), this, SLOT(resetCountersCB(void)) );
|
//connect( button, SIGNAL(clicked(void)), this, SLOT(resetCountersCB(void)) );
|
||||||
vbox->addWidget( button );
|
//vbox->addWidget( button );
|
||||||
vbox->addWidget( frame );
|
//vbox->addWidget( frame );
|
||||||
hbox3->addLayout( vbox );
|
//hbox3->addLayout( vbox );
|
||||||
|
|
||||||
vbox = new QVBoxLayout();
|
|
||||||
romOfsChkBox = new QCheckBox( tr("ROM Offsets") );
|
|
||||||
symDbgChkBox = new QCheckBox( tr("Symbolic Debug") );
|
|
||||||
regNamChkBox = new QCheckBox( tr("Register Names") );
|
|
||||||
vbox->addWidget( romOfsChkBox );
|
|
||||||
vbox->addWidget( symDbgChkBox );
|
|
||||||
vbox->addWidget( regNamChkBox );
|
|
||||||
|
|
||||||
symDbgChkBox->setChecked(true);
|
|
||||||
regNamChkBox->setChecked(true);
|
|
||||||
|
|
||||||
connect( romOfsChkBox, SIGNAL(stateChanged(int)), this, SLOT(displayROMoffsetCB(int)) );
|
|
||||||
connect( symDbgChkBox, SIGNAL(stateChanged(int)), this, SLOT(symbolDebugEnableCB(int)) );
|
|
||||||
connect( regNamChkBox, SIGNAL(stateChanged(int)), this, SLOT(registerNameEnableCB(int)) );
|
|
||||||
|
|
||||||
|
|
||||||
button = new QPushButton( tr("Reload Symbols") );
|
|
||||||
vbox->addWidget( button );
|
|
||||||
connect( button, SIGNAL(clicked(void)), this, SLOT(reloadSymbolsCB(void)) );
|
|
||||||
|
|
||||||
button = new QPushButton( tr("ROM Patcher") );
|
|
||||||
vbox->addWidget( button );
|
|
||||||
button->setEnabled(false); // TODO
|
|
||||||
|
|
||||||
frame->setLayout( vbox );
|
|
||||||
frame->setFrameShape( QFrame::Box );
|
|
||||||
|
|
||||||
hbox = new QHBoxLayout();
|
|
||||||
vbox1->addLayout( hbox );
|
|
||||||
|
|
||||||
button = new QPushButton( tr("Default Window Size") );
|
|
||||||
autoOpenChkBox = new QCheckBox( tr("Auto-Open") );
|
|
||||||
debFileChkBox = new QCheckBox( tr("DEB Files") );
|
|
||||||
idaFontChkBox = new QCheckBox( tr("IDA Font") );
|
|
||||||
hbox->addWidget( button );
|
|
||||||
hbox->addWidget( autoOpenChkBox );
|
|
||||||
hbox->addWidget( debFileChkBox );
|
|
||||||
hbox->addWidget( idaFontChkBox );
|
|
||||||
|
|
||||||
g_config->getOption( "SDL.AutoOpenDebugger", &opt );
|
|
||||||
autoOpenChkBox->setChecked( opt );
|
|
||||||
|
|
||||||
g_config->getOption( "SDL.AutoLoadDebugFiles", &opt );
|
|
||||||
debFileChkBox->setChecked( opt );
|
|
||||||
|
|
||||||
connect( autoOpenChkBox, SIGNAL(stateChanged(int)), this, SLOT(autoOpenDebugCB(int)) );
|
|
||||||
connect( debFileChkBox , SIGNAL(stateChanged(int)), this, SLOT(debFileAutoLoadCB(int)) );
|
|
||||||
|
|
||||||
button->setEnabled(false); // TODO
|
|
||||||
|
|
||||||
// IDA font is just a monospace font, we are forcing this anyway. It is just easier to read the assembly.
|
// IDA font is just a monospace font, we are forcing this anyway. It is just easier to read the assembly.
|
||||||
// If a different font is desired, my thought is to open a QFontDialog and let the user pick a new font,
|
// If a different font is desired, my thought is to open a QFontDialog and let the user pick a new font,
|
||||||
// rather than use a checkbox that selects between two. But for the moment, I have more important things
|
// rather than use a checkbox that selects between two. But for the moment, I have more important things
|
||||||
// to do.
|
// to do.
|
||||||
idaFontChkBox->setEnabled(false);
|
|
||||||
idaFontChkBox->setChecked(true);
|
|
||||||
|
|
||||||
setLayout( mainLayout );
|
setLayout( mainLayout );
|
||||||
|
|
||||||
|
@ -1531,29 +1550,29 @@ void ConsoleDebugger::instructionsThresChanged(const QString &txt)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
//----------------------------------------------------------------------------
|
//----------------------------------------------------------------------------
|
||||||
void ConsoleDebugger::displayROMoffsetCB( int value )
|
void ConsoleDebugger::displayROMoffsetCB( bool value )
|
||||||
{
|
{
|
||||||
asmView->setDisplayROMoffsets(value != Qt::Unchecked);
|
asmView->setDisplayROMoffsets(value);
|
||||||
}
|
}
|
||||||
//----------------------------------------------------------------------------
|
//----------------------------------------------------------------------------
|
||||||
void ConsoleDebugger::symbolDebugEnableCB( int value )
|
void ConsoleDebugger::symbolDebugEnableCB( bool value )
|
||||||
{
|
{
|
||||||
asmView->setSymbolDebugEnable(value != Qt::Unchecked);
|
asmView->setSymbolDebugEnable(value);
|
||||||
}
|
}
|
||||||
//----------------------------------------------------------------------------
|
//----------------------------------------------------------------------------
|
||||||
void ConsoleDebugger::registerNameEnableCB( int value )
|
void ConsoleDebugger::registerNameEnableCB( bool value )
|
||||||
{
|
{
|
||||||
asmView->setRegisterNameEnable(value != Qt::Unchecked);
|
asmView->setRegisterNameEnable(value);
|
||||||
}
|
}
|
||||||
//----------------------------------------------------------------------------
|
//----------------------------------------------------------------------------
|
||||||
void ConsoleDebugger::autoOpenDebugCB( int value )
|
void ConsoleDebugger::autoOpenDebugCB( bool value )
|
||||||
{
|
{
|
||||||
g_config->setOption( "SDL.AutoOpenDebugger", value != Qt::Unchecked);
|
g_config->setOption( "SDL.AutoOpenDebugger", value);
|
||||||
}
|
}
|
||||||
//----------------------------------------------------------------------------
|
//----------------------------------------------------------------------------
|
||||||
void ConsoleDebugger::debFileAutoLoadCB( int value )
|
void ConsoleDebugger::debFileAutoLoadCB( bool value )
|
||||||
{
|
{
|
||||||
int autoLoadDebug = value != Qt::Unchecked;
|
int autoLoadDebug = value;
|
||||||
|
|
||||||
g_config->setOption("SDL.AutoLoadDebugFiles", autoLoadDebug);
|
g_config->setOption("SDL.AutoLoadDebugFiles", autoLoadDebug);
|
||||||
|
|
||||||
|
|
|
@ -265,12 +265,6 @@ class ConsoleDebugger : public QDialog
|
||||||
QCheckBox *C_chkbox;
|
QCheckBox *C_chkbox;
|
||||||
QCheckBox *brkCpuCycExd;
|
QCheckBox *brkCpuCycExd;
|
||||||
QCheckBox *brkInstrsExd;
|
QCheckBox *brkInstrsExd;
|
||||||
QCheckBox *romOfsChkBox;
|
|
||||||
QCheckBox *symDbgChkBox;
|
|
||||||
QCheckBox *regNamChkBox;
|
|
||||||
QCheckBox *autoOpenChkBox;
|
|
||||||
QCheckBox *debFileChkBox;
|
|
||||||
QCheckBox *idaFontChkBox;
|
|
||||||
QLabel *emuStatLbl;
|
QLabel *emuStatLbl;
|
||||||
QLabel *ppuLbl;
|
QLabel *ppuLbl;
|
||||||
QLabel *spriteLbl;
|
QLabel *spriteLbl;
|
||||||
|
@ -319,11 +313,11 @@ class ConsoleDebugger : public QDialog
|
||||||
void delete_BM_CB(void);
|
void delete_BM_CB(void);
|
||||||
void resetCountersCB (void);
|
void resetCountersCB (void);
|
||||||
void reloadSymbolsCB(void);
|
void reloadSymbolsCB(void);
|
||||||
void displayROMoffsetCB(int value);
|
void displayROMoffsetCB(bool value);
|
||||||
void symbolDebugEnableCB(int value);
|
void symbolDebugEnableCB(bool value);
|
||||||
void registerNameEnableCB(int value);
|
void registerNameEnableCB(bool value);
|
||||||
void autoOpenDebugCB( int value );
|
void autoOpenDebugCB( bool value );
|
||||||
void debFileAutoLoadCB( int value );
|
void debFileAutoLoadCB( bool value );
|
||||||
void breakOnBadOpcodeCB(bool value);
|
void breakOnBadOpcodeCB(bool value);
|
||||||
void breakOnNewCodeCB(bool value);
|
void breakOnNewCodeCB(bool value);
|
||||||
void breakOnNewDataCB(bool value);
|
void breakOnNewDataCB(bool value);
|
||||||
|
|
Loading…
Reference in New Issue