From caa9e67544a66a469da875982b5799d7956d773d Mon Sep 17 00:00:00 2001 From: mjbudd77 Date: Tue, 6 Apr 2021 22:44:49 -0400 Subject: [PATCH] Bug fixes for Qt GUI load/save state hot keys. --- src/drivers/Qt/ConsoleWindow.cpp | 132 +++++++++++++++++-------------- src/drivers/Qt/ConsoleWindow.h | 23 ++++++ src/drivers/Qt/config.cpp | 42 +++++----- src/state.cpp | 2 +- 4 files changed, 116 insertions(+), 83 deletions(-) diff --git a/src/drivers/Qt/ConsoleWindow.cpp b/src/drivers/Qt/ConsoleWindow.cpp index 56ac81ef..e8df3ea7 100644 --- a/src/drivers/Qt/ConsoleWindow.cpp +++ b/src/drivers/Qt/ConsoleWindow.cpp @@ -577,6 +577,28 @@ void consoleWin_t::initHotKeys(void) connect( Hotkeys[ HK_TOGGLE_INPUT_DISPLAY ].getShortcut(), SIGNAL(activated()), this, SLOT(toggleInputDisplay(void)) ); connect( Hotkeys[ HK_TOGGLE_BG ].getShortcut(), SIGNAL(activated()), this, SLOT(toggleBackground(void)) ); connect( Hotkeys[ HK_TOGGLE_FG ].getShortcut(), SIGNAL(activated()), this, SLOT(toggleForeground(void)) ); + + connect( Hotkeys[ HK_SAVE_STATE_0 ].getShortcut(), SIGNAL(activated()), this, SLOT(saveState0(void)) ); + connect( Hotkeys[ HK_SAVE_STATE_1 ].getShortcut(), SIGNAL(activated()), this, SLOT(saveState1(void)) ); + connect( Hotkeys[ HK_SAVE_STATE_2 ].getShortcut(), SIGNAL(activated()), this, SLOT(saveState2(void)) ); + connect( Hotkeys[ HK_SAVE_STATE_3 ].getShortcut(), SIGNAL(activated()), this, SLOT(saveState3(void)) ); + connect( Hotkeys[ HK_SAVE_STATE_4 ].getShortcut(), SIGNAL(activated()), this, SLOT(saveState4(void)) ); + connect( Hotkeys[ HK_SAVE_STATE_5 ].getShortcut(), SIGNAL(activated()), this, SLOT(saveState5(void)) ); + connect( Hotkeys[ HK_SAVE_STATE_6 ].getShortcut(), SIGNAL(activated()), this, SLOT(saveState6(void)) ); + connect( Hotkeys[ HK_SAVE_STATE_7 ].getShortcut(), SIGNAL(activated()), this, SLOT(saveState7(void)) ); + connect( Hotkeys[ HK_SAVE_STATE_8 ].getShortcut(), SIGNAL(activated()), this, SLOT(saveState8(void)) ); + connect( Hotkeys[ HK_SAVE_STATE_9 ].getShortcut(), SIGNAL(activated()), this, SLOT(saveState9(void)) ); + + connect( Hotkeys[ HK_LOAD_STATE_0 ].getShortcut(), SIGNAL(activated()), this, SLOT(loadState0(void)) ); + connect( Hotkeys[ HK_LOAD_STATE_1 ].getShortcut(), SIGNAL(activated()), this, SLOT(loadState1(void)) ); + connect( Hotkeys[ HK_LOAD_STATE_2 ].getShortcut(), SIGNAL(activated()), this, SLOT(loadState2(void)) ); + connect( Hotkeys[ HK_LOAD_STATE_3 ].getShortcut(), SIGNAL(activated()), this, SLOT(loadState3(void)) ); + connect( Hotkeys[ HK_LOAD_STATE_4 ].getShortcut(), SIGNAL(activated()), this, SLOT(loadState4(void)) ); + connect( Hotkeys[ HK_LOAD_STATE_5 ].getShortcut(), SIGNAL(activated()), this, SLOT(loadState5(void)) ); + connect( Hotkeys[ HK_LOAD_STATE_6 ].getShortcut(), SIGNAL(activated()), this, SLOT(loadState6(void)) ); + connect( Hotkeys[ HK_LOAD_STATE_7 ].getShortcut(), SIGNAL(activated()), this, SLOT(loadState7(void)) ); + connect( Hotkeys[ HK_LOAD_STATE_8 ].getShortcut(), SIGNAL(activated()), this, SLOT(loadState8(void)) ); + connect( Hotkeys[ HK_LOAD_STATE_9 ].getShortcut(), SIGNAL(activated()), this, SLOT(loadState9(void)) ); } //--------------------------------------------------------------------------- void consoleWin_t::createMainMenu(void) @@ -674,7 +696,7 @@ void consoleWin_t::createMainMenu(void) // File -> Quick Save quickSaveAct = new QAction(tr("Quick &Save"), this); - quickSaveAct->setShortcut( QKeySequence(tr("F5"))); + //quickSaveAct->setShortcut( QKeySequence(tr("F5"))); quickSaveAct->setStatusTip(tr("Quick Save")); connect(quickSaveAct, SIGNAL(triggered()), this, SLOT(quickSave(void)) ); @@ -2009,6 +2031,26 @@ void consoleWin_t::quickLoad(void) fceuWrapperUnLock(); } +void consoleWin_t::loadState(int slot) +{ + int prevState; + fceuWrapperLock(); + prevState = FCEUI_SelectState( slot, false ); + FCEUI_LoadState( NULL, true ); + FCEUI_SelectState( prevState, false ); + fceuWrapperUnLock(); +} +void consoleWin_t::loadState0(void){ loadState(0); } +void consoleWin_t::loadState1(void){ loadState(1); } +void consoleWin_t::loadState2(void){ loadState(2); } +void consoleWin_t::loadState3(void){ loadState(3); } +void consoleWin_t::loadState4(void){ loadState(4); } +void consoleWin_t::loadState5(void){ loadState(5); } +void consoleWin_t::loadState6(void){ loadState(6); } +void consoleWin_t::loadState7(void){ loadState(7); } +void consoleWin_t::loadState8(void){ loadState(8); } +void consoleWin_t::loadState9(void){ loadState(9); } + void consoleWin_t::quickSave(void) { fceuWrapperLock(); @@ -2016,75 +2058,43 @@ void consoleWin_t::quickSave(void) fceuWrapperUnLock(); } -void consoleWin_t::changeState0(void) +void consoleWin_t::saveState(int slot) { + int prevState; fceuWrapperLock(); - FCEUI_SelectState( 0, 1 ); + prevState = FCEUI_SelectState( slot, false ); + FCEUI_SaveState( NULL, true ); + FCEUI_SelectState( prevState, false ); fceuWrapperUnLock(); } +void consoleWin_t::saveState0(void){ saveState(0); } +void consoleWin_t::saveState1(void){ saveState(1); } +void consoleWin_t::saveState2(void){ saveState(2); } +void consoleWin_t::saveState3(void){ saveState(3); } +void consoleWin_t::saveState4(void){ saveState(4); } +void consoleWin_t::saveState5(void){ saveState(5); } +void consoleWin_t::saveState6(void){ saveState(6); } +void consoleWin_t::saveState7(void){ saveState(7); } +void consoleWin_t::saveState8(void){ saveState(8); } +void consoleWin_t::saveState9(void){ saveState(9); } -void consoleWin_t::changeState1(void) +void consoleWin_t::changeState(int slot) { fceuWrapperLock(); - FCEUI_SelectState( 1, 1 ); - fceuWrapperUnLock(); -} - -void consoleWin_t::changeState2(void) -{ - fceuWrapperLock(); - FCEUI_SelectState( 2, 1 ); - fceuWrapperUnLock(); -} - -void consoleWin_t::changeState3(void) -{ - fceuWrapperLock(); - FCEUI_SelectState( 3, 1 ); - fceuWrapperUnLock(); -} - -void consoleWin_t::changeState4(void) -{ - fceuWrapperLock(); - FCEUI_SelectState( 4, 1 ); - fceuWrapperUnLock(); -} - -void consoleWin_t::changeState5(void) -{ - fceuWrapperLock(); - FCEUI_SelectState( 5, 1 ); - fceuWrapperUnLock(); -} - -void consoleWin_t::changeState6(void) -{ - fceuWrapperLock(); - FCEUI_SelectState( 6, 1 ); - fceuWrapperUnLock(); -} - -void consoleWin_t::changeState7(void) -{ - fceuWrapperLock(); - FCEUI_SelectState( 7, 1 ); - fceuWrapperUnLock(); -} - -void consoleWin_t::changeState8(void) -{ - fceuWrapperLock(); - FCEUI_SelectState( 8, 1 ); - fceuWrapperUnLock(); -} - -void consoleWin_t::changeState9(void) -{ - fceuWrapperLock(); - FCEUI_SelectState( 9, 1 ); + FCEUI_SelectState( slot, true ); fceuWrapperUnLock(); + state[slot]->setChecked(true); } +void consoleWin_t::changeState0(void){ changeState(0); } +void consoleWin_t::changeState1(void){ changeState(1); } +void consoleWin_t::changeState2(void){ changeState(2); } +void consoleWin_t::changeState3(void){ changeState(3); } +void consoleWin_t::changeState4(void){ changeState(4); } +void consoleWin_t::changeState5(void){ changeState(5); } +void consoleWin_t::changeState6(void){ changeState(6); } +void consoleWin_t::changeState7(void){ changeState(7); } +void consoleWin_t::changeState8(void){ changeState(8); } +void consoleWin_t::changeState9(void){ changeState(9); } void consoleWin_t::incrementState(void) { diff --git a/src/drivers/Qt/ConsoleWindow.h b/src/drivers/Qt/ConsoleWindow.h index bf8ff813..b9fe1ae4 100644 --- a/src/drivers/Qt/ConsoleWindow.h +++ b/src/drivers/Qt/ConsoleWindow.h @@ -218,6 +218,9 @@ class consoleWin_t : public QMainWindow void saveRecentRomMenu(void); void clearRomList(void); void setRegion(int region); + void changeState(int slot); + void saveState(int slot); + void loadState(int slot); public slots: void openDebugWindow(void); @@ -314,6 +317,26 @@ class consoleWin_t : public QMainWindow void toggleTurboMode(void); void toggleBackground(void); void toggleForeground(void); + void saveState0(void); + void saveState1(void); + void saveState2(void); + void saveState3(void); + void saveState4(void); + void saveState5(void); + void saveState6(void); + void saveState7(void); + void saveState8(void); + void saveState9(void); + void loadState0(void); + void loadState1(void); + void loadState2(void); + void loadState3(void); + void loadState4(void); + void loadState5(void); + void loadState6(void); + void loadState7(void); + void loadState8(void); + void loadState9(void); }; diff --git a/src/drivers/Qt/config.cpp b/src/drivers/Qt/config.cpp index c54dd8fa..def6ae41 100644 --- a/src/drivers/Qt/config.cpp +++ b/src/drivers/Qt/config.cpp @@ -128,68 +128,68 @@ int getHotKeyConfig( int i, const char **nameOut, const char **keySeqOut, const name = "SaveState"; keySeq = "I"; title = "Save State"; break; case HK_SAVE_STATE_0: - name = "SaveState0"; keySeq = "F10"; title = "Save State to Slot 0"; + name = "SaveState0"; keySeq = "Shift+F10"; title = "Save State to Slot 0"; break; case HK_SAVE_STATE_1: - name = "SaveState1"; keySeq = "F1"; title = "Save State to Slot 1"; + name = "SaveState1"; keySeq = "Shift+F1"; title = "Save State to Slot 1"; break; case HK_SAVE_STATE_2: - name = "SaveState2"; keySeq = "F2"; title = "Save State to Slot 2"; + name = "SaveState2"; keySeq = "Shift+F2"; title = "Save State to Slot 2"; break; case HK_SAVE_STATE_3: - name = "SaveState3"; keySeq = "F3"; title = "Save State to Slot 3"; + name = "SaveState3"; keySeq = "Shift+F3"; title = "Save State to Slot 3"; break; case HK_SAVE_STATE_4: - name = "SaveState4"; keySeq = "F4"; title = "Save State to Slot 4"; + name = "SaveState4"; keySeq = "Shift+F4"; title = "Save State to Slot 4"; break; case HK_SAVE_STATE_5: - name = "SaveState5"; keySeq = "F5"; title = "Save State to Slot 5"; + name = "SaveState5"; keySeq = "Shift+F5"; title = "Save State to Slot 5"; break; case HK_SAVE_STATE_6: - name = "SaveState6"; keySeq = "F6"; title = "Save State to Slot 6"; + name = "SaveState6"; keySeq = "Shift+F6"; title = "Save State to Slot 6"; break; case HK_SAVE_STATE_7: - name = "SaveState7"; keySeq = "F7"; title = "Save State to Slot 7"; + name = "SaveState7"; keySeq = "Shift+F7"; title = "Save State to Slot 7"; break; case HK_SAVE_STATE_8: - name = "SaveState8"; keySeq = "F8"; title = "Save State to Slot 8"; + name = "SaveState8"; keySeq = "Shift+F8"; title = "Save State to Slot 8"; break; case HK_SAVE_STATE_9: - name = "SaveState9"; keySeq = "F9"; title = "Save State to Slot 9"; + name = "SaveState9"; keySeq = "Shift+F9"; title = "Save State to Slot 9"; break; // Load States case HK_LOAD_STATE: - name = "LoadState"; keySeq = "Shift+I"; title = "Load State"; + name = "LoadState"; keySeq = "P"; title = "Load State"; break; case HK_LOAD_STATE_0: - name = "LoadState0"; keySeq = "Shift+F10"; title = "Load State From Slot 0"; + name = "LoadState0"; keySeq = "F10"; title = "Load State From Slot 0"; break; case HK_LOAD_STATE_1: - name = "LoadState1"; keySeq = "Shift+F1"; title = "Load State From Slot 1"; + name = "LoadState1"; keySeq = "F1"; title = "Load State From Slot 1"; break; case HK_LOAD_STATE_2: - name = "LoadState2"; keySeq = "Shift+F2"; title = "Load State From Slot 2"; + name = "LoadState2"; keySeq = "F2"; title = "Load State From Slot 2"; break; case HK_LOAD_STATE_3: - name = "LoadState3"; keySeq = "Shift+F3"; title = "Load State From Slot 3"; + name = "LoadState3"; keySeq = "F3"; title = "Load State From Slot 3"; break; case HK_LOAD_STATE_4: - name = "LoadState4"; keySeq = "Shift+F4"; title = "Load State From Slot 4"; + name = "LoadState4"; keySeq = "F4"; title = "Load State From Slot 4"; break; case HK_LOAD_STATE_5: - name = "LoadState5"; keySeq = "Shift+F5"; title = "Load State From Slot 5"; + name = "LoadState5"; keySeq = "F5"; title = "Load State From Slot 5"; break; case HK_LOAD_STATE_6: - name = "LoadState6"; keySeq = "Shift+F6"; title = "Load State From Slot 6"; + name = "LoadState6"; keySeq = "F6"; title = "Load State From Slot 6"; break; case HK_LOAD_STATE_7: - name = "LoadState7"; keySeq = "Shift+F7"; title = "Load State From Slot 7"; + name = "LoadState7"; keySeq = "F7"; title = "Load State From Slot 7"; break; case HK_LOAD_STATE_8: - name = "LoadState8"; keySeq = "Shift+F8"; title = "Load State From Slot 8"; + name = "LoadState8"; keySeq = "F8"; title = "Load State From Slot 8"; break; case HK_LOAD_STATE_9: - name = "LoadState9"; keySeq = "Shift+F9"; title = "Load State From Slot 9"; + name = "LoadState9"; keySeq = "F9"; title = "Load State From Slot 9"; break; case HK_FDS_SELECT: name = "FDSSelect"; keySeq = ""; title = "Switch FDS Disk Side"; diff --git a/src/state.cpp b/src/state.cpp index fe98c3b8..a29a46d0 100644 --- a/src/state.cpp +++ b/src/state.cpp @@ -921,8 +921,8 @@ void FCEUI_SelectStateNext(int n) int FCEUI_SelectState(int w, int show) { - FCEUSS_CheckStates(); int oldstate=CurrentState; + FCEUSS_CheckStates(); if(w == -1) { StateShow = 0; return 0; } //mbg merge 7/17/06 had to make return a value CurrentState=w;