From 6d3fe0d06ef0ea8431087a58a4a26a80b081700c Mon Sep 17 00:00:00 2001 From: Chris Taylor Date: Sun, 3 Jul 2005 13:12:47 +0000 Subject: [PATCH] add ui_radio_set_value, draw an "O" in the current radio button --- ChangeLog | 4 ++++ include/ui.h | 1 + main/editor/centers.c | 11 +++------- main/editor/medrobot.c | 10 +++------ main/editor/medwall.c | 21 ++++++------------- ui/radio.c | 46 +++++++++++++++++++++++++++++++----------- 6 files changed, 51 insertions(+), 42 deletions(-) diff --git a/ChangeLog b/ChangeLog index 9e26b6b6..50965c7f 100644 --- a/ChangeLog +++ b/ChangeLog @@ -2,6 +2,10 @@ * include/ui.h, ui/file.c, ui/inputbox.c: add ui_inputbox_set_text + * include/ui.h, main/editor/centers.c, main/editor/medrobot.c, + main/editor/medwall.c, ui/radio.c: add ui_radio_set_value, + draw an "O" in the current radio button + 2005-07-01 Chris Taylor * include/ui.h, main/editor/centers.c, main/editor/eswitch.c, diff --git a/include/ui.h b/include/ui.h index e2bf4568..8ab87c6b 100644 --- a/include/ui.h +++ b/include/ui.h @@ -291,6 +291,7 @@ extern void ui_wprintf_at( UI_WINDOW * wnd, short x, short y, char * format, ... extern void ui_draw_radio( UI_GADGET_RADIO * radio ); extern UI_GADGET_RADIO * ui_add_gadget_radio( UI_WINDOW * wnd, short x, short y, short w, short h, short group, char * text ); extern void ui_radio_do( UI_GADGET_RADIO * radio, int keypress ); +extern void ui_radio_set_value(UI_GADGET_RADIO *radio, sbyte value); extern void ui_draw_checkbox( UI_GADGET_CHECKBOX * checkbox ); extern UI_GADGET_CHECKBOX * ui_add_gadget_checkbox( UI_WINDOW * wnd, short x, short y, short w, short h, short group, char * text ); diff --git a/main/editor/centers.c b/main/editor/centers.c index 6340dafd..6523d902 100644 --- a/main/editor/centers.c +++ b/main/editor/centers.c @@ -1,4 +1,4 @@ -/* $Id: centers.c,v 1.7 2005-07-01 09:52:29 chris Exp $ */ +/* $Id: centers.c,v 1.8 2005-07-03 13:12:47 chris Exp $ */ /* THE COMPUTER CODE CONTAINED HEREIN IS THE SOLE PROPERTY OF PARALLAX SOFTWARE CORPORATION ("PARALLAX"). PARALLAX, IN DISTRIBUTING THE CODE TO @@ -19,7 +19,7 @@ COPYRIGHT 1993-1998 PARALLAX SOFTWARE CORPORATION. ALL RIGHTS RESERVED. */ #ifdef RCS -static char rcsid[] = "$Id: centers.c,v 1.7 2005-07-01 09:52:29 chris Exp $"; +static char rcsid[] = "$Id: centers.c,v 1.8 2005-07-03 13:12:47 chris Exp $"; #endif #ifdef HAVE_CONFIG_H @@ -141,13 +141,8 @@ void do_centers_window() // of the checkboxes that control the wall flags. //------------------------------------------------------------ if (old_seg_num != Cursegp-Segments) { - for ( i=0; i < MAX_CENTER_TYPES; i++ ) { - CenterFlag[i]->flag = 0; // Tells ui that this button isn't checked - CenterFlag[i]->status = 1; // Tells ui to redraw button - } - Assert(Curseg2p->special < MAX_CENTER_TYPES); - CenterFlag[Curseg2p->special]->flag = 1; + ui_radio_set_value(CenterFlag[Curseg2p->special], 1); mprintf((0, "Curseg2p->matcen_num = %i\n", Curseg2p->matcen_num)); diff --git a/main/editor/medrobot.c b/main/editor/medrobot.c index 19856f1e..259c3cdc 100644 --- a/main/editor/medrobot.c +++ b/main/editor/medrobot.c @@ -1,4 +1,4 @@ -/* $Id: medrobot.c,v 1.6 2005-03-31 09:38:53 chris Exp $ */ +/* $Id: medrobot.c,v 1.7 2005-07-03 13:12:47 chris Exp $ */ /* THE COMPUTER CODE CONTAINED HEREIN IS THE SOLE PROPERTY OF PARALLAX SOFTWARE CORPORATION ("PARALLAX"). PARALLAX, IN DISTRIBUTING THE CODE TO @@ -19,7 +19,7 @@ COPYRIGHT 1993-1998 PARALLAX SOFTWARE CORPORATION. ALL RIGHTS RESERVED. */ #ifdef RCS -static char rcsid[] = "$Id: medrobot.c,v 1.6 2005-03-31 09:38:53 chris Exp $"; +static char rcsid[] = "$Id: medrobot.c,v 1.7 2005-07-03 13:12:47 chris Exp $"; #endif #ifdef HAVE_CONFIG_H @@ -573,10 +573,6 @@ void do_robot_window() // the current AI mode button be flagged as pressed down. //------------------------------------------------------------ if (old_object != Cur_object_index ) { - for ( i=0; i < NUM_BOXES; i++ ) { - InitialMode[i]->flag = 0; // Tells ui that this button isn't checked - InitialMode[i]->status = 1; // Tells ui to redraw button - } if ( Cur_object_index > -1 ) { int behavior = Objects[Cur_object_index].ctype.ai_info.behavior; if ( !((behavior >= MIN_BEHAVIOR) && (behavior <= MAX_BEHAVIOR))) { @@ -584,7 +580,7 @@ void do_robot_window() Objects[Cur_object_index].ctype.ai_info.behavior = AIB_NORMAL; behavior = AIB_NORMAL; } - InitialMode[behavior - MIN_BEHAVIOR]->flag = 1; // Mark this button as checked + ui_radio_set_value(InitialMode[behavior - MIN_BEHAVIOR], 1); } } diff --git a/main/editor/medwall.c b/main/editor/medwall.c index 63d406cc..951d5be0 100644 --- a/main/editor/medwall.c +++ b/main/editor/medwall.c @@ -1,4 +1,4 @@ -/* $Id: medwall.c,v 1.8 2005-07-01 09:52:29 chris Exp $ */ +/* $Id: medwall.c,v 1.9 2005-07-03 13:12:47 chris Exp $ */ /* THE COMPUTER CODE CONTAINED HEREIN IS THE SOLE PROPERTY OF PARALLAX SOFTWARE CORPORATION ("PARALLAX"). PARALLAX, IN DISTRIBUTING THE CODE TO @@ -19,7 +19,7 @@ COPYRIGHT 1993-1998 PARALLAX SOFTWARE CORPORATION. ALL RIGHTS RESERVED. */ #ifdef RCS -static char rcsid[] = "$Id: medwall.c,v 1.8 2005-07-01 09:52:29 chris Exp $"; +static char rcsid[] = "$Id: medwall.c,v 1.9 2005-07-03 13:12:47 chris Exp $"; #endif #ifdef HAVE_CONFIG_H @@ -434,15 +434,6 @@ void do_wall_window() //------------------------------------------------------------ if (old_wall_num != Cursegp->sides[Curside].wall_num) { - for ( i=0; i < 3; i++ ) { - DoorFlag[i]->flag = 0; // Tells ui that this button isn't checked - DoorFlag[i]->status = 1; // Tells ui to redraw button - } - for ( i=0; i < 4; i++ ) { - KeyFlag[i]->flag = 0; // Tells ui that this button isn't checked - KeyFlag[i]->status = 1; // Tells ui to redraw button - } - if ( Cursegp->sides[Curside].wall_num != -1) { wall *w = &Walls[Cursegp->sides[Curside].wall_num]; @@ -452,13 +443,13 @@ void do_wall_window() ui_checkbox_check(DoorFlag[2], w->flags & WALL_ILLUSION_OFF); if (Walls[Cursegp->sides[Curside].wall_num].keys & KEY_NONE) - KeyFlag[0]->flag = 1; + ui_radio_set_value(KeyFlag[0], 1); if (Walls[Cursegp->sides[Curside].wall_num].keys & KEY_BLUE) - KeyFlag[1]->flag = 1; + ui_radio_set_value(KeyFlag[1], 1); if (Walls[Cursegp->sides[Curside].wall_num].keys & KEY_RED) - KeyFlag[2]->flag = 1; + ui_radio_set_value(KeyFlag[2], 1); if (Walls[Cursegp->sides[Curside].wall_num].keys & KEY_GOLD) - KeyFlag[3]->flag = 1; + ui_radio_set_value(KeyFlag[3], 1); } } diff --git a/ui/radio.c b/ui/radio.c index a95b8cee..de140a98 100644 --- a/ui/radio.c +++ b/ui/radio.c @@ -1,4 +1,4 @@ -/* $Id: radio.c,v 1.5 2005-02-26 10:00:40 chris Exp $ */ +/* $Id: radio.c,v 1.6 2005-07-03 13:12:47 chris Exp $ */ /* THE COMPUTER CODE CONTAINED HEREIN IS THE SOLE PROPERTY OF PARALLAX SOFTWARE CORPORATION ("PARALLAX"). PARALLAX, IN DISTRIBUTING THE CODE TO @@ -13,7 +13,7 @@ COPYRIGHT 1993-1999 PARALLAX SOFTWARE CORPORATION. ALL RIGHTS RESERVED. */ #ifdef RCS -static char rcsid[] = "$Id: radio.c,v 1.5 2005-02-26 10:00:40 chris Exp $"; +static char rcsid[] = "$Id: radio.c,v 1.6 2005-07-03 13:12:47 chris Exp $"; #endif #ifdef HAVE_CONFIG_H @@ -44,25 +44,26 @@ void ui_draw_radio( UI_GADGET_RADIO * radio ) ui_mouse_hide(); gr_set_current_canvas( radio->canvas ); - if (radio->flag) - gr_set_fontcolor( CRED, -1 ); + if (CurWindow->keyboard_focus_gadget == (UI_GADGET *) radio) + gr_set_fontcolor(CRED, -1); else - gr_set_fontcolor( CBLACK, -1 ); + gr_set_fontcolor(CBLACK, -1); if (radio->position == 0 ) { ui_draw_box_out( 0, 0, radio->width-1, radio->height-1 ); - ui_string_centered( Middle(radio->width), Middle(radio->height), "þ" ); + if (radio->flag) + ui_string_centered(Middle(radio->width), Middle(radio->height), "O"); + else + ui_string_centered(Middle(radio->width), Middle(radio->height), " "); } else { ui_draw_box_in( 0, 0, radio->width-1, radio->height-1 ); - ui_string_centered( Middle(radio->width)+1, Middle(radio->height)+1, "þ" ); + if (radio->flag) + ui_string_centered(Middle(radio->width) + 1, Middle(radio->height) + 1, "O"); + else + ui_string_centered(Middle(radio->width) + 1, Middle(radio->height) + 1, " "); } - if (CurWindow->keyboard_focus_gadget == (UI_GADGET *)radio) - gr_set_fontcolor( CRED, CWHITE ); - else - gr_set_fontcolor( CBLACK, CWHITE ); - gr_ustring( radio->width+4, 2, radio->text ); ui_mouse_show(); @@ -155,4 +156,25 @@ void ui_radio_do( UI_GADGET_RADIO * radio, int keypress ) } +void ui_radio_set_value(UI_GADGET_RADIO *radio, sbyte value) +{ + UI_GADGET_RADIO *tmp; + + if (radio->flag == value) + return; + + radio->flag = value; + radio->status = 1; // redraw + + tmp = (UI_GADGET_RADIO *) radio->next; + while (tmp != radio) + { + if ((tmp->kind == 4) && (tmp->group == radio->group) && tmp->flag) + { + tmp->flag = 0; + tmp->status = 1; + } + tmp = (UI_GADGET_RADIO *) tmp->next; + } +} -- 2.39.2