foxygit / doom Log in
commit 4fba2ab2ddda75a05c70ac95531504edfafdf8c8
Author:     Simon Howard <fraggle@gmail.com>
AuthorDate: Tue Sep 20 20:47:19 2011 +0000
Commit:     Simon Howard <fraggle@gmail.com>
CommitDate: Tue Sep 20 20:47:19 2011 +0000

    Add TXT_MessageBox convenience function.

    Subversion-branch: /branches/v2-branch
    Subversion-revision: 2388
---
 src/setup/joystick.c    | 16 +++-------------
 textscreen/txt_window.c | 23 +++++++++++++++++++++++
 textscreen/txt_window.h | 10 ++++++++++
 3 files changed, 36 insertions(+), 13 deletions(-)

diff --git a/src/setup/joystick.c b/src/setup/joystick.c
index 48074121..064ff99d 100644
--- a/src/setup/joystick.c
+++ b/src/setup/joystick.c
@@ -270,19 +270,9 @@ static int CalibrationEventCallback(SDL_Event *event, void *user_data)

 static void NoJoystick(void)
 {
-    txt_window_t *window;
-
-    window = TXT_NewWindow(NULL);
-
-    TXT_AddWidget(window,
-                  TXT_NewLabel("No joysticks could be opened.\n\n"
-                               "Try configuring your joystick from within\n"
-                               "your OS first."));
-
-    TXT_SetWindowAction(window, TXT_HORIZ_LEFT, NULL);
-    TXT_SetWindowAction(window, TXT_HORIZ_CENTER,
-                        TXT_NewWindowEscapeAction(window));
-    TXT_SetWindowAction(window, TXT_HORIZ_RIGHT, NULL);
+    TXT_MessageBox(NULL, "No joysticks could be opened.\n\n"
+                         "Try configuring your joystick from within\n"
+                         "your OS first.");

     joystick_index = -1;
     SetJoystickButtonLabel();
diff --git a/textscreen/txt_window.c b/textscreen/txt_window.c
index cd8a6c7a..8cbddb55 100644
--- a/textscreen/txt_window.c
+++ b/textscreen/txt_window.c
@@ -20,10 +20,12 @@
 //

 #include <stdlib.h>
+#include <stdarg.h>
 #include <string.h>

 #include "doomkeys.h"

+#include "txt_label.h"
 #include "txt_desktop.h"
 #include "txt_gui.h"
 #include "txt_main.h"
@@ -472,3 +474,24 @@ void TXT_SetMouseListener(txt_window_t *window,
     window->mouse_listener_data = user_data;
 }

+txt_window_t *TXT_MessageBox(char *title, char *message, ...)
+{
+    txt_window_t *window;
+    char buf[256];
+    va_list args;
+
+    va_start(args, message);
+    vsnprintf(buf, sizeof(buf), message, args);
+    va_end(args);
+
+    window = TXT_NewWindow(title);
+    TXT_AddWidget(window, TXT_NewLabel(buf));
+
+    TXT_SetWindowAction(window, TXT_HORIZ_LEFT, NULL);
+    TXT_SetWindowAction(window, TXT_HORIZ_CENTER,
+                        TXT_NewWindowEscapeAction(window));
+    TXT_SetWindowAction(window, TXT_HORIZ_RIGHT, NULL);
+
+    return window;
+}
+
diff --git a/textscreen/txt_window.h b/textscreen/txt_window.h
index e183cf6d..bfae2a9a 100644
--- a/textscreen/txt_window.h
+++ b/textscreen/txt_window.h
@@ -176,6 +176,16 @@ void TXT_SetMouseListener(txt_window_t *window,
                           TxtWindowMousePress mouse_listener,
                           void *user_data);

+/**
+ * Open a window displaying a message.
+ *
+ * @param title           Title of the window.
+ * @param message         The message to display in the window.
+ * @return                The new window.
+ */
+
+txt_window_t *TXT_MessageBox(char *title, char *message, ...);
+
 #endif /* #ifndef TXT_WINDOW_T */