diff options
| author | spycrab <spycrab@users.noreply.github.com> | 2017-08-27 13:55:05 +0200 |
|---|---|---|
| committer | spycrab <spycrab@users.noreply.github.com> | 2017-09-03 02:57:44 +0200 |
| commit | 0e7ed3514f3ba5a7eee018538b780ae2cfc77391 (patch) | |
| tree | ae4aeea9a46884ef51b3e6c69372ea7755f6ab50 /Source/Core/DolphinQt2/MenuBar.cpp | |
| parent | 4163ee42bc9b96606501e2c01e63c3ef8b23c56a (diff) | |
Qt: Implement "Movie" menu
Diffstat (limited to 'Source/Core/DolphinQt2/MenuBar.cpp')
| -rw-r--r-- | Source/Core/DolphinQt2/MenuBar.cpp | 108 |
1 files changed, 107 insertions, 1 deletions
diff --git a/Source/Core/DolphinQt2/MenuBar.cpp b/Source/Core/DolphinQt2/MenuBar.cpp index 8a1c6ec509..996c21b024 100644 --- a/Source/Core/DolphinQt2/MenuBar.cpp +++ b/Source/Core/DolphinQt2/MenuBar.cpp @@ -15,9 +15,12 @@ #include "Common/FileUtil.h" #include "Core/CommonTitles.h" #include "Core/ConfigManager.h" +#include "Core/Core.h" #include "Core/HW/WiiSaveCrypted.h" +#include "Core/HW/Wiimote.h" #include "Core/IOS/ES/ES.h" #include "Core/IOS/IOS.h" +#include "Core/Movie.h" #include "Core/State.h" #include "DiscIO/NANDImporter.h" #include "DolphinQt2/AboutDialog.h" @@ -28,13 +31,17 @@ MenuBar::MenuBar(QWidget* parent) : QMenuBar(parent) { AddFileMenu(); AddEmulationMenu(); - addMenu(tr("Movie")); + AddMovieMenu(); AddOptionsMenu(); AddToolsMenu(); AddViewMenu(); AddHelpMenu(); EmulationStopped(); + + connect(this, &MenuBar::SelectionChanged, this, &MenuBar::OnSelectionChanged); + connect(this, &MenuBar::RecordingStatusChanged, this, &MenuBar::OnRecordingStatusChanged); + connect(this, &MenuBar::ReadOnlyModeChanged, this, &MenuBar::OnReadOnlyModeChanged); } void MenuBar::EmulationStarted() @@ -51,6 +58,11 @@ void MenuBar::EmulationStarted() m_screenshot_action->setEnabled(true); m_state_load_menu->setEnabled(true); m_state_save_menu->setEnabled(true); + + // Movie + m_recording_read_only->setEnabled(true); + m_recording_play->setEnabled(false); + UpdateStateSlotMenu(); UpdateToolsMenu(true); } @@ -75,6 +87,12 @@ void MenuBar::EmulationStopped() m_screenshot_action->setEnabled(false); m_state_load_menu->setEnabled(false); m_state_save_menu->setEnabled(false); + + // Movie + m_recording_read_only->setEnabled(false); + m_recording_stop->setEnabled(false); + m_recording_play->setEnabled(false); + UpdateStateSlotMenu(); UpdateToolsMenu(false); } @@ -391,6 +409,75 @@ void MenuBar::AddShowRegionsMenu(QMenu* view_menu) } } +void MenuBar::AddMovieMenu() +{ + auto* movie_menu = addMenu(tr("&Movie")); + m_recording_start = + movie_menu->addAction(tr("Start Recording Input"), [this] { emit StartRecording(); }); + m_recording_play = + movie_menu->addAction(tr("Play Input Recording..."), [this] { emit PlayRecording(); }); + m_recording_stop = + movie_menu->addAction(tr("Stop Playing/Recording Input"), [this] { emit StopRecording(); }); + m_recording_export = + movie_menu->addAction(tr("Export Recording..."), [this] { emit ExportRecording(); }); + + m_recording_start->setEnabled(false); + m_recording_play->setEnabled(false); + m_recording_stop->setEnabled(false); + m_recording_export->setEnabled(false); + + m_recording_read_only = movie_menu->addAction(tr("Read-Only Mode")); + m_recording_read_only->setCheckable(true); + m_recording_read_only->setChecked(Movie::IsReadOnly()); + connect(m_recording_read_only, &QAction::toggled, [](bool value) { Movie::SetReadOnly(value); }); + + movie_menu->addSeparator(); + + auto* pause_at_end = movie_menu->addAction(tr("Pause at End of Movie")); + pause_at_end->setCheckable(true); + pause_at_end->setChecked(SConfig::GetInstance().m_PauseMovie); + connect(pause_at_end, &QAction::toggled, + [](bool value) { SConfig::GetInstance().m_PauseMovie = value; }); + + auto* lag_counter = movie_menu->addAction(tr("Show Lag Counter")); + lag_counter->setCheckable(true); + lag_counter->setChecked(SConfig::GetInstance().m_ShowLag); + connect(lag_counter, &QAction::toggled, + [](bool value) { SConfig::GetInstance().m_ShowLag = value; }); + + auto* frame_counter = movie_menu->addAction(tr("Show Frame Counter")); + frame_counter->setCheckable(true); + frame_counter->setChecked(SConfig::GetInstance().m_ShowFrameCount); + connect(frame_counter, &QAction::toggled, + [](bool value) { SConfig::GetInstance().m_ShowFrameCount = value; }); + + auto* input_display = movie_menu->addAction(tr("Show Input Display")); + input_display->setCheckable(true); + input_display->setChecked(SConfig::GetInstance().m_ShowInputDisplay); + connect(frame_counter, &QAction::toggled, + [](bool value) { SConfig::GetInstance().m_ShowInputDisplay = value; }); + + auto* system_clock = movie_menu->addAction(tr("Show System Clock")); + system_clock->setCheckable(true); + system_clock->setChecked(SConfig::GetInstance().m_ShowRTC); + connect(system_clock, &QAction::toggled, + [](bool value) { SConfig::GetInstance().m_ShowRTC = value; }); + + movie_menu->addSeparator(); + + auto* dump_frames = movie_menu->addAction(tr("Dump Frames")); + dump_frames->setCheckable(true); + dump_frames->setChecked(SConfig::GetInstance().m_DumpFrames); + connect(dump_frames, &QAction::toggled, + [](bool value) { SConfig::GetInstance().m_DumpFrames = value; }); + + auto* dump_audio = movie_menu->addAction(tr("Dump Audio")); + dump_audio->setCheckable(true); + dump_audio->setChecked(SConfig::GetInstance().m_DumpAudio); + connect(dump_audio, &QAction::toggled, + [](bool value) { SConfig::GetInstance().m_DumpAudio = value; }); +} + void MenuBar::UpdateToolsMenu(bool emulation_started) { m_boot_sysmenu->setEnabled(!emulation_started); @@ -473,3 +560,22 @@ void MenuBar::NANDExtractCertificates() QMessageBox::critical(this, tr("Error"), tr("Failed to extract certificates from NAND")); } } + +void MenuBar::OnSelectionChanged(QSharedPointer<GameFile> game_file) +{ + bool is_null = game_file.isNull(); + + m_recording_play->setEnabled(!Core::IsRunning() && !is_null); + m_recording_start->setEnabled(!Movie::IsPlayingInput() && !is_null); +} + +void MenuBar::OnRecordingStatusChanged(bool recording) +{ + m_recording_start->setEnabled(!recording); + m_recording_stop->setEnabled(recording); +} + +void MenuBar::OnReadOnlyModeChanged(bool read_only) +{ + m_recording_read_only->setChecked(read_only); +} |
