foxygit / doom Log in
commit 2f634a05ce168e6c9955a8298103ffdc5de1aceb
Author:     Simon Howard <fraggle@gmail.com>
AuthorDate: Mon Sep 25 20:31:42 2006 +0000
Commit:     Simon Howard <fraggle@gmail.com>
CommitDate: Mon Sep 25 20:31:42 2006 +0000

    Add "test" window actions to the keyboard/mouse dialogs to invoke Chocolate
    Doom with the -testcontrols option.

    Subversion-branch: /trunk/chocolate-doom
    Subversion-revision: 663
---
 setup/Makefile.am  |  1 +
 setup/keyboard.c   |  3 +++
 setup/mouse.c      |  4 ++++
 setup/testconfig.c | 54 ++++++++++++++++++++++++++++++++++++++++++++++++++++++
 setup/testconfig.h | 30 ++++++++++++++++++++++++++++++
 5 files changed, 92 insertions(+)

diff --git a/setup/Makefile.am b/setup/Makefile.am
index 22ad81b0..09b5c56c 100644
--- a/setup/Makefile.am
+++ b/setup/Makefile.am
@@ -13,6 +13,7 @@ chocolate_setup_SOURCES =                       \
     mouse.c                                     \
     multiplayer.c                               \
     sound.c                                     \
+    testconfig.c      testconfig.h              \
     txt_keyinput.c    txt_keyinput.h            \
     txt_mouseinput.c  txt_mouseinput.h

diff --git a/setup/keyboard.c b/setup/keyboard.c
index a76bbbfe..8555e5e5 100644
--- a/setup/keyboard.c
+++ b/setup/keyboard.c
@@ -20,6 +20,7 @@
 //
 #include "textscreen.h"

+#include "testconfig.h"
 #include "txt_keyinput.h"

 int key_left = KEY_LEFTARROW;
@@ -99,5 +100,7 @@ void ConfigKeyboard(void)
     AddKeyControl(table, "Fire", &key_fire);

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

diff --git a/setup/mouse.c b/setup/mouse.c
index b8eeaff6..37aaef1b 100644
--- a/setup/mouse.c
+++ b/setup/mouse.c
@@ -20,8 +20,10 @@
 //

 #include <stdlib.h>
+
 #include "textscreen.h"

+#include "testconfig.h"
 #include "txt_mouseinput.h"

 int use_mouse = 1;
@@ -108,5 +110,7 @@ void ConfigMouse(void)
     AddMouseControl(table, "Strafe on", &mouseb_strafe);

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

diff --git a/setup/testconfig.c b/setup/testconfig.c
new file mode 100644
index 00000000..4e991d1a
--- /dev/null
+++ b/setup/testconfig.c
@@ -0,0 +1,54 @@
+// Emacs style mode select   -*- C++ -*-
+//-----------------------------------------------------------------------------
+//
+// Copyright(C) 2006 Simon Howard
+//
+// This program is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this program; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
+// 02111-1307, USA.
+//
+
+// Code for invoking Doom to test the current configuration.
+
+#include <stdlib.h>
+
+#include "textscreen.h"
+
+static void TestCallback(TXT_UNCAST_ARG(widget), TXT_UNCAST_ARG(data))
+{
+    txt_window_t *testwindow;
+    txt_label_t *label;
+
+    testwindow = TXT_NewWindow("Starting Doom");
+
+    label = TXT_NewLabel("Starting Doom to test the\n"
+                         "settings.  Please wait.");
+    TXT_SetWidgetAlign(label, TXT_HORIZ_CENTER);
+    TXT_AddWidget(testwindow, label);
+    TXT_DrawDesktop();
+    system("chocolate-doom -testcontrols");
+
+    TXT_CloseWindow(testwindow);
+}
+
+txt_window_action_t *TestConfigAction(void)
+{
+    txt_window_action_t *test_action;
+
+    test_action = TXT_NewWindowAction('t', "Test");
+    TXT_SignalConnect(test_action, "pressed", TestCallback, NULL);
+
+    return test_action;
+}
+
diff --git a/setup/testconfig.h b/setup/testconfig.h
new file mode 100644
index 00000000..3806e26f
--- /dev/null
+++ b/setup/testconfig.h
@@ -0,0 +1,30 @@
+// Emacs style mode select   -*- C++ -*-
+//-----------------------------------------------------------------------------
+//
+// Copyright(C) 2006 Simon Howard
+//
+// This program is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this program; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
+// 02111-1307, USA.
+//
+
+#ifndef TESTCONFIG_H
+#define TESTCONFIG_H
+
+#include "textscreen.h"
+
+txt_window_action_t *TestConfigAction(void);
+
+#endif /* #ifndef TESTCONFIG_H */
+