home *** CD-ROM | disk | FTP | other *** search
/ Enigma Amiga Life 106 / EnigmaAmiga106CD.iso / software / utilities / installer / gui api / example / igui_asknumber.c < prev    next >
Encoding:
C/C++ Source or Header  |  1999-08-27  |  3.1 KB  |  118 lines

  1.  
  2. #include "includes.h"
  3. #include "installergui_data.h"
  4.  
  5. /********************************************************************
  6.  *
  7.  *  DESCRIPTION
  8.  *
  9.  */
  10.  
  11. /********************************************************************
  12.  *
  13.  *  STATIC
  14.  *
  15.  */
  16.  
  17. /********************************************************************
  18.  *
  19.  *  EXTERN
  20.  *
  21.  */
  22.  
  23. /********************************************************************
  24.  *
  25.  *  PUBLIC
  26.  *
  27.  */
  28.  
  29. /********************************************************************
  30.  *
  31.  *  CODE
  32.  *
  33.  */
  34.  
  35. long __asm igui_AskNumber(register __a0 APTR application,
  36.                           register __a1 struct FunctionEnvironment *localenv)
  37. {
  38.   #ifdef DEBUG
  39.   DEBUG_MAKRO
  40.   #endif
  41.  
  42.   {
  43.     struct Application *app = (struct Application *) application;
  44.  
  45.     // the number
  46.     long number = 0;
  47.  
  48.     // the mui objects
  49.     APTR asknum, numobj;
  50.  
  51.     // maybe we have to create a new prompt?!
  52.     char *prompt = (char *) localenv->fe_Prompt;
  53.  
  54.     // if the user specified a RANGE, then localenv->fe_RangeSet is TRUE
  55.     // and localenv->fe_Range[0] and localenv->fe_Range[1] hold the values
  56.     // in this case, we have to append the known "Valid range is..." string
  57.     // to the default prompt parameter!
  58.     if (localenv->fe_RangeSet)
  59.     {
  60.       long args[3];
  61.  
  62.       // korrect the default value, if it is out of range
  63.       localenv->fe_Default = sav_RangeNumber(localenv->fe_Default, localenv->fe_Range[0], localenv->fe_Range[1]);
  64.  
  65.       args[0] = localenv->fe_Prompt;
  66.       args[1] = localenv->fe_Range[0];
  67.       args[2] = localenv->fe_Range[1];
  68.  
  69.       if (prompt = sav_StringF2(app->app_Texts[ASKNUM_RANGE], &args)) { }
  70.       else                                                            { app->app_Error = GUIERROR_OUT_OF_MEMORY; return(number); }
  71.     }
  72.  
  73.     //create the object
  74.     asknum = GroupObject,
  75.                Child, HVSpace,
  76.                Child, TextObject,
  77.                  MUIA_Frame, MUIV_Frame_None,
  78.                  MUIA_Text_Contents, prompt,
  79.                  MUIA_Text_SetMin, TRUE,
  80.                  MUIA_Text_PreParse, "\33c",
  81.                End,
  82.                Child, numobj = StringObject,
  83.                  MUIA_Frame, MUIV_Frame_String,
  84.                  MUIA_String_Integer, localenv->fe_Default,
  85.                  MUIA_String_Accept, "0123456789",
  86.                  MUIA_String_Format, MUIV_String_Format_Center,
  87.                End,
  88.                Child, HVSpace,
  89.              End;
  90.  
  91.     //
  92.     if (guistuff_NewContent(app, asknum))
  93.     {
  94.       // we have to wait, until the correct number was entered!
  95.       while(TRUE)
  96.       {
  97.         igui_WaitApp(app);
  98.         if (igui_QuitApp(app)) { break; }
  99.         else
  100.         {
  101.           // get the number an check for its range (if we have to)!
  102.           GetAttr(MUIA_String_Integer, numobj, (ULONG *) &number);
  103.           if (localenv->fe_RangeSet)
  104.           {
  105.             if (number < localenv->fe_Range[0] || number > localenv->fe_Range[1]) { DisplayBeep(NULL); }
  106.             else                                                                  { break; }
  107.           }
  108.         }
  109.       }
  110.     }
  111.     else { /* NO GUI OBJECT */ }
  112.  
  113.     igui_EmptyPanel(app);
  114.     return(number);
  115.   }
  116. }
  117.  
  118.