diff --git a/Source/Core/DolphinWX/CMakeLists.txt b/Source/Core/DolphinWX/CMakeLists.txt index ffb43c9489..b7aed182ae 100644 --- a/Source/Core/DolphinWX/CMakeLists.txt +++ b/Source/Core/DolphinWX/CMakeLists.txt @@ -42,6 +42,15 @@ set(GUI_SRCS NetPlay/PadMapDialog.cpp Input/InputConfigDiag.cpp Input/InputConfigDiagBitmaps.cpp + Input/HotkeyInputConfigDiag.cpp + Input/GCPadInputConfigDiag.cpp + Input/GCKeyboardInputConfigDiag.cpp + Input/WiimoteInputConfigDiag.cpp + Input/NunchukInputConfigDiag.cpp + Input/ClassicInputConfigDiag.cpp + Input/GuitarInputConfigDiag.cpp + Input/DrumsInputConfigDiag.cpp + Input/TurntableInputConfigDiag.cpp DolphinSlider.cpp FifoPlayerDlg.cpp Frame.cpp diff --git a/Source/Core/DolphinWX/ControllerConfigDiag.cpp b/Source/Core/DolphinWX/ControllerConfigDiag.cpp index 06b6dccd74..427e078449 100644 --- a/Source/Core/DolphinWX/ControllerConfigDiag.cpp +++ b/Source/Core/DolphinWX/ControllerConfigDiag.cpp @@ -33,7 +33,10 @@ #include "DolphinWX/Config/GCAdapterConfigDiag.h" #include "DolphinWX/ControllerConfigDiag.h" #include "DolphinWX/DolphinSlider.h" +#include "DolphinWX/Input/GCKeyboardInputConfigDiag.h" +#include "DolphinWX/Input/GCPadInputConfigDiag.h" #include "DolphinWX/Input/InputConfigDiag.h" +#include "DolphinWX/Input/WiimoteInputConfigDiag.h" #include "DolphinWX/WxUtils.h" #include "InputCommon/GCAdapter.h" @@ -447,7 +450,7 @@ void ControllerConfigDiag::OnGameCubeConfigButton(wxCommandEvent& event) if (SConfig::GetInstance().m_SIDevice[port_num] == SIDEVICE_GC_KEYBOARD) { - InputConfigDialog config_diag( + GCKeyboardInputConfigDialog config_diag( this, *key_plugin, wxString::Format("GameCube Keyboard Configuration Port %i", port_num + 1), port_num); config_diag.ShowModal(); @@ -462,7 +465,7 @@ void ControllerConfigDiag::OnGameCubeConfigButton(wxCommandEvent& event) } else { - InputConfigDialog config_diag( + GCPadInputConfigDialog config_diag( this, *pad_plugin, wxString::Format("GameCube Controller Configuration Port %i", port_num + 1), port_num); config_diag.ShowModal(); @@ -498,9 +501,9 @@ void ControllerConfigDiag::OnWiimoteConfigButton(wxCommandEvent& ev) HotkeyManagerEmu::Enable(false); - int port_num = m_wiimote_index_from_config_id[ev.GetId()]; + const int port_num = m_wiimote_index_from_config_id[ev.GetId()]; - InputConfigDialog m_ConfigFrame( + WiimoteInputConfigDialog m_ConfigFrame( this, *wiimote_plugin, wxString::Format("Dolphin Emulated Wii Remote Configuration Port %i", port_num + 1), port_num); diff --git a/Source/Core/DolphinWX/DolphinWX.vcxproj b/Source/Core/DolphinWX/DolphinWX.vcxproj index 8677139cd1..c3bb47ec3a 100644 --- a/Source/Core/DolphinWX/DolphinWX.vcxproj +++ b/Source/Core/DolphinWX/DolphinWX.vcxproj @@ -102,6 +102,15 @@ + + + + + + + + + @@ -171,6 +180,15 @@ + + + + + + + + + diff --git a/Source/Core/DolphinWX/DolphinWX.vcxproj.filters b/Source/Core/DolphinWX/DolphinWX.vcxproj.filters index 804e3a26e1..ab8d0a5dbc 100644 --- a/Source/Core/DolphinWX/DolphinWX.vcxproj.filters +++ b/Source/Core/DolphinWX/DolphinWX.vcxproj.filters @@ -110,6 +110,33 @@ GUI\InputConfig + + GUI\InputConfig + + + GUI\InputConfig + + + GUI\InputConfig + + + GUI\InputConfig + + + GUI\InputConfig + + + GUI\InputConfig + + + GUI\InputConfig + + + GUI\InputConfig + + + GUI\InputConfig + GUI\Video @@ -293,6 +320,33 @@ GUI\InputConfig + + GUI\InputConfig + + + GUI\InputConfig + + + GUI\InputConfig + + + GUI\InputConfig + + + GUI\InputConfig + + + GUI\InputConfig + + + GUI\InputConfig + + + GUI\InputConfig + + + GUI\InputConfig + GUI\Video diff --git a/Source/Core/DolphinWX/FrameTools.cpp b/Source/Core/DolphinWX/FrameTools.cpp index a4f0368211..3aad2ef524 100644 --- a/Source/Core/DolphinWX/FrameTools.cpp +++ b/Source/Core/DolphinWX/FrameTools.cpp @@ -65,6 +65,7 @@ #include "DolphinWX/GameListCtrl.h" #include "DolphinWX/Globals.h" #include "DolphinWX/ISOFile.h" +#include "DolphinWX/Input/HotkeyInputConfigDiag.h" #include "DolphinWX/Input/InputConfigDiag.h" #include "DolphinWX/LogWindow.h" #include "DolphinWX/MainMenuBar.h" @@ -997,7 +998,7 @@ void CFrame::OnConfigHotkey(wxCommandEvent& WXUNUSED(event)) HotkeyManagerEmu::Enable(false); - InputConfigDialog m_ConfigFrame(this, *hotkey_plugin, _("Dolphin Hotkeys")); + HotkeyInputConfigDialog m_ConfigFrame(this, *hotkey_plugin, _("Dolphin Hotkeys")); m_ConfigFrame.ShowModal(); // Update references in case controllers were refreshed diff --git a/Source/Core/DolphinWX/Input/ClassicInputConfigDiag.cpp b/Source/Core/DolphinWX/Input/ClassicInputConfigDiag.cpp new file mode 100644 index 0000000000..205bd83952 --- /dev/null +++ b/Source/Core/DolphinWX/Input/ClassicInputConfigDiag.cpp @@ -0,0 +1,50 @@ +// Copyright 2016 Dolphin Emulator Project +// Licensed under GPLv2+ +// Refer to the license.txt file included. + +#include "DolphinWX/Input/ClassicInputConfigDiag.h" + +#include "Core/HW/Wiimote.h" +#include "Core/HW/WiimoteEmu/WiimoteEmu.h" + +ClassicInputConfigDialog::ClassicInputConfigDialog(wxWindow* const parent, InputConfig& config, + const wxString& name, const int port_num) + : InputConfigDialog(parent, config, name, port_num) +{ + const int space5 = FromDIP(5); + + auto* const group_box_buttons = new ControlGroupBox( + Wiimote::GetClassicGroup(port_num, WiimoteEmu::ClassicGroup::Buttons), this, this); + auto* const group_box_dpad = new ControlGroupBox( + Wiimote::GetClassicGroup(port_num, WiimoteEmu::ClassicGroup::DPad), this, this); + auto* const group_box_left_stick = new ControlGroupBox( + Wiimote::GetClassicGroup(port_num, WiimoteEmu::ClassicGroup::LeftStick), this, this); + auto* const group_box_right_stick = new ControlGroupBox( + Wiimote::GetClassicGroup(port_num, WiimoteEmu::ClassicGroup::RightStick), this, this); + auto* const group_box_triggers = new ControlGroupBox( + Wiimote::GetClassicGroup(port_num, WiimoteEmu::ClassicGroup::Triggers), this, this); + + auto* const controls_sizer = new wxBoxSizer(wxHORIZONTAL); + controls_sizer->AddSpacer(space5); + controls_sizer->Add(group_box_buttons, 0, wxEXPAND); + controls_sizer->AddSpacer(space5); + controls_sizer->Add(group_box_dpad, 0, wxEXPAND); + controls_sizer->AddSpacer(space5); + controls_sizer->Add(group_box_left_stick, 0, wxEXPAND); + controls_sizer->AddSpacer(space5); + controls_sizer->Add(group_box_right_stick, 0, wxEXPAND); + controls_sizer->AddSpacer(space5); + controls_sizer->Add(group_box_triggers, 0, wxEXPAND); + controls_sizer->AddSpacer(space5); + + auto* const szr_main = new wxBoxSizer(wxVERTICAL); + szr_main->AddSpacer(space5); + szr_main->Add(controls_sizer, 1, wxEXPAND | wxLEFT | wxRIGHT, space5); + szr_main->AddSpacer(space5); + szr_main->Add(CreateButtonSizer(wxCLOSE | wxNO_DEFAULT), 0, wxEXPAND | wxLEFT | wxRIGHT, space5); + szr_main->AddSpacer(space5); + + SetSizerAndFit(szr_main); + Center(); + UpdateGUI(); +} diff --git a/Source/Core/DolphinWX/Input/ClassicInputConfigDiag.h b/Source/Core/DolphinWX/Input/ClassicInputConfigDiag.h new file mode 100644 index 0000000000..46ddb59e4c --- /dev/null +++ b/Source/Core/DolphinWX/Input/ClassicInputConfigDiag.h @@ -0,0 +1,14 @@ +// Copyright 2016 Dolphin Emulator Project +// Licensed under GPLv2+ +// Refer to the license.txt file included. + +#pragma once + +#include "DolphinWX/Input/InputConfigDiag.h" + +class ClassicInputConfigDialog final : public InputConfigDialog +{ +public: + ClassicInputConfigDialog(wxWindow* parent, InputConfig& config, const wxString& name, + int port_num = 0); +}; diff --git a/Source/Core/DolphinWX/Input/DrumsInputConfigDiag.cpp b/Source/Core/DolphinWX/Input/DrumsInputConfigDiag.cpp new file mode 100644 index 0000000000..8acca90c97 --- /dev/null +++ b/Source/Core/DolphinWX/Input/DrumsInputConfigDiag.cpp @@ -0,0 +1,46 @@ +// Copyright 2016 Dolphin Emulator Project +// Licensed under GPLv2+ +// Refer to the license.txt file included. + +#include "DolphinWX/Input/DrumsInputConfigDiag.h" + +#include "Core/HW/Wiimote.h" +#include "Core/HW/WiimoteEmu/WiimoteEmu.h" + +DrumsInputConfigDialog::DrumsInputConfigDialog(wxWindow* const parent, InputConfig& config, + const wxString& name, const int port_num) + : InputConfigDialog(parent, config, name, port_num) +{ + const int space5 = FromDIP(5); + + auto* const group_box_buttons = new ControlGroupBox( + Wiimote::GetDrumsGroup(port_num, WiimoteEmu::DrumsGroup::Buttons), this, this); + auto* const group_box_pads = new ControlGroupBox( + Wiimote::GetDrumsGroup(port_num, WiimoteEmu::DrumsGroup::Pads), this, this); + + auto* const buttons_pads_sizer = new wxBoxSizer(wxVERTICAL); + buttons_pads_sizer->Add(group_box_buttons); + buttons_pads_sizer->AddSpacer(space5); + buttons_pads_sizer->Add(group_box_pads); + + auto* const group_box_stick = new ControlGroupBox( + Wiimote::GetDrumsGroup(port_num, WiimoteEmu::DrumsGroup::Stick), this, this); + + auto* const controls_sizer = new wxBoxSizer(wxHORIZONTAL); + controls_sizer->AddSpacer(space5); + controls_sizer->Add(buttons_pads_sizer, 0, wxEXPAND); + controls_sizer->AddSpacer(space5); + controls_sizer->Add(group_box_stick, 0, wxEXPAND); + controls_sizer->AddSpacer(space5); + + auto* const szr_main = new wxBoxSizer(wxVERTICAL); + szr_main->AddSpacer(space5); + szr_main->Add(controls_sizer, 1, wxEXPAND | wxLEFT | wxRIGHT, space5); + szr_main->AddSpacer(space5); + szr_main->Add(CreateButtonSizer(wxCLOSE | wxNO_DEFAULT), 0, wxEXPAND | wxLEFT | wxRIGHT, space5); + szr_main->AddSpacer(space5); + + SetSizerAndFit(szr_main); + Center(); + UpdateGUI(); +} diff --git a/Source/Core/DolphinWX/Input/DrumsInputConfigDiag.h b/Source/Core/DolphinWX/Input/DrumsInputConfigDiag.h new file mode 100644 index 0000000000..a254e586e0 --- /dev/null +++ b/Source/Core/DolphinWX/Input/DrumsInputConfigDiag.h @@ -0,0 +1,14 @@ +// Copyright 2016 Dolphin Emulator Project +// Licensed under GPLv2+ +// Refer to the license.txt file included. + +#pragma once + +#include "DolphinWX/Input/InputConfigDiag.h" + +class DrumsInputConfigDialog final : public InputConfigDialog +{ +public: + DrumsInputConfigDialog(wxWindow* parent, InputConfig& config, const wxString& name, + int port_num = 0); +}; diff --git a/Source/Core/DolphinWX/Input/GCKeyboardInputConfigDiag.cpp b/Source/Core/DolphinWX/Input/GCKeyboardInputConfigDiag.cpp new file mode 100644 index 0000000000..43e0d32931 --- /dev/null +++ b/Source/Core/DolphinWX/Input/GCKeyboardInputConfigDiag.cpp @@ -0,0 +1,83 @@ +// Copyright 2016 Dolphin Emulator Project +// Licensed under GPLv2+ +// Refer to the license.txt file included. + +#include "DolphinWX/Input/GCKeyboardInputConfigDiag.h" + +#include "Core/HW/GCKeyboard.h" +#include "Core/HW/GCKeyboardEmu.h" + +enum class KeyboardGroup; + +GCKeyboardInputConfigDialog::GCKeyboardInputConfigDialog(wxWindow* const parent, + InputConfig& config, const wxString& name, + const int port_num) + : InputConfigDialog(parent, config, name, port_num) +{ + const int space5 = FromDIP(5); + + auto* const device_chooser = CreateDeviceChooserGroupBox(); + auto* const reset_sizer = CreaterResetGroupBox(wxHORIZONTAL); + auto* const profile_chooser = CreateProfileChooserGroupBox(); + + auto* const group_box_keys0x = + new ControlGroupBox(Keyboard::GetGroup(port_num, KeyboardGroup::Kb0x), this, this); + auto* const group_box_keys1x = + new ControlGroupBox(Keyboard::GetGroup(port_num, KeyboardGroup::Kb1x), this, this); + auto* const group_box_keys2x = + new ControlGroupBox(Keyboard::GetGroup(port_num, KeyboardGroup::Kb2x), this, this); + auto* const group_box_keys3x = + new ControlGroupBox(Keyboard::GetGroup(port_num, KeyboardGroup::Kb3x), this, this); + auto* const group_box_keys4x = + new ControlGroupBox(Keyboard::GetGroup(port_num, KeyboardGroup::Kb4x), this, this); + auto* const group_box_keys5x = + new ControlGroupBox(Keyboard::GetGroup(port_num, KeyboardGroup::Kb5x), this, this); + auto* const group_box_options = + new ControlGroupBox(Keyboard::GetGroup(port_num, KeyboardGroup::Options), this, this); + + auto* const key5x_options_sizer = new wxBoxSizer(wxVERTICAL); + key5x_options_sizer->Add(group_box_keys5x); + key5x_options_sizer->AddSpacer(space5); + key5x_options_sizer->Add(group_box_options); + + auto* const controls_sizer = new wxBoxSizer(wxHORIZONTAL); + controls_sizer->AddSpacer(space5); + controls_sizer->Add(group_box_keys0x, 0, wxEXPAND | wxTOP, space5); + controls_sizer->AddSpacer(space5); + controls_sizer->Add(group_box_keys1x, 0, wxEXPAND | wxTOP, space5); + controls_sizer->AddSpacer(space5); + controls_sizer->Add(group_box_keys2x, 0, wxEXPAND | wxTOP, space5); + controls_sizer->AddSpacer(space5); + controls_sizer->Add(group_box_keys3x, 0, wxEXPAND | wxTOP, space5); + controls_sizer->AddSpacer(space5); + controls_sizer->Add(group_box_keys4x, 0, wxEXPAND | wxTOP, space5); + controls_sizer->AddSpacer(space5); + controls_sizer->Add(key5x_options_sizer, 0, wxEXPAND | wxTOP, space5); + controls_sizer->AddSpacer(space5); + + auto* const dio = new wxBoxSizer(wxHORIZONTAL); + dio->AddSpacer(space5); + dio->Add(device_chooser, 3, wxEXPAND); + dio->AddSpacer(space5); + dio->Add(reset_sizer, 1, wxEXPAND); + dio->AddSpacer(space5); + dio->Add(profile_chooser, 3, wxEXPAND); + dio->AddSpacer(space5); + + auto* const szr_main = new wxBoxSizer(wxVERTICAL); + szr_main->AddSpacer(space5); + szr_main->Add(dio); + szr_main->AddSpacer(space5); + szr_main->Add(controls_sizer, 1, wxEXPAND | wxLEFT | wxRIGHT, space5); + szr_main->AddSpacer(space5); + szr_main->Add(CreateButtonSizer(wxCLOSE | wxNO_DEFAULT), 0, wxEXPAND | wxLEFT | wxRIGHT, space5); + szr_main->AddSpacer(space5); + + SetSizerAndFit(szr_main); + Center(); + + UpdateDeviceComboBox(); + UpdateProfileComboBox(); + + UpdateGUI(); +} diff --git a/Source/Core/DolphinWX/Input/GCKeyboardInputConfigDiag.h b/Source/Core/DolphinWX/Input/GCKeyboardInputConfigDiag.h new file mode 100644 index 0000000000..5f8d356205 --- /dev/null +++ b/Source/Core/DolphinWX/Input/GCKeyboardInputConfigDiag.h @@ -0,0 +1,14 @@ +// Copyright 2016 Dolphin Emulator Project +// Licensed under GPLv2+ +// Refer to the license.txt file included. + +#pragma once + +#include "DolphinWX/Input/InputConfigDiag.h" + +class GCKeyboardInputConfigDialog final : public InputConfigDialog +{ +public: + GCKeyboardInputConfigDialog(wxWindow* parent, InputConfig& config, const wxString& name, + int port_num = 0); +}; diff --git a/Source/Core/DolphinWX/Input/GCPadInputConfigDiag.cpp b/Source/Core/DolphinWX/Input/GCPadInputConfigDiag.cpp new file mode 100644 index 0000000000..90ddc27bf9 --- /dev/null +++ b/Source/Core/DolphinWX/Input/GCPadInputConfigDiag.cpp @@ -0,0 +1,83 @@ +// Copyright 2016 Dolphin Emulator Project +// Licensed under GPLv2+ +// Refer to the license.txt file included. + +#include "DolphinWX/Input/GCPadInputConfigDiag.h" + +#include "Core/HW/GCPad.h" +#include "Core/HW/GCPadEmu.h" + +GCPadInputConfigDialog::GCPadInputConfigDialog(wxWindow* const parent, InputConfig& config, + const wxString& name, const int port_num) + : InputConfigDialog(parent, config, name, port_num) +{ + const int space5 = FromDIP(5); + + auto* const device_chooser = CreateDeviceChooserGroupBox(); + auto* const reset_sizer = CreaterResetGroupBox(wxHORIZONTAL); + auto* const profile_chooser = CreateProfileChooserGroupBox(); + + auto* const group_box_buttons = + new ControlGroupBox(Pad::GetGroup(port_num, PadGroup::Buttons), this, this); + auto* const group_box_main_stick = + new ControlGroupBox(Pad::GetGroup(port_num, PadGroup::MainStick), this, this); + auto* const group_box_c_stick = + new ControlGroupBox(Pad::GetGroup(port_num, PadGroup::CStick), this, this); + auto* const group_box_dpad = + new ControlGroupBox(Pad::GetGroup(port_num, PadGroup::DPad), this, this); + auto* const group_box_triggers = + new ControlGroupBox(Pad::GetGroup(port_num, PadGroup::Triggers), this, this); + auto* const group_box_rumble = + new ControlGroupBox(Pad::GetGroup(port_num, PadGroup::Rumble), this, this); + auto* const group_box_options = + new ControlGroupBox(Pad::GetGroup(port_num, PadGroup::Options), this, this); + + auto* const triggers_rumble_sizer = new wxBoxSizer(wxVERTICAL); + triggers_rumble_sizer->Add(group_box_triggers, 0, wxEXPAND); + triggers_rumble_sizer->AddSpacer(space5); + triggers_rumble_sizer->Add(group_box_rumble, 0, wxEXPAND); + + auto* const dpad_options_sizer = new wxBoxSizer(wxVERTICAL); + dpad_options_sizer->Add(group_box_dpad, 0, wxEXPAND); + dpad_options_sizer->AddSpacer(space5); + dpad_options_sizer->Add(group_box_options, 0, wxEXPAND); + + auto* const controls_sizer = new wxBoxSizer(wxHORIZONTAL); + controls_sizer->AddSpacer(space5); + controls_sizer->Add(group_box_buttons, 0, wxEXPAND | wxTOP, space5); + controls_sizer->AddSpacer(space5); + controls_sizer->Add(group_box_main_stick, 0, wxEXPAND | wxTOP, space5); + controls_sizer->AddSpacer(space5); + controls_sizer->Add(group_box_c_stick, 0, wxEXPAND | wxTOP, space5); + controls_sizer->AddSpacer(space5); + controls_sizer->Add(triggers_rumble_sizer, 0, wxEXPAND | wxTOP, space5); + controls_sizer->AddSpacer(space5); + controls_sizer->Add(dpad_options_sizer, 0, wxEXPAND | wxTOP, space5); + controls_sizer->AddSpacer(space5); + + auto* const dio = new wxBoxSizer(wxHORIZONTAL); + dio->AddSpacer(space5); + dio->Add(device_chooser, 2, wxEXPAND); + dio->AddSpacer(space5); + dio->Add(reset_sizer, 1, wxEXPAND); + dio->AddSpacer(space5); + dio->Add(profile_chooser, 2, wxEXPAND); + dio->AddSpacer(space5); + + auto* const szr_main = new wxBoxSizer(wxVERTICAL); + szr_main->AddSpacer(space5); + szr_main->Add(dio); + szr_main->AddSpacer(space5); + szr_main->Add(controls_sizer, 1, wxEXPAND | wxLEFT | wxRIGHT, space5); + szr_main->AddSpacer(space5); + szr_main->Add(CreateButtonSizer(wxCLOSE | wxNO_DEFAULT), 0, wxEXPAND | wxLEFT | wxRIGHT, space5); + szr_main->AddSpacer(space5); + + SetSizerAndFit(szr_main); + Center(); + + UpdateDeviceComboBox(); + UpdateProfileComboBox(); + + UpdateGUI(); +} diff --git a/Source/Core/DolphinWX/Input/GCPadInputConfigDiag.h b/Source/Core/DolphinWX/Input/GCPadInputConfigDiag.h new file mode 100644 index 0000000000..31fa1d10db --- /dev/null +++ b/Source/Core/DolphinWX/Input/GCPadInputConfigDiag.h @@ -0,0 +1,14 @@ +// Copyright 2016 Dolphin Emulator Project +// Licensed under GPLv2+ +// Refer to the license.txt file included. + +#pragma once + +#include "DolphinWX/Input/InputConfigDiag.h" + +class GCPadInputConfigDialog final : public InputConfigDialog +{ +public: + GCPadInputConfigDialog(wxWindow* parent, InputConfig& config, const wxString& name, + int port_num = 0); +}; diff --git a/Source/Core/DolphinWX/Input/GuitarInputConfigDiag.cpp b/Source/Core/DolphinWX/Input/GuitarInputConfigDiag.cpp new file mode 100644 index 0000000000..24c8ff2f15 --- /dev/null +++ b/Source/Core/DolphinWX/Input/GuitarInputConfigDiag.cpp @@ -0,0 +1,58 @@ +// Copyright 2016 Dolphin Emulator Project +// Licensed under GPLv2+ +// Refer to the license.txt file included. + +#include "DolphinWX/Input/GuitarInputConfigDiag.h" + +#include "Core/HW/Wiimote.h" +#include "Core/HW/WiimoteEmu/WiimoteEmu.h" + +GuitarInputConfigDialog::GuitarInputConfigDialog(wxWindow* const parent, InputConfig& config, + const wxString& name, const int port_num) + : InputConfigDialog(parent, config, name, port_num) +{ + const int space5 = FromDIP(5); + + auto* const group_box_buttons = new ControlGroupBox( + Wiimote::GetGuitarGroup(port_num, WiimoteEmu::GuitarGroup::Buttons), this, this); + auto* const group_left_strum = new ControlGroupBox( + Wiimote::GetGuitarGroup(port_num, WiimoteEmu::GuitarGroup::Strum), this, this); + + auto* const buttons_strum_sizer = new wxBoxSizer(wxVERTICAL); + buttons_strum_sizer->Add(group_box_buttons, 0, wxEXPAND); + buttons_strum_sizer->AddSpacer(space5); + buttons_strum_sizer->Add(group_left_strum, 0, wxEXPAND); + + auto* const group_box_frets = new ControlGroupBox( + Wiimote::GetGuitarGroup(port_num, WiimoteEmu::GuitarGroup::Frets), this, this); + ControlGroupBox* group_box_whammy = new ControlGroupBox( + Wiimote::GetGuitarGroup(port_num, WiimoteEmu::GuitarGroup::Whammy), this, this); + + auto* const frets_whammy_sizer = new wxBoxSizer(wxVERTICAL); + frets_whammy_sizer->Add(group_box_frets, 0, wxEXPAND); + frets_whammy_sizer->AddSpacer(space5); + frets_whammy_sizer->Add(group_box_whammy, 0, wxEXPAND); + + auto* const group_box_stick = new ControlGroupBox( + Wiimote::GetGuitarGroup(port_num, WiimoteEmu::GuitarGroup::Stick), this, this); + + auto* const controls_sizer = new wxBoxSizer(wxHORIZONTAL); + controls_sizer->AddSpacer(space5); + controls_sizer->Add(buttons_strum_sizer, 0, wxEXPAND); + controls_sizer->AddSpacer(space5); + controls_sizer->Add(frets_whammy_sizer, 0, wxEXPAND); + controls_sizer->AddSpacer(space5); + controls_sizer->Add(group_box_stick, 0, wxEXPAND); + controls_sizer->AddSpacer(space5); + + auto* const szr_main = new wxBoxSizer(wxVERTICAL); + szr_main->AddSpacer(space5); + szr_main->Add(controls_sizer, 1, wxEXPAND | wxLEFT | wxRIGHT, space5); + szr_main->AddSpacer(space5); + szr_main->Add(CreateButtonSizer(wxCLOSE | wxNO_DEFAULT), 0, wxEXPAND | wxLEFT | wxRIGHT, space5); + szr_main->AddSpacer(space5); + + SetSizerAndFit(szr_main); + Center(); + UpdateGUI(); +} diff --git a/Source/Core/DolphinWX/Input/GuitarInputConfigDiag.h b/Source/Core/DolphinWX/Input/GuitarInputConfigDiag.h new file mode 100644 index 0000000000..f5e780e723 --- /dev/null +++ b/Source/Core/DolphinWX/Input/GuitarInputConfigDiag.h @@ -0,0 +1,14 @@ +// Copyright 2016 Dolphin Emulator Project +// Licensed under GPLv2+ +// Refer to the license.txt file included. + +#pragma once + +#include "DolphinWX/Input/InputConfigDiag.h" + +class GuitarInputConfigDialog final : public InputConfigDialog +{ +public: + GuitarInputConfigDialog(wxWindow* parent, InputConfig& config, const wxString& name, + int port_num = 0); +}; diff --git a/Source/Core/DolphinWX/Input/HotkeyInputConfigDiag.cpp b/Source/Core/DolphinWX/Input/HotkeyInputConfigDiag.cpp new file mode 100644 index 0000000000..9a8b036904 --- /dev/null +++ b/Source/Core/DolphinWX/Input/HotkeyInputConfigDiag.cpp @@ -0,0 +1,204 @@ +// Copyright 2016 Dolphin Emulator Project +// Licensed under GPLv2+ +// Refer to the license.txt file included. + +#include +#include +#include + +#include "Core/HotkeyManager.h" +#include "DolphinWX/Input/HotkeyInputConfigDiag.h" + +enum HotkeyGroup : int; + +HotkeyInputConfigDialog::HotkeyInputConfigDialog(wxWindow* const parent, InputConfig& config, + const wxString& name, const int port_num) + : InputConfigDialog(parent, config, name, port_num) +{ + const int space5 = FromDIP(5); + + auto* const device_chooser = CreateDeviceChooserGroupBox(); + auto* const reset_sizer = CreaterResetGroupBox(wxVERTICAL); + auto* const profile_chooser = CreateProfileChooserGroupBox(); + + auto* const notebook = new wxNotebook(this, wxID_ANY); + + // General + auto* const tab_general = new wxPanel(notebook); + + auto* const group_box_general = + new ControlGroupBox(HotkeyManagerEmu::GetHotkeyGroup(HKGP_GENERAL), tab_general, this); + auto* const group_box_volume = + new ControlGroupBox(HotkeyManagerEmu::GetHotkeyGroup(HKGP_VOLUME), tab_general, this); + auto* const group_box_speed = + new ControlGroupBox(HotkeyManagerEmu::GetHotkeyGroup(HKGP_SPEED), tab_general, this); + + auto* const szr_volume_speed = new wxBoxSizer(wxVERTICAL); + szr_volume_speed->AddSpacer(space5); + szr_volume_speed->Add(group_box_volume, 0, wxEXPAND); + szr_volume_speed->AddSpacer(space5); + szr_volume_speed->Add(group_box_speed, 0, wxEXPAND); + + auto* const szr_general = new wxBoxSizer(wxHORIZONTAL); + szr_general->Add(group_box_general, 0, wxEXPAND | wxTOP, space5); + szr_general->AddSpacer(space5); + szr_general->Add(szr_volume_speed, 0, wxEXPAND); + + tab_general->SetSizerAndFit(szr_general); + + notebook->AddPage(tab_general, "General"); + + // TAS Tools + auto* const tab_tas = new wxPanel(notebook); + + auto* const group_box_frame_advance = + new ControlGroupBox(HotkeyManagerEmu::GetHotkeyGroup(HKGP_FRANE_ADVANCE), tab_tas, this); + auto* const group_box_movie = + new ControlGroupBox(HotkeyManagerEmu::GetHotkeyGroup(HKGP_MOVIE), tab_tas, this); + + auto* const szr_tas = new wxBoxSizer(wxHORIZONTAL); + szr_tas->AddSpacer(space5); + szr_tas->Add(group_box_frame_advance, 0, wxEXPAND | wxTOP, space5); + szr_tas->AddSpacer(space5); + szr_tas->Add(group_box_movie, 0, wxEXPAND | wxTOP, space5); + + tab_tas->SetSizerAndFit(szr_tas); + + notebook->AddPage(tab_tas, "TAS Tools"); + + // WII and Wii Remote + auto* const tab_wii = new wxPanel(notebook); + + auto* const group_box_wii = + new ControlGroupBox(HotkeyManagerEmu::GetHotkeyGroup(HKGP_WII), tab_wii, this); + + auto* const szr_wii = new wxBoxSizer(wxHORIZONTAL); + szr_wii->AddSpacer(space5); + szr_wii->Add(group_box_wii, 0, wxEXPAND | wxTOP, space5); + szr_wii->AddSpacer(space5); + + tab_wii->SetSizerAndFit(szr_wii); + + notebook->AddPage(tab_wii, "Wii and Wii Remote"); + + // Graphics + auto* const tab_graphics = new wxPanel(notebook); + + auto* const group_box_graphics_toggles = new ControlGroupBox( + HotkeyManagerEmu::GetHotkeyGroup(HKGP_GRAPHICS_TOGGLES), tab_graphics, this); + auto* const group_box_ir = + new ControlGroupBox(HotkeyManagerEmu::GetHotkeyGroup(HKGP_IR), tab_graphics, this); + + auto* const szr_toggle_ir = new wxBoxSizer(wxVERTICAL); + szr_toggle_ir->Add(group_box_graphics_toggles, 0, wxEXPAND); + szr_toggle_ir->AddSpacer(space5); + szr_toggle_ir->Add(group_box_ir, 0, wxEXPAND); + + auto* const group_box_freelook = + new ControlGroupBox(HotkeyManagerEmu::GetHotkeyGroup(HKGP_FREELOOK), tab_graphics, this); + + auto* const szr_graphics_toggles = new wxBoxSizer(wxHORIZONTAL); + szr_graphics_toggles->AddSpacer(space5); + szr_graphics_toggles->Add(szr_toggle_ir, 0, wxEXPAND | wxTOP, space5); + szr_graphics_toggles->AddSpacer(space5); + szr_graphics_toggles->Add(group_box_freelook, 0, wxEXPAND | wxTOP, space5); + szr_graphics_toggles->AddSpacer(space5); + + tab_graphics->SetSizerAndFit(szr_graphics_toggles); + + notebook->AddPage(tab_graphics, "Graphics"); + + // 3D + auto* const tab_3D = new wxPanel(notebook); + + auto* const group_box_3D_toggles = + new ControlGroupBox(HotkeyManagerEmu::GetHotkeyGroup(HKGP_3D_TOGGLE), tab_3D, this); + auto* const group_box_3D_depth = + new ControlGroupBox(HotkeyManagerEmu::GetHotkeyGroup(HKGP_3D_DEPTH), tab_3D, this); + + auto* const szr_3D = new wxBoxSizer(wxHORIZONTAL); + szr_3D->AddSpacer(space5); + szr_3D->Add(group_box_3D_toggles, 0, wxEXPAND | wxTOP, space5); + szr_3D->AddSpacer(space5); + szr_3D->Add(group_box_3D_depth, 0, wxEXPAND | wxTOP, space5); + szr_3D->AddSpacer(space5); + + tab_3D->SetSizerAndFit(szr_3D); + + notebook->AddPage(tab_3D, "3D"); + + // Save and Load State + auto* const tab_save_load_state = new wxPanel(notebook); + + auto* const group_box_load_state = new ControlGroupBox( + HotkeyManagerEmu::GetHotkeyGroup(HKGP_LOAD_STATE), tab_save_load_state, this); + auto* const group_box_save_state = new ControlGroupBox( + HotkeyManagerEmu::GetHotkeyGroup(HKGP_SAVE_STATE), tab_save_load_state, this); + + auto* const szr_save_load_state = new wxBoxSizer(wxHORIZONTAL); + szr_save_load_state->AddSpacer(space5); + szr_save_load_state->Add(group_box_load_state, 0, wxEXPAND | wxTOP, space5); + szr_save_load_state->AddSpacer(space5); + szr_save_load_state->Add(group_box_save_state, 0, wxEXPAND | wxTOP, space5); + szr_save_load_state->AddSpacer(space5); + + tab_save_load_state->SetSizerAndFit(szr_save_load_state); + + notebook->AddPage(tab_save_load_state, "Save and Load State"); + + // Other State Managament + auto* const tab_other_state = new wxPanel(notebook); + + auto* const group_box_select_state = new ControlGroupBox( + HotkeyManagerEmu::GetHotkeyGroup(HKGP_SELECT_STATE), tab_other_state, this); + auto* const group_box_load_last_state = new ControlGroupBox( + HotkeyManagerEmu::GetHotkeyGroup(HKGP_LOAD_LAST_STATE), tab_other_state, this); + auto* const group_box_state_misc = + new ControlGroupBox(HotkeyManagerEmu::GetHotkeyGroup(HKGP_STATE_MISC), tab_other_state, this); + + auto* const szr_other_state = new wxBoxSizer(wxHORIZONTAL); + szr_other_state->AddSpacer(space5); + szr_other_state->Add(group_box_select_state, 0, wxEXPAND | wxTOP, space5); + szr_other_state->AddSpacer(space5); + szr_other_state->Add(group_box_load_last_state, 0, wxEXPAND | wxTOP, space5); + szr_other_state->AddSpacer(space5); + szr_other_state->Add(group_box_state_misc, 0, wxEXPAND | wxTOP, space5); + szr_other_state->AddSpacer(space5); + + tab_other_state->SetSizerAndFit(szr_other_state); + + notebook->AddPage(tab_other_state, "Other State Management"); + + notebook->SetSelection(0); + + auto* const device_profile_sizer = new wxBoxSizer(wxVERTICAL); + device_profile_sizer->Add(device_chooser, 1, wxEXPAND); + device_profile_sizer->Add(profile_chooser, 1, wxEXPAND); + + auto* const group_box_options = + new ControlGroupBox(HotkeyManagerEmu::GetOptionsGroup(), this, this); + + auto* const dio = new wxBoxSizer(wxHORIZONTAL); + dio->AddSpacer(space5); + dio->Add(device_profile_sizer, 3, wxEXPAND); + dio->Add(reset_sizer, 0, wxEXPAND); + dio->Add(group_box_options, 1, wxEXPAND); + dio->AddSpacer(space5); + + auto* const szr_main = new wxBoxSizer(wxVERTICAL); + szr_main->AddSpacer(space5); + szr_main->Add(dio); + szr_main->AddSpacer(space5); + szr_main->Add(notebook, 1, wxEXPAND | wxLEFT | wxRIGHT, space5); + szr_main->AddSpacer(space5); + szr_main->Add(CreateButtonSizer(wxCLOSE | wxNO_DEFAULT), 0, wxEXPAND | wxLEFT | wxRIGHT, space5); + szr_main->AddSpacer(space5); + + SetSizerAndFit(szr_main); + Center(); + + UpdateDeviceComboBox(); + UpdateProfileComboBox(); + + UpdateGUI(); +} diff --git a/Source/Core/DolphinWX/Input/HotkeyInputConfigDiag.h b/Source/Core/DolphinWX/Input/HotkeyInputConfigDiag.h new file mode 100644 index 0000000000..3a964b8d46 --- /dev/null +++ b/Source/Core/DolphinWX/Input/HotkeyInputConfigDiag.h @@ -0,0 +1,14 @@ +// Copyright 2016 Dolphin Emulator Project +// Licensed under GPLv2+ +// Refer to the license.txt file included. + +#pragma once + +#include "DolphinWX/Input/InputConfigDiag.h" + +class HotkeyInputConfigDialog final : public InputConfigDialog +{ +public: + HotkeyInputConfigDialog(wxWindow* parent, InputConfig& config, const wxString& name, + int port_num = 0); +}; diff --git a/Source/Core/DolphinWX/Input/InputConfigDiag.cpp b/Source/Core/DolphinWX/Input/InputConfigDiag.cpp index 74cb503531..7434371e1b 100644 --- a/Source/Core/DolphinWX/Input/InputConfigDiag.cpp +++ b/Source/Core/DolphinWX/Input/InputConfigDiag.cpp @@ -45,7 +45,12 @@ #include "Core/HW/WiimoteEmu/WiimoteEmu.h" #include "Core/HotkeyManager.h" #include "DolphinWX/DolphinSlider.h" +#include "DolphinWX/Input/ClassicInputConfigDiag.h" +#include "DolphinWX/Input/DrumsInputConfigDiag.h" +#include "DolphinWX/Input/GuitarInputConfigDiag.h" #include "DolphinWX/Input/InputConfigDiag.h" +#include "DolphinWX/Input/NunchukInputConfigDiag.h" +#include "DolphinWX/Input/TurntableInputConfigDiag.h" #include "DolphinWX/WxUtils.h" #include "InputCommon/ControllerEmu.h" #include "InputCommon/ControllerInterface/ControllerInterface.h" @@ -66,22 +71,32 @@ void InputConfigDialog::ConfigExtension(wxCommandEvent& event) { case WiimoteEmu::EXT_NUNCHUK: { + NunchukInputConfigDialog dlg(this, m_config, _("Nunchuk Configuration"), m_port_num); + dlg.ShowModal(); } break; case WiimoteEmu::EXT_CLASSIC: { + ClassicInputConfigDialog dlg(this, m_config, _("Classic Controller Configuration"), m_port_num); + dlg.ShowModal(); } break; case WiimoteEmu::EXT_GUITAR: { + GuitarInputConfigDialog dlg(this, m_config, _("Guitar Configuration"), m_port_num); + dlg.ShowModal(); } break; case WiimoteEmu::EXT_DRUMS: { + DrumsInputConfigDialog dlg(this, m_config, _("Drums Configuration"), m_port_num); + dlg.ShowModal(); } break; case WiimoteEmu::EXT_TURNTABLE: { + TurntableInputConfigDialog dlg(this, m_config, _("Turntable Configuration"), m_port_num); + dlg.ShowModal(); } break; default: diff --git a/Source/Core/DolphinWX/Input/NunchukInputConfigDiag.cpp b/Source/Core/DolphinWX/Input/NunchukInputConfigDiag.cpp new file mode 100644 index 0000000000..d75d0bd8b2 --- /dev/null +++ b/Source/Core/DolphinWX/Input/NunchukInputConfigDiag.cpp @@ -0,0 +1,54 @@ +// Copyright 2016 Dolphin Emulator Project +// Licensed under GPLv2+ +// Refer to the license.txt file included. + +#include "DolphinWX/Input/NunchukInputConfigDiag.h" + +#include "Core/HW/Wiimote.h" +#include "Core/HW/WiimoteEmu/WiimoteEmu.h" + +NunchukInputConfigDialog::NunchukInputConfigDialog(wxWindow* const parent, InputConfig& config, + const wxString& name, const int port_num) + : InputConfigDialog(parent, config, name, port_num) +{ + const int space5 = FromDIP(5); + + auto* const group_box_buttons = new ControlGroupBox( + Wiimote::GetNunchukGroup(port_num, WiimoteEmu::NunchukGroup::Buttons), this, this); + auto* const group_box_shake = new ControlGroupBox( + Wiimote::GetNunchukGroup(port_num, WiimoteEmu::NunchukGroup::Shake), this, this); + + auto* const buttons_shake = new wxBoxSizer(wxVERTICAL); + buttons_shake->Add(group_box_buttons, 0, wxEXPAND); + buttons_shake->AddSpacer(space5); + buttons_shake->Add(group_box_shake, 0, wxEXPAND); + + auto* const group_box_stick = new ControlGroupBox( + Wiimote::GetNunchukGroup(port_num, WiimoteEmu::NunchukGroup::Stick), this, this); + auto* const group_box_tilt = new ControlGroupBox( + Wiimote::GetNunchukGroup(port_num, WiimoteEmu::NunchukGroup::Tilt), this, this); + auto* const group_box_swing = new ControlGroupBox( + Wiimote::GetNunchukGroup(port_num, WiimoteEmu::NunchukGroup::Swing), this, this); + + auto* const controls_sizer = new wxBoxSizer(wxHORIZONTAL); + controls_sizer->AddSpacer(space5); + controls_sizer->Add(buttons_shake, 0, wxEXPAND); + controls_sizer->AddSpacer(space5); + controls_sizer->Add(group_box_stick, 0, wxEXPAND); + controls_sizer->AddSpacer(space5); + controls_sizer->Add(group_box_tilt, 0, wxEXPAND); + controls_sizer->AddSpacer(space5); + controls_sizer->Add(group_box_swing, 0, wxEXPAND); + controls_sizer->AddSpacer(space5); + + auto* const szr_main = new wxBoxSizer(wxVERTICAL); + szr_main->AddSpacer(space5); + szr_main->Add(controls_sizer, 1, wxEXPAND | wxLEFT | wxRIGHT, space5); + szr_main->AddSpacer(space5); + szr_main->Add(CreateButtonSizer(wxCLOSE | wxNO_DEFAULT), 0, wxEXPAND | wxLEFT | wxRIGHT, space5); + szr_main->AddSpacer(space5); + + SetSizerAndFit(szr_main); + Center(); + UpdateGUI(); +} diff --git a/Source/Core/DolphinWX/Input/NunchukInputConfigDiag.h b/Source/Core/DolphinWX/Input/NunchukInputConfigDiag.h new file mode 100644 index 0000000000..a3fd64a045 --- /dev/null +++ b/Source/Core/DolphinWX/Input/NunchukInputConfigDiag.h @@ -0,0 +1,14 @@ +// Copyright 2016 Dolphin Emulator Project +// Licensed under GPLv2+ +// Refer to the license.txt file included. + +#pragma once + +#include "DolphinWX/Input/InputConfigDiag.h" + +class NunchukInputConfigDialog final : public InputConfigDialog +{ +public: + NunchukInputConfigDialog(wxWindow* parent, InputConfig& config, const wxString& name, + int port_num = 0); +}; diff --git a/Source/Core/DolphinWX/Input/TurntableInputConfigDiag.cpp b/Source/Core/DolphinWX/Input/TurntableInputConfigDiag.cpp new file mode 100644 index 0000000000..bc5b627d6c --- /dev/null +++ b/Source/Core/DolphinWX/Input/TurntableInputConfigDiag.cpp @@ -0,0 +1,62 @@ +// Copyright 2016 Dolphin Emulator Project +// Licensed under GPLv2+ +// Refer to the license.txt file included. + +#include "DolphinWX/Input/TurntableInputConfigDiag.h" + +#include "Core/HW/Wiimote.h" +#include "Core/HW/WiimoteEmu/WiimoteEmu.h" + +TurntableInputConfigDialog::TurntableInputConfigDialog(wxWindow* const parent, InputConfig& config, + const wxString& name, const int port_num) + : InputConfigDialog(parent, config, name, port_num) +{ + const int space5 = FromDIP(5); + + auto* const group_box_stick = new ControlGroupBox( + Wiimote::GetTurntableGroup(port_num, WiimoteEmu::TurntableGroup::Stick), this, this); + auto* const group_box_effect_dial = new ControlGroupBox( + Wiimote::GetTurntableGroup(port_num, WiimoteEmu::TurntableGroup::EffectDial), this, this); + + auto* const stick_effect_sizer = new wxBoxSizer(wxVERTICAL); + stick_effect_sizer->Add(group_box_stick, 0, wxEXPAND); + stick_effect_sizer->AddSpacer(space5); + stick_effect_sizer->Add(group_box_effect_dial, 0, wxEXPAND); + + auto* const group_box_left_table = new ControlGroupBox( + Wiimote::GetTurntableGroup(port_num, WiimoteEmu::TurntableGroup::LeftTable), this, this); + auto* const group_box_right_table = new ControlGroupBox( + Wiimote::GetTurntableGroup(port_num, WiimoteEmu::TurntableGroup::RightTable), this, this); + auto* const group_box_crossfade = new ControlGroupBox( + Wiimote::GetTurntableGroup(port_num, WiimoteEmu::TurntableGroup::Crossfade), this, this); + + auto* const tables_crossfade_sizer = new wxBoxSizer(wxVERTICAL); + tables_crossfade_sizer->Add(group_box_right_table, 0, wxEXPAND); + tables_crossfade_sizer->AddSpacer(space5); + tables_crossfade_sizer->Add(group_box_left_table, 0, wxEXPAND); + tables_crossfade_sizer->AddSpacer(space5); + tables_crossfade_sizer->Add(group_box_crossfade, 0, wxEXPAND); + + auto* const group_box_buttons = new ControlGroupBox( + Wiimote::GetTurntableGroup(port_num, WiimoteEmu::TurntableGroup::Buttons), this, this); + + auto* const controls_sizer = new wxBoxSizer(wxHORIZONTAL); + controls_sizer->AddSpacer(space5); + controls_sizer->Add(group_box_buttons, 0, wxEXPAND); + controls_sizer->AddSpacer(space5); + controls_sizer->Add(stick_effect_sizer, 0, wxEXPAND); + controls_sizer->AddSpacer(space5); + controls_sizer->Add(tables_crossfade_sizer, 0, wxEXPAND); + controls_sizer->AddSpacer(space5); + + auto* const szr_main = new wxBoxSizer(wxVERTICAL); + szr_main->AddSpacer(space5); + szr_main->Add(controls_sizer, 1, wxEXPAND | wxLEFT | wxRIGHT, space5); + szr_main->AddSpacer(space5); + szr_main->Add(CreateButtonSizer(wxCLOSE | wxNO_DEFAULT), 0, wxEXPAND | wxLEFT | wxRIGHT, space5); + szr_main->AddSpacer(space5); + + SetSizerAndFit(szr_main); + Center(); + UpdateGUI(); +} diff --git a/Source/Core/DolphinWX/Input/TurntableInputConfigDiag.h b/Source/Core/DolphinWX/Input/TurntableInputConfigDiag.h new file mode 100644 index 0000000000..305be6c96f --- /dev/null +++ b/Source/Core/DolphinWX/Input/TurntableInputConfigDiag.h @@ -0,0 +1,14 @@ +// Copyright 2016 Dolphin Emulator Project +// Licensed under GPLv2+ +// Refer to the license.txt file included. + +#pragma once + +#include "DolphinWX/Input/InputConfigDiag.h" + +class TurntableInputConfigDialog final : public InputConfigDialog +{ +public: + TurntableInputConfigDialog(wxWindow* parent, InputConfig& config, const wxString& name, + int port_num = 0); +}; diff --git a/Source/Core/DolphinWX/Input/WiimoteInputConfigDiag.cpp b/Source/Core/DolphinWX/Input/WiimoteInputConfigDiag.cpp new file mode 100644 index 0000000000..32efa14451 --- /dev/null +++ b/Source/Core/DolphinWX/Input/WiimoteInputConfigDiag.cpp @@ -0,0 +1,129 @@ +// Copyright 2016 Dolphin Emulator Project +// Licensed under GPLv2+ +// Refer to the license.txt file included. + +#include +#include + +#include "DolphinWX/Input/WiimoteInputConfigDiag.h" + +#include "Core/HW/Wiimote.h" +#include "Core/HW/WiimoteEmu/WiimoteEmu.h" + +WiimoteInputConfigDialog::WiimoteInputConfigDialog(wxWindow* const parent, InputConfig& config, + const wxString& name, const int port_num) + : InputConfigDialog(parent, config, name, port_num) +{ + const int space5 = FromDIP(5); + + auto* const device_chooser = CreateDeviceChooserGroupBox(); + auto* const reset_sizer = CreaterResetGroupBox(wxVERTICAL); + auto* const profile_chooser = CreateProfileChooserGroupBox(); + + auto* const notebook = new wxNotebook(this, wxID_ANY); + + // General and Options + auto* const tab_general = new wxPanel(notebook); + + auto* const group_box_buttons = new ControlGroupBox( + Wiimote::GetWiimoteGroup(port_num, WiimoteEmu::WiimoteGroup::Buttons), tab_general, this); + auto* const group_box_dpad = new ControlGroupBox( + Wiimote::GetWiimoteGroup(port_num, WiimoteEmu::WiimoteGroup::DPad), tab_general, this); + auto* const group_box_rumble = new ControlGroupBox( + Wiimote::GetWiimoteGroup(port_num, WiimoteEmu::WiimoteGroup::Rumble), tab_general, this); + auto* const group_box_extension = new ControlGroupBox( + Wiimote::GetWiimoteGroup(port_num, WiimoteEmu::WiimoteGroup::Extension), tab_general, this); + auto* const group_box_options = new ControlGroupBox( + Wiimote::GetWiimoteGroup(port_num, WiimoteEmu::WiimoteGroup::Options), tab_general, this); + auto* const group_box_hotkeys = new ControlGroupBox( + Wiimote::GetWiimoteGroup(port_num, WiimoteEmu::WiimoteGroup::Hotkeys), tab_general, this); + + auto* const dpad_extension_rumble_sizer = new wxBoxSizer(wxVERTICAL); + dpad_extension_rumble_sizer->Add(group_box_dpad, 0, wxEXPAND); + dpad_extension_rumble_sizer->AddSpacer(space5); + dpad_extension_rumble_sizer->Add(group_box_extension, 0, wxEXPAND); + dpad_extension_rumble_sizer->AddSpacer(space5); + dpad_extension_rumble_sizer->Add(group_box_rumble, 0, wxEXPAND); + + auto* const options_hotkeys_sizer = new wxBoxSizer(wxVERTICAL); + options_hotkeys_sizer->Add(group_box_options, 0, wxEXPAND); + options_hotkeys_sizer->AddSpacer(space5); + options_hotkeys_sizer->Add(group_box_hotkeys, 0, wxEXPAND); + + auto* const general_options_sizer = new wxBoxSizer(wxHORIZONTAL); + general_options_sizer->AddSpacer(space5); + general_options_sizer->Add(group_box_buttons, 0, wxEXPAND | wxTOP, space5); + general_options_sizer->AddSpacer(space5); + general_options_sizer->Add(dpad_extension_rumble_sizer, 0, wxEXPAND | wxTOP, space5); + general_options_sizer->AddSpacer(space5); + general_options_sizer->Add(options_hotkeys_sizer, 0, wxEXPAND | wxTOP, space5); + general_options_sizer->AddSpacer(space5); + + tab_general->SetSizerAndFit(general_options_sizer); + + notebook->AddPage(tab_general, "General and Options"); + + // Motion Controls and IR + auto* const tab_motion_controls_ir = new wxPanel(notebook); + + auto* const group_box_shake = + new ControlGroupBox(Wiimote::GetWiimoteGroup(port_num, WiimoteEmu::WiimoteGroup::Shake), + tab_motion_controls_ir, this); + auto* const group_box_ir = + new ControlGroupBox(Wiimote::GetWiimoteGroup(port_num, WiimoteEmu::WiimoteGroup::IR), + tab_motion_controls_ir, this); + auto* const group_box_tilt = + new ControlGroupBox(Wiimote::GetWiimoteGroup(port_num, WiimoteEmu::WiimoteGroup::Tilt), + tab_motion_controls_ir, this); + auto* const group_box_swing = + new ControlGroupBox(Wiimote::GetWiimoteGroup(port_num, WiimoteEmu::WiimoteGroup::Swing), + tab_motion_controls_ir, this); + + auto* const swing_shake_sizer = new wxBoxSizer(wxVERTICAL); + swing_shake_sizer->Add(group_box_swing, 0, wxEXPAND); + swing_shake_sizer->AddSpacer(space5); + swing_shake_sizer->Add(group_box_shake, 0, wxEXPAND); + + auto* const motion_controls_ir_sizer = new wxBoxSizer(wxHORIZONTAL); + motion_controls_ir_sizer->AddSpacer(space5); + motion_controls_ir_sizer->Add(group_box_ir, 0, wxEXPAND | wxTOP, space5); + motion_controls_ir_sizer->AddSpacer(space5); + motion_controls_ir_sizer->Add(group_box_tilt, 0, wxEXPAND | wxTOP, space5); + motion_controls_ir_sizer->AddSpacer(space5); + motion_controls_ir_sizer->Add(swing_shake_sizer, 0, wxEXPAND | wxTOP, space5); + motion_controls_ir_sizer->AddSpacer(space5); + + tab_motion_controls_ir->SetSizerAndFit(motion_controls_ir_sizer); + + notebook->AddPage(tab_motion_controls_ir, "Motion Controls and IR"); + + notebook->SetSelection(0); + + auto* const device_profile_sizer = new wxBoxSizer(wxVERTICAL); + device_profile_sizer->Add(device_chooser, 1, wxEXPAND); + device_profile_sizer->Add(profile_chooser, 1, wxEXPAND); + + auto* const dio = new wxBoxSizer(wxHORIZONTAL); + dio->AddSpacer(space5); + dio->Add(device_profile_sizer, 5, wxEXPAND); + dio->AddSpacer(space5); + dio->Add(reset_sizer, 1, wxEXPAND); + dio->AddSpacer(space5); + + auto* const szr_main = new wxBoxSizer(wxVERTICAL); + szr_main->AddSpacer(space5); + szr_main->Add(dio); + szr_main->AddSpacer(space5); + szr_main->Add(notebook, 1, wxEXPAND | wxLEFT | wxRIGHT, space5); + szr_main->AddSpacer(space5); + szr_main->Add(CreateButtonSizer(wxCLOSE | wxNO_DEFAULT), 0, wxEXPAND | wxLEFT | wxRIGHT, space5); + szr_main->AddSpacer(space5); + + SetSizerAndFit(szr_main); + Center(); + + UpdateDeviceComboBox(); + UpdateProfileComboBox(); + + UpdateGUI(); +} diff --git a/Source/Core/DolphinWX/Input/WiimoteInputConfigDiag.h b/Source/Core/DolphinWX/Input/WiimoteInputConfigDiag.h new file mode 100644 index 0000000000..2a86f7dfe0 --- /dev/null +++ b/Source/Core/DolphinWX/Input/WiimoteInputConfigDiag.h @@ -0,0 +1,14 @@ +// Copyright 2016 Dolphin Emulator Project +// Licensed under GPLv2+ +// Refer to the license.txt file included. + +#pragma once + +#include "DolphinWX/Input/InputConfigDiag.h" + +class WiimoteInputConfigDialog final : public InputConfigDialog +{ +public: + WiimoteInputConfigDialog(wxWindow* parent, InputConfig& config, const wxString& name, + int port_num = 0); +};