| 
									
										
										
										
											2008-12-08 05:25:12 +00:00
										 |  |  |  | //////////////////////////////////////////////////////////////////////////////////////////
 | 
					
						
							|  |  |  |  | // Project description
 | 
					
						
							|  |  |  |  | // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
 | 
					
						
							| 
									
										
										
										
											2009-01-15 06:48:15 +00:00
										 |  |  |  | // Name: nJoy
 | 
					
						
							| 
									
										
										
										
											2008-12-08 05:25:12 +00:00
										 |  |  |  | // Description: A Dolphin Compatible Input Plugin
 | 
					
						
							|  |  |  |  | //
 | 
					
						
							|  |  |  |  | // Author: Falcon4ever (nJoy@falcon4ever.com)
 | 
					
						
							|  |  |  |  | // Site: www.multigesture.net
 | 
					
						
							|  |  |  |  | // Copyright (C) 2003-2008 Dolphin Project.
 | 
					
						
							|  |  |  |  | //
 | 
					
						
							|  |  |  |  | //////////////////////////////////////////////////////////////////////////////////////////
 | 
					
						
							|  |  |  |  | //
 | 
					
						
							|  |  |  |  | // Licensetype: GNU General Public License (GPL)
 | 
					
						
							|  |  |  |  | //
 | 
					
						
							|  |  |  |  | // 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/
 | 
					
						
							|  |  |  |  | //
 | 
					
						
							|  |  |  |  | //////////////////////////////////////////////////////////////////////////////////////////
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-12-26 02:42:15 +00:00
										 |  |  |  | 
 | 
					
						
							|  |  |  |  | //////////////////////////////////////////////////////////////////////////////////////////
 | 
					
						
							|  |  |  |  | // Include
 | 
					
						
							|  |  |  |  | // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
 | 
					
						
							| 
									
										
										
										
											2008-12-27 11:32:03 +00:00
										 |  |  |  | #include "math.h" // System
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | #include "ConfigBox.h" // Local
 | 
					
						
							| 
									
										
										
										
											2008-12-08 05:25:12 +00:00
										 |  |  |  | #include "../nJoy.h"
 | 
					
						
							|  |  |  |  | #include "Images/controller.xpm"
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-02-08 15:39:28 +00:00
										 |  |  |  | extern bool g_EmulatorRunning; | 
					
						
							| 
									
										
										
										
											2008-12-08 05:25:12 +00:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-01-20 05:28:30 +00:00
										 |  |  |  | // D-Pad type
 | 
					
						
							| 
									
										
										
										
											2009-01-19 17:47:00 +00:00
										 |  |  |  | static const char* DPadType[] = | 
					
						
							| 
									
										
										
										
											2008-12-08 05:25:12 +00:00
										 |  |  |  | { | 
					
						
							| 
									
										
										
										
											2009-01-19 17:47:00 +00:00
										 |  |  |  | 	"Hat", | 
					
						
							|  |  |  |  | 	"Custom", | 
					
						
							| 
									
										
										
										
											2008-12-08 05:25:12 +00:00
										 |  |  |  | }; | 
					
						
							| 
									
										
										
										
											2009-01-20 05:28:30 +00:00
										 |  |  |  | 
 | 
					
						
							|  |  |  |  | // Trigger type
 | 
					
						
							|  |  |  |  | static const char* TriggerType[] = | 
					
						
							|  |  |  |  | { | 
					
						
							| 
									
										
										
										
											2009-01-20 14:28:45 +00:00
										 |  |  |  | 	"SDL", // -0x8000 to 0x7fff
 | 
					
						
							| 
									
										
										
										
											2009-01-20 14:32:15 +00:00
										 |  |  |  | 	"XInput", // 0x00 to 0xff
 | 
					
						
							| 
									
										
										
										
											2009-01-20 05:28:30 +00:00
										 |  |  |  | }; | 
					
						
							| 
									
										
										
										
											2008-12-26 02:42:15 +00:00
										 |  |  |  | ////////////////////////
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-12-08 05:25:12 +00:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-12-26 02:42:15 +00:00
										 |  |  |  | //////////////////////////////////////////////////////////////////////////////////////////
 | 
					
						
							|  |  |  |  | // The wxWidgets class
 | 
					
						
							|  |  |  |  | // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
 | 
					
						
							| 
									
										
										
										
											2008-12-08 05:25:12 +00:00
										 |  |  |  | BEGIN_EVENT_TABLE(ConfigBox,wxDialog) | 
					
						
							|  |  |  |  | 	EVT_CLOSE(ConfigBox::OnClose) | 
					
						
							|  |  |  |  | 	EVT_BUTTON(ID_ABOUT, ConfigBox::AboutClick) | 
					
						
							|  |  |  |  | 	EVT_BUTTON(ID_OK, ConfigBox::OKClick) | 
					
						
							|  |  |  |  | 	EVT_BUTTON(ID_CANCEL, ConfigBox::CancelClick) | 
					
						
							| 
									
										
										
										
											2009-01-20 05:28:30 +00:00
										 |  |  |  | 	EVT_NOTEBOOK_PAGE_CHANGED(ID_NOTEBOOK, ConfigBox::NotebookPageChanged) | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 	// Change and enable or disable gamepad
 | 
					
						
							| 
									
										
										
										
											2009-01-21 18:09:31 +00:00
										 |  |  |  | 	EVT_COMBOBOX(IDC_JOYNAME, ConfigBox::ChangeSettings) | 
					
						
							|  |  |  |  | 	EVT_CHECKBOX(IDC_JOYATTACH, ConfigBox::ChangeSettings) | 
					
						
							| 
									
										
										
										
											2008-12-08 05:25:12 +00:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-01-21 18:09:31 +00:00
										 |  |  |  | 	 // Other settings
 | 
					
						
							| 
									
										
										
										
											2009-01-20 05:28:30 +00:00
										 |  |  |  | 	EVT_CHECKBOX(IDC_SAVEBYID, ConfigBox::ChangeSettings) | 
					
						
							| 
									
										
										
										
											2008-12-27 11:32:03 +00:00
										 |  |  |  | 	EVT_CHECKBOX(IDC_SHOWADVANCED, ConfigBox::ChangeSettings) | 
					
						
							| 
									
										
										
										
											2009-02-03 06:21:22 +00:00
										 |  |  |  | 	EVT_CHECKBOX(IDC_CHECKFOCUS, ConfigBox::ChangeSettings) | 
					
						
							| 
									
										
										
										
											2009-01-15 06:48:15 +00:00
										 |  |  |  | 	EVT_COMBOBOX(IDCB_MAINSTICK_DIAGONAL, ConfigBox::ChangeSettings) | 
					
						
							| 
									
										
										
										
											2009-01-21 18:09:31 +00:00
										 |  |  |  | 	EVT_COMBOBOX(IDC_CONTROLTYPE, ConfigBox::ChangeSettings) | 
					
						
							|  |  |  |  | 	EVT_COMBOBOX(IDC_TRIGGERTYPE, ConfigBox::ChangeSettings) | 
					
						
							|  |  |  |  | 	EVT_COMBOBOX(IDC_DEADZONE, ConfigBox::ChangeSettings)	 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 	// Advanced settings
 | 
					
						
							|  |  |  |  | 	EVT_COMBOBOX(IDCB_MAINSTICK_DIAGONAL, ConfigBox::ChangeSettings) | 
					
						
							| 
									
										
										
										
											2009-01-15 06:48:15 +00:00
										 |  |  |  | 	EVT_CHECKBOX(IDCB_MAINSTICK_S_TO_C, ConfigBox::ChangeSettings) | 
					
						
							| 
									
										
										
										
											2009-02-09 18:43:03 +00:00
										 |  |  |  | 	EVT_CHECKBOX(IDFILTER_SETTINGS, ConfigBox::ChangeSettings) | 
					
						
							| 
									
										
										
										
											2008-12-27 11:32:03 +00:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-12-08 05:25:12 +00:00
										 |  |  |  | 	EVT_BUTTON(IDB_SHOULDER_L, ConfigBox::GetButtons) | 
					
						
							|  |  |  |  | 	EVT_BUTTON(IDB_SHOULDER_R, ConfigBox::GetButtons) | 
					
						
							|  |  |  |  | 	EVT_BUTTON(IDB_BUTTON_A, ConfigBox::GetButtons) | 
					
						
							|  |  |  |  | 	EVT_BUTTON(IDB_BUTTON_B, ConfigBox::GetButtons) | 
					
						
							|  |  |  |  | 	EVT_BUTTON(IDB_BUTTON_X, ConfigBox::GetButtons) | 
					
						
							|  |  |  |  | 	EVT_BUTTON(IDB_BUTTON_Y, ConfigBox::GetButtons) | 
					
						
							|  |  |  |  | 	EVT_BUTTON(IDB_BUTTON_Z, ConfigBox::GetButtons) | 
					
						
							|  |  |  |  | 	EVT_BUTTON(IDB_BUTTONSTART, ConfigBox::GetButtons) | 
					
						
							|  |  |  |  | 	EVT_BUTTON(IDB_BUTTONHALFPRESS, ConfigBox::GetButtons) | 
					
						
							|  |  |  |  | 	EVT_BUTTON(IDB_DPAD_UP, ConfigBox::GetButtons) | 
					
						
							|  |  |  |  | 	EVT_BUTTON(IDB_DPAD_DOWN, ConfigBox::GetButtons) | 
					
						
							|  |  |  |  | 	EVT_BUTTON(IDB_DPAD_LEFT, ConfigBox::GetButtons) | 
					
						
							|  |  |  |  | 	EVT_BUTTON(IDB_DPAD_RIGHT, ConfigBox::GetButtons) | 
					
						
							| 
									
										
										
										
											2009-01-19 05:49:25 +00:00
										 |  |  |  | 	EVT_BUTTON(IDB_ANALOG_MAIN_X, ConfigBox::GetButtons) | 
					
						
							|  |  |  |  | 	EVT_BUTTON(IDB_ANALOG_MAIN_Y, ConfigBox::GetButtons) | 
					
						
							|  |  |  |  | 	EVT_BUTTON(IDB_ANALOG_SUB_X, ConfigBox::GetButtons) | 
					
						
							|  |  |  |  | 	EVT_BUTTON(IDB_ANALOG_SUB_Y, ConfigBox::GetButtons) | 
					
						
							| 
									
										
										
										
											2008-12-26 02:42:15 +00:00
										 |  |  |  | 
 | 
					
						
							|  |  |  |  | 	#if wxUSE_TIMER
 | 
					
						
							| 
									
										
										
										
											2009-01-19 17:47:00 +00:00
										 |  |  |  | 		EVT_TIMER(IDTM_CONSTANT, ConfigBox::OnTimer) | 
					
						
							|  |  |  |  | 		EVT_TIMER(IDTM_BUTTON, ConfigBox::OnButtonTimer) | 
					
						
							| 
									
										
										
										
											2008-12-26 02:42:15 +00:00
										 |  |  |  | 	#endif
 | 
					
						
							| 
									
										
										
										
											2008-12-08 05:25:12 +00:00
										 |  |  |  | END_EVENT_TABLE() | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-12-26 02:42:15 +00:00
										 |  |  |  | ConfigBox::ConfigBox(wxWindow *parent, wxWindowID id, const wxString &title, | 
					
						
							|  |  |  |  | 					 const wxPoint &position, const wxSize& size, long style) | 
					
						
							|  |  |  |  | 	: wxDialog(parent, id, title, position, size, style) | 
					
						
							| 
									
										
										
										
											2008-12-08 05:25:12 +00:00
										 |  |  |  | { | 
					
						
							| 
									
										
										
										
											2008-12-28 18:50:24 +00:00
										 |  |  |  | 	// Define values
 | 
					
						
							| 
									
										
										
										
											2008-12-08 05:25:12 +00:00
										 |  |  |  | 	notebookpage = 0; | 
					
						
							| 
									
										
										
										
											2008-12-28 18:50:24 +00:00
										 |  |  |  | 	g_Pressed = 0; | 
					
						
							| 
									
										
										
										
											2009-01-24 22:17:51 +00:00
										 |  |  |  | 	Debugging = false; | 
					
						
							| 
									
										
										
										
											2009-01-21 18:09:31 +00:00
										 |  |  |  | 	m_TCDebugging = NULL; | 
					
						
							|  |  |  |  | 	ControlsCreated = false; | 
					
						
							| 
									
										
										
										
											2008-12-28 18:50:24 +00:00
										 |  |  |  | 
 | 
					
						
							|  |  |  |  | 	// Create controls
 | 
					
						
							| 
									
										
										
										
											2008-12-08 05:25:12 +00:00
										 |  |  |  | 	CreateGUIControls(); | 
					
						
							| 
									
										
										
										
											2008-12-26 02:42:15 +00:00
										 |  |  |  | 
 | 
					
						
							|  |  |  |  | 	#if wxUSE_TIMER
 | 
					
						
							| 
									
										
										
										
											2009-01-19 17:47:00 +00:00
										 |  |  |  | 		m_ConstantTimer = new wxTimer(this, IDTM_CONSTANT); | 
					
						
							|  |  |  |  | 		m_ButtonMappingTimer = new wxTimer(this, IDTM_BUTTON); | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 		// Reset values
 | 
					
						
							|  |  |  |  | 		GetButtonWaitingID = 0; GetButtonWaitingTimer = 0; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 		// Start the constant timer
 | 
					
						
							| 
									
										
										
										
											2009-01-04 21:53:41 +00:00
										 |  |  |  | 		int TimesPerSecond = 30; | 
					
						
							| 
									
										
										
										
											2009-01-19 17:47:00 +00:00
										 |  |  |  | 		m_ConstantTimer->Start( floor((double)(1000 / TimesPerSecond)) ); | 
					
						
							| 
									
										
										
										
											2008-12-26 02:42:15 +00:00
										 |  |  |  | 	#endif
 | 
					
						
							| 
									
										
										
										
											2008-12-27 11:32:03 +00:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-01-19 17:47:00 +00:00
										 |  |  |  | 	// wxEVT_KEY_DOWN is blocked for enter, tab and the directional keys
 | 
					
						
							|  |  |  |  | 	wxTheApp->Connect(wxID_ANY, wxEVT_KEY_UP, | 
					
						
							| 
									
										
										
										
											2008-12-28 18:50:24 +00:00
										 |  |  |  | 			wxKeyEventHandler(ConfigBox::OnKeyDown), | 
					
						
							|  |  |  |  | 			(wxObject*)0, this); | 
					
						
							| 
									
										
										
										
											2008-12-08 05:25:12 +00:00
										 |  |  |  | } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | ConfigBox::~ConfigBox() | 
					
						
							|  |  |  |  | { | 
					
						
							| 
									
										
										
										
											2009-01-04 21:53:41 +00:00
										 |  |  |  | // The statbar sample has this so I add this to
 | 
					
						
							|  |  |  |  | #if wxUSE_TIMER
 | 
					
						
							| 
									
										
										
										
											2009-01-19 17:47:00 +00:00
										 |  |  |  |     if (m_ConstantTimer->IsRunning()) m_ConstantTimer->Stop(); | 
					
						
							| 
									
										
										
										
											2009-01-04 21:53:41 +00:00
										 |  |  |  | #endif
 | 
					
						
							| 
									
										
										
										
											2008-12-27 11:32:03 +00:00
										 |  |  |  | } | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-12-28 18:50:24 +00:00
										 |  |  |  | void ConfigBox::OnKeyDown(wxKeyEvent& event) | 
					
						
							|  |  |  |  | { | 
					
						
							|  |  |  |  | 	/*m_pStatusBar->SetLabel(wxString::Format(
 | 
					
						
							|  |  |  |  | 		"Key: %i", event.GetKeyCode() | 
					
						
							|  |  |  |  | 		));*/ | 
					
						
							|  |  |  |  | 	g_Pressed = event.GetKeyCode(); | 
					
						
							|  |  |  |  | } | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-12-27 11:32:03 +00:00
										 |  |  |  | // Close window
 | 
					
						
							|  |  |  |  | // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
 | 
					
						
							|  |  |  |  | void ConfigBox::OnClose(wxCloseEvent& /*event*/) | 
					
						
							|  |  |  |  | { | 
					
						
							|  |  |  |  | 	EndModal(0); | 
					
						
							| 
									
										
										
										
											2009-02-08 15:39:28 +00:00
										 |  |  |  | 	if(!g_EmulatorRunning) Shutdown(); // Close pads, unless we are running a game
 | 
					
						
							| 
									
										
										
										
											2008-12-27 11:32:03 +00:00
										 |  |  |  | } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | // Call about dialog
 | 
					
						
							|  |  |  |  | // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
 | 
					
						
							|  |  |  |  | void ConfigBox::AboutClick(wxCommandEvent& event) | 
					
						
							|  |  |  |  | { | 
					
						
							|  |  |  |  | 	#ifdef _WIN32
 | 
					
						
							|  |  |  |  | 		wxWindow win; | 
					
						
							|  |  |  |  | 		win.SetHWND((WXHWND)this->GetHWND()); | 
					
						
							|  |  |  |  | 		win.Enable(false);   | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 		AboutBox frame(&win); | 
					
						
							|  |  |  |  | 		frame.ShowModal(); | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 		win.Enable(true); | 
					
						
							| 
									
										
										
										
											2009-01-15 06:48:15 +00:00
										 |  |  |  | 		win.SetHWND(0); | 
					
						
							| 
									
										
										
										
											2008-12-27 11:32:03 +00:00
										 |  |  |  | 	#else
 | 
					
						
							|  |  |  |  | 		AboutBox frame(NULL); | 
					
						
							|  |  |  |  | 		frame.ShowModal(); | 
					
						
							| 
									
										
										
										
											2009-01-15 06:48:15 +00:00
										 |  |  |  | 	#endif
 | 
					
						
							| 
									
										
										
										
											2008-12-27 11:32:03 +00:00
										 |  |  |  | } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | // Click OK
 | 
					
						
							|  |  |  |  | // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
 | 
					
						
							|  |  |  |  | void ConfigBox::OKClick(wxCommandEvent& event) | 
					
						
							|  |  |  |  | { | 
					
						
							|  |  |  |  | 	if (event.GetId() == ID_OK) | 
					
						
							|  |  |  |  | 	{ | 
					
						
							| 
									
										
										
										
											2009-01-21 18:09:31 +00:00
										 |  |  |  | 		DoSave();	// Save settings
 | 
					
						
							| 
									
										
										
										
											2009-01-25 18:20:16 +00:00
										 |  |  |  | 		//g_Config.Load();	// Reload settings to PadMapping
 | 
					
						
							| 
									
										
										
										
											2009-01-21 18:09:31 +00:00
										 |  |  |  | 		if(Debugging) PanicAlert("Done"); | 
					
						
							| 
									
										
										
										
											2008-12-27 11:32:03 +00:00
										 |  |  |  | 		Close(); // Call OnClose()
 | 
					
						
							|  |  |  |  | 	} | 
					
						
							|  |  |  |  | } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | // Click Cancel
 | 
					
						
							|  |  |  |  | // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
 | 
					
						
							|  |  |  |  | void ConfigBox::CancelClick(wxCommandEvent& event) | 
					
						
							|  |  |  |  | { | 
					
						
							|  |  |  |  | 	if (event.GetId() == ID_CANCEL) | 
					
						
							|  |  |  |  | 	{ | 
					
						
							| 
									
										
										
										
											2009-01-21 18:09:31 +00:00
										 |  |  |  | 		// Forget all potential changes to PadMapping by loading the last saved settings
 | 
					
						
							|  |  |  |  | 		g_Config.Load(); | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-12-27 11:32:03 +00:00
										 |  |  |  | 		Close(); // Call OnClose()
 | 
					
						
							|  |  |  |  | 	} | 
					
						
							|  |  |  |  | } | 
					
						
							| 
									
										
										
										
											2009-01-20 10:37:48 +00:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-01-21 18:09:31 +00:00
										 |  |  |  | // Debugging
 | 
					
						
							|  |  |  |  | // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
 | 
					
						
							|  |  |  |  | void ConfigBox::LogMsg(const char* format, ...) | 
					
						
							|  |  |  |  | { | 
					
						
							| 
									
										
										
										
											2009-01-22 19:53:16 +00:00
										 |  |  |  | 	#ifdef _WIN32
 | 
					
						
							| 
									
										
										
										
											2009-01-24 22:13:53 +00:00
										 |  |  |  | 	if(Debugging) | 
					
						
							|  |  |  |  | 	{ | 
					
						
							|  |  |  |  | 		const int MaxMsgSize = 1024*2; | 
					
						
							|  |  |  |  | 		char buffer[MaxMsgSize]; | 
					
						
							|  |  |  |  | 		va_list args; | 
					
						
							|  |  |  |  | 		va_start(args, format); | 
					
						
							|  |  |  |  | 		CharArrayFromFormatV(buffer, MaxMsgSize, format, args); | 
					
						
							|  |  |  |  | 		va_end(args); | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 		// Add timestamp
 | 
					
						
							|  |  |  |  | 		std::string StrTmp = buffer; | 
					
						
							|  |  |  |  | 		//StrTmp += Common::Timer::GetTimeFormatted();
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 		if(m_TCDebugging) m_TCDebugging->AppendText(StrTmp.c_str()); | 
					
						
							|  |  |  |  | 	}	 | 
					
						
							| 
									
										
										
										
											2009-01-22 19:53:16 +00:00
										 |  |  |  | 	#endif
 | 
					
						
							| 
									
										
										
										
											2009-01-21 18:09:31 +00:00
										 |  |  |  | } | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-01-20 10:37:48 +00:00
										 |  |  |  | 
 | 
					
						
							|  |  |  |  | //////////////////////////////////////
 | 
					
						
							|  |  |  |  | // Save Settings
 | 
					
						
							|  |  |  |  | /* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |    Saving is currently done when: | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |    1. Closing the configuration window | 
					
						
							|  |  |  |  |    2. Changing the gamepad | 
					
						
							| 
									
										
										
										
											2009-01-21 18:09:31 +00:00
										 |  |  |  |    3. When the gamepad is enabled or disbled | 
					
						
							|  |  |  |  |    4. When we change saving mode (by Id or by slot) | 
					
						
							| 
									
										
										
										
											2009-01-25 18:20:16 +00:00
										 |  |  |  | 
 | 
					
						
							|  |  |  |  |    Input: ChangePad needs to be used when we change the pad for a slot. Slot needs to be used when | 
					
						
							|  |  |  |  |    we only want to save changes to one slot. | 
					
						
							| 
									
										
										
										
											2009-01-21 18:09:31 +00:00
										 |  |  |  | */ | 
					
						
							|  |  |  |  | void ConfigBox::DoSave(bool ChangePad, int Slot) | 
					
						
							| 
									
										
										
										
											2009-01-20 10:37:48 +00:00
										 |  |  |  | { | 
					
						
							|  |  |  |  | 	// Replace "" with "-1" before we are saving
 | 
					
						
							|  |  |  |  | 	ToBlank(false); | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 	if(ChangePad) | 
					
						
							|  |  |  |  | 	{ | 
					
						
							|  |  |  |  | 		// Since we are selecting the pad to save to by the Id we can't update it when we change the pad
 | 
					
						
							|  |  |  |  | 		for(int i = 0; i < 4; i++) SaveButtonMapping(i, true); | 
					
						
							| 
									
										
										
										
											2009-01-25 18:20:16 +00:00
										 |  |  |  | 		 | 
					
						
							| 
									
										
										
										
											2009-01-21 18:09:31 +00:00
										 |  |  |  | 		g_Config.Save(Slot); | 
					
						
							| 
									
										
										
										
											2009-01-20 10:37:48 +00:00
										 |  |  |  | 		// Now we can update the ID
 | 
					
						
							| 
									
										
										
										
											2009-01-21 18:09:31 +00:00
										 |  |  |  | 		PadMapping[notebookpage].ID = m_Joyname[notebookpage]->GetSelection(); | 
					
						
							| 
									
										
										
										
											2009-01-20 10:37:48 +00:00
										 |  |  |  | 	} | 
					
						
							|  |  |  |  | 	else | 
					
						
							|  |  |  |  | 	{ | 
					
						
							| 
									
										
										
										
											2009-01-25 18:20:16 +00:00
										 |  |  |  | 		// Update PadMapping[] from the GUI controls
 | 
					
						
							| 
									
										
										
										
											2009-01-20 10:37:48 +00:00
										 |  |  |  | 		for(int i = 0; i < 4; i++) SaveButtonMapping(i); | 
					
						
							| 
									
										
										
										
											2009-01-21 18:09:31 +00:00
										 |  |  |  | 		g_Config.Save(Slot); | 
					
						
							| 
									
										
										
										
											2009-01-20 10:37:48 +00:00
										 |  |  |  | 	}		 | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-01-25 18:20:16 +00:00
										 |  |  |  | 	// Then change it back to ""
 | 
					
						
							| 
									
										
										
										
											2009-01-20 10:37:48 +00:00
										 |  |  |  | 	ToBlank(); | 
					
						
							|  |  |  |  | } | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-02-02 03:16:59 +00:00
										 |  |  |  | // On changing the SaveById option we update all pages
 | 
					
						
							| 
									
										
										
										
											2009-01-20 10:37:48 +00:00
										 |  |  |  | // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
 | 
					
						
							| 
									
										
										
										
											2009-01-21 18:09:31 +00:00
										 |  |  |  | void ConfigBox::OnSaveById() | 
					
						
							| 
									
										
										
										
											2009-01-20 10:37:48 +00:00
										 |  |  |  | { | 
					
						
							| 
									
										
										
										
											2009-01-21 18:09:31 +00:00
										 |  |  |  | 	// Save current settings
 | 
					
						
							|  |  |  |  | 	DoSave(false, notebookpage); | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-02-02 03:16:59 +00:00
										 |  |  |  | 	// Update the SaveByID setting and load the settings
 | 
					
						
							| 
									
										
										
										
											2009-01-21 18:09:31 +00:00
										 |  |  |  | 	g_Config.bSaveByID = m_CBSaveByID[notebookpage]->IsChecked(); | 
					
						
							|  |  |  |  | 	g_Config.Load(false, true); | 
					
						
							| 
									
										
										
										
											2009-01-20 10:37:48 +00:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-02-02 03:16:59 +00:00
										 |  |  |  | 	// Update the GUI from the now updated PadMapping[]
 | 
					
						
							|  |  |  |  | 	UpdateGUIAll(-1); | 
					
						
							| 
									
										
										
										
											2009-01-20 10:37:48 +00:00
										 |  |  |  | } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | // Change Joystick
 | 
					
						
							|  |  |  |  | // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
 | 
					
						
							| 
									
										
										
										
											2009-01-21 18:09:31 +00:00
										 |  |  |  | /* Function: When changing the joystick we save and load the settings and update the PadMapping
 | 
					
						
							| 
									
										
										
										
											2009-01-24 22:13:53 +00:00
										 |  |  |  |    and PadState array */ | 
					
						
							| 
									
										
										
										
											2009-01-20 10:37:48 +00:00
										 |  |  |  | void ConfigBox::DoChangeJoystick() | 
					
						
							|  |  |  |  | { | 
					
						
							| 
									
										
										
										
											2009-01-24 22:13:53 +00:00
										 |  |  |  | 	// Close the current pad, unless it's used by another slot
 | 
					
						
							|  |  |  |  | 	//if (PadMapping[notebookpage].enabled) PadClose(notebookpage);
 | 
					
						
							| 
									
										
										
										
											2009-01-21 18:09:31 +00:00
										 |  |  |  | 
 | 
					
						
							|  |  |  |  | 	// Before changing the pad we save potential changes to the current pad (to support SaveByID)
 | 
					
						
							| 
									
										
										
										
											2009-01-20 10:37:48 +00:00
										 |  |  |  | 	DoSave(true); | 
					
						
							| 
									
										
										
										
											2009-01-25 18:20:16 +00:00
										 |  |  |  | 	 | 
					
						
							| 
									
										
										
										
											2009-01-20 10:37:48 +00:00
										 |  |  |  | 	// Load the settings for the new Id
 | 
					
						
							|  |  |  |  | 	g_Config.Load(true); | 
					
						
							|  |  |  |  | 	UpdateGUI(notebookpage); // Update the GUI
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-01-21 18:09:31 +00:00
										 |  |  |  | 	// Open the new pad
 | 
					
						
							|  |  |  |  | 	if (PadMapping[notebookpage].enabled) PadOpen(notebookpage); | 
					
						
							|  |  |  |  | } | 
					
						
							|  |  |  |  | void ConfigBox::PadOpen(int Open) // Open for slot 1, 2, 3 or 4
 | 
					
						
							|  |  |  |  | { | 
					
						
							| 
									
										
										
										
											2009-01-24 22:13:53 +00:00
										 |  |  |  | 	// Check that we got a good pad
 | 
					
						
							|  |  |  |  | 	if (!joyinfo.at(PadMapping[Open].ID).Good) | 
					
						
							|  |  |  |  | 	{ | 
					
						
							|  |  |  |  | 		PadState[Open].joy = NULL; | 
					
						
							|  |  |  |  | 		return; | 
					
						
							|  |  |  |  | 	} | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 	PadState[Open].joy = SDL_JoystickOpen(PadMapping[Open].ID); | 
					
						
							| 
									
										
										
										
											2009-01-20 10:37:48 +00:00
										 |  |  |  | } | 
					
						
							| 
									
										
										
										
											2009-01-21 18:09:31 +00:00
										 |  |  |  | void ConfigBox::PadClose(int Close) // Close for slot 1, 2, 3 or 4
 | 
					
						
							| 
									
										
										
										
											2009-01-20 10:37:48 +00:00
										 |  |  |  | { | 
					
						
							| 
									
										
										
										
											2009-01-24 22:13:53 +00:00
										 |  |  |  | 	if (SDL_JoystickOpened(PadMapping[Close].ID)) SDL_JoystickClose(PadState[Close].joy); | 
					
						
							|  |  |  |  | 	PadState[Close].joy = NULL; | 
					
						
							| 
									
										
										
										
											2009-01-20 10:37:48 +00:00
										 |  |  |  | } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | // Notebook page changed
 | 
					
						
							|  |  |  |  | // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
 | 
					
						
							|  |  |  |  | void ConfigBox::NotebookPageChanged(wxNotebookEvent& event) | 
					
						
							| 
									
										
										
										
											2009-01-25 18:20:16 +00:00
										 |  |  |  | {	 | 
					
						
							| 
									
										
										
										
											2009-02-02 03:16:59 +00:00
										 |  |  |  | 	// Save current settings now, don't wait for OK
 | 
					
						
							|  |  |  |  | 	if(ControlsCreated && !g_Config.bSaveByID) DoSave(false, notebookpage); | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 	// Update the global variable
 | 
					
						
							| 
									
										
										
										
											2009-01-20 10:37:48 +00:00
										 |  |  |  | 	notebookpage = event.GetSelection(); | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-01-21 18:09:31 +00:00
										 |  |  |  | 	// Update GUI
 | 
					
						
							|  |  |  |  | 	if(ControlsCreated) UpdateGUI(notebookpage); | 
					
						
							| 
									
										
										
										
											2009-01-20 10:37:48 +00:00
										 |  |  |  | } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | // Replace the harder to understand -1 with "" for the sake of user friendliness
 | 
					
						
							| 
									
										
										
										
											2009-01-20 14:25:33 +00:00
										 |  |  |  | // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
 | 
					
						
							| 
									
										
										
										
											2009-01-20 10:37:48 +00:00
										 |  |  |  | void ConfigBox::ToBlank(bool ToBlank) | 
					
						
							|  |  |  |  | { | 
					
						
							| 
									
										
										
										
											2009-01-25 18:20:16 +00:00
										 |  |  |  | 	if (!ControlsCreated) return; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 	for (int j = 0; j < 4; j++) | 
					
						
							| 
									
										
										
										
											2009-01-20 10:37:48 +00:00
										 |  |  |  | 	{ | 
					
						
							| 
									
										
										
										
											2009-01-25 18:20:16 +00:00
										 |  |  |  | 		if(ToBlank) | 
					
						
							|  |  |  |  | 		{ | 
					
						
							|  |  |  |  | 			for(int i = IDB_ANALOG_MAIN_X; i <= IDB_BUTTONHALFPRESS; i++) | 
					
						
							| 
									
										
										
										
											2009-01-20 14:25:33 +00:00
										 |  |  |  | 				#ifndef _WIN32
 | 
					
						
							| 
									
										
										
										
											2009-01-25 18:20:16 +00:00
										 |  |  |  | 					if(GetButtonText(i, j).ToAscii() == "-1") SetButtonText(i, "", j); | 
					
						
							| 
									
										
										
										
											2009-01-20 14:25:33 +00:00
										 |  |  |  | 				#else
 | 
					
						
							| 
									
										
										
										
											2009-01-25 18:20:16 +00:00
										 |  |  |  | 					if(GetButtonText(i, j) == "-1") SetButtonText(i, "", j); | 
					
						
							| 
									
										
										
										
											2009-01-20 14:25:33 +00:00
										 |  |  |  | 				#endif
 | 
					
						
							| 
									
										
										
										
											2009-01-25 18:20:16 +00:00
										 |  |  |  | 		} | 
					
						
							|  |  |  |  | 		else | 
					
						
							|  |  |  |  | 		{ | 
					
						
							|  |  |  |  | 			for(int i = IDB_ANALOG_MAIN_X; i <= IDB_BUTTONHALFPRESS; i++) | 
					
						
							|  |  |  |  | 				if(GetButtonText(i, j).IsEmpty()) SetButtonText(i, "-1", j); | 
					
						
							|  |  |  |  | 		} | 
					
						
							|  |  |  |  | 	}	 | 
					
						
							| 
									
										
										
										
											2009-01-20 10:37:48 +00:00
										 |  |  |  | } | 
					
						
							| 
									
										
										
										
											2008-12-26 02:42:15 +00:00
										 |  |  |  | //////////////////////////////////
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-01-21 18:09:31 +00:00
										 |  |  |  | ///////////////////////////////////////////////////////////////////////////////////
 | 
					
						
							| 
									
										
										
										
											2008-12-27 11:32:03 +00:00
										 |  |  |  | // Change settings
 | 
					
						
							|  |  |  |  | // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
 | 
					
						
							| 
									
										
										
										
											2009-01-25 18:20:16 +00:00
										 |  |  |  | void ConfigBox::SetButtonTextAll(int id, char text[128]) | 
					
						
							| 
									
										
										
										
											2009-01-21 18:09:31 +00:00
										 |  |  |  | { | 
					
						
							|  |  |  |  | 	for (int i = 0; i < 4; i++) | 
					
						
							|  |  |  |  | 	{ | 
					
						
							| 
									
										
										
										
											2009-02-07 05:57:28 +00:00
										 |  |  |  | 		// Safety check to avoid crash
 | 
					
						
							|  |  |  |  | 		if(joyinfo.size() > PadMapping[i].ID) | 
					
						
							|  |  |  |  | 			if (joyinfo[PadMapping[i].ID].Name == joyinfo[PadMapping[notebookpage].ID].Name) | 
					
						
							|  |  |  |  | 				SetButtonText(id, text, i); | 
					
						
							| 
									
										
										
										
											2009-01-21 18:09:31 +00:00
										 |  |  |  | 	}; | 
					
						
							|  |  |  |  | } | 
					
						
							| 
									
										
										
										
											2009-01-25 18:20:16 +00:00
										 |  |  |  | 
 | 
					
						
							|  |  |  |  | void ConfigBox::SaveButtonMappingAll(int Slot) | 
					
						
							|  |  |  |  | { | 
					
						
							|  |  |  |  | 	for (int i = 0; i < 4; i++) | 
					
						
							| 
									
										
										
										
											2009-02-07 05:57:28 +00:00
										 |  |  |  | 	{ | 
					
						
							|  |  |  |  | 		// This can occur when no gamepad is detected
 | 
					
						
							|  |  |  |  | 		if(joyinfo.size() > PadMapping[i].ID) | 
					
						
							|  |  |  |  | 			if (joyinfo[PadMapping[i].ID].Name == joyinfo[PadMapping[Slot].ID].Name) | 
					
						
							|  |  |  |  | 				SaveButtonMapping(i, false, Slot); | 
					
						
							|  |  |  |  | 	} | 
					
						
							| 
									
										
										
										
											2009-01-25 18:20:16 +00:00
										 |  |  |  | } | 
					
						
							| 
									
										
										
										
											2009-02-02 03:16:59 +00:00
										 |  |  |  | 
 | 
					
						
							|  |  |  |  | void ConfigBox::UpdateGUIAll(int Slot) | 
					
						
							|  |  |  |  | { | 
					
						
							|  |  |  |  | 	if(Slot == -1) | 
					
						
							|  |  |  |  | 	{ | 
					
						
							|  |  |  |  | 		for (int i = 0; i < 4; i++) UpdateGUI(i); | 
					
						
							|  |  |  |  | 	} | 
					
						
							|  |  |  |  | 	else | 
					
						
							|  |  |  |  | 	{ | 
					
						
							|  |  |  |  | 		for (int i = 0; i < 4; i++) | 
					
						
							| 
									
										
										
										
											2009-02-07 05:57:28 +00:00
										 |  |  |  | 		{ | 
					
						
							|  |  |  |  | 			// Safety check to avoid crash
 | 
					
						
							|  |  |  |  | 			if(joyinfo.size() > PadMapping[i].ID) | 
					
						
							|  |  |  |  | 				if (joyinfo[PadMapping[i].ID].Name == joyinfo[PadMapping[Slot].ID].Name) | 
					
						
							|  |  |  |  | 					UpdateGUI(i); | 
					
						
							|  |  |  |  | 		} | 
					
						
							| 
									
										
										
										
											2009-02-02 03:16:59 +00:00
										 |  |  |  | 	} | 
					
						
							|  |  |  |  | } | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-12-27 11:32:03 +00:00
										 |  |  |  | void ConfigBox::ChangeSettings( wxCommandEvent& event ) | 
					
						
							|  |  |  |  | { | 
					
						
							|  |  |  |  | 	switch(event.GetId()) | 
					
						
							|  |  |  |  | 	{ | 
					
						
							|  |  |  |  | 		case IDC_SAVEBYID: | 
					
						
							| 
									
										
										
										
											2009-01-21 18:09:31 +00:00
										 |  |  |  | 			OnSaveById(); | 
					
						
							|  |  |  |  | 			break;		 | 
					
						
							| 
									
										
										
										
											2008-12-27 11:32:03 +00:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-01-15 06:48:15 +00:00
										 |  |  |  | 		case IDC_SHOWADVANCED: | 
					
						
							| 
									
										
										
										
											2008-12-27 11:32:03 +00:00
										 |  |  |  | 			g_Config.bShowAdvanced = m_CBShowAdvanced[notebookpage]->IsChecked();			 | 
					
						
							|  |  |  |  | 			for(int i = 0; i < 4; i++) | 
					
						
							|  |  |  |  | 			{ | 
					
						
							|  |  |  |  | 				m_CBShowAdvanced[i]->SetValue(g_Config.bShowAdvanced); | 
					
						
							|  |  |  |  | 				m_sMainRight[i]->Show(g_Config.bShowAdvanced); | 
					
						
							|  |  |  |  | 			} | 
					
						
							|  |  |  |  | 			SizeWindow(); | 
					
						
							|  |  |  |  | 			break; | 
					
						
							| 
									
										
										
										
											2009-02-03 06:21:22 +00:00
										 |  |  |  | 		case IDC_CHECKFOCUS: | 
					
						
							| 
									
										
										
										
											2009-02-03 10:17:01 +00:00
										 |  |  |  | 			g_Config.bCheckFocus = m_CBCheckFocus[notebookpage]->IsChecked(); | 
					
						
							| 
									
										
										
										
											2009-02-03 06:21:22 +00:00
										 |  |  |  | 			for(int i = 0; i < 4; i++) | 
					
						
							|  |  |  |  | 			{ | 
					
						
							| 
									
										
										
										
											2009-02-03 10:17:01 +00:00
										 |  |  |  | 				m_CBCheckFocus[i]->SetValue(g_Config.bCheckFocus); | 
					
						
							| 
									
										
										
										
											2009-02-03 06:21:22 +00:00
										 |  |  |  | 			} | 
					
						
							|  |  |  |  | 			break; | 
					
						
							| 
									
										
										
										
											2009-02-02 03:16:59 +00:00
										 |  |  |  | 		case IDC_CONTROLTYPE: | 
					
						
							|  |  |  |  | 		case IDC_TRIGGERTYPE: | 
					
						
							|  |  |  |  | 			//UpdateGUI(notebookpage);
 | 
					
						
							| 
									
										
										
										
											2009-01-20 06:38:29 +00:00
										 |  |  |  | 			break; | 
					
						
							| 
									
										
										
										
											2008-12-27 11:32:03 +00:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-01-21 18:09:31 +00:00
										 |  |  |  | 		case IDC_JOYNAME:  | 
					
						
							|  |  |  |  | 			DoChangeJoystick(); | 
					
						
							| 
									
										
										
										
											2009-01-20 06:38:29 +00:00
										 |  |  |  | 			break; | 
					
						
							| 
									
										
										
										
											2009-01-21 18:09:31 +00:00
										 |  |  |  | 
 | 
					
						
							|  |  |  |  | 		case IDC_JOYATTACH: | 
					
						
							|  |  |  |  | 			// We will enable this device
 | 
					
						
							|  |  |  |  | 			int Enable = PadMapping[notebookpage].enabled = !PadMapping[notebookpage].enabled; | 
					
						
							|  |  |  |  | 			// Close or open pad handle			
 | 
					
						
							|  |  |  |  | 			if(Enable) PadOpen(notebookpage); else PadClose(notebookpage); | 
					
						
							|  |  |  |  | 			// Update the GUI
 | 
					
						
							|  |  |  |  | 			UpdateGUI(notebookpage); | 
					
						
							|  |  |  |  | 			return; // Don't save this for all slots
 | 
					
						
							| 
									
										
										
										
											2008-12-27 11:32:03 +00:00
										 |  |  |  | 	} | 
					
						
							| 
									
										
										
										
											2009-01-21 18:09:31 +00:00
										 |  |  |  | 
 | 
					
						
							|  |  |  |  | 	// Update all slots that use this device
 | 
					
						
							| 
									
										
										
										
											2009-01-25 18:20:16 +00:00
										 |  |  |  | 	if(g_Config.bSaveByID) SaveButtonMappingAll(notebookpage); | 
					
						
							| 
									
										
										
										
											2009-02-02 03:16:59 +00:00
										 |  |  |  | 	if(g_Config.bSaveByID) UpdateGUIAll(notebookpage); | 
					
						
							| 
									
										
										
										
											2008-12-27 11:32:03 +00:00
										 |  |  |  | } | 
					
						
							| 
									
										
										
										
											2009-01-21 18:09:31 +00:00
										 |  |  |  | ///////////////////////////////
 | 
					
						
							| 
									
										
										
										
											2008-12-27 11:32:03 +00:00
										 |  |  |  | 
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-01-21 18:09:31 +00:00
										 |  |  |  | ///////////////////////////////////////////////////////////////////////////////////
 | 
					
						
							| 
									
										
										
										
											2009-01-19 05:49:25 +00:00
										 |  |  |  | // Update GUI
 | 
					
						
							|  |  |  |  | // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
 | 
					
						
							| 
									
										
										
										
											2009-01-21 18:09:31 +00:00
										 |  |  |  | // Called from: CreateGUIControls(), ChangeControllertype()
 | 
					
						
							| 
									
										
										
										
											2009-01-19 05:49:25 +00:00
										 |  |  |  | void ConfigBox::UpdateGUI(int _notebookpage) | 
					
						
							|  |  |  |  | { | 
					
						
							| 
									
										
										
										
											2009-02-07 05:57:28 +00:00
										 |  |  |  | 	// If there are no good pads disable the entire notebook
 | 
					
						
							|  |  |  |  | 	if (NumGoodPads == 0) | 
					
						
							|  |  |  |  | 	{ | 
					
						
							|  |  |  |  | 		m_Notebook->Enable(false); | 
					
						
							|  |  |  |  | 		return; | 
					
						
							|  |  |  |  | 	} | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-01-21 18:09:31 +00:00
										 |  |  |  | 	// Update the GUI from PadMapping[]
 | 
					
						
							| 
									
										
										
										
											2009-02-09 13:10:29 +00:00
										 |  |  |  | 	UpdateGUIButtonMapping(_notebookpage); | 
					
						
							| 
									
										
										
										
											2008-12-27 11:32:03 +00:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-01-21 18:09:31 +00:00
										 |  |  |  | 	// Collect status
 | 
					
						
							| 
									
										
										
										
											2009-02-08 14:34:23 +00:00
										 |  |  |  | 	bool Hat = (PadMapping[_notebookpage].controllertype == InputCommon::CTL_DPAD_HAT); | 
					
						
							| 
									
										
										
										
											2009-01-20 06:38:29 +00:00
										 |  |  |  | 	long Left, Right; | 
					
						
							|  |  |  |  | 	m_JoyShoulderL[_notebookpage]->GetValue().ToLong(&Left); | 
					
						
							|  |  |  |  | 	m_JoyShoulderR[_notebookpage]->GetValue().ToLong(&Right); | 
					
						
							|  |  |  |  | 	bool AnalogTrigger = (Left >= 1000 || Right >= 1000); | 
					
						
							| 
									
										
										
										
											2009-01-21 18:09:31 +00:00
										 |  |  |  | 	#ifdef _WIN32
 | 
					
						
							|  |  |  |  | 		bool XInput = XInput::IsConnected(0);	 | 
					
						
							|  |  |  |  | 	#endif
 | 
					
						
							| 
									
										
										
										
											2009-01-20 06:38:29 +00:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-01-21 18:09:31 +00:00
										 |  |  |  | 	// Hat type selection
 | 
					
						
							| 
									
										
										
										
											2009-01-20 05:28:30 +00:00
										 |  |  |  | 	m_JoyDpadUp[_notebookpage]->Show(!Hat); | 
					
						
							| 
									
										
										
										
											2009-01-19 17:47:00 +00:00
										 |  |  |  | 	m_JoyDpadLeft[_notebookpage]->Show(!Hat); | 
					
						
							|  |  |  |  | 	m_JoyDpadRight[_notebookpage]->Show(!Hat); | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-01-20 05:28:30 +00:00
										 |  |  |  | 	m_bJoyDpadUp[_notebookpage]->Show(!Hat); | 
					
						
							| 
									
										
										
										
											2009-01-19 17:47:00 +00:00
										 |  |  |  | 	m_bJoyDpadLeft[_notebookpage]->Show(!Hat); | 
					
						
							|  |  |  |  | 	m_bJoyDpadRight[_notebookpage]->Show(!Hat); | 
					
						
							| 
									
										
										
										
											2009-01-20 05:28:30 +00:00
										 |  |  |  | 	 | 
					
						
							|  |  |  |  | 	m_textDpadUp[_notebookpage]->Show(!Hat); | 
					
						
							| 
									
										
										
										
											2009-01-19 17:47:00 +00:00
										 |  |  |  | 	m_textDpadLeft[_notebookpage]->Show(!Hat); | 
					
						
							|  |  |  |  | 	m_textDpadRight[_notebookpage]->Show(!Hat);	 | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-02-01 16:29:35 +00:00
										 |  |  |  | 	m_textDpadDown[_notebookpage]->SetLabel(Hat ? wxT("Select hat") : wxT("Down")); | 
					
						
							| 
									
										
										
										
											2009-01-20 05:28:30 +00:00
										 |  |  |  | 	m_bJoyDpadDown[_notebookpage]->SetToolTip(Hat ? | 
					
						
							| 
									
										
										
										
											2009-01-19 17:47:00 +00:00
										 |  |  |  | 		wxT("Select a hat by pressing the hat in any direction") : wxT("")); | 
					
						
							| 
									
										
										
										
											2008-12-27 11:32:03 +00:00
										 |  |  |  | 
 | 
					
						
							|  |  |  |  | 	// General settings
 | 
					
						
							| 
									
										
										
										
											2009-01-21 18:09:31 +00:00
										 |  |  |  | 	m_CBSaveByID[_notebookpage]->SetValue(g_Config.bSaveByID); | 
					
						
							| 
									
										
										
										
											2008-12-27 11:32:03 +00:00
										 |  |  |  | 	m_CBShowAdvanced[_notebookpage]->SetValue(g_Config.bShowAdvanced); | 
					
						
							| 
									
										
										
										
											2009-02-03 06:21:22 +00:00
										 |  |  |  | 	m_CBCheckFocus[_notebookpage]->SetValue(g_Config.bCheckFocus); | 
					
						
							| 
									
										
										
										
											2008-12-27 11:32:03 +00:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-01-21 18:09:31 +00:00
										 |  |  |  | 	LogMsg("Update: %i\n", g_Config.bSaveByID); | 
					
						
							| 
									
										
										
										
											2008-12-27 11:32:03 +00:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-01-20 10:37:48 +00:00
										 |  |  |  | 	// Disabled pages
 | 
					
						
							| 
									
										
										
										
											2009-01-24 00:45:46 +00:00
										 |  |  |  | 	bool Enabled = PadMapping[_notebookpage].enabled  == 1 ? true : false; | 
					
						
							| 
									
										
										
										
											2009-01-19 05:49:25 +00:00
										 |  |  |  | 	// There is no FindItem in linux so this doesn't work
 | 
					
						
							|  |  |  |  | 	#ifdef _WIN32
 | 
					
						
							|  |  |  |  | 		// Enable or disable all buttons
 | 
					
						
							| 
									
										
										
										
											2009-01-20 10:37:48 +00:00
										 |  |  |  | 		for(int i = IDB_ANALOG_MAIN_X; i <= IDB_BUTTONHALFPRESS; i++) | 
					
						
							|  |  |  |  | 			m_Controller[_notebookpage]->FindItem(i)->Enable(Enabled); | 
					
						
							| 
									
										
										
										
											2009-01-19 05:49:25 +00:00
										 |  |  |  | 		// Controller type settings
 | 
					
						
							| 
									
										
										
										
											2009-01-20 10:37:48 +00:00
										 |  |  |  | 		m_Controller[_notebookpage]->FindItem(IDC_DEADZONE)->Enable(Enabled); | 
					
						
							|  |  |  |  | 		m_Controller[_notebookpage]->FindItem(IDC_CONTROLTYPE)->Enable(Enabled); | 
					
						
							| 
									
										
										
										
											2009-01-20 14:32:15 +00:00
										 |  |  |  | 		m_Controller[_notebookpage]->FindItem(IDC_TRIGGERTYPE)->Enable(Enabled && XInput); | 
					
						
							| 
									
										
										
										
											2009-01-20 10:37:48 +00:00
										 |  |  |  | 		m_Controller[_notebookpage]->FindItem(IDCB_MAINSTICK_DIAGONAL)->Enable(Enabled);		 | 
					
						
							| 
									
										
										
										
											2009-02-09 18:43:03 +00:00
										 |  |  |  | 		m_Controller[_notebookpage]->FindItem(IDCB_MAINSTICK_S_TO_C)->Enable(Enabled); | 
					
						
							|  |  |  |  | 		m_Controller[_notebookpage]->FindItem(IDFILTER_SETTINGS)->Enable(Enabled); | 
					
						
							| 
									
										
										
										
											2009-01-19 05:49:25 +00:00
										 |  |  |  | 	#endif
 | 
					
						
							| 
									
										
										
										
											2008-12-28 18:50:24 +00:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-01-20 10:37:48 +00:00
										 |  |  |  | 	// Replace the harder to understand -1 with "" for the sake of user friendliness
 | 
					
						
							|  |  |  |  | 	ToBlank(); | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-01-19 05:49:25 +00:00
										 |  |  |  | 	 // Repaint the background
 | 
					
						
							|  |  |  |  | 	m_Controller[_notebookpage]->Refresh(); | 
					
						
							| 
									
										
										
										
											2008-12-27 11:32:03 +00:00
										 |  |  |  | } | 
					
						
							| 
									
										
										
										
											2009-01-21 18:09:31 +00:00
										 |  |  |  | ///////////////////////////////
 | 
					
						
							| 
									
										
										
										
											2008-12-27 11:32:03 +00:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-01-21 18:09:31 +00:00
										 |  |  |  | 
 | 
					
						
							|  |  |  |  | // Paint the background
 | 
					
						
							| 
									
										
										
										
											2008-12-26 02:42:15 +00:00
										 |  |  |  | // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
 | 
					
						
							|  |  |  |  | void ConfigBox::OnPaint( wxPaintEvent &event ) | 
					
						
							|  |  |  |  | { | 
					
						
							|  |  |  |  | 	event.Skip(); | 
					
						
							| 
									
										
										
										
											2008-12-08 05:25:12 +00:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-12-27 11:32:03 +00:00
										 |  |  |  | 	wxPaintDC dcWin(m_pKeys[notebookpage]); | 
					
						
							|  |  |  |  | 	PrepareDC( dcWin ); | 
					
						
							| 
									
										
										
										
											2009-01-21 18:09:31 +00:00
										 |  |  |  | 	if(PadMapping[notebookpage].enabled) | 
					
						
							| 
									
										
										
										
											2008-12-26 02:42:15 +00:00
										 |  |  |  | 		dcWin.DrawBitmap( WxStaticBitmap1_BITMAP, 94, 0, true ); | 
					
						
							| 
									
										
										
										
											2008-12-27 11:32:03 +00:00
										 |  |  |  | 	else | 
					
						
							|  |  |  |  | 		dcWin.DrawBitmap( WxStaticBitmap1_BITMAPGray, 94, 0, true ); | 
					
						
							| 
									
										
										
										
											2008-12-26 02:42:15 +00:00
										 |  |  |  | } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | // Populate the config window
 | 
					
						
							|  |  |  |  | // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
 | 
					
						
							| 
									
										
										
										
											2008-12-08 05:25:12 +00:00
										 |  |  |  | void ConfigBox::CreateGUIControls() | 
					
						
							|  |  |  |  | { | 
					
						
							| 
									
										
										
										
											2009-01-24 22:13:53 +00:00
										 |  |  |  | 	Console::Print("CreateGUIControls()\n"); | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-12-08 05:25:12 +00:00
										 |  |  |  | 	#ifndef _DEBUG		
 | 
					
						
							|  |  |  |  | 		SetTitle(wxT("Configure: nJoy v"INPUT_VERSION" Input Plugin")); | 
					
						
							|  |  |  |  | 	#else			
 | 
					
						
							|  |  |  |  | 		SetTitle(wxT("Configure: nJoy v"INPUT_VERSION" (Debug) Input Plugin")); | 
					
						
							|  |  |  |  | 	#endif
 | 
					
						
							| 
									
										
										
										
											2009-01-15 06:48:15 +00:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-12-26 02:42:15 +00:00
										 |  |  |  | 	SetIcon(wxNullIcon); | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-12-08 05:25:12 +00:00
										 |  |  |  | #ifndef _WIN32
 | 
					
						
							|  |  |  |  | 	// Force a 8pt font so that it looks more or less "correct" regardless of the default font setting
 | 
					
						
							| 
									
										
										
										
											2009-01-04 21:53:41 +00:00
										 |  |  |  | 	wxFont f(8, wxFONTFAMILY_DEFAULT, wxFONTSTYLE_NORMAL, wxFONTWEIGHT_NORMAL); | 
					
						
							| 
									
										
										
										
											2008-12-08 05:25:12 +00:00
										 |  |  |  | 	SetFont(f); | 
					
						
							|  |  |  |  | #endif
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 	// Buttons
 | 
					
						
							| 
									
										
										
										
											2008-12-26 02:42:15 +00:00
										 |  |  |  | 	m_About = new wxButton(this, ID_ABOUT, wxT("About"), wxDefaultPosition, wxSize(75, 25), 0, wxDefaultValidator, wxT("About")); | 
					
						
							|  |  |  |  | 	m_OK = new wxButton(this, ID_OK, wxT("OK"), wxDefaultPosition, wxSize(75, 25), 0, wxDefaultValidator, wxT("OK")); | 
					
						
							|  |  |  |  | 	m_Cancel = new wxButton(this, ID_CANCEL, wxT("Cancel"), wxDefaultPosition, wxSize(75, 25), 0, wxDefaultValidator, wxT("Cancel")); | 
					
						
							| 
									
										
										
										
											2008-12-28 18:50:24 +00:00
										 |  |  |  | 	m_OK->SetToolTip( | 
					
						
							|  |  |  |  | 		wxT("Save your settings and close this window.") | 
					
						
							|  |  |  |  | 		); | 
					
						
							|  |  |  |  | 	m_Cancel->SetToolTip( | 
					
						
							|  |  |  |  | 		wxT("Close this window without saving your changes.") | 
					
						
							|  |  |  |  | 		); | 
					
						
							| 
									
										
										
										
											2008-12-08 05:25:12 +00:00
										 |  |  |  | 
 | 
					
						
							|  |  |  |  | 	// Notebook
 | 
					
						
							| 
									
										
										
										
											2008-12-26 02:42:15 +00:00
										 |  |  |  | 	m_Notebook = new wxNotebook(this, ID_NOTEBOOK, wxDefaultPosition, wxDefaultSize); | 
					
						
							| 
									
										
										
										
											2009-01-15 06:48:15 +00:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-12-08 05:25:12 +00:00
										 |  |  |  | 	// Controller pages
 | 
					
						
							| 
									
										
										
										
											2008-12-26 02:42:15 +00:00
										 |  |  |  | 	m_Controller[0] = new wxPanel(m_Notebook, ID_CONTROLLERPAGE1, wxDefaultPosition, wxDefaultSize); | 
					
						
							| 
									
										
										
										
											2008-12-08 05:25:12 +00:00
										 |  |  |  | 	m_Notebook->AddPage(m_Controller[0], wxT("Controller 1")); | 
					
						
							| 
									
										
										
										
											2008-12-26 02:42:15 +00:00
										 |  |  |  | 	m_Controller[1] = new wxPanel(m_Notebook, ID_CONTROLLERPAGE2, wxDefaultPosition, wxDefaultSize); | 
					
						
							| 
									
										
										
										
											2008-12-08 05:25:12 +00:00
										 |  |  |  | 	m_Notebook->AddPage(m_Controller[1], wxT("Controller 2")); | 
					
						
							| 
									
										
										
										
											2008-12-26 02:42:15 +00:00
										 |  |  |  | 	m_Controller[2] = new wxPanel(m_Notebook, ID_CONTROLLERPAGE3, wxDefaultPosition, wxDefaultSize); | 
					
						
							| 
									
										
										
										
											2008-12-08 05:25:12 +00:00
										 |  |  |  | 	m_Notebook->AddPage(m_Controller[2], wxT("Controller 3")); | 
					
						
							| 
									
										
										
										
											2008-12-26 02:42:15 +00:00
										 |  |  |  | 	m_Controller[3] = new wxPanel(m_Notebook, ID_CONTROLLERPAGE4, wxDefaultPosition, wxDefaultSize); | 
					
						
							| 
									
										
										
										
											2008-12-08 05:25:12 +00:00
										 |  |  |  | 	m_Notebook->AddPage(m_Controller[3], wxT("Controller 4")); | 
					
						
							| 
									
										
										
										
											2008-12-26 02:42:15 +00:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-12-27 11:32:03 +00:00
										 |  |  |  | 
 | 
					
						
							|  |  |  |  | 	// Define bitmap for EVT_PAINT
 | 
					
						
							|  |  |  |  | 	WxStaticBitmap1_BITMAP = wxBitmap(ConfigBox_WxStaticBitmap1_XPM); | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 	// Gray version
 | 
					
						
							|  |  |  |  | 	wxImage WxImageGray = WxStaticBitmap1_BITMAP.ConvertToImage(); | 
					
						
							|  |  |  |  | 	WxImageGray = WxImageGray.ConvertToGreyscale(); | 
					
						
							|  |  |  |  | 	WxStaticBitmap1_BITMAPGray = wxBitmap(WxImageGray); | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 	// --------------------------------------------------------------------
 | 
					
						
							| 
									
										
										
										
											2009-01-15 06:48:15 +00:00
										 |  |  |  | 	// Search for devices and add them to the device list
 | 
					
						
							| 
									
										
										
										
											2008-12-27 11:32:03 +00:00
										 |  |  |  | 	// -----------------------------
 | 
					
						
							|  |  |  |  | 	wxArrayString arrayStringFor_Joyname; // The string array
 | 
					
						
							| 
									
										
										
										
											2009-01-24 22:13:53 +00:00
										 |  |  |  | 	if(NumGoodPads > 0) | 
					
						
							| 
									
										
										
										
											2008-12-08 05:25:12 +00:00
										 |  |  |  | 	{ | 
					
						
							| 
									
										
										
										
											2009-01-24 22:13:53 +00:00
										 |  |  |  | 		for(int x = 0; x < joyinfo.size(); x++) | 
					
						
							| 
									
										
										
										
											2008-12-08 05:25:12 +00:00
										 |  |  |  | 		{ | 
					
						
							| 
									
										
										
										
											2009-01-21 18:09:31 +00:00
										 |  |  |  | 			arrayStringFor_Joyname.Add(wxString::FromAscii(joyinfo[x].Name.c_str())); | 
					
						
							| 
									
										
										
										
											2008-12-08 05:25:12 +00:00
										 |  |  |  | 		} | 
					
						
							|  |  |  |  | 	} | 
					
						
							|  |  |  |  | 	else | 
					
						
							|  |  |  |  | 	{ | 
					
						
							| 
									
										
										
										
											2009-02-07 05:57:28 +00:00
										 |  |  |  | 		arrayStringFor_Joyname.Add(wxString::FromAscii("<No Gamepad Detected>")); | 
					
						
							| 
									
										
										
										
											2008-12-08 05:25:12 +00:00
										 |  |  |  | 	} | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-12-27 11:32:03 +00:00
										 |  |  |  | 	// --------------------------------------------------------------------
 | 
					
						
							| 
									
										
										
										
											2009-01-20 05:28:30 +00:00
										 |  |  |  | 	// Populate the DPad type and Trigger type list
 | 
					
						
							| 
									
										
										
										
											2008-12-27 11:32:03 +00:00
										 |  |  |  | 	// -----------------------------
 | 
					
						
							| 
									
										
										
										
											2009-01-20 05:28:30 +00:00
										 |  |  |  | 	wxArrayString wxAS_DPadType; | 
					
						
							| 
									
										
										
										
											2009-02-08 14:34:23 +00:00
										 |  |  |  | 	wxAS_DPadType.Add(wxString::FromAscii(DPadType[InputCommon::CTL_DPAD_HAT])); | 
					
						
							|  |  |  |  | 	wxAS_DPadType.Add(wxString::FromAscii(DPadType[InputCommon::CTL_DPAD_CUSTOM])); | 
					
						
							| 
									
										
										
										
											2008-12-08 05:25:12 +00:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-01-20 05:28:30 +00:00
										 |  |  |  | 	wxArrayString wxAS_TriggerType; | 
					
						
							| 
									
										
										
										
											2009-02-08 14:34:23 +00:00
										 |  |  |  | 	wxAS_TriggerType.Add(wxString::FromAscii(TriggerType[InputCommon::CTL_TRIGGER_SDL])); | 
					
						
							|  |  |  |  | 	wxAS_TriggerType.Add(wxString::FromAscii(TriggerType[InputCommon::CTL_TRIGGER_XINPUT])); | 
					
						
							| 
									
										
										
										
											2009-01-15 06:48:15 +00:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-12-27 11:32:03 +00:00
										 |  |  |  | 	// --------------------------------------------------------------------
 | 
					
						
							|  |  |  |  | 	// Populate the deadzone list
 | 
					
						
							|  |  |  |  | 	// -----------------------------
 | 
					
						
							| 
									
										
										
										
											2008-12-08 05:25:12 +00:00
										 |  |  |  | 	char buffer [8]; | 
					
						
							| 
									
										
										
										
											2008-12-27 11:32:03 +00:00
										 |  |  |  | 	wxArrayString arrayStringFor_Deadzone; | 
					
						
							| 
									
										
										
										
											2008-12-08 05:25:12 +00:00
										 |  |  |  | 	for(int x = 1; x <= 100; x++) | 
					
						
							|  |  |  |  | 	{		 | 
					
						
							|  |  |  |  | 		sprintf (buffer, "%d %%", x); | 
					
						
							|  |  |  |  | 		arrayStringFor_Deadzone.Add(wxString::FromAscii(buffer)); | 
					
						
							|  |  |  |  | 	} | 
					
						
							| 
									
										
										
										
											2008-12-27 11:32:03 +00:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-12-08 05:25:12 +00:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-12-26 02:42:15 +00:00
										 |  |  |  | 	// Populate all four pages
 | 
					
						
							| 
									
										
										
										
											2009-01-20 06:38:29 +00:00
										 |  |  |  | 	for(int i = 0; i < 4; i++) | 
					
						
							| 
									
										
										
										
											2009-01-15 06:48:15 +00:00
										 |  |  |  | 	{ | 
					
						
							| 
									
										
										
										
											2008-12-26 02:42:15 +00:00
										 |  |  |  | 		// --------------------------------------------------------------------
 | 
					
						
							|  |  |  |  | 		// Populate keys sizer
 | 
					
						
							|  |  |  |  | 		// -----------------------------
 | 
					
						
							|  |  |  |  | 		// Set relative values for the keys
 | 
					
						
							|  |  |  |  | 		int t = -75; // Top
 | 
					
						
							|  |  |  |  | 		int l = -4; // Left
 | 
					
						
							|  |  |  |  | 		m_sKeys[i] = new wxStaticBoxSizer( wxVERTICAL, m_Controller[i], wxT("Keys")); | 
					
						
							| 
									
										
										
										
											2009-01-19 17:47:00 +00:00
										 |  |  |  | 		m_pKeys[i] = new wxPanel(m_Controller[i], ID_KEYSPANEL1 + i, wxDefaultPosition, wxSize(600, 400), 0); | 
					
						
							| 
									
										
										
										
											2008-12-26 02:42:15 +00:00
										 |  |  |  | 		//m_sKeys[i] = new wxStaticBox (m_Controller[i], IDG_JOYSTICK, wxT("Keys"), wxDefaultPosition, wxSize(608, 500));
 | 
					
						
							|  |  |  |  | 		m_sKeys[i]->Add(m_pKeys[i], 0, (wxALL), 0); // margin = 0
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 		// --------------------------------------------------------------------
 | 
					
						
							|  |  |  |  | 		// GameCube controller picture
 | 
					
						
							|  |  |  |  | 		// -----------------------------
 | 
					
						
							|  |  |  |  | 		// TODO: Controller image
 | 
					
						
							|  |  |  |  | 		// Placeholder instead of bitmap
 | 
					
						
							|  |  |  |  | 		// m_PlaceholderBMP[i] = new wxTextCtrl(m_Controller[i], ID_CONTROLLERPICTURE, wxT("BITMAP HERE PLZ KTHX!"), wxPoint(98, 75), wxSize(423, 306), wxTE_READONLY | wxTE_CENTRE, wxDefaultValidator, wxT("BITMAP HERE PLZ KTHX!"));
 | 
					
						
							|  |  |  |  | 		// m_PlaceholderBMP[i]->Enable(false);
 | 
					
						
							| 
									
										
										
										
											2008-12-08 05:25:12 +00:00
										 |  |  |  | 		 | 
					
						
							| 
									
										
										
										
											2008-12-26 02:42:15 +00:00
										 |  |  |  | 		/* You can enable the bitmap here. But it loads <20>berslow on init... (only in windows, linux
 | 
					
						
							|  |  |  |  | 		seems to load it fast!) AAaaand the XPM file (256 colours) looks crappier than the real bitmap... | 
					
						
							|  |  |  |  | 		so maybe we can find a way to use a bitmap?	*/ | 
					
						
							|  |  |  |  | 		//m_controllerimage[i] = new wxStaticBitmap(m_pKeys[i], ID_CONTROLLERPICTURE, WxStaticBitmap1_BITMAP, wxPoint(l + 98, t + 75), wxSize(421,304));		
 | 
					
						
							|  |  |  |  | 		//m_controllerimage[i] = new wxBitmap( WxStaticBitmap1_BITMAP );		
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 		 // Paint background. This allows objects to be visible on top of the picture
 | 
					
						
							|  |  |  |  | 		m_pKeys[i]->Connect(wxID_ANY, wxEVT_PAINT, | 
					
						
							|  |  |  |  | 			wxPaintEventHandler(ConfigBox::OnPaint), | 
					
						
							|  |  |  |  | 			(wxObject*)0, this); | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 		// --------------------------------------------------------------------
 | 
					
						
							|  |  |  |  | 		// Keys objects
 | 
					
						
							|  |  |  |  | 		// -----------------------------
 | 
					
						
							| 
									
										
										
										
											2009-01-19 05:49:25 +00:00
										 |  |  |  | 		// Left and right shoulder buttons
 | 
					
						
							| 
									
										
										
										
											2008-12-26 02:42:15 +00:00
										 |  |  |  | 		m_JoyShoulderL[i] = new wxTextCtrl(m_pKeys[i], ID_SHOULDER_L, wxT("0"), wxPoint(l + 6, t + 80), wxSize(59, 19), wxTE_READONLY | wxTE_CENTRE, wxDefaultValidator, wxT("0")); | 
					
						
							| 
									
										
										
										
											2008-12-08 05:25:12 +00:00
										 |  |  |  | 		m_JoyShoulderL[i]->Enable(false); | 
					
						
							| 
									
										
										
										
											2008-12-26 02:42:15 +00:00
										 |  |  |  | 		m_bJoyShoulderL[i] = new wxButton(m_pKeys[i], IDB_SHOULDER_L, wxEmptyString, wxPoint(l + 70, t + 82), wxSize(21, 14), 0, wxDefaultValidator, wxEmptyString); | 
					
						
							| 
									
										
										
										
											2009-01-19 05:49:25 +00:00
										 |  |  |  | 		m_JoyShoulderR[i] = new wxTextCtrl(m_pKeys[i], ID_SHOULDER_R, wxT("0"), wxPoint(l + 552, t + 106), wxSize(59, 19), wxTE_READONLY | wxTE_CENTRE, wxDefaultValidator, wxT("0")); | 
					
						
							|  |  |  |  | 		m_JoyShoulderR[i]->Enable(false); | 
					
						
							|  |  |  |  | 		m_bJoyShoulderR[i] = new wxButton(m_pKeys[i], IDB_SHOULDER_R, wxEmptyString, wxPoint(l + 526, t + 108), wxSize(21, 14), 0, wxDefaultValidator, wxEmptyString); | 
					
						
							|  |  |  |  | 		 | 
					
						
							| 
									
										
										
										
											2008-12-26 02:42:15 +00:00
										 |  |  |  | 		// Left analog
 | 
					
						
							| 
									
										
										
										
											2009-01-19 17:47:00 +00:00
										 |  |  |  | 		int ALt = 169; int ALw = ALt + 14; int ALb = ALw + 2; // Set offset
 | 
					
						
							| 
									
										
										
										
											2008-12-26 02:42:15 +00:00
										 |  |  |  | 		m_JoyAnalogMainX[i] = new wxTextCtrl(m_pKeys[i], ID_ANALOG_MAIN_X, wxT("0"), wxPoint(l + 6, t + ALw), wxSize(59, 19), wxTE_READONLY | wxTE_CENTRE, wxDefaultValidator, wxT("0")); | 
					
						
							| 
									
										
										
										
											2008-12-08 05:25:12 +00:00
										 |  |  |  | 		m_JoyAnalogMainX[i]->Enable(false); | 
					
						
							| 
									
										
										
										
											2008-12-26 02:42:15 +00:00
										 |  |  |  | 		m_JoyAnalogMainY[i] = new wxTextCtrl(m_pKeys[i], ID_ANALOG_MAIN_Y, wxT("0"), wxPoint(l + 6, t + ALw + 36), wxSize(59, 19), wxTE_READONLY | wxTE_CENTRE, wxDefaultValidator, wxT("0")); | 
					
						
							|  |  |  |  | 		m_JoyAnalogMainY[i]->Enable(false);		 | 
					
						
							|  |  |  |  | 		m_bJoyAnalogMainX[i] = new wxButton(m_pKeys[i], IDB_ANALOG_MAIN_X, wxEmptyString, wxPoint(l + 70, t + ALb), wxSize(21, 14), 0, wxDefaultValidator, wxEmptyString); | 
					
						
							|  |  |  |  | 		m_bJoyAnalogMainY[i] = new wxButton(m_pKeys[i], IDB_ANALOG_MAIN_Y, wxEmptyString, wxPoint(l + 70, t + ALb + 36), wxSize(21, 14), 0, wxDefaultValidator, wxEmptyString); | 
					
						
							|  |  |  |  | 		m_textMainX[i] = new wxStaticText(m_pKeys[i], IDT_ANALOG_MAIN_X, wxT("X-axis"), wxPoint(l + 6, t + ALt), wxDefaultSize, 0, wxT("X-axis")); | 
					
						
							|  |  |  |  | 		m_textMainY[i] = new wxStaticText(m_pKeys[i], IDT_ANALOG_MAIN_Y, wxT("Y-axis"), wxPoint(l + 6, t + ALt + 36), wxDefaultSize, 0, wxT("Y-axis")); | 
					
						
							| 
									
										
										
										
											2009-01-19 17:47:00 +00:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-12-26 02:42:15 +00:00
										 |  |  |  | 		// D-Pad
 | 
					
						
							| 
									
										
										
										
											2009-01-19 17:47:00 +00:00
										 |  |  |  | 		int DPt = 250; int DPw = DPt + 14; int DPb = DPw + 2; // Set offset
 | 
					
						
							| 
									
										
										
										
											2009-01-19 05:49:25 +00:00
										 |  |  |  | 		m_JoyDpadUp[i] = new wxTextCtrl(m_pKeys[i], ID_DPAD_UP, wxT("0"), wxPoint(l + 6, t + DPw), wxSize(59, 19), wxTE_READONLY | wxTE_CENTRE, wxDefaultValidator, wxT("0")); | 
					
						
							|  |  |  |  | 		m_JoyDpadDown[i] = new wxTextCtrl(m_pKeys[i], ID_DPAD_DOWN, wxT("0"), wxPoint(l + 6, t + DPw + 36*1), wxSize(59, 19), wxTE_READONLY | wxTE_CENTRE, wxDefaultValidator, wxT("0")); | 
					
						
							|  |  |  |  | 		m_JoyDpadLeft[i] = new wxTextCtrl(m_pKeys[i], ID_DPAD_LEFT, wxT("0"), wxPoint(l + 6, t + DPw + 36*2), wxSize(59, 19), wxTE_READONLY | wxTE_CENTRE, wxDefaultValidator, wxT("0")); | 
					
						
							|  |  |  |  | 		m_JoyDpadRight[i] = new wxTextCtrl(m_pKeys[i], ID_DPAD_RIGHT, wxT("0"), wxPoint(l + 6, t + DPw + 36*3), wxSize(59, 19), wxTE_READONLY | wxTE_CENTRE, wxDefaultValidator, wxT("0")); | 
					
						
							| 
									
										
										
										
											2008-12-08 05:25:12 +00:00
										 |  |  |  | 		m_JoyDpadUp[i]->Enable(false); | 
					
						
							|  |  |  |  | 		m_JoyDpadDown[i]->Enable(false); | 
					
						
							|  |  |  |  | 		m_JoyDpadLeft[i]->Enable(false); | 
					
						
							|  |  |  |  | 		m_JoyDpadRight[i]->Enable(false); | 
					
						
							| 
									
										
										
										
											2008-12-26 02:42:15 +00:00
										 |  |  |  | 		m_bJoyDpadUp[i] = new wxButton(m_pKeys[i], IDB_DPAD_UP, wxEmptyString, wxPoint(l + 70, t + DPb + 36*0), wxSize(21, 14), 0, wxDefaultValidator, wxEmptyString); | 
					
						
							|  |  |  |  | 		m_bJoyDpadDown[i] = new wxButton(m_pKeys[i], IDB_DPAD_DOWN, wxEmptyString, wxPoint(l + 70, t + DPb + 36*1), wxSize(21, 14), 0, wxDefaultValidator, wxEmptyString); | 
					
						
							|  |  |  |  | 		m_bJoyDpadLeft[i] = new wxButton(m_pKeys[i], IDB_DPAD_LEFT, wxEmptyString, wxPoint(l + 70, t + DPb + 36*2), wxSize(21, 14), 0, wxDefaultValidator, wxEmptyString); | 
					
						
							|  |  |  |  | 		m_bJoyDpadRight[i] = new wxButton(m_pKeys[i], IDB_DPAD_RIGHT, wxEmptyString, wxPoint(l + 70, t + DPb + 36*3), wxSize(21, 14), 0, wxDefaultValidator, wxEmptyString); | 
					
						
							|  |  |  |  | 		m_textDpadUp[i] = new wxStaticText(m_pKeys[i], IDT_DPAD_UP, wxT("Up"), wxPoint(l + 6, t + DPt + 36*0), wxDefaultSize, 0, wxT("Up")); | 
					
						
							|  |  |  |  | 		m_textDpadDown[i] = new wxStaticText(m_pKeys[i], IDT_DPAD_DOWN, wxT("Down"), wxPoint(l + 6, t + DPt + 36*1), wxDefaultSize, 0, wxT("Down")); | 
					
						
							|  |  |  |  | 		m_textDpadLeft[i] = new wxStaticText(m_pKeys[i], IDT_DPAD_LEFT, wxT("Left"), wxPoint(l + 6, t + DPt + 36*2), wxDefaultSize, 0, wxT("Left")); | 
					
						
							|  |  |  |  | 		m_textDpadRight[i] = new wxStaticText(m_pKeys[i], IDT_DPAD_RIGHT, wxT("Right"), wxPoint(l + 6, t + DPt + 36*3), wxDefaultSize, 0, wxT("Right")); | 
					
						
							| 
									
										
										
										
											2009-01-19 17:47:00 +00:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-01-19 05:49:25 +00:00
										 |  |  |  | 		// Buttons
 | 
					
						
							| 
									
										
										
										
											2008-12-26 02:42:15 +00:00
										 |  |  |  | 		m_JoyButtonA[i] = new wxTextCtrl(m_pKeys[i], ID_BUTTON_A, wxT("0"), wxPoint(l + 552, t + 280), wxSize(59, 19), wxTE_READONLY | wxTE_CENTRE, wxDefaultValidator, wxT("0")); | 
					
						
							| 
									
										
										
										
											2008-12-08 05:25:12 +00:00
										 |  |  |  | 		m_JoyButtonA[i]->Enable(false); | 
					
						
							| 
									
										
										
										
											2008-12-26 02:42:15 +00:00
										 |  |  |  | 		m_JoyButtonB[i] = new wxTextCtrl(m_pKeys[i], ID_BUTTON_B, wxT("0"), wxPoint(l + 552, t + 80), wxSize(59, 19), wxTE_READONLY | wxTE_CENTRE, wxDefaultValidator, wxT("0")); | 
					
						
							| 
									
										
										
										
											2008-12-08 05:25:12 +00:00
										 |  |  |  | 		m_JoyButtonB[i]->Enable(false); | 
					
						
							| 
									
										
										
										
											2008-12-26 02:42:15 +00:00
										 |  |  |  | 		m_JoyButtonX[i] = new wxTextCtrl(m_pKeys[i], ID_BUTTON_X, wxT("0"), wxPoint(l + 552, t + 242), wxSize(59, 19), wxTE_READONLY | wxTE_CENTRE, wxDefaultValidator, wxT("0")); | 
					
						
							| 
									
										
										
										
											2008-12-08 05:25:12 +00:00
										 |  |  |  | 		m_JoyButtonX[i]->Enable(false); | 
					
						
							| 
									
										
										
										
											2008-12-26 02:42:15 +00:00
										 |  |  |  | 		m_JoyButtonY[i] = new wxTextCtrl(m_pKeys[i], ID_BUTTON_Y, wxT("0"), wxPoint(l + 552, t + 171), wxSize(59, 19), wxTE_READONLY | wxTE_CENTRE, wxDefaultValidator, wxT("0")); | 
					
						
							| 
									
										
										
										
											2008-12-08 05:25:12 +00:00
										 |  |  |  | 		m_JoyButtonY[i]->Enable(false); | 
					
						
							| 
									
										
										
										
											2008-12-26 02:42:15 +00:00
										 |  |  |  | 		m_JoyButtonZ[i] = new wxTextCtrl(m_pKeys[i], ID_BUTTON_Z, wxT("0"), wxPoint(l + 552, t + 145), wxSize(59, 19), wxTE_READONLY | wxTE_CENTRE, wxDefaultValidator, wxT("0")); | 
					
						
							| 
									
										
										
										
											2008-12-08 05:25:12 +00:00
										 |  |  |  | 		m_JoyButtonZ[i]->Enable(false); | 
					
						
							| 
									
										
										
										
											2008-12-26 02:42:15 +00:00
										 |  |  |  | 		m_bJoyButtonA[i] = new wxButton(m_pKeys[i], IDB_BUTTON_A, wxEmptyString, wxPoint(l + 526, t + 282), wxSize(21, 14), 0, wxDefaultValidator, wxEmptyString); | 
					
						
							|  |  |  |  | 		m_bJoyButtonB[i] = new wxButton(m_pKeys[i], IDB_BUTTON_B, wxEmptyString, wxPoint(l + 526, t + 82), wxSize(21, 14), 0, wxDefaultValidator, wxEmptyString); | 
					
						
							|  |  |  |  | 		m_bJoyButtonX[i] = new wxButton(m_pKeys[i], IDB_BUTTON_X, wxEmptyString, wxPoint(l + 526, t + 244), wxSize(21, 14), 0, wxDefaultValidator, wxEmptyString); | 
					
						
							|  |  |  |  | 		m_bJoyButtonY[i] = new wxButton(m_pKeys[i], IDB_BUTTON_Y, wxEmptyString, wxPoint(l + 526, t + 173), wxSize(21, 14), 0, wxDefaultValidator, wxEmptyString); | 
					
						
							|  |  |  |  | 		m_bJoyButtonZ[i] = new wxButton(m_pKeys[i], IDB_BUTTON_Z, wxEmptyString, wxPoint(l + 526, t + 147), wxSize(21, 14), 0, wxDefaultValidator, wxEmptyString); | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 		// C-buttons
 | 
					
						
							|  |  |  |  | 		m_JoyAnalogSubX[i] = new wxTextCtrl(m_pKeys[i], ID_ANALOG_SUB_X, wxT("0"), wxPoint(l + 552, t + 336), wxSize(59, 19), wxTE_READONLY | wxTE_CENTRE, wxDefaultValidator, wxT("0")); | 
					
						
							| 
									
										
										
										
											2008-12-08 05:25:12 +00:00
										 |  |  |  | 		m_JoyAnalogSubX[i]->Enable(false); | 
					
						
							| 
									
										
										
										
											2008-12-26 02:42:15 +00:00
										 |  |  |  | 		m_JoyAnalogSubY[i] = new wxTextCtrl(m_pKeys[i], ID_ANALOG_SUB_Y, wxT("0"), wxPoint(l + 552, t + 373), wxSize(59, 19), wxTE_READONLY | wxTE_CENTRE, wxDefaultValidator, wxT("0")); | 
					
						
							| 
									
										
										
										
											2008-12-08 05:25:12 +00:00
										 |  |  |  | 		m_JoyAnalogSubY[i]->Enable(false); | 
					
						
							| 
									
										
										
										
											2008-12-26 02:42:15 +00:00
										 |  |  |  | 		m_bJoyAnalogSubX[i] = new wxButton(m_pKeys[i], IDB_ANALOG_SUB_X, wxEmptyString, wxPoint(l + 526, t + 338), wxSize(21, 14), 0, wxDefaultValidator, wxEmptyString); | 
					
						
							|  |  |  |  | 		m_bJoyAnalogSubY[i] = new wxButton(m_pKeys[i], IDB_ANALOG_SUB_Y, wxEmptyString, wxPoint(l + 526, t + 375), wxSize(21, 14), 0, wxDefaultValidator, wxEmptyString); | 
					
						
							|  |  |  |  | 		m_textSubX[i] = new wxStaticText(m_pKeys[i], IDT_ANALOG_SUB_X, wxT("X-axis"), wxPoint(l + 552, t + 321), wxDefaultSize, 0, wxT("X-axis")); | 
					
						
							|  |  |  |  | 		m_textSubY[i] = new wxStaticText(m_pKeys[i], IDT_ANALOG_SUB_Y, wxT("Y-axis"), wxPoint(l + 552, t + 358), wxDefaultSize, 0, wxT("Y-axis")); | 
					
						
							| 
									
										
										
										
											2008-12-08 05:25:12 +00:00
										 |  |  |  | 		 | 
					
						
							| 
									
										
										
										
											2008-12-26 02:42:15 +00:00
										 |  |  |  | 		// Start button
 | 
					
						
							|  |  |  |  | 		m_bJoyButtonStart[i] = new wxButton(m_pKeys[i], IDB_BUTTONSTART, wxEmptyString, wxPoint(l + 284, t + 365), wxSize(21, 14), 0, wxDefaultValidator, wxEmptyString); | 
					
						
							|  |  |  |  | 		m_JoyButtonStart[i] = new wxTextCtrl(m_pKeys[i], ID_BUTTONSTART, wxT("0"), wxPoint(l + 220, t + 363), wxSize(59, 19), wxTE_READONLY | wxTE_CENTRE, wxDefaultValidator, wxT("0")); | 
					
						
							| 
									
										
										
										
											2008-12-08 05:25:12 +00:00
										 |  |  |  | 		m_JoyButtonStart[i]->Enable(false); | 
					
						
							| 
									
										
										
										
											2008-12-26 02:42:15 +00:00
										 |  |  |  | 		 | 
					
						
							|  |  |  |  | 		// Website text
 | 
					
						
							|  |  |  |  | 		#ifdef _WIN32
 | 
					
						
							|  |  |  |  | 		m_textWebsite[i] = new wxStaticText(m_pKeys[i], IDT_WEBSITE, wxT("www.multigesture.net"), wxPoint(l + 400, t + 380), wxDefaultSize, 0, wxT("www.multigesture.net")); | 
					
						
							|  |  |  |  | 		#else
 | 
					
						
							|  |  |  |  | 		m_textWebsite[i] = new wxStaticText(m_Controller[i], IDT_WEBSITE, wxT("www.multigesture.net"), wxPoint(l + 480, t + 418), wxDefaultSize, 0, wxT("www.multigesture.net")); | 
					
						
							|  |  |  |  | 		#endif
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 		// --------------------------------------------------------------------
 | 
					
						
							|  |  |  |  | 		// Populate Controller sizer
 | 
					
						
							|  |  |  |  | 		// -----------------------------
 | 
					
						
							|  |  |  |  | 		// Groups
 | 
					
						
							|  |  |  |  | 		#ifdef _WIN32
 | 
					
						
							| 
									
										
										
										
											2008-12-27 11:32:03 +00:00
										 |  |  |  | 		m_Joyname[i] = new wxComboBox(m_Controller[i], IDC_JOYNAME, arrayStringFor_Joyname[0], wxDefaultPosition, wxSize(476, 21), arrayStringFor_Joyname, wxCB_READONLY); | 
					
						
							|  |  |  |  | 		m_Joyattach[i] = new wxCheckBox(m_Controller[i], IDC_JOYATTACH, wxT("Controller attached"), wxDefaultPosition, wxSize(109, 25)); | 
					
						
							| 
									
										
										
										
											2008-12-26 02:42:15 +00:00
										 |  |  |  | 		#else
 | 
					
						
							| 
									
										
										
										
											2008-12-27 11:32:03 +00:00
										 |  |  |  | 		m_Joyname[i] = new wxComboBox(m_Controller[i], IDC_JOYNAME, arrayStringFor_Joyname[0], wxDefaultPosition, wxSize(450, 25), arrayStringFor_Joyname, 0, wxDefaultValidator, wxT("m_Joyname")); | 
					
						
							| 
									
										
										
										
											2008-12-26 02:42:15 +00:00
										 |  |  |  | 		m_Joyattach[i] = new wxCheckBox(m_Controller[i], IDC_JOYATTACH, wxT("Controller attached"), wxDefaultPosition, wxSize(140, 25), 0, wxDefaultValidator, wxT("Controller attached")); | 
					
						
							|  |  |  |  | 		#endif
 | 
					
						
							| 
									
										
										
										
											2008-12-27 11:32:03 +00:00
										 |  |  |  | 		m_Joyattach[i]->SetToolTip(wxString::Format(wxT("Decide if Controller %i shall be detected by the game."), i + 1)); | 
					
						
							| 
									
										
										
										
											2008-12-26 02:42:15 +00:00
										 |  |  |  | 
 | 
					
						
							|  |  |  |  | 		m_gJoyname[i] = new wxStaticBoxSizer (wxHORIZONTAL, m_Controller[i], wxT("Controller:")); | 
					
						
							|  |  |  |  | 		m_gJoyname[i]->Add(m_Joyname[i], 0, (wxLEFT | wxRIGHT), 5); | 
					
						
							|  |  |  |  | 		m_gJoyname[i]->Add(m_Joyattach[i], 0, (wxRIGHT | wxLEFT | wxBOTTOM), 1); | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-12-28 18:50:24 +00:00
										 |  |  |  | 		m_Joyname[i]->SetToolTip(wxT("Save your settings and configure another joypad")); | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-01-20 05:28:30 +00:00
										 |  |  |  | 		////////////////////////////////////////////
 | 
					
						
							|  |  |  |  | 		// General settings
 | 
					
						
							|  |  |  |  | 		// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
 | 
					
						
							| 
									
										
										
										
											2008-12-27 11:32:03 +00:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-01-20 05:28:30 +00:00
										 |  |  |  | 		// General settings 1
 | 
					
						
							| 
									
										
										
										
											2008-12-26 02:42:15 +00:00
										 |  |  |  | 		m_JoyButtonHalfpress[i] = new wxTextCtrl(m_Controller[i], ID_BUTTONHALFPRESS, wxT("0"), wxDefaultPosition, wxSize(59, 19), wxTE_READONLY | wxTE_CENTRE, wxDefaultValidator, wxT("0")); | 
					
						
							| 
									
										
										
										
											2008-12-08 05:25:12 +00:00
										 |  |  |  | 		m_JoyButtonHalfpress[i]->Enable(false); | 
					
						
							| 
									
										
										
										
											2009-01-20 05:28:30 +00:00
										 |  |  |  | 		m_bJoyButtonHalfpress[i] = new wxButton(m_Controller[i], IDB_BUTTONHALFPRESS, wxEmptyString, wxDefaultPosition, wxSize(21, 14), 0, wxDefaultValidator, wxEmptyString); | 
					
						
							| 
									
										
										
										
											2008-12-08 05:25:12 +00:00
										 |  |  |  | 		#ifdef _WIN32
 | 
					
						
							| 
									
										
										
										
											2008-12-28 18:50:24 +00:00
										 |  |  |  | 		m_Deadzone[i] = new wxComboBox(m_Controller[i], IDC_DEADZONE, wxEmptyString, wxDefaultPosition, wxSize(59, 21), arrayStringFor_Deadzone, wxCB_READONLY, wxDefaultValidator, wxT("m_Deadzone")); | 
					
						
							| 
									
										
										
										
											2009-01-20 05:28:30 +00:00
										 |  |  |  | 		m_textDeadzone[i] = new wxStaticText(m_Controller[i], IDT_DEADZONE, wxT("Deadzone"));		 | 
					
						
							|  |  |  |  | 		m_textHalfpress[i] = new wxStaticText(m_Controller[i], IDT_BUTTONHALFPRESS, wxT("Half press")); | 
					
						
							| 
									
										
										
										
											2008-12-08 05:25:12 +00:00
										 |  |  |  | 		#else
 | 
					
						
							| 
									
										
										
										
											2008-12-28 18:50:24 +00:00
										 |  |  |  | 		m_Deadzone[i] = new wxComboBox(m_Controller[i], IDC_DEADZONE, wxEmptyString, wxPoint(167, 398), wxSize(80, 25), arrayStringFor_Deadzone, wxCB_READONLY, wxDefaultValidator, wxT("m_Deadzone")); | 
					
						
							| 
									
										
										
										
											2008-12-08 05:25:12 +00:00
										 |  |  |  | 		m_textDeadzone[i] = new wxStaticText(m_Controller[i], IDT_DEADZONE, wxT("Deadzone"), wxPoint(105, 404), wxDefaultSize, 0, wxT("Deadzone"));		 | 
					
						
							|  |  |  |  | 		m_textHalfpress[i] = new wxStaticText(m_Controller[i], IDT_BUTTONHALFPRESS, wxT("Half press"), wxPoint(105, 428), wxDefaultSize, 0, wxT("Half press")); | 
					
						
							| 
									
										
										
										
											2008-12-26 02:42:15 +00:00
										 |  |  |  | 		#endif
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-01-20 05:28:30 +00:00
										 |  |  |  | 		// Populate general settings 1		
 | 
					
						
							| 
									
										
										
										
											2008-12-26 02:42:15 +00:00
										 |  |  |  | 		m_gExtrasettings[i] = new wxStaticBoxSizer( wxVERTICAL, m_Controller[i], wxT("Extra settings")); | 
					
						
							| 
									
										
										
										
											2009-01-20 05:28:30 +00:00
										 |  |  |  | 		m_gGBExtrasettings[i] = new wxGridBagSizer(0, 0); | 
					
						
							|  |  |  |  | 		m_gGBExtrasettings[i]->Add(m_textDeadzone[i], wxGBPosition(0, 0), wxGBSpan(1, 1), (wxRIGHT | wxTOP), 3); | 
					
						
							| 
									
										
										
										
											2008-12-26 02:42:15 +00:00
										 |  |  |  | 		m_gGBExtrasettings[i]->Add(m_Deadzone[i], wxGBPosition(0, 1), wxGBSpan(1, 1), (wxBOTTOM), 2); | 
					
						
							| 
									
										
										
										
											2009-01-20 05:28:30 +00:00
										 |  |  |  | 		m_gGBExtrasettings[i]->Add(m_textHalfpress[i], wxGBPosition(1, 0), wxGBSpan(1, 1), (wxRIGHT | wxTOP), 3); | 
					
						
							|  |  |  |  | 		m_gGBExtrasettings[i]->Add(m_JoyButtonHalfpress[i], wxGBPosition(1, 1), wxGBSpan(1, 1), (wxALL), 0); | 
					
						
							| 
									
										
										
										
											2008-12-26 02:42:15 +00:00
										 |  |  |  | 		m_gGBExtrasettings[i]->Add(m_bJoyButtonHalfpress[i], wxGBPosition(1, 2), wxGBSpan(1, 1), (wxLEFT | wxTOP), 2); | 
					
						
							|  |  |  |  | 		m_gExtrasettings[i]->Add(m_gGBExtrasettings[i], 0, wxEXPAND | wxALL, 3); | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-01-20 05:28:30 +00:00
										 |  |  |  | 		// Create general settings 2 (controller typ)
 | 
					
						
							|  |  |  |  | 		m_TSControltype[i] = new wxStaticText(m_Controller[i], IDT_DPADTYPE, wxT("D-Pad"));		 | 
					
						
							|  |  |  |  | 		m_TSTriggerType[i] = new wxStaticText(m_Controller[i], IDT_TRIGGERTYPE, wxT("Trigger")); | 
					
						
							|  |  |  |  | 		m_ControlType[i] = new wxComboBox(m_Controller[i], IDC_CONTROLTYPE, wxAS_DPadType[0], wxDefaultPosition, wxDefaultSize, wxAS_DPadType, wxCB_READONLY); | 
					
						
							|  |  |  |  | 		m_TriggerType[i] = new wxComboBox(m_Controller[i], IDC_TRIGGERTYPE, wxAS_TriggerType[0], wxDefaultPosition, wxDefaultSize, wxAS_TriggerType, wxCB_READONLY); | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 		// Populate general settings 2 (controller typ)
 | 
					
						
							| 
									
										
										
										
											2009-01-20 10:37:48 +00:00
										 |  |  |  | 		m_gGenSettings[i] = new wxStaticBoxSizer( wxVERTICAL, m_Controller[i], wxT("D-Pad and Trigger")); | 
					
						
							| 
									
										
										
										
											2009-01-20 05:28:30 +00:00
										 |  |  |  | 		m_gGBGenSettings[i] = new wxGridBagSizer(0, 0); | 
					
						
							|  |  |  |  | 		m_gGBGenSettings[i]->Add(m_TSControltype[i], wxGBPosition(0, 0), wxGBSpan(1, 1), (wxTOP), 4); | 
					
						
							|  |  |  |  | 		m_gGBGenSettings[i]->Add(m_ControlType[i], wxGBPosition(0, 1), wxGBSpan(1, 1), (wxBOTTOM | wxLEFT), 2); | 
					
						
							|  |  |  |  | 		m_gGBGenSettings[i]->Add(m_TSTriggerType[i], wxGBPosition(1, 0), wxGBSpan(1, 1), (wxTOP), 4); | 
					
						
							|  |  |  |  | 		m_gGBGenSettings[i]->Add(m_TriggerType[i], wxGBPosition(1, 1), wxGBSpan(1, 1), (wxLEFT), 2); | 
					
						
							|  |  |  |  | 		m_gGenSettings[i]->Add(m_gGBGenSettings[i], 0, wxEXPAND | wxALL, 3);		 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 		// Create objects for general settings 3
 | 
					
						
							|  |  |  |  | 		m_gGenSettingsID[i] = new wxStaticBoxSizer( wxVERTICAL, m_Controller[i], wxT("Settings") ); | 
					
						
							| 
									
										
										
										
											2008-12-27 11:32:03 +00:00
										 |  |  |  | 		m_CBSaveByID[i] = new wxCheckBox(m_Controller[i], IDC_SAVEBYID, wxT("Save by ID"), wxDefaultPosition, wxDefaultSize, 0, wxDefaultValidator); | 
					
						
							|  |  |  |  | 		m_CBShowAdvanced[i] = new wxCheckBox(m_Controller[i], IDC_SHOWADVANCED, wxT("Show advanced settings"), wxDefaultPosition, wxDefaultSize, 0, wxDefaultValidator); | 
					
						
							| 
									
										
										
										
											2009-02-03 10:17:01 +00:00
										 |  |  |  | 		m_CBCheckFocus[i] = new wxCheckBox(m_Controller[i], IDC_CHECKFOCUS, wxT("Allow out of focus input"), wxDefaultPosition, wxDefaultSize, 0, wxDefaultValidator); | 
					
						
							| 
									
										
										
										
											2008-12-28 18:50:24 +00:00
										 |  |  |  | 		 | 
					
						
							| 
									
										
										
										
											2009-01-20 05:28:30 +00:00
										 |  |  |  | 		// Populate general settings 3
 | 
					
						
							| 
									
										
										
										
											2009-01-21 18:09:31 +00:00
										 |  |  |  | 		m_gGenSettingsID[i]->Add(m_CBSaveByID[i], 0, wxEXPAND | wxALL, 3); | 
					
						
							| 
									
										
										
										
											2009-01-20 05:28:30 +00:00
										 |  |  |  | 		m_gGenSettingsID[i]->Add(m_CBShowAdvanced[i], 0, wxEXPAND | wxALL, 3); | 
					
						
							| 
									
										
										
										
											2009-02-03 06:21:22 +00:00
										 |  |  |  | 		m_gGenSettingsID[i]->Add(m_CBCheckFocus[i], 0, wxEXPAND | wxALL, 3); | 
					
						
							| 
									
										
										
										
											2008-12-28 18:50:24 +00:00
										 |  |  |  | 		 | 
					
						
							| 
									
										
										
										
											2009-01-20 10:37:48 +00:00
										 |  |  |  | 		// Create tooltips	
 | 
					
						
							| 
									
										
										
										
											2009-01-20 05:28:30 +00:00
										 |  |  |  | 		m_ControlType[i]->SetToolTip(wxT( | 
					
						
							|  |  |  |  | 			"Use a 'hat' on your gamepad or configure a custom button for each direction." | 
					
						
							| 
									
										
										
										
											2009-01-20 10:37:48 +00:00
										 |  |  |  | 			)); | 
					
						
							| 
									
										
										
										
											2009-01-20 05:28:30 +00:00
										 |  |  |  | 		m_TriggerType[i]->SetToolTip(wxT( | 
					
						
							| 
									
										
										
										
											2009-01-20 14:25:33 +00:00
										 |  |  |  | 			"Select XInput if you want the triggers to work with the XBox 360 pad." | 
					
						
							| 
									
										
										
										
											2009-01-20 10:37:48 +00:00
										 |  |  |  | 			)); | 
					
						
							| 
									
										
										
										
											2008-12-27 11:32:03 +00:00
										 |  |  |  | 		m_CBSaveByID[i]->SetToolTip(wxString::Format(wxT( | 
					
						
							|  |  |  |  | 			"Map these settings to the selected controller device instead of to the" | 
					
						
							| 
									
										
										
										
											2009-01-21 18:09:31 +00:00
										 |  |  |  | 			"\nselected slot (1, 2, 3 or 4). This may be a more convenient way" | 
					
						
							| 
									
										
										
										
											2008-12-27 11:32:03 +00:00
										 |  |  |  | 			"\nto save your settings if you have multiple controllers.") | 
					
						
							|  |  |  |  | 			, i+1 | 
					
						
							| 
									
										
										
										
											2009-01-21 18:09:31 +00:00
										 |  |  |  | 			));	 | 
					
						
							| 
									
										
										
										
											2009-02-03 10:17:01 +00:00
										 |  |  |  | 		m_CBCheckFocus[i]->SetToolTip(wxT( | 
					
						
							| 
									
										
										
										
											2009-02-03 10:25:45 +00:00
										 |  |  |  | 			"Allow gamepad input even when Dolphin is not in focus. Out of focus keyboard input is never allowed."));	 | 
					
						
							| 
									
										
										
										
											2008-12-27 11:32:03 +00:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-12-26 02:42:15 +00:00
										 |  |  |  | 		// Populate settings
 | 
					
						
							|  |  |  |  | 		m_sSettings[i] = new wxBoxSizer ( wxHORIZONTAL ); | 
					
						
							|  |  |  |  | 		m_sSettings[i]->Add(m_gExtrasettings[i], 0, wxEXPAND | wxALL, 0); | 
					
						
							| 
									
										
										
										
											2009-01-15 06:48:15 +00:00
										 |  |  |  | 		m_sSettings[i]->Add(m_gGenSettings[i], 0, wxEXPAND | wxLEFT, 5); | 
					
						
							| 
									
										
										
										
											2009-01-20 05:28:30 +00:00
										 |  |  |  | 		m_sSettings[i]->Add(m_gGenSettingsID[i], 0, wxEXPAND | wxLEFT, 5); | 
					
						
							|  |  |  |  | 		// -------------------------
 | 
					
						
							| 
									
										
										
										
											2008-12-27 11:32:03 +00:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-01-20 05:28:30 +00:00
										 |  |  |  | 		//////////////////////////// General settings
 | 
					
						
							| 
									
										
										
										
											2008-12-27 11:32:03 +00:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-01-20 05:28:30 +00:00
										 |  |  |  | 
 | 
					
						
							|  |  |  |  | 		////////////////////////////////////////////
 | 
					
						
							|  |  |  |  | 		// Advanced settings
 | 
					
						
							| 
									
										
										
										
											2008-12-27 11:32:03 +00:00
										 |  |  |  | 		// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-02-09 13:10:29 +00:00
										 |  |  |  | 		// Input status controls
 | 
					
						
							| 
									
										
										
										
											2008-12-27 11:32:03 +00:00
										 |  |  |  | 		 | 
					
						
							|  |  |  |  | 		// Input status text
 | 
					
						
							|  |  |  |  | 		CreateAdvancedControls(i); | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-02-09 13:10:29 +00:00
										 |  |  |  | 		// Sizers
 | 
					
						
							|  |  |  |  | 		m_GBAdvancedMainStick[i] = new wxGridBagSizer(0, 0); | 
					
						
							| 
									
										
										
										
											2008-12-27 11:32:03 +00:00
										 |  |  |  | 		m_GBAdvancedMainStick[i]->Add(m_pInStatus[i], wxGBPosition(0, 0), wxGBSpan(1, 1), wxALL, 0); | 
					
						
							|  |  |  |  | 		m_GBAdvancedMainStick[i]->Add(m_pOutStatus[i], wxGBPosition(0, 1), wxGBSpan(1, 1), wxLEFT, 5); | 
					
						
							|  |  |  |  | 		m_GBAdvancedMainStick[i]->Add(m_TStatusIn[i], wxGBPosition(1, 0), wxGBSpan(1, 1), wxALL, 0); | 
					
						
							|  |  |  |  | 		m_GBAdvancedMainStick[i]->Add(m_TStatusOut[i], wxGBPosition(1, 1), wxGBSpan(1, 1), wxLEFT, 5); | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 		m_gStatusIn[i]->Add(m_GBAdvancedMainStick[i], 0, wxLEFT, 5); | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 		// Populate input status settings
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 		// The label
 | 
					
						
							|  |  |  |  | 		m_STDiagonal[i] = new wxStaticText(m_Controller[i], IDT_MAINSTICK_DIAGONAL, wxT("Diagonal")); | 
					
						
							|  |  |  |  | 		m_STDiagonal[i]->SetToolTip(wxT( | 
					
						
							|  |  |  |  | 			"To produce a smooth circle in the 'Out' window you have to manually set" | 
					
						
							|  |  |  |  | 			"\nyour diagonal values here from the 'In' window." | 
					
						
							|  |  |  |  | 			)); | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 		// The drop down menu
 | 
					
						
							|  |  |  |  | 		m_gStatusInSettings[i] = new wxStaticBoxSizer( wxVERTICAL, m_Controller[i], wxT("Main-stick settings")); | 
					
						
							|  |  |  |  | 		m_gStatusInSettingsH[i] = new wxBoxSizer(wxHORIZONTAL); | 
					
						
							|  |  |  |  | 		wxArrayString asStatusInSet; | 
					
						
							|  |  |  |  | 			asStatusInSet.Add(wxT("100%")); | 
					
						
							|  |  |  |  | 			asStatusInSet.Add(wxT("95%")); | 
					
						
							|  |  |  |  | 			asStatusInSet.Add(wxT("90%")); | 
					
						
							|  |  |  |  | 			asStatusInSet.Add(wxT("85%")); | 
					
						
							|  |  |  |  | 		m_CoBDiagonal[i] = new wxComboBox(m_Controller[i], IDCB_MAINSTICK_DIAGONAL, asStatusInSet[0], wxDefaultPosition, wxDefaultSize, asStatusInSet, wxCB_READONLY); | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 		// The checkbox
 | 
					
						
							|  |  |  |  | 		m_CBS_to_C[i] = new wxCheckBox(m_Controller[i], IDCB_MAINSTICK_S_TO_C, wxT("Square-to-circle")); | 
					
						
							| 
									
										
										
										
											2009-01-20 10:37:48 +00:00
										 |  |  |  | 		m_CBS_to_C[i]->SetToolTip(wxT( | 
					
						
							|  |  |  |  | 			"This will convert a square stick radius to a circle stick radius like the one that the actual GameCube pad produce." | 
					
						
							|  |  |  |  | 			" That is also the input the games expect to see." | 
					
						
							|  |  |  |  | 			)); | 
					
						
							| 
									
										
										
										
											2009-02-09 18:43:03 +00:00
										 |  |  |  | 		AdvancedMapFilter[i] = new wxCheckBox(m_Controller[i],IDFILTER_SETTINGS,_("Advanced Controller filtering")); | 
					
						
							| 
									
										
										
										
											2008-12-27 11:32:03 +00:00
										 |  |  |  | 
 | 
					
						
							|  |  |  |  | 		m_gStatusInSettings[i]->Add(m_CBS_to_C[i], 0, (wxALL), 4); | 
					
						
							| 
									
										
										
										
											2009-02-09 18:43:03 +00:00
										 |  |  |  | 		m_gStatusInSettings[i]->Add(AdvancedMapFilter[i],0,(wxALL),4); | 
					
						
							| 
									
										
										
										
											2008-12-27 11:32:03 +00:00
										 |  |  |  | 		m_gStatusInSettings[i]->Add(m_gStatusInSettingsH[i], 0, (wxLEFT | wxRIGHT | wxBOTTOM), 4);		 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 		m_gStatusInSettingsH[i]->Add(m_STDiagonal[i], 0, wxTOP, 3); | 
					
						
							|  |  |  |  | 		m_gStatusInSettingsH[i]->Add(m_CoBDiagonal[i], 0, wxLEFT, 3); | 
					
						
							| 
									
										
										
										
											2009-01-20 05:28:30 +00:00
										 |  |  |  | 
 | 
					
						
							|  |  |  |  | 		// The trigger values
 | 
					
						
							|  |  |  |  | 		m_gStatusTriggers[i] = new wxStaticBoxSizer( wxVERTICAL, m_Controller[i], wxT("Trigger values")); | 
					
						
							|  |  |  |  | 		m_TStatusTriggers[i] = new wxStaticText(m_Controller[i], IDT_TRIGGERS, wxT("Left:  Right:")); | 
					
						
							|  |  |  |  | 		m_gStatusTriggers[i]->Add(m_TStatusTriggers[i], 0, (wxALL), 4); | 
					
						
							|  |  |  |  | 		////////////////////////// Advanced settings		
 | 
					
						
							| 
									
										
										
										
											2008-12-08 05:25:12 +00:00
										 |  |  |  | 		 | 
					
						
							| 
									
										
										
										
											2008-12-26 02:42:15 +00:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-12-27 11:32:03 +00:00
										 |  |  |  | 		//////////////////////////////////////
 | 
					
						
							|  |  |  |  | 		// Populate sizers
 | 
					
						
							|  |  |  |  | 		// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 		// --------------------------------------------------------------------
 | 
					
						
							|  |  |  |  | 		// Populate main left sizer
 | 
					
						
							|  |  |  |  | 		// -----------------------------
 | 
					
						
							|  |  |  |  | 		m_sMainLeft[i] = new wxBoxSizer(wxVERTICAL); | 
					
						
							|  |  |  |  | 		m_sMainLeft[i]->Add(m_gJoyname[i], 0, wxEXPAND | (wxALL), 5); | 
					
						
							|  |  |  |  | 		m_sMainLeft[i]->Add(m_sKeys[i], 1, wxEXPAND | (wxLEFT | wxRIGHT), 5); | 
					
						
							|  |  |  |  | 		m_sMainLeft[i]->Add(m_sSettings[i], 0, wxEXPAND | (wxALL), 5); | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 		// --------------------------------------------------------------------
 | 
					
						
							|  |  |  |  | 		// Populate main right sizer
 | 
					
						
							|  |  |  |  | 		// -----------------------------
 | 
					
						
							|  |  |  |  | 		m_sMainRight[i] = new wxBoxSizer(wxVERTICAL); | 
					
						
							|  |  |  |  | 		m_sMainRight[i]->Add(m_gStatusIn[i], 0, wxEXPAND | (wxLEFT), 2); | 
					
						
							|  |  |  |  | 		m_sMainRight[i]->Add(m_gStatusInSettings[i], 0, wxEXPAND | (wxLEFT | wxTOP), 2); | 
					
						
							| 
									
										
										
										
											2009-01-20 05:28:30 +00:00
										 |  |  |  | 		m_sMainRight[i]->Add(m_gStatusTriggers[i], 0, wxEXPAND | (wxLEFT | wxTOP), 2); | 
					
						
							| 
									
										
										
										
											2008-12-27 11:32:03 +00:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-12-26 02:42:15 +00:00
										 |  |  |  | 		// --------------------------------------------------------------------
 | 
					
						
							|  |  |  |  | 		// Populate main sizer
 | 
					
						
							|  |  |  |  | 		// -----------------------------
 | 
					
						
							| 
									
										
										
										
											2008-12-27 11:32:03 +00:00
										 |  |  |  | 		m_sMain[i] = new wxBoxSizer(wxHORIZONTAL); | 
					
						
							|  |  |  |  | 		m_sMain[i]->Add(m_sMainLeft[i], 0, wxEXPAND | (wxALL), 0); | 
					
						
							|  |  |  |  | 		m_sMain[i]->Add(m_sMainRight[i], 0, wxEXPAND | (wxRIGHT | wxTOP), 5); | 
					
						
							| 
									
										
										
										
											2008-12-26 02:42:15 +00:00
										 |  |  |  | 		m_Controller[i]->SetSizer(m_sMain[i]); // Set the main sizer
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-12-27 11:32:03 +00:00
										 |  |  |  | 		// Show or hide it. We have to do this after we add it to its sizer
 | 
					
						
							|  |  |  |  | 		m_sMainRight[i]->Show(g_Config.bShowAdvanced); | 
					
						
							| 
									
										
										
										
											2008-12-26 02:42:15 +00:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-12-27 11:32:03 +00:00
										 |  |  |  | 		// Don't allow these changes when running
 | 
					
						
							| 
									
										
										
										
											2009-02-08 15:39:28 +00:00
										 |  |  |  | 		if(g_EmulatorRunning) | 
					
						
							| 
									
										
										
										
											2008-12-08 05:25:12 +00:00
										 |  |  |  | 		{ | 
					
						
							|  |  |  |  | 			m_Joyname[i]->Enable(false); | 
					
						
							|  |  |  |  | 			m_Joyattach[i]->Enable(false); | 
					
						
							| 
									
										
										
										
											2009-01-20 05:28:30 +00:00
										 |  |  |  | 			m_ControlType[i]->Enable(false);			 | 
					
						
							| 
									
										
										
										
											2008-12-08 05:25:12 +00:00
										 |  |  |  | 		} | 
					
						
							| 
									
										
										
										
											2009-01-19 05:49:25 +00:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-12-27 11:32:03 +00:00
										 |  |  |  | 		// Update GUI
 | 
					
						
							| 
									
										
										
										
											2009-01-19 05:49:25 +00:00
										 |  |  |  | 		UpdateGUI(i); | 
					
						
							| 
									
										
										
										
											2008-12-26 02:42:15 +00:00
										 |  |  |  | 	} // end of loop
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-01-15 06:48:15 +00:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-12-26 02:42:15 +00:00
										 |  |  |  | 	// --------------------------------------------------------------------
 | 
					
						
							|  |  |  |  | 	// Populate buttons sizer.
 | 
					
						
							|  |  |  |  | 	// -----------------------------
 | 
					
						
							|  |  |  |  | 	wxBoxSizer * m_sButtons = new wxBoxSizer(wxHORIZONTAL); | 
					
						
							|  |  |  |  | 	m_sButtons->Add(m_About, 0, (wxBOTTOM), 0); | 
					
						
							|  |  |  |  | 	m_sButtons->AddStretchSpacer(1); | 
					
						
							|  |  |  |  | 	m_sButtons->Add(m_OK, 0, wxALIGN_RIGHT | (wxBOTTOM), 0); | 
					
						
							|  |  |  |  | 	m_sButtons->Add(m_Cancel, 0, wxALIGN_RIGHT | (wxLEFT), 5); | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 	// --------------------------------------------------------------------
 | 
					
						
							|  |  |  |  | 	// Populate master sizer.
 | 
					
						
							|  |  |  |  | 	// -----------------------------
 | 
					
						
							| 
									
										
										
										
											2008-12-27 11:32:03 +00:00
										 |  |  |  | 	m_MainSizer = new wxBoxSizer(wxVERTICAL); | 
					
						
							| 
									
										
										
										
											2008-12-26 02:42:15 +00:00
										 |  |  |  | 	m_MainSizer->Add(m_Notebook, 0, wxEXPAND | wxALL, 5); | 
					
						
							|  |  |  |  | 	m_MainSizer->Add(m_sButtons, 1, wxEXPAND | ( wxLEFT | wxRIGHT | wxBOTTOM), 5); | 
					
						
							|  |  |  |  | 	this->SetSizer(m_MainSizer); | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-12-27 11:32:03 +00:00
										 |  |  |  | 	// --------------------------------------------------------------------
 | 
					
						
							|  |  |  |  | 	// Debugging
 | 
					
						
							|  |  |  |  | 	// -----------------------------
 | 
					
						
							| 
									
										
										
										
											2009-02-09 13:10:29 +00:00
										 |  |  |  | 	#ifdef SHOW_PAD_STATUS
 | 
					
						
							|  |  |  |  | 		m_pStatusBar = new wxStaticText(this, IDT_DEBUGGING, wxT("Debugging"), wxPoint(135, 100), wxDefaultSize); | 
					
						
							|  |  |  |  | 	#endif
 | 
					
						
							| 
									
										
										
										
											2009-01-21 18:09:31 +00:00
										 |  |  |  | 	//m_pStatusBar2 = new wxStaticText(this, IDT_DEBUGGING2, wxT("Debugging2"), wxPoint(125, 200), wxDefaultSize);
 | 
					
						
							| 
									
										
										
										
											2009-01-24 22:13:53 +00:00
										 |  |  |  | 	//m_pStatusBar->SetLabel(wxString::Format("Debugging text"));
 | 
					
						
							| 
									
										
										
										
											2009-01-22 19:53:16 +00:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-01-24 22:17:51 +00:00
										 |  |  |  | 	/*m_TCDebugging = new wxTextCtrl(this, IDT_DEBUGGING3, _T(""), wxDefaultPosition, wxSize(400, 400),
 | 
					
						
							| 
									
										
										
										
											2009-01-21 18:09:31 +00:00
										 |  |  |  | 		wxTE_RICH | wxTE_MULTILINE | wxTE_DONTWRAP | wxNO_BORDER); | 
					
						
							|  |  |  |  | 	wxBoxSizer * m_LogSizer = new wxBoxSizer(wxVERTICAL); | 
					
						
							|  |  |  |  | 	m_LogSizer->Add(m_TCDebugging, 0, wxEXPAND | (wxALL), 0); | 
					
						
							| 
									
										
										
										
											2009-01-24 22:17:51 +00:00
										 |  |  |  | 	m_MainSizer->Add(m_LogSizer, 0, wxEXPAND | ( wxLEFT | wxRIGHT | wxBOTTOM), 5);*/ | 
					
						
							| 
									
										
										
										
											2008-12-27 11:32:03 +00:00
										 |  |  |  | 
 | 
					
						
							|  |  |  |  | 	// --------------------------------------------------------------------
 | 
					
						
							| 
									
										
										
										
											2008-12-26 02:42:15 +00:00
										 |  |  |  | 	// Set window size
 | 
					
						
							| 
									
										
										
										
											2008-12-27 11:32:03 +00:00
										 |  |  |  | 	// -----------------------------
 | 
					
						
							|  |  |  |  | 	SizeWindow(); | 
					
						
							| 
									
										
										
										
											2008-12-26 02:42:15 +00:00
										 |  |  |  | 	Center(); | 
					
						
							| 
									
										
										
										
											2009-01-21 18:09:31 +00:00
										 |  |  |  | 
 | 
					
						
							|  |  |  |  | 	// All done
 | 
					
						
							|  |  |  |  | 	ControlsCreated = true; | 
					
						
							| 
									
										
										
										
											2009-01-24 22:13:53 +00:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-01-25 18:20:16 +00:00
										 |  |  |  | 	// Replace the harder to understand -1 with "" for the sake of user friendliness
 | 
					
						
							|  |  |  |  | 	ToBlank(); | 
					
						
							| 
									
										
										
										
											2008-12-08 05:25:12 +00:00
										 |  |  |  | } | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-12-27 11:32:03 +00:00
										 |  |  |  | void ConfigBox::SizeWindow() | 
					
						
							| 
									
										
										
										
											2008-12-08 05:25:12 +00:00
										 |  |  |  | { | 
					
						
							| 
									
										
										
										
											2008-12-27 11:32:03 +00:00
										 |  |  |  | 	SetClientSize(m_MainSizer->GetMinSize().GetWidth(), m_MainSizer->GetMinSize().GetHeight()); | 
					
						
							| 
									
										
										
										
											2008-12-08 05:25:12 +00:00
										 |  |  |  | } |