shithub: choc

Download patch

ref: 2f634a05ce168e6c9955a8298103ffdc5de1aceb
parent: b7fced59e1d1690842f7ac8f286eb89d4c976189
author: Simon Howard <fraggle@gmail.com>
date: Mon Sep 25 16:31:42 EDT 2006

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

--- a/setup/Makefile.am
+++ b/setup/Makefile.am
@@ -13,6 +13,7 @@
     mouse.c                                     \
     multiplayer.c                               \
     sound.c                                     \
+    testconfig.c      testconfig.h              \
     txt_keyinput.c    txt_keyinput.h            \
     txt_mouseinput.c  txt_mouseinput.h
 
--- 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 @@
     AddKeyControl(table, "Fire", &key_fire);
 
     TXT_AddWidget(window, table);
+
+    TXT_SetWindowAction(window, TXT_HORIZ_CENTER, TestConfigAction());
 }
 
--- 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 @@
     AddMouseControl(table, "Strafe on", &mouseb_strafe);
     
     TXT_AddWidget(window, table);
+
+    TXT_SetWindowAction(window, TXT_HORIZ_CENTER, TestConfigAction());
 }
 
--- /dev/null
+++ b/setup/testconfig.c
@@ -1,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;
+}
+
--- /dev/null
+++ b/setup/testconfig.h
@@ -1,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 */
+