GCPadNew: Added option to disable input when Dolphin window isn't active. Some other...
[dolphin.git] / Source / Plugins / Plugin_GCPadNew / Src / ConfigDiag.h
blob48002f493bfaba015e8631c274ee92ee5441acd1
1 #ifndef _CONFIGBOX_H_
2 #define _CONFIGBOX_H_
4 #define SLIDER_TICK_COUNT 100
5 #define DETECT_WAIT_TIME 1500
6 #define PREVIEW_UPDATE_TIME 25
8 // might have to change this setup for wiimote
9 #define PROFILES_PATH "Profiles/GCPad/"
11 #include <wx/wx.h>
12 #include <wx/listbox.h>
13 #include <wx/textctrl.h>
14 #include <wx/button.h>
15 #include <wx/stattext.h>
16 #include <wx/combobox.h>
17 #include <wx/checkbox.h>
18 #include <wx/notebook.h>
19 #include <wx/panel.h>
21 #include <sstream>
22 #include <vector>
24 #include "ControllerInterface/ControllerInterface.h"
25 #include "Config.h"
26 #include "FileSearch.h"
28 class PadSetting
30 protected:
31 PadSetting( ControlState& _value ) : value(_value) {}
33 public:
34 virtual void UpdateGUI() = 0;
35 virtual void UpdateValue() = 0;
37 ControlState& value;
40 class PadSettingChoice : public PadSetting, public wxChoice
42 public:
43 PadSettingChoice( wxWindow* const parent, ControlState& _value, int min, int max );
44 void UpdateGUI();
45 void UpdateValue();
48 class PadSettingCheckBox : public PadSetting, public wxCheckBox
50 public:
51 PadSettingCheckBox( wxWindow* const parent, ControlState& _value, const char* const label );
52 void UpdateGUI();
53 void UpdateValue();
57 class ControlChooser : public wxStaticBoxSizer
59 public:
60 ControlChooser( wxWindow* const parent, ControllerInterface::ControlReference* const ref, wxWindow* const eventsink );
62 void UpdateGUI();
64 ControllerInterface::ControlReference* control_reference;
66 wxTextCtrl* textctrl;
67 wxListBox* control_lbox;
68 wxChoice* mode_cbox;
69 wxSlider* range_slider;
71 private:
72 wxStaticText* m_bound_label;
75 class ControlList : public wxDialog
77 public:
79 ControlList( wxWindow* const parent, ControllerInterface::ControlReference* const ref, ControlChooser* const chooser );
81 private:
82 ControlChooser* const m_control_chooser;
85 class ControlDialog : public wxDialog
87 public:
88 ControlDialog( wxWindow* const parent, ControllerInterface::ControlReference* const ref, const std::vector<ControllerInterface::Device*>& devs );
89 void SelectControl( wxCommandEvent& event );
91 ControllerInterface::ControlReference* const control_reference;
92 wxComboBox* device_cbox;
93 ControlChooser* control_chooser;
96 class ControlButton : public wxButton
98 public:
99 ControlButton( wxWindow* const parent, ControllerInterface::ControlReference* const _ref, const unsigned int width, const std::string& label = "" );
101 ControllerInterface::ControlReference* const control_reference;
104 class ControlGroupBox : public wxStaticBoxSizer
106 public:
107 ControlGroupBox( ControllerEmu::ControlGroup* const group, wxWindow* const parent );
109 ControllerEmu::ControlGroup* control_group;
110 wxStaticBitmap* static_bitmap;
111 std::vector< PadSetting* > options;
112 std::vector< wxButton* > controls;
113 std::vector<ControlButton*> control_buttons;
116 class ConfigDialog;
118 class GamepadPage : public wxNotebookPage
120 friend class ConfigDialog;
122 public:
123 GamepadPage( wxWindow* parent, Plugin& plugin, const unsigned int pad_num, ConfigDialog* const config_dialog );
125 void UpdateGUI();
127 void RefreshDevices( wxCommandEvent& event );
129 void LoadProfile( wxCommandEvent& event );
130 void SaveProfile( wxCommandEvent& event );
131 void DeleteProfile( wxCommandEvent& event );
133 void ConfigControl( wxCommandEvent& event );
134 void ConfigDetectControl( wxCommandEvent& event );
135 void DetectControl( wxCommandEvent& event );
136 void ClearControl( wxCommandEvent& event );
138 void SetDevice( wxCommandEvent& event );
139 void SetControl( wxCommandEvent& event );
141 void ClearAll( wxCommandEvent& event );
143 void AdjustControlOption( wxCommandEvent& event );
144 void AdjustSetting( wxCommandEvent& event );
146 wxComboBox* profile_cbox;
147 wxComboBox* device_cbox;
149 std::vector<ControlGroupBox*> control_groups;
151 protected:
153 ControllerEmu* const controller;
155 private:
157 ControlDialog* m_control_dialog;
158 Plugin& m_plugin;
159 ConfigDialog* const m_config_dialog;
162 class ConfigDialog : public wxDialog
164 public:
166 ConfigDialog( wxWindow* const parent, Plugin& plugin, const std::string& name, const bool _is_game_running );
167 ~ConfigDialog();
169 void ClickSave( wxCommandEvent& event );
171 void UpdateDeviceComboBox();
172 void UpdateProfileComboBox();
174 void UpdateControlReferences();
175 void UpdateBitmaps(wxTimerEvent&);
177 const bool is_game_running;
179 private:
181 wxNotebook* m_pad_notebook;
182 std::vector<GamepadPage*> m_padpages;
183 Plugin& m_plugin;
184 wxTimer* m_update_timer;
187 #endif