InputConfigDialog::InputConfigDialog(wxWindow* const parent, InputPlugin& plugin, const std::string& name, const int tab_num) : wxDialog(parent, wxID_ANY, WXTSTR_FROM_CSTR(name.c_str()), wxPoint(128,-1), wxDefaultSize) , m_plugin(plugin) { m_pad_notebook = new wxNotebook(this, -1, wxDefaultPosition, wxDefaultSize, wxNB_DEFAULT); for (unsigned int i = 0; i < plugin.controllers.size(); ++i) { GamepadPage* gp = new GamepadPage(m_pad_notebook, m_plugin, i, this); m_padpages.push_back(gp); m_pad_notebook->AddPage(gp, wxString::Format(wxT("%s %u"), WXTSTR_FROM_CSTR(m_plugin.gui_name), 1+i)); } m_pad_notebook->SetSelection(tab_num); UpdateDeviceComboBox(); UpdateProfileComboBox(); Connect(wxID_OK, wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler(InputConfigDialog::ClickSave)); wxBoxSizer* const szr = new wxBoxSizer(wxVERTICAL); szr->Add(m_pad_notebook, 0, wxEXPAND|wxTOP|wxLEFT|wxRIGHT, 5); szr->Add(CreateButtonSizer(wxOK | wxCANCEL | wxNO_DEFAULT), 0, wxEXPAND|wxALL, 5); SetSizerAndFit(szr); Center(); // live preview update timer m_update_timer = new wxTimer(this, -1); Connect(wxID_ANY, wxEVT_TIMER, wxTimerEventHandler(InputConfigDialog::UpdateBitmaps), (wxObject*)0, this); m_update_timer->Start(PREVIEW_UPDATE_TIME, wxTIMER_CONTINUOUS); }
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(); }