add ui_radio_set_value, draw an "O" in the current radio button
authorChris Taylor <chris@icculus.org>
Sun, 3 Jul 2005 13:12:47 +0000 (13:12 +0000)
committerChris Taylor <chris@icculus.org>
Sun, 3 Jul 2005 13:12:47 +0000 (13:12 +0000)
ChangeLog
include/ui.h
main/editor/centers.c
main/editor/medrobot.c
main/editor/medwall.c
ui/radio.c

index 9e26b6b..50965c7 100644 (file)
--- 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  <chris@icculus.org>
 
        * include/ui.h, main/editor/centers.c, main/editor/eswitch.c,
index e2bf456..8ab87c6 100644 (file)
@@ -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 );
index 6340daf..6523d90 100644 (file)
@@ -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));
 
index 19856f1..259c3cd 100644 (file)
@@ -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);
                }
        }
 
index 63d406c..951d5be 100644 (file)
@@ -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);
                }
        }
        
index a95b8ce..de140a9 100644 (file)
@@ -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;
+       }
+}