| 
									
										
										
										
											2015-05-24 06:55:12 +02:00
										 |  |  | // Copyright 2009 Dolphin Emulator Project
 | 
					
						
							| 
									
										
										
										
											2015-05-18 01:08:10 +02:00
										 |  |  | // Licensed under GPLv2+
 | 
					
						
							| 
									
										
										
										
											2013-04-17 23:43:35 -04:00
										 |  |  | // Refer to the license.txt file included.
 | 
					
						
							| 
									
										
										
										
											2009-08-31 23:09:50 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-02-10 13:54:46 -05:00
										 |  |  | #pragma once
 | 
					
						
							| 
									
										
										
										
											2010-08-03 03:20:44 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-02-22 23:36:30 +01:00
										 |  |  | #include <mutex>
 | 
					
						
							| 
									
										
										
										
											2009-08-31 23:09:50 +00:00
										 |  |  | #include <queue>
 | 
					
						
							| 
									
										
										
										
											2014-02-22 23:36:30 +01:00
										 |  |  | #include <utility>
 | 
					
						
							|  |  |  | #include <vector>
 | 
					
						
							|  |  |  | #include <wx/font.h>
 | 
					
						
							|  |  |  | #include <wx/panel.h>
 | 
					
						
							| 
									
										
										
										
											2015-02-28 20:25:50 -05:00
										 |  |  | #include <wx/timer.h>
 | 
					
						
							| 
									
										
										
										
											2009-08-31 23:09:50 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-09-07 20:06:58 -05:00
										 |  |  | #include "Common/CommonTypes.h"
 | 
					
						
							| 
									
										
										
										
											2014-06-05 19:29:54 -04:00
										 |  |  | #include "Common/Logging/LogManager.h"
 | 
					
						
							| 
									
										
										
										
											2014-02-22 23:36:30 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  | class CFrame; | 
					
						
							|  |  |  | class wxBoxSizer; | 
					
						
							|  |  |  | class wxCheckBox; | 
					
						
							|  |  |  | class wxChoice; | 
					
						
							|  |  |  | class wxTextCtrl; | 
					
						
							| 
									
										
										
										
											2014-02-17 05:18:15 -05:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-08-31 23:09:50 +00:00
										 |  |  | // Uses multiple inheritance - only sane because LogListener is a pure virtual interface.
 | 
					
						
							| 
									
										
										
										
											2009-09-07 21:37:27 +00:00
										 |  |  | class CLogWindow : public wxPanel, LogListener | 
					
						
							| 
									
										
										
										
											2009-08-31 23:09:50 +00:00
										 |  |  | { | 
					
						
							|  |  |  | public: | 
					
						
							| 
									
										
										
										
											2016-06-24 10:43:46 +02:00
										 |  |  |   CLogWindow(CFrame* parent, wxWindowID id = wxID_ANY, const wxPoint& pos = wxDefaultPosition, | 
					
						
							|  |  |  |              const wxSize& size = wxDefaultSize, long style = wxTAB_TRAVERSAL, | 
					
						
							|  |  |  |              const wxString& name = _("Log")); | 
					
						
							| 
									
										
										
										
											2016-10-03 07:29:50 +00:00
										 |  |  |   ~CLogWindow() override; | 
					
						
							| 
									
										
										
										
											2009-08-31 23:09:50 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-10-03 07:29:50 +00:00
										 |  |  |   // Listeners must be removed explicitly before the window is closed to prevent crashes on OS X
 | 
					
						
							|  |  |  |   // when closing via the Dock. (The Core is probably being shutdown before the window)
 | 
					
						
							|  |  |  |   void RemoveAllListeners(); | 
					
						
							| 
									
										
										
										
											2016-06-24 10:43:46 +02:00
										 |  |  |   void SaveSettings(); | 
					
						
							|  |  |  |   void Log(LogTypes::LOG_LEVELS, const char* text) override; | 
					
						
							| 
									
										
										
										
											2009-08-31 23:09:50 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-06-24 10:43:46 +02:00
										 |  |  |   int x, y, winpos; | 
					
						
							| 
									
										
										
										
											2010-07-27 22:12:19 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-08-31 23:09:50 +00:00
										 |  |  | private: | 
					
						
							| 
									
										
										
										
											2016-06-24 10:43:46 +02:00
										 |  |  |   CFrame* Parent; | 
					
						
							|  |  |  |   wxFont DefaultFont, MonoSpaceFont; | 
					
						
							|  |  |  |   std::vector<wxFont> LogFont; | 
					
						
							|  |  |  |   wxTimer m_LogTimer; | 
					
						
							|  |  |  |   LogManager* m_LogManager; | 
					
						
							|  |  |  |   std::queue<std::pair<u8, wxString>> msgQueue; | 
					
						
							|  |  |  |   bool m_writeFile, m_writeWindow, m_LogAccess; | 
					
						
							| 
									
										
										
										
											2016-10-03 07:29:50 +00:00
										 |  |  |   bool m_has_listeners = false; | 
					
						
							| 
									
										
										
										
											2009-09-03 22:52:58 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-06-24 10:43:46 +02:00
										 |  |  |   // Controls
 | 
					
						
							|  |  |  |   wxBoxSizer* sBottom; | 
					
						
							|  |  |  |   wxTextCtrl* m_Log; | 
					
						
							|  |  |  |   wxTextCtrl* m_cmdline; | 
					
						
							|  |  |  |   wxChoice* m_FontChoice; | 
					
						
							|  |  |  |   wxCheckBox* m_WrapLine; | 
					
						
							|  |  |  |   wxButton* m_clear_log_btn; | 
					
						
							| 
									
										
										
										
											2009-08-31 23:09:50 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-06-24 10:43:46 +02:00
										 |  |  |   std::mutex m_LogSection; | 
					
						
							| 
									
										
										
										
											2009-08-31 23:09:50 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-06-24 10:43:46 +02:00
										 |  |  |   wxTextCtrl* CreateTextCtrl(wxPanel* parent, wxWindowID id, long Style); | 
					
						
							|  |  |  |   void CreateGUIControls(); | 
					
						
							|  |  |  |   void PopulateBottom(); | 
					
						
							|  |  |  |   void UnPopulateBottom(); | 
					
						
							|  |  |  |   void OnFontChange(wxCommandEvent& event); | 
					
						
							|  |  |  |   void OnWrapLineCheck(wxCommandEvent& event); | 
					
						
							|  |  |  |   void OnClear(wxCommandEvent& event); | 
					
						
							|  |  |  |   void OnLogTimer(wxTimerEvent& WXUNUSED(event)); | 
					
						
							|  |  |  |   void UpdateLog(); | 
					
						
							| 
									
										
										
										
											2009-08-31 23:09:50 +00:00
										 |  |  | }; |