summaryrefslogtreecommitdiff
path: root/src/citra_qt/main.cpp
diff options
context:
space:
mode:
authorGravatar Mathieu Vaillancourt2014-04-21 23:15:17 -0400
committerGravatar Mathieu Vaillancourt2014-04-21 23:21:02 -0400
commit81f6062c85290dd2e63d0083e9f1c32a77d7783e (patch)
tree668e5f9934daa57219a685384f1fc24cf850575b /src/citra_qt/main.cpp
parentAdd a quick way to load Launcher.dat files (diff)
downloadyuzu-81f6062c85290dd2e63d0083e9f1c32a77d7783e.tar.gz
yuzu-81f6062c85290dd2e63d0083e9f1c32a77d7783e.tar.xz
yuzu-81f6062c85290dd2e63d0083e9f1c32a77d7783e.zip
Re-enable toggling window mode.
Diffstat (limited to 'src/citra_qt/main.cpp')
-rw-r--r--src/citra_qt/main.cpp60
1 files changed, 26 insertions, 34 deletions
diff --git a/src/citra_qt/main.cpp b/src/citra_qt/main.cpp
index bb8336c45..f20d33485 100644
--- a/src/citra_qt/main.cpp
+++ b/src/citra_qt/main.cpp
@@ -32,9 +32,7 @@ GMainWindow::GMainWindow()
32 statusBar()->hide(); 32 statusBar()->hide();
33 33
34 render_window = new GRenderWindow; 34 render_window = new GRenderWindow;
35 //render_window->setStyleSheet("background-color:black;"); 35 render_window->hide();
36 ui.horizontalLayout->addWidget(render_window);
37 //render_window->hide();
38 36
39 disasmWidget = new DisassemblerWidget(this, render_window->GetEmuThread()); 37 disasmWidget = new DisassemblerWidget(this, render_window->GetEmuThread());
40 addDockWidget(Qt::BottomDockWidgetArea, disasmWidget); 38 addDockWidget(Qt::BottomDockWidgetArea, disasmWidget);
@@ -71,15 +69,15 @@ GMainWindow::GMainWindow()
71 restoreState(settings.value("state").toByteArray()); 69 restoreState(settings.value("state").toByteArray());
72 render_window->restoreGeometry(settings.value("geometryRenderWindow").toByteArray()); 70 render_window->restoreGeometry(settings.value("geometryRenderWindow").toByteArray());
73 71
74 //ui.action_Popout_Window_Mode->setChecked(settings.value("popupWindowMode", false).toBool()); 72 ui.action_Popout_Window_Mode->setChecked(settings.value("popoutWindowMode", true).toBool());
75 //ToggleWindowMode(); 73 ToggleWindowMode();
76 74
77 // Setup connections 75 // Setup connections
78 connect(ui.action_load_elf, SIGNAL(triggered()), this, SLOT(OnMenuLoadELF())); 76 connect(ui.action_Load_File, SIGNAL(triggered()), this, SLOT(OnMenuLoadFile()));
79 connect(ui.action_Start, SIGNAL(triggered()), this, SLOT(OnStartGame())); 77 connect(ui.action_Start, SIGNAL(triggered()), this, SLOT(OnStartGame()));
80 connect(ui.action_Pause, SIGNAL(triggered()), this, SLOT(OnPauseGame())); 78 connect(ui.action_Pause, SIGNAL(triggered()), this, SLOT(OnPauseGame()));
81 connect(ui.action_Stop, SIGNAL(triggered()), this, SLOT(OnStopGame())); 79 connect(ui.action_Stop, SIGNAL(triggered()), this, SLOT(OnStopGame()));
82 //connect(ui.action_Single_Window_Mode, SIGNAL(triggered(bool)), this, SLOT(SetupEmuWindowMode())); 80 connect(ui.action_Popout_Window_Mode, SIGNAL(triggered(bool)), this, SLOT(ToggleWindowMode()));
83 connect(ui.action_Hotkeys, SIGNAL(triggered()), this, SLOT(OnOpenHotkeysDialog())); 81 connect(ui.action_Hotkeys, SIGNAL(triggered()), this, SLOT(OnOpenHotkeysDialog()));
84 82
85 // BlockingQueuedConnection is important here, it makes sure we've finished refreshing our views before the CPU continues 83 // BlockingQueuedConnection is important here, it makes sure we've finished refreshing our views before the CPU continues
@@ -88,15 +86,13 @@ GMainWindow::GMainWindow()
88 connect(&render_window->GetEmuThread(), SIGNAL(CPUStepped()), callstackWidget, SLOT(OnCPUStepped()), Qt::BlockingQueuedConnection); 86 connect(&render_window->GetEmuThread(), SIGNAL(CPUStepped()), callstackWidget, SLOT(OnCPUStepped()), Qt::BlockingQueuedConnection);
89 87
90 // Setup hotkeys 88 // Setup hotkeys
91 RegisterHotkey("Main Window", "Load Image", QKeySequence::Open); 89 RegisterHotkey("Main Window", "Load File", QKeySequence::Open);
92 RegisterHotkey("Main Window", "Start Emulation"); 90 RegisterHotkey("Main Window", "Start Emulation");
93 LoadHotkeys(settings); 91 LoadHotkeys(settings);
94 92
95 connect(GetHotkey("Main Window", "Load Image", this), SIGNAL(activated()), this, SLOT(OnMenuLoadImage())); 93 connect(GetHotkey("Main Window", "Load File", this), SIGNAL(activated()), this, SLOT(OnMenuLoadFile()));
96 connect(GetHotkey("Main Window", "Start Emulation", this), SIGNAL(activated()), this, SLOT(OnStartGame())); 94 connect(GetHotkey("Main Window", "Start Emulation", this), SIGNAL(activated()), this, SLOT(OnStartGame()));
97 95
98 show();
99
100 LogManager::Init(); 96 LogManager::Init();
101 System::Init(render_window); 97 System::Init(render_window);
102} 98}
@@ -110,12 +106,9 @@ GMainWindow::~GMainWindow()
110 106
111void GMainWindow::BootGame(const char* filename) 107void GMainWindow::BootGame(const char* filename)
112{ 108{
113 render_window->DoneCurrent(); // make sure EmuThread can access GL context
114 render_window->GetEmuThread().SetFilename(filename);
115
116 NOTICE_LOG(MASTER_LOG, "citra starting...\n"); 109 NOTICE_LOG(MASTER_LOG, "citra starting...\n");
117 110
118 if (Core::Init(/*render_window*/)) { 111 if (Core::Init()) {
119 ERROR_LOG(MASTER_LOG, "core initialization failed, exiting..."); 112 ERROR_LOG(MASTER_LOG, "core initialization failed, exiting...");
120 Core::Stop(); 113 Core::Stop();
121 exit(1); 114 exit(1);
@@ -134,19 +127,22 @@ void GMainWindow::BootGame(const char* filename)
134 registersWidget->OnCPUStepped(); 127 registersWidget->OnCPUStepped();
135 callstackWidget->OnCPUStepped(); 128 callstackWidget->OnCPUStepped();
136 129
130 render_window->DoneCurrent(); // make sure EmuThread can access GL context
131 render_window->GetEmuThread().SetFilename(filename);
137 render_window->GetEmuThread().start(); 132 render_window->GetEmuThread().start();
133
134 render_window->show();
138} 135}
139 136
140void GMainWindow::OnMenuLoadELF() 137void GMainWindow::OnMenuLoadFile()
141{ 138{
142 QString filename = QFileDialog::getOpenFileName(this, tr("Load ELF"), QString(), QString()); 139 QString filename = QFileDialog::getOpenFileName(this, tr("Load file"), QString(), tr("3DS homebrew (*.elf *.dat)"));
143 if (filename.size()) 140 if (filename.size())
144 BootGame(filename.toLatin1().data()); 141 BootGame(filename.toLatin1().data());
145} 142}
146 143
147void GMainWindow::OnStartGame() 144void GMainWindow::OnStartGame()
148{ 145{
149 render_window->show();
150 render_window->GetEmuThread().SetCpuRunning(true); 146 render_window->GetEmuThread().SetCpuRunning(true);
151 147
152 ui.action_Start->setEnabled(false); 148 ui.action_Start->setEnabled(false);
@@ -181,26 +177,22 @@ void GMainWindow::OnOpenHotkeysDialog()
181 177
182void GMainWindow::ToggleWindowMode() 178void GMainWindow::ToggleWindowMode()
183{ 179{
184 //if (!render_window->GetEmuThread().isRunning()) 180 bool enable = ui.action_Popout_Window_Mode->isChecked();
185 // return; 181 if (enable && render_window->parent() != NULL)
186 /*
187 bool enable = ui.action_Single_Window_Mode->isChecked();
188 if (enable && render_window->parent() == NULL) // switch to single window mode
189 { 182 {
190 render_window->BackupGeometry(); 183 ui.horizontalLayout->removeWidget(render_window);
191 ui.horizontalLayout->addWidget(render_window); 184 render_window->setParent(NULL);
192 render_window->setVisible(true); 185 render_window->setVisible(true);
193 render_window->DoneCurrent(); 186 render_window->DoneCurrent();
187 render_window->RestoreGeometry();
194 } 188 }
195 else if (!enable && render_window->parent() != NULL) // switch to multiple windows mode 189 else if (!enable && render_window->parent() == NULL)
196 { 190 {
197 ui.horizontalLayout->removeWidget(render_window); 191 render_window->BackupGeometry();
198 render_window->setParent(NULL); 192 ui.horizontalLayout->addWidget(render_window);
199 render_window->setVisible(true); 193 render_window->setVisible(true);
200 render_window->DoneCurrent(); 194 render_window->DoneCurrent();
201 render_window->RestoreGeometry();
202 } 195 }
203 */
204} 196}
205 197
206void GMainWindow::OnConfigure() 198void GMainWindow::OnConfigure()
@@ -215,7 +207,7 @@ void GMainWindow::closeEvent(QCloseEvent* event)
215 settings.setValue("geometry", saveGeometry()); 207 settings.setValue("geometry", saveGeometry());
216 settings.setValue("state", saveState()); 208 settings.setValue("state", saveState());
217 settings.setValue("geometryRenderWindow", render_window->saveGeometry()); 209 settings.setValue("geometryRenderWindow", render_window->saveGeometry());
218 //settings.setValue("singleWindowMode", ui.action_Single_Window_Mode->isChecked()); 210 settings.setValue("popoutWindowMode", ui.action_Popout_Window_Mode->isChecked());
219 settings.setValue("firstStart", false); 211 settings.setValue("firstStart", false);
220 SaveHotkeys(settings); 212 SaveHotkeys(settings);
221 213