Bug fixes for Qt GUI load/save state hot keys.

This commit is contained in:
mjbudd77 2021-04-06 22:44:49 -04:00
parent 40668462a8
commit caa9e67544
4 changed files with 116 additions and 83 deletions

View File

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

View File

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

View File

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

View File

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