mirror of
				https://github.com/PabloMK7/citra.git
				synced 2025-10-30 21:30:04 +00:00 
			
		
		
		
	
						commit
						7628f3a6fc
					
				
					 4 changed files with 82 additions and 95 deletions
				
			
		|  | @ -15,6 +15,9 @@ public: | |||
|     explicit GraphicsTracingWidget(std::shared_ptr<Pica::DebugContext> debug_context, | ||||
|                                    QWidget* parent = nullptr); | ||||
| 
 | ||||
|     void OnEmulationStarting(EmuThread* emu_thread); | ||||
|     void OnEmulationStopping(); | ||||
| 
 | ||||
| private slots: | ||||
|     void StartRecording(); | ||||
|     void StopRecording(); | ||||
|  | @ -23,9 +26,6 @@ private slots: | |||
|     void OnBreakPointHit(Pica::DebugContext::Event event, void* data) override; | ||||
|     void OnResumed() override; | ||||
| 
 | ||||
|     void OnEmulationStarting(EmuThread* emu_thread); | ||||
|     void OnEmulationStopping(); | ||||
| 
 | ||||
| signals: | ||||
|     void SetStartTracingButtonEnabled(bool enable); | ||||
|     void SetStopTracingButtonEnabled(bool enable); | ||||
|  |  | |||
|  | @ -59,13 +59,14 @@ GMainWindow::GMainWindow() : config(new Config()), emu_thread(nullptr) { | |||
|     statusBar()->hide(); | ||||
| 
 | ||||
|     InitializeWidgets(); | ||||
|     InitializeDebugMenuActions(); | ||||
|     InitializeDebugWidgets(); | ||||
|     InitializeRecentFileMenuActions(); | ||||
|     InitializeHotkeys(); | ||||
| 
 | ||||
|     SetDefaultUIGeometry(); | ||||
|     RestoreUIState(); | ||||
| 
 | ||||
|     ConnectMenuEvents(); | ||||
|     ConnectWidgetEvents(); | ||||
| 
 | ||||
|     setWindowTitle(QString("Citra | %1-%2").arg(Common::g_scm_branch, Common::g_scm_desc)); | ||||
|  | @ -93,74 +94,85 @@ void GMainWindow::InitializeWidgets() { | |||
| 
 | ||||
|     game_list = new GameList(); | ||||
|     ui.horizontalLayout->addWidget(game_list); | ||||
| } | ||||
| 
 | ||||
| void GMainWindow::InitializeDebugWidgets() { | ||||
|     connect(ui.action_Create_Pica_Surface_Viewer, &QAction::triggered, this, | ||||
|             &GMainWindow::OnCreateGraphicsSurfaceViewer); | ||||
| 
 | ||||
|     QMenu* debug_menu = ui.menu_View_Debugging; | ||||
| 
 | ||||
|     profilerWidget = new ProfilerWidget(this); | ||||
|     addDockWidget(Qt::BottomDockWidgetArea, profilerWidget); | ||||
|     profilerWidget->hide(); | ||||
|     debug_menu->addAction(profilerWidget->toggleViewAction()); | ||||
| 
 | ||||
| #if MICROPROFILE_ENABLED | ||||
|     microProfileDialog = new MicroProfileDialog(this); | ||||
|     microProfileDialog->hide(); | ||||
|     debug_menu->addAction(microProfileDialog->toggleViewAction()); | ||||
| #endif | ||||
| 
 | ||||
|     disasmWidget = new DisassemblerWidget(this, emu_thread.get()); | ||||
|     addDockWidget(Qt::BottomDockWidgetArea, disasmWidget); | ||||
|     disasmWidget->hide(); | ||||
|     debug_menu->addAction(disasmWidget->toggleViewAction()); | ||||
|     connect(this, &GMainWindow::EmulationStarting, disasmWidget, | ||||
|             &DisassemblerWidget::OnEmulationStarting); | ||||
|     connect(this, &GMainWindow::EmulationStopping, disasmWidget, | ||||
|             &DisassemblerWidget::OnEmulationStopping); | ||||
| 
 | ||||
|     registersWidget = new RegistersWidget(this); | ||||
|     addDockWidget(Qt::RightDockWidgetArea, registersWidget); | ||||
|     registersWidget->hide(); | ||||
|     debug_menu->addAction(registersWidget->toggleViewAction()); | ||||
|     connect(this, &GMainWindow::EmulationStarting, registersWidget, | ||||
|             &RegistersWidget::OnEmulationStarting); | ||||
|     connect(this, &GMainWindow::EmulationStopping, registersWidget, | ||||
|             &RegistersWidget::OnEmulationStopping); | ||||
| 
 | ||||
|     callstackWidget = new CallstackWidget(this); | ||||
|     addDockWidget(Qt::RightDockWidgetArea, callstackWidget); | ||||
|     callstackWidget->hide(); | ||||
|     debug_menu->addAction(callstackWidget->toggleViewAction()); | ||||
| 
 | ||||
|     graphicsWidget = new GPUCommandStreamWidget(this); | ||||
|     addDockWidget(Qt::RightDockWidgetArea, graphicsWidget); | ||||
|     graphicsWidget->hide(); | ||||
|     debug_menu->addAction(graphicsWidget->toggleViewAction()); | ||||
| 
 | ||||
|     graphicsCommandsWidget = new GPUCommandListWidget(this); | ||||
|     addDockWidget(Qt::RightDockWidgetArea, graphicsCommandsWidget); | ||||
|     graphicsCommandsWidget->hide(); | ||||
|     debug_menu->addAction(graphicsCommandsWidget->toggleViewAction()); | ||||
| 
 | ||||
|     graphicsBreakpointsWidget = new GraphicsBreakPointsWidget(Pica::g_debug_context, this); | ||||
|     addDockWidget(Qt::RightDockWidgetArea, graphicsBreakpointsWidget); | ||||
|     graphicsBreakpointsWidget->hide(); | ||||
|     debug_menu->addAction(graphicsBreakpointsWidget->toggleViewAction()); | ||||
| 
 | ||||
|     graphicsVertexShaderWidget = new GraphicsVertexShaderWidget(Pica::g_debug_context, this); | ||||
|     addDockWidget(Qt::RightDockWidgetArea, graphicsVertexShaderWidget); | ||||
|     graphicsVertexShaderWidget->hide(); | ||||
|     debug_menu->addAction(graphicsVertexShaderWidget->toggleViewAction()); | ||||
| 
 | ||||
|     graphicsTracingWidget = new GraphicsTracingWidget(Pica::g_debug_context, this); | ||||
|     addDockWidget(Qt::RightDockWidgetArea, graphicsTracingWidget); | ||||
|     graphicsTracingWidget->hide(); | ||||
|     debug_menu->addAction(graphicsTracingWidget->toggleViewAction()); | ||||
|     connect(this, &GMainWindow::EmulationStarting, graphicsTracingWidget, | ||||
|             &GraphicsTracingWidget::OnEmulationStarting); | ||||
|     connect(this, &GMainWindow::EmulationStopping, graphicsTracingWidget, | ||||
|             &GraphicsTracingWidget::OnEmulationStopping); | ||||
| 
 | ||||
|     waitTreeWidget = new WaitTreeWidget(this); | ||||
|     addDockWidget(Qt::LeftDockWidgetArea, waitTreeWidget); | ||||
|     waitTreeWidget->hide(); | ||||
| } | ||||
| 
 | ||||
| void GMainWindow::InitializeDebugMenuActions() { | ||||
|     auto graphicsSurfaceViewerAction = new QAction(tr("Create Pica Surface Viewer"), this); | ||||
|     connect(graphicsSurfaceViewerAction, SIGNAL(triggered()), this, | ||||
|             SLOT(OnCreateGraphicsSurfaceViewer())); | ||||
| 
 | ||||
|     QMenu* debug_menu = ui.menu_View->addMenu(tr("Debugging")); | ||||
|     debug_menu->addAction(graphicsSurfaceViewerAction); | ||||
|     debug_menu->addSeparator(); | ||||
|     debug_menu->addAction(profilerWidget->toggleViewAction()); | ||||
| #if MICROPROFILE_ENABLED | ||||
|     debug_menu->addAction(microProfileDialog->toggleViewAction()); | ||||
| #endif | ||||
|     debug_menu->addAction(disasmWidget->toggleViewAction()); | ||||
|     debug_menu->addAction(registersWidget->toggleViewAction()); | ||||
|     debug_menu->addAction(callstackWidget->toggleViewAction()); | ||||
|     debug_menu->addAction(graphicsWidget->toggleViewAction()); | ||||
|     debug_menu->addAction(graphicsCommandsWidget->toggleViewAction()); | ||||
|     debug_menu->addAction(graphicsBreakpointsWidget->toggleViewAction()); | ||||
|     debug_menu->addAction(graphicsVertexShaderWidget->toggleViewAction()); | ||||
|     debug_menu->addAction(graphicsTracingWidget->toggleViewAction()); | ||||
|     debug_menu->addAction(waitTreeWidget->toggleViewAction()); | ||||
|     connect(this, &GMainWindow::EmulationStarting, waitTreeWidget, | ||||
|             &WaitTreeWidget::OnEmulationStarting); | ||||
|     connect(this, &GMainWindow::EmulationStopping, waitTreeWidget, | ||||
|             &WaitTreeWidget::OnEmulationStopping); | ||||
| } | ||||
| 
 | ||||
| void GMainWindow::InitializeRecentFileMenuActions() { | ||||
|  | @ -215,41 +227,40 @@ void GMainWindow::RestoreUIState() { | |||
|     ui.action_Single_Window_Mode->setChecked(UISettings::values.single_window_mode); | ||||
|     ToggleWindowMode(); | ||||
| 
 | ||||
|     ui.actionDisplay_widget_title_bars->setChecked(UISettings::values.display_titlebar); | ||||
|     OnDisplayTitleBars(ui.actionDisplay_widget_title_bars->isChecked()); | ||||
|     ui.action_Display_Dock_Widget_Headers->setChecked(UISettings::values.display_titlebar); | ||||
|     OnDisplayTitleBars(ui.action_Display_Dock_Widget_Headers->isChecked()); | ||||
| } | ||||
| 
 | ||||
| void GMainWindow::ConnectWidgetEvents() { | ||||
|     connect(game_list, SIGNAL(GameChosen(QString)), this, SLOT(OnGameListLoadFile(QString)), | ||||
|             Qt::DirectConnection); | ||||
|     connect(game_list, SIGNAL(GameChosen(QString)), this, SLOT(OnGameListLoadFile(QString))); | ||||
|     connect(game_list, SIGNAL(OpenSaveFolderRequested(u64)), this, | ||||
|             SLOT(OnGameListOpenSaveFolder(u64)), Qt::DirectConnection); | ||||
|     connect(ui.action_Configure, SIGNAL(triggered()), this, SLOT(OnConfigure())); | ||||
|     connect(ui.action_Load_File, SIGNAL(triggered()), this, SLOT(OnMenuLoadFile()), | ||||
|             Qt::DirectConnection); | ||||
|     connect(ui.action_Load_Symbol_Map, SIGNAL(triggered()), this, SLOT(OnMenuLoadSymbolMap())); | ||||
|     connect(ui.action_Select_Game_List_Root, SIGNAL(triggered()), this, | ||||
|             SLOT(OnMenuSelectGameListRoot())); | ||||
|     connect(ui.action_Start, SIGNAL(triggered()), this, SLOT(OnStartGame())); | ||||
|     connect(ui.action_Pause, SIGNAL(triggered()), this, SLOT(OnPauseGame())); | ||||
|     connect(ui.action_Stop, SIGNAL(triggered()), this, SLOT(OnStopGame())); | ||||
|     connect(ui.action_Single_Window_Mode, SIGNAL(triggered(bool)), this, SLOT(ToggleWindowMode())); | ||||
|             SLOT(OnGameListOpenSaveFolder(u64))); | ||||
| 
 | ||||
|     connect(this, SIGNAL(EmulationStarting(EmuThread*)), disasmWidget, | ||||
|             SLOT(OnEmulationStarting(EmuThread*))); | ||||
|     connect(this, SIGNAL(EmulationStopping()), disasmWidget, SLOT(OnEmulationStopping())); | ||||
|     connect(this, SIGNAL(EmulationStarting(EmuThread*)), registersWidget, | ||||
|             SLOT(OnEmulationStarting(EmuThread*))); | ||||
|     connect(this, SIGNAL(EmulationStopping()), registersWidget, SLOT(OnEmulationStopping())); | ||||
|     connect(this, SIGNAL(EmulationStarting(EmuThread*)), render_window, | ||||
|             SLOT(OnEmulationStarting(EmuThread*))); | ||||
|     connect(this, SIGNAL(EmulationStopping()), render_window, SLOT(OnEmulationStopping())); | ||||
|     connect(this, SIGNAL(EmulationStarting(EmuThread*)), graphicsTracingWidget, | ||||
|             SLOT(OnEmulationStarting(EmuThread*))); | ||||
|     connect(this, SIGNAL(EmulationStopping()), graphicsTracingWidget, SLOT(OnEmulationStopping())); | ||||
|     connect(this, SIGNAL(EmulationStarting(EmuThread*)), waitTreeWidget, | ||||
|             SLOT(OnEmulationStarting(EmuThread*))); | ||||
|     connect(this, SIGNAL(EmulationStopping()), waitTreeWidget, SLOT(OnEmulationStopping())); | ||||
| } | ||||
| 
 | ||||
| void GMainWindow::ConnectMenuEvents() { | ||||
|     // File
 | ||||
|     connect(ui.action_Load_File, &QAction::triggered, this, &GMainWindow::OnMenuLoadFile); | ||||
|     connect(ui.action_Load_Symbol_Map, &QAction::triggered, this, | ||||
|             &GMainWindow::OnMenuLoadSymbolMap); | ||||
|     connect(ui.action_Select_Game_List_Root, &QAction::triggered, this, | ||||
|             &GMainWindow::OnMenuSelectGameListRoot); | ||||
|     connect(ui.action_Exit, &QAction::triggered, this, &QMainWindow::close); | ||||
| 
 | ||||
|     // Emulation
 | ||||
|     connect(ui.action_Start, &QAction::triggered, this, &GMainWindow::OnStartGame); | ||||
|     connect(ui.action_Pause, &QAction::triggered, this, &GMainWindow::OnPauseGame); | ||||
|     connect(ui.action_Stop, &QAction::triggered, this, &GMainWindow::OnStopGame); | ||||
|     connect(ui.action_Configure, &QAction::triggered, this, &GMainWindow::OnConfigure); | ||||
| 
 | ||||
|     // View
 | ||||
|     connect(ui.action_Single_Window_Mode, &QAction::triggered, this, | ||||
|             &GMainWindow::ToggleWindowMode); | ||||
|     connect(ui.action_Display_Dock_Widget_Headers, &QAction::triggered, this, | ||||
|             &GMainWindow::OnDisplayTitleBars); | ||||
| } | ||||
| 
 | ||||
| void GMainWindow::OnDisplayTitleBars(bool show) { | ||||
|  | @ -612,7 +623,7 @@ void GMainWindow::closeEvent(QCloseEvent* event) { | |||
|     UISettings::values.microprofile_visible = microProfileDialog->isVisible(); | ||||
| #endif | ||||
|     UISettings::values.single_window_mode = ui.action_Single_Window_Mode->isChecked(); | ||||
|     UISettings::values.display_titlebar = ui.actionDisplay_widget_title_bars->isChecked(); | ||||
|     UISettings::values.display_titlebar = ui.action_Display_Dock_Widget_Headers->isChecked(); | ||||
|     UISettings::values.first_start = false; | ||||
| 
 | ||||
|     game_list->SaveInterfaceLayout(); | ||||
|  |  | |||
|  | @ -64,7 +64,7 @@ signals: | |||
| 
 | ||||
| private: | ||||
|     void InitializeWidgets(); | ||||
|     void InitializeDebugMenuActions(); | ||||
|     void InitializeDebugWidgets(); | ||||
|     void InitializeRecentFileMenuActions(); | ||||
|     void InitializeHotkeys(); | ||||
| 
 | ||||
|  | @ -72,6 +72,7 @@ private: | |||
|     void RestoreUIState(); | ||||
| 
 | ||||
|     void ConnectWidgetEvents(); | ||||
|     void ConnectMenuEvents(); | ||||
| 
 | ||||
|     bool LoadROM(const QString& filename); | ||||
|     void BootGame(const QString& filename); | ||||
|  |  | |||
|  | @ -79,8 +79,16 @@ | |||
|     <property name="title"> | ||||
|      <string>&View</string> | ||||
|     </property> | ||||
|     <widget class="QMenu" name="menu_View_Debugging"> | ||||
|      <property name="title"> | ||||
|       <string>Debugging</string> | ||||
|      </property> | ||||
|      <addaction name="action_Create_Pica_Surface_Viewer"/> | ||||
|      <addaction name="separator"/> | ||||
|     </widget> | ||||
|     <addaction name="action_Single_Window_Mode"/> | ||||
|     <addaction name="actionDisplay_widget_title_bars"/> | ||||
|     <addaction name="action_Display_Dock_Widget_Headers"/> | ||||
|     <addaction name="menu_View_Debugging"/> | ||||
|    </widget> | ||||
|    <widget class="QMenu" name="menu_Help"> | ||||
|     <property name="title"> | ||||
|  | @ -151,7 +159,7 @@ | |||
|     <string>Configure...</string> | ||||
|    </property> | ||||
|   </action> | ||||
|   <action name="actionDisplay_widget_title_bars"> | ||||
|   <action name="action_Display_Dock_Widget_Headers"> | ||||
|    <property name="checkable"> | ||||
|     <bool>true</bool> | ||||
|    </property> | ||||
|  | @ -167,44 +175,11 @@ | |||
|     <string>Selects a folder to display in the game list</string> | ||||
|    </property> | ||||
|   </action> | ||||
|   <action name="action_Create_Pica_Surface_Viewer"> | ||||
|    <property name="text"> | ||||
|     <string>Create Pica Surface Viewer</string> | ||||
|    </property> | ||||
|   </action> | ||||
|  </widget> | ||||
|  <resources/> | ||||
|  <connections> | ||||
|   <connection> | ||||
|    <sender>action_Exit</sender> | ||||
|    <signal>triggered()</signal> | ||||
|    <receiver>MainWindow</receiver> | ||||
|    <slot>close()</slot> | ||||
|    <hints> | ||||
|     <hint type="sourcelabel"> | ||||
|      <x>-1</x> | ||||
|      <y>-1</y> | ||||
|     </hint> | ||||
|     <hint type="destinationlabel"> | ||||
|      <x>367</x> | ||||
|      <y>314</y> | ||||
|     </hint> | ||||
|    </hints> | ||||
|   </connection> | ||||
|   <connection> | ||||
|    <sender>actionDisplay_widget_title_bars</sender> | ||||
|    <signal>triggered(bool)</signal> | ||||
|    <receiver>MainWindow</receiver> | ||||
|    <slot>OnDisplayTitleBars(bool)</slot> | ||||
|    <hints> | ||||
|     <hint type="sourcelabel"> | ||||
|      <x>-1</x> | ||||
|      <y>-1</y> | ||||
|     </hint> | ||||
|     <hint type="destinationlabel"> | ||||
|      <x>540</x> | ||||
|      <y>364</y> | ||||
|     </hint> | ||||
|    </hints> | ||||
|   </connection> | ||||
|  </connections> | ||||
|  <slots> | ||||
|   <slot>OnConfigure()</slot> | ||||
|   <slot>OnDisplayTitleBars(bool)</slot> | ||||
|  </slots> | ||||
| </ui> | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue