Fix a problem in the old wiimote plugin in which a bitmap could be created with size 0x0. This fails an assertion in wxWidgets. wxWidgets complains about it in the debug build.

Also cleaned that file up.  That is probably an exercise in futility though.


git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@6086 8ced0084-cf51-0410-be5f-012b33b47a6e
This commit is contained in:
Glenn Rice 2010-08-11 02:28:40 +00:00
parent 1afcf4cc69
commit 97f894ffbd
2 changed files with 430 additions and 390 deletions

View File

@ -24,7 +24,7 @@
#include "Config.h" #include "Config.h"
#include "EmuDefinitions.h" // for joyinfo #include "EmuDefinitions.h" // for joyinfo
BEGIN_EVENT_TABLE(WiimotePadConfigDialog,wxDialog) BEGIN_EVENT_TABLE(WiimotePadConfigDialog, wxDialog)
EVT_CLOSE(WiimotePadConfigDialog::OnClose) EVT_CLOSE(WiimotePadConfigDialog::OnClose)
EVT_BUTTON(wxID_CLOSE, WiimotePadConfigDialog::CloseClick) EVT_BUTTON(wxID_CLOSE, WiimotePadConfigDialog::CloseClick)
@ -57,37 +57,72 @@ BEGIN_EVENT_TABLE(WiimotePadConfigDialog,wxDialog)
EVT_CHOICE(IDC_GH3_ANALOG, WiimotePadConfigDialog::GeneralSettingsChanged) EVT_CHOICE(IDC_GH3_ANALOG, WiimotePadConfigDialog::GeneralSettingsChanged)
// Analog // Analog
EVT_BUTTON(IDB_ANALOG_LEFT_X, WiimotePadConfigDialog::OnAxisClick) EVT_BUTTON(IDB_ANALOG_LEFT_Y, WiimotePadConfigDialog::OnAxisClick) EVT_BUTTON(IDB_ANALOG_LEFT_X, WiimotePadConfigDialog::OnAxisClick)
EVT_BUTTON(IDB_ANALOG_RIGHT_X, WiimotePadConfigDialog::OnAxisClick) EVT_BUTTON(IDB_ANALOG_RIGHT_Y, WiimotePadConfigDialog::OnAxisClick) EVT_BUTTON(IDB_ANALOG_LEFT_Y, WiimotePadConfigDialog::OnAxisClick)
EVT_BUTTON(IDB_TRIGGER_L, WiimotePadConfigDialog::OnAxisClick) EVT_BUTTON(IDB_TRIGGER_R, WiimotePadConfigDialog::OnAxisClick) EVT_BUTTON(IDB_ANALOG_RIGHT_X, WiimotePadConfigDialog::OnAxisClick)
EVT_BUTTON(IDB_ANALOG_RIGHT_Y, WiimotePadConfigDialog::OnAxisClick)
EVT_BUTTON(IDB_TRIGGER_L, WiimotePadConfigDialog::OnAxisClick)
EVT_BUTTON(IDB_TRIGGER_R, WiimotePadConfigDialog::OnAxisClick)
// Wiimote // Wiimote
EVT_BUTTON(IDB_WM_A, WiimotePadConfigDialog::OnButtonClick) EVT_BUTTON(IDB_WM_B, WiimotePadConfigDialog::OnButtonClick) EVT_BUTTON(IDB_WM_A, WiimotePadConfigDialog::OnButtonClick)
EVT_BUTTON(IDB_WM_1, WiimotePadConfigDialog::OnButtonClick) EVT_BUTTON(IDB_WM_2, WiimotePadConfigDialog::OnButtonClick) EVT_BUTTON(IDB_WM_B, WiimotePadConfigDialog::OnButtonClick)
EVT_BUTTON(IDB_WM_P, WiimotePadConfigDialog::OnButtonClick) EVT_BUTTON(IDB_WM_M, WiimotePadConfigDialog::OnButtonClick) EVT_BUTTON(IDB_WM_1, WiimotePadConfigDialog::OnButtonClick)
EVT_BUTTON(IDB_WM_2, WiimotePadConfigDialog::OnButtonClick)
EVT_BUTTON(IDB_WM_P, WiimotePadConfigDialog::OnButtonClick)
EVT_BUTTON(IDB_WM_M, WiimotePadConfigDialog::OnButtonClick)
EVT_BUTTON(IDB_WM_H, WiimotePadConfigDialog::OnButtonClick) EVT_BUTTON(IDB_WM_H, WiimotePadConfigDialog::OnButtonClick)
EVT_BUTTON(IDB_WM_L, WiimotePadConfigDialog::OnButtonClick) EVT_BUTTON(IDB_WM_R, WiimotePadConfigDialog::OnButtonClick) EVT_BUTTON(IDB_WM_L, WiimotePadConfigDialog::OnButtonClick)
EVT_BUTTON(IDB_WM_U, WiimotePadConfigDialog::OnButtonClick) EVT_BUTTON(IDB_WM_D, WiimotePadConfigDialog::OnButtonClick) EVT_BUTTON(IDB_WM_R, WiimotePadConfigDialog::OnButtonClick)
EVT_BUTTON(IDB_WM_ROLL_L, WiimotePadConfigDialog::OnButtonClick) EVT_BUTTON(IDB_WM_ROLL_R, WiimotePadConfigDialog::OnButtonClick) EVT_BUTTON(IDB_WM_U, WiimotePadConfigDialog::OnButtonClick)
EVT_BUTTON(IDB_WM_PITCH_U, WiimotePadConfigDialog::OnButtonClick) EVT_BUTTON(IDB_WM_PITCH_D, WiimotePadConfigDialog::OnButtonClick) EVT_BUTTON(IDB_WM_D, WiimotePadConfigDialog::OnButtonClick)
EVT_BUTTON(IDB_WM_ROLL_L, WiimotePadConfigDialog::OnButtonClick)
EVT_BUTTON(IDB_WM_ROLL_R, WiimotePadConfigDialog::OnButtonClick)
EVT_BUTTON(IDB_WM_PITCH_U, WiimotePadConfigDialog::OnButtonClick)
EVT_BUTTON(IDB_WM_PITCH_D, WiimotePadConfigDialog::OnButtonClick)
EVT_BUTTON(IDB_WM_SHAKE, WiimotePadConfigDialog::OnButtonClick) EVT_BUTTON(IDB_WM_SHAKE, WiimotePadConfigDialog::OnButtonClick)
// Nunchuck // Nunchuck
EVT_BUTTON(IDB_NC_Z, WiimotePadConfigDialog::OnButtonClick) EVT_BUTTON(IDB_NC_C, WiimotePadConfigDialog::OnButtonClick) EVT_BUTTON(IDB_NC_Z, WiimotePadConfigDialog::OnButtonClick)
EVT_BUTTON(IDB_NC_L, WiimotePadConfigDialog::OnButtonClick) EVT_BUTTON(IDB_NC_R, WiimotePadConfigDialog::OnButtonClick) EVT_BUTTON(IDB_NC_C, WiimotePadConfigDialog::OnButtonClick)
EVT_BUTTON(IDB_NC_U, WiimotePadConfigDialog::OnButtonClick) EVT_BUTTON(IDB_NC_D, WiimotePadConfigDialog::OnButtonClick) EVT_BUTTON(IDB_NC_L, WiimotePadConfigDialog::OnButtonClick)
EVT_BUTTON(IDB_NC_ROLL_L, WiimotePadConfigDialog::OnButtonClick) EVT_BUTTON(IDB_NC_ROLL_R, WiimotePadConfigDialog::OnButtonClick) EVT_BUTTON(IDB_NC_R, WiimotePadConfigDialog::OnButtonClick)
EVT_BUTTON(IDB_NC_PITCH_U, WiimotePadConfigDialog::OnButtonClick) EVT_BUTTON(IDB_NC_PITCH_D, WiimotePadConfigDialog::OnButtonClick) EVT_BUTTON(IDB_NC_U, WiimotePadConfigDialog::OnButtonClick)
EVT_BUTTON(IDB_NC_SHAKE, WiimotePadConfigDialog::OnButtonClick) EVT_BUTTON(IDB_NC_D, WiimotePadConfigDialog::OnButtonClick)
EVT_BUTTON(IDB_NC_ROLL_L, WiimotePadConfigDialog::OnButtonClick)
EVT_BUTTON(IDB_NC_ROLL_R, WiimotePadConfigDialog::OnButtonClick)
EVT_BUTTON(IDB_NC_PITCH_U, WiimotePadConfigDialog::OnButtonClick)
EVT_BUTTON(IDB_NC_PITCH_D, WiimotePadConfigDialog::OnButtonClick)
EVT_BUTTON(IDB_NC_SHAKE, WiimotePadConfigDialog::OnButtonClick)
// Classic Controller // Classic Controller
EVT_BUTTON(IDB_CC_A, WiimotePadConfigDialog::OnButtonClick) EVT_BUTTON(IDB_CC_B, WiimotePadConfigDialog::OnButtonClick) EVT_BUTTON(IDB_CC_X, WiimotePadConfigDialog::OnButtonClick) EVT_BUTTON(IDB_CC_Y, WiimotePadConfigDialog::OnButtonClick) EVT_BUTTON(IDB_CC_A, WiimotePadConfigDialog::OnButtonClick)
EVT_BUTTON(IDB_CC_P, WiimotePadConfigDialog::OnButtonClick) EVT_BUTTON(IDB_CC_M, WiimotePadConfigDialog::OnButtonClick) EVT_BUTTON(IDB_CC_H, WiimotePadConfigDialog::OnButtonClick) EVT_BUTTON(IDB_CC_B, WiimotePadConfigDialog::OnButtonClick)
EVT_BUTTON(IDB_CC_TL, WiimotePadConfigDialog::OnButtonClick) EVT_BUTTON(IDB_CC_ZL, WiimotePadConfigDialog::OnButtonClick) EVT_BUTTON(IDB_CC_ZR, WiimotePadConfigDialog::OnButtonClick) EVT_BUTTON(IDB_CC_TR, WiimotePadConfigDialog::OnButtonClick) EVT_BUTTON(IDB_CC_X, WiimotePadConfigDialog::OnButtonClick)
EVT_BUTTON(IDB_CC_DL, WiimotePadConfigDialog::OnButtonClick) EVT_BUTTON(IDB_CC_DU, WiimotePadConfigDialog::OnButtonClick) EVT_BUTTON(IDB_CC_DR, WiimotePadConfigDialog::OnButtonClick) EVT_BUTTON(IDB_CC_DD, WiimotePadConfigDialog::OnButtonClick) EVT_BUTTON(IDB_CC_Y, WiimotePadConfigDialog::OnButtonClick)
EVT_BUTTON(IDB_CC_DL, WiimotePadConfigDialog::OnButtonClick) EVT_BUTTON(IDB_CC_DU, WiimotePadConfigDialog::OnButtonClick) EVT_BUTTON(IDB_CC_DR, WiimotePadConfigDialog::OnButtonClick) EVT_BUTTON(IDB_CC_DD, WiimotePadConfigDialog::OnButtonClick) EVT_BUTTON(IDB_CC_P, WiimotePadConfigDialog::OnButtonClick)
EVT_BUTTON(IDB_CC_LL, WiimotePadConfigDialog::OnButtonClick) EVT_BUTTON(IDB_CC_LU, WiimotePadConfigDialog::OnButtonClick) EVT_BUTTON(IDB_CC_LR, WiimotePadConfigDialog::OnButtonClick) EVT_BUTTON(IDB_CC_LD, WiimotePadConfigDialog::OnButtonClick) EVT_BUTTON(IDB_CC_M, WiimotePadConfigDialog::OnButtonClick)
EVT_BUTTON(IDB_CC_RL, WiimotePadConfigDialog::OnButtonClick) EVT_BUTTON(IDB_CC_RU, WiimotePadConfigDialog::OnButtonClick) EVT_BUTTON(IDB_CC_RR, WiimotePadConfigDialog::OnButtonClick) EVT_BUTTON(IDB_CC_RD, WiimotePadConfigDialog::OnButtonClick) EVT_BUTTON(IDB_CC_H, WiimotePadConfigDialog::OnButtonClick)
EVT_BUTTON(IDB_CC_TL, WiimotePadConfigDialog::OnButtonClick)
EVT_BUTTON(IDB_CC_ZL, WiimotePadConfigDialog::OnButtonClick)
EVT_BUTTON(IDB_CC_ZR, WiimotePadConfigDialog::OnButtonClick)
EVT_BUTTON(IDB_CC_TR, WiimotePadConfigDialog::OnButtonClick)
EVT_BUTTON(IDB_CC_DL, WiimotePadConfigDialog::OnButtonClick)
EVT_BUTTON(IDB_CC_DU, WiimotePadConfigDialog::OnButtonClick)
EVT_BUTTON(IDB_CC_DR, WiimotePadConfigDialog::OnButtonClick)
EVT_BUTTON(IDB_CC_DD, WiimotePadConfigDialog::OnButtonClick)
EVT_BUTTON(IDB_CC_DL, WiimotePadConfigDialog::OnButtonClick)
EVT_BUTTON(IDB_CC_DU, WiimotePadConfigDialog::OnButtonClick)
EVT_BUTTON(IDB_CC_DR, WiimotePadConfigDialog::OnButtonClick)
EVT_BUTTON(IDB_CC_DD, WiimotePadConfigDialog::OnButtonClick)
EVT_BUTTON(IDB_CC_LL, WiimotePadConfigDialog::OnButtonClick)
EVT_BUTTON(IDB_CC_LU, WiimotePadConfigDialog::OnButtonClick)
EVT_BUTTON(IDB_CC_LR, WiimotePadConfigDialog::OnButtonClick)
EVT_BUTTON(IDB_CC_LD, WiimotePadConfigDialog::OnButtonClick)
EVT_BUTTON(IDB_CC_RL, WiimotePadConfigDialog::OnButtonClick)
EVT_BUTTON(IDB_CC_RU, WiimotePadConfigDialog::OnButtonClick)
EVT_BUTTON(IDB_CC_RR, WiimotePadConfigDialog::OnButtonClick)
EVT_BUTTON(IDB_CC_RD, WiimotePadConfigDialog::OnButtonClick)
// Guitar Hero 3 // Guitar Hero 3
EVT_BUTTON(IDB_GH3_GREEN, WiimotePadConfigDialog::OnButtonClick) EVT_BUTTON(IDB_GH3_GREEN, WiimotePadConfigDialog::OnButtonClick)
@ -107,8 +142,8 @@ BEGIN_EVENT_TABLE(WiimotePadConfigDialog,wxDialog)
END_EVENT_TABLE() END_EVENT_TABLE()
WiimotePadConfigDialog::WiimotePadConfigDialog(wxWindow *parent, wxWindowID id, const wxString &title, WiimotePadConfigDialog::WiimotePadConfigDialog(wxWindow *parent, wxWindowID id,
const wxPoint &position, const wxSize& size, long style) const wxString &title, const wxPoint &position, const wxSize& size, long style)
: wxDialog(parent, id, title, position, size, style) : wxDialog(parent, id, title, position, size, style)
{ {
m_ControlsCreated = false;; m_ControlsCreated = false;;
@ -327,7 +362,9 @@ wxBitmap WiimotePadConfigDialog::CreateBitmapDot()
wxBitmap WiimotePadConfigDialog::CreateBitmapDeadZone(int Radius) wxBitmap WiimotePadConfigDialog::CreateBitmapDeadZone(int Radius)
{ {
wxBitmap bitmap(Radius*2, Radius*2); int _Radius = Radius ? Radius : 1;
wxBitmap bitmap(_Radius * 2, _Radius * 2);
wxMemoryDC dc; wxMemoryDC dc;
dc.SelectObject(bitmap); dc.SelectObject(bitmap);
@ -506,7 +543,6 @@ void WiimotePadConfigDialog::CreatePadGUIControls()
// Configuration controls sizes // Configuration controls sizes
static const int BtW = 70, BtH = 20; static const int BtW = 70, BtH = 20;
// static const int TxtW = 50, TxtH = 20; // These are never used. Will they ever be?
// A small type font // A small type font
wxFont m_SmallFont(7, wxFONTFAMILY_DEFAULT, wxFONTSTYLE_NORMAL, wxFONTWEIGHT_NORMAL); wxFont m_SmallFont(7, wxFONTFAMILY_DEFAULT, wxFONTSTYLE_NORMAL, wxFONTWEIGHT_NORMAL);
@ -514,426 +550,502 @@ void WiimotePadConfigDialog::CreatePadGUIControls()
for (int i = 0; i < MAX_WIIMOTES; i++) for (int i = 0; i < MAX_WIIMOTES; i++)
{ {
m_Controller[i] = new wxPanel(m_Notebook, ID_CONTROLLERPAGE1 + i, wxDefaultPosition, wxDefaultSize); wxPanel *m_Controller =
m_Notebook->AddPage(m_Controller[i], wxString::Format(wxT("Wiimote %d"), i+1)); new wxPanel(m_Notebook, ID_CONTROLLERPAGE1 + i, wxDefaultPosition, wxDefaultSize);
m_Notebook->AddPage(m_Controller, wxString::Format(wxT("Wiimote %d"), i+1));
// Controller // Controller
m_Joyname[i] = new wxChoice(m_Controller[i], IDC_JOYNAME, wxDefaultPosition, wxSize(200, -1), StrJoyname, 0, wxDefaultValidator, StrJoyname[0]); m_Joyname[i] = new wxChoice(m_Controller, IDC_JOYNAME, wxDefaultPosition,
wxSize(200, -1), StrJoyname, 0, wxDefaultValidator, StrJoyname[0]);
m_Joyname[i]->SetToolTip(wxT("Save your settings and configure another joypad")); m_Joyname[i]->SetToolTip(wxT("Save your settings and configure another joypad"));
// Dead zone // Dead zone
m_ComboDeadZoneLabel[i] = new wxStaticText(m_Controller[i], wxID_ANY, wxT("Dead Zone")); wxStaticText *m_ComboDeadZoneLabel = new wxStaticText(m_Controller, wxID_ANY, wxT("Dead Zone"));
m_ComboDeadZoneLeft[i] = new wxChoice(m_Controller[i], IDC_DEAD_ZONE_LEFT, wxDefaultPosition, wxSize(50, -1), TextDeadZone, 0, wxDefaultValidator, TextDeadZone[0]); m_ComboDeadZoneLeft[i] = new wxChoice(m_Controller, IDC_DEAD_ZONE_LEFT,
m_ComboDeadZoneRight[i] = new wxChoice(m_Controller[i], IDC_DEAD_ZONE_RIGHT, wxDefaultPosition, wxSize(50, -1), TextDeadZone, 0, wxDefaultValidator, TextDeadZone[0]); wxDefaultPosition, wxSize(50, -1), TextDeadZone, 0, wxDefaultValidator, TextDeadZone[0]);
m_ComboDeadZoneRight[i] = new wxChoice(m_Controller, IDC_DEAD_ZONE_RIGHT,
wxDefaultPosition, wxSize(50, -1), TextDeadZone, 0, wxDefaultValidator, TextDeadZone[0]);
// Circle to square // Circle to square
m_CheckC2S[i] = new wxCheckBox(m_Controller[i], IDC_STICK_C2S, wxT("Circle To Square")); m_CheckC2S[i] = new wxCheckBox(m_Controller, IDC_STICK_C2S, wxT("Circle To Square"));
m_CheckC2S[i]->SetToolTip(wxT("This will convert a circular stick radius to a square stick radius.\n") m_CheckC2S[i]->SetToolTip(wxT("This will convert a circular stick radius to a square stick radius.\n")
wxT("This can be useful for the pitch and roll emulation.")); wxT("This can be useful for the pitch and roll emulation."));
// The drop down menu for the circle to square adjustment // The drop down menu for the circle to square adjustment
m_DiagonalLabel[i] = new wxStaticText(m_Controller[i], wxID_ANY, wxT("Diagonal")); wxStaticText *m_DiagonalLabel = new wxStaticText(m_Controller, wxID_ANY, wxT("Diagonal"));
m_DiagonalLabel[i]->SetToolTip(wxT("To produce a perfect square circle in the 'Out' window you have to manually set\n") m_DiagonalLabel->SetToolTip(wxT("To produce a perfect square circle in the ")
wxT("your diagonal values here from what is shown in the 'In' window.")); wxT("'Out' window you have to manually set\n")
m_ComboDiagonal[i] = new wxChoice(m_Controller[i], IDC_STICK_DIAGONAL, wxDefaultPosition, wxSize(50, -1), StrDiagonal, 0, wxDefaultValidator, StrDiagonal[0]); wxT("your diagonal values here from what is shown in the 'In' window."));
m_ComboDiagonal[i] = new wxChoice(m_Controller, IDC_STICK_DIAGONAL,
wxDefaultPosition, wxSize(50, -1), StrDiagonal, 0, wxDefaultValidator, StrDiagonal[0]);
// Rumble // Rumble
m_CheckRumble[i] = new wxCheckBox(m_Controller[i], IDC_RUMBLE, wxT("Rumble")); m_CheckRumble[i] = new wxCheckBox(m_Controller, IDC_RUMBLE, wxT("Rumble"));
m_RumbleStrengthLabel[i] = new wxStaticText(m_Controller[i], wxID_ANY, wxT("Strength")); wxStaticText *m_RumbleStrengthLabel = new wxStaticText(m_Controller, wxID_ANY, wxT("Strength"));
m_RumbleStrength[i] = new wxChoice(m_Controller[i], IDC_RUMBLE_STRENGTH, wxDefaultPosition, wxSize(50, -1), StrRumble, 0, wxDefaultValidator, StrRumble[0]); m_RumbleStrength[i] = new wxChoice(m_Controller, IDC_RUMBLE_STRENGTH,
wxDefaultPosition, wxSize(50, -1), StrRumble, 0, wxDefaultValidator, StrRumble[0]);
// Sizers // Sizers
m_sDeadZoneHoriz[i] = new wxBoxSizer(wxHORIZONTAL); wxBoxSizer *m_sDeadZoneHoriz = new wxBoxSizer(wxHORIZONTAL);
m_sDeadZoneHoriz[i]->Add(m_ComboDeadZoneLeft[i], 0, (wxUP), 0); m_sDeadZoneHoriz->Add(m_ComboDeadZoneLeft[i], 0, (wxUP), 0);
m_sDeadZoneHoriz[i]->Add(m_ComboDeadZoneRight[i], 0, (wxUP), 0); m_sDeadZoneHoriz->Add(m_ComboDeadZoneRight[i], 0, (wxUP), 0);
m_sDeadZone[i] = new wxBoxSizer(wxVERTICAL); wxBoxSizer *m_sDeadZone = new wxBoxSizer(wxVERTICAL);
m_sDeadZone[i]->Add(m_ComboDeadZoneLabel[i], 0, wxALIGN_CENTER | (wxUP), 0); m_sDeadZone->Add(m_ComboDeadZoneLabel, 0, wxALIGN_CENTER | (wxUP), 0);
m_sDeadZone[i]->Add(m_sDeadZoneHoriz[i], 0, wxALIGN_CENTER | (wxUP), 2); m_sDeadZone->Add(m_sDeadZoneHoriz, 0, wxALIGN_CENTER | (wxUP), 2);
m_sDiagonal[i] = new wxBoxSizer(wxHORIZONTAL); wxBoxSizer *m_sDiagonal = new wxBoxSizer(wxHORIZONTAL);
m_sDiagonal[i]->Add(m_DiagonalLabel[i], 0, (wxUP), 4); m_sDiagonal->Add(m_DiagonalLabel, 0, (wxUP), 4);
m_sDiagonal[i]->Add(m_ComboDiagonal[i], 0, (wxLEFT), 2); m_sDiagonal->Add(m_ComboDiagonal[i], 0, (wxLEFT), 2);
m_sCircle2Square[i] = new wxBoxSizer(wxVERTICAL); wxBoxSizer *m_sCircle2Square = new wxBoxSizer(wxVERTICAL);
m_sCircle2Square[i]->Add(m_CheckC2S[i], 0, wxALIGN_CENTER | (wxUP), 0); m_sCircle2Square->Add(m_CheckC2S[i], 0, wxALIGN_CENTER | (wxUP), 0);
m_sCircle2Square[i]->Add(m_sDiagonal[i], 0, wxALIGN_CENTER | (wxUP), 2); m_sCircle2Square->Add(m_sDiagonal, 0, wxALIGN_CENTER | (wxUP), 2);
m_sC2SDeadZone[i] = new wxBoxSizer(wxHORIZONTAL); wxBoxSizer *m_sC2SDeadZone = new wxBoxSizer(wxHORIZONTAL);
m_sC2SDeadZone[i]->Add(m_sDeadZone[i], 0, (wxUP), 0); m_sC2SDeadZone->Add(m_sDeadZone, 0, (wxUP), 0);
m_sC2SDeadZone[i]->Add(m_sCircle2Square[i], 0, (wxLEFT), 8); m_sC2SDeadZone->Add(m_sCircle2Square, 0, (wxLEFT), 8);
m_sJoyname[i] = new wxBoxSizer(wxVERTICAL); wxBoxSizer *m_sJoyname = new wxBoxSizer(wxVERTICAL);
m_sJoyname[i]->Add(m_Joyname[i], 0, wxALIGN_CENTER | (wxUP | wxDOWN), 4); m_sJoyname->Add(m_Joyname[i], 0, wxALIGN_CENTER | (wxUP | wxDOWN), 4);
m_sJoyname[i]->Add(m_sC2SDeadZone[i], 0, (wxUP | wxDOWN), 4); m_sJoyname->Add(m_sC2SDeadZone, 0, (wxUP | wxDOWN), 4);
m_sRumble[i] = new wxBoxSizer(wxVERTICAL); wxBoxSizer *m_sRumble = new wxBoxSizer(wxVERTICAL);
m_sRumble[i]->Add(m_CheckRumble[i], 0, wxALIGN_CENTER | (wxUP | wxDOWN), 8); m_sRumble->Add(m_CheckRumble[i], 0, wxALIGN_CENTER | (wxUP | wxDOWN), 8);
m_sRumble[i]->Add(m_RumbleStrengthLabel[i], 0, wxALIGN_CENTER | (wxUP), 4); m_sRumble->Add(m_RumbleStrengthLabel, 0, wxALIGN_CENTER | (wxUP), 4);
m_sRumble[i]->Add(m_RumbleStrength[i], 0, (wxUP | wxDOWN), 2); m_sRumble->Add(m_RumbleStrength[i], 0, (wxUP | wxDOWN), 2);
m_gJoyPad[i] = new wxStaticBoxSizer (wxHORIZONTAL, m_Controller[i], wxT("Gamepad")); wxStaticBoxSizer *m_gJoyPad =
m_gJoyPad[i]->AddStretchSpacer(); new wxStaticBoxSizer (wxHORIZONTAL, m_Controller, wxT("Gamepad"));
m_gJoyPad[i]->Add(m_sJoyname[i], 0, wxEXPAND | (wxLEFT | wxRIGHT | wxDOWN), 5); m_gJoyPad->AddStretchSpacer();
m_gJoyPad[i]->Add(m_sRumble[i], 0, wxEXPAND | (wxLEFT | wxRIGHT | wxDOWN), 5); m_gJoyPad->Add(m_sJoyname, 0, wxEXPAND | (wxLEFT | wxRIGHT | wxDOWN), 5);
m_gJoyPad[i]->AddStretchSpacer(); m_gJoyPad->Add(m_sRumble, 0, wxEXPAND | (wxLEFT | wxRIGHT | wxDOWN), 5);
m_gJoyPad->AddStretchSpacer();
// Tilt Wiimote // Tilt Wiimote
m_tTiltTypeWM[i] = new wxStaticText(m_Controller[i], wxID_ANY, wxT("Wiimote")); wxStaticText *m_tTiltTypeWM = new wxStaticText(m_Controller, wxID_ANY, wxT("Wiimote"));
m_tTiltTypeNC[i] = new wxStaticText(m_Controller[i], wxID_ANY, wxT("Nunchuck")); wxStaticText *m_tTiltTypeNC = new wxStaticText(m_Controller, wxID_ANY, wxT("Nunchuck"));
m_TiltTypeWM[i] = new wxChoice(m_Controller[i], IDC_TILT_TYPE_WM, wxDefaultPosition, wxSize(70, -1), StrTilt, 0, wxDefaultValidator, StrTilt[0]); m_TiltTypeWM[i] = new wxChoice(m_Controller, IDC_TILT_TYPE_WM,
wxDefaultPosition, wxSize(70, -1), StrTilt, 0, wxDefaultValidator, StrTilt[0]);
m_TiltTypeWM[i]->SetToolTip(wxT("Control Wiimote tilting by keyboard or stick or trigger")); m_TiltTypeWM[i]->SetToolTip(wxT("Control Wiimote tilting by keyboard or stick or trigger"));
m_TiltTypeNC[i] = new wxChoice(m_Controller[i], IDC_TILT_TYPE_NC, wxDefaultPosition, wxSize(70, -1), StrTilt, 0, wxDefaultValidator, StrTilt[0]); m_TiltTypeNC[i] = new wxChoice(m_Controller, IDC_TILT_TYPE_NC,
wxDefaultPosition, wxSize(70, -1), StrTilt, 0, wxDefaultValidator, StrTilt[0]);
m_TiltTypeNC[i]->SetToolTip(wxT("Control Nunchuck tilting by keyboard or stick or trigger")); m_TiltTypeNC[i]->SetToolTip(wxT("Control Nunchuck tilting by keyboard or stick or trigger"));
m_TiltTextRoll[i] = new wxStaticText(m_Controller[i], wxID_ANY, wxT("Roll Left/Right")); wxStaticText *m_TiltTextRoll = new wxStaticText(m_Controller, wxID_ANY, wxT("Roll Left/Right"));
m_TiltTextPitch[i] = new wxStaticText(m_Controller[i], wxID_ANY, wxT("Pitch Up/Down")); wxStaticText *m_TiltTextPitch = new wxStaticText(m_Controller, wxID_ANY, wxT("Pitch Up/Down"));
m_TiltComboRangeRoll[i] = new wxChoice(m_Controller[i], IDC_TILT_ROLL, wxDefaultPosition, wxSize(50, -1), StrTiltRangeRoll, 0, wxDefaultValidator, StrTiltRangeRoll[0]); m_TiltComboRangeRoll[i] = new wxChoice(m_Controller, IDC_TILT_ROLL,
wxDefaultPosition, wxSize(50, -1), StrTiltRangeRoll, 0,
wxDefaultValidator, StrTiltRangeRoll[0]);
m_TiltComboRangeRoll[i]->SetToolTip(wxT("The maximum Left/Righ Roll in degrees")); m_TiltComboRangeRoll[i]->SetToolTip(wxT("The maximum Left/Righ Roll in degrees"));
m_TiltComboRangePitch[i] = new wxChoice(m_Controller[i], IDC_TILT_PITCH, wxDefaultPosition, wxSize(50, -1), StrTiltRangePitch, 0, wxDefaultValidator, StrTiltRangePitch[0]); m_TiltComboRangePitch[i] = new wxChoice(m_Controller, IDC_TILT_PITCH,
wxDefaultPosition, wxSize(50, -1), StrTiltRangePitch, 0,
wxDefaultValidator, StrTiltRangePitch[0]);
m_TiltComboRangePitch[i]->SetToolTip(wxT("The maximum Up/Down Pitch in degrees")); m_TiltComboRangePitch[i]->SetToolTip(wxT("The maximum Up/Down Pitch in degrees"));
m_TiltRollSwing[i] = new wxCheckBox(m_Controller[i], IDC_TILT_ROLL_SWING, wxT("Swing")); m_TiltRollSwing[i] = new wxCheckBox(m_Controller, IDC_TILT_ROLL_SWING, wxT("Swing"));
m_TiltRollSwing[i]->SetToolTip(wxT("Emulate Swing Left/Right instead of Roll Left/Right")); m_TiltRollSwing[i]->SetToolTip(wxT("Emulate Swing Left/Right instead of Roll Left/Right"));
m_TiltPitchSwing[i] = new wxCheckBox(m_Controller[i], IDC_TILT_PITCH_SWING, wxT("Swing")); m_TiltPitchSwing[i] = new wxCheckBox(m_Controller, IDC_TILT_PITCH_SWING, wxT("Swing"));
m_TiltPitchSwing[i]->SetToolTip(wxT("Emulate Swing Up/Down instead of Pitch Up/Down")); m_TiltPitchSwing[i]->SetToolTip(wxT("Emulate Swing Up/Down instead of Pitch Up/Down"));
m_TiltRollInvert[i] = new wxCheckBox(m_Controller[i], IDC_TILT_ROLL_INVERT, wxT("Invert")); m_TiltRollInvert[i] = new wxCheckBox(m_Controller, IDC_TILT_ROLL_INVERT, wxT("Invert"));
m_TiltRollInvert[i]->SetToolTip(wxT("Invert Left/Right direction (only effective for stick and trigger)")); m_TiltRollInvert[i]->
m_TiltPitchInvert[i] = new wxCheckBox(m_Controller[i], IDC_TILT_PITCH_INVERT, wxT("Invert")); SetToolTip(wxT("Invert Left/Right direction (only effective for stick and trigger)"));
m_TiltPitchInvert[i]->SetToolTip(wxT("Invert Up/Down direction (only effective for stick and trigger)")); m_TiltPitchInvert[i] = new wxCheckBox(m_Controller, IDC_TILT_PITCH_INVERT, wxT("Invert"));
m_TiltPitchInvert[i]->
SetToolTip(wxT("Invert Up/Down direction (only effective for stick and trigger)"));
// Sizers // Sizers
m_sTiltType[i] = new wxBoxSizer(wxHORIZONTAL); wxBoxSizer *m_sTiltType = new wxBoxSizer(wxHORIZONTAL);
m_sTiltType[i]->Add(m_tTiltTypeWM[i], 0, wxEXPAND | (wxUP | wxDOWN | wxRIGHT), 4); m_sTiltType->Add(m_tTiltTypeWM, 0, wxEXPAND | (wxUP | wxDOWN | wxRIGHT), 4);
m_sTiltType[i]->Add(m_TiltTypeWM[i], 0, wxEXPAND | (wxDOWN | wxRIGHT), 4); m_sTiltType->Add(m_TiltTypeWM[i], 0, wxEXPAND | (wxDOWN | wxRIGHT), 4);
m_sTiltType[i]->Add(m_tTiltTypeNC[i], 0, wxEXPAND | (wxUP | wxDOWN | wxLEFT), 4); m_sTiltType->Add(m_tTiltTypeNC, 0, wxEXPAND | (wxUP | wxDOWN | wxLEFT), 4);
m_sTiltType[i]->Add(m_TiltTypeNC[i], 0, wxEXPAND | (wxDOWN | wxLEFT), 4); m_sTiltType->Add(m_TiltTypeNC[i], 0, wxEXPAND | (wxDOWN | wxLEFT), 4);
m_sGridTilt[i] = new wxGridBagSizer(0, 0); wxGridBagSizer *m_sGridTilt = new wxGridBagSizer(0, 0);
m_sGridTilt[i]->Add(m_TiltTextRoll[i], wxGBPosition(0, 0), wxGBSpan(1, 1), (wxUP | wxRIGHT), 4); m_sGridTilt->Add(m_TiltTextRoll, wxGBPosition(0, 0), wxGBSpan(1, 1),
m_sGridTilt[i]->Add(m_TiltComboRangeRoll[i], wxGBPosition(0, 1), wxGBSpan(1, 1), (wxLEFT | wxRIGHT), 4); (wxUP | wxRIGHT), 4);
m_sGridTilt[i]->Add(m_TiltRollSwing[i], wxGBPosition(0, 2), wxGBSpan(1, 1), (wxUP | wxLEFT | wxRIGHT), 4); m_sGridTilt->Add(m_TiltComboRangeRoll[i], wxGBPosition(0, 1), wxGBSpan(1, 1),
m_sGridTilt[i]->Add(m_TiltRollInvert[i], wxGBPosition(0, 3), wxGBSpan(1, 1), (wxUP | wxLEFT), 4); (wxLEFT | wxRIGHT), 4);
m_sGridTilt[i]->Add(m_TiltTextPitch[i], wxGBPosition(1, 0), wxGBSpan(1, 1), (wxUP | wxRIGHT), 4); m_sGridTilt->Add(m_TiltRollSwing[i], wxGBPosition(0, 2), wxGBSpan(1, 1),
m_sGridTilt[i]->Add(m_TiltComboRangePitch[i], wxGBPosition(1, 1), wxGBSpan(1, 1), (wxLEFT | wxRIGHT), 4); (wxUP | wxLEFT | wxRIGHT), 4);
m_sGridTilt[i]->Add(m_TiltPitchSwing[i], wxGBPosition(1, 2), wxGBSpan(1, 1), (wxUP | wxLEFT | wxRIGHT), 4); m_sGridTilt->Add(m_TiltRollInvert[i], wxGBPosition(0, 3), wxGBSpan(1, 1),
m_sGridTilt[i]->Add(m_TiltPitchInvert[i], wxGBPosition(1, 3), wxGBSpan(1, 1), (wxUP | wxLEFT), 4); (wxUP | wxLEFT), 4);
m_sGridTilt->Add(m_TiltTextPitch, wxGBPosition(1, 0), wxGBSpan(1, 1),
(wxUP | wxRIGHT), 4);
m_sGridTilt->Add(m_TiltComboRangePitch[i], wxGBPosition(1, 1), wxGBSpan(1, 1),
(wxLEFT | wxRIGHT), 4);
m_sGridTilt->Add(m_TiltPitchSwing[i], wxGBPosition(1, 2), wxGBSpan(1, 1),
(wxUP | wxLEFT | wxRIGHT), 4);
m_sGridTilt->Add(m_TiltPitchInvert[i], wxGBPosition(1, 3), wxGBSpan(1, 1),
(wxUP | wxLEFT), 4);
m_gTilt[i] = new wxStaticBoxSizer (wxVERTICAL, m_Controller[i], wxT("Tilt and Swing")); wxStaticBoxSizer *m_gTilt = new wxStaticBoxSizer (wxVERTICAL, m_Controller, wxT("Tilt and Swing"));
m_gTilt[i]->AddStretchSpacer(); m_gTilt->AddStretchSpacer();
m_gTilt[i]->Add(m_sTiltType[i], 0, wxEXPAND | (wxLEFT | wxDOWN), 5); m_gTilt->Add(m_sTiltType, 0, wxEXPAND | (wxLEFT | wxDOWN), 5);
m_gTilt[i]->Add(m_sGridTilt[i], 0, wxEXPAND | (wxLEFT), 5); m_gTilt->Add(m_sGridTilt, 0, wxEXPAND | (wxLEFT), 5);
m_gTilt[i]->AddStretchSpacer(); m_gTilt->AddStretchSpacer();
// Row 1 Sizers: Connected pads, tilt // Row 1 Sizers: Connected pads, tilt
m_sHorizController[i] = new wxBoxSizer(wxHORIZONTAL); wxBoxSizer *m_sHorizController = new wxBoxSizer(wxHORIZONTAL);
m_sHorizController[i]->Add(m_gJoyPad[i], 0, wxEXPAND | (wxLEFT), 5); m_sHorizController->Add(m_gJoyPad, 0, wxEXPAND | (wxLEFT), 5);
m_sHorizController[i]->Add(m_gTilt[i], 0, wxEXPAND | (wxLEFT), 5); m_sHorizController->Add(m_gTilt, 0, wxEXPAND | (wxLEFT), 5);
// Stick Status Panels // Stick Status Panels
m_tStatusLeftIn[i] = new wxStaticText(m_Controller[i], wxID_ANY, wxT("Not connected")); m_tStatusLeftIn[i] = new wxStaticText(m_Controller, wxID_ANY, wxT("Not connected"));
m_tStatusLeftOut[i] = new wxStaticText(m_Controller[i], wxID_ANY, wxT("Not connected")); m_tStatusLeftOut[i] = new wxStaticText(m_Controller, wxID_ANY, wxT("Not connected"));
m_tStatusRightIn[i] = new wxStaticText(m_Controller[i], wxID_ANY, wxT("Not connected")); m_tStatusRightIn[i] = new wxStaticText(m_Controller, wxID_ANY, wxT("Not connected"));
m_tStatusRightOut[i] = new wxStaticText(m_Controller[i], wxID_ANY, wxT("Not connected")); m_tStatusRightOut[i] = new wxStaticText(m_Controller, wxID_ANY, wxT("Not connected"));
m_pLeftInStatus[i] = new wxPanel(m_Controller[i], wxID_ANY, wxDefaultPosition, wxDefaultSize); wxPanel *m_pLeftInStatus = new wxPanel(m_Controller, wxID_ANY,
m_bmpSquareLeftIn[i] = new wxStaticBitmap(m_pLeftInStatus[i], wxID_ANY, CreateBitmap(), wxDefaultPosition, wxDefaultSize); wxDefaultPosition, wxDefaultSize);
m_bmpDeadZoneLeftIn[i] = new wxStaticBitmap(m_pLeftInStatus[i], wxID_ANY, CreateBitmapDeadZone(0), wxDefaultPosition, wxDefaultSize); m_bmpSquareLeftIn[i] = new wxStaticBitmap(m_pLeftInStatus, wxID_ANY,
m_bmpDotLeftIn[i] = new wxStaticBitmap(m_pLeftInStatus[i], wxID_ANY, CreateBitmapDot(), wxPoint(BoxW / 2, BoxH / 2), wxDefaultSize); CreateBitmap(), wxDefaultPosition, wxDefaultSize);
m_bmpDeadZoneLeftIn[i] = new wxStaticBitmap(m_pLeftInStatus, wxID_ANY,
CreateBitmapDeadZone(0), wxDefaultPosition, wxDefaultSize);
m_bmpDotLeftIn[i] = new wxStaticBitmap(m_pLeftInStatus, wxID_ANY,
CreateBitmapDot(), wxPoint(BoxW / 2, BoxH / 2), wxDefaultSize);
m_pLeftOutStatus[i] = new wxPanel(m_Controller[i], wxID_ANY, wxDefaultPosition, wxDefaultSize); wxPanel *m_pLeftOutStatus = new wxPanel(m_Controller, wxID_ANY, wxDefaultPosition, wxDefaultSize);
m_bmpSquareLeftOut[i] = new wxStaticBitmap(m_pLeftOutStatus[i], wxID_ANY, CreateBitmap(), wxDefaultPosition, wxDefaultSize); m_bmpSquareLeftOut[i] = new wxStaticBitmap(m_pLeftOutStatus, wxID_ANY,
m_bmpDotLeftOut[i] = new wxStaticBitmap(m_pLeftOutStatus[i], wxID_ANY, CreateBitmapDot(), wxPoint(BoxW / 2, BoxH / 2), wxDefaultSize); CreateBitmap(), wxDefaultPosition, wxDefaultSize);
m_bmpDotLeftOut[i] = new wxStaticBitmap(m_pLeftOutStatus, wxID_ANY,
CreateBitmapDot(), wxPoint(BoxW / 2, BoxH / 2), wxDefaultSize);
m_pRightInStatus[i] = new wxPanel(m_Controller[i], wxID_ANY, wxDefaultPosition, wxDefaultSize); wxPanel *m_pRightInStatus = new wxPanel(m_Controller, wxID_ANY, wxDefaultPosition, wxDefaultSize);
m_bmpSquareRightIn[i] = new wxStaticBitmap(m_pRightInStatus[i], wxID_ANY, CreateBitmap(), wxDefaultPosition, wxDefaultSize); m_bmpSquareRightIn[i] = new wxStaticBitmap(m_pRightInStatus, wxID_ANY,
m_bmpDeadZoneRightIn[i] = new wxStaticBitmap(m_pRightInStatus[i], wxID_ANY, CreateBitmapDeadZone(0), wxDefaultPosition, wxDefaultSize); CreateBitmap(), wxDefaultPosition, wxDefaultSize);
m_bmpDotRightIn[i] = new wxStaticBitmap(m_pRightInStatus[i], wxID_ANY, CreateBitmapDot(), wxPoint(BoxW / 2, BoxH / 2), wxDefaultSize); m_bmpDeadZoneRightIn[i] = new wxStaticBitmap(m_pRightInStatus, wxID_ANY,
CreateBitmapDeadZone(0), wxDefaultPosition, wxDefaultSize);
m_bmpDotRightIn[i] = new wxStaticBitmap(m_pRightInStatus, wxID_ANY,
CreateBitmapDot(), wxPoint(BoxW / 2, BoxH / 2), wxDefaultSize);
m_pRightOutStatus[i] = new wxPanel(m_Controller[i], wxID_ANY, wxDefaultPosition, wxDefaultSize); wxPanel *m_pRightOutStatus = new wxPanel(m_Controller, wxID_ANY, wxDefaultPosition, wxDefaultSize);
m_bmpSquareRightOut[i] = new wxStaticBitmap(m_pRightOutStatus[i], wxID_ANY, CreateBitmap(), wxDefaultPosition, wxDefaultSize); m_bmpSquareRightOut[i] = new wxStaticBitmap(m_pRightOutStatus, wxID_ANY,
m_bmpDotRightOut[i] = new wxStaticBitmap(m_pRightOutStatus[i], wxID_ANY, CreateBitmapDot(), wxPoint(BoxW / 2, BoxH / 2), wxDefaultSize); CreateBitmap(), wxDefaultPosition, wxDefaultSize);
m_bmpDotRightOut[i] = new wxStaticBitmap(m_pRightOutStatus, wxID_ANY,
CreateBitmapDot(), wxPoint(BoxW / 2, BoxH / 2), wxDefaultSize);
// Sizers // Sizers
m_sGridStickLeft[i] = new wxGridBagSizer(0, 0); wxGridBagSizer *m_sGridStickLeft = new wxGridBagSizer(0, 0);
m_sGridStickLeft[i]->Add(m_pLeftInStatus[i], wxGBPosition(0, 0), wxGBSpan(1, 1), wxALL, 0); m_sGridStickLeft->Add(m_pLeftInStatus, wxGBPosition(0, 0), wxGBSpan(1, 1), wxALL, 0);
m_sGridStickLeft[i]->Add(m_pLeftOutStatus[i], wxGBPosition(0, 1), wxGBSpan(1, 1), wxLEFT, 10); m_sGridStickLeft->Add(m_pLeftOutStatus, wxGBPosition(0, 1), wxGBSpan(1, 1), wxLEFT, 10);
m_sGridStickLeft[i]->Add(m_tStatusLeftIn[i], wxGBPosition(1, 0), wxGBSpan(1, 1), wxALL, 0); m_sGridStickLeft->Add(m_tStatusLeftIn[i], wxGBPosition(1, 0), wxGBSpan(1, 1), wxALL, 0);
m_sGridStickLeft[i]->Add(m_tStatusLeftOut[i], wxGBPosition(1, 1), wxGBSpan(1, 1), wxLEFT, 10); m_sGridStickLeft->Add(m_tStatusLeftOut[i], wxGBPosition(1, 1), wxGBSpan(1, 1), wxLEFT, 10);
m_sGridStickRight[i] = new wxGridBagSizer(0, 0); wxGridBagSizer *m_sGridStickRight = new wxGridBagSizer(0, 0);
m_sGridStickRight[i]->Add(m_pRightInStatus[i], wxGBPosition(0, 0), wxGBSpan(1, 1), wxALL, 0); m_sGridStickRight->Add(m_pRightInStatus, wxGBPosition(0, 0), wxGBSpan(1, 1), wxALL, 0);
m_sGridStickRight[i]->Add(m_pRightOutStatus[i], wxGBPosition(0, 1), wxGBSpan(1, 1), wxLEFT, 10); m_sGridStickRight->Add(m_pRightOutStatus, wxGBPosition(0, 1), wxGBSpan(1, 1), wxLEFT, 10);
m_sGridStickRight[i]->Add(m_tStatusRightIn[i], wxGBPosition(1, 0), wxGBSpan(1, 1), wxALL, 0); m_sGridStickRight->Add(m_tStatusRightIn[i], wxGBPosition(1, 0), wxGBSpan(1, 1), wxALL, 0);
m_sGridStickRight[i]->Add(m_tStatusRightOut[i], wxGBPosition(1, 1), wxGBSpan(1, 1), wxLEFT, 10); m_sGridStickRight->Add(m_tStatusRightOut[i], wxGBPosition(1, 1), wxGBSpan(1, 1), wxLEFT, 10);
m_gStickLeft[i] = new wxStaticBoxSizer (wxHORIZONTAL, m_Controller[i], wxT("Analog 1 Status (In) (Out)")); wxStaticBoxSizer *m_gStickLeft = new wxStaticBoxSizer (wxHORIZONTAL, m_Controller,
m_gStickLeft[i]->Add(m_sGridStickLeft[i], 0, (wxLEFT | wxRIGHT), 5); wxT("Analog 1 Status (In) (Out)"));
m_gStickLeft->Add(m_sGridStickLeft, 0, (wxLEFT | wxRIGHT), 5);
m_gStickRight[i] = new wxStaticBoxSizer (wxHORIZONTAL, m_Controller[i], wxT("Analog 2 Status (In) (Out)")); wxStaticBoxSizer *m_gStickRight = new wxStaticBoxSizer (wxHORIZONTAL, m_Controller,
m_gStickRight[i]->Add(m_sGridStickRight[i], 0, (wxLEFT | wxRIGHT), 5); wxT("Analog 2 Status (In) (Out)"));
m_gStickRight->Add(m_sGridStickRight, 0, (wxLEFT | wxRIGHT), 5);
// Trigger Status Panels // Trigger Status Panels
m_TriggerL[i]= new wxStaticText(m_Controller[i], wxID_ANY, wxT("Left: ")); wxStaticText *m_TriggerL = new wxStaticText(m_Controller, wxID_ANY, wxT("Left:"));
m_TriggerR[i]= new wxStaticText(m_Controller[i], wxID_ANY, wxT("Right: ")); wxStaticText *m_TriggerR = new wxStaticText(m_Controller, wxID_ANY, wxT("Right:"));
m_TriggerStatusL[i]= new wxStaticText(m_Controller[i], wxID_ANY, wxT("000"), wxDefaultPosition, wxDefaultSize, wxALIGN_RIGHT); m_TriggerStatusL[i] = new wxStaticText(m_Controller, wxID_ANY, wxT("000"),
m_TriggerStatusR[i]= new wxStaticText(m_Controller[i], wxID_ANY, wxT("000"), wxDefaultPosition, wxDefaultSize, wxALIGN_RIGHT); wxDefaultPosition, wxDefaultSize, wxALIGN_RIGHT);
m_tTriggerSource[i]= new wxStaticText(m_Controller[i], wxID_ANY, wxT("Trigger Source")); m_TriggerStatusR[i] = new wxStaticText(m_Controller, wxID_ANY, wxT("000"),
m_TriggerType[i] = new wxChoice(m_Controller[i], IDC_TRIGGER_TYPE, wxDefaultPosition, wxSize(70, -1), StrTriggerType, 0, wxDefaultValidator, StrTriggerType[0]); wxDefaultPosition, wxDefaultSize, wxALIGN_RIGHT);
wxStaticText *m_tTriggerSource = new wxStaticText(m_Controller, wxID_ANY, wxT("Trigger Source"));
m_TriggerType[i] = new wxChoice(m_Controller, IDC_TRIGGER_TYPE,
wxDefaultPosition, wxSize(70, -1), StrTriggerType, 0,
wxDefaultValidator, StrTriggerType[0]);
// Sizers // Sizers
m_sGridTrigger[i] = new wxGridBagSizer(0, 0); wxGridBagSizer *m_sGridTrigger = new wxGridBagSizer(0, 0);
m_sGridTrigger[i]->Add(m_TriggerL[i], wxGBPosition(0, 0), wxGBSpan(1, 1), (wxTOP), 4); m_sGridTrigger->Add(m_TriggerL, wxGBPosition(0, 0), wxGBSpan(1, 1), (wxTOP), 4);
m_sGridTrigger[i]->Add(m_TriggerStatusL[i], wxGBPosition(0, 1), wxGBSpan(1, 1), (wxLEFT | wxTOP), 4); m_sGridTrigger->Add(m_TriggerStatusL[i], wxGBPosition(0, 1), wxGBSpan(1, 1),
m_sGridTrigger[i]->Add(m_TriggerR[i], wxGBPosition(1, 0), wxGBSpan(1, 1), (wxTOP), 4); (wxLEFT | wxTOP), 4);
m_sGridTrigger[i]->Add(m_TriggerStatusR[i], wxGBPosition(1, 1), wxGBSpan(1, 1), (wxLEFT | wxTOP), 4); m_sGridTrigger->Add(m_TriggerR, wxGBPosition(1, 0), wxGBSpan(1, 1), (wxTOP), 4);
m_sGridTrigger->Add(m_TriggerStatusR[i], wxGBPosition(1, 1), wxGBSpan(1, 1),
(wxLEFT | wxTOP), 4);
m_gTriggers[i] = new wxStaticBoxSizer (wxVERTICAL, m_Controller[i], wxT("Triggers Status")); wxStaticBoxSizer *m_gTriggers =
m_gTriggers[i]->AddStretchSpacer(); new wxStaticBoxSizer (wxVERTICAL, m_Controller, wxT("Triggers Status"));
m_gTriggers[i]->Add(m_sGridTrigger[i], 0, wxEXPAND | (wxLEFT | wxRIGHT), 5); m_gTriggers->AddStretchSpacer();
m_gTriggers[i]->Add(m_tTriggerSource[i], 0, wxEXPAND | (wxUP | wxLEFT | wxRIGHT), 5); m_gTriggers->Add(m_sGridTrigger, 0, wxEXPAND | (wxLEFT | wxRIGHT), 5);
m_gTriggers[i]->Add(m_TriggerType[i], 0, wxEXPAND | (wxUP | wxLEFT | wxRIGHT), 5); m_gTriggers->Add(m_tTriggerSource, 0, wxEXPAND | (wxUP | wxLEFT | wxRIGHT), 5);
m_gTriggers[i]->AddStretchSpacer(); m_gTriggers->Add(m_TriggerType[i], 0, wxEXPAND | (wxUP | wxLEFT | wxRIGHT), 5);
m_gTriggers->AddStretchSpacer();
// Row 2 Sizers: Analog status // Row 2 Sizers: Analog status
m_sHorizStatus[i] = new wxBoxSizer(wxHORIZONTAL); wxBoxSizer *m_sHorizStatus = new wxBoxSizer(wxHORIZONTAL);
m_sHorizStatus[i]->Add(m_gStickLeft[i], 0, wxEXPAND | (wxLEFT), 5); m_sHorizStatus->Add(m_gStickLeft, 0, wxEXPAND | (wxLEFT), 5);
m_sHorizStatus[i]->Add(m_gStickRight[i], 0, wxEXPAND | (wxLEFT), 5); m_sHorizStatus->Add(m_gStickRight, 0, wxEXPAND | (wxLEFT), 5);
m_sHorizStatus[i]->Add(m_gTriggers[i], 0, wxEXPAND | (wxLEFT), 5); m_sHorizStatus->Add(m_gTriggers, 0, wxEXPAND | (wxLEFT), 5);
// Analog Axes and Triggers Mapping // Analog Axes and Triggers Mapping
m_sAnalogLeft[i] = new wxBoxSizer(wxVERTICAL); wxBoxSizer *m_sAnalogLeft = new wxBoxSizer(wxVERTICAL);
m_sAnalogMiddle[i] = new wxBoxSizer(wxVERTICAL); wxBoxSizer *m_sAnalogMiddle = new wxBoxSizer(wxVERTICAL);
m_sAnalogRight[i] = new wxBoxSizer(wxVERTICAL); wxBoxSizer *m_sAnalogRight = new wxBoxSizer(wxVERTICAL);
for (int x = 0; x < 6; x++) for (int x = 0; x < 6; x++)
{ {
m_statictext_Analog[x][i] = new wxStaticText(m_Controller[i], wxID_ANY, anText[x]); wxStaticText *m_statictext_Analog =
m_Button_Analog[x][i] = new wxButton(m_Controller[i], x + IDB_ANALOG_LEFT_X, wxEmptyString, wxDefaultPosition, wxSize(BtW, BtH)); new wxStaticText(m_Controller, wxID_ANY, anText[x]);
m_Button_Analog[x][i] = new wxButton(m_Controller, x + IDB_ANALOG_LEFT_X,
wxEmptyString, wxDefaultPosition, wxSize(BtW, BtH));
m_Button_Analog[x][i]->SetFont(m_SmallFont); m_Button_Analog[x][i]->SetFont(m_SmallFont);
m_Sizer_Analog[x][i] = new wxBoxSizer(wxHORIZONTAL); wxBoxSizer *m_Sizer_Analog = new wxBoxSizer(wxHORIZONTAL);
m_Sizer_Analog[x][i]->Add(m_statictext_Analog[x][i], 0, (wxUP), 4); m_Sizer_Analog->Add(m_statictext_Analog, 0, (wxUP), 4);
m_Sizer_Analog[x][i]->Add(m_Button_Analog[x][i], 0, (wxLEFT), 2); m_Sizer_Analog->Add(m_Button_Analog[x][i], 0, (wxLEFT), 2);
if (x < 2) // Make some balance if (x < 2) // Make some balance
m_sAnalogLeft[i]->Add(m_Sizer_Analog[x][i], 0, wxALIGN_RIGHT | (wxLEFT | wxRIGHT | wxDOWN), 1); m_sAnalogLeft->Add(m_Sizer_Analog, 0,
wxALIGN_RIGHT | (wxLEFT | wxRIGHT | wxDOWN), 1);
else if (x < 4) else if (x < 4)
m_sAnalogMiddle[i]->Add(m_Sizer_Analog[x][i], 0, wxALIGN_RIGHT | (wxLEFT | wxRIGHT | wxDOWN), 1); m_sAnalogMiddle->Add(m_Sizer_Analog, 0,
wxALIGN_RIGHT | (wxLEFT | wxRIGHT | wxDOWN), 1);
else else
m_sAnalogRight[i]->Add(m_Sizer_Analog[x][i], 0, wxALIGN_RIGHT | (wxLEFT | wxRIGHT | wxDOWN), 1); m_sAnalogRight->Add(m_Sizer_Analog, 0,
wxALIGN_RIGHT | (wxLEFT | wxRIGHT | wxDOWN), 1);
} }
m_gAnalog[i] = new wxStaticBoxSizer (wxHORIZONTAL, m_Controller[i], wxT("Analog Axes and Triggers")); wxStaticBoxSizer *m_gAnalog = new wxStaticBoxSizer (wxHORIZONTAL, m_Controller,
m_gAnalog[i]->Add(m_sAnalogLeft[i], 0, wxALIGN_RIGHT | (wxALL), 0); wxT("Analog Axes and Triggers"));
m_gAnalog[i]->Add(m_sAnalogMiddle[i], 0, wxALIGN_RIGHT | (wxLEFT), 5); m_gAnalog->Add(m_sAnalogLeft, 0, wxALIGN_RIGHT | (wxALL), 0);
m_gAnalog[i]->Add(m_sAnalogRight[i], 0, wxALIGN_RIGHT | (wxLEFT), 5); m_gAnalog->Add(m_sAnalogMiddle, 0, wxALIGN_RIGHT | (wxLEFT), 5);
m_gAnalog[i]->AddSpacer(1); m_gAnalog->Add(m_sAnalogRight, 0, wxALIGN_RIGHT | (wxLEFT), 5);
m_gAnalog->AddSpacer(1);
// Row 3 Sizes: Analog Mapping // Row 3 Sizes: Analog Mapping
m_sHorizAnalogMapping[i] = new wxBoxSizer(wxHORIZONTAL); wxBoxSizer *m_sHorizAnalogMapping = new wxBoxSizer(wxHORIZONTAL);
m_sHorizAnalogMapping[i]->Add(m_gAnalog[i], 0, (wxLEFT), 5); m_sHorizAnalogMapping->Add(m_gAnalog, 0, (wxLEFT), 5);
// Wiimote Mapping // Wiimote Mapping
m_sWmVertLeft[i] = new wxBoxSizer(wxVERTICAL); wxBoxSizer *m_sWmVertLeft = new wxBoxSizer(wxVERTICAL);
m_sWmVertRight[i] = new wxBoxSizer(wxVERTICAL); wxBoxSizer *m_sWmVertRight = new wxBoxSizer(wxVERTICAL);
for (int x = 0; x <= IDB_WM_SHAKE - IDB_WM_A; x++) for (int x = 0; x <= IDB_WM_SHAKE - IDB_WM_A; x++)
{ {
m_statictext_Wiimote[x][i] = new wxStaticText(m_Controller[i], wxID_ANY, wmText[x]); wxStaticText *m_statictext_Wiimote = new wxStaticText(m_Controller, wxID_ANY, wmText[x]);
m_Button_Wiimote[x][i] = new wxButton(m_Controller[i], x + IDB_WM_A, wxEmptyString, wxDefaultPosition, wxSize(BtW, BtH)); m_Button_Wiimote[x][i] = new wxButton(m_Controller, x + IDB_WM_A,
m_Button_Wiimote[x][i]->SetFont(m_SmallFont); wxEmptyString, wxDefaultPosition, wxSize(BtW, BtH));
m_Sizer_Wiimote[x][i] = new wxBoxSizer(wxHORIZONTAL); m_Button_Wiimote[x][i]->SetFont(m_SmallFont);
m_Sizer_Wiimote[x][i]->Add(m_statictext_Wiimote[x][i], 0, (wxUP), 4); wxBoxSizer *m_Sizer_Wiimote = new wxBoxSizer(wxHORIZONTAL);
m_Sizer_Wiimote[x][i]->Add(m_Button_Wiimote[x][i], 0, (wxLEFT), 2); m_Sizer_Wiimote->Add(m_statictext_Wiimote, 0, (wxUP), 4);
if (x < 7 || x == IDB_WM_SHAKE - IDB_WM_A) // Make some balance m_Sizer_Wiimote->Add(m_Button_Wiimote[x][i], 0, (wxLEFT), 2);
m_sWmVertLeft[i]->Add(m_Sizer_Wiimote[x][i], 0, wxALIGN_RIGHT | (wxLEFT | wxRIGHT | wxDOWN), 1); if (x < 7 || x == IDB_WM_SHAKE - IDB_WM_A) // Make some balance
else m_sWmVertLeft->Add(m_Sizer_Wiimote, 0,
m_sWmVertRight[i]->Add(m_Sizer_Wiimote[x][i], 0, wxALIGN_RIGHT | (wxLEFT | wxRIGHT | wxDOWN), 1); wxALIGN_RIGHT | (wxLEFT | wxRIGHT | wxDOWN), 1);
else
m_sWmVertRight->Add(m_Sizer_Wiimote, 0,
wxALIGN_RIGHT | (wxLEFT | wxRIGHT | wxDOWN), 1);
} }
m_gWiimote[i] = new wxStaticBoxSizer (wxHORIZONTAL, m_Controller[i], wxT("Wiimote")); wxStaticBoxSizer *m_gWiimote =
m_gWiimote[i]->Add(m_sWmVertLeft[i], 0, (wxLEFT | wxRIGHT | wxDOWN), 1); new wxStaticBoxSizer (wxHORIZONTAL, m_Controller, wxT("Wiimote"));
m_gWiimote[i]->Add(m_sWmVertRight[i], 0, (wxLEFT | wxRIGHT | wxDOWN), 1); m_gWiimote->Add(m_sWmVertLeft, 0, (wxLEFT | wxRIGHT | wxDOWN), 1);
m_gWiimote->Add(m_sWmVertRight, 0, (wxLEFT | wxRIGHT | wxDOWN), 1);
// Row 4 Sizers: Wiimote and Extension Mapping
wxBoxSizer *m_sHorizControllerMapping = new wxBoxSizer(wxHORIZONTAL);
m_sHorizControllerMapping->Add(m_gWiimote, 0, (wxLEFT), 5);
// Extension Mapping // Extension Mapping
if(WiiMoteEmu::WiiMapping[i].iExtensionConnected == WiiMoteEmu::EXT_NUNCHUK) if(WiiMoteEmu::WiiMapping[i].iExtensionConnected == WiiMoteEmu::EXT_NUNCHUK)
{ {
// Stick controls // Stick controls
m_NunchuckTextStick[i] = new wxStaticText(m_Controller[i], wxID_ANY, wxT("Stick")); wxStaticText *m_NunchuckTextStick =
m_NunchuckComboStick[i] = new wxChoice(m_Controller[i], IDC_NUNCHUCK_STICK, wxDefaultPosition, wxSize(70, -1), StrNunchuck, 0, wxDefaultValidator, StrNunchuck[0]); new wxStaticText(m_Controller, wxID_ANY, wxT("Stick"));
m_NunchuckComboStick[i] = new wxChoice(m_Controller, IDC_NUNCHUCK_STICK,
wxDefaultPosition, wxSize(70, -1), StrNunchuck, 0, wxDefaultValidator, StrNunchuck[0]);
// Sizers
wxBoxSizer *m_sNunchuckStick = new wxBoxSizer(wxHORIZONTAL);
m_sNunchuckStick->Add(m_NunchuckTextStick, 0, (wxUP), 4);
m_sNunchuckStick->Add(m_NunchuckComboStick[i], 0, (wxLEFT), 2);
wxBoxSizer *m_sNCVertLeft = new wxBoxSizer(wxVERTICAL);
wxBoxSizer *m_sNCVertRight = new wxBoxSizer(wxVERTICAL);
m_sNCVertRight->Add(m_sNunchuckStick, 0, wxALIGN_RIGHT | (wxALL), 2);
m_sNCVertRight->AddSpacer(2);
for (int x = 0; x <= IDB_NC_SHAKE - IDB_NC_Z; x++) for (int x = 0; x <= IDB_NC_SHAKE - IDB_NC_Z; x++)
{ {
m_statictext_Nunchuk[x][i] = new wxStaticText(m_Controller[i], wxID_ANY, ncText[x]); wxStaticText *m_statictext_Nunchuk =
m_Button_NunChuck[x][i] = new wxButton(m_Controller[i], x + IDB_NC_Z, wxEmptyString, wxDefaultPosition, wxSize(BtW, BtH)); new wxStaticText(m_Controller, wxID_ANY, ncText[x]);
m_Button_NunChuck[x][i] = new wxButton(m_Controller, x + IDB_NC_Z,
wxEmptyString, wxDefaultPosition, wxSize(BtW, BtH));
m_Button_NunChuck[x][i]->SetFont(m_SmallFont); m_Button_NunChuck[x][i]->SetFont(m_SmallFont);
m_Sizer_NunChuck[x][i] = new wxBoxSizer(wxHORIZONTAL); wxBoxSizer *m_Sizer_NunChuck = new wxBoxSizer(wxHORIZONTAL);
m_Sizer_NunChuck[x][i]->Add(m_statictext_Nunchuk[x][i], 0, (wxUP), 4); m_Sizer_NunChuck->Add(m_statictext_Nunchuk, 0, (wxUP), 4);
m_Sizer_NunChuck[x][i]->Add(m_Button_NunChuck[x][i], 0, (wxLEFT), 2); m_Sizer_NunChuck->Add(m_Button_NunChuck[x][i], 0, (wxLEFT), 2);
if (x < IDB_NC_ROLL_L - IDB_NC_Z) // Make some balance
m_sNCVertLeft->Add(m_Sizer_NunChuck, 0,
wxALIGN_RIGHT | (wxLEFT | wxRIGHT | wxDOWN), 1);
else
m_sNCVertRight->Add(m_Sizer_NunChuck, 0,
wxALIGN_RIGHT | (wxLEFT | wxRIGHT | wxDOWN), 1);
} }
// Sizers wxStaticBoxSizer *m_gNunchuck =
m_sNunchuckStick[i] = new wxBoxSizer(wxHORIZONTAL); new wxStaticBoxSizer (wxHORIZONTAL, m_Controller, wxT("Nunchuck"));
m_sNunchuckStick[i]->Add(m_NunchuckTextStick[i], 0, (wxUP), 4); m_gNunchuck->Add(m_sNCVertLeft, 0, wxALIGN_RIGHT | (wxLEFT | wxRIGHT | wxDOWN), 1);
m_sNunchuckStick[i]->Add(m_NunchuckComboStick[i], 0, (wxLEFT), 2); m_gNunchuck->Add(m_sNCVertRight, 0, wxALIGN_RIGHT | (wxLEFT | wxRIGHT | wxDOWN), 1);
m_sNCVertLeft[i] = new wxBoxSizer(wxVERTICAL);
m_sNCVertRight[i] = new wxBoxSizer(wxVERTICAL);
m_sNCVertRight[i]->Add(m_sNunchuckStick[i], 0, wxALIGN_RIGHT | (wxALL), 2);
m_sNCVertRight[i]->AddSpacer(2);
for (int x = IDB_NC_Z ; x <= IDB_NC_SHAKE; x++)
if (x < IDB_NC_ROLL_L) // Make some balance
m_sNCVertLeft[i]->Add(m_Sizer_NunChuck[x - IDB_NC_Z][i], 0, wxALIGN_RIGHT | (wxLEFT | wxRIGHT | wxDOWN), 1);
else
m_sNCVertRight[i]->Add(m_Sizer_NunChuck[x - IDB_NC_Z][i], 0, wxALIGN_RIGHT | (wxLEFT | wxRIGHT | wxDOWN), 1);
m_gNunchuck[i] = new wxStaticBoxSizer (wxHORIZONTAL, m_Controller[i], wxT("Nunchuck"));
m_gNunchuck[i]->Add(m_sNCVertLeft[i], 0, wxALIGN_RIGHT | (wxLEFT | wxRIGHT | wxDOWN), 1);
m_gNunchuck[i]->Add(m_sNCVertRight[i], 0, wxALIGN_RIGHT | (wxLEFT | wxRIGHT | wxDOWN), 1);
m_sHorizControllerMapping->Add(m_gNunchuck, 0, (wxLEFT), 5);
} }
else if(WiiMoteEmu::WiiMapping[i].iExtensionConnected == WiiMoteEmu::EXT_CLASSIC_CONTROLLER) else if(WiiMoteEmu::WiiMapping[i].iExtensionConnected == WiiMoteEmu::EXT_CLASSIC_CONTROLLER)
{ {
// Stick controls // Stick controls
m_CcTextLeftStick[i] = new wxStaticText(m_Controller[i], wxID_ANY, wxT("Left stick")); wxStaticText *m_CcTextLeftStick =
m_CcComboLeftStick[i] = new wxChoice(m_Controller[i], IDC_CC_LEFT_STICK, wxDefaultPosition, wxSize(70, -1), StrNunchuck, 0, wxDefaultValidator, StrNunchuck[0]); new wxStaticText(m_Controller, wxID_ANY, wxT("Left stick"));
m_CcTextRightStick[i] = new wxStaticText(m_Controller[i], wxID_ANY, wxT("Right stick")); m_CcComboLeftStick[i] = new wxChoice(m_Controller, IDC_CC_LEFT_STICK,
m_CcComboRightStick[i] = new wxChoice(m_Controller[i], IDC_CC_RIGHT_STICK, wxDefaultPosition, wxSize(70, -1), StrNunchuck, 0, wxDefaultValidator, StrNunchuck[0]); wxDefaultPosition, wxSize(70, -1), StrNunchuck, 0, wxDefaultValidator, StrNunchuck[0]);
m_CcTextTriggers[i] = new wxStaticText(m_Controller[i], wxID_ANY, wxT("Triggers")); wxStaticText *m_CcTextRightStick =
m_CcComboTriggers[i] = new wxChoice(m_Controller[i], IDC_CC_TRIGGERS, wxDefaultPosition, wxSize(70, -1), StrCcTriggers, 0, wxDefaultValidator, StrCcTriggers[0]); new wxStaticText(m_Controller, wxID_ANY, wxT("Right stick"));
m_CcComboRightStick[i] = new wxChoice(m_Controller, IDC_CC_RIGHT_STICK,
wxDefaultPosition, wxSize(70, -1), StrNunchuck, 0, wxDefaultValidator, StrNunchuck[0]);
wxStaticText *m_CcTextTriggers =
new wxStaticText(m_Controller, wxID_ANY, wxT("Triggers"));
m_CcComboTriggers[i] = new wxChoice(m_Controller, IDC_CC_TRIGGERS,
wxDefaultPosition, wxSize(70, -1), StrCcTriggers, 0, wxDefaultValidator, StrCcTriggers[0]);
for (int x = 0; x <= IDB_CC_RD - IDB_CC_A; x++) for (int x = 0; x <= IDB_CC_RD - IDB_CC_A; x++)
{ {
m_statictext_Classic[x][i] = new wxStaticText(m_Controller[i], wxID_ANY, classicText[x]); wxStaticText *m_statictext_Classic =
m_Button_Classic[x][i] = new wxButton(m_Controller[i], x + IDB_CC_A, wxEmptyString, wxDefaultPosition, wxSize(BtW, BtH)); new wxStaticText(m_Controller, wxID_ANY, classicText[x]);
m_Button_Classic[x][i] = new wxButton(m_Controller, x + IDB_CC_A,
wxEmptyString, wxDefaultPosition, wxSize(BtW, BtH));
m_Button_Classic[x][i]->SetFont(m_SmallFont); m_Button_Classic[x][i]->SetFont(m_SmallFont);
m_Sizer_Classic[x][i] = new wxBoxSizer(wxHORIZONTAL); m_Sizer_Classic[x][i] = new wxBoxSizer(wxHORIZONTAL);
m_Sizer_Classic[x][i]->Add(m_statictext_Classic[x][i], 0, wxALIGN_RIGHT | (wxUP), 4); m_Sizer_Classic[x][i]->Add(m_statictext_Classic, 0, wxALIGN_RIGHT | (wxUP), 4);
m_Sizer_Classic[x][i]->Add(m_Button_Classic[x][i], 0, wxALIGN_RIGHT | (wxLEFT), 2); m_Sizer_Classic[x][i]->Add(m_Button_Classic[x][i], 0, wxALIGN_RIGHT | (wxLEFT), 2);
} }
// Sizers // Sizers
m_sCcLeftStick[i] = new wxBoxSizer(wxHORIZONTAL); wxBoxSizer *m_sCcLeftStick = new wxBoxSizer(wxHORIZONTAL);
m_sCcLeftStick[i]->Add(m_CcTextLeftStick[i], 0, (wxUP), 4); m_sCcLeftStick->Add(m_CcTextLeftStick, 0, (wxUP), 4);
m_sCcLeftStick[i]->Add(m_CcComboLeftStick[i], 0, (wxLEFT), 2); m_sCcLeftStick->Add(m_CcComboLeftStick[i], 0, (wxLEFT), 2);
m_sCcRightStick[i] = new wxBoxSizer(wxHORIZONTAL); wxBoxSizer *m_sCcRightStick = new wxBoxSizer(wxHORIZONTAL);
m_sCcRightStick[i]->Add(m_CcTextRightStick[i], 0, (wxUP), 4); m_sCcRightStick->Add(m_CcTextRightStick, 0, (wxUP), 4);
m_sCcRightStick[i]->Add(m_CcComboRightStick[i], 0, (wxLEFT), 2); m_sCcRightStick->Add(m_CcComboRightStick[i], 0, (wxLEFT), 2);
m_sCcTriggers[i] = new wxBoxSizer(wxHORIZONTAL); wxBoxSizer *m_sCcTriggers = new wxBoxSizer(wxHORIZONTAL);
m_sCcTriggers[i]->Add(m_CcTextTriggers[i], 0, (wxUP), 4); m_sCcTriggers->Add(m_CcTextTriggers, 0, (wxUP), 4);
m_sCcTriggers[i]->Add(m_CcComboTriggers[i], 0, (wxLEFT), 2); m_sCcTriggers->Add(m_CcComboTriggers[i], 0, (wxLEFT), 2);
m_sCcVertLeft[i] = new wxBoxSizer(wxVERTICAL); wxBoxSizer *m_sCcVertLeft = new wxBoxSizer(wxVERTICAL);
m_sCcVertLeft[i]->Add(m_sCcLeftStick[i], 0, wxALIGN_RIGHT | (wxALL), 2); m_sCcVertLeft->Add(m_sCcLeftStick, 0, wxALIGN_RIGHT | (wxALL), 2);
m_sCcVertLeft[i]->AddSpacer(2); m_sCcVertLeft->AddSpacer(2);
for (int x = IDB_CC_LL; x <= IDB_CC_LD; x++) for (int x = IDB_CC_LL; x <= IDB_CC_LD; x++)
m_sCcVertLeft[i]->Add(m_Sizer_Classic[x - IDB_CC_A][i], 0, wxALIGN_RIGHT | (wxLEFT | wxRIGHT | wxDOWN), 1); m_sCcVertLeft->Add(m_Sizer_Classic[x - IDB_CC_A][i], 0,
wxALIGN_RIGHT | (wxLEFT | wxRIGHT | wxDOWN), 1);
for (int x = IDB_CC_DL; x <= IDB_CC_DD; x++) for (int x = IDB_CC_DL; x <= IDB_CC_DD; x++)
m_sCcVertLeft[i]->Add(m_Sizer_Classic[x - IDB_CC_A][i], 0, wxALIGN_RIGHT | (wxLEFT | wxRIGHT | wxDOWN), 1); m_sCcVertLeft->Add(m_Sizer_Classic[x - IDB_CC_A][i], 0,
wxALIGN_RIGHT | (wxLEFT | wxRIGHT | wxDOWN), 1);
m_sCcVertMiddle[i] = new wxBoxSizer(wxVERTICAL); wxBoxSizer *m_sCcVertMiddle = new wxBoxSizer(wxVERTICAL);
m_sCcVertMiddle[i]->Add(m_sCcRightStick[i], 0, wxALIGN_RIGHT | (wxALL), 2); m_sCcVertMiddle->Add(m_sCcRightStick, 0, wxALIGN_RIGHT | (wxALL), 2);
m_sCcVertMiddle[i]->AddSpacer(2); m_sCcVertMiddle->AddSpacer(2);
for (int x = IDB_CC_RL; x <= IDB_CC_RD; x++) for (int x = IDB_CC_RL; x <= IDB_CC_RD; x++)
m_sCcVertMiddle[i]->Add(m_Sizer_Classic[x - IDB_CC_A][i], 0, wxALIGN_RIGHT | (wxLEFT | wxRIGHT | wxDOWN), 1); m_sCcVertMiddle->Add(m_Sizer_Classic[x - IDB_CC_A][i], 0,
wxALIGN_RIGHT | (wxLEFT | wxRIGHT | wxDOWN), 1);
for (int x = IDB_CC_A; x <= IDB_CC_Y; x++) for (int x = IDB_CC_A; x <= IDB_CC_Y; x++)
m_sCcVertMiddle[i]->Add(m_Sizer_Classic[x - IDB_CC_A][i], 0, wxALIGN_RIGHT | (wxLEFT | wxRIGHT | wxDOWN), 1); m_sCcVertMiddle->Add(m_Sizer_Classic[x - IDB_CC_A][i], 0,
wxALIGN_RIGHT | (wxLEFT | wxRIGHT | wxDOWN), 1);
m_sCcVertRight[i] = new wxBoxSizer(wxVERTICAL); wxBoxSizer *m_sCcVertRight = new wxBoxSizer(wxVERTICAL);
m_sCcVertRight[i]->Add(m_sCcTriggers[i], 0, wxALIGN_RIGHT | (wxALL), 2); m_sCcVertRight->Add(m_sCcTriggers, 0, wxALIGN_RIGHT | (wxALL), 2);
m_sCcVertRight[i]->AddSpacer(2); m_sCcVertRight->AddSpacer(2);
for (int x = IDB_CC_TL; x <= IDB_CC_ZR; x++) for (int x = IDB_CC_TL; x <= IDB_CC_ZR; x++)
m_sCcVertRight[i]->Add(m_Sizer_Classic[x - IDB_CC_A][i], 0, wxALIGN_RIGHT | (wxLEFT | wxRIGHT | wxDOWN), 1); m_sCcVertRight->Add(m_Sizer_Classic[x - IDB_CC_A][i], 0,
wxALIGN_RIGHT | (wxLEFT | wxRIGHT | wxDOWN), 1);
for (int x = IDB_CC_P; x <= IDB_CC_H; x++) for (int x = IDB_CC_P; x <= IDB_CC_H; x++)
m_sCcVertRight[i]->Add(m_Sizer_Classic[x - IDB_CC_A][i], 0, wxALIGN_RIGHT | (wxLEFT | wxRIGHT | wxDOWN), 1); m_sCcVertRight->Add(m_Sizer_Classic[x - IDB_CC_A][i], 0,
wxALIGN_RIGHT | (wxLEFT | wxRIGHT | wxDOWN), 1);
m_gClassicController[i] = new wxStaticBoxSizer (wxHORIZONTAL, m_Controller[i], wxT("Classic Controller")); wxStaticBoxSizer *m_gClassicController = new wxStaticBoxSizer (wxHORIZONTAL,
m_gClassicController[i]->Add(m_sCcVertLeft[i], 0, wxALIGN_RIGHT | (wxLEFT | wxRIGHT | wxDOWN), 1); m_Controller, wxT("Classic Controller"));
m_gClassicController[i]->Add(m_sCcVertMiddle[i], 0, wxALIGN_RIGHT | (wxLEFT | wxRIGHT | wxDOWN), 1); m_gClassicController->Add(m_sCcVertLeft, 0,
m_gClassicController[i]->Add(m_sCcVertRight[i], 0, wxALIGN_RIGHT | (wxLEFT | wxRIGHT | wxDOWN), 1); wxALIGN_RIGHT | (wxLEFT | wxRIGHT | wxDOWN), 1);
m_gClassicController->Add(m_sCcVertMiddle, 0,
wxALIGN_RIGHT | (wxLEFT | wxRIGHT | wxDOWN), 1);
m_gClassicController->Add(m_sCcVertRight, 0,
wxALIGN_RIGHT | (wxLEFT | wxRIGHT | wxDOWN), 1);
m_sHorizControllerMapping->Add(m_gClassicController, 0, (wxLEFT), 5);
} }
else if(WiiMoteEmu::WiiMapping[i].iExtensionConnected == WiiMoteEmu::EXT_GUITARHERO) else if(WiiMoteEmu::WiiMapping[i].iExtensionConnected == WiiMoteEmu::EXT_GUITARHERO)
{ {
// Stick controls // Stick controls
m_tGH3Analog[i] = new wxStaticText(m_Controller[i], wxID_ANY, wxT("Stick")); wxStaticText *m_tGH3Analog =
m_GH3ComboAnalog[i] = new wxChoice(m_Controller[i], IDC_GH3_ANALOG, wxDefaultPosition, wxSize(70, -1), StrAnalogArray, 0, wxDefaultValidator, StrAnalogArray[0]); new wxStaticText(m_Controller, wxID_ANY, wxT("Stick"));
m_GH3ComboAnalog[i] = new wxChoice(m_Controller, IDC_GH3_ANALOG,
wxDefaultPosition, wxSize(70, -1), StrAnalogArray, 0,
wxDefaultValidator, StrAnalogArray[0]);
// Sizers
wxBoxSizer *m_sGH3Analog = new wxBoxSizer(wxHORIZONTAL);
m_sGH3Analog->Add(m_tGH3Analog, 0, (wxUP), 4);
m_sGH3Analog->Add(m_GH3ComboAnalog[i], 0, (wxLEFT), 2);
wxBoxSizer *m_sGH3VertLeft = new wxBoxSizer(wxVERTICAL);
m_sGH3VertLeft->Add(m_sGH3Analog, 0, wxALIGN_RIGHT | (wxALL), 2);
m_sGH3VertLeft->AddSpacer(2);
wxBoxSizer *m_sGH3VertRight = new wxBoxSizer(wxVERTICAL);
for (int x = 0; x <= IDB_GH3_STRUM_DOWN - IDB_GH3_GREEN; x++) for (int x = 0; x <= IDB_GH3_STRUM_DOWN - IDB_GH3_GREEN; x++)
{ {
m_statictext_GH3[x][i] = new wxStaticText(m_Controller[i], wxID_ANY, gh3Text[x]); wxStaticText *m_statictext_GH3 =
m_Button_GH3[x][i] = new wxButton(m_Controller[i], x, wxEmptyString, wxDefaultPosition, wxSize(BtW, BtH)); new wxStaticText(m_Controller, wxID_ANY, gh3Text[x]);
m_Button_GH3[x][i] = new wxButton(m_Controller, x,
wxEmptyString, wxDefaultPosition, wxSize(BtW, BtH));
m_Button_GH3[x][i]->SetFont(m_SmallFont); m_Button_GH3[x][i]->SetFont(m_SmallFont);
m_Sizer_GH3[x][i] = new wxBoxSizer(wxHORIZONTAL); wxBoxSizer *m_Sizer_GH3 = new wxBoxSizer(wxHORIZONTAL);
m_Sizer_GH3[x][i]->Add(m_statictext_GH3[x][i], 0, (wxUP), 4); m_Sizer_GH3->Add(m_statictext_GH3, 0, (wxUP), 4);
m_Sizer_GH3[x][i]->Add(m_Button_GH3[x][i], 0, (wxLEFT), 2); m_Sizer_GH3->Add(m_Button_GH3[x][i], 0, (wxLEFT), 2);
if (x < IDB_GH3_ANALOG_LEFT - IDB_GH3_GREEN)
m_sGH3VertRight->Add(m_Sizer_GH3, 0,
wxALIGN_RIGHT | (wxLEFT | wxRIGHT | wxDOWN), 1);
else
m_sGH3VertLeft->Add(m_Sizer_GH3, 0,
wxALIGN_RIGHT | (wxLEFT | wxRIGHT | wxDOWN), 1);
} }
// Sizers wxStaticBoxSizer *m_gGuitarHero3Controller = new wxStaticBoxSizer (wxHORIZONTAL,
m_sGH3Analog[i] = new wxBoxSizer(wxHORIZONTAL); m_Controller, wxT("Guitar Hero 3 Controller"));
m_sGH3Analog[i]->Add(m_tGH3Analog[i], 0, (wxUP), 4); m_gGuitarHero3Controller->Add(m_sGH3VertLeft, 0,
m_sGH3Analog[i]->Add(m_GH3ComboAnalog[i], 0, (wxLEFT), 2); wxALIGN_RIGHT | (wxLEFT | wxRIGHT | wxDOWN), 1);
m_gGuitarHero3Controller->Add(m_sGH3VertRight, 0,
wxALIGN_RIGHT | (wxLEFT | wxRIGHT | wxDOWN), 1);
m_sGH3VertLeft[i] = new wxBoxSizer(wxVERTICAL); m_sHorizControllerMapping->Add(m_gGuitarHero3Controller, 0, (wxLEFT), 5);
m_sGH3VertLeft[i]->Add(m_sGH3Analog[i], 0, wxALIGN_RIGHT | (wxALL), 2);
m_sGH3VertLeft[i]->AddSpacer(2);
for (int x = IDB_GH3_ANALOG_LEFT; x <= IDB_GH3_STRUM_DOWN; x++)
m_sGH3VertLeft[i]->Add(m_Sizer_GH3[x - IDB_GH3_GREEN][i], 0, wxALIGN_RIGHT | (wxLEFT | wxRIGHT | wxDOWN), 1);
m_sGH3VertRight[i] = new wxBoxSizer(wxVERTICAL);
for (int x = IDB_GH3_GREEN; x <= IDB_GH3_WHAMMY; x++)
m_sGH3VertRight[i]->Add(m_Sizer_GH3[x - IDB_GH3_GREEN][i], 0, wxALIGN_RIGHT | (wxLEFT | wxRIGHT | wxDOWN), 1);
m_gGuitarHero3Controller[i] = new wxStaticBoxSizer (wxHORIZONTAL, m_Controller[i], wxT("Guitar Hero 3 Controller"));
m_gGuitarHero3Controller[i]->Add(m_sGH3VertLeft[i], 0, wxALIGN_RIGHT | (wxLEFT | wxRIGHT | wxDOWN), 1);
m_gGuitarHero3Controller[i]->Add(m_sGH3VertRight[i], 0, wxALIGN_RIGHT | (wxLEFT | wxRIGHT | wxDOWN), 1);
}
// Row 4 Sizers: Wiimote and Extension Mapping
m_sHorizControllerMapping[i] = new wxBoxSizer(wxHORIZONTAL);
m_sHorizControllerMapping[i]->Add(m_gWiimote[i], 0, (wxLEFT), 5);
switch(WiiMoteEmu::WiiMapping[i].iExtensionConnected)
{
case WiiMoteEmu::EXT_NUNCHUK:
m_sHorizControllerMapping[i]->Add(m_gNunchuck[i], 0, (wxLEFT), 5);
break;
case WiiMoteEmu::EXT_CLASSIC_CONTROLLER:
m_sHorizControllerMapping[i]->Add(m_gClassicController[i], 0, (wxLEFT), 5);
break;
case WiiMoteEmu::EXT_GUITARHERO:
m_sHorizControllerMapping[i]->Add(m_gGuitarHero3Controller[i], 0, (wxLEFT), 5);
break;
default:
break;
} }
// Set up sizers and layout // Set up sizers and layout
// The sizer m_sMain will be expanded inside m_Controller // The sizer m_sMain will be expanded inside m_Controller
m_sMain[i] = new wxBoxSizer(wxVERTICAL); wxBoxSizer *m_sMain = new wxBoxSizer(wxVERTICAL);
m_sMain[i]->Add(m_sHorizController[i], 0, wxEXPAND | (wxLEFT | wxRIGHT | wxDOWN), 5); m_sMain->Add(m_sHorizController, 0, wxEXPAND | (wxLEFT | wxRIGHT | wxDOWN), 5);
m_sMain[i]->Add(m_sHorizStatus[i], 0, wxEXPAND | (wxLEFT | wxRIGHT | wxDOWN), 5); m_sMain->Add(m_sHorizStatus, 0, wxEXPAND | (wxLEFT | wxRIGHT | wxDOWN), 5);
m_sMain[i]->Add(m_sHorizAnalogMapping[i], 0, wxEXPAND | (wxLEFT | wxRIGHT | wxDOWN), 5); m_sMain->Add(m_sHorizAnalogMapping, 0, wxEXPAND | (wxLEFT | wxRIGHT | wxDOWN), 5);
m_sMain[i]->Add(m_sHorizControllerMapping[i], 0, wxEXPAND | (wxLEFT | wxRIGHT | wxDOWN), 5); m_sMain->Add(m_sHorizControllerMapping, 0, wxEXPAND | (wxLEFT | wxRIGHT | wxDOWN), 5);
// Set the main sizer // Set the main sizer
m_Controller[i]->SetSizer(m_sMain[i]); m_Controller->SetSizer(m_sMain);
} }
// m_Apply = new wxButton(this, wxID_APPLY, wxT("Apply")); // wxButton *m_Apply = new wxButton(this, wxID_APPLY, wxT("Apply"));
m_Close = new wxButton(this, wxID_CLOSE, wxT("Close")); wxButton *m_Close = new wxButton(this, wxID_CLOSE, wxT("Close"));
wxBoxSizer* sButtons = new wxBoxSizer(wxHORIZONTAL); wxBoxSizer* sButtons = new wxBoxSizer(wxHORIZONTAL);
sButtons->AddStretchSpacer(); sButtons->AddStretchSpacer();
// sButtons->Add(m_Apply, 0, (wxALL), 0); // sButtons->Add(m_Apply, 0, (wxALL), 0);
sButtons->Add(m_Close, 0, (wxLEFT), 5); sButtons->Add(m_Close, 0, (wxLEFT), 5);
m_MainSizer = new wxBoxSizer(wxVERTICAL); wxBoxSizer *m_MainSizer = new wxBoxSizer(wxVERTICAL);
m_MainSizer->Add(m_Notebook, 1, wxEXPAND | wxALL, 5); m_MainSizer->Add(m_Notebook, 1, wxEXPAND | wxALL, 5);
m_MainSizer->Add(sButtons, 0, wxEXPAND | (wxLEFT | wxRIGHT | wxDOWN), 5); m_MainSizer->Add(sButtons, 0, wxEXPAND | (wxLEFT | wxRIGHT | wxDOWN), 5);
@ -1057,9 +1169,11 @@ void WiimotePadConfigDialog::UpdateGUI()
m_TriggerType[m_Page]->SetSelection(WiiMoteEmu::WiiMapping[m_Page].TriggerType); m_TriggerType[m_Page]->SetSelection(WiiMoteEmu::WiiMapping[m_Page].TriggerType);
m_TiltTypeWM[m_Page]->SetSelection(WiiMoteEmu::WiiMapping[m_Page].Tilt.InputWM); m_TiltTypeWM[m_Page]->SetSelection(WiiMoteEmu::WiiMapping[m_Page].Tilt.InputWM);
m_TiltTypeNC[m_Page]->SetSelection(WiiMoteEmu::WiiMapping[m_Page].Tilt.InputNC); m_TiltTypeNC[m_Page]->SetSelection(WiiMoteEmu::WiiMapping[m_Page].Tilt.InputNC);
m_TiltComboRangeRoll[m_Page]->SetSelection(WiiMoteEmu::WiiMapping[m_Page].Tilt.RollDegree / 5 - 1); // 5 to 180, step 5 m_TiltComboRangeRoll[m_Page]->
SetSelection(WiiMoteEmu::WiiMapping[m_Page].Tilt.RollDegree / 5 - 1); // 5 to 180, step 5
m_TiltComboRangeRoll[m_Page]->Enable(!WiiMoteEmu::WiiMapping[m_Page].Tilt.RollSwing); m_TiltComboRangeRoll[m_Page]->Enable(!WiiMoteEmu::WiiMapping[m_Page].Tilt.RollSwing);
m_TiltComboRangePitch[m_Page]->SetSelection(WiiMoteEmu::WiiMapping[m_Page].Tilt.PitchDegree / 5 - 1); // 5 to 180, step 5 m_TiltComboRangePitch[m_Page]->
SetSelection(WiiMoteEmu::WiiMapping[m_Page].Tilt.PitchDegree / 5 - 1); // 5 to 180, step 5
m_TiltComboRangePitch[m_Page]->Enable(!WiiMoteEmu::WiiMapping[m_Page].Tilt.PitchSwing); m_TiltComboRangePitch[m_Page]->Enable(!WiiMoteEmu::WiiMapping[m_Page].Tilt.PitchSwing);
m_TiltRollSwing[m_Page]->SetValue(WiiMoteEmu::WiiMapping[m_Page].Tilt.RollSwing); m_TiltRollSwing[m_Page]->SetValue(WiiMoteEmu::WiiMapping[m_Page].Tilt.RollSwing);
m_TiltPitchSwing[m_Page]->SetValue(WiiMoteEmu::WiiMapping[m_Page].Tilt.PitchSwing); m_TiltPitchSwing[m_Page]->SetValue(WiiMoteEmu::WiiMapping[m_Page].Tilt.PitchSwing);
@ -1198,4 +1312,3 @@ void WiimotePadConfigDialog::UpdateGUI()
DoChangeDeadZone(); DoChangeDeadZone();
} }

View File

@ -151,12 +151,6 @@ class WiimotePadConfigDialog : public wxDialog
wxNotebook *m_Notebook; wxNotebook *m_Notebook;
wxPanel *m_Controller[MAX_WIIMOTES],
*m_pLeftInStatus[MAX_WIIMOTES],
*m_pLeftOutStatus[MAX_WIIMOTES],
*m_pRightInStatus[MAX_WIIMOTES],
*m_pRightOutStatus[MAX_WIIMOTES];
wxStaticBitmap *m_bmpSquareLeftIn[MAX_WIIMOTES], wxStaticBitmap *m_bmpSquareLeftIn[MAX_WIIMOTES],
*m_bmpSquareLeftOut[MAX_WIIMOTES], *m_bmpSquareLeftOut[MAX_WIIMOTES],
*m_bmpSquareRightIn[MAX_WIIMOTES], *m_bmpSquareRightIn[MAX_WIIMOTES],
@ -169,7 +163,7 @@ class WiimotePadConfigDialog : public wxDialog
*m_TiltRollInvert[MAX_WIIMOTES], *m_TiltRollInvert[MAX_WIIMOTES],
*m_TiltPitchInvert[MAX_WIIMOTES]; *m_TiltPitchInvert[MAX_WIIMOTES];
wxButton *m_Close, *m_Apply, *ClickedButton, wxButton *ClickedButton,
*m_Button_Analog[IDB_TRIGGER_R - IDB_ANALOG_LEFT_X + 1][MAX_WIIMOTES], *m_Button_Analog[IDB_TRIGGER_R - IDB_ANALOG_LEFT_X + 1][MAX_WIIMOTES],
*m_Button_Wiimote[IDB_WM_SHAKE - IDB_WM_A + 1][MAX_WIIMOTES], *m_Button_Wiimote[IDB_WM_SHAKE - IDB_WM_A + 1][MAX_WIIMOTES],
*m_Button_NunChuck[IDB_NC_SHAKE - IDB_NC_Z + 1][MAX_WIIMOTES], *m_Button_NunChuck[IDB_NC_SHAKE - IDB_NC_Z + 1][MAX_WIIMOTES],
@ -192,79 +186,12 @@ class WiimotePadConfigDialog : public wxDialog
*m_CcComboTriggers[MAX_WIIMOTES], *m_CcComboTriggers[MAX_WIIMOTES],
*m_GH3ComboAnalog[MAX_WIIMOTES]; *m_GH3ComboAnalog[MAX_WIIMOTES];
wxGridBagSizer *m_sGridTilt[MAX_WIIMOTES], wxBoxSizer *m_Sizer_Classic[IDB_CC_RD - IDB_CC_A + 1][MAX_WIIMOTES];
*m_sGridStickLeft[MAX_WIIMOTES],
*m_sGridStickRight[MAX_WIIMOTES],
*m_sGridTrigger[MAX_WIIMOTES];
wxBoxSizer *m_MainSizer, wxStaticText
*m_sMain[MAX_WIIMOTES],
*m_sDeadZoneHoriz[MAX_WIIMOTES],
*m_sDeadZone[MAX_WIIMOTES],
*m_sDiagonal[MAX_WIIMOTES],
*m_sCircle2Square[MAX_WIIMOTES],
*m_sC2SDeadZone[MAX_WIIMOTES],
*m_sJoyname[MAX_WIIMOTES],
*m_sRumble[MAX_WIIMOTES],
*m_sTiltType[MAX_WIIMOTES],
*m_sHorizController[MAX_WIIMOTES],
*m_sHorizStatus[MAX_WIIMOTES],
*m_Sizer_Analog[IDB_TRIGGER_R - IDB_ANALOG_LEFT_X + 1][MAX_WIIMOTES],
*m_sAnalogLeft[MAX_WIIMOTES],
*m_sAnalogMiddle[MAX_WIIMOTES],
*m_sAnalogRight[MAX_WIIMOTES],
*m_sHorizAnalogMapping[MAX_WIIMOTES],
*m_Sizer_Wiimote[IDB_WM_SHAKE - IDB_WM_A + 1][MAX_WIIMOTES],
*m_sWmVertLeft[MAX_WIIMOTES],
*m_sWmVertRight[MAX_WIIMOTES],
*m_Sizer_NunChuck[IDB_NC_SHAKE - IDB_NC_Z + 1][MAX_WIIMOTES],
*m_sNunchuckStick[MAX_WIIMOTES],
*m_sNCVertLeft[MAX_WIIMOTES],
*m_sNCVertRight[MAX_WIIMOTES],
*m_Sizer_Classic[IDB_CC_RD - IDB_CC_A + 1][MAX_WIIMOTES],
*m_sCcLeftStick[MAX_WIIMOTES],
*m_sCcRightStick[MAX_WIIMOTES],
*m_sCcTriggers[MAX_WIIMOTES],
*m_sCcVertLeft[MAX_WIIMOTES],
*m_sCcVertMiddle[MAX_WIIMOTES],
*m_sCcVertRight[MAX_WIIMOTES],
*m_Sizer_GH3[IDB_GH3_STRUM_DOWN - IDB_GH3_GREEN + 1][MAX_WIIMOTES],
*m_sGH3Analog[MAX_WIIMOTES],
*m_sGH3VertLeft[MAX_WIIMOTES],
*m_sGH3VertRight[MAX_WIIMOTES],
*m_sHorizControllerMapping[MAX_WIIMOTES];
wxStaticBoxSizer *m_gJoyPad[MAX_WIIMOTES],
*m_gTilt[MAX_WIIMOTES],
*m_gStickLeft[MAX_WIIMOTES],
*m_gStickRight[MAX_WIIMOTES],
*m_gTriggers[MAX_WIIMOTES],
*m_gAnalog[MAX_WIIMOTES],
*m_gWiimote[MAX_WIIMOTES],
*m_gNunchuck[MAX_WIIMOTES],
*m_gClassicController[MAX_WIIMOTES],
*m_gGuitarHero3Controller[MAX_WIIMOTES];
wxStaticText *m_ComboDeadZoneLabel[MAX_WIIMOTES],
*m_DiagonalLabel[MAX_WIIMOTES],
*m_RumbleStrengthLabel[MAX_WIIMOTES],
*m_tTiltTypeWM[MAX_WIIMOTES], *m_tTiltTypeNC[MAX_WIIMOTES],
*m_TiltTextRoll[MAX_WIIMOTES], *m_TiltTextPitch[MAX_WIIMOTES],
*m_tStatusLeftIn[MAX_WIIMOTES], *m_tStatusLeftOut[MAX_WIIMOTES], *m_tStatusLeftIn[MAX_WIIMOTES], *m_tStatusLeftOut[MAX_WIIMOTES],
*m_tStatusRightIn[MAX_WIIMOTES], *m_tStatusRightOut[MAX_WIIMOTES], *m_tStatusRightIn[MAX_WIIMOTES], *m_tStatusRightOut[MAX_WIIMOTES],
*m_TriggerL[MAX_WIIMOTES], *m_TriggerR[MAX_WIIMOTES], *m_TriggerStatusL[MAX_WIIMOTES], *m_TriggerStatusR[MAX_WIIMOTES];
*m_TriggerStatusL[MAX_WIIMOTES], *m_TriggerStatusR[MAX_WIIMOTES],
*m_tTriggerSource[MAX_WIIMOTES],
*m_statictext_Analog[IDB_TRIGGER_R - IDB_ANALOG_LEFT_X + 1][MAX_WIIMOTES],
*m_statictext_Wiimote[IDB_WM_SHAKE - IDB_WM_A + 1][MAX_WIIMOTES],
*m_statictext_Nunchuk[IDB_NC_SHAKE - IDB_NC_Z + 1][MAX_WIIMOTES],
*m_statictext_Classic[IDB_CC_RD - IDB_CC_A + 1][MAX_WIIMOTES],
*m_statictext_GH3[IDB_GH3_STRUM_DOWN - IDB_GH3_GREEN + 1][MAX_WIIMOTES],
*m_NunchuckTextStick[5],
*m_CcTextLeftStick[MAX_WIIMOTES],
*m_CcTextRightStick[MAX_WIIMOTES],
*m_CcTextTriggers[MAX_WIIMOTES],
*m_tGH3Analog[MAX_WIIMOTES];
wxBitmap CreateBitmap(); wxBitmap CreateBitmap();
wxBitmap CreateBitmapDot(); wxBitmap CreateBitmapDot();