From d17a054e75a1e8084e424fcca425ebf45889de16 Mon Sep 17 00:00:00 2001 From: Lioncash Date: Fri, 21 Nov 2014 11:55:18 -0500 Subject: [PATCH 01/11] WiimoteConfigDiag: Move GameCube controller settings over Beginning of unifying the controller settings. No functionality yet. --- Source/Core/DolphinWX/WiimoteConfigDiag.cpp | 69 ++++++++++++++++++--- Source/Core/DolphinWX/WiimoteConfigDiag.h | 2 + 2 files changed, 64 insertions(+), 7 deletions(-) diff --git a/Source/Core/DolphinWX/WiimoteConfigDiag.cpp b/Source/Core/DolphinWX/WiimoteConfigDiag.cpp index cb4baff7ff..9cfcb86e12 100644 --- a/Source/Core/DolphinWX/WiimoteConfigDiag.cpp +++ b/Source/Core/DolphinWX/WiimoteConfigDiag.cpp @@ -67,7 +67,9 @@ WiimoteConfigDiag::WiimoteConfigDiag(wxWindow* const parent, InputConfig& config } // "Wiimotes" layout - wxStaticBoxSizer* const wiimote_group = new wxStaticBoxSizer(wxHORIZONTAL, this, _("Wiimotes")); + // TODO: Give sizers better names + wxStaticBoxSizer* const wiimote_group = new wxStaticBoxSizer(wxVERTICAL,this, _("Wiimotes")); + wxBoxSizer* const wiimote_control_section = new wxBoxSizer(wxHORIZONTAL); wxFlexGridSizer* const wiimote_sizer = new wxFlexGridSizer(3, 5, 5); for (unsigned int i = 0; i < 4; ++i) { @@ -75,7 +77,7 @@ WiimoteConfigDiag::WiimoteConfigDiag(wxWindow* const parent, InputConfig& config wiimote_sizer->Add(wiimote_source_ch[i], 0, wxALIGN_CENTER_VERTICAL); wiimote_sizer->Add(wiimote_configure_bt[i]); } - wiimote_group->Add(wiimote_sizer, 1, wxEXPAND, 5 ); + wiimote_control_section->Add(wiimote_sizer, 1, wxEXPAND, 5 ); // "BalanceBoard" layout @@ -206,12 +208,23 @@ WiimoteConfigDiag::WiimoteConfigDiag(wxWindow* const parent, InputConfig& config general_sizer->Add(choice_sizer); general_sizer->Add(general_wiimote_sizer); + // Combine all wiimote UI. + wiimote_group->Add(wiimote_control_section, 0, wxEXPAND | wxALL); + wiimote_group->AddSpacer(5); + wiimote_group->Add(bb_group, 0, wxEXPAND | wxALL); + wiimote_group->Add(real_wiimotes_group, 0, wxEXPAND | wxLEFT | wxRIGHT | wxBOTTOM); + wiimote_group->Add(general_sizer, 0, wxEXPAND | wxLEFT | wxRIGHT | wxBOTTOM); - // Dialog layout - main_sizer->Add(wiimote_group, 0, wxEXPAND | wxALL, 5); - main_sizer->Add(bb_group, 0, wxEXPAND | wxALL, 5); - main_sizer->Add(real_wiimotes_group, 0, wxEXPAND | wxLEFT | wxRIGHT | wxBOTTOM, 5); - main_sizer->Add(general_sizer, 0, wxEXPAND | wxLEFT | wxRIGHT | wxBOTTOM, 5); + // Combine all Wiimote UI controls into their own encompassing sizer. + wxBoxSizer* wiimote_section = new wxBoxSizer(wxVERTICAL); + wiimote_section->Add(CreateGamecubeSizer(), 0, wxEXPAND | wxALL, 5); + wiimote_section->Add(wiimote_group, 0, wxEXPAND | wxALL, 5); + /*wiimote_section->Add(bb_group, 0, wxEXPAND | wxALL, 5); + wiimote_section->Add(real_wiimotes_group, 0, wxEXPAND | wxLEFT | wxRIGHT | wxBOTTOM, 5); + wiimote_section->Add(general_sizer, 0, wxEXPAND | wxLEFT | wxRIGHT | wxBOTTOM, 5);*/ + + // TODO: Rename wiimote_section to something else. + main_sizer->Add(wiimote_section, 0, wxEXPAND); main_sizer->Add(CreateButtonSizer(wxOK | wxCANCEL), 0, wxEXPAND | wxLEFT | wxRIGHT | wxBOTTOM, 5); Bind(wxEVT_BUTTON, &WiimoteConfigDiag::Save, this, wxID_OK); @@ -221,6 +234,48 @@ WiimoteConfigDiag::WiimoteConfigDiag(wxWindow* const parent, InputConfig& config Center(); } +wxStaticBoxSizer* WiimoteConfigDiag::CreateGamecubeSizer() +{ + wxStaticBoxSizer* const gamecube_static_sizer = new wxStaticBoxSizer(wxHORIZONTAL, this, _("GameCube Controllers")); + wxFlexGridSizer* const gamecube_flex_sizer = new wxFlexGridSizer(3, 5, 5); + + static const std::array pad_type_strs = {{ + _("None"), + _("Standard Controller"), + _("Steering Wheel"), + _("Dance Mat"), + _("TaruKonga (Bongos)"), + _("GBA"), + _("AM-Baseboard") + }}; + + wxStaticText* pad_labels[4]; + wxChoice* pad_type_choices[4]; + wxButton* config_buttons[4]; + // TODO: Add bind call here + + for (int i = 0; i < 4; i++) + { + config_buttons[i] = new wxButton(this, wxID_ANY, _("Configure")); + pad_labels[i] = new wxStaticText(this, wxID_ANY, wxString::Format(_("Pad %i"), i + 1)); + + // Only add AM-Baseboard to the first pad. + if (i == 0) + pad_type_choices[i] = new wxChoice(this, wxID_ANY, wxDefaultPosition, wxDefaultSize, pad_type_strs.size(), pad_type_strs.data()); + else + pad_type_choices[i] = new wxChoice(this, wxID_ANY, wxDefaultPosition, wxDefaultSize, pad_type_strs.size() - 1, pad_type_strs.data()); + + gamecube_flex_sizer->Add(pad_labels[i], 0, wxALIGN_CENTER_VERTICAL); + gamecube_flex_sizer->AddGrowableCol(0, 1); + gamecube_flex_sizer->Add(pad_type_choices[i], 0, wxALIGN_CENTER_VERTICAL); + gamecube_flex_sizer->AddGrowableCol(0, 2); + gamecube_flex_sizer->Add(config_buttons[i], 0, wxALIGN_RIGHT); + } + + gamecube_static_sizer->Add(gamecube_flex_sizer, 1, wxEXPAND, 5 ); + return gamecube_static_sizer; +} + void WiimoteConfigDiag::ConfigEmulatedWiimote(wxCommandEvent& ev) { diff --git a/Source/Core/DolphinWX/WiimoteConfigDiag.h b/Source/Core/DolphinWX/WiimoteConfigDiag.h index ddad3c36fb..0edd0a2a87 100644 --- a/Source/Core/DolphinWX/WiimoteConfigDiag.h +++ b/Source/Core/DolphinWX/WiimoteConfigDiag.h @@ -11,6 +11,7 @@ class InputConfig; class wxButton; +class wxStaticBoxSizer; class wxWindow; class WiimoteConfigDiag : public wxDialog @@ -59,6 +60,7 @@ public: } private: + wxStaticBoxSizer* CreateGamecubeSizer(); void Cancel(wxCommandEvent& event); InputConfig& m_config; From 94d033020e240a91b718f3dca974501bbb077a0e Mon Sep 17 00:00:00 2001 From: Lioncash Date: Fri, 21 Nov 2014 13:01:22 -0500 Subject: [PATCH 02/11] WiimoteConfigDiag: Split UI sizer creation into their own functions. --- Source/Core/DolphinWX/WiimoteConfigDiag.cpp | 399 ++++++++++---------- Source/Core/DolphinWX/WiimoteConfigDiag.h | 4 + 2 files changed, 213 insertions(+), 190 deletions(-) diff --git a/Source/Core/DolphinWX/WiimoteConfigDiag.cpp b/Source/Core/DolphinWX/WiimoteConfigDiag.cpp index 9cfcb86e12..53c2acc910 100644 --- a/Source/Core/DolphinWX/WiimoteConfigDiag.cpp +++ b/Source/Core/DolphinWX/WiimoteConfigDiag.cpp @@ -1,3 +1,4 @@ +#include #include #include #include @@ -34,197 +35,12 @@ WiimoteConfigDiag::WiimoteConfigDiag(wxWindow* const parent, InputConfig& config { wxBoxSizer* const main_sizer = new wxBoxSizer(wxVERTICAL); - - // "Wiimotes" controls - wxStaticText* wiimote_label[4]; - wxChoice* wiimote_source_ch[4]; - - for (unsigned int i = 0; i < MAX_WIIMOTES; ++i) - { - wxString wiimote_str = wxString::Format(_("Wiimote %i"), i + 1); - - const wxString src_choices[] = { _("None"), - _("Emulated Wiimote"), _("Real Wiimote"), _("Hybrid Wiimote") }; - - // reserve four ids, so that we can calculate the index from the ids later on - // Stupid wx 2.8 doesn't support reserving sequential IDs, so we need to do that more complicated.. - int source_ctrl_id = wxWindow::NewControlId(); - m_wiimote_index_from_ctrl_id.insert(std::pair(source_ctrl_id, i)); - - int config_bt_id = wxWindow::NewControlId(); - m_wiimote_index_from_conf_bt_id.insert(std::pair(config_bt_id, i)); - - wiimote_label[i] = new wxStaticText(this, wxID_ANY, wiimote_str); - wiimote_source_ch[i] = new wxChoice(this, source_ctrl_id, wxDefaultPosition, wxDefaultSize, sizeof(src_choices)/sizeof(*src_choices), src_choices); - wiimote_source_ch[i]->Bind(wxEVT_CHOICE, &WiimoteConfigDiag::SelectSource, this); - wiimote_configure_bt[i] = new wxButton(this, config_bt_id, _("Configure")); - wiimote_configure_bt[i]->Bind(wxEVT_BUTTON, &WiimoteConfigDiag::ConfigEmulatedWiimote, this); - - m_orig_wiimote_sources[i] = g_wiimote_sources[i]; - wiimote_source_ch[i]->Select(m_orig_wiimote_sources[i]); - if (m_orig_wiimote_sources[i] != WIIMOTE_SRC_EMU && m_orig_wiimote_sources[i] != WIIMOTE_SRC_HYBRID) - wiimote_configure_bt[i]->Disable(); - } - - // "Wiimotes" layout - // TODO: Give sizers better names - wxStaticBoxSizer* const wiimote_group = new wxStaticBoxSizer(wxVERTICAL,this, _("Wiimotes")); - wxBoxSizer* const wiimote_control_section = new wxBoxSizer(wxHORIZONTAL); - wxFlexGridSizer* const wiimote_sizer = new wxFlexGridSizer(3, 5, 5); - for (unsigned int i = 0; i < 4; ++i) - { - wiimote_sizer->Add(wiimote_label[i], 0, wxALIGN_CENTER_VERTICAL); - wiimote_sizer->Add(wiimote_source_ch[i], 0, wxALIGN_CENTER_VERTICAL); - wiimote_sizer->Add(wiimote_configure_bt[i]); - } - wiimote_control_section->Add(wiimote_sizer, 1, wxEXPAND, 5 ); - - - // "BalanceBoard" layout - wxStaticBoxSizer* const bb_group = new wxStaticBoxSizer(wxHORIZONTAL, this, _("Balance Board")); - wxFlexGridSizer* const bb_sizer = new wxFlexGridSizer(1, 5, 5); - int source_ctrl_id = wxWindow::NewControlId(); - m_wiimote_index_from_ctrl_id.insert(std::pair(source_ctrl_id, WIIMOTE_BALANCE_BOARD)); - const wxString src_choices[] = { _("None"), _("Real Balance Board") }; - wxChoice* bb_source = new wxChoice(this, source_ctrl_id, wxDefaultPosition, wxDefaultSize, sizeof(src_choices)/sizeof(*src_choices), src_choices); - bb_source->Bind(wxEVT_CHOICE, &WiimoteConfigDiag::SelectSource, this); - - m_orig_wiimote_sources[WIIMOTE_BALANCE_BOARD] = g_wiimote_sources[WIIMOTE_BALANCE_BOARD]; - bb_source->Select(m_orig_wiimote_sources[WIIMOTE_BALANCE_BOARD] ? 1 : 0); - - bb_sizer->Add(bb_source, 0, wxALIGN_CENTER_VERTICAL); - - bb_group->Add(bb_sizer, 1, wxEXPAND, 5 ); - - - // "Real wiimotes" controls - wxButton* const refresh_btn = new wxButton(this, -1, _("Refresh")); - refresh_btn->Bind(wxEVT_BUTTON, &WiimoteConfigDiag::RefreshRealWiimotes, this); - - wxStaticBoxSizer* const real_wiimotes_group = new wxStaticBoxSizer(wxVERTICAL, this, _("Real Wiimotes")); - - wxBoxSizer* const real_wiimotes_sizer = new wxBoxSizer(wxHORIZONTAL); - - if (!WiimoteReal::g_wiimote_scanner.IsReady()) - real_wiimotes_group->Add(new wxStaticText(this, -1, _("A supported bluetooth device could not be found.\n" - "You must manually connect your wiimotes.")), 0, wxALIGN_CENTER | wxALL, 5); - - wxCheckBox* const continuous_scanning = new wxCheckBox(this, wxID_ANY, _("Continuous Scanning")); - continuous_scanning->Bind(wxEVT_CHECKBOX, &WiimoteConfigDiag::OnContinuousScanning, this); - continuous_scanning->SetValue(SConfig::GetInstance().m_WiimoteContinuousScanning); - - real_wiimotes_sizer->Add(continuous_scanning, 0, wxALIGN_CENTER_VERTICAL); - real_wiimotes_sizer->AddStretchSpacer(1); - real_wiimotes_sizer->Add(refresh_btn, 0, wxALL | wxALIGN_CENTER, 5); - - real_wiimotes_group->Add(real_wiimotes_sizer, 0, wxEXPAND); - - // "General Settings" controls - const wxString str[] = { _("Bottom"), _("Top") }; - wxChoice* const WiiSensBarPos = new wxChoice(this, wxID_ANY, wxDefaultPosition, wxDefaultSize, 2, str); - wxSlider* const WiiSensBarSens = new wxSlider(this, wxID_ANY, 0, 0, 4); - wxSlider* const WiimoteSpkVolume = new wxSlider(this, wxID_ANY, 0, 0, 127); - wxCheckBox* const WiimoteMotor = new wxCheckBox(this, wxID_ANY, _("Wiimote Motor")); - - auto wiimote_speaker = new wxCheckBox(this, wxID_ANY, _("Enable Speaker Data")); - wiimote_speaker->Bind(wxEVT_CHECKBOX, &WiimoteConfigDiag::OnEnableSpeaker, this); - wiimote_speaker->SetValue(SConfig::GetInstance().m_WiimoteEnableSpeaker); - - wxStaticText* const WiiSensBarPosText = new wxStaticText(this, wxID_ANY, _("Sensor Bar Position:")); - wxStaticText* const WiiSensBarSensText = new wxStaticText(this, wxID_ANY, _("IR Sensitivity:")); - wxStaticText* const WiiSensBarSensMinText = new wxStaticText(this, wxID_ANY, _("Min")); - wxStaticText* const WiiSensBarSensMaxText = new wxStaticText(this, wxID_ANY, _("Max")); - wxStaticText* const WiimoteSpkVolumeText = new wxStaticText(this, wxID_ANY, _("Speaker Volume:")); - wxStaticText* const WiimoteSpkVolumeMinText = new wxStaticText(this, wxID_ANY, _("Min")); - wxStaticText* const WiimoteSpkVolumeMaxText = new wxStaticText(this, wxID_ANY, _("Max")); - - // With some GTK themes, no minimum size will be applied - so do this manually here - WiiSensBarSens->SetMinSize(wxSize(100,-1)); - WiimoteSpkVolume->SetMinSize(wxSize(100,-1)); - - - // Disable some controls when emulation is running - if (Core::GetState() != Core::CORE_UNINITIALIZED) - { - WiiSensBarPos->Disable(); - WiiSensBarSens->Disable(); - WiimoteSpkVolume->Disable(); - WiimoteMotor->Disable(); - WiiSensBarPosText->Disable(); - WiiSensBarSensText->Disable(); - WiiSensBarSensMinText->Disable(); - WiiSensBarSensMaxText->Disable(); - WiimoteSpkVolumeText->Disable(); - WiimoteSpkVolumeMinText->Disable(); - WiimoteSpkVolumeMaxText->Disable(); - if (NetPlay::IsNetPlayRunning()) - { - bb_source->Disable(); - for (int i = 0; i < 4; ++i) - { - wiimote_label[i]->Disable(); - wiimote_source_ch[i]->Disable(); - } - } - } - - // "General Settings" initialization - WiiSensBarPos->SetSelection(SConfig::GetInstance().m_SYSCONF->GetData("BT.BAR")); - WiiSensBarSens->SetValue(SConfig::GetInstance().m_SYSCONF->GetData("BT.SENS")); - WiimoteSpkVolume->SetValue(SConfig::GetInstance().m_SYSCONF->GetData("BT.SPKV")); - WiimoteMotor->SetValue(SConfig::GetInstance().m_SYSCONF->GetData("BT.MOT")); - - WiiSensBarPos->Bind(wxEVT_CHOICE, &WiimoteConfigDiag::OnSensorBarPos, this); - WiiSensBarSens->Bind(wxEVT_SLIDER, &WiimoteConfigDiag::OnSensorBarSensitivity, this); - WiimoteSpkVolume->Bind(wxEVT_SLIDER, &WiimoteConfigDiag::OnSpeakerVolume, this); - WiimoteMotor->Bind(wxEVT_CHECKBOX, &WiimoteConfigDiag::OnMotor, this); - - - // "General Settings" layout - wxStaticBoxSizer* const general_sizer = new wxStaticBoxSizer(wxVERTICAL, this, _("General Settings")); - wxFlexGridSizer* const choice_sizer = new wxFlexGridSizer(2, 5, 5); - - wxBoxSizer* const sensbarsens_sizer = new wxBoxSizer(wxHORIZONTAL); - sensbarsens_sizer->Add(WiiSensBarSensMinText, 0, wxALIGN_CENTER_VERTICAL); - sensbarsens_sizer->Add(WiiSensBarSens); - sensbarsens_sizer->Add(WiiSensBarSensMaxText, 0, wxALIGN_CENTER_VERTICAL); - - wxBoxSizer* const spkvol_sizer = new wxBoxSizer(wxHORIZONTAL); - spkvol_sizer->Add(WiimoteSpkVolumeMinText, 0, wxALIGN_CENTER_VERTICAL); - spkvol_sizer->Add(WiimoteSpkVolume); - spkvol_sizer->Add(WiimoteSpkVolumeMaxText, 0, wxALIGN_CENTER_VERTICAL); - - choice_sizer->Add(WiiSensBarPosText, 0, wxALIGN_CENTER_VERTICAL); - choice_sizer->Add(WiiSensBarPos); - choice_sizer->Add(WiiSensBarSensText, 0, wxALIGN_CENTER_VERTICAL); - choice_sizer->Add(sensbarsens_sizer); - choice_sizer->Add(WiimoteSpkVolumeText, 0, wxALIGN_CENTER_VERTICAL); - choice_sizer->Add(spkvol_sizer); - - wxGridSizer* const general_wiimote_sizer = new wxGridSizer(1, 5, 5); - general_wiimote_sizer->Add(WiimoteMotor); - general_wiimote_sizer->Add(wiimote_speaker, 0); - - general_sizer->Add(choice_sizer); - general_sizer->Add(general_wiimote_sizer); - - // Combine all wiimote UI. - wiimote_group->Add(wiimote_control_section, 0, wxEXPAND | wxALL); - wiimote_group->AddSpacer(5); - wiimote_group->Add(bb_group, 0, wxEXPAND | wxALL); - wiimote_group->Add(real_wiimotes_group, 0, wxEXPAND | wxLEFT | wxRIGHT | wxBOTTOM); - wiimote_group->Add(general_sizer, 0, wxEXPAND | wxLEFT | wxRIGHT | wxBOTTOM); - - // Combine all Wiimote UI controls into their own encompassing sizer. - wxBoxSizer* wiimote_section = new wxBoxSizer(wxVERTICAL); - wiimote_section->Add(CreateGamecubeSizer(), 0, wxEXPAND | wxALL, 5); - wiimote_section->Add(wiimote_group, 0, wxEXPAND | wxALL, 5); - /*wiimote_section->Add(bb_group, 0, wxEXPAND | wxALL, 5); - wiimote_section->Add(real_wiimotes_group, 0, wxEXPAND | wxLEFT | wxRIGHT | wxBOTTOM, 5); - wiimote_section->Add(general_sizer, 0, wxEXPAND | wxLEFT | wxRIGHT | wxBOTTOM, 5);*/ + // Combine all UI controls into their own encompassing sizer. + wxBoxSizer* control_sizer = new wxBoxSizer(wxVERTICAL); + control_sizer->Add(CreateGamecubeSizer(), 0, wxEXPAND | wxALL, 5); + control_sizer->Add(CreateWiimoteConfigSizer(), 0, wxEXPAND | wxALL, 5); - // TODO: Rename wiimote_section to something else. - main_sizer->Add(wiimote_section, 0, wxEXPAND); + main_sizer->Add(control_sizer, 0, wxEXPAND); main_sizer->Add(CreateButtonSizer(wxOK | wxCANCEL), 0, wxEXPAND | wxLEFT | wxRIGHT | wxBOTTOM, 5); Bind(wxEVT_BUTTON, &WiimoteConfigDiag::Save, this, wxID_OK); @@ -276,6 +92,209 @@ wxStaticBoxSizer* WiimoteConfigDiag::CreateGamecubeSizer() return gamecube_static_sizer; } +wxStaticBoxSizer* WiimoteConfigDiag::CreateWiimoteConfigSizer() +{ + wxStaticText* wiimote_label[4]; + wxChoice* wiimote_source_ch[4]; + + for (unsigned int i = 0; i < MAX_WIIMOTES; ++i) + { + wxString wiimote_str = wxString::Format(_("Wiimote %i"), i + 1); + + static const std::array src_choices = {{ + _("None"), _("Emulated Wiimote"), _("Real Wiimote"), _("Hybrid Wiimote") + }}; + + // reserve four ids, so that we can calculate the index from the ids later on + // Stupid wx 2.8 doesn't support reserving sequential IDs, so we need to do that more complicated.. + int source_ctrl_id = wxWindow::NewControlId(); + m_wiimote_index_from_ctrl_id.insert(std::pair(source_ctrl_id, i)); + + int config_bt_id = wxWindow::NewControlId(); + m_wiimote_index_from_conf_bt_id.insert(std::pair(config_bt_id, i)); + + wiimote_label[i] = new wxStaticText(this, wxID_ANY, wiimote_str); + wiimote_source_ch[i] = new wxChoice(this, source_ctrl_id, wxDefaultPosition, wxDefaultSize, src_choices.size(), src_choices.data()); + wiimote_source_ch[i]->Bind(wxEVT_CHOICE, &WiimoteConfigDiag::SelectSource, this); + wiimote_configure_bt[i] = new wxButton(this, config_bt_id, _("Configure")); + wiimote_configure_bt[i]->Bind(wxEVT_BUTTON, &WiimoteConfigDiag::ConfigEmulatedWiimote, this); + + m_orig_wiimote_sources[i] = g_wiimote_sources[i]; + wiimote_source_ch[i]->Select(m_orig_wiimote_sources[i]); + if (m_orig_wiimote_sources[i] != WIIMOTE_SRC_EMU && m_orig_wiimote_sources[i] != WIIMOTE_SRC_HYBRID) + wiimote_configure_bt[i]->Disable(); + } + + // "Wiimotes" layout + wxStaticBoxSizer* const wiimote_group = new wxStaticBoxSizer(wxVERTICAL,this, _("Wiimotes")); + wxBoxSizer* const wiimote_control_section = new wxBoxSizer(wxHORIZONTAL); + wxFlexGridSizer* const wiimote_sizer = new wxFlexGridSizer(3, 5, 5); + for (unsigned int i = 0; i < 4; ++i) + { + wiimote_sizer->Add(wiimote_label[i], 0, wxALIGN_CENTER_VERTICAL); + wiimote_sizer->Add(wiimote_source_ch[i], 0, wxALIGN_CENTER_VERTICAL); + wiimote_sizer->Add(wiimote_configure_bt[i]); + } + wiimote_control_section->Add(wiimote_sizer, 1, wxEXPAND, 5 ); + + // TODO: Move to wiimote sizer creation. + // Disable some controls when emulation is running + if (Core::GetState() != Core::CORE_UNINITIALIZED && NetPlay::IsNetPlayRunning()) + { + for (int i = 0; i < 4; ++i) + { + wiimote_label[i]->Disable(); + wiimote_source_ch[i]->Disable(); + } + } + + // Combine all wiimote UI. + wiimote_group->Add(wiimote_control_section, 0, wxEXPAND | wxALL); + wiimote_group->AddSpacer(5); + wiimote_group->Add(CreateBalanceBoardSizer(), 0, wxEXPAND | wxALL); + wiimote_group->Add(CreateRealWiimoteSizer(), 0, wxEXPAND | wxLEFT | wxRIGHT | wxBOTTOM); + wiimote_group->Add(CreateGeneralWiimoteSettingsSizer(), 0, wxEXPAND | wxLEFT | wxRIGHT | wxBOTTOM); + + return wiimote_group; +} + +wxStaticBoxSizer* WiimoteConfigDiag::CreateBalanceBoardSizer() +{ + wxStaticBoxSizer* const bb_group = new wxStaticBoxSizer(wxHORIZONTAL, this, _("Balance Board")); + wxFlexGridSizer* const bb_sizer = new wxFlexGridSizer(1, 5, 5); + int source_ctrl_id = wxWindow::NewControlId(); + + m_wiimote_index_from_ctrl_id.insert(std::pair(source_ctrl_id, WIIMOTE_BALANCE_BOARD)); + + static const std::array src_choices = {{ + ("None"), _("Real Balance Board") + }}; + + wxChoice* const bb_source = new wxChoice(this, source_ctrl_id, wxDefaultPosition, wxDefaultSize, src_choices.size(), src_choices.data()); + bb_source->Bind(wxEVT_CHOICE, &WiimoteConfigDiag::SelectSource, this); + + m_orig_wiimote_sources[WIIMOTE_BALANCE_BOARD] = g_wiimote_sources[WIIMOTE_BALANCE_BOARD]; + bb_source->Select(m_orig_wiimote_sources[WIIMOTE_BALANCE_BOARD] ? 1 : 0); + + bb_sizer->Add(bb_source, 0, wxALIGN_CENTER_VERTICAL); + + bb_group->Add(bb_sizer, 1, wxEXPAND, 5); + + // Disable when emulation is running. + if (Core::GetState() != Core::CORE_UNINITIALIZED) + bb_source->Disable(); + + return bb_group; +} + +wxStaticBoxSizer* WiimoteConfigDiag::CreateRealWiimoteSizer() +{ + // "Real wiimotes" controls + wxButton* const refresh_btn = new wxButton(this, -1, _("Refresh")); + refresh_btn->Bind(wxEVT_BUTTON, &WiimoteConfigDiag::RefreshRealWiimotes, this); + + wxStaticBoxSizer* const real_wiimotes_group = new wxStaticBoxSizer(wxVERTICAL, this, _("Real Wiimotes")); + wxBoxSizer* const real_wiimotes_sizer = new wxBoxSizer(wxHORIZONTAL); + + if (!WiimoteReal::g_wiimote_scanner.IsReady()) + real_wiimotes_group->Add(new wxStaticText(this, -1, _("A supported bluetooth device could not be found.\n" + "You must manually connect your wiimotes.")), 0, wxALIGN_CENTER | wxALL, 5); + + wxCheckBox* const continuous_scanning = new wxCheckBox(this, wxID_ANY, _("Continuous Scanning")); + continuous_scanning->Bind(wxEVT_CHECKBOX, &WiimoteConfigDiag::OnContinuousScanning, this); + continuous_scanning->SetValue(SConfig::GetInstance().m_WiimoteContinuousScanning); + + real_wiimotes_sizer->Add(continuous_scanning, 0, wxALIGN_CENTER_VERTICAL); + real_wiimotes_sizer->AddStretchSpacer(1); + real_wiimotes_sizer->Add(refresh_btn, 0, wxALL | wxALIGN_CENTER, 5); + + real_wiimotes_group->Add(real_wiimotes_sizer, 0, wxEXPAND); + + return real_wiimotes_group; +} + +wxStaticBoxSizer* WiimoteConfigDiag::CreateGeneralWiimoteSettingsSizer() +{ + const wxString str[] = { _("Bottom"), _("Top") }; + wxChoice* const WiiSensBarPos = new wxChoice(this, wxID_ANY, wxDefaultPosition, wxDefaultSize, 2, str); + wxSlider* const WiiSensBarSens = new wxSlider(this, wxID_ANY, 0, 0, 4); + wxSlider* const WiimoteSpkVolume = new wxSlider(this, wxID_ANY, 0, 0, 127); + wxCheckBox* const WiimoteMotor = new wxCheckBox(this, wxID_ANY, _("Wiimote Motor")); + + auto wiimote_speaker = new wxCheckBox(this, wxID_ANY, _("Enable Speaker Data")); + wiimote_speaker->Bind(wxEVT_CHECKBOX, &WiimoteConfigDiag::OnEnableSpeaker, this); + wiimote_speaker->SetValue(SConfig::GetInstance().m_WiimoteEnableSpeaker); + + wxStaticText* const WiiSensBarPosText = new wxStaticText(this, wxID_ANY, _("Sensor Bar Position:")); + wxStaticText* const WiiSensBarSensText = new wxStaticText(this, wxID_ANY, _("IR Sensitivity:")); + wxStaticText* const WiiSensBarSensMinText = new wxStaticText(this, wxID_ANY, _("Min")); + wxStaticText* const WiiSensBarSensMaxText = new wxStaticText(this, wxID_ANY, _("Max")); + wxStaticText* const WiimoteSpkVolumeText = new wxStaticText(this, wxID_ANY, _("Speaker Volume:")); + wxStaticText* const WiimoteSpkVolumeMinText = new wxStaticText(this, wxID_ANY, _("Min")); + wxStaticText* const WiimoteSpkVolumeMaxText = new wxStaticText(this, wxID_ANY, _("Max")); + + // With some GTK themes, no minimum size will be applied - so do this manually here + WiiSensBarSens->SetMinSize(wxSize(100,-1)); + WiimoteSpkVolume->SetMinSize(wxSize(100,-1)); + + // Disable some controls when emulation is running + if (Core::GetState() != Core::CORE_UNINITIALIZED) + { + WiiSensBarPos->Disable(); + WiiSensBarSens->Disable(); + WiimoteSpkVolume->Disable(); + WiimoteMotor->Disable(); + WiiSensBarPosText->Disable(); + WiiSensBarSensText->Disable(); + WiiSensBarSensMinText->Disable(); + WiiSensBarSensMaxText->Disable(); + WiimoteSpkVolumeText->Disable(); + WiimoteSpkVolumeMinText->Disable(); + WiimoteSpkVolumeMaxText->Disable(); + } + + // "General Settings" initialization + WiiSensBarPos->SetSelection(SConfig::GetInstance().m_SYSCONF->GetData("BT.BAR")); + WiiSensBarSens->SetValue(SConfig::GetInstance().m_SYSCONF->GetData("BT.SENS")); + WiimoteSpkVolume->SetValue(SConfig::GetInstance().m_SYSCONF->GetData("BT.SPKV")); + WiimoteMotor->SetValue(SConfig::GetInstance().m_SYSCONF->GetData("BT.MOT")); + + WiiSensBarPos->Bind(wxEVT_CHOICE, &WiimoteConfigDiag::OnSensorBarPos, this); + WiiSensBarSens->Bind(wxEVT_SLIDER, &WiimoteConfigDiag::OnSensorBarSensitivity, this); + WiimoteSpkVolume->Bind(wxEVT_SLIDER, &WiimoteConfigDiag::OnSpeakerVolume, this); + WiimoteMotor->Bind(wxEVT_CHECKBOX, &WiimoteConfigDiag::OnMotor, this); + + // "General Settings" layout + wxStaticBoxSizer* const general_sizer = new wxStaticBoxSizer(wxVERTICAL, this, _("General Settings")); + wxFlexGridSizer* const choice_sizer = new wxFlexGridSizer(2, 5, 5); + + wxBoxSizer* const sensbarsens_sizer = new wxBoxSizer(wxHORIZONTAL); + sensbarsens_sizer->Add(WiiSensBarSensMinText, 0, wxALIGN_CENTER_VERTICAL); + sensbarsens_sizer->Add(WiiSensBarSens); + sensbarsens_sizer->Add(WiiSensBarSensMaxText, 0, wxALIGN_CENTER_VERTICAL); + + wxBoxSizer* const spkvol_sizer = new wxBoxSizer(wxHORIZONTAL); + spkvol_sizer->Add(WiimoteSpkVolumeMinText, 0, wxALIGN_CENTER_VERTICAL); + spkvol_sizer->Add(WiimoteSpkVolume); + spkvol_sizer->Add(WiimoteSpkVolumeMaxText, 0, wxALIGN_CENTER_VERTICAL); + + choice_sizer->Add(WiiSensBarPosText, 0, wxALIGN_CENTER_VERTICAL); + choice_sizer->Add(WiiSensBarPos); + choice_sizer->Add(WiiSensBarSensText, 0, wxALIGN_CENTER_VERTICAL); + choice_sizer->Add(sensbarsens_sizer); + choice_sizer->Add(WiimoteSpkVolumeText, 0, wxALIGN_CENTER_VERTICAL); + choice_sizer->Add(spkvol_sizer); + + wxGridSizer* const general_wiimote_sizer = new wxGridSizer(1, 5, 5); + general_wiimote_sizer->Add(WiimoteMotor); + general_wiimote_sizer->Add(wiimote_speaker, 0); + + general_sizer->Add(choice_sizer); + general_sizer->Add(general_wiimote_sizer); + + return general_sizer; +} + void WiimoteConfigDiag::ConfigEmulatedWiimote(wxCommandEvent& ev) { diff --git a/Source/Core/DolphinWX/WiimoteConfigDiag.h b/Source/Core/DolphinWX/WiimoteConfigDiag.h index 0edd0a2a87..5b6e9195ed 100644 --- a/Source/Core/DolphinWX/WiimoteConfigDiag.h +++ b/Source/Core/DolphinWX/WiimoteConfigDiag.h @@ -61,6 +61,10 @@ public: private: wxStaticBoxSizer* CreateGamecubeSizer(); + wxStaticBoxSizer* CreateWiimoteConfigSizer(); + wxStaticBoxSizer* CreateBalanceBoardSizer(); + wxStaticBoxSizer* CreateRealWiimoteSizer(); + wxStaticBoxSizer* CreateGeneralWiimoteSettingsSizer(); void Cancel(wxCommandEvent& event); InputConfig& m_config; From 1791897815b71d0a53f117d15012955ada8d76d7 Mon Sep 17 00:00:00 2001 From: Lioncash Date: Fri, 21 Nov 2014 22:33:46 -0500 Subject: [PATCH 03/11] WiimoteConfigDiag: Fix assertion problems on non-OSX OSes. --- Source/Core/DolphinWX/WiimoteConfigDiag.cpp | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/Source/Core/DolphinWX/WiimoteConfigDiag.cpp b/Source/Core/DolphinWX/WiimoteConfigDiag.cpp index 53c2acc910..ee2b5fdc95 100644 --- a/Source/Core/DolphinWX/WiimoteConfigDiag.cpp +++ b/Source/Core/DolphinWX/WiimoteConfigDiag.cpp @@ -73,7 +73,7 @@ wxStaticBoxSizer* WiimoteConfigDiag::CreateGamecubeSizer() for (int i = 0; i < 4; i++) { config_buttons[i] = new wxButton(this, wxID_ANY, _("Configure")); - pad_labels[i] = new wxStaticText(this, wxID_ANY, wxString::Format(_("Pad %i"), i + 1)); + pad_labels[i] = new wxStaticText(this, wxID_ANY, wxString::Format(_("Port %i"), i + 1)); // Only add AM-Baseboard to the first pad. if (i == 0) @@ -82,13 +82,11 @@ wxStaticBoxSizer* WiimoteConfigDiag::CreateGamecubeSizer() pad_type_choices[i] = new wxChoice(this, wxID_ANY, wxDefaultPosition, wxDefaultSize, pad_type_strs.size() - 1, pad_type_strs.data()); gamecube_flex_sizer->Add(pad_labels[i], 0, wxALIGN_CENTER_VERTICAL); - gamecube_flex_sizer->AddGrowableCol(0, 1); gamecube_flex_sizer->Add(pad_type_choices[i], 0, wxALIGN_CENTER_VERTICAL); - gamecube_flex_sizer->AddGrowableCol(0, 2); - gamecube_flex_sizer->Add(config_buttons[i], 0, wxALIGN_RIGHT); + gamecube_flex_sizer->Add(config_buttons[i], 0, wxALIGN_CENTER_VERTICAL); } - gamecube_static_sizer->Add(gamecube_flex_sizer, 1, wxEXPAND, 5 ); + gamecube_static_sizer->Add(gamecube_flex_sizer, 1, wxEXPAND, 5); return gamecube_static_sizer; } @@ -152,7 +150,9 @@ wxStaticBoxSizer* WiimoteConfigDiag::CreateWiimoteConfigSizer() wiimote_group->Add(wiimote_control_section, 0, wxEXPAND | wxALL); wiimote_group->AddSpacer(5); wiimote_group->Add(CreateBalanceBoardSizer(), 0, wxEXPAND | wxALL); + wiimote_group->AddSpacer(5); wiimote_group->Add(CreateRealWiimoteSizer(), 0, wxEXPAND | wxLEFT | wxRIGHT | wxBOTTOM); + wiimote_group->AddSpacer(5); wiimote_group->Add(CreateGeneralWiimoteSettingsSizer(), 0, wxEXPAND | wxLEFT | wxRIGHT | wxBOTTOM); return wiimote_group; From 22c547f6fb7c87feba5482c0da98642ee9dd5e2c Mon Sep 17 00:00:00 2001 From: Lioncash Date: Fri, 21 Nov 2014 22:35:56 -0500 Subject: [PATCH 04/11] WiimoteConfigDiag: Remove trailing whitespace --- Source/Core/DolphinWX/WiimoteConfigDiag.cpp | 56 ++++++++++----------- 1 file changed, 28 insertions(+), 28 deletions(-) diff --git a/Source/Core/DolphinWX/WiimoteConfigDiag.cpp b/Source/Core/DolphinWX/WiimoteConfigDiag.cpp index ee2b5fdc95..7d4b6f2ee4 100644 --- a/Source/Core/DolphinWX/WiimoteConfigDiag.cpp +++ b/Source/Core/DolphinWX/WiimoteConfigDiag.cpp @@ -39,7 +39,7 @@ WiimoteConfigDiag::WiimoteConfigDiag(wxWindow* const parent, InputConfig& config wxBoxSizer* control_sizer = new wxBoxSizer(wxVERTICAL); control_sizer->Add(CreateGamecubeSizer(), 0, wxEXPAND | wxALL, 5); control_sizer->Add(CreateWiimoteConfigSizer(), 0, wxEXPAND | wxALL, 5); - + main_sizer->Add(control_sizer, 0, wxEXPAND); main_sizer->Add(CreateButtonSizer(wxOK | wxCANCEL), 0, wxEXPAND | wxLEFT | wxRIGHT | wxBOTTOM, 5); @@ -94,35 +94,35 @@ wxStaticBoxSizer* WiimoteConfigDiag::CreateWiimoteConfigSizer() { wxStaticText* wiimote_label[4]; wxChoice* wiimote_source_ch[4]; - + for (unsigned int i = 0; i < MAX_WIIMOTES; ++i) { wxString wiimote_str = wxString::Format(_("Wiimote %i"), i + 1); - + static const std::array src_choices = {{ _("None"), _("Emulated Wiimote"), _("Real Wiimote"), _("Hybrid Wiimote") }}; - + // reserve four ids, so that we can calculate the index from the ids later on // Stupid wx 2.8 doesn't support reserving sequential IDs, so we need to do that more complicated.. int source_ctrl_id = wxWindow::NewControlId(); m_wiimote_index_from_ctrl_id.insert(std::pair(source_ctrl_id, i)); - + int config_bt_id = wxWindow::NewControlId(); m_wiimote_index_from_conf_bt_id.insert(std::pair(config_bt_id, i)); - + wiimote_label[i] = new wxStaticText(this, wxID_ANY, wiimote_str); wiimote_source_ch[i] = new wxChoice(this, source_ctrl_id, wxDefaultPosition, wxDefaultSize, src_choices.size(), src_choices.data()); wiimote_source_ch[i]->Bind(wxEVT_CHOICE, &WiimoteConfigDiag::SelectSource, this); wiimote_configure_bt[i] = new wxButton(this, config_bt_id, _("Configure")); wiimote_configure_bt[i]->Bind(wxEVT_BUTTON, &WiimoteConfigDiag::ConfigEmulatedWiimote, this); - + m_orig_wiimote_sources[i] = g_wiimote_sources[i]; wiimote_source_ch[i]->Select(m_orig_wiimote_sources[i]); if (m_orig_wiimote_sources[i] != WIIMOTE_SRC_EMU && m_orig_wiimote_sources[i] != WIIMOTE_SRC_HYBRID) wiimote_configure_bt[i]->Disable(); } - + // "Wiimotes" layout wxStaticBoxSizer* const wiimote_group = new wxStaticBoxSizer(wxVERTICAL,this, _("Wiimotes")); wxBoxSizer* const wiimote_control_section = new wxBoxSizer(wxHORIZONTAL); @@ -134,7 +134,7 @@ wxStaticBoxSizer* WiimoteConfigDiag::CreateWiimoteConfigSizer() wiimote_sizer->Add(wiimote_configure_bt[i]); } wiimote_control_section->Add(wiimote_sizer, 1, wxEXPAND, 5 ); - + // TODO: Move to wiimote sizer creation. // Disable some controls when emulation is running if (Core::GetState() != Core::CORE_UNINITIALIZED && NetPlay::IsNetPlayRunning()) @@ -145,7 +145,7 @@ wxStaticBoxSizer* WiimoteConfigDiag::CreateWiimoteConfigSizer() wiimote_source_ch[i]->Disable(); } } - + // Combine all wiimote UI. wiimote_group->Add(wiimote_control_section, 0, wxEXPAND | wxALL); wiimote_group->AddSpacer(5); @@ -172,12 +172,12 @@ wxStaticBoxSizer* WiimoteConfigDiag::CreateBalanceBoardSizer() wxChoice* const bb_source = new wxChoice(this, source_ctrl_id, wxDefaultPosition, wxDefaultSize, src_choices.size(), src_choices.data()); bb_source->Bind(wxEVT_CHOICE, &WiimoteConfigDiag::SelectSource, this); - + m_orig_wiimote_sources[WIIMOTE_BALANCE_BOARD] = g_wiimote_sources[WIIMOTE_BALANCE_BOARD]; bb_source->Select(m_orig_wiimote_sources[WIIMOTE_BALANCE_BOARD] ? 1 : 0); - + bb_sizer->Add(bb_source, 0, wxALIGN_CENTER_VERTICAL); - + bb_group->Add(bb_sizer, 1, wxEXPAND, 5); // Disable when emulation is running. @@ -192,22 +192,22 @@ wxStaticBoxSizer* WiimoteConfigDiag::CreateRealWiimoteSizer() // "Real wiimotes" controls wxButton* const refresh_btn = new wxButton(this, -1, _("Refresh")); refresh_btn->Bind(wxEVT_BUTTON, &WiimoteConfigDiag::RefreshRealWiimotes, this); - + wxStaticBoxSizer* const real_wiimotes_group = new wxStaticBoxSizer(wxVERTICAL, this, _("Real Wiimotes")); wxBoxSizer* const real_wiimotes_sizer = new wxBoxSizer(wxHORIZONTAL); - + if (!WiimoteReal::g_wiimote_scanner.IsReady()) real_wiimotes_group->Add(new wxStaticText(this, -1, _("A supported bluetooth device could not be found.\n" "You must manually connect your wiimotes.")), 0, wxALIGN_CENTER | wxALL, 5); - + wxCheckBox* const continuous_scanning = new wxCheckBox(this, wxID_ANY, _("Continuous Scanning")); continuous_scanning->Bind(wxEVT_CHECKBOX, &WiimoteConfigDiag::OnContinuousScanning, this); continuous_scanning->SetValue(SConfig::GetInstance().m_WiimoteContinuousScanning); - + real_wiimotes_sizer->Add(continuous_scanning, 0, wxALIGN_CENTER_VERTICAL); real_wiimotes_sizer->AddStretchSpacer(1); real_wiimotes_sizer->Add(refresh_btn, 0, wxALL | wxALIGN_CENTER, 5); - + real_wiimotes_group->Add(real_wiimotes_sizer, 0, wxEXPAND); return real_wiimotes_group; @@ -220,11 +220,11 @@ wxStaticBoxSizer* WiimoteConfigDiag::CreateGeneralWiimoteSettingsSizer() wxSlider* const WiiSensBarSens = new wxSlider(this, wxID_ANY, 0, 0, 4); wxSlider* const WiimoteSpkVolume = new wxSlider(this, wxID_ANY, 0, 0, 127); wxCheckBox* const WiimoteMotor = new wxCheckBox(this, wxID_ANY, _("Wiimote Motor")); - + auto wiimote_speaker = new wxCheckBox(this, wxID_ANY, _("Enable Speaker Data")); wiimote_speaker->Bind(wxEVT_CHECKBOX, &WiimoteConfigDiag::OnEnableSpeaker, this); wiimote_speaker->SetValue(SConfig::GetInstance().m_WiimoteEnableSpeaker); - + wxStaticText* const WiiSensBarPosText = new wxStaticText(this, wxID_ANY, _("Sensor Bar Position:")); wxStaticText* const WiiSensBarSensText = new wxStaticText(this, wxID_ANY, _("IR Sensitivity:")); wxStaticText* const WiiSensBarSensMinText = new wxStaticText(this, wxID_ANY, _("Min")); @@ -232,7 +232,7 @@ wxStaticBoxSizer* WiimoteConfigDiag::CreateGeneralWiimoteSettingsSizer() wxStaticText* const WiimoteSpkVolumeText = new wxStaticText(this, wxID_ANY, _("Speaker Volume:")); wxStaticText* const WiimoteSpkVolumeMinText = new wxStaticText(this, wxID_ANY, _("Min")); wxStaticText* const WiimoteSpkVolumeMaxText = new wxStaticText(this, wxID_ANY, _("Max")); - + // With some GTK themes, no minimum size will be applied - so do this manually here WiiSensBarSens->SetMinSize(wxSize(100,-1)); WiimoteSpkVolume->SetMinSize(wxSize(100,-1)); @@ -252,13 +252,13 @@ wxStaticBoxSizer* WiimoteConfigDiag::CreateGeneralWiimoteSettingsSizer() WiimoteSpkVolumeMinText->Disable(); WiimoteSpkVolumeMaxText->Disable(); } - + // "General Settings" initialization WiiSensBarPos->SetSelection(SConfig::GetInstance().m_SYSCONF->GetData("BT.BAR")); WiiSensBarSens->SetValue(SConfig::GetInstance().m_SYSCONF->GetData("BT.SENS")); WiimoteSpkVolume->SetValue(SConfig::GetInstance().m_SYSCONF->GetData("BT.SPKV")); WiimoteMotor->SetValue(SConfig::GetInstance().m_SYSCONF->GetData("BT.MOT")); - + WiiSensBarPos->Bind(wxEVT_CHOICE, &WiimoteConfigDiag::OnSensorBarPos, this); WiiSensBarSens->Bind(wxEVT_SLIDER, &WiimoteConfigDiag::OnSensorBarSensitivity, this); WiimoteSpkVolume->Bind(wxEVT_SLIDER, &WiimoteConfigDiag::OnSpeakerVolume, this); @@ -267,28 +267,28 @@ wxStaticBoxSizer* WiimoteConfigDiag::CreateGeneralWiimoteSettingsSizer() // "General Settings" layout wxStaticBoxSizer* const general_sizer = new wxStaticBoxSizer(wxVERTICAL, this, _("General Settings")); wxFlexGridSizer* const choice_sizer = new wxFlexGridSizer(2, 5, 5); - + wxBoxSizer* const sensbarsens_sizer = new wxBoxSizer(wxHORIZONTAL); sensbarsens_sizer->Add(WiiSensBarSensMinText, 0, wxALIGN_CENTER_VERTICAL); sensbarsens_sizer->Add(WiiSensBarSens); sensbarsens_sizer->Add(WiiSensBarSensMaxText, 0, wxALIGN_CENTER_VERTICAL); - + wxBoxSizer* const spkvol_sizer = new wxBoxSizer(wxHORIZONTAL); spkvol_sizer->Add(WiimoteSpkVolumeMinText, 0, wxALIGN_CENTER_VERTICAL); spkvol_sizer->Add(WiimoteSpkVolume); spkvol_sizer->Add(WiimoteSpkVolumeMaxText, 0, wxALIGN_CENTER_VERTICAL); - + choice_sizer->Add(WiiSensBarPosText, 0, wxALIGN_CENTER_VERTICAL); choice_sizer->Add(WiiSensBarPos); choice_sizer->Add(WiiSensBarSensText, 0, wxALIGN_CENTER_VERTICAL); choice_sizer->Add(sensbarsens_sizer); choice_sizer->Add(WiimoteSpkVolumeText, 0, wxALIGN_CENTER_VERTICAL); choice_sizer->Add(spkvol_sizer); - + wxGridSizer* const general_wiimote_sizer = new wxGridSizer(1, 5, 5); general_wiimote_sizer->Add(WiimoteMotor); general_wiimote_sizer->Add(wiimote_speaker, 0); - + general_sizer->Add(choice_sizer); general_sizer->Add(general_wiimote_sizer); From 00dcaba37d66e0cd80442b9e4956e7d986f34a9b Mon Sep 17 00:00:00 2001 From: Lioncash Date: Fri, 21 Nov 2014 23:10:13 -0500 Subject: [PATCH 05/11] WiimoteConfigDiag: Size the config buttons correctly --- Source/Core/DolphinWX/WiimoteConfigDiag.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Source/Core/DolphinWX/WiimoteConfigDiag.cpp b/Source/Core/DolphinWX/WiimoteConfigDiag.cpp index 7d4b6f2ee4..96e1e98017 100644 --- a/Source/Core/DolphinWX/WiimoteConfigDiag.cpp +++ b/Source/Core/DolphinWX/WiimoteConfigDiag.cpp @@ -72,7 +72,7 @@ wxStaticBoxSizer* WiimoteConfigDiag::CreateGamecubeSizer() for (int i = 0; i < 4; i++) { - config_buttons[i] = new wxButton(this, wxID_ANY, _("Configure")); + config_buttons[i] = new wxButton(this, wxID_ANY, _("Configure"), wxDefaultPosition, wxSize(100, 25)); pad_labels[i] = new wxStaticText(this, wxID_ANY, wxString::Format(_("Port %i"), i + 1)); // Only add AM-Baseboard to the first pad. @@ -83,7 +83,7 @@ wxStaticBoxSizer* WiimoteConfigDiag::CreateGamecubeSizer() gamecube_flex_sizer->Add(pad_labels[i], 0, wxALIGN_CENTER_VERTICAL); gamecube_flex_sizer->Add(pad_type_choices[i], 0, wxALIGN_CENTER_VERTICAL); - gamecube_flex_sizer->Add(config_buttons[i], 0, wxALIGN_CENTER_VERTICAL); + gamecube_flex_sizer->Add(config_buttons[i], 1, wxEXPAND); } gamecube_static_sizer->Add(gamecube_flex_sizer, 1, wxEXPAND, 5); From e801fcead90b3044b76a79fdbc456cea15cfd3c0 Mon Sep 17 00:00:00 2001 From: Lioncash Date: Sat, 22 Nov 2014 15:29:13 -0500 Subject: [PATCH 06/11] WiimoteConfigDiag: Unify controller menu with the GameCube controllers. --- Source/Core/DolphinWX/ConfigMain.cpp | 114 -------------- Source/Core/DolphinWX/ConfigMain.h | 8 - Source/Core/DolphinWX/Frame.cpp | 3 +- Source/Core/DolphinWX/Frame.h | 6 +- Source/Core/DolphinWX/FrameTools.cpp | 82 ++-------- Source/Core/DolphinWX/Globals.h | 3 +- Source/Core/DolphinWX/WiimoteConfigDiag.cpp | 160 +++++++++++++++++--- Source/Core/DolphinWX/WiimoteConfigDiag.h | 12 +- 8 files changed, 171 insertions(+), 217 deletions(-) diff --git a/Source/Core/DolphinWX/ConfigMain.cpp b/Source/Core/DolphinWX/ConfigMain.cpp index 96c29f2d87..d213a7cbda 100644 --- a/Source/Core/DolphinWX/ConfigMain.cpp +++ b/Source/Core/DolphinWX/ConfigMain.cpp @@ -107,13 +107,6 @@ static const wxLanguage langIds[] = #define DEV_NONE_STR _trans("") #define DEV_DUMMY_STR _trans("Dummy") -#define SIDEV_STDCONT_STR _trans("Standard Controller") -#define SIDEV_STEERING_STR _trans("Steering Wheel") -#define SIDEV_DANCEMAT_STR _trans("Dance Mat") -#define SIDEV_BONGO_STR _trans("TaruKonga (Bongos)") -#define SIDEV_GBA_STR "GBA" -#define SIDEV_AM_BB_STR _trans("AM-Baseboard") - #define EXIDEV_MEMCARD_STR _trans("Memory Card") #define EXIDEV_MEMDIR_STR _trans("GCI Folder") #define EXIDEV_MIC_STR _trans("Mic") @@ -165,11 +158,6 @@ EVT_BUTTON(ID_GC_EXIDEVICE_SLOTA_PATH, CConfigMain::GCSettingsChanged) EVT_CHOICE(ID_GC_EXIDEVICE_SLOTB, CConfigMain::GCSettingsChanged) EVT_BUTTON(ID_GC_EXIDEVICE_SLOTB_PATH, CConfigMain::GCSettingsChanged) EVT_CHOICE(ID_GC_EXIDEVICE_SP1, CConfigMain::GCSettingsChanged) -EVT_CHOICE(ID_GC_SIDEVICE0, CConfigMain::GCSettingsChanged) -EVT_CHOICE(ID_GC_SIDEVICE1, CConfigMain::GCSettingsChanged) -EVT_CHOICE(ID_GC_SIDEVICE2, CConfigMain::GCSettingsChanged) -EVT_CHOICE(ID_GC_SIDEVICE3, CConfigMain::GCSettingsChanged) - EVT_CHECKBOX(ID_WII_IPL_SSV, CConfigMain::WiiSettingsChanged) EVT_CHECKBOX(ID_WII_IPL_E60, CConfigMain::WiiSettingsChanged) @@ -404,14 +392,6 @@ void CConfigMain::InitializeGUIValues() SP1Devices.Add(_(EXIDEV_BBA_STR)); SP1Devices.Add(_(EXIDEV_AM_BB_STR)); - wxArrayString SIDevices; - SIDevices.Add(_(DEV_NONE_STR)); - SIDevices.Add(_(SIDEV_STDCONT_STR)); - SIDevices.Add(_(SIDEV_STEERING_STR)); - SIDevices.Add(_(SIDEV_DANCEMAT_STR)); - SIDevices.Add(_(SIDEV_BONGO_STR)); - SIDevices.Add(_(SIDEV_GBA_STR)); - SIDevices.Add(_(SIDEV_AM_BB_STR)); for (int i = 0; i < 3; ++i) { @@ -454,39 +434,6 @@ void CConfigMain::InitializeGUIValues() if (!isMemcard && i < 2) GCMemcardPath[i]->Disable(); } - for (int i = 0; i < 4; ++i) - { - // Add string to the wxChoice list - GCSIDevice[i]->Append(SIDevices); - - switch (SConfig::GetInstance().m_SIDevice[i]) - { - case SIDEVICE_GC_CONTROLLER: - GCSIDevice[i]->SetStringSelection(SIDevices[1]); - break; - case SIDEVICE_GC_STEERING: - GCSIDevice[i]->SetStringSelection(SIDevices[2]); - break; - case SIDEVICE_DANCEMAT: - GCSIDevice[i]->SetStringSelection(SIDevices[3]); - break; - case SIDEVICE_GC_TARUKONGA: - GCSIDevice[i]->SetStringSelection(SIDevices[4]); - break; - case SIDEVICE_GC_GBA: - GCSIDevice[i]->SetStringSelection(SIDevices[5]); - break; - case SIDEVICE_AM_BASEBOARD: - GCSIDevice[i]->SetStringSelection(SIDevices[6]); - break; - default: - GCSIDevice[i]->SetStringSelection(SIDevices[0]); - break; - } - // Remove the AM baseboard from the list, only the first list can select it - if (i == 0) - SIDevices.RemoveAt(SIDevices.GetCount() - 1); - } // Wii - Misc WiiScreenSaver->SetValue(!!SConfig::GetInstance().m_SYSCONF->GetData("IPL.SSV")); @@ -729,17 +676,6 @@ void CConfigMain::CreateGUIControls() GCMemcardPath[1] = new wxButton(GamecubePage, ID_GC_EXIDEVICE_SLOTB_PATH, "...", wxDefaultPosition, wxDefaultSize, wxBU_EXACTFIT); - //SI Devices - wxStaticText* GCSIDeviceText[4]; - GCSIDeviceText[0] = TEXT_BOX(GamecubePage, _("Port 1")); - GCSIDeviceText[1] = TEXT_BOX(GamecubePage, _("Port 2")); - GCSIDeviceText[2] = TEXT_BOX(GamecubePage, _("Port 3")); - GCSIDeviceText[3] = TEXT_BOX(GamecubePage, _("Port 4")); - GCSIDevice[0] = new wxChoice(GamecubePage, ID_GC_SIDEVICE0); - GCSIDevice[1] = new wxChoice(GamecubePage, ID_GC_SIDEVICE1); - GCSIDevice[2] = new wxChoice(GamecubePage, ID_GC_SIDEVICE2); - GCSIDevice[3] = new wxChoice(GamecubePage, ID_GC_SIDEVICE3); - // Populate the GameCube page sGamecubeIPLSettings = new wxGridBagSizer(); sGamecubeIPLSettings->Add(GCAlwaysHLE_BS2, wxGBPosition(0, 0), wxGBSpan(1, 2), wxALL, 5); @@ -761,24 +697,11 @@ void CConfigMain::CreateGUIControls() } sbGamecubeDeviceSettings->Add(sbGamecubeEXIDevSettings, 0, wxALL, 5); - wxFlexGridSizer* sbGamecubeDevSettings = new wxFlexGridSizer(2, 10, 10); - for (int i = 0; i < 4; ++i) - { - sbGamecubeDevSettings->Add(GCSIDeviceText[i], 1, wxALIGN_CENTER_VERTICAL|wxLEFT|wxRIGHT|wxBOTTOM, 0); - sbGamecubeDevSettings->Add(GCSIDevice[i], 1, wxEXPAND|wxLEFT|wxRIGHT|wxBOTTOM, 0); - if (NetPlay::IsNetPlayRunning() || Movie::IsMovieActive()) - { - GCSIDevice[i]->Disable(); - } - } - sbGamecubeDeviceSettings->Add(sbGamecubeDevSettings, 0, wxALL, 5); - sGamecubePage = new wxBoxSizer(wxVERTICAL); sGamecubePage->Add(sbGamecubeIPLSettings, 0, wxEXPAND|wxALL, 5); sGamecubePage->Add(sbGamecubeDeviceSettings, 0, wxEXPAND|wxALL, 5); GamecubePage->SetSizer(sGamecubePage); - // Wii page // Misc Settings WiiScreenSaver = new wxCheckBox(WiiPage, ID_WII_IPL_SSV, _("Enable Screen Saver")); @@ -1026,7 +949,6 @@ bool CConfigMain::SupportsVolumeChanges(std::string backend) // ----------------------- void CConfigMain::GCSettingsChanged(wxCommandEvent& event) { - int sidevice = 0; int exidevice = 0; switch (event.GetId()) { @@ -1053,15 +975,6 @@ void CConfigMain::GCSettingsChanged(wxCommandEvent& event) case ID_GC_EXIDEVICE_SLOTB_PATH: ChooseMemcardPath(SConfig::GetInstance().m_strMemoryCardB, false); break; - case ID_GC_SIDEVICE3: - sidevice++; - case ID_GC_SIDEVICE2: - sidevice++; - case ID_GC_SIDEVICE1: - sidevice++; - case ID_GC_SIDEVICE0: - ChooseSIDevice(event.GetString(), sidevice); - break; } } @@ -1123,33 +1036,6 @@ void CConfigMain::ChooseMemcardPath(std::string& strMemcard, bool isSlotA) } } -void CConfigMain::ChooseSIDevice(wxString deviceName, int deviceNum) -{ - SIDevices tempType; - if (!deviceName.compare(_(SIDEV_STDCONT_STR))) - tempType = SIDEVICE_GC_CONTROLLER; - else if (!deviceName.compare(_(SIDEV_STEERING_STR))) - tempType = SIDEVICE_GC_STEERING; - else if (!deviceName.compare(_(SIDEV_DANCEMAT_STR))) - tempType = SIDEVICE_DANCEMAT; - else if (!deviceName.compare(_(SIDEV_BONGO_STR))) - tempType = SIDEVICE_GC_TARUKONGA; - else if (!deviceName.compare(SIDEV_GBA_STR)) - tempType = SIDEVICE_GC_GBA; - else if (!deviceName.compare(_(SIDEV_AM_BB_STR))) - tempType = SIDEVICE_AM_BASEBOARD; - else - tempType = SIDEVICE_NONE; - - SConfig::GetInstance().m_SIDevice[deviceNum] = tempType; - - if (Core::IsRunning()) - { - // Change plugged device! :D - SerialInterface::ChangeDevice(tempType, deviceNum); - } -} - void CConfigMain::ChooseEXIDevice(wxString deviceName, int deviceNum) { TEXIDevices tempType; diff --git a/Source/Core/DolphinWX/ConfigMain.h b/Source/Core/DolphinWX/ConfigMain.h index bf447b0ace..16341dedce 100644 --- a/Source/Core/DolphinWX/ConfigMain.h +++ b/Source/Core/DolphinWX/ConfigMain.h @@ -108,11 +108,6 @@ private: ID_GC_EXIDEVICE_SLOTB, ID_GC_EXIDEVICE_SLOTB_PATH, ID_GC_EXIDEVICE_SP1, - ID_GC_SIDEVICE0, - ID_GC_SIDEVICE1, - ID_GC_SIDEVICE2, - ID_GC_SIDEVICE3, - ID_WII_IPL_SSV, ID_WII_IPL_E60, @@ -186,8 +181,6 @@ private: // Device wxChoice* GCEXIDevice[3]; wxButton* GCMemcardPath[2]; - wxChoice* GCSIDevice[4]; - wxBoxSizer* sWiiPage; // Wii settings wxStaticBoxSizer* /*sbWiimoteSettings, **/sbWiiIPLSettings, *sbWiiDeviceSettings; // Wiimote, Misc and Device sections @@ -257,7 +250,6 @@ private: void GCSettingsChanged(wxCommandEvent& event); void ChooseMemcardPath(std::string& strMemcard, bool isSlotA); - void ChooseSIDevice(wxString deviceName, int deviceNum); void ChooseEXIDevice(wxString deviceName, int deviceNum); void WiiSettingsChanged(wxCommandEvent& event); diff --git a/Source/Core/DolphinWX/Frame.cpp b/Source/Core/DolphinWX/Frame.cpp index 96752dfbcc..8785fa93df 100644 --- a/Source/Core/DolphinWX/Frame.cpp +++ b/Source/Core/DolphinWX/Frame.cpp @@ -260,8 +260,7 @@ EVT_MENU(IDM_TOGGLE_DUMPAUDIO, CFrame::OnToggleDumpAudio) EVT_MENU(wxID_PREFERENCES, CFrame::OnConfigMain) EVT_MENU(IDM_CONFIG_GFX_BACKEND, CFrame::OnConfigGFX) EVT_MENU(IDM_CONFIG_DSP_EMULATOR, CFrame::OnConfigDSP) -EVT_MENU(IDM_CONFIG_PAD_PLUGIN, CFrame::OnConfigPAD) -EVT_MENU(IDM_CONFIG_WIIMOTE_PLUGIN, CFrame::OnConfigWiimote) +EVT_MENU(IDM_CONFIG_CONTROLLERS, CFrame::OnConfigControllers) EVT_MENU(IDM_CONFIG_HOTKEYS, CFrame::OnConfigHotkey) EVT_MENU(IDM_SAVE_PERSPECTIVE, CFrame::OnPerspectiveMenu) diff --git a/Source/Core/DolphinWX/Frame.h b/Source/Core/DolphinWX/Frame.h index 29b3eeb21d..4ce8e39fd2 100644 --- a/Source/Core/DolphinWX/Frame.h +++ b/Source/Core/DolphinWX/Frame.h @@ -190,8 +190,7 @@ private: Toolbar_ConfigMain, Toolbar_ConfigGFX, Toolbar_ConfigDSP, - Toolbar_ConfigPAD, - Toolbar_Wiimote, + Toolbar_Controller, EToolbar_Max }; @@ -293,8 +292,7 @@ private: void OnConfigMain(wxCommandEvent& event); // Options void OnConfigGFX(wxCommandEvent& event); void OnConfigDSP(wxCommandEvent& event); - void OnConfigPAD(wxCommandEvent& event); - void OnConfigWiimote(wxCommandEvent& event); + void OnConfigControllers(wxCommandEvent& event); void OnConfigHotkey(wxCommandEvent& event); void OnToggleFullscreen(wxCommandEvent& event); diff --git a/Source/Core/DolphinWX/FrameTools.cpp b/Source/Core/DolphinWX/FrameTools.cpp index b9aa252275..0f49aeab0e 100644 --- a/Source/Core/DolphinWX/FrameTools.cpp +++ b/Source/Core/DolphinWX/FrameTools.cpp @@ -236,8 +236,7 @@ wxMenuBar* CFrame::CreateMenu() pOptionsMenu->AppendSeparator(); pOptionsMenu->Append(IDM_CONFIG_GFX_BACKEND, _("&Graphics Settings")); pOptionsMenu->Append(IDM_CONFIG_DSP_EMULATOR, _("&DSP Settings")); - pOptionsMenu->Append(IDM_CONFIG_PAD_PLUGIN, _("GameCube &Pad Settings")); - pOptionsMenu->Append(IDM_CONFIG_WIIMOTE_PLUGIN, _("&Wiimote Settings")); + pOptionsMenu->Append(IDM_CONFIG_CONTROLLERS, _("&Controller Settings")); pOptionsMenu->Append(IDM_CONFIG_HOTKEYS, _("&Hotkey Settings")); if (g_pCodeWindow) { @@ -560,20 +559,19 @@ void CFrame::PopulateToolbar(wxToolBar* ToolBar) ToolBar->SetToolBitmapSize(wxSize(w, h)); - WxUtils::AddToolbarButton(ToolBar, wxID_OPEN, _("Open"), m_Bitmaps[Toolbar_FileOpen], _("Open file...")); - WxUtils::AddToolbarButton(ToolBar, wxID_REFRESH, _("Refresh"), m_Bitmaps[Toolbar_Refresh], _("Refresh game list")); - WxUtils::AddToolbarButton(ToolBar, IDM_BROWSE, _("Browse"), m_Bitmaps[Toolbar_Browse], _("Browse for an ISO directory...")); + WxUtils::AddToolbarButton(ToolBar, wxID_OPEN, _("Open"), m_Bitmaps[Toolbar_FileOpen], _("Open file...")); + WxUtils::AddToolbarButton(ToolBar, wxID_REFRESH, _("Refresh"), m_Bitmaps[Toolbar_Refresh], _("Refresh game list")); + WxUtils::AddToolbarButton(ToolBar, IDM_BROWSE, _("Browse"), m_Bitmaps[Toolbar_Browse], _("Browse for an ISO directory...")); ToolBar->AddSeparator(); - WxUtils::AddToolbarButton(ToolBar, IDM_PLAY, _("Play"), m_Bitmaps[Toolbar_Play], _("Play")); - WxUtils::AddToolbarButton(ToolBar, IDM_STOP, _("Stop"), m_Bitmaps[Toolbar_Stop], _("Stop")); - WxUtils::AddToolbarButton(ToolBar, IDM_TOGGLE_FULLSCREEN, _("FullScr"), m_Bitmaps[Toolbar_FullScreen], _("Toggle Fullscreen")); - WxUtils::AddToolbarButton(ToolBar, IDM_SCREENSHOT, _("ScrShot"), m_Bitmaps[Toolbar_Screenshot], _("Take Screenshot")); + WxUtils::AddToolbarButton(ToolBar, IDM_PLAY, _("Play"), m_Bitmaps[Toolbar_Play], _("Play")); + WxUtils::AddToolbarButton(ToolBar, IDM_STOP, _("Stop"), m_Bitmaps[Toolbar_Stop], _("Stop")); + WxUtils::AddToolbarButton(ToolBar, IDM_TOGGLE_FULLSCREEN, _("FullScr"), m_Bitmaps[Toolbar_FullScreen], _("Toggle Fullscreen")); + WxUtils::AddToolbarButton(ToolBar, IDM_SCREENSHOT, _("ScrShot"), m_Bitmaps[Toolbar_Screenshot], _("Take Screenshot")); ToolBar->AddSeparator(); - WxUtils::AddToolbarButton(ToolBar, wxID_PREFERENCES, _("Config"), m_Bitmaps[Toolbar_ConfigMain], _("Configure...")); - WxUtils::AddToolbarButton(ToolBar, IDM_CONFIG_GFX_BACKEND, _("Graphics"), m_Bitmaps[Toolbar_ConfigGFX], _("Graphics settings")); - WxUtils::AddToolbarButton(ToolBar, IDM_CONFIG_DSP_EMULATOR, _("DSP"), m_Bitmaps[Toolbar_ConfigDSP], _("DSP settings")); - WxUtils::AddToolbarButton(ToolBar, IDM_CONFIG_PAD_PLUGIN, _("GCPad"), m_Bitmaps[Toolbar_ConfigPAD], _("GameCube Pad settings")); - WxUtils::AddToolbarButton(ToolBar, IDM_CONFIG_WIIMOTE_PLUGIN, _("Wiimote"), m_Bitmaps[Toolbar_Wiimote], _("Wiimote settings")); + WxUtils::AddToolbarButton(ToolBar, wxID_PREFERENCES, _("Config"), m_Bitmaps[Toolbar_ConfigMain], _("Configure...")); + WxUtils::AddToolbarButton(ToolBar, IDM_CONFIG_GFX_BACKEND, _("Graphics"), m_Bitmaps[Toolbar_ConfigGFX], _("Graphics settings")); + WxUtils::AddToolbarButton(ToolBar, IDM_CONFIG_DSP_EMULATOR, _("DSP"), m_Bitmaps[Toolbar_ConfigDSP], _("DSP settings")); + WxUtils::AddToolbarButton(ToolBar, IDM_CONFIG_CONTROLLERS, _("Controllers"), m_Bitmaps[Toolbar_Controller], _("Controller settings")); } @@ -617,8 +615,7 @@ void CFrame::InitBitmaps() m_Bitmaps[Toolbar_ConfigMain].LoadFile(dir + "config.png", wxBITMAP_TYPE_PNG); m_Bitmaps[Toolbar_ConfigGFX ].LoadFile(dir + "graphics.png", wxBITMAP_TYPE_PNG); m_Bitmaps[Toolbar_ConfigDSP ].LoadFile(dir + "dsp.png", wxBITMAP_TYPE_PNG); - m_Bitmaps[Toolbar_ConfigPAD ].LoadFile(dir + "gcpad.png", wxBITMAP_TYPE_PNG); - m_Bitmaps[Toolbar_Wiimote ].LoadFile(dir + "wiimote.png", wxBITMAP_TYPE_PNG); + m_Bitmaps[Toolbar_Controller].LoadFile(dir + "wiimote.png", wxBITMAP_TYPE_PNG); m_Bitmaps[Toolbar_Screenshot].LoadFile(dir + "screenshot.png", wxBITMAP_TYPE_PNG); m_Bitmaps[Toolbar_FullScreen].LoadFile(dir + "fullscreen.png", wxBITMAP_TYPE_PNG); @@ -1346,56 +1343,11 @@ void CFrame::OnConfigDSP(wxCommandEvent& WXUNUSED (event)) m_GameListCtrl->Update(); } -void CFrame::OnConfigPAD(wxCommandEvent& WXUNUSED (event)) +void CFrame::OnConfigControllers(wxCommandEvent& WXUNUSED (event)) { - InputConfig* const pad_plugin = Pad::GetConfig(); - bool was_init = false; - if (g_controller_interface.IsInit()) // check if game is running - { - was_init = true; - } - else - { -#if defined(HAVE_X11) && HAVE_X11 - Window win = X11Utils::XWindowFromHandle(GetHandle()); - Pad::Initialize(reinterpret_cast(win)); -#else - Pad::Initialize(reinterpret_cast(GetHandle())); -#endif - } - InputConfigDialog m_ConfigFrame(this, *pad_plugin, _trans("Dolphin GCPad Configuration")); + WiimoteConfigDiag m_ConfigFrame(this); m_ConfigFrame.ShowModal(); m_ConfigFrame.Destroy(); - if (!was_init) // if game isn't running - { - Pad::Shutdown(); - } -} - -void CFrame::OnConfigWiimote(wxCommandEvent& WXUNUSED (event)) -{ - InputConfig* const wiimote_plugin = Wiimote::GetConfig(); - bool was_init = false; - if (g_controller_interface.IsInit()) // check if game is running - { - was_init = true; - } - else - { -#if defined(HAVE_X11) && HAVE_X11 - Window win = X11Utils::XWindowFromHandle(GetHandle()); - Wiimote::Initialize(reinterpret_cast(win)); -#else - Wiimote::Initialize(reinterpret_cast(GetHandle())); -#endif - } - WiimoteConfigDiag m_ConfigFrame(this, *wiimote_plugin); - m_ConfigFrame.ShowModal(); - m_ConfigFrame.Destroy(); - if (!was_init) // if game isn't running - { - Wiimote::Shutdown(); - } } void CFrame::OnConfigHotkey(wxCommandEvent& WXUNUSED (event)) @@ -1759,8 +1711,6 @@ void CFrame::UpdateGUI() m_ToolBar->EnableTool(IDM_STOP, Running || Paused); m_ToolBar->EnableTool(IDM_TOGGLE_FULLSCREEN, Running || Paused); m_ToolBar->EnableTool(IDM_SCREENSHOT, Running || Paused); - // Don't allow wiimote config while in GameCube mode - m_ToolBar->EnableTool(IDM_CONFIG_WIIMOTE_PLUGIN, !RunningGamecube); } // File @@ -1803,7 +1753,7 @@ void CFrame::UpdateGUI() GetMenuBar()->FindItem(IDM_CONNECT_WIIMOTE3)->Enable(RunningWii); GetMenuBar()->FindItem(IDM_CONNECT_WIIMOTE4)->Enable(RunningWii); GetMenuBar()->FindItem(IDM_CONNECT_BALANCEBOARD)->Enable(RunningWii); - GetMenuBar()->FindItem(IDM_CONFIG_WIIMOTE_PLUGIN)->Enable(!RunningGamecube); + GetMenuBar()->FindItem(IDM_CONFIG_CONTROLLERS)->Enable(!RunningGamecube); if (RunningWii) { GetMenuBar()->FindItem(IDM_CONNECT_WIIMOTE1)->Check(GetUsbPointer()-> diff --git a/Source/Core/DolphinWX/Globals.h b/Source/Core/DolphinWX/Globals.h index edbd89bf6a..42ae34b87a 100644 --- a/Source/Core/DolphinWX/Globals.h +++ b/Source/Core/DolphinWX/Globals.h @@ -147,8 +147,7 @@ enum IDM_CONFIG_GFX_BACKEND, IDM_CONFIG_DSP_EMULATOR, - IDM_CONFIG_PAD_PLUGIN, - IDM_CONFIG_WIIMOTE_PLUGIN, + IDM_CONFIG_CONTROLLERS, IDM_CONFIG_HOTKEYS, IDM_CONFIG_LOGGER, diff --git a/Source/Core/DolphinWX/WiimoteConfigDiag.cpp b/Source/Core/DolphinWX/WiimoteConfigDiag.cpp index 96e1e98017..9965444fd1 100644 --- a/Source/Core/DolphinWX/WiimoteConfigDiag.cpp +++ b/Source/Core/DolphinWX/WiimoteConfigDiag.cpp @@ -24,14 +24,29 @@ #include "Core/ConfigManager.h" #include "Core/Core.h" #include "Core/NetPlayProto.h" +#include "Core/HW/GCPad.h" +#include "Core/HW/SI.h" #include "Core/HW/Wiimote.h" #include "Core/HW/WiimoteReal/WiimoteReal.h" #include "DolphinWX/InputConfigDiag.h" #include "DolphinWX/WiimoteConfigDiag.h" -WiimoteConfigDiag::WiimoteConfigDiag(wxWindow* const parent, InputConfig& config) +#if defined(HAVE_XRANDR) && HAVE_XRANDR +#include "VideoBackends/OGL/GLInterface/X11Utils.h" +#endif + +const std::array WiimoteConfigDiag::m_gc_pad_type_strs = {{ + _("None"), + _("Standard Controller"), + _("Steering Wheel"), + _("Dance Mat"), + _("TaruKonga (Bongos)"), + _("GBA"), + _("AM-Baseboard") +}}; + +WiimoteConfigDiag::WiimoteConfigDiag(wxWindow* const parent) : wxDialog(parent, -1, _("Dolphin Wiimote Configuration")) - , m_config(config) { wxBoxSizer* const main_sizer = new wxBoxSizer(wxVERTICAL); @@ -55,16 +70,6 @@ wxStaticBoxSizer* WiimoteConfigDiag::CreateGamecubeSizer() wxStaticBoxSizer* const gamecube_static_sizer = new wxStaticBoxSizer(wxHORIZONTAL, this, _("GameCube Controllers")); wxFlexGridSizer* const gamecube_flex_sizer = new wxFlexGridSizer(3, 5, 5); - static const std::array pad_type_strs = {{ - _("None"), - _("Standard Controller"), - _("Steering Wheel"), - _("Dance Mat"), - _("TaruKonga (Bongos)"), - _("GBA"), - _("AM-Baseboard") - }}; - wxStaticText* pad_labels[4]; wxChoice* pad_type_choices[4]; wxButton* config_buttons[4]; @@ -72,15 +77,53 @@ wxStaticBoxSizer* WiimoteConfigDiag::CreateGamecubeSizer() for (int i = 0; i < 4; i++) { - config_buttons[i] = new wxButton(this, wxID_ANY, _("Configure"), wxDefaultPosition, wxSize(100, 25)); pad_labels[i] = new wxStaticText(this, wxID_ANY, wxString::Format(_("Port %i"), i + 1)); + // Create an ID for the config button. + const wxWindowID button_id = wxWindow::NewControlId(); + m_gc_port_config_ids.insert(std::make_pair(button_id, i)); + config_buttons[i] = new wxButton(this, button_id, _("Configure"), wxDefaultPosition, wxSize(100, 25)); + config_buttons[i]->Bind(wxEVT_BUTTON, &WiimoteConfigDiag::OnGameCubeConfigButton, this); + + // Create a control ID for the choice boxes on the fly. + const wxWindowID choice_id = wxWindow::NewControlId(); + m_gc_port_choice_ids.insert(std::make_pair(choice_id, i)); + // Only add AM-Baseboard to the first pad. if (i == 0) - pad_type_choices[i] = new wxChoice(this, wxID_ANY, wxDefaultPosition, wxDefaultSize, pad_type_strs.size(), pad_type_strs.data()); + pad_type_choices[i] = new wxChoice(this, choice_id, wxDefaultPosition, wxDefaultSize, m_gc_pad_type_strs.size(), m_gc_pad_type_strs.data()); else - pad_type_choices[i] = new wxChoice(this, wxID_ANY, wxDefaultPosition, wxDefaultSize, pad_type_strs.size() - 1, pad_type_strs.data()); + pad_type_choices[i] = new wxChoice(this, choice_id, wxDefaultPosition, wxDefaultSize, m_gc_pad_type_strs.size() - 1, m_gc_pad_type_strs.data()); + pad_type_choices[i]->Bind(wxEVT_CHOICE, &WiimoteConfigDiag::OnGameCubePortChanged, this); + + // Set the saved pad type as the default choice. + switch (SConfig::GetInstance().m_SIDevice[i]) + { + case SIDEVICE_GC_CONTROLLER: + pad_type_choices[i]->SetStringSelection(m_gc_pad_type_strs[1]); + break; + case SIDEVICE_GC_STEERING: + pad_type_choices[i]->SetStringSelection(m_gc_pad_type_strs[2]); + break; + case SIDEVICE_DANCEMAT: + pad_type_choices[i]->SetStringSelection(m_gc_pad_type_strs[3]); + break; + case SIDEVICE_GC_TARUKONGA: + pad_type_choices[i]->SetStringSelection(m_gc_pad_type_strs[4]); + break; + case SIDEVICE_GC_GBA: + pad_type_choices[i]->SetStringSelection(m_gc_pad_type_strs[5]); + break; + case SIDEVICE_AM_BASEBOARD: + pad_type_choices[i]->SetStringSelection(m_gc_pad_type_strs[6]); + break; + default: + pad_type_choices[i]->SetStringSelection(m_gc_pad_type_strs[0]); + break; + } + + // Add to the sizer gamecube_flex_sizer->Add(pad_labels[i], 0, wxALIGN_CENTER_VERTICAL); gamecube_flex_sizer->Add(pad_type_choices[i], 0, wxALIGN_CENTER_VERTICAL); gamecube_flex_sizer->Add(config_buttons[i], 1, wxEXPAND); @@ -298,9 +341,32 @@ wxStaticBoxSizer* WiimoteConfigDiag::CreateGeneralWiimoteSettingsSizer() void WiimoteConfigDiag::ConfigEmulatedWiimote(wxCommandEvent& ev) { - InputConfigDialog* const m_emu_config_diag = new InputConfigDialog(this, m_config, _trans("Dolphin Emulated Wiimote Configuration"), m_wiimote_index_from_conf_bt_id[ev.GetId()]); - m_emu_config_diag->ShowModal(); - m_emu_config_diag->Destroy(); + InputConfig* const wiimote_plugin = Wiimote::GetConfig(); + bool was_init = false; + if (g_controller_interface.IsInit()) // check if game is running + { + was_init = true; + } + else + { +#if defined(HAVE_X11) && HAVE_X11 + Window win = X11Utils::XWindowFromHandle(GetHandle()); + Wiimote::Initialize(reinterpret_cast(win)); +#else + Wiimote::Initialize(reinterpret_cast(GetHandle())); +#endif + } + InputConfigDialog m_ConfigFrame(this, *wiimote_plugin, _trans("Dolphin Emulated Wiimote Configuration"), m_wiimote_index_from_conf_bt_id[ev.GetId()]); + m_ConfigFrame.ShowModal(); + m_ConfigFrame.Destroy(); + if (!was_init) // if game isn't running + { + Wiimote::Shutdown(); + } + + //InputConfigDialog* const m_emu_config_diag = new InputConfigDialog(this, *Wiimote::GetConfig(), _trans("Dolphin Emulated Wiimote Configuration"), m_wiimote_index_from_conf_bt_id[ev.GetId()]); + //m_emu_config_diag->ShowModal(); + //m_emu_config_diag->Destroy(); } void WiimoteConfigDiag::RefreshRealWiimotes(wxCommandEvent&) @@ -364,3 +430,61 @@ void WiimoteConfigDiag::Cancel(wxCommandEvent& event) RevertSource(); event.Skip(); } + +void WiimoteConfigDiag::OnGameCubePortChanged(wxCommandEvent& event) +{ + const unsigned int device_num = m_gc_port_choice_ids[event.GetId()]; + const wxString device_name = event.GetString(); + + SIDevices tempType; + if (device_name == m_gc_pad_type_strs[1]) + tempType = SIDEVICE_GC_CONTROLLER; + else if (device_name == m_gc_pad_type_strs[2]) + tempType = SIDEVICE_GC_STEERING; + else if (device_name == m_gc_pad_type_strs[3]) + tempType = SIDEVICE_DANCEMAT; + else if (device_name == m_gc_pad_type_strs[4]) + tempType = SIDEVICE_GC_TARUKONGA; + else if (device_name == m_gc_pad_type_strs[5]) + tempType = SIDEVICE_GC_GBA; + else if (device_name == m_gc_pad_type_strs[6]) + tempType = SIDEVICE_AM_BASEBOARD; + else + tempType = SIDEVICE_NONE; + + SConfig::GetInstance().m_SIDevice[device_num] = tempType; + + if (Core::IsRunning()) + SerialInterface::ChangeDevice(tempType, device_num); +} + +void WiimoteConfigDiag::OnGameCubeConfigButton(wxCommandEvent& event) +{ + InputConfig* const pad_plugin = Pad::GetConfig(); + const int port_num = m_gc_port_config_ids[event.GetId()]; + + bool was_init = false; + + // check if game is running + if (g_controller_interface.IsInit()) + { + was_init = true; + } + else + { +#if defined(HAVE_X11) && HAVE_X11 + Window win = X11Utils::XWindowFromHandle(GetHandle()); + Pad::Initialize(reinterpret_cast(win)); +#else + Pad::Initialize(reinterpret_cast(GetHandle())); +#endif + } + + InputConfigDialog m_ConfigFrame(this, *pad_plugin, _trans("Dolphin GCPad Configuration"), port_num); + m_ConfigFrame.ShowModal(); + m_ConfigFrame.Destroy(); + + // if game isn't running + if (!was_init) + Pad::Shutdown(); +} diff --git a/Source/Core/DolphinWX/WiimoteConfigDiag.h b/Source/Core/DolphinWX/WiimoteConfigDiag.h index 5b6e9195ed..44d7d3dd04 100644 --- a/Source/Core/DolphinWX/WiimoteConfigDiag.h +++ b/Source/Core/DolphinWX/WiimoteConfigDiag.h @@ -1,5 +1,6 @@ #pragma once +#include #include #include #include @@ -17,7 +18,7 @@ class wxWindow; class WiimoteConfigDiag : public wxDialog { public: - WiimoteConfigDiag(wxWindow* const parent, InputConfig& config); + WiimoteConfigDiag(wxWindow* const parent); void RefreshRealWiimotes(wxCommandEvent& event); @@ -65,9 +66,14 @@ private: wxStaticBoxSizer* CreateBalanceBoardSizer(); wxStaticBoxSizer* CreateRealWiimoteSizer(); wxStaticBoxSizer* CreateGeneralWiimoteSettingsSizer(); - void Cancel(wxCommandEvent& event); - InputConfig& m_config; + void Cancel(wxCommandEvent& event); + void OnGameCubePortChanged(wxCommandEvent& event); + void OnGameCubeConfigButton(wxCommandEvent& event); + + std::map m_gc_port_choice_ids; + std::map m_gc_port_config_ids; + static const std::array m_gc_pad_type_strs; std::map m_wiimote_index_from_ctrl_id; unsigned int m_orig_wiimote_sources[MAX_BBMOTES]; From cad8ae3be1f020b21b18189c1fc32c693961fc20 Mon Sep 17 00:00:00 2001 From: Lioncash Date: Sat, 22 Nov 2014 16:39:48 -0500 Subject: [PATCH 07/11] WiimoteConfigDiag: Rename to ControllerConfigDiag. --- Source/Core/DolphinWX/CMakeLists.txt | 2 +- ...onfigDiag.cpp => ControllerConfigDiag.cpp} | 62 +++++++++---------- ...oteConfigDiag.h => ControllerConfigDiag.h} | 4 +- Source/Core/DolphinWX/DolphinWX.vcxproj | 12 ++-- .../Core/DolphinWX/DolphinWX.vcxproj.filters | 14 ++--- Source/Core/DolphinWX/FrameTools.cpp | 8 +-- 6 files changed, 50 insertions(+), 52 deletions(-) rename Source/Core/DolphinWX/{WiimoteConfigDiag.cpp => ControllerConfigDiag.cpp} (87%) rename Source/Core/DolphinWX/{WiimoteConfigDiag.h => ControllerConfigDiag.h} (95%) diff --git a/Source/Core/DolphinWX/CMakeLists.txt b/Source/Core/DolphinWX/CMakeLists.txt index 495299ecc0..cdc503b8fc 100644 --- a/Source/Core/DolphinWX/CMakeLists.txt +++ b/Source/Core/DolphinWX/CMakeLists.txt @@ -2,6 +2,7 @@ set(GUI_SRCS ARCodeAddEdit.cpp AboutDolphin.cpp ConfigMain.cpp + ControllerConfigDiag.cpp Cheats/CheatSearchTab.cpp Cheats/CheatsWindow.cpp Cheats/CreateCodeDialog.cpp @@ -45,7 +46,6 @@ set(GUI_SRCS TASInputDlg.cpp VideoConfigDiag.cpp WXInputBase.cpp - WiimoteConfigDiag.cpp WxUtils.cpp) set(NOGUI_SRCS MainNoGUI.cpp) diff --git a/Source/Core/DolphinWX/WiimoteConfigDiag.cpp b/Source/Core/DolphinWX/ControllerConfigDiag.cpp similarity index 87% rename from Source/Core/DolphinWX/WiimoteConfigDiag.cpp rename to Source/Core/DolphinWX/ControllerConfigDiag.cpp index 9965444fd1..89456762de 100644 --- a/Source/Core/DolphinWX/WiimoteConfigDiag.cpp +++ b/Source/Core/DolphinWX/ControllerConfigDiag.cpp @@ -28,14 +28,14 @@ #include "Core/HW/SI.h" #include "Core/HW/Wiimote.h" #include "Core/HW/WiimoteReal/WiimoteReal.h" +#include "DolphinWX/ControllerConfigDiag.h" #include "DolphinWX/InputConfigDiag.h" -#include "DolphinWX/WiimoteConfigDiag.h" #if defined(HAVE_XRANDR) && HAVE_XRANDR #include "VideoBackends/OGL/GLInterface/X11Utils.h" #endif -const std::array WiimoteConfigDiag::m_gc_pad_type_strs = {{ +const std::array ControllerConfigDiag::m_gc_pad_type_strs = {{ _("None"), _("Standard Controller"), _("Steering Wheel"), @@ -45,8 +45,8 @@ const std::array WiimoteConfigDiag::m_gc_pad_type_strs = {{ _("AM-Baseboard") }}; -WiimoteConfigDiag::WiimoteConfigDiag(wxWindow* const parent) - : wxDialog(parent, -1, _("Dolphin Wiimote Configuration")) +ControllerConfigDiag::ControllerConfigDiag(wxWindow* const parent) + : wxDialog(parent, -1, _("Dolphin Controller Configuration")) { wxBoxSizer* const main_sizer = new wxBoxSizer(wxVERTICAL); @@ -58,14 +58,14 @@ WiimoteConfigDiag::WiimoteConfigDiag(wxWindow* const parent) main_sizer->Add(control_sizer, 0, wxEXPAND); main_sizer->Add(CreateButtonSizer(wxOK | wxCANCEL), 0, wxEXPAND | wxLEFT | wxRIGHT | wxBOTTOM, 5); - Bind(wxEVT_BUTTON, &WiimoteConfigDiag::Save, this, wxID_OK); - Bind(wxEVT_BUTTON, &WiimoteConfigDiag::Cancel, this, wxID_CANCEL); + Bind(wxEVT_BUTTON, &ControllerConfigDiag::Save, this, wxID_OK); + Bind(wxEVT_BUTTON, &ControllerConfigDiag::Cancel, this, wxID_CANCEL); SetSizerAndFit(main_sizer); Center(); } -wxStaticBoxSizer* WiimoteConfigDiag::CreateGamecubeSizer() +wxStaticBoxSizer* ControllerConfigDiag::CreateGamecubeSizer() { wxStaticBoxSizer* const gamecube_static_sizer = new wxStaticBoxSizer(wxHORIZONTAL, this, _("GameCube Controllers")); wxFlexGridSizer* const gamecube_flex_sizer = new wxFlexGridSizer(3, 5, 5); @@ -83,7 +83,7 @@ wxStaticBoxSizer* WiimoteConfigDiag::CreateGamecubeSizer() const wxWindowID button_id = wxWindow::NewControlId(); m_gc_port_config_ids.insert(std::make_pair(button_id, i)); config_buttons[i] = new wxButton(this, button_id, _("Configure"), wxDefaultPosition, wxSize(100, 25)); - config_buttons[i]->Bind(wxEVT_BUTTON, &WiimoteConfigDiag::OnGameCubeConfigButton, this); + config_buttons[i]->Bind(wxEVT_BUTTON, &ControllerConfigDiag::OnGameCubeConfigButton, this); // Create a control ID for the choice boxes on the fly. const wxWindowID choice_id = wxWindow::NewControlId(); @@ -95,7 +95,7 @@ wxStaticBoxSizer* WiimoteConfigDiag::CreateGamecubeSizer() else pad_type_choices[i] = new wxChoice(this, choice_id, wxDefaultPosition, wxDefaultSize, m_gc_pad_type_strs.size() - 1, m_gc_pad_type_strs.data()); - pad_type_choices[i]->Bind(wxEVT_CHOICE, &WiimoteConfigDiag::OnGameCubePortChanged, this); + pad_type_choices[i]->Bind(wxEVT_CHOICE, &ControllerConfigDiag::OnGameCubePortChanged, this); // Set the saved pad type as the default choice. switch (SConfig::GetInstance().m_SIDevice[i]) @@ -133,7 +133,7 @@ wxStaticBoxSizer* WiimoteConfigDiag::CreateGamecubeSizer() return gamecube_static_sizer; } -wxStaticBoxSizer* WiimoteConfigDiag::CreateWiimoteConfigSizer() +wxStaticBoxSizer* ControllerConfigDiag::CreateWiimoteConfigSizer() { wxStaticText* wiimote_label[4]; wxChoice* wiimote_source_ch[4]; @@ -156,9 +156,9 @@ wxStaticBoxSizer* WiimoteConfigDiag::CreateWiimoteConfigSizer() wiimote_label[i] = new wxStaticText(this, wxID_ANY, wiimote_str); wiimote_source_ch[i] = new wxChoice(this, source_ctrl_id, wxDefaultPosition, wxDefaultSize, src_choices.size(), src_choices.data()); - wiimote_source_ch[i]->Bind(wxEVT_CHOICE, &WiimoteConfigDiag::SelectSource, this); + wiimote_source_ch[i]->Bind(wxEVT_CHOICE, &ControllerConfigDiag::SelectSource, this); wiimote_configure_bt[i] = new wxButton(this, config_bt_id, _("Configure")); - wiimote_configure_bt[i]->Bind(wxEVT_BUTTON, &WiimoteConfigDiag::ConfigEmulatedWiimote, this); + wiimote_configure_bt[i]->Bind(wxEVT_BUTTON, &ControllerConfigDiag::ConfigEmulatedWiimote, this); m_orig_wiimote_sources[i] = g_wiimote_sources[i]; wiimote_source_ch[i]->Select(m_orig_wiimote_sources[i]); @@ -201,7 +201,7 @@ wxStaticBoxSizer* WiimoteConfigDiag::CreateWiimoteConfigSizer() return wiimote_group; } -wxStaticBoxSizer* WiimoteConfigDiag::CreateBalanceBoardSizer() +wxStaticBoxSizer* ControllerConfigDiag::CreateBalanceBoardSizer() { wxStaticBoxSizer* const bb_group = new wxStaticBoxSizer(wxHORIZONTAL, this, _("Balance Board")); wxFlexGridSizer* const bb_sizer = new wxFlexGridSizer(1, 5, 5); @@ -214,7 +214,7 @@ wxStaticBoxSizer* WiimoteConfigDiag::CreateBalanceBoardSizer() }}; wxChoice* const bb_source = new wxChoice(this, source_ctrl_id, wxDefaultPosition, wxDefaultSize, src_choices.size(), src_choices.data()); - bb_source->Bind(wxEVT_CHOICE, &WiimoteConfigDiag::SelectSource, this); + bb_source->Bind(wxEVT_CHOICE, &ControllerConfigDiag::SelectSource, this); m_orig_wiimote_sources[WIIMOTE_BALANCE_BOARD] = g_wiimote_sources[WIIMOTE_BALANCE_BOARD]; bb_source->Select(m_orig_wiimote_sources[WIIMOTE_BALANCE_BOARD] ? 1 : 0); @@ -230,11 +230,11 @@ wxStaticBoxSizer* WiimoteConfigDiag::CreateBalanceBoardSizer() return bb_group; } -wxStaticBoxSizer* WiimoteConfigDiag::CreateRealWiimoteSizer() +wxStaticBoxSizer* ControllerConfigDiag::CreateRealWiimoteSizer() { // "Real wiimotes" controls wxButton* const refresh_btn = new wxButton(this, -1, _("Refresh")); - refresh_btn->Bind(wxEVT_BUTTON, &WiimoteConfigDiag::RefreshRealWiimotes, this); + refresh_btn->Bind(wxEVT_BUTTON, &ControllerConfigDiag::RefreshRealWiimotes, this); wxStaticBoxSizer* const real_wiimotes_group = new wxStaticBoxSizer(wxVERTICAL, this, _("Real Wiimotes")); wxBoxSizer* const real_wiimotes_sizer = new wxBoxSizer(wxHORIZONTAL); @@ -244,7 +244,7 @@ wxStaticBoxSizer* WiimoteConfigDiag::CreateRealWiimoteSizer() "You must manually connect your wiimotes.")), 0, wxALIGN_CENTER | wxALL, 5); wxCheckBox* const continuous_scanning = new wxCheckBox(this, wxID_ANY, _("Continuous Scanning")); - continuous_scanning->Bind(wxEVT_CHECKBOX, &WiimoteConfigDiag::OnContinuousScanning, this); + continuous_scanning->Bind(wxEVT_CHECKBOX, &ControllerConfigDiag::OnContinuousScanning, this); continuous_scanning->SetValue(SConfig::GetInstance().m_WiimoteContinuousScanning); real_wiimotes_sizer->Add(continuous_scanning, 0, wxALIGN_CENTER_VERTICAL); @@ -256,7 +256,7 @@ wxStaticBoxSizer* WiimoteConfigDiag::CreateRealWiimoteSizer() return real_wiimotes_group; } -wxStaticBoxSizer* WiimoteConfigDiag::CreateGeneralWiimoteSettingsSizer() +wxStaticBoxSizer* ControllerConfigDiag::CreateGeneralWiimoteSettingsSizer() { const wxString str[] = { _("Bottom"), _("Top") }; wxChoice* const WiiSensBarPos = new wxChoice(this, wxID_ANY, wxDefaultPosition, wxDefaultSize, 2, str); @@ -265,7 +265,7 @@ wxStaticBoxSizer* WiimoteConfigDiag::CreateGeneralWiimoteSettingsSizer() wxCheckBox* const WiimoteMotor = new wxCheckBox(this, wxID_ANY, _("Wiimote Motor")); auto wiimote_speaker = new wxCheckBox(this, wxID_ANY, _("Enable Speaker Data")); - wiimote_speaker->Bind(wxEVT_CHECKBOX, &WiimoteConfigDiag::OnEnableSpeaker, this); + wiimote_speaker->Bind(wxEVT_CHECKBOX, &ControllerConfigDiag::OnEnableSpeaker, this); wiimote_speaker->SetValue(SConfig::GetInstance().m_WiimoteEnableSpeaker); wxStaticText* const WiiSensBarPosText = new wxStaticText(this, wxID_ANY, _("Sensor Bar Position:")); @@ -302,10 +302,10 @@ wxStaticBoxSizer* WiimoteConfigDiag::CreateGeneralWiimoteSettingsSizer() WiimoteSpkVolume->SetValue(SConfig::GetInstance().m_SYSCONF->GetData("BT.SPKV")); WiimoteMotor->SetValue(SConfig::GetInstance().m_SYSCONF->GetData("BT.MOT")); - WiiSensBarPos->Bind(wxEVT_CHOICE, &WiimoteConfigDiag::OnSensorBarPos, this); - WiiSensBarSens->Bind(wxEVT_SLIDER, &WiimoteConfigDiag::OnSensorBarSensitivity, this); - WiimoteSpkVolume->Bind(wxEVT_SLIDER, &WiimoteConfigDiag::OnSpeakerVolume, this); - WiimoteMotor->Bind(wxEVT_CHECKBOX, &WiimoteConfigDiag::OnMotor, this); + WiiSensBarPos->Bind(wxEVT_CHOICE, &ControllerConfigDiag::OnSensorBarPos, this); + WiiSensBarSens->Bind(wxEVT_SLIDER, &ControllerConfigDiag::OnSensorBarSensitivity, this); + WiimoteSpkVolume->Bind(wxEVT_SLIDER, &ControllerConfigDiag::OnSpeakerVolume, this); + WiimoteMotor->Bind(wxEVT_CHECKBOX, &ControllerConfigDiag::OnMotor, this); // "General Settings" layout wxStaticBoxSizer* const general_sizer = new wxStaticBoxSizer(wxVERTICAL, this, _("General Settings")); @@ -339,7 +339,7 @@ wxStaticBoxSizer* WiimoteConfigDiag::CreateGeneralWiimoteSettingsSizer() } -void WiimoteConfigDiag::ConfigEmulatedWiimote(wxCommandEvent& ev) +void ControllerConfigDiag::ConfigEmulatedWiimote(wxCommandEvent& ev) { InputConfig* const wiimote_plugin = Wiimote::GetConfig(); bool was_init = false; @@ -369,12 +369,12 @@ void WiimoteConfigDiag::ConfigEmulatedWiimote(wxCommandEvent& ev) //m_emu_config_diag->Destroy(); } -void WiimoteConfigDiag::RefreshRealWiimotes(wxCommandEvent&) +void ControllerConfigDiag::RefreshRealWiimotes(wxCommandEvent&) { WiimoteReal::Refresh(); } -void WiimoteConfigDiag::SelectSource(wxCommandEvent& event) +void ControllerConfigDiag::SelectSource(wxCommandEvent& event) { // This needs to be changed now in order for refresh to work right. // Revert if the dialog is canceled. @@ -394,13 +394,13 @@ void WiimoteConfigDiag::SelectSource(wxCommandEvent& event) } } -void WiimoteConfigDiag::RevertSource() +void ControllerConfigDiag::RevertSource() { for (int i = 0; i < MAX_BBMOTES; ++i) g_wiimote_sources[i] = m_orig_wiimote_sources[i]; } -void WiimoteConfigDiag::Save(wxCommandEvent& event) +void ControllerConfigDiag::Save(wxCommandEvent& event) { std::string ini_filename = File::GetUserPath(D_CONFIG_IDX) + WIIMOTE_INI_NAME ".ini"; @@ -425,13 +425,13 @@ void WiimoteConfigDiag::Save(wxCommandEvent& event) event.Skip(); } -void WiimoteConfigDiag::Cancel(wxCommandEvent& event) +void ControllerConfigDiag::Cancel(wxCommandEvent& event) { RevertSource(); event.Skip(); } -void WiimoteConfigDiag::OnGameCubePortChanged(wxCommandEvent& event) +void ControllerConfigDiag::OnGameCubePortChanged(wxCommandEvent& event) { const unsigned int device_num = m_gc_port_choice_ids[event.GetId()]; const wxString device_name = event.GetString(); @@ -458,7 +458,7 @@ void WiimoteConfigDiag::OnGameCubePortChanged(wxCommandEvent& event) SerialInterface::ChangeDevice(tempType, device_num); } -void WiimoteConfigDiag::OnGameCubeConfigButton(wxCommandEvent& event) +void ControllerConfigDiag::OnGameCubeConfigButton(wxCommandEvent& event) { InputConfig* const pad_plugin = Pad::GetConfig(); const int port_num = m_gc_port_config_ids[event.GetId()]; diff --git a/Source/Core/DolphinWX/WiimoteConfigDiag.h b/Source/Core/DolphinWX/ControllerConfigDiag.h similarity index 95% rename from Source/Core/DolphinWX/WiimoteConfigDiag.h rename to Source/Core/DolphinWX/ControllerConfigDiag.h index 44d7d3dd04..3fbc56fb76 100644 --- a/Source/Core/DolphinWX/WiimoteConfigDiag.h +++ b/Source/Core/DolphinWX/ControllerConfigDiag.h @@ -15,10 +15,10 @@ class wxButton; class wxStaticBoxSizer; class wxWindow; -class WiimoteConfigDiag : public wxDialog +class ControllerConfigDiag : public wxDialog { public: - WiimoteConfigDiag(wxWindow* const parent); + ControllerConfigDiag(wxWindow* const parent); void RefreshRealWiimotes(wxCommandEvent& event); diff --git a/Source/Core/DolphinWX/DolphinWX.vcxproj b/Source/Core/DolphinWX/DolphinWX.vcxproj index 19adcf43ba..033c70e7d3 100644 --- a/Source/Core/DolphinWX/DolphinWX.vcxproj +++ b/Source/Core/DolphinWX/DolphinWX.vcxproj @@ -96,7 +96,7 @@ - + @@ -144,7 +144,7 @@ - + @@ -222,12 +222,10 @@ - + - + - + \ No newline at end of file diff --git a/Source/Core/DolphinWX/DolphinWX.vcxproj.filters b/Source/Core/DolphinWX/DolphinWX.vcxproj.filters index 1f41f1582f..7bfd1dbb8d 100644 --- a/Source/Core/DolphinWX/DolphinWX.vcxproj.filters +++ b/Source/Core/DolphinWX/DolphinWX.vcxproj.filters @@ -160,12 +160,12 @@ GUI - - GUI - GUI\Video + + GUI + @@ -294,12 +294,12 @@ GUI - - GUI - GUI\Video + + GUI + @@ -312,4 +312,4 @@ - + \ No newline at end of file diff --git a/Source/Core/DolphinWX/FrameTools.cpp b/Source/Core/DolphinWX/FrameTools.cpp index 0f49aeab0e..8976975fd3 100644 --- a/Source/Core/DolphinWX/FrameTools.cpp +++ b/Source/Core/DolphinWX/FrameTools.cpp @@ -64,6 +64,7 @@ #include "DolphinWX/AboutDolphin.h" #include "DolphinWX/ConfigMain.h" +#include "DolphinWX/ControllerConfigDiag.h" #include "DolphinWX/FifoPlayerDlg.h" #include "DolphinWX/Frame.h" #include "DolphinWX/GameListCtrl.h" @@ -75,7 +76,6 @@ #include "DolphinWX/MemcardManager.h" #include "DolphinWX/NetWindow.h" #include "DolphinWX/TASInputDlg.h" -#include "DolphinWX/WiimoteConfigDiag.h" #include "DolphinWX/WXInputBase.h" #include "DolphinWX/WxUtils.h" #include "DolphinWX/Cheats/CheatsWindow.h" @@ -1345,9 +1345,9 @@ void CFrame::OnConfigDSP(wxCommandEvent& WXUNUSED (event)) void CFrame::OnConfigControllers(wxCommandEvent& WXUNUSED (event)) { - WiimoteConfigDiag m_ConfigFrame(this); - m_ConfigFrame.ShowModal(); - m_ConfigFrame.Destroy(); + ControllerConfigDiag config_dlg(this); + config_dlg.ShowModal(); + config_dlg.Destroy(); } void CFrame::OnConfigHotkey(wxCommandEvent& WXUNUSED (event)) From 7b54d8ad10568d973471d3a025f5791fcf8ba108 Mon Sep 17 00:00:00 2001 From: Lioncash Date: Sun, 23 Nov 2014 21:06:58 -0500 Subject: [PATCH 08/11] ControllerConfigDiag: Remove now obsolete TODOs --- Source/Core/DolphinWX/ControllerConfigDiag.cpp | 3 --- 1 file changed, 3 deletions(-) diff --git a/Source/Core/DolphinWX/ControllerConfigDiag.cpp b/Source/Core/DolphinWX/ControllerConfigDiag.cpp index 89456762de..b0f6a1615f 100644 --- a/Source/Core/DolphinWX/ControllerConfigDiag.cpp +++ b/Source/Core/DolphinWX/ControllerConfigDiag.cpp @@ -73,7 +73,6 @@ wxStaticBoxSizer* ControllerConfigDiag::CreateGamecubeSizer() wxStaticText* pad_labels[4]; wxChoice* pad_type_choices[4]; wxButton* config_buttons[4]; - // TODO: Add bind call here for (int i = 0; i < 4; i++) { @@ -178,7 +177,6 @@ wxStaticBoxSizer* ControllerConfigDiag::CreateWiimoteConfigSizer() } wiimote_control_section->Add(wiimote_sizer, 1, wxEXPAND, 5 ); - // TODO: Move to wiimote sizer creation. // Disable some controls when emulation is running if (Core::GetState() != Core::CORE_UNINITIALIZED && NetPlay::IsNetPlayRunning()) { @@ -189,7 +187,6 @@ wxStaticBoxSizer* ControllerConfigDiag::CreateWiimoteConfigSizer() } } - // Combine all wiimote UI. wiimote_group->Add(wiimote_control_section, 0, wxEXPAND | wxALL); wiimote_group->AddSpacer(5); wiimote_group->Add(CreateBalanceBoardSizer(), 0, wxEXPAND | wxALL); From 896304fd072f42cba0423bbcacb9fe095f014aaa Mon Sep 17 00:00:00 2001 From: Lioncash Date: Sun, 23 Nov 2014 21:43:15 -0500 Subject: [PATCH 09/11] ControllerConfigDiag: Disable controller type changes if netplay or a movie is active. --- Source/Core/DolphinWX/ControllerConfigDiag.cpp | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/Source/Core/DolphinWX/ControllerConfigDiag.cpp b/Source/Core/DolphinWX/ControllerConfigDiag.cpp index b0f6a1615f..9622e9be0b 100644 --- a/Source/Core/DolphinWX/ControllerConfigDiag.cpp +++ b/Source/Core/DolphinWX/ControllerConfigDiag.cpp @@ -23,6 +23,7 @@ #include "Common/SysConf.h" #include "Core/ConfigManager.h" #include "Core/Core.h" +#include "Core/Movie.h" #include "Core/NetPlayProto.h" #include "Core/HW/GCPad.h" #include "Core/HW/SI.h" @@ -96,6 +97,10 @@ wxStaticBoxSizer* ControllerConfigDiag::CreateGamecubeSizer() pad_type_choices[i]->Bind(wxEVT_CHOICE, &ControllerConfigDiag::OnGameCubePortChanged, this); + // Disable controller type selection for certain circumstances. + if (NetPlay::IsNetPlayRunning() || Movie::IsMovieActive()) + pad_type_choices[i]->Disable(); + // Set the saved pad type as the default choice. switch (SConfig::GetInstance().m_SIDevice[i]) { @@ -159,6 +164,10 @@ wxStaticBoxSizer* ControllerConfigDiag::CreateWiimoteConfigSizer() wiimote_configure_bt[i] = new wxButton(this, config_bt_id, _("Configure")); wiimote_configure_bt[i]->Bind(wxEVT_BUTTON, &ControllerConfigDiag::ConfigEmulatedWiimote, this); + // Disable controller type selection for certain circumstances. + if (NetPlay::IsNetPlayRunning() || Movie::IsMovieActive()) + wiimote_source_ch[i]->Disable(); + m_orig_wiimote_sources[i] = g_wiimote_sources[i]; wiimote_source_ch[i]->Select(m_orig_wiimote_sources[i]); if (m_orig_wiimote_sources[i] != WIIMOTE_SRC_EMU && m_orig_wiimote_sources[i] != WIIMOTE_SRC_HYBRID) From 5e2888bff69b57c7b7dae7de9fbf517944ecde26 Mon Sep 17 00:00:00 2001 From: Lioncash Date: Mon, 1 Dec 2014 03:50:44 -0500 Subject: [PATCH 10/11] DolphinWX: Add new icon for the controller menu. --- Data/Sys/Themes/Clean Blue/classic.png | Bin 0 -> 1347 bytes Data/Sys/Themes/Clean Blue/classic@2x.png | Bin 0 -> 2948 bytes Data/Sys/Themes/Clean Lite/classic.png | Bin 0 -> 1466 bytes Data/Sys/Themes/Clean Lite/classic@2x.png | Bin 0 -> 3021 bytes Data/Sys/Themes/Clean Pink/classic.png | Bin 0 -> 1673 bytes Data/Sys/Themes/Clean Pink/classic@2x.png | Bin 0 -> 3859 bytes Data/Sys/Themes/Clean/classic.png | Bin 0 -> 1339 bytes Data/Sys/Themes/Clean/classic@2x.png | Bin 0 -> 2767 bytes Source/Core/DolphinWX/FrameTools.cpp | 2 +- 9 files changed, 1 insertion(+), 1 deletion(-) create mode 100644 Data/Sys/Themes/Clean Blue/classic.png create mode 100644 Data/Sys/Themes/Clean Blue/classic@2x.png create mode 100644 Data/Sys/Themes/Clean Lite/classic.png create mode 100644 Data/Sys/Themes/Clean Lite/classic@2x.png create mode 100644 Data/Sys/Themes/Clean Pink/classic.png create mode 100644 Data/Sys/Themes/Clean Pink/classic@2x.png create mode 100644 Data/Sys/Themes/Clean/classic.png create mode 100644 Data/Sys/Themes/Clean/classic@2x.png diff --git a/Data/Sys/Themes/Clean Blue/classic.png b/Data/Sys/Themes/Clean Blue/classic.png new file mode 100644 index 0000000000000000000000000000000000000000..5c7a5a8f1b477c11ae2e429c76528c5eaa69db8a GIT binary patch literal 1347 zcmV-J1-$x+P)hISMjgvYS%i#)%ahuzr1I6j1c%W4xf=*n5}vR@-Hn3PYOyD zy%&{~s02k@C@_j}k!z~NGD_SpUzzoacl!yoyhh(5_rPEQRljDj59}{tUtzuK_c#xH zL3;;1=UHdq6f$3PSx}KW!cOX@Y6#0^EHqfUtd^RRYX?dS=Hs|@_SREZ`R!=yyfG9M zd`=$9>M=+3SVD-iJ`T1=tT&)N0L|;Z zn%u=~15ZXezABGl`SL33KXkWXBCaiHjbBGr3h+CQ8%f zcg#oi0Z;#k3e4xyz{mROGc_#L_6hhMX6-_lcNvseyEcl2!Dq!dzf0bpb8MQ|4MtUY zk0Y50K`Dg*6>_{M$DyjgGs4QZ@K#mVuHlE+XNd_4bYchxHBVEmWRB55p|}Xbd-4IT zEzQfYK1#b3@;(1t!FrkYBREbV>@vciXYNPpWgdhs3q(C_OLSC`#5^E9^C2zn0tQ4N z1{Kp}o}e;Q(q`PI?J!Pk74x*lYnnjYRoV$!JHCgtzv1<}3>t)czWJWaEF$m03R=|A zat@pgXJ|qR9b@Uux?$5mi-iEja!7RknSXJ|9Y}bbAHDK5TYhcxu`grITgk=9>t=VO4LR~qJB2D&<6^?D)reQM(cPVvN)2SQE zvV?vSNeSik;y%|V$~)_OQMD*Uaxt8DkLc~n`??`1J-z-b^5Ap|Eg)m1p!h{wvlqao z*L0q<-{^b){a*_7G`2R8@uKH#3*3T{7c%=oxm{mI9nx>hKOTEG;19r1cyCT<>}|

qh)tOg(Q`;(t}|AkSo3cJsgCo__xbFaY+o9yj(=ey#uj002ovPDHLk FV1nb#j#2;s literal 0 HcmV?d00001 diff --git a/Data/Sys/Themes/Clean Blue/classic@2x.png b/Data/Sys/Themes/Clean Blue/classic@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..c738c9c17e53ec5aa046f0bea9cb05442ff588ba GIT binary patch literal 2948 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 UnDFEdJOBUy07*qoM6N<$f)fh96#xJL literal 0 HcmV?d00001 diff --git a/Data/Sys/Themes/Clean Lite/classic@2x.png b/Data/Sys/Themes/Clean Lite/classic@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..ca754acd05495a10d8045ed8b6c667d1925fbf57 GIT binary patch literal 3021 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 TJhau;00000NkvXXu0mjf%a0et literal 0 HcmV?d00001 diff --git a/Data/Sys/Themes/Clean Pink/classic@2x.png b/Data/Sys/Themes/Clean Pink/classic@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..0f438da43d681fef4680d88b5e34a67931630e82 GIT binary patch literal 3859 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 literal 0 HcmV?d00001 diff --git a/Data/Sys/Themes/Clean/classic@2x.png b/Data/Sys/Themes/Clean/classic@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..f25885b8a350fdb7bc2e09ecbe049c1842bf6889 GIT binary patch literal 2767 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 Vg Date: Mon, 1 Dec 2014 03:53:32 -0500 Subject: [PATCH 11/11] ControllerConfigDiag: Fix Linux builds --- Source/Core/DolphinWX/ControllerConfigDiag.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Source/Core/DolphinWX/ControllerConfigDiag.cpp b/Source/Core/DolphinWX/ControllerConfigDiag.cpp index 9622e9be0b..bca01cc339 100644 --- a/Source/Core/DolphinWX/ControllerConfigDiag.cpp +++ b/Source/Core/DolphinWX/ControllerConfigDiag.cpp @@ -33,7 +33,7 @@ #include "DolphinWX/InputConfigDiag.h" #if defined(HAVE_XRANDR) && HAVE_XRANDR -#include "VideoBackends/OGL/GLInterface/X11Utils.h" +#include "DolphinWX/X11Utils.h" #endif const std::array ControllerConfigDiag::m_gc_pad_type_strs = {{