From 1531993b0570f1a0af92a0238f4b871d233fa46f Mon Sep 17 00:00:00 2001 From: Simon Howard Date: Mon, 29 May 2006 19:54:11 +0000 Subject: Allow struts to force height as well as width. Hide "start game" button for players which are not the game controller. Subversion-branch: /trunk/chocolate-doom Subversion-revision: 541 --- src/net_gui.c | 29 +++++++++++++++++++---------- textscreen/examples/guitest.c | 3 ++- textscreen/txt_strut.c | 5 +++-- textscreen/txt_strut.h | 5 +++-- textscreen/txt_table.c | 2 +- 5 files changed, 28 insertions(+), 16 deletions(-) diff --git a/src/net_gui.c b/src/net_gui.c index 21000aa2..fa64b9d8 100644 --- a/src/net_gui.c +++ b/src/net_gui.c @@ -1,7 +1,7 @@ // Emacs style mode select -*- C++ -*- //----------------------------------------------------------------------------- // -// $Id: net_gui.c 539 2006-05-29 19:22:51Z fraggle $ +// $Id: net_gui.c 541 2006-05-29 19:54:11Z fraggle $ // // Copyright(C) 2005 Simon Howard // @@ -98,6 +98,7 @@ #include "txt_table.h" #include "txt_window.h" +static txt_window_t *window; static txt_label_t *player_labels[MAXPLAYERS]; static txt_label_t *ip_labels[MAXPLAYERS]; @@ -115,10 +116,8 @@ static void StartGame(TXT_UNCAST_ARG(widget), void *unused) static void BuildGUI(void) { char buf[50]; - txt_window_t *window; txt_table_t *table; txt_window_action_t *cancel; - txt_window_action_t *startgame; int i; TXT_SetDesktopTitle(PACKAGE_STRING); @@ -126,13 +125,12 @@ static void BuildGUI(void) window = TXT_NewWindow("Waiting for game start..."); table = TXT_NewTable(3); TXT_AddWidget(window, table); - TXT_AddWidget(window, NULL); // Add spacers TXT_AddWidget(table, NULL); - TXT_AddWidget(table, TXT_NewStrut(25)); - TXT_AddWidget(table, TXT_NewStrut(17)); + TXT_AddWidget(table, TXT_NewStrut(25, 1)); + TXT_AddWidget(table, TXT_NewStrut(17, 1)); // Player labels @@ -146,18 +144,17 @@ static void BuildGUI(void) TXT_AddWidget(table, ip_labels[i]); } + TXT_AddWidget(window, TXT_NewStrut(0, 1)); + cancel = TXT_NewWindowAction(KEY_ESCAPE, "Cancel"); TXT_SignalConnect(cancel, "pressed", EscapePressed, NULL); - startgame = TXT_NewWindowAction(' ', "Start game"); - TXT_SignalConnect(startgame, "pressed", StartGame, NULL); TXT_SetWindowAction(window, TXT_HORIZ_LEFT, cancel); - TXT_SetWindowAction(window, TXT_HORIZ_RIGHT, startgame); } static void UpdateGUI(void) { - char buf[50]; + txt_window_action_t *startgame; int i; for (i=0; iwidth; - *h = 0; + *h = strut->height; } static void TXT_StrutDrawer(TXT_UNCAST_ARG(strut), int w, int selected) @@ -40,7 +40,7 @@ txt_widget_class_t txt_strut_class = TXT_StrutDestructor, }; -txt_strut_t *TXT_NewStrut(int width) +txt_strut_t *TXT_NewStrut(int width, int height) { txt_strut_t *strut; @@ -49,6 +49,7 @@ txt_strut_t *TXT_NewStrut(int width) TXT_InitWidget(strut, &txt_strut_class); strut->widget.selectable = 0; strut->width = width; + strut->height = height; return strut; } diff --git a/textscreen/txt_strut.h b/textscreen/txt_strut.h index 5bf7b7e7..3f45b8db 100644 --- a/textscreen/txt_strut.h +++ b/textscreen/txt_strut.h @@ -30,7 +30,7 @@ typedef struct txt_strut_s txt_strut_t; #include "txt_widget.h" // -// A strut is used to force a table to a minimum width. It is not +// A strut is used to force a table to a minimum width/height. It is not // visible but it takes up space. // @@ -38,9 +38,10 @@ struct txt_strut_s { txt_widget_t widget; int width; + int height; }; -txt_strut_t *TXT_NewStrut(int width); +txt_strut_t *TXT_NewStrut(int width, int height); #endif /* #ifndef TXT_STRUT_H */ diff --git a/textscreen/txt_table.c b/textscreen/txt_table.c index b2055825..20c74b53 100644 --- a/textscreen/txt_table.c +++ b/textscreen/txt_table.c @@ -92,7 +92,7 @@ static void CalcRowColSizes(txt_table_t *table, // Empty spacer if widget is NULL ww = 0; - wh = 1; + wh = 0; } if (wh > row_heights[y]) -- cgit v1.2.3