From f351150ad9b4ce14b763ba2d68a8d081d87a04a2 Mon Sep 17 00:00:00 2001 From: mjbudd77 Date: Mon, 6 Dec 2021 20:48:36 -0500 Subject: [PATCH] Added hot key shortcuts for Qt TAS editor window. --- src/drivers/Qt/ConsoleWindow.cpp | 8 ++- src/drivers/Qt/TasEditor/TasEditorWindow.cpp | 70 ++++++++++++++++++-- src/drivers/Qt/TasEditor/TasEditorWindow.h | 6 ++ 3 files changed, 76 insertions(+), 8 deletions(-) diff --git a/src/drivers/Qt/ConsoleWindow.cpp b/src/drivers/Qt/ConsoleWindow.cpp index 7ef645d7..42d2a195 100644 --- a/src/drivers/Qt/ConsoleWindow.cpp +++ b/src/drivers/Qt/ConsoleWindow.cpp @@ -3590,7 +3590,13 @@ void consoleWin_t::toggleMovieFrameDisplay(void) void consoleWin_t::toggleMovieReadWrite(void) { fceuWrapperLock(); - FCEUI_SetMovieToggleReadOnly (!FCEUI_GetMovieToggleReadOnly ()); + //FCEUI_SetMovieToggleReadOnly (!FCEUI_GetMovieToggleReadOnly ()); + FCEUI_MovieToggleReadOnly(); + + if ( tasWin != NULL ) + { + tasWin->updateRecordStatus(); + } fceuWrapperUnLock(); } diff --git a/src/drivers/Qt/TasEditor/TasEditorWindow.cpp b/src/drivers/Qt/TasEditor/TasEditorWindow.cpp index 3b07898c..66593400 100644 --- a/src/drivers/Qt/TasEditor/TasEditorWindow.cpp +++ b/src/drivers/Qt/TasEditor/TasEditorWindow.cpp @@ -203,6 +203,11 @@ TasEditorWindow::TasEditorWindow(QWidget *parent) mainLayout->setMenuBar( menuBar ); pianoRoll->setFocus(); + for (int i=0; isetKey( ks ); + } + } + + // Frame Advance uses key state directly, disable shortcut events + hotkeyShortcut[HK_FRAME_ADVANCE]->setEnabled(false); + hotkeyShortcut[HK_TURBO ]->setEnabled(false); + + // Disable shortcuts that are not allowed with TAS Editor + hotkeyShortcut[HK_OPEN_ROM ]->setEnabled(false); + hotkeyShortcut[HK_CLOSE_ROM ]->setEnabled(false); + hotkeyShortcut[HK_QUIT ]->setEnabled(false); + hotkeyShortcut[HK_FULLSCREEN ]->setEnabled(false); + hotkeyShortcut[HK_MAIN_MENU_HIDE]->setEnabled(false); + hotkeyShortcut[HK_LOAD_LUA ]->setEnabled(false); +} +//---------------------------------------------------------------------------- +void TasEditorWindow::activateHotkey( int hkIdx, QShortcut *shortcut ) +{ + shortcut->activated(); +} +//---------------------------------------------------------------------------- +void TasEditorWindow::updateRecordStatus(void) +{ + recRecordingCbox->setChecked( !movie_readonly ); +} +//---------------------------------------------------------------------------- void TasEditorWindow::updateCheckedItems(void) { @@ -1387,7 +1439,7 @@ void TasEditorWindow::frameUpdate(void) mustCallManualLuaFunction = false; } #endif - + pianoRoll->update(); if ( recentProjectMenuReset ) @@ -2241,11 +2293,15 @@ void TasEditorWindow::setCurrentPattern(int idx) taseditorConfig.currentPattern = idx; } //---------------------------------------------------------------------------- -void TasEditorWindow::recordingChanged(int state) +void TasEditorWindow::recordingChanged(int newState) { fceuCriticalSection emuLock; + int oldState = !movie_readonly ? Qt::Checked : Qt::Unchecked; - FCEUI_MovieToggleReadOnly(); + if ( newState != oldState ) + { + FCEUI_MovieToggleReadOnly(); + } } //---------------------------------------------------------------------------- void TasEditorWindow::editUndoCB(void) @@ -3927,10 +3983,10 @@ void QPianoRoll::contextMenuEvent(QContextMenuEvent *event) mkr = markersManager->getMarkerAtFrame( rowUnderMouse ); - act = new QAction(tr("Set Markers"), &menu); + act = new QAction(tr("Set Markers\tDbl-Clk"), &menu); menu.addAction(act); act->setEnabled( mkr == 0 ); - act->setShortcut(QKeySequence(tr("Double Click"))); + //act->setShortcut(QKeySequence(tr("Double Click"))); connect(act, SIGNAL(triggered(void)), tasWin, SLOT(setMarkers(void))); act = new QAction(tr("Remove Markers"), &menu); diff --git a/src/drivers/Qt/TasEditor/TasEditorWindow.h b/src/drivers/Qt/TasEditor/TasEditorWindow.h index d6092b05..34ca87d1 100644 --- a/src/drivers/Qt/TasEditor/TasEditorWindow.h +++ b/src/drivers/Qt/TasEditor/TasEditorWindow.h @@ -37,6 +37,7 @@ #include #include +#include "Qt/config.h" #include "Qt/ConsoleUtilities.h" #include "Qt/TasEditor/taseditor_config.h" #include "Qt/TasEditor/taseditor_project.h" @@ -327,6 +328,7 @@ class TasEditorWindow : public QDialog QMenuBar *buildMenuBar(void); void buildPianoRollDisplay(void); void buildSideControlPanel(void); + void initHotKeys(void); void initPatterns(void); QMenu *recentProjectMenu; @@ -404,6 +406,8 @@ class TasEditorWindow : public QDialog QClipboard *clipboard; + QShortcut *hotkeyShortcut[HK_MAX]; + std::vector patternsNames; std::vector> patterns; std::list projList; @@ -428,6 +432,7 @@ class TasEditorWindow : public QDialog void frameUpdate(void); void updateCheckedItems(void); void updateHistoryItems(void); + void updateRecordStatus(void); private slots: void openProject(void); void saveProjectCb(void); @@ -507,6 +512,7 @@ class TasEditorWindow : public QDialog void setMarkers(void); void removeMarkers(void); void ungreenzoneSelectedFrames(void); + void activateHotkey( int hkIdx, QShortcut *shortcut ); friend class RECORDER; friend class SPLICER;