Add a special input configuration dialog for the GameCube Mic
This is more logical as the mic is plugged into an EXI slot so it should be configured via the GameCube config dialog. This also allows to pass the right port number for the new dialog.
This commit is contained in:
parent
431929fa1d
commit
9ff95c58fa
|
@ -46,6 +46,7 @@ set(GUI_SRCS
|
|||
Input/InputConfigDiagBitmaps.cpp
|
||||
Input/HotkeyInputConfigDiag.cpp
|
||||
Input/GCPadInputConfigDiag.cpp
|
||||
Input/MicButtonConfigDiag.cpp
|
||||
Input/GCKeyboardInputConfigDiag.cpp
|
||||
Input/WiimoteInputConfigDiag.cpp
|
||||
Input/NunchukInputConfigDiag.cpp
|
||||
|
|
|
@ -4,6 +4,7 @@
|
|||
|
||||
#include "DolphinWX/Config/GameCubeConfigPane.h"
|
||||
|
||||
#include <cassert>
|
||||
#include <string>
|
||||
|
||||
#include <wx/button.h>
|
||||
|
@ -22,8 +23,10 @@
|
|||
#include "Core/Core.h"
|
||||
#include "Core/HW/EXI.h"
|
||||
#include "Core/HW/GCMemcard.h"
|
||||
#include "Core/HW/GCPad.h"
|
||||
#include "Core/NetPlayProto.h"
|
||||
#include "DolphinWX/Config/ConfigMain.h"
|
||||
#include "DolphinWX/Input/MicButtonConfigDiag.h"
|
||||
#include "DolphinWX/WxEventUtils.h"
|
||||
#include "DolphinWX/WxUtils.h"
|
||||
|
||||
|
@ -167,6 +170,7 @@ void GameCubeConfigPane::LoadGUIValues()
|
|||
for (int i = 0; i < 3; ++i)
|
||||
{
|
||||
bool isMemcard = false;
|
||||
bool isMic = false;
|
||||
|
||||
// Add strings to the wxChoice list, the third wxChoice is the SP1 slot
|
||||
if (i == 2)
|
||||
|
@ -192,7 +196,7 @@ void GameCubeConfigPane::LoadGUIValues()
|
|||
isMemcard = m_exi_devices[i]->SetStringSelection(slot_devices[5]);
|
||||
break;
|
||||
case EXIDEVICE_MIC:
|
||||
m_exi_devices[i]->SetStringSelection(slot_devices[6]);
|
||||
isMic = m_exi_devices[i]->SetStringSelection(slot_devices[6]);
|
||||
break;
|
||||
case EXIDEVICE_ETH:
|
||||
m_exi_devices[i]->SetStringSelection(sp1_devices[2]);
|
||||
|
@ -203,7 +207,7 @@ void GameCubeConfigPane::LoadGUIValues()
|
|||
break;
|
||||
}
|
||||
|
||||
if (!isMemcard && i < 2)
|
||||
if (!isMemcard && !isMic && i < 2)
|
||||
m_memcard_path[i]->Disable();
|
||||
}
|
||||
}
|
||||
|
@ -265,14 +269,30 @@ void GameCubeConfigPane::OnSP1Changed(wxCommandEvent& event)
|
|||
ChooseEXIDevice(event.GetString(), 2);
|
||||
}
|
||||
|
||||
void GameCubeConfigPane::HandleEXISlotChange(int slot, const wxString& title)
|
||||
{
|
||||
assert(slot >= 0 && slot <= 1);
|
||||
|
||||
if (!m_exi_devices[slot]->GetStringSelection().compare(_(EXIDEV_MIC_STR)))
|
||||
{
|
||||
InputConfig* const pad_plugin = Pad::GetConfig();
|
||||
MicButtonConfigDialog dialog(this, *pad_plugin, title, slot);
|
||||
dialog.ShowModal();
|
||||
}
|
||||
else
|
||||
{
|
||||
ChooseSlotPath(false, SConfig::GetInstance().m_EXIDevice[slot]);
|
||||
}
|
||||
}
|
||||
|
||||
void GameCubeConfigPane::OnSlotAButtonClick(wxCommandEvent& event)
|
||||
{
|
||||
ChooseSlotPath(true, SConfig::GetInstance().m_EXIDevice[0]);
|
||||
HandleEXISlotChange(0, wxString(_("GameCube Microphone Slot A")));
|
||||
}
|
||||
|
||||
void GameCubeConfigPane::OnSlotBButtonClick(wxCommandEvent& event)
|
||||
{
|
||||
ChooseSlotPath(false, SConfig::GetInstance().m_EXIDevice[1]);
|
||||
HandleEXISlotChange(1, wxString(_("GameCube Microphone Slot B")));
|
||||
}
|
||||
|
||||
void GameCubeConfigPane::ChooseEXIDevice(const wxString& deviceName, int deviceNum)
|
||||
|
@ -297,7 +317,7 @@ void GameCubeConfigPane::ChooseEXIDevice(const wxString& deviceName, int deviceN
|
|||
tempType = EXIDEVICE_DUMMY;
|
||||
|
||||
// Gray out the memcard path button if we're not on a memcard or AGP
|
||||
if (tempType == EXIDEVICE_MEMORYCARD || tempType == EXIDEVICE_AGP)
|
||||
if (tempType == EXIDEVICE_MEMORYCARD || tempType == EXIDEVICE_AGP || tempType == EXIDEVICE_MIC)
|
||||
m_memcard_path[deviceNum]->Enable();
|
||||
else if (deviceNum == 0 || deviceNum == 1)
|
||||
m_memcard_path[deviceNum]->Disable();
|
||||
|
|
|
@ -34,6 +34,7 @@ private:
|
|||
void OnSlotBButtonClick(wxCommandEvent&);
|
||||
|
||||
void ChooseEXIDevice(const wxString& device_name, int device_id);
|
||||
void HandleEXISlotChange(int slot, const wxString& title);
|
||||
void ChooseSlotPath(bool is_slot_a, TEXIDevices device_type);
|
||||
|
||||
wxArrayString m_ipl_language_strings;
|
||||
|
|
|
@ -106,6 +106,7 @@
|
|||
<ClCompile Include="Input\InputConfigDiagBitmaps.cpp" />
|
||||
<ClCompile Include="Input\HotkeyInputConfigDiag.cpp" />
|
||||
<ClCompile Include="Input\GCPadInputConfigDiag.cpp" />
|
||||
<ClCompile Include="Input\MicButtonConfigDiag.cpp" />
|
||||
<ClCompile Include="Input\GCKeyboardInputConfigDiag.cpp" />
|
||||
<ClCompile Include="Input\WiimoteInputConfigDiag.cpp" />
|
||||
<ClCompile Include="Input\NunchukInputConfigDiag.cpp" />
|
||||
|
@ -185,6 +186,7 @@
|
|||
<ClInclude Include="Input\InputConfigDiag.h" />
|
||||
<ClInclude Include="Input\HotkeyInputConfigDiag.h" />
|
||||
<ClInclude Include="Input\GCPadInputConfigDiag.h" />
|
||||
<ClInclude Include="Input\MicButtonConfigDiag.h" />
|
||||
<ClInclude Include="Input\GCKeyboardInputConfigDiag.h" />
|
||||
<ClInclude Include="Input\WiimoteInputConfigDiag.h" />
|
||||
<ClInclude Include="Input\NunchukInputConfigDiag.h" />
|
||||
|
|
|
@ -119,6 +119,9 @@
|
|||
<ClCompile Include="Input\GCPadInputConfigDiag.cpp">
|
||||
<Filter>GUI\InputConfig</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="Input\MicButtonConfigDiag.cpp">
|
||||
<Filter>GUI\InputConfig</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="Input\GCKeyboardInputConfigDiag.cpp">
|
||||
<Filter>GUI\InputConfig</Filter>
|
||||
</ClCompile>
|
||||
|
@ -332,6 +335,9 @@
|
|||
<ClInclude Include="Input\GCPadInputConfigDiag.h">
|
||||
<Filter>GUI\InputConfig</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="Input\MicButtonConfigDiag.h">
|
||||
<Filter>GUI\InputConfig</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="Input\GCKeyboardInputConfigDiag.h">
|
||||
<Filter>GUI\InputConfig</Filter>
|
||||
</ClInclude>
|
||||
|
|
|
@ -0,0 +1,36 @@
|
|||
// Copyright 2016 Dolphin Emulator Project
|
||||
// Licensed under GPLv2+
|
||||
// Refer to the license.txt file included.
|
||||
|
||||
#include "DolphinWX/Input/MicButtonConfigDiag.h"
|
||||
|
||||
#include "Core/HW/GCPad.h"
|
||||
#include "Core/HW/GCPadEmu.h"
|
||||
|
||||
MicButtonConfigDialog::MicButtonConfigDialog(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 group_box_button =
|
||||
new ControlGroupBox(Pad::GetGroup(port_num, PadGroup::Mic), this, this);
|
||||
|
||||
auto* const controls_sizer = new wxBoxSizer(wxHORIZONTAL);
|
||||
controls_sizer->Add(group_box_button, 0, wxEXPAND);
|
||||
|
||||
auto* const szr_main = new wxBoxSizer(wxVERTICAL);
|
||||
szr_main->AddSpacer(space5);
|
||||
szr_main->Add(device_chooser, 0, wxEXPAND);
|
||||
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);
|
||||
|
||||
SetSizer(szr_main);
|
||||
Center();
|
||||
UpdateGUI();
|
||||
}
|
|
@ -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 MicButtonConfigDialog final : public InputConfigDialog
|
||||
{
|
||||
public:
|
||||
MicButtonConfigDialog(wxWindow* parent, InputConfig& config, const wxString& name,
|
||||
int port_num = 0);
|
||||
};
|
Loading…
Reference in New Issue