| 
									
										
										
										
											2008-12-08 04:46:09 +00:00
										 |  |  | // Copyright (C) 2003-2008 Dolphin Project.
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | // This program is free software: you can redistribute it and/or modify
 | 
					
						
							|  |  |  | // it under the terms of the GNU General Public License as published by
 | 
					
						
							|  |  |  | // the Free Software Foundation, version 2.0.
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | // This program is distributed in the hope that it will be useful,
 | 
					
						
							|  |  |  | // but WITHOUT ANY WARRANTY; without even the implied warranty of
 | 
					
						
							|  |  |  | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 | 
					
						
							|  |  |  | // GNU General Public License 2.0 for more details.
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | // A copy of the GPL 2.0 should have been included with the program.
 | 
					
						
							|  |  |  | // If not, see http://www.gnu.org/licenses/
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | // Official SVN repository and contact information can be found at
 | 
					
						
							|  |  |  | // http://code.google.com/p/dolphin-emu/
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #ifndef CODEWINDOW_H_
 | 
					
						
							|  |  |  | #define CODEWINDOW_H_
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #include <wx/dialog.h>
 | 
					
						
							|  |  |  | #include <wx/textctrl.h>
 | 
					
						
							|  |  |  | #include <wx/listbox.h>
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-02-06 18:18:20 +00:00
										 |  |  | #include "Thread.h"
 | 
					
						
							| 
									
										
										
										
											2008-12-08 04:46:09 +00:00
										 |  |  | #include "CoreParameter.h"
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | class CRegisterWindow; | 
					
						
							|  |  |  | class CLogWindow; | 
					
						
							|  |  |  | class CBreakPointWindow; | 
					
						
							|  |  |  | class CMemoryWindow; | 
					
						
							|  |  |  | class CJitWindow; | 
					
						
							|  |  |  | class CCodeView; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | class CCodeWindow | 
					
						
							|  |  |  | 	: public wxFrame | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  | 	public: | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 		CCodeWindow(const SCoreStartupParameter& _LocalCoreStartupParameter, wxWindow* parent, | 
					
						
							|  |  |  | 			wxWindowID id = wxID_ANY, | 
					
						
							|  |  |  | 			const wxString& title = _T("Dolphin-Debugger"), | 
					
						
							|  |  |  | 		const wxPoint& pos = wxPoint(950, 100), | 
					
						
							|  |  |  | 		const wxSize& size = wxSize(400, 500), | 
					
						
							|  |  |  | 		long style = wxDEFAULT_FRAME_STYLE | wxCLIP_CHILDREN | wxNO_FULL_REPAINT_ON_RESIZE); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 		~CCodeWindow(); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 		void Load_(IniFile &file); | 
					
						
							|  |  |  | 		void Load(IniFile &file); | 
					
						
							|  |  |  | 		void Save(IniFile &file) const; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 		void Update(); | 
					
						
							|  |  |  | 		void NotifyMapLoaded(); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 		bool UseInterpreter(); | 
					
						
							| 
									
										
										
										
											2009-01-05 02:52:55 +00:00
										 |  |  | 		bool BootToPause(); | 
					
						
							| 
									
										
										
										
											2009-01-07 07:35:12 +00:00
										 |  |  | 		bool AutomaticStart(); | 
					
						
							|  |  |  | 		bool UnlimitedJITCache(); | 
					
						
							| 
									
										
										
										
											2009-01-20 16:52:46 +00:00
										 |  |  | 		bool JITBlockLinking(); | 
					
						
							| 
									
										
										
										
											2008-12-10 08:57:57 +00:00
										 |  |  | 		//bool UseDualCore(); // not used
 | 
					
						
							| 
									
										
										
										
											2008-12-08 04:46:09 +00:00
										 |  |  |         void JumpToAddress(u32 _Address); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	private: | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 		enum | 
					
						
							|  |  |  | 		{ | 
					
						
							| 
									
										
										
										
											2008-12-10 08:57:57 +00:00
										 |  |  | 			// ==============================================================
 | 
					
						
							|  |  |  | 			// Menu Entries
 | 
					
						
							|  |  |  | 			// CPU Mode
 | 
					
						
							|  |  |  | 			IDM_INTERPRETER = 2000, // These cannot interfere with enums in Globals.h!
 | 
					
						
							|  |  |  | 			//IDM_DUALCORE, // not used
 | 
					
						
							| 
									
										
										
										
											2009-01-05 02:52:55 +00:00
										 |  |  | 			IDM_AUTOMATICSTART, IDM_BOOTTOPAUSE, | 
					
						
							| 
									
										
										
										
											2009-01-20 16:52:46 +00:00
										 |  |  | 			IDM_JITUNLIMITED, IDM_JITBLOCKLINKING,  // JIT
 | 
					
						
							|  |  |  | 			IDM_JITOFF, | 
					
						
							| 
									
										
										
										
											2008-12-08 04:46:09 +00:00
										 |  |  | 			IDM_JITLSOFF, IDM_JITLSLXZOFF, IDM_JITLSLWZOFF, IDM_JITLSLBZXOFF, | 
					
						
							|  |  |  | 			IDM_JITLSPOFF, IDM_JITLSFOFF, | 
					
						
							|  |  |  | 			IDM_JITIOFF, | 
					
						
							|  |  |  | 			IDM_JITFPOFF, | 
					
						
							|  |  |  | 			IDM_JITPOFF, | 
					
						
							|  |  |  | 			IDM_JITSROFF, | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-12-10 08:57:57 +00:00
										 |  |  | 			// Views
 | 
					
						
							| 
									
										
										
										
											2009-02-06 18:18:20 +00:00
										 |  |  | 			IDM_FONTPICKER, | 
					
						
							| 
									
										
										
										
											2008-12-08 04:46:09 +00:00
										 |  |  | 			IDM_LOGWINDOW, | 
					
						
							|  |  |  | 			IDM_REGISTERWINDOW, | 
					
						
							|  |  |  | 			IDM_BREAKPOINTWINDOW, | 
					
						
							|  |  |  | 			IDM_MEMORYWINDOW, | 
					
						
							| 
									
										
										
										
											2008-12-10 08:57:57 +00:00
										 |  |  | 			IDM_JITWINDOW, | 
					
						
							|  |  |  | 			IDM_SOUNDWINDOW, | 
					
						
							|  |  |  | 			IDM_VIDEOWINDOW, | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 			// Symbols
 | 
					
						
							|  |  |  | 			IDM_CLEARSYMBOLS, | 
					
						
							|  |  |  | 			IDM_CLEANSYMBOLS, // not used
 | 
					
						
							| 
									
										
										
										
											2008-12-08 04:46:09 +00:00
										 |  |  | 			IDM_SCANFUNCTIONS, | 
					
						
							|  |  |  | 			IDM_LOADMAPFILE, | 
					
						
							|  |  |  | 			IDM_SAVEMAPFILE, IDM_SAVEMAPFILEWITHCODES, | 
					
						
							|  |  |  | 			IDM_CREATESIGNATUREFILE, | 
					
						
							|  |  |  | 			IDM_USESIGNATUREFILE, | 
					
						
							| 
									
										
										
										
											2008-12-10 08:57:57 +00:00
										 |  |  | 			//IDM_USESYMBOLFILE, // not used
 | 
					
						
							| 
									
										
										
										
											2008-12-08 04:46:09 +00:00
										 |  |  | 			IDM_PATCHHLEFUNCTIONS, | 
					
						
							| 
									
										
										
										
											2008-12-10 08:57:57 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | 			// JIT
 | 
					
						
							| 
									
										
										
										
											2008-12-08 04:46:09 +00:00
										 |  |  | 			IDM_CLEARCODECACHE, | 
					
						
							| 
									
										
										
										
											2008-12-10 08:57:57 +00:00
										 |  |  | 			IDM_LOGINSTRUCTIONS, | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 			// Profiler
 | 
					
						
							| 
									
										
										
										
											2008-12-08 04:46:09 +00:00
										 |  |  | 			IDM_PROFILEBLOCKS, | 
					
						
							|  |  |  | 			IDM_WRITEPROFILE, | 
					
						
							| 
									
										
										
										
											2008-12-10 08:57:57 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | 			// ==============================================================
 | 
					
						
							|  |  |  | 			// Toolbar
 | 
					
						
							|  |  |  | 			ID_TOOLBAR, | 
					
						
							|  |  |  | 			IDM_DEBUG_GO, | 
					
						
							|  |  |  | 			IDM_STEP, | 
					
						
							|  |  |  | 			IDM_STEPOVER, | 
					
						
							|  |  |  | 			IDM_SKIP, | 
					
						
							|  |  |  | 			IDM_SETPC, | 
					
						
							|  |  |  | 			IDM_GOTOPC, | 
					
						
							|  |  |  | 			IDM_ADDRBOX, | 
					
						
							|  |  |  | 			 | 
					
						
							|  |  |  | 			// ==============================================================
 | 
					
						
							|  |  |  | 			// Debugger GUI Objects
 | 
					
						
							|  |  |  | 			ID_CODEVIEW, | 
					
						
							|  |  |  | 			ID_CALLSTACKLIST, | 
					
						
							|  |  |  | 			ID_CALLERSLIST, | 
					
						
							|  |  |  | 			ID_CALLSLIST, | 
					
						
							|  |  |  | 			ID_SYMBOLLIST | 
					
						
							| 
									
										
										
										
											2008-12-08 04:46:09 +00:00
										 |  |  | 		}; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 		enum | 
					
						
							|  |  |  | 		{ | 
					
						
							|  |  |  | 			Toolbar_DebugGo, | 
					
						
							|  |  |  | 			Toolbar_Pause, | 
					
						
							|  |  |  | 			Toolbar_Step, | 
					
						
							|  |  |  | 			Toolbar_StepOver, | 
					
						
							|  |  |  | 			Toolbar_Skip, | 
					
						
							|  |  |  | 			Toolbar_GotoPC, | 
					
						
							|  |  |  | 			Toolbar_SetPC, | 
					
						
							|  |  |  | 			Bitmaps_max | 
					
						
							|  |  |  | 		}; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 		// Settings
 | 
					
						
							| 
									
										
										
										
											2009-01-05 02:52:55 +00:00
										 |  |  | 		bool bAutomaticStart; bool bBootToPause; | 
					
						
							| 
									
										
										
										
											2008-12-08 04:46:09 +00:00
										 |  |  | 		bool bLogWindow; | 
					
						
							|  |  |  | 		bool bRegisterWindow; | 
					
						
							|  |  |  | 		bool bBreakpointWindow; | 
					
						
							|  |  |  | 		bool bMemoryWindow; | 
					
						
							|  |  |  | 		bool bJitWindow; | 
					
						
							|  |  |  | 		bool bSoundWindow; | 
					
						
							|  |  |  | 		bool bVideoWindow; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-12-09 05:37:15 +00:00
										 |  |  | 		// Sub dialogs
 | 
					
						
							|  |  |  | 		wxMenuBar* pMenuBar; | 
					
						
							| 
									
										
										
										
											2008-12-08 04:46:09 +00:00
										 |  |  | 		CLogWindow* m_LogWindow; | 
					
						
							|  |  |  | 		CRegisterWindow* m_RegisterWindow; | 
					
						
							|  |  |  | 		CBreakPointWindow* m_BreakpointWindow; | 
					
						
							|  |  |  | 		CMemoryWindow* m_MemoryWindow; | 
					
						
							|  |  |  | 		CJitWindow* m_JitWindow; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-01-20 16:52:46 +00:00
										 |  |  | 		wxMenuItem* jitblocklinking, *jitunlimited, *jitoff; | 
					
						
							| 
									
										
										
										
											2008-12-08 04:46:09 +00:00
										 |  |  | 		wxMenuItem* jitlsoff, *jitlslxzoff, *jitlslwzoff, *jitlslbzxoff; | 
					
						
							|  |  |  | 		wxMenuItem* jitlspoff; | 
					
						
							|  |  |  | 		wxMenuItem* jitlsfoff; | 
					
						
							|  |  |  | 		wxMenuItem* jitfpoff; | 
					
						
							|  |  |  | 		wxMenuItem* jitioff; | 
					
						
							|  |  |  | 		wxMenuItem* jitpoff; | 
					
						
							|  |  |  | 		wxMenuItem* jitsroff; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 		CCodeView* codeview; | 
					
						
							|  |  |  | 		wxListBox* callstack; | 
					
						
							|  |  |  | 		wxListBox* symbols; | 
					
						
							|  |  |  | 		wxListBox* callers; | 
					
						
							|  |  |  | 		wxListBox* calls; | 
					
						
							|  |  |  | 		Common::Event sync_event; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 		wxBitmap m_Bitmaps[Bitmaps_max]; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 		DECLARE_EVENT_TABLE() | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 		void OnSymbolListChange(wxCommandEvent& event); | 
					
						
							|  |  |  | 		void OnSymbolListContextMenu(wxContextMenuEvent& event); | 
					
						
							|  |  |  | 		void OnCallstackListChange(wxCommandEvent& event); | 
					
						
							|  |  |  | 		void OnCallersListChange(wxCommandEvent& event); | 
					
						
							|  |  |  | 		void OnCallsListChange(wxCommandEvent& event); | 
					
						
							|  |  |  | 		void OnCodeStep(wxCommandEvent& event); | 
					
						
							|  |  |  | 		void OnCodeViewChange(wxCommandEvent &event); | 
					
						
							|  |  |  | 		void SingleCPUStep(); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 		void OnAddrBoxChange(wxCommandEvent& event); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 		void OnToggleRegisterWindow(wxCommandEvent& event); | 
					
						
							|  |  |  | 		void OnToggleBreakPointWindow(wxCommandEvent& event); | 
					
						
							|  |  |  | 		void OnToggleLogWindow(wxCommandEvent& event); | 
					
						
							|  |  |  | 		void OnToggleMemoryWindow(wxCommandEvent& event); | 
					
						
							|  |  |  | 		void OnToggleJitWindow(wxCommandEvent& event); | 
					
						
							|  |  |  | 		void OnToggleSoundWindow(wxCommandEvent& event); | 
					
						
							|  |  |  | 		void OnToggleVideoWindow(wxCommandEvent& event); | 
					
						
							| 
									
										
										
										
											2009-02-06 18:18:20 +00:00
										 |  |  | 		void OnChangeFont(wxCommandEvent& event); | 
					
						
							| 
									
										
										
										
											2008-12-08 04:46:09 +00:00
										 |  |  | 	 | 
					
						
							|  |  |  | 		void OnHostMessage(wxCommandEvent& event); | 
					
						
							|  |  |  | 		void OnSymbolsMenu(wxCommandEvent& event); | 
					
						
							|  |  |  | 		void OnJitMenu(wxCommandEvent& event); | 
					
						
							|  |  |  | 		void OnProfilerMenu(wxCommandEvent& event); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-01-07 07:35:12 +00:00
										 |  |  | 		void OnCPUMode(wxCommandEvent& event); // CPU Mode menu	
 | 
					
						
							| 
									
										
										
										
											2008-12-08 04:46:09 +00:00
										 |  |  | 		void OnJITOff(wxCommandEvent& event);	 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 		void CreateMenu(const SCoreStartupParameter& _LocalCoreStartupParameter); | 
					
						
							| 
									
										
										
										
											2009-01-05 02:52:55 +00:00
										 |  |  | 		void CreateSymbolsMenu(); | 
					
						
							| 
									
										
										
										
											2008-12-08 04:46:09 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | 		void UpdateButtonStates(); | 
					
						
							|  |  |  | 		void UpdateLists(); | 
					
						
							|  |  |  | 		void RecreateToolbar(); | 
					
						
							|  |  |  | 		void PopulateToolbar(wxToolBar* toolBar); | 
					
						
							| 
									
										
										
										
											2009-01-05 02:52:55 +00:00
										 |  |  | 		void OnStatusBar(wxMenuEvent& event); void OnStatusBar_(wxUpdateUIEvent& event); | 
					
						
							|  |  |  | 		void DoTip(wxString text); | 
					
						
							| 
									
										
										
										
											2008-12-08 04:46:09 +00:00
										 |  |  | 		void OnKeyDown(wxKeyEvent& event); | 
					
						
							| 
									
										
										
										
											2009-01-05 02:52:55 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | 		void InitBitmaps(); | 
					
						
							|  |  |  | 		void CreateGUIControls(const SCoreStartupParameter& _LocalCoreStartupParameter);		 | 
					
						
							| 
									
										
										
										
											2008-12-08 04:46:09 +00:00
										 |  |  | }; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #endif /*CODEWINDOW_*/
 |