From c98276945ebde8a51e66c67a7c36d36e2264ab5e Mon Sep 17 00:00:00 2001 From: mjbudd77 Date: Fri, 16 Oct 2020 22:44:23 -0400 Subject: [PATCH] Added RAM Watch quick access from RAM search window for Qt GUI --- src/drivers/Qt/RamSearch.cpp | 19 ++++++++++++++++++- src/drivers/Qt/RamSearch.h | 1 + src/drivers/Qt/RamWatch.cpp | 19 +++++++++++++++++++ src/drivers/Qt/RamWatch.h | 2 ++ 4 files changed, 40 insertions(+), 1 deletion(-) diff --git a/src/drivers/Qt/RamSearch.cpp b/src/drivers/Qt/RamSearch.cpp index 3da79f3b..1ce6941f 100644 --- a/src/drivers/Qt/RamSearch.cpp +++ b/src/drivers/Qt/RamSearch.cpp @@ -35,6 +35,7 @@ #include "Qt/RamSearch.h" #include "Qt/HexEditor.h" #include "Qt/CheatsConf.h" +#include "Qt/ConsoleWindow.h" #include "Qt/ConsoleUtilities.h" static bool ShowROM = false; @@ -237,7 +238,7 @@ RamSearchDialog_t::RamSearchDialog_t(QWidget *parent) watchButton = new QPushButton( tr("Watch") ); vbox->addWidget( watchButton ); - //connect( watchButton, SIGNAL(clicked(void)), this, SLOT(dupWatchClicked(void))); + connect( watchButton, SIGNAL(clicked(void)), this, SLOT(addRamWatchClicked(void))); watchButton->setEnabled(false); addCheatButton = new QPushButton( tr("Add Cheat") ); @@ -1171,6 +1172,22 @@ void RamSearchDialog_t::addCheatClicked(void) updateCheatDialog(); } //---------------------------------------------------------------------------- +void RamSearchDialog_t::addRamWatchClicked(void) +{ + int addr = ramView->getSelAddr(); + char desc[128]; + + if ( addr < 0 ) + { + return; + } + strcpy( desc, "Quick Watch Add"); + + ramWatchList.add_entry( desc, addr, dpyType, dpySize, 0 ); + + openRamWatchWindow(consoleWindow); +} +//---------------------------------------------------------------------------- void RamSearchDialog_t::hexEditSelAddr(void) { int addr = ramView->getSelAddr(); diff --git a/src/drivers/Qt/RamSearch.h b/src/drivers/Qt/RamSearch.h index 072f7194..ed2c0ce5 100644 --- a/src/drivers/Qt/RamSearch.h +++ b/src/drivers/Qt/RamSearch.h @@ -140,6 +140,7 @@ class RamSearchDialog_t : public QDialog void eliminateSelAddr(void); void hexEditSelAddr(void); void addCheatClicked(void); + void addRamWatchClicked(void); void periodicUpdate(void); void hbarChanged(int val); void vbarChanged(int val); diff --git a/src/drivers/Qt/RamWatch.cpp b/src/drivers/Qt/RamWatch.cpp index bd1f77ca..85e37a15 100644 --- a/src/drivers/Qt/RamWatch.cpp +++ b/src/drivers/Qt/RamWatch.cpp @@ -32,6 +32,18 @@ #include "Qt/ConsoleUtilities.h" ramWatchList_t ramWatchList; +static RamWatchDialog_t *ramWatchMainWin = NULL; +//---------------------------------------------------------------------------- +void openRamWatchWindow( QWidget *parent, int force ) +{ + if ( !force ) + { + if ( ramWatchMainWin != NULL ) return; + } + ramWatchMainWin = new RamWatchDialog_t(parent); + + ramWatchMainWin->show(); +} //---------------------------------------------------------------------------- RamWatchDialog_t::RamWatchDialog_t(QWidget *parent) : QDialog( parent ) @@ -264,6 +276,8 @@ RamWatchDialog_t::RamWatchDialog_t(QWidget *parent) setLayout( mainLayout ); + ramWatchMainWin = this; + updateTimer = new QTimer( this ); connect( updateTimer, &QTimer::timeout, this, &RamWatchDialog_t::periodicUpdate ); @@ -274,6 +288,11 @@ RamWatchDialog_t::RamWatchDialog_t(QWidget *parent) RamWatchDialog_t::~RamWatchDialog_t(void) { updateTimer->stop(); + + if ( ramWatchMainWin == this ) + { + ramWatchMainWin = NULL; + } printf("Destroy RAM Watch Config Window\n"); } //---------------------------------------------------------------------------- diff --git a/src/drivers/Qt/RamWatch.h b/src/drivers/Qt/RamWatch.h index b15b1b4d..c2a3f91c 100644 --- a/src/drivers/Qt/RamWatch.h +++ b/src/drivers/Qt/RamWatch.h @@ -254,3 +254,5 @@ class RamWatchDialog_t : public QDialog }; extern ramWatchList_t ramWatchList; + +void openRamWatchWindow( QWidget *parent, int force = 0 );