From fd6876a09d061d30a0203356108182b5d16335c8 Mon Sep 17 00:00:00 2001 From: mjbudd77 Date: Fri, 2 Jul 2021 15:15:26 -0400 Subject: [PATCH] Added tool bar to Qt debugger window. --- icons/RunPpuFrame.png | Bin 0 -> 192 bytes icons/RunPpuScanline.png | Bin 0 -> 207 bytes icons/StepBack.png | Bin 0 -> 220 bytes icons/StepInto.png | Bin 0 -> 260 bytes icons/StepOut.png | Bin 0 -> 264 bytes icons/StepOver.png | Bin 0 -> 239 bytes icons/arrow-cursor.png | Bin 0 -> 4361 bytes icons/debug-run.png | Bin 0 -> 660 bytes resources.qrc | 7 +++ src/drivers/Qt/ConsoleDebugger.cpp | 93 +++++++++++++++++++++++++++-- src/drivers/Qt/ConsoleDebugger.h | 8 ++- 11 files changed, 99 insertions(+), 9 deletions(-) create mode 100644 icons/RunPpuFrame.png create mode 100644 icons/RunPpuScanline.png create mode 100644 icons/StepBack.png create mode 100644 icons/StepInto.png create mode 100644 icons/StepOut.png create mode 100644 icons/StepOver.png create mode 100644 icons/arrow-cursor.png create mode 100644 icons/debug-run.png diff --git a/icons/RunPpuFrame.png b/icons/RunPpuFrame.png new file mode 100644 index 0000000000000000000000000000000000000000..330bf9464565fdfc70dbdafb8aa69666d585bdfe GIT binary patch literal 192 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Ea{HEjtmSN`?>!lvI6;>1s;*b z3=Dh+L6~vJ#O${~LCF%=h?3y^w370~qEv>0#LT=By}Z;C1rt33JwwYY*EXd971?^a zIEGmGC;#~W-`-WiC4l7sn}vnNgw{Zw1dX2_LUN`FR~Q7A?PGkBu!C_5!vw|x8O}3v hPe{bd3I9)LU^o)B>bIM@i!jh222WQ%mvv4FO#rzdI9&h$ literal 0 HcmV?d00001 diff --git a/icons/RunPpuScanline.png b/icons/RunPpuScanline.png new file mode 100644 index 0000000000000000000000000000000000000000..931427274374a87d876d5d56e00ec65433b936a6 GIT binary patch literal 207 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Ea{HEjtmSN`?>!lvI6;>1s;*b z3=Dh+L6~vJ#O${~LCF%=h?3y^w370~qEv>0#LT=By}Z;C1rt33JwwYY*EXd975R9& zIEGmGC;#~W-`-WiC4l7sn}vnNgw{YF1yLSz=56`+{lwa&4+MOgsAJQ?bKseMlEEE@ wRW8bw5_t@&3@HpU?o7q%MsCxOANeoI;J;8!CdtnA70_G;Pgg&ebxsLQ01gg3djJ3c literal 0 HcmV?d00001 diff --git a/icons/StepBack.png b/icons/StepBack.png new file mode 100644 index 0000000000000000000000000000000000000000..01a9b388076bc8ddee48fe1f0c67f8c314366758 GIT binary patch literal 220 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Ea{HEjtmSN`?>!lvI6;>1s;*b z3=Dh+L6~vJ#O${~LCF%=h?3y^w370~qEv>0#LT=By}Z;C1rt33JwwYY*EXd96-9cw zIEGmGZ|ynAdBA{&*?89X_*1F@>{r7&r(SBVe$r%m=kH__tw)bLjyKHo^!q1yV z`z<^=mmD_8cTCu;$$X;g>|-UnCyz7v9N(?Kw8CStQg4^Zx37ha@1?$atIB>C23o@4 M>FVdQ&MBb@04f_!O8@`> literal 0 HcmV?d00001 diff --git a/icons/StepInto.png b/icons/StepInto.png new file mode 100644 index 0000000000000000000000000000000000000000..0007deca5c2bbd94f701ec4f76b1b68802b5da3e GIT binary patch literal 260 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Ea{HEjtmSN`?>!lvI6;>1s;*b z3=DjSK$uZf!>a)(C|TkfQ4*Y=R#Ki=l*&+$n3-3imzP?iV4`QBXJ~ol+NKnsqDD^_ z#}Etuwf&5I4GKKW-!lvI6;>1s;*b z3=DjSK$uZf!>a)(C|TkfQ4*Y=R#Ki=l*&+$n3-3imzP?iV4`QBXJ~ol+NKnsqE=5A z#}Etuwf)?D4F(*}$z7$WFFx!ylmVc5?TE2Dbt;{R~HgwqL=aUUBCUHH~-mDBZo_zR&J@rzakIo03F2O>FVdQ&MBb@ E0QkCD@c;k- literal 0 HcmV?d00001 diff --git a/icons/StepOver.png b/icons/StepOver.png new file mode 100644 index 0000000000000000000000000000000000000000..bdca721cab943a50f483911538328376ca38c645 GIT binary patch literal 239 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Ea{HEjtmSN`?>!lvI6;>1s;*b z3=DjSK$uZf!>a)(C|TkfQ4*Y=R#Ki=l*&+$n3-3imzP?iV4`QBXJ~ol+NKnsq8v{b z#}Etut^JIA4GJ8tmX7J4(q!j0DM|%2uH9~HzW;+cqoBQHo9N4kRFN&$ytwQ|_Ds}$ z(0<@4)6p}A(-{wnesR@KY-jw&o36?~-Tw#oOr}e^lXtB+Sj%`*^7H4`=I2c55@9@t eyAo%JKV+Dpf6w~hqtG; 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/movie.png icons/camera.png icons/reticle.png + icons/debug-run.png + icons/StepInto.png + icons/StepOver.png + icons/StepOut.png + icons/RunPpuFrame.png + icons/RunPpuScanline.png + icons/arrow-cursor.png diff --git a/src/drivers/Qt/ConsoleDebugger.cpp b/src/drivers/Qt/ConsoleDebugger.cpp index 642069cd..0f0fc085 100644 --- a/src/drivers/Qt/ConsoleDebugger.cpp +++ b/src/drivers/Qt/ConsoleDebugger.cpp @@ -84,7 +84,8 @@ static int lastBpIdx = 0; ConsoleDebugger::ConsoleDebugger(QWidget *parent) : QDialog( parent, Qt::Window ) { - QHBoxLayout *mainLayout; + QVBoxLayout *mainLayoutv; + QHBoxLayout *mainLayouth; QVBoxLayout *vbox, *vbox1, *vbox2, *vbox3, *vbox4; QHBoxLayout *hbox, *hbox1, *hbox2, *hbox3; QGridLayout *grid; @@ -113,6 +114,7 @@ ConsoleDebugger::ConsoleDebugger(QWidget *parent) //resize( 512, 512 ); menuBar = new QMenuBar(this); + toolBar = new QToolBar(this); // This is needed for menu bar to show up on MacOS g_config->getOption( "SDL.UseNativeMenuBar", &useNativeMenuBar ); @@ -148,6 +150,8 @@ ConsoleDebugger::ConsoleDebugger(QWidget *parent) act = new QAction(tr("&Run"), this); act->setShortcut(QKeySequence( tr("F5") ) ); act->setStatusTip(tr("Run")); + //act->setIcon( style()->standardIcon( QStyle::SP_MediaPlay ) ); + act->setIcon( QIcon(":icons/debug-run.png") ); connect( act, SIGNAL(triggered()), this, SLOT(debugRunCB(void)) ); debugMenu->addAction(act); @@ -156,6 +160,7 @@ ConsoleDebugger::ConsoleDebugger(QWidget *parent) act = new QAction(tr("Step &Into"), this); act->setShortcut(QKeySequence( tr("F11") ) ); act->setStatusTip(tr("Step Into")); + act->setIcon( QIcon(":icons/StepInto.png") ); connect( act, SIGNAL(triggered()), this, SLOT(debugStepIntoCB(void)) ); debugMenu->addAction(act); @@ -164,6 +169,7 @@ ConsoleDebugger::ConsoleDebugger(QWidget *parent) act = new QAction(tr("&Step Out"), this); act->setShortcut(QKeySequence( tr("Shift+F11") ) ); act->setStatusTip(tr("Step Out")); + act->setIcon( QIcon(":icons/StepOut.png") ); connect( act, SIGNAL(triggered()), this, SLOT(debugStepOutCB(void)) ); debugMenu->addAction(act); @@ -172,6 +178,7 @@ ConsoleDebugger::ConsoleDebugger(QWidget *parent) act = new QAction(tr("Step &Over"), this); act->setShortcut(QKeySequence( tr("F10") ) ); act->setStatusTip(tr("Step Over")); + act->setIcon( QIcon(":icons/StepOver.png") ); connect( act, SIGNAL(triggered()), this, SLOT(debugStepOverCB(void)) ); debugMenu->addAction(act); @@ -180,6 +187,7 @@ ConsoleDebugger::ConsoleDebugger(QWidget *parent) act = new QAction(tr("Run to S&elected Line"), this); act->setShortcut(QKeySequence( tr("F1") ) ); act->setStatusTip(tr("Run to Selected Line")); + act->setIcon( QIcon(":icons/arrow-cursor.png") ); connect( act, SIGNAL(triggered()), this, SLOT(debugRunToCursorCB(void)) ); debugMenu->addAction(act); @@ -188,6 +196,7 @@ ConsoleDebugger::ConsoleDebugger(QWidget *parent) act = new QAction(tr("Run &Line"), this); act->setShortcut(QKeySequence( tr("F6") ) ); act->setStatusTip(tr("Run Line")); + act->setIcon( QIcon(":icons/RunPpuScanline.png") ); connect( act, SIGNAL(triggered()), this, SLOT(debugRunLineCB(void)) ); debugMenu->addAction(act); @@ -196,6 +205,7 @@ ConsoleDebugger::ConsoleDebugger(QWidget *parent) act = new QAction(tr("Run &128 Lines"), this); act->setShortcut(QKeySequence( tr("F7") ) ); act->setStatusTip(tr("Run 128 Lines")); + act->setIcon( QIcon(":icons/RunPpuFrame.png") ); connect( act, SIGNAL(triggered()), this, SLOT(debugRunLine128CB(void)) ); debugMenu->addAction(act); @@ -380,9 +390,80 @@ ConsoleDebugger::ConsoleDebugger(QWidget *parent) //----------------------------------------------------------------------- // Menu End //----------------------------------------------------------------------- - mainLayout = new QHBoxLayout(); + + //----------------------------------------------------------------------- + // Tool Bar Setup Start + //----------------------------------------------------------------------- + + // Debug -> Run + act = new QAction(tr("&Run"), this); + //act->setShortcut(QKeySequence( tr("F5") ) ); + act->setStatusTip(tr("Run")); + //act->setIcon( style()->standardIcon( QStyle::SP_MediaPlay ) ); + act->setIcon( QIcon(":icons/debug-run.png") ); + connect( act, SIGNAL(triggered()), this, SLOT(debugRunCB(void)) ); - mainLayout->setMenuBar( menuBar ); + toolBar->addAction(act); + + // Debug -> Step Into + act = new QAction(tr("Step &Into"), this); + //act->setShortcut(QKeySequence( tr("F11") ) ); + act->setStatusTip(tr("Step Into")); + act->setIcon( QIcon(":icons/StepInto.png") ); + connect( act, SIGNAL(triggered()), this, SLOT(debugStepIntoCB(void)) ); + + toolBar->addAction(act); + + // Debug -> Step Out + act = new QAction(tr("&Step Out"), this); + //act->setShortcut(QKeySequence( tr("Shift+F11") ) ); + act->setStatusTip(tr("Step Out")); + act->setIcon( QIcon(":icons/StepOut.png") ); + connect( act, SIGNAL(triggered()), this, SLOT(debugStepOutCB(void)) ); + + toolBar->addAction(act); + + // Debug -> Step Over + act = new QAction(tr("Step &Over"), this); + //act->setShortcut(QKeySequence( tr("F10") ) ); + act->setStatusTip(tr("Step Over")); + act->setIcon( QIcon(":icons/StepOver.png") ); + connect( act, SIGNAL(triggered()), this, SLOT(debugStepOverCB(void)) ); + + toolBar->addAction(act); + + toolBar->addSeparator(); + + // Debug -> Run Line + act = new QAction(tr("Run &Line"), this); + //act->setShortcut(QKeySequence( tr("F6") ) ); + act->setStatusTip(tr("Run Line")); + act->setIcon( QIcon(":icons/RunPpuScanline.png") ); + connect( act, SIGNAL(triggered()), this, SLOT(debugRunLineCB(void)) ); + + toolBar->addAction(act); + + // Debug -> Run 128 Lines + act = new QAction(tr("Run &128 Lines"), this); + //act->setShortcut(QKeySequence( tr("F7") ) ); + act->setStatusTip(tr("Run 128 Lines")); + act->setIcon( QIcon(":icons/RunPpuFrame.png") ); + connect( act, SIGNAL(triggered()), this, SLOT(debugRunLine128CB(void)) ); + + toolBar->addAction(act); + + toolBar->addSeparator(); + + //----------------------------------------------------------------------- + // Tool Bar Setup End + //----------------------------------------------------------------------- + + mainLayoutv = new QVBoxLayout(); + mainLayouth = new QHBoxLayout(); + + mainLayoutv->setMenuBar( menuBar ); + mainLayoutv->addWidget( toolBar ); + mainLayoutv->addLayout( mainLayouth ); vbox4 = new QVBoxLayout(); grid = new QGridLayout(); @@ -418,8 +499,8 @@ ConsoleDebugger::ConsoleDebugger(QWidget *parent) //asmText->setMinimumWidth( 20 * fontCharWidth ); //asmText->setLineWrapMode( QPlainTextEdit::NoWrap ); - mainLayout->addLayout( vbox4, 10 ); - mainLayout->addLayout( vbox1, 1 ); + mainLayouth->addLayout( vbox4, 10 ); + mainLayouth->addLayout( vbox1, 1 ); grid = new QGridLayout(); @@ -725,7 +806,7 @@ ConsoleDebugger::ConsoleDebugger(QWidget *parent) // rather than use a checkbox that selects between two. But for the moment, I have more important things // to do. - setLayout( mainLayout ); + setLayout( mainLayoutv ); windowUpdateReq = true; diff --git a/src/drivers/Qt/ConsoleDebugger.h b/src/drivers/Qt/ConsoleDebugger.h index 18fdee97..fe23062b 100644 --- a/src/drivers/Qt/ConsoleDebugger.h +++ b/src/drivers/Qt/ConsoleDebugger.h @@ -24,6 +24,7 @@ #include #include #include +#include #include "Qt/main.h" #include "Qt/SymbolicDebug.h" @@ -118,7 +119,7 @@ class QAsmView : public QWidget protected: void paintEvent(QPaintEvent *event); void keyPressEvent(QKeyEvent *event); - void keyReleaseEvent(QKeyEvent *event); + void keyReleaseEvent(QKeyEvent *event); void mousePressEvent(QMouseEvent * event); void mouseReleaseEvent(QMouseEvent * event); void mouseMoveEvent(QMouseEvent * event); @@ -234,9 +235,10 @@ class ConsoleDebugger : public QDialog protected: void closeEvent(QCloseEvent *event); //void keyPressEvent(QKeyEvent *event); - //void keyReleaseEvent(QKeyEvent *event); + //void keyReleaseEvent(QKeyEvent *event); //QTreeWidget *tree; + QToolBar *toolBar; QScrollBar *vbar; QScrollBar *hbar; QAsmView *asmView; @@ -286,7 +288,7 @@ class ConsoleDebugger : public QDialog void bmListUpdate( bool reset = false ); public slots: - void closeWindow(void); + void closeWindow(void); void asmViewCtxMenuAddBP(void); void asmViewCtxMenuAddBM(void); void asmViewCtxMenuAddSym(void);