commit 7a2f14efc374db3404c2531bc25609809a233c6b
Author: Simon Howard <fraggle@soulsphere.org>
AuthorDate: Sat Jul 11 16:43:31 2015 -0400
Commit: Simon Howard <fraggle@soulsphere.org>
CommitDate: Sat Jul 11 16:43:31 2015 -0400
setup: Clean up gamepad configuration window.
Use the new table functionality to avoid having to create inner tables.
This nicely aligns the whole window on a grid.
There are also some minor tweaks to the widgets used for the window.
---
src/setup/joystick.c | 76 +++++++++++++++++++++++++----------------------
src/setup/txt_joyaxis.c | 4 +--
src/setup/txt_joybinput.c | 7 +++--
3 files changed, 47 insertions(+), 40 deletions(-)
diff --git a/src/setup/joystick.c b/src/setup/joystick.c
index 22b1a089..ec9ab68a 100644
--- a/src/setup/joystick.c
+++ b/src/setup/joystick.c
@@ -716,70 +716,76 @@ static void CalibrateJoystick(TXT_UNCAST_ARG(widget), TXT_UNCAST_ARG(unused))
// GUI
//
-static void AddJoystickControl(txt_table_t *table, char *label, int *var)
+static void AddJoystickControl(TXT_UNCAST_ARG(table), char *label, int *var)
{
+ TXT_CAST_ARG(txt_table_t, table);
txt_joystick_input_t *joy_input;
joy_input = TXT_NewJoystickInput(var);
- TXT_AddWidget(table, TXT_NewLabel(label));
- TXT_AddWidget(table, joy_input);
+ TXT_AddWidgets(table,
+ TXT_NewLabel(label),
+ joy_input,
+ TXT_TABLE_EMPTY,
+ NULL);
}
void ConfigJoystick(void)
{
txt_window_t *window;
- txt_table_t *button_table, *axis_table;
- txt_table_t *joystick_table;
window = TXT_NewWindow("Gamepad/Joystick configuration");
-
+ TXT_SetTableColumns(window, 6);
+ TXT_SetColumnWidths(window, 18, 10, 2, 14, 10, 0);
TXT_SetWindowHelpURL(window, WINDOW_HELP_URL);
TXT_AddWidgets(window,
- joystick_table = TXT_NewTable(2),
- TXT_NewSeparator("Axes"),
- axis_table = TXT_NewTable(2),
- TXT_NewSeparator("Buttons"),
- button_table = TXT_NewTable(4),
- NULL);
-
- TXT_SetColumnWidths(joystick_table, 13, 40);
-
- TXT_AddWidgets(joystick_table,
TXT_NewLabel("Controller"),
joystick_button = TXT_NewButton("zzzz"),
- NULL);
+ TXT_TABLE_EOL,
- TXT_SetColumnWidths(axis_table, 20, 15);
-
- TXT_AddWidgets(axis_table,
+ TXT_NewSeparator("Axes"),
TXT_NewLabel("Forward/backward"),
y_axis_widget = TXT_NewJoystickAxis(&joystick_y_axis,
&joystick_y_invert,
JOYSTICK_AXIS_VERTICAL),
+ TXT_TABLE_OVERFLOW_RIGHT,
+ TXT_TABLE_OVERFLOW_RIGHT,
+ TXT_TABLE_EMPTY,
+ TXT_TABLE_EMPTY,
+
TXT_NewLabel("Turn left/right"),
- x_axis_widget = TXT_NewJoystickAxis(&joystick_x_axis,
- &joystick_x_invert,
- JOYSTICK_AXIS_HORIZONTAL),
+ x_axis_widget =
+ TXT_NewJoystickAxis(&joystick_x_axis,
+ &joystick_x_invert,
+ JOYSTICK_AXIS_HORIZONTAL),
+ TXT_TABLE_OVERFLOW_RIGHT,
+ TXT_TABLE_OVERFLOW_RIGHT,
+ TXT_TABLE_EMPTY,
+ TXT_TABLE_EMPTY,
+
TXT_NewLabel("Strafe left/right"),
TXT_NewJoystickAxis(&joystick_strafe_axis,
&joystick_strafe_invert,
JOYSTICK_AXIS_HORIZONTAL),
- NULL);
+ TXT_TABLE_OVERFLOW_RIGHT,
+ TXT_TABLE_OVERFLOW_RIGHT,
+ TXT_TABLE_EMPTY,
+ TXT_TABLE_EMPTY,
- TXT_SetColumnWidths(button_table, 16, 12, 14, 11);
+ TXT_NewSeparator("Buttons"),
+ NULL);
- AddJoystickControl(button_table, "Fire/Attack", &joybfire);
- AddJoystickControl(button_table, "Strafe Left", &joybstrafeleft);
+ AddJoystickControl(window, "Fire/Attack", &joybfire);
+ AddJoystickControl(window, "Strafe Left", &joybstrafeleft);
- AddJoystickControl(button_table, "Use", &joybuse);
- AddJoystickControl(button_table, "Strafe Right", &joybstraferight);
+ AddJoystickControl(window, "Use", &joybuse);
+ AddJoystickControl(window, "Strafe Right", &joybstraferight);
- AddJoystickControl(button_table, "Previous weapon", &joybprevweapon);
- AddJoystickControl(button_table, "Strafe", &joybstrafe);
+ AddJoystickControl(window, "Previous weapon", &joybprevweapon);
+ AddJoystickControl(window, "Strafe", &joybstrafe);
- AddJoystickControl(button_table, "Next weapon", &joybnextweapon);
+ AddJoystickControl(window, "Next weapon", &joybnextweapon);
// High values of joybspeed are used to activate the "always run mode"
// trick in Vanilla Doom. If this has been enabled, not only is the
@@ -787,15 +793,15 @@ void ConfigJoystick(void)
if (joybspeed < 20)
{
- AddJoystickControl(button_table, "Speed", &joybspeed);
+ AddJoystickControl(window, "Speed", &joybspeed);
}
if (gamemission == hexen || gamemission == strife)
{
- AddJoystickControl(button_table, "Jump", &joybjump);
+ AddJoystickControl(window, "Jump", &joybjump);
}
- AddJoystickControl(button_table, "Activate menu", &joybmenu);
+ AddJoystickControl(window, "Activate menu", &joybmenu);
TXT_SignalConnect(joystick_button, "pressed", CalibrateJoystick, NULL);
TXT_SetWindowAction(window, TXT_HORIZ_CENTER, TestConfigAction());
diff --git a/src/setup/txt_joyaxis.c b/src/setup/txt_joyaxis.c
index 5e59b9f7..df9deaa0 100644
--- a/src/setup/txt_joyaxis.c
+++ b/src/setup/txt_joyaxis.c
@@ -367,7 +367,7 @@ void TXT_ConfigureJoystickAxis(txt_joystick_axis_t *joystick_axis,
joystick_axis->joystick = SDL_JoystickOpen(joystick_index);
if (joystick_axis->joystick == NULL)
{
- // TODO: OpenErrorWindow();
+ TXT_MessageBox(NULL, "Please configure a controller first!");
return;
}
@@ -461,7 +461,7 @@ static void TXT_JoystickAxisDrawer(TXT_UNCAST_ARG(joystick_axis))
TXT_DrawString(buf);
- for (i=strlen(buf); i<JOYSTICK_AXIS_WIDTH; ++i)
+ for (i = strlen(buf); i < joystick_axis->widget.w; ++i)
{
TXT_DrawString(" ");
}
diff --git a/src/setup/txt_joybinput.c b/src/setup/txt_joybinput.c
index adbbc947..04ebd6fd 100644
--- a/src/setup/txt_joybinput.c
+++ b/src/setup/txt_joybinput.c
@@ -189,7 +189,7 @@ static void PromptWindowClosed(TXT_UNCAST_ARG(widget), TXT_UNCAST_ARG(joystick))
static void OpenErrorWindow(void)
{
- TXT_MessageBox(NULL, "Please configure a joystick first!");
+ TXT_MessageBox(NULL, "Please configure a controller first!");
}
static void OpenPromptWindow(txt_joystick_input_t *joystick_input)
@@ -218,7 +218,7 @@ static void OpenPromptWindow(txt_joystick_input_t *joystick_input)
// Open the prompt window
- window = TXT_MessageBox(NULL, "Press the new joystick button...");
+ window = TXT_MessageBox(NULL, "Press the new button on the controller...");
TXT_SDL_SetEventCallback(EventCallback, joystick_input);
TXT_SignalConnect(window, "closed", PromptWindowClosed, joystick);
@@ -296,7 +296,8 @@ static int TXT_JoystickInputKeyPress(TXT_UNCAST_ARG(joystick_input), int key)
return 0;
}
-static void TXT_JoystickInputMousePress(TXT_UNCAST_ARG(widget), int x, int y, int b)
+static void TXT_JoystickInputMousePress(TXT_UNCAST_ARG(widget),
+ int x, int y, int b)
{
TXT_CAST_ARG(txt_joystick_input_t, widget);