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:
mjbudd77 2021-07-01 21:10:59 -04:00
parent f9c785ba65
commit 77a4e610fb
2 changed files with 106 additions and 93 deletions

View File

@ -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);

View File

@ -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);