display/varblmen.cpp

Go to the documentation of this file.
00001 
00020 #include "mfcpch.h"
00021 #include          "varblmen.h"
00022 #include          "varblwin.h"
00023 
00024 /* ==================
00025  ***********************************************************************
00026  *
00027  *       BOOL_VAR_MENU_LEAF     MEMBER FUNCTIONS
00028  *
00029  ***********************************************************************
00030  ==================== */
00031 
00035 void BOOL_VAR_MENU_LEAF::event(                          //User clicked...
00036                                COMMAND_WINDOW *cmd_win,  //For UI, update etc
00037                                FCOORD pt,                //here
00038                                INT32 *,                  //Command selected
00039                                char *                    //Edited value
00040                               ) {
00041   char msg[MAX_CHARS + 1];
00042 
00043   if (box.contains (pt)) {
00044     var->set_value (!(BOOL8) * var);
00045     sprintf (msg, "TOGGLED: %s", var->info_str ());
00046     cmd_win->msg (msg);
00047     changed = TRUE;
00048   }
00049 }
00050 
00051 
00055 void BOOL_VAR_MENU_LEAF::plotx(               //draw it
00056                                WINDOW window  //in this window
00057                               ) {
00058   if ((BOOL8) * var) {
00059     text_color_index(window, BLACK); 
00060     fill_color_index(window, WHITE); 
00061   }
00062 
00063   LEAF_MENU_NODE::plotx(window); 
00064 
00065   text_color_index(window, WHITE); 
00066   fill_color_index(window, GREY); 
00067 }
00068 
00069 
00073 void BOOL_VAR_MENU_LEAF::write_vars(                    //save config vars
00074                                     FILE *fp,           //in this file
00075                                     BOOL8 changes_only  //Changed vars only?
00076                                    ) {
00077   if (!changes_only || changed) {
00078     fprintf (fp, "%-25s   %-12s   # %s\n",
00079       var->name_str (),
00080       (BOOL8) * var ? "TRUE" : "FALSE", var->info_str ());
00081   }
00082 }
00083 
00084 
00085 /* ==================
00086  ***********************************************************************
00087  *
00088  *       DBL_VAR_MENU_LEAF     MEMBER FUNCTIONS
00089  *
00090  ***********************************************************************
00091  ==================== */
00092 
00096 void DBL_VAR_MENU_LEAF::event(                          //User clicked...
00097                               COMMAND_WINDOW *cmd_win,  //For UI, update etc
00098                               FCOORD pt,                //here
00099                               INT32 *,                  //Command selected
00100                               char *                    //Edited value
00101                              ) {
00102   char ascii_new_value[MAX_CHARS + 1];
00103   const char *prompt_msg;
00104   double new_value;
00105 
00106   if (box.contains (pt)) {
00107     sprintf (ascii_new_value, "%g", (double) *var);
00108     prompt_msg = var->info_str ();
00109     while (cmd_win->internal_prompt (prompt_msg, ascii_new_value)) {
00110       if (sscanf (ascii_new_value, "%lf", &new_value) == 1) {
00111         if (new_value != (double) *var) {
00112           var->set_value (new_value);
00113           cmd_win->msg ("Value changed");
00114           changed = TRUE;
00115           return;
00116         }
00117         else {
00118           cmd_win->msg ("Value unchanged");
00119           return;
00120         }
00121       }
00122       else
00123         prompt_msg = "Invalid value for double - try again or click";
00124     }
00125   }
00126 }
00127 
00128 
00132 void DBL_VAR_MENU_LEAF::write_vars(                    //save config vars
00133                                    FILE *fp,           //in this file
00134                                    BOOL8 changes_only  //Changed vars only?
00135                                   ) {
00136   if (!changes_only || changed) {
00137     fprintf (fp, "%-25s   %-12e   # %s\n",
00138       var->name_str (), (double) *var, var->info_str ());
00139   }
00140 }
00141 
00142 
00143 /* ==================
00144  ***********************************************************************
00145  *
00146  *       INT_VAR_MENU_LEAF     MEMBER FUNCTIONS
00147  *
00148  ***********************************************************************
00149  ==================== */
00150 
00154 void INT_VAR_MENU_LEAF::event(                          //User clicked...
00155                               COMMAND_WINDOW *cmd_win,  //For UI, update etc
00156                               FCOORD pt,                //here
00157                               INT32 *,                  //Command selected
00158                               char *                    //Edited value
00159                              ) {
00160   char ascii_new_value[MAX_CHARS + 1];
00161   const char *prompt_msg;
00162   INT32 new_value;
00163 
00164   if (box.contains (pt)) {
00165     sprintf (ascii_new_value, INT32FORMAT, (INT32) * var);
00166     prompt_msg = var->info_str ();
00167     while (cmd_win->internal_prompt (prompt_msg, ascii_new_value)) {
00168       if (sscanf (ascii_new_value, INT32FORMAT, &new_value) == 1) {
00169         if (new_value != (INT32) * var) {
00170           var->set_value (new_value);
00171           cmd_win->msg ("Value changed");
00172           changed = TRUE;
00173           return;
00174         }
00175         else {
00176           cmd_win->msg ("Value unchanged");
00177           return;
00178         }
00179       }
00180       else
00181         prompt_msg = "Invalid value for INT32 - try again or click";
00182     }
00183   }
00184 }
00185 
00186 
00190 void INT_VAR_MENU_LEAF::write_vars(                    //save config vars
00191                                    FILE *fp,           //in this file
00192                                    BOOL8 changes_only  //Changed vars only?
00193                                   ) {
00194   if (!changes_only || changed) {
00195     fprintf (fp, "%-25s   %-12d   # %s\n",
00196       var->name_str (), (int) *var, var->info_str ());
00197   }
00198 }
00199 
00200 
00201 /* ==================
00202  ***********************************************************************
00203  *
00204  *       STR_VAR_MENU_LEAF     MEMBER FUNCTIONS
00205  *
00206  ***********************************************************************
00207  ==================== */
00208 
00212 void STR_VAR_MENU_LEAF::event(                          //User clicked...
00213                               COMMAND_WINDOW *cmd_win,  //For UI, update etc
00214                               FCOORD pt,                //here
00215                               INT32 *,                  //Command selected
00216                               char *                    //Edited value
00217                              ) {
00218   char ascii_new_value[MAX_CHARS + 1];
00219 
00220   if (box.contains (pt)) {
00221     sprintf (ascii_new_value, "%s", ((STRING) * var).string ());
00222     if (cmd_win->internal_prompt (var->info_str (), ascii_new_value)) {
00223       if (strcmp (ascii_new_value, ((STRING) * var).string ()) != 0) {
00224         var->set_value (ascii_new_value);
00225         cmd_win->msg ("Value changed");
00226         changed = TRUE;
00227         return;
00228       }
00229       else {
00230         cmd_win->msg ("Value unchanged");
00231         return;
00232       }
00233     }
00234   }
00235 }
00236 
00237 
00241 void STR_VAR_MENU_LEAF::write_vars(                    //save config vars
00242                                    FILE *fp,           //in this file
00243                                    BOOL8 changes_only  //Changed vars only?
00244                                   ) {
00245   if (!changes_only || changed) {
00246     fprintf (fp, "%-25s   %-12s   # %s\n",
00247       var->name_str (),
00248       ((STRING) * var).string (), var->info_str ());
00249   }
00250 }
00251 
00252 
00253 /* ==================
00254  ***********************************************************************
00255  *
00256  *       VAR_NON_RADIO_MENU     MEMBER FUNCTIONS
00257  *
00258  ***********************************************************************
00259  ==================== */
00260 
00264 void VAR_NON_RADIO_MENU::write_vars(                    //save config vars
00265                                     FILE *fp,           //in this file
00266                                     BOOL8 changes_only  //Changed vars only?
00267                                    ) {
00268   MENU_L_IT it(&menu_list); 
00269 
00270   fprintf (fp, "\n");
00271   for (it.mark_cycle_pt (); !it.cycled_list (); it.forward ())
00272     it.data ()->ptr->write_vars (fp, changes_only);
00273 }
00274 
00275 
00276 /* ==================
00277  ***********************************************************************
00278  *
00279  *       VAR_SUB_MENU     MEMBER FUNCTIONS
00280  *
00281  ***********************************************************************
00282  ==================== */
00283 
00287 void VAR_SUB_MENU::event(                      //User clicked...
00288                          COMMAND_WINDOW *win,  //For UI, update etc
00289                          FCOORD pt,            //here
00290                          INT32 *,              //Command selected
00291                          char *                //Edited value
00292                         ) {
00293   if (box.contains (pt)) {
00294     if (sub_window != NULL)
00295       win->msg ("Sub menu is already open!");
00296     else {
00297       sub_window = new VARIABLES_WINDOW (name.string (), root, this);
00298     }
00299   }
00300 }

Generated on Wed Feb 28 19:49:11 2007 for Tesseract by  doxygen 1.5.1