|
|
@ -175,7 +175,7 @@ void GMainWindow::InitializeRecentFileMenuActions() { |
|
|
for (int i = 0; i < max_recent_files_item; ++i) { |
|
|
for (int i = 0; i < max_recent_files_item; ++i) { |
|
|
actions_recent_files[i] = new QAction(this); |
|
|
actions_recent_files[i] = new QAction(this); |
|
|
actions_recent_files[i]->setVisible(false); |
|
|
actions_recent_files[i]->setVisible(false); |
|
|
connect(actions_recent_files[i], SIGNAL(triggered()), this, SLOT(OnMenuRecentFile())); |
|
|
|
|
|
|
|
|
connect(actions_recent_files[i], &QAction::triggered, this, &GMainWindow::OnMenuRecentFile); |
|
|
|
|
|
|
|
|
ui.menu_recent_files->addAction(actions_recent_files[i]); |
|
|
ui.menu_recent_files->addAction(actions_recent_files[i]); |
|
|
} |
|
|
} |
|
|
@ -190,10 +190,10 @@ void GMainWindow::InitializeHotkeys() { |
|
|
RegisterHotkey("Main Window", "Exit Fullscreen", QKeySequence::Cancel, Qt::ApplicationShortcut); |
|
|
RegisterHotkey("Main Window", "Exit Fullscreen", QKeySequence::Cancel, Qt::ApplicationShortcut); |
|
|
LoadHotkeys(); |
|
|
LoadHotkeys(); |
|
|
|
|
|
|
|
|
connect(GetHotkey("Main Window", "Load File", this), SIGNAL(activated()), this, |
|
|
|
|
|
SLOT(OnMenuLoadFile())); |
|
|
|
|
|
connect(GetHotkey("Main Window", "Start Emulation", this), SIGNAL(activated()), this, |
|
|
|
|
|
SLOT(OnStartGame())); |
|
|
|
|
|
|
|
|
connect(GetHotkey("Main Window", "Load File", this), &QShortcut::activated, this, |
|
|
|
|
|
&GMainWindow::OnMenuLoadFile); |
|
|
|
|
|
connect(GetHotkey("Main Window", "Start Emulation", this), &QShortcut::activated, this, |
|
|
|
|
|
&GMainWindow::OnStartGame); |
|
|
connect(GetHotkey("Main Window", "Fullscreen", render_window), &QShortcut::activated, |
|
|
connect(GetHotkey("Main Window", "Fullscreen", render_window), &QShortcut::activated, |
|
|
ui.action_Fullscreen, &QAction::trigger); |
|
|
ui.action_Fullscreen, &QAction::trigger); |
|
|
connect(GetHotkey("Main Window", "Fullscreen", render_window), &QShortcut::activatedAmbiguously, |
|
|
connect(GetHotkey("Main Window", "Fullscreen", render_window), &QShortcut::activatedAmbiguously, |
|
|
@ -245,13 +245,14 @@ void GMainWindow::RestoreUIState() { |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
void GMainWindow::ConnectWidgetEvents() { |
|
|
void GMainWindow::ConnectWidgetEvents() { |
|
|
connect(game_list, SIGNAL(GameChosen(QString)), this, SLOT(OnGameListLoadFile(QString))); |
|
|
|
|
|
connect(game_list, SIGNAL(OpenSaveFolderRequested(u64)), this, |
|
|
|
|
|
SLOT(OnGameListOpenSaveFolder(u64))); |
|
|
|
|
|
|
|
|
connect(game_list, &GameList::GameChosen, this, &GMainWindow::OnGameListLoadFile); |
|
|
|
|
|
connect(game_list, &GameList::OpenSaveFolderRequested, this, |
|
|
|
|
|
&GMainWindow::OnGameListOpenSaveFolder); |
|
|
|
|
|
|
|
|
connect(this, SIGNAL(EmulationStarting(EmuThread*)), render_window, |
|
|
|
|
|
SLOT(OnEmulationStarting(EmuThread*))); |
|
|
|
|
|
connect(this, SIGNAL(EmulationStopping()), render_window, SLOT(OnEmulationStopping())); |
|
|
|
|
|
|
|
|
connect(this, &GMainWindow::EmulationStarting, render_window, |
|
|
|
|
|
&GRenderWindow::OnEmulationStarting); |
|
|
|
|
|
connect(this, &GMainWindow::EmulationStopping, render_window, |
|
|
|
|
|
&GRenderWindow::OnEmulationStopping); |
|
|
|
|
|
|
|
|
connect(&status_bar_update_timer, &QTimer::timeout, this, &GMainWindow::UpdateStatusBar); |
|
|
connect(&status_bar_update_timer, &QTimer::timeout, this, &GMainWindow::UpdateStatusBar); |
|
|
} |
|
|
} |
|
|
@ -398,17 +399,17 @@ void GMainWindow::BootGame(const QString& filename) { |
|
|
render_window->moveContext(); |
|
|
render_window->moveContext(); |
|
|
emu_thread->start(); |
|
|
emu_thread->start(); |
|
|
|
|
|
|
|
|
connect(render_window, SIGNAL(Closed()), this, SLOT(OnStopGame())); |
|
|
|
|
|
|
|
|
connect(render_window, &GRenderWindow::Closed, this, &GMainWindow::OnStopGame); |
|
|
// BlockingQueuedConnection is important here, it makes sure we've finished refreshing our views
|
|
|
// BlockingQueuedConnection is important here, it makes sure we've finished refreshing our views
|
|
|
// before the CPU continues
|
|
|
// before the CPU continues
|
|
|
connect(emu_thread.get(), SIGNAL(DebugModeEntered()), registersWidget, |
|
|
|
|
|
SLOT(OnDebugModeEntered()), Qt::BlockingQueuedConnection); |
|
|
|
|
|
connect(emu_thread.get(), SIGNAL(DebugModeEntered()), waitTreeWidget, |
|
|
|
|
|
SLOT(OnDebugModeEntered()), Qt::BlockingQueuedConnection); |
|
|
|
|
|
connect(emu_thread.get(), SIGNAL(DebugModeLeft()), registersWidget, SLOT(OnDebugModeLeft()), |
|
|
|
|
|
Qt::BlockingQueuedConnection); |
|
|
|
|
|
connect(emu_thread.get(), SIGNAL(DebugModeLeft()), waitTreeWidget, SLOT(OnDebugModeLeft()), |
|
|
|
|
|
Qt::BlockingQueuedConnection); |
|
|
|
|
|
|
|
|
connect(emu_thread.get(), &EmuThread::DebugModeEntered, registersWidget, |
|
|
|
|
|
&RegistersWidget::OnDebugModeEntered, Qt::BlockingQueuedConnection); |
|
|
|
|
|
connect(emu_thread.get(), &EmuThread::DebugModeEntered, waitTreeWidget, |
|
|
|
|
|
&WaitTreeWidget::OnDebugModeEntered, Qt::BlockingQueuedConnection); |
|
|
|
|
|
connect(emu_thread.get(), &EmuThread::DebugModeLeft, registersWidget, |
|
|
|
|
|
&RegistersWidget::OnDebugModeLeft, Qt::BlockingQueuedConnection); |
|
|
|
|
|
connect(emu_thread.get(), &EmuThread::DebugModeLeft, waitTreeWidget, |
|
|
|
|
|
&WaitTreeWidget::OnDebugModeLeft, Qt::BlockingQueuedConnection); |
|
|
|
|
|
|
|
|
// Update the GUI
|
|
|
// Update the GUI
|
|
|
registersWidget->OnDebugModeEntered(); |
|
|
registersWidget->OnDebugModeEntered(); |
|
|
@ -437,7 +438,7 @@ void GMainWindow::ShutdownGame() { |
|
|
emu_thread = nullptr; |
|
|
emu_thread = nullptr; |
|
|
|
|
|
|
|
|
// The emulation is stopped, so closing the window or not does not matter anymore
|
|
|
// The emulation is stopped, so closing the window or not does not matter anymore
|
|
|
disconnect(render_window, SIGNAL(Closed()), this, SLOT(OnStopGame())); |
|
|
|
|
|
|
|
|
disconnect(render_window, &GRenderWindow::Closed, this, &GMainWindow::OnStopGame); |
|
|
|
|
|
|
|
|
// Update the GUI
|
|
|
// Update the GUI
|
|
|
ui.action_Start->setEnabled(false); |
|
|
ui.action_Start->setEnabled(false); |
|
|
@ -548,8 +549,7 @@ void GMainWindow::OnStartGame() { |
|
|
emu_thread->SetRunning(true); |
|
|
emu_thread->SetRunning(true); |
|
|
qRegisterMetaType<Core::System::ResultStatus>("Core::System::ResultStatus"); |
|
|
qRegisterMetaType<Core::System::ResultStatus>("Core::System::ResultStatus"); |
|
|
qRegisterMetaType<std::string>("std::string"); |
|
|
qRegisterMetaType<std::string>("std::string"); |
|
|
connect(emu_thread.get(), SIGNAL(ErrorThrown(Core::System::ResultStatus, std::string)), this, |
|
|
|
|
|
SLOT(OnCoreError(Core::System::ResultStatus, std::string))); |
|
|
|
|
|
|
|
|
connect(emu_thread.get(), &EmuThread::ErrorThrown, this, &GMainWindow::OnCoreError); |
|
|
|
|
|
|
|
|
ui.action_Start->setEnabled(false); |
|
|
ui.action_Start->setEnabled(false); |
|
|
ui.action_Start->setText(tr("Continue")); |
|
|
ui.action_Start->setText(tr("Continue")); |
|
|
|