From 11ccdf77b45d159e80cac3b40e79b41693a922c1 Mon Sep 17 00:00:00 2001 From: Matthew Budd Date: Sat, 15 Aug 2020 21:41:06 -0400 Subject: [PATCH] Added initial framework for hex editor. --- src/CMakeLists.txt | 1 + src/drivers/Qt/ConsoleWindow.cpp | 29 +++++++++++++++ src/drivers/Qt/ConsoleWindow.h | 3 ++ src/drivers/Qt/HexEditor.cpp | 63 ++++++++++++++++++++++++++++++++ src/drivers/Qt/HexEditor.h | 38 +++++++++++++++++++ 5 files changed, 134 insertions(+) create mode 100644 src/drivers/Qt/HexEditor.cpp create mode 100644 src/drivers/Qt/HexEditor.h diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 6a13bd2b..4ef224bb 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -431,6 +431,7 @@ set(SRC_DRIVERS_SDL ${CMAKE_CURRENT_SOURCE_DIR}/drivers/Qt/GuiConf.cpp ${CMAKE_CURRENT_SOURCE_DIR}/drivers/Qt/LuaControl.cpp ${CMAKE_CURRENT_SOURCE_DIR}/drivers/Qt/CheatsConf.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/drivers/Qt/HexEditor.cpp ${CMAKE_CURRENT_SOURCE_DIR}/drivers/Qt/ConsoleUtilities.cpp ${CMAKE_CURRENT_SOURCE_DIR}/drivers/Qt/ConsoleVideoConf.cpp ${CMAKE_CURRENT_SOURCE_DIR}/drivers/Qt/ConsoleSoundConf.cpp diff --git a/src/drivers/Qt/ConsoleWindow.cpp b/src/drivers/Qt/ConsoleWindow.cpp index 8376262b..e81e57ed 100644 --- a/src/drivers/Qt/ConsoleWindow.cpp +++ b/src/drivers/Qt/ConsoleWindow.cpp @@ -24,6 +24,7 @@ #include "Qt/GuiConf.h" #include "Qt/LuaControl.h" #include "Qt/CheatsConf.h" +#include "Qt/HexEditor.h" #include "Qt/ConsoleUtilities.h" #include "Qt/ConsoleSoundConf.h" #include "Qt/ConsoleVideoConf.h" @@ -484,6 +485,18 @@ void consoleWin_t::createMainMenu(void) toolsMenu->addAction(cheatsAct); + //----------------------------------------------------------------------- + // Debug + debugMenu = menuBar()->addMenu(tr("Debug")); + + // Debug -> Hex Editor + hexEditAct = new QAction(tr("Hex Editor..."), this); + //hexEditAct->setShortcut( QKeySequence(tr("Shift+F7"))); + hexEditAct->setStatusTip(tr("Open Memory Hex Editor")); + connect(hexEditAct, SIGNAL(triggered()), this, SLOT(openHexEditor(void)) ); + + debugMenu->addAction(hexEditAct); + //----------------------------------------------------------------------- // Movie movieMenu = menuBar()->addMenu(tr("Movie")); @@ -1010,6 +1023,22 @@ void consoleWin_t::openCheats(void) //printf("GUI Cheat Window Destroyed\n"); } +void consoleWin_t::openHexEditor(void) +{ + HexEditorDialog_t *hexEditWin; + + //printf("Open GUI Hex Editor Window\n"); + + hexEditWin = new HexEditorDialog_t(this); + + hexEditWin->show(); + hexEditWin->exec(); + + delete hexEditWin; + + //printf("GUI Cheat Window Destroyed\n"); +} + void consoleWin_t::toggleAutoResume(void) { //printf("Auto Resume: %i\n", autoResume->isChecked() ); diff --git a/src/drivers/Qt/ConsoleWindow.h b/src/drivers/Qt/ConsoleWindow.h index e2bd6a69..d2515407 100644 --- a/src/drivers/Qt/ConsoleWindow.h +++ b/src/drivers/Qt/ConsoleWindow.h @@ -53,6 +53,7 @@ class consoleWin_t : public QMainWindow QMenu *optMenu; QMenu *emuMenu; QMenu *toolsMenu; + QMenu *debugMenu; QMenu *movieMenu; QMenu *helpMenu; @@ -88,6 +89,7 @@ class consoleWin_t : public QMainWindow QAction *fdsEjectAct; QAction *fdsLoadBiosAct; QAction *cheatsAct; + QAction *hexEditAct; QAction *openMovAct; QAction *stopMovAct; QAction *recMovAct; @@ -155,6 +157,7 @@ class consoleWin_t : public QMainWindow void fdsEjectDisk(void); void fdsLoadBiosFile(void); void openCheats(void); + void openHexEditor(void); void openMovie(void); void stopMovie(void); void recordMovie(void); diff --git a/src/drivers/Qt/HexEditor.cpp b/src/drivers/Qt/HexEditor.cpp new file mode 100644 index 00000000..1e39ed47 --- /dev/null +++ b/src/drivers/Qt/HexEditor.cpp @@ -0,0 +1,63 @@ +// HotKeyConf.cpp +// +#include +#include +#include +#include + +#include +#include + +#include "Qt/main.h" +#include "Qt/dface.h" +#include "Qt/input.h" +#include "Qt/config.h" +#include "Qt/keyscan.h" +#include "Qt/fceuWrapper.h" +#include "Qt/HexEditor.h" + +//---------------------------------------------------------------------------- +HexEditorDialog_t::HexEditorDialog_t(QWidget *parent) + : QDialog( parent ) +{ + QVBoxLayout *mainLayout; + + setWindowTitle("Hex Editor"); + + resize( 512, 512 ); + + mainLayout = new QVBoxLayout(); + + txt = new QTextEdit(); + + txt->moveCursor(QTextCursor::Start); + txt->setReadOnly(true); + + mainLayout->addWidget( txt ); + + setLayout( mainLayout ); +} +//---------------------------------------------------------------------------- +HexEditorDialog_t::~HexEditorDialog_t(void) +{ + +} +//---------------------------------------------------------------------------- +void HexEditorDialog_t::closeWindow(void) +{ + //printf("Close Window\n"); + done(0); +} +//---------------------------------------------------------------------------- +void HexEditorDialog_t::keyPressEvent(QKeyEvent *event) +{ + printf("Hex Window Key Press: 0x%x \n", event->key() ); + //assignHotkey( event ); +} +//---------------------------------------------------------------------------- +void HexEditorDialog_t::keyReleaseEvent(QKeyEvent *event) +{ + printf("Hex Window Key Release: 0x%x \n", event->key() ); + //assignHotkey( event ); +} +//---------------------------------------------------------------------------- diff --git a/src/drivers/Qt/HexEditor.h b/src/drivers/Qt/HexEditor.h new file mode 100644 index 00000000..8c71d51a --- /dev/null +++ b/src/drivers/Qt/HexEditor.h @@ -0,0 +1,38 @@ +// GamePadConf.h +// + +#pragma once + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +class HexEditorDialog_t : public QDialog +{ + Q_OBJECT + + public: + HexEditorDialog_t(QWidget *parent = 0); + ~HexEditorDialog_t(void); + + protected: + void keyPressEvent(QKeyEvent *event); + void keyReleaseEvent(QKeyEvent *event); + + QTextEdit *txt; + + private: + + public slots: + void closeWindow(void); + private slots: + +};