diff options
Diffstat (limited to 'src/libui_sdl/DlgInputConfig.cpp')
-rw-r--r-- | src/libui_sdl/DlgInputConfig.cpp | 40 |
1 files changed, 40 insertions, 0 deletions
diff --git a/src/libui_sdl/DlgInputConfig.cpp b/src/libui_sdl/DlgInputConfig.cpp index 392eb44..c2059d1 100644 --- a/src/libui_sdl/DlgInputConfig.cpp +++ b/src/libui_sdl/DlgInputConfig.cpp @@ -29,8 +29,11 @@ #include "DlgInputConfig.h" +extern int JoystickID; extern SDL_Joystick* Joystick; +extern void OpenJoystick(); + namespace DlgInputConfig { @@ -303,6 +306,13 @@ void OnJoyStartConfig(uiButton* btn, void* data) } +void OnJoystickChanged(uiCombobox* cb, void* data) +{ + JoystickID = uiComboboxSelected(cb); + OpenJoystick(); +} + + int OnCloseWindow(uiWindow* window, void* blarg) { InputDlgData* dlg = (InputDlgData*)(uiControl(window)->UserData); @@ -458,6 +468,36 @@ void Open(int type) uiButtonOnClicked(btn, OnJoyStartConfig, (type==0) ? &dskeyorder[i] : &identity[i]); uiControlSetMinSize(uiControl(btn), width, 1); } + + if (type == 0) + { + uiLabel* dummy = uiNewLabel(" "); + uiGridAppend(b_key, uiControl(dummy), 0, dlg->numkeys, 2, 1, 1, uiAlignFill, 1, uiAlignCenter); + + uiCombobox* joycombo = uiNewCombobox(); + uiGridAppend(b_joy, uiControl(joycombo), 0, dlg->numkeys, 2, 1, 1, uiAlignFill, 1, uiAlignCenter); + + int numjoys = SDL_NumJoysticks(); + if (numjoys < 1) + { + uiComboboxAppend(joycombo, "(no joysticks available)"); + uiControlDisable(uiControl(joycombo)); + } + else + { + for (int i = 0; i < numjoys; i++) + { + const char* joyname = SDL_JoystickNameForIndex(i); + char fullname[256]; + snprintf(fullname, 256, "%d. %s", i, joyname); + + uiComboboxAppend(joycombo, fullname); + } + + uiComboboxSetSelected(joycombo, JoystickID); + uiComboboxOnSelected(joycombo, OnJoystickChanged, NULL); + } + } } uiLabel* filler = uiNewLabel(""); |