foxygit / doom Log in
commit 481b3391baff23f1682df009df7d3387d62f3d75
Author:     Simon Howard <fraggle@gmail.com>
AuthorDate: Fri Sep 29 11:49:30 2006 +0000
Commit:     Simon Howard <fraggle@gmail.com>
CommitDate: Fri Sep 29 11:49:30 2006 +0000

    Use TXT_AddWidgets in setup for greatly enhanced readability.

    Subversion-branch: /trunk/chocolate-doom
    Subversion-revision: 679
---
 setup/compatibility.c |  10 +++--
 setup/display.c       |  46 ++++++++++-----------
 setup/keyboard.c      |  43 ++++++++++---------
 setup/mainmenu.c      |  66 +++++++++++------------------
 setup/mouse.c         |  54 ++++++++++++------------
 setup/multiplayer.c   | 112 +++++++++++++++++++++++++-------------------------
 setup/sound.c         |  63 ++++++++++++----------------
 7 files changed, 181 insertions(+), 213 deletions(-)

diff --git a/setup/compatibility.c b/setup/compatibility.c
index 4a3c1206..422f2280 100644
--- a/setup/compatibility.c
+++ b/setup/compatibility.c
@@ -34,9 +34,11 @@ void CompatibilitySettings(void)

         window = TXT_NewWindow("Compatibility");

-        TXT_AddWidget(window, TXT_NewCheckBox("Vanilla savegame limit",
-                                              &vanilla_savegame_limit));
-        TXT_AddWidget(window, TXT_NewCheckBox("Vanilla demo limit",
-                                              &vanilla_demo_limit));
+        TXT_AddWidgets(window,
+                       TXT_NewCheckBox("Vanilla savegame limit",
+                                       &vanilla_savegame_limit),
+                       TXT_NewCheckBox("Vanilla demo limit",
+                                       &vanilla_demo_limit),
+                       NULL);
 }

diff --git a/setup/display.c b/setup/display.c
index 930c14ae..2672c7d8 100644
--- a/setup/display.c
+++ b/setup/display.c
@@ -81,7 +81,9 @@ static void ModeSelected(TXT_UNCAST_ARG(widget), TXT_UNCAST_ARG(mode))
 void ConfigDisplay(void)
 {
     txt_window_t *window;
-    txt_table_t *table;
+    txt_table_t *windowed_table;
+    txt_table_t *fullscreen_table;
+    txt_table_t *misc_table;
     txt_radiobutton_t *rbutton;
     int i;

@@ -93,43 +95,39 @@ void ConfigDisplay(void)

     window = TXT_NewWindow("Display Configuration");

-    TXT_AddWidget(window, TXT_NewSeparator("Windowed modes"));
-
-    table = TXT_NewTable(2);
-    TXT_SetColumnWidths(table, 14, 14);
+    TXT_AddWidgets(window,
+                   TXT_NewSeparator("Fullscreen modes"),
+                   fullscreen_table = TXT_NewTable(2),
+                   TXT_NewSeparator("Windowed modes"),
+                   windowed_table = TXT_NewTable(2),
+                   TXT_NewSeparator("Misc."),
+                   TXT_NewCheckBox("Show ENDOOM screen", &show_endoom),
+                   misc_table = TXT_NewTable(2),
+                   NULL);
+
+    TXT_SetColumnWidths(windowed_table, 14, 14);

     for (i=0; modes[i].fullscreen == 0; ++i)
     {
         rbutton = TXT_NewRadioButton(modes[i].description, &vidmode, i);
-        TXT_AddWidget(table, rbutton);
+        TXT_AddWidget(windowed_table, rbutton);
         TXT_SignalConnect(rbutton, "selected", ModeSelected, &modes[i]);
     }

-    TXT_AddWidget(window, table);
-
-    TXT_AddWidget(window, TXT_NewSeparator("Fullscreen modes"));
-
-    table = TXT_NewTable(2);
-    TXT_SetColumnWidths(table, 14, 14);
+    TXT_SetColumnWidths(fullscreen_table, 14, 14);

     for (; modes[i].description != NULL; ++i)
     {
         rbutton = TXT_NewRadioButton(modes[i].description, &vidmode, i);
-        TXT_AddWidget(table, rbutton);
+        TXT_AddWidget(fullscreen_table, rbutton);
         TXT_SignalConnect(rbutton, "selected", ModeSelected, &modes[i]);
     }

-    TXT_AddWidget(window, table);
-
-    TXT_AddWidget(window, TXT_NewSeparator("Misc."));
-    TXT_AddWidget(window, TXT_NewCheckBox("Show ENDOOM screen", &show_endoom));
-
-    table = TXT_NewTable(2);
-
-    TXT_SetColumnWidths(table, 22, 5);
-    TXT_AddWidget(table, TXT_NewLabel("Startup delay (ms)"));
-    TXT_AddWidget(table, TXT_NewIntInputBox(&startup_delay, 5));
+    TXT_SetColumnWidths(misc_table, 22, 5);

-    TXT_AddWidget(window, table);
+    TXT_AddWidgets(misc_table,
+                   TXT_NewLabel("Startup delay (ms)"),
+                   TXT_NewIntInputBox(&startup_delay, 5),
+                   NULL);
 }

diff --git a/setup/keyboard.c b/setup/keyboard.c
index e6ad242d..1c5f38ee 100644
--- a/setup/keyboard.c
+++ b/setup/keyboard.c
@@ -72,36 +72,35 @@ static void AddKeyControl(txt_table_t *table, char *name, int *var)
 void ConfigKeyboard(void)
 {
     txt_window_t *window;
-    txt_table_t *table;
+    txt_table_t *movement_table;
+    txt_table_t *action_table;

     window = TXT_NewWindow("Keyboard configuration");

-    TXT_AddWidget(window, TXT_NewSeparator("Movement"));
+    TXT_AddWidgets(window,
+                   TXT_NewSeparator("Movement"),
+                   movement_table = TXT_NewTable(2),
+                   TXT_NewCheckBox("Always run", &always_run),

-    table = TXT_NewTable(2);
-    TXT_SetColumnWidths(table, 20, 8);
+                   TXT_NewSeparator("Action"),
+                   action_table = TXT_NewTable(2),
+                   NULL);

-    AddKeyControl(table, "Move Forward", &key_up);
-    AddKeyControl(table, "Move Backward", &key_down);
-    AddKeyControl(table, "Turn Left", &key_left);
-    AddKeyControl(table, "Turn Right", &key_right);
-    AddKeyControl(table, "Strafe Left", &key_strafeleft);
-    AddKeyControl(table, "Strafe Right", &key_straferight);
-    AddKeyControl(table, "Speed On", &key_speed);
-    AddKeyControl(table, "Strafe On", &key_strafe);
+    TXT_SetColumnWidths(movement_table, 20, 8);

-    TXT_AddWidget(window, table);
-    TXT_AddWidget(window, TXT_NewCheckBox("Always run", &always_run));
+    AddKeyControl(movement_table, "Move Forward", &key_up);
+    AddKeyControl(movement_table, "Move Backward", &key_down);
+    AddKeyControl(movement_table, "Turn Left", &key_left);
+    AddKeyControl(movement_table, "Turn Right", &key_right);
+    AddKeyControl(movement_table, "Strafe Left", &key_strafeleft);
+    AddKeyControl(movement_table, "Strafe Right", &key_straferight);
+    AddKeyControl(movement_table, "Speed On", &key_speed);
+    AddKeyControl(movement_table, "Strafe On", &key_strafe);

-    TXT_AddWidget(window, TXT_NewSeparator("Action"));
+    TXT_SetColumnWidths(action_table, 20, 8);

-    table = TXT_NewTable(2);
-    TXT_SetColumnWidths(table, 20, 8);
-
-    AddKeyControl(table, "Use", &key_use);
-    AddKeyControl(table, "Fire", &key_fire);
-
-    TXT_AddWidget(window, table);
+    AddKeyControl(action_table, "Use", &key_use);
+    AddKeyControl(action_table, "Fire", &key_fire);

     TXT_SetWindowAction(window, TXT_HORIZ_CENTER, TestConfigAction());
 }
diff --git a/setup/mainmenu.c b/setup/mainmenu.c
index 0343fcff..7aaef574 100644
--- a/setup/mainmenu.c
+++ b/setup/mainmenu.c
@@ -37,23 +37,22 @@ void QuitConfirm(void *unused1, void *unused2)
 {
     txt_window_t *window;
     txt_label_t *label;
-    txt_button_t *button;
+    txt_button_t *yes_button;
+    txt_button_t *no_button;

     window = TXT_NewWindow(NULL);

-    label = TXT_NewLabel("Save settings and\n"
-                         "quit setup?");
-    TXT_AddWidget(window, label);
-    TXT_AddWidget(window, TXT_NewStrut(24, 0));
-    TXT_SetWidgetAlign(label, TXT_HORIZ_CENTER);
-
-    button = TXT_NewButton2("  Yes  ", DoQuit, DoQuit);
-    TXT_SetWidgetAlign(button, TXT_HORIZ_CENTER);
-    TXT_AddWidget(window, button);
+    TXT_AddWidgets(window,
+                   label = TXT_NewLabel("Save settings and\n"
+                                        "quit setup?"),
+                   TXT_NewStrut(24, 0),
+                   yes_button = TXT_NewButton2("  Yes  ", DoQuit, DoQuit),
+                   no_button = TXT_NewButton2("  No   ", DoQuit, NULL),
+                   NULL);

-    button = TXT_NewButton2("  No   ", DoQuit, NULL);
-    TXT_SetWidgetAlign(button, TXT_HORIZ_CENTER);
-    TXT_AddWidget(window, button);
+    TXT_SetWidgetAlign(label, TXT_HORIZ_CENTER);
+    TXT_SetWidgetAlign(yes_button, TXT_HORIZ_CENTER);
+    TXT_SetWidgetAlign(no_button, TXT_HORIZ_CENTER);

     // Only an "abort" button in the middle.
     TXT_SetWindowAction(window, TXT_HORIZ_LEFT, NULL);
@@ -78,35 +77,18 @@ void MainMenu(void)

     window = TXT_NewWindow("Main Menu");

-    TXT_AddWidget(window,
-                  TXT_NewButton2("Configure display", ConfigDisplay, NULL));
-
-    TXT_AddWidget(window,
-                  TXT_NewButton2("Configure keyboard", ConfigKeyboard, NULL));
-
-    TXT_AddWidget(window,
-                  TXT_NewButton2("Configure mouse", ConfigMouse, NULL));
-
-    TXT_AddWidget(window,
-                  TXT_NewButton2("Configure sound", ConfigSound, NULL));
-
-    TXT_AddWidget(window,
-                  TXT_NewButton2("Compatibility", CompatibilitySettings, NULL));
-
-    TXT_AddWidget(window,
-                  TXT_NewButton("Save parameters and launch DOOM"));
-
-    TXT_AddWidget(window, TXT_NewStrut(0, 1));
-
-    TXT_AddWidget(window,
-                  TXT_NewButton2("Start a Network game", StartMultiGame, NULL));
-
-    TXT_AddWidget(window,
-                  TXT_NewButton2("Join a Network game", JoinMultiGame, NULL));
-
-    TXT_AddWidget(window,
-                  TXT_NewButton2("Multiplayer configuration",
-                                 MultiplayerConfig, NULL));
+    TXT_AddWidgets(window,
+          TXT_NewButton2("Configure display", ConfigDisplay, NULL),
+          TXT_NewButton2("Configure keyboard", ConfigKeyboard, NULL),
+          TXT_NewButton2("Configure mouse", ConfigMouse, NULL),
+          TXT_NewButton2("Configure sound", ConfigSound, NULL),
+          TXT_NewButton2("Compatibility", CompatibilitySettings, NULL),
+          TXT_NewButton("Save parameters and launch DOOM"),
+          TXT_NewStrut(0, 1),
+          TXT_NewButton2("Start a Network game", StartMultiGame, NULL),
+          TXT_NewButton2("Join a Network game", JoinMultiGame, NULL),
+          TXT_NewButton2("Multiplayer configuration", MultiplayerConfig, NULL),
+          NULL);

     quit_action = TXT_NewWindowAction(KEY_ESCAPE, "Quit");
     TXT_SignalConnect(quit_action, "pressed", QuitConfirm, NULL);
diff --git a/setup/mouse.c b/setup/mouse.c
index 57b65b77..67e12b23 100644
--- a/setup/mouse.c
+++ b/setup/mouse.c
@@ -74,43 +74,43 @@ static void AddMouseControl(txt_table_t *table, char *label, int *var)
 void ConfigMouse(void)
 {
     txt_window_t *window;
-    txt_table_t *table;
+    txt_table_t *motion_table;
+    txt_table_t *button_table;

     window = TXT_NewWindow("Mouse configuration");

-    TXT_AddWidget(window, TXT_NewCheckBox("Enable mouse", &use_mouse));
+    TXT_AddWidgets(window,
+                   TXT_NewCheckBox("Enable mouse", &use_mouse),
+                   TXT_NewInvertedCheckBox("Allow vertical mouse movement",
+                                           &novert),
+                   TXT_NewCheckBox("Grab mouse in windowed mode",
+                                          &grabmouse),

-    TXT_AddWidget(window,
-                  TXT_NewInvertedCheckBox("Allow vertical mouse movement",
-                                          &novert));
-    TXT_AddWidget(window, TXT_NewCheckBox("Grab mouse in windowed mode",
-                                          &grabmouse));
-
-    TXT_AddWidget(window, TXT_NewSeparator("Mouse motion"));
+                   TXT_NewSeparator("Mouse motion"),
+                   motion_table = TXT_NewTable(2),
+
+                   TXT_NewSeparator("Mouse buttons"),

-    table = TXT_NewTable(2);
+                   button_table = TXT_NewTable(2),
+                   NULL);

-    TXT_SetColumnWidths(table, 27, 5);
-    TXT_AddWidget(table, TXT_NewLabel("Speed"));
-    TXT_AddWidget(table, TXT_NewSpinControl(&speed, 1, 256));
-    TXT_AddWidget(table, TXT_NewLabel("Acceleration"));
-    TXT_AddWidget(table, TXT_NewSpinControl(&accel, 1, 5));
-    TXT_AddWidget(table, TXT_NewLabel("Acceleration threshold"));
-    TXT_AddWidget(table, TXT_NewSpinControl(&threshold, 0, 32));
+    TXT_SetColumnWidths(motion_table, 27, 5);

-    TXT_AddWidget(window, table);
-
-    TXT_AddWidget(window, TXT_NewSeparator("Mouse buttons"));
+    TXT_AddWidgets(motion_table,
+                   TXT_NewLabel("Speed"),
+                   TXT_NewSpinControl(&speed, 1, 256),
+                   TXT_NewLabel("Acceleration"),
+                   TXT_NewSpinControl(&accel, 1, 5),
+                   TXT_NewLabel("Acceleration threshold"),
+                   TXT_NewSpinControl(&threshold, 0, 32),
+                   NULL);

-    table = TXT_NewTable(2);
+    TXT_SetColumnWidths(button_table, 27, 5);

-    TXT_SetColumnWidths(table, 27, 5);
-    AddMouseControl(table, "Fire weapon", &mouseb_fire);
-    AddMouseControl(table, "Move forward", &mouseb_forward);
-    AddMouseControl(table, "Strafe on", &mouseb_strafe);
+    AddMouseControl(button_table, "Fire weapon", &mouseb_fire);
+    AddMouseControl(button_table, "Move forward", &mouseb_forward);
+    AddMouseControl(button_table, "Strafe on", &mouseb_strafe);

-    TXT_AddWidget(window, table);
-
     TXT_SetWindowAction(window, TXT_HORIZ_CENTER, TestConfigAction());
 }

diff --git a/setup/multiplayer.c b/setup/multiplayer.c
index 12609b6c..e6a70500 100644
--- a/setup/multiplayer.c
+++ b/setup/multiplayer.c
@@ -249,52 +249,49 @@ static txt_window_action_t *WadWindowAction(void)
 void StartMultiGame(void)
 {
     txt_window_t *window;
-    txt_table_t *table;
-    txt_button_t *button;
+    txt_table_t *gameopt_table;
+    txt_table_t *advanced_table;

     window = TXT_NewWindow("Start multiplayer game");

+    TXT_AddWidgets(window,
+                   gameopt_table = TXT_NewTable(2),
+                   TXT_NewSeparator("Monsters"),
+                   TXT_NewInvertedCheckBox("Monsters", &nomonsters),
+                   TXT_NewCheckBox("Fast monsters", &fast),
+                   TXT_NewCheckBox("Respawning monsters", &respawn),
+                   TXT_NewSeparator("Advanced"),
+                   advanced_table = TXT_NewTable(2),
+                   TXT_NewButton2("Add extra parameters...",
+                                  OpenExtraParamsWindow, NULL),
+                   NULL);
+
     TXT_SetWindowAction(window, TXT_HORIZ_CENTER, WadWindowAction());
     TXT_SetWindowAction(window, TXT_HORIZ_RIGHT, StartGameAction());

-    table = TXT_NewTable(2);
-    TXT_SetColumnWidths(table, 12, 12);
-    TXT_AddWidget(table, TXT_NewLabel("Skill"));
-    TXT_AddWidget(table, TXT_NewDropdownList(&skill, skills, 5));
-    TXT_AddWidget(table, TXT_NewLabel("Game type"));
-    TXT_AddWidget(table, TXT_NewDropdownList(&deathmatch, gamemodes, 3));
-
-    TXT_AddWidget(table, TXT_NewLabel("Level warp"));
+    TXT_SetColumnWidths(gameopt_table, 12, 12);
+
+    TXT_AddWidgets(gameopt_table,
+           TXT_NewLabel("Skill"),
+           TXT_NewDropdownList(&skill, skills, 5),
+           TXT_NewLabel("Game type"),
+           TXT_NewDropdownList(&deathmatch, gamemodes, 3),
+           TXT_NewLabel("Level warp"),
+           warpbutton = TXT_NewButton2("????", LevelSelectDialog, NULL),
+           TXT_NewLabel("Time limit"),
+           TXT_NewHorizBox(TXT_NewIntInputBox(&timer, 2),
+                           TXT_NewLabel("minutes"),
+                           NULL),
+           NULL);
+
+    TXT_SetColumnWidths(advanced_table, 12, 12);
+
+    TXT_AddWidgets(advanced_table,
+                   TXT_NewLabel("UDP port"),
+                   TXT_NewIntInputBox(&udpport, 5),
+                   NULL);

-    warpbutton = TXT_NewButton("????");
-    TXT_AddWidget(table, warpbutton);
-    TXT_SignalConnect(warpbutton, "pressed", LevelSelectDialog, NULL);
     UpdateWarpButton();
-
-    TXT_AddWidget(table, TXT_NewLabel("Time limit"));
-    TXT_AddWidget(table, TXT_NewHorizBox(TXT_NewIntInputBox(&timer, 2),
-                                         TXT_NewLabel("minutes"),
-                                         NULL));
-
-    TXT_AddWidget(window, table);
-
-    TXT_AddWidget(window, TXT_NewSeparator("Monsters"));
-    TXT_AddWidget(window, TXT_NewInvertedCheckBox("Monsters", &nomonsters));
-    TXT_AddWidget(window, TXT_NewCheckBox("Fast monsters", &fast));
-    TXT_AddWidget(window, TXT_NewCheckBox("Respawning monsters", &respawn));
-
-    TXT_AddWidget(window, TXT_NewSeparator("Advanced"));
-    table = TXT_NewTable(2);
-    TXT_SetColumnWidths(table, 12, 12);
-
-    TXT_AddWidget(table, TXT_NewLabel("UDP port"));
-    TXT_AddWidget(table, TXT_NewIntInputBox(&udpport, 5));
-    TXT_AddWidget(window, table);
-
-    button = TXT_NewButton("Add extra parameters...");
-    TXT_SignalConnect(button, "pressed", OpenExtraParamsWindow, NULL);
-    TXT_AddWidget(window, button);
-
 }

 void JoinMultiGame(void)
@@ -303,13 +300,13 @@ void JoinMultiGame(void)

     window = TXT_NewWindow("Join multiplayer game");

-    TXT_AddWidget(window, TXT_NewLabel("Connect to address: "));
-    TXT_AddWidget(window, TXT_NewInputBox(&connect_address, 40));
-    TXT_AddWidget(window, TXT_NewStrut(0, 1));
-
-    TXT_AddWidget(window, TXT_NewButton2("Add extra parameters...",
-                                         OpenExtraParamsWindow, NULL));
-    TXT_AddWidget(window, TXT_NewButton2("Add WADs...", OpenWadsWindow, NULL));
+    TXT_AddWidgets(window,
+        TXT_NewLabel("Connect to address: "),
+        TXT_NewInputBox(&connect_address, 40),
+        TXT_NewStrut(0, 1),
+        TXT_NewButton2("Add extra parameters...", OpenExtraParamsWindow, NULL),
+        TXT_NewButton2("Add WADs...", OpenWadsWindow, NULL),
+        NULL);

     TXT_SetWindowAction(window, TXT_HORIZ_RIGHT, StartGameAction());
 }
@@ -373,16 +370,14 @@ void MultiplayerConfig(void)

     window = TXT_NewWindow("Multiplayer Configuration");

-    TXT_AddWidget(window, TXT_NewStrut(0, 1));
-
-    table = TXT_NewTable(2);
-
-    TXT_AddWidget(table, TXT_NewLabel("Player name:  "));
-    TXT_AddWidget(table, TXT_NewInputBox(&player_name, 25));
-
-    TXT_AddWidget(window, table);
-    TXT_AddWidget(window, TXT_NewStrut(0, 1));
-    TXT_AddWidget(window, TXT_NewSeparator("Chat macros"));
+    TXT_AddWidgets(window,
+                   TXT_NewStrut(0, 1),
+                   TXT_NewHorizBox(TXT_NewLabel("Player name:  "),
+                                   TXT_NewInputBox(&player_name, 25),
+                                   NULL),
+                   TXT_NewStrut(0, 1),
+                   TXT_NewSeparator("Chat macros"),
+                   NULL);

     table = TXT_NewTable(2);

@@ -392,8 +387,11 @@ void MultiplayerConfig(void)

         label = TXT_NewLabel(buf);
         TXT_SetFGColor(label, TXT_COLOR_BRIGHT_CYAN);
-        TXT_AddWidget(table, label);
-        TXT_AddWidget(table, TXT_NewInputBox(&chatmacros[i], 40));
+
+        TXT_AddWidgets(table,
+                       label,
+                       TXT_NewInputBox(&chatmacros[i], 40),
+                       NULL);
     }

     TXT_AddWidget(window, table);
diff --git a/setup/sound.c b/setup/sound.c
index 0e8869d4..a96868ab 100644
--- a/setup/sound.c
+++ b/setup/sound.c
@@ -35,45 +35,34 @@ int music_volume = 15;
 void ConfigSound(void)
 {
         txt_window_t *window;
-        txt_table_t *table;
-        txt_checkbox_t *checkbox;
-        txt_spincontrol_t *spincontrol;
+        txt_table_t *sfx_table;
+        txt_table_t *music_table;

         window = TXT_NewWindow("Sound configuration");

-        TXT_AddWidget(window, TXT_NewSeparator("Sound effects"));
-
-        checkbox = TXT_NewCheckBox("Sound effects enabled", &snd_sfxenabled);
-        TXT_AddWidget(window, checkbox);
-
-        table = TXT_NewTable(2);
-        TXT_SetColumnWidths(table, 20, 5);
-
-        TXT_AddWidget(table, TXT_NewLabel("Sound channels"));
-
-        spincontrol = TXT_NewSpinControl(&snd_channels, 1, 8);
-        TXT_AddWidget(table, spincontrol);
-
-        TXT_AddWidget(table, TXT_NewLabel("SFX volume"));
-
-        spincontrol = TXT_NewSpinControl(&sfx_volume, 0, 15);
-        TXT_AddWidget(table, spincontrol);
-
-        TXT_AddWidget(window, table);
-
-        TXT_AddWidget(window, TXT_NewSeparator("Music"));
-
-        checkbox = TXT_NewCheckBox("Music enabled", &snd_musicenabled);
-        TXT_AddWidget(window, checkbox);
-
-        table = TXT_NewTable(2);
-        TXT_SetColumnWidths(table, 20, 5);
-
-        TXT_AddWidget(table, TXT_NewLabel("Music volume"));
-
-        spincontrol = TXT_NewSpinControl(&music_volume, 0, 15);
-        TXT_AddWidget(table, spincontrol);
-
-        TXT_AddWidget(window, table);
+        TXT_AddWidgets(window,
+                   TXT_NewSeparator("Sound effects"),
+                   TXT_NewCheckBox("Sound effects enabled", &snd_sfxenabled),
+                   sfx_table = TXT_NewTable(2),
+                   TXT_NewSeparator("Music"),
+                   TXT_NewCheckBox("Music enabled", &snd_musicenabled),
+                   music_table = TXT_NewTable(2),
+                   NULL);
+
+        TXT_SetColumnWidths(sfx_table, 20, 5);
+
+        TXT_AddWidgets(sfx_table,
+                       TXT_NewLabel("Sound channels"),
+                       TXT_NewSpinControl(&snd_channels, 1, 8),
+                       TXT_NewLabel("SFX volume"),
+                       TXT_NewSpinControl(&sfx_volume, 0, 15),
+                       NULL);
+
+        TXT_SetColumnWidths(music_table, 20, 5);
+
+        TXT_AddWidgets(music_table,
+                       TXT_NewLabel("Music volume"),
+                       TXT_NewSpinControl(&music_volume, 0, 15),
+                       NULL);
 }