home *** CD-ROM | disk | FTP | other *** search
/ AmigActive 6 / AACD06.ISO / AACD / Utilities / amiCheck / Source / qamntPanel.c < prev    next >
C/C++ Source or Header  |  1998-06-11  |  4KB  |  187 lines

  1. /* qamntPanel.c 
  2.  *
  3.  *  defines the GUIFront characteristics of the qamnt panel
  4.  */
  5. #include <exec/types.h>
  6. #include <exec/lists.h>
  7. #include <exec/nodes.h>
  8. #include <exec/memory.h>
  9. #include <stdio.h>  
  10. #include <intuition/gadgetclass.h>
  11. #include <clib/exec_protos.h>
  12. #include <clib/intuition_protos.h>
  13. #include "amiCheck.h"
  14. #include "qamntPanel.h"
  15. #include "dataBase.h"
  16. #include "enterPanel.h"
  17. #include "regGadget.h"
  18.  
  19. /* prototypes */
  20. BOOL QAmntHandleGadget(struct IntuiMessage *);
  21. void QAmntInit(void);
  22.  
  23.  
  24. ULONG qamntSel = ~0;
  25. struct Window *qamntWin = NULL;
  26. GUIFront *qamntGUI;
  27. static BOOL done;
  28. static BOOL useme;
  29.  
  30. /* quick configure of some gadgets */
  31.  
  32. /* define gadgetspec */
  33. GadgetSpec QAgadgetspecs[] = 
  34. {
  35.     {LISTVIEW_KIND,AMNTSIZE,8, {0,0,0,0,NULL,NULL,GID_QAMNTLIST,
  36.         PLACETEXT_ABOVE},ListView,GS_DefaultTags},
  37. };
  38.  
  39. /* set up array of pointers to our specs */
  40. GadgetSpec *QA_AmntSpecs[] =
  41. {
  42.         &QAgadgetspecs[0],
  43.         NULL,
  44. };
  45.  
  46.  
  47. /* define the layout of this panel */
  48. ULONG QA_AmntPanel[] =
  49. {
  50.    GUIL_Flags, GUILF_PropShare | GUILF_EqualWidth,
  51.                                           
  52.     GUIL_GadgetSpecID, GID_QAMNTLIST,
  53.                                        
  54.    TAG_DONE,       
  55. };
  56.  
  57. /****************************************************
  58. * QAmntGUI
  59. *
  60. *    create gui for this panel
  61. *****************************************************/
  62. BOOL QAmntGUI(GUIFront *parent)
  63. {
  64.  UWORD ordinal;
  65.  BOOL noreply; 
  66.  ULONG signal;
  67.  
  68.    done = FALSE;
  69.  
  70.    /* lock edit window */
  71.    GF_LockGUI(parent);
  72.  
  73.    /* bring up this gui */
  74.    GF_SetGUIAttr(qamntGUI, GUI_OpenGUI, TRUE, TAG_DONE);
  75.    
  76.    /* grab window */
  77.    GF_GetGUIAttr(qamntGUI,GUI_Window,&qamntWin,TAG_DONE);
  78.  
  79.    QAmntInit();
  80.  
  81.    /* Process input events */
  82.     while (!done)
  83.        {
  84.          struct IntuiMessage *imsg;
  85.                     /* Wait for an event to occur */
  86.  
  87.                     signal = GF_Wait(guiapp,AmigaGuideSignal(agc));
  88.             if (signal & AmigaGuideSignal(agc)) {
  89.             AmiHelpMsg();
  90.             continue;
  91.             }
  92.  
  93.                     /* We only bother to listen for CLOSEWINDOW events.
  94.                      * Of course, in a real application, you would be
  95.                      * examining the Class field for IDCMP_GADGETUP
  96.                      * messages and act accordingly.
  97.                      */
  98.  
  99.                     while (imsg = GF_GetIMsg(guiapp))
  100.                     {
  101.             noreply = TRUE;
  102.                         switch (imsg->Class) {
  103.                 case IDCMP_REFRESHWINDOW:
  104.                     RegRefresh(TRUE);
  105.                     break;
  106.  
  107.                                 case IDCMP_CLOSEWINDOW:
  108.                                         done = TRUE;
  109.                                         break;
  110.  
  111.                 case IDCMP_RAWKEY:
  112.                     if (GF_ProcessListView(qamntGUI,QA_AmntSpecs[GID_QAMNTLIST],
  113.                         imsg,&ordinal)) {
  114.                             qamntSel = ordinal;    
  115.                     }
  116.                     else AmiHelpKey(imsg,QUICKAMNT_PANEL);
  117.                     break;
  118.  
  119.                 case IDCMP_GADGETUP:
  120.                     noreply = FALSE;
  121.                     done=QAmntHandleGadget(imsg);
  122.                     break;
  123.  
  124.                 }
  125.  
  126.             if (noreply) GF_ReplyIMsg(imsg);
  127.  
  128.              }
  129.   }
  130.  
  131.   /* detach list */
  132.   GF_SetGadgetAttrs(qamntGUI,QAgadgetspecs[GID_QAMNTLIST].gs_Gadget,
  133.     GTLV_Labels, ~0,
  134.     TAG_DONE);
  135.  
  136.   /* close window */
  137.   GF_SetGUIAttr(qamntGUI, GUI_OpenGUI, FALSE, TAG_DONE);            
  138.   qamntWin = NULL;
  139.       
  140.   /* unlock edit window */
  141.   GF_UnlockGUI(parent);
  142.  
  143.   return (useme);
  144. }
  145.  
  146. /***************************************************
  147. * QAmntHandleGadget....
  148. *
  149. *     double clicks change ord val.
  150. ****************************************************/
  151. BOOL QAmntHandleGadget(struct IntuiMessage *imsg)
  152. {
  153. BOOL done = FALSE;
  154. struct Gadget *gad = (struct Gadget *)(imsg->IAddress);
  155. UWORD code = imsg->Code;
  156.  
  157.  switch (gad->GadgetID) {
  158.     case GID_QAMNTLIST:
  159.         qamntSel = code;
  160.         useme = TRUE;
  161.         done = TRUE;
  162.         break;
  163.  }
  164.  
  165.  return (done);
  166. }
  167.  
  168. /***********************************************************
  169. * QAmntInit()
  170. *
  171. *
  172. ************************************************************/
  173. void QAmntInit(void)
  174. {
  175.     useme = FALSE;
  176.      GF_SetGadgetAttrs(qamntGUI,QAgadgetspecs[GID_QAMNTLIST].gs_Gadget,
  177.             GTLV_Labels, &amntlist,
  178.             GTLV_Selected, qamntSel,
  179.             TAG_DONE);
  180.                 
  181.    if (qamntSel != ~0)
  182.      GF_SetGadgetAttrs(qamntGUI,QAgadgetspecs[GID_QAMNTLIST].gs_Gadget,
  183.             GTLV_MakeVisible, qamntSel,
  184.             TAG_DONE);
  185.  
  186. }
  187.