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

  1. /* budgetPanel.c 
  2.  *
  3.  *  defines the GUIFront characteristics of the budget panel 
  4.  */
  5.   
  6. #include <stdio.h>  
  7. #include <intuition/gadgetclass.h>
  8. #include <exec/memory.h>
  9. #include <clib/exec_protos.h>
  10. #include <clib/asl_protos.h>
  11. #include <libraries/asl.h>
  12.  
  13. #include "amiCheck.h"
  14. #include "dataBase.h"
  15. #include "budgetPanel.h"
  16. #include <string.h>
  17.  
  18.  
  19. /* prototypes */
  20. BOOL BudgetHandleGadget(struct IntuiMessage *);
  21. BOOL BudgetInit(void);
  22.  
  23. static BOOL newbudget;
  24. static struct Window *budgetWin;
  25. static struct List budgetList;
  26. static struct List *cats;
  27. ExtErrorData BudgetExtData;
  28. GUIFront *budgetGUI;
  29.  
  30. /* quick configure of some gadgets */
  31.  
  32. /* define gadgetspec */
  33. GadgetSpec BPgadgetspecs[] = 
  34. {
  35.     {LISTVIEW_KIND,25,6, {0,0,0,0,NULL,NULL,GID_BPCATSRC,
  36.         PLACETEXT_ABOVE},ListView,GS_DefaultTags},
  37.  
  38.     {LISTVIEW_KIND,25,6, {0,0,0,0,NULL,NULL,GID_BPCATSEL,
  39.         PLACETEXT_ABOVE},ListView,GS_DefaultTags},
  40.  
  41.     {TEXT_KIND,0,0, {0,0,0,0,"% Budgeted",NULL,GID_BPPERCENT,
  42.         PLACETEXT_LEFT},TxtZero,GS_DefaultTags},
  43.  
  44.     {TEXT_KIND,0,0, {0,0,0,0,"Remaining",NULL,GID_BPREMAIN,
  45.         PLACETEXT_LEFT},TxtZero,GS_DefaultTags},
  46.  
  47.     {STRING_KIND,AMNTSIZE,0, {0,0,0,0,"_Amount",NULL,GID_BPAMOUNT,
  48.         PLACETEXT_LEFT},strAmntTags,GS_DefaultTags | GS_NoWidthExtend},
  49.  
  50.     {SLIDER_KIND,0,0, {0,0,0,0,NULL,NULL,GID_BPADJUST,
  51.         PLACETEXT_LEFT},NULL,GS_DefaultTags},
  52.  
  53.         {BUTTON_KIND,0,0,{0,0,0,0,"_Remove", NULL, GID_BPREMOVE,        
  54.                 PLACETEXT_IN}, NULL, GS_DefaultTags | GS_NoWidthExtend},
  55.  
  56.         {BUTTON_KIND,0,0,{0,0,0,0,"_OK", NULL, GID_BPOK,        
  57.                 PLACETEXT_IN}, NULL, GS_DefaultTags},
  58.  
  59.         {BUTTON_KIND,0,0,{0,0,0,0,"_Cancel", NULL, GID_BPCANCEL,        
  60.                 PLACETEXT_IN}, NULL, GS_DefaultTags},
  61. };
  62.  
  63. /* set up array of pointers to our specs */
  64. GadgetSpec *BP_BudgetSpecs[] =
  65. {
  66.         &BPgadgetspecs[0],
  67.         &BPgadgetspecs[1],
  68.         &BPgadgetspecs[2],
  69.         &BPgadgetspecs[3],
  70.         &BPgadgetspecs[4],
  71.         &BPgadgetspecs[5],
  72.         &BPgadgetspecs[6],
  73.         &BPgadgetspecs[7],
  74.     &BPgadgetspecs[8],
  75.         NULL,
  76. };
  77.  
  78. /* define the layout of this panel */
  79. ULONG BP_BudgetPanel[] =
  80. {
  81.    GUIL_Flags, GUILF_PropShare | GUILF_EqualWidth,
  82.  
  83.    GUIL_HorizGroup, 1,
  84.         GUIL_Flags, GUILF_PropShare,
  85.     GUIL_FrameType, GUILFT_Recess,
  86.         
  87.     GUIL_VertGroup, 1,
  88.  
  89.         /* the overview stats */
  90.         GUIL_HorizGroup,2,
  91.             GUIL_GadgetSpecID, GID_BPPERCENT,
  92.             GUIL_GadgetSpecID, GID_BPREMAIN,
  93.         TAG_DONE,
  94.  
  95.         /* the two listviews */
  96.         GUIL_HorizGroup,1,
  97.             GUIL_HorizGroup,0,
  98.                 GUIL_FrameType, GUILFT_Ridge,
  99.                 GUIL_FrameHeadline, "Categories",
  100.  
  101.                 GUIL_GadgetSpecID, GID_BPCATSRC,
  102.             TAG_DONE,
  103.  
  104.             GUIL_HorizGroup,0,
  105.                 GUIL_FrameType, GUILFT_Ridge,
  106.                 GUIL_FrameHeadline, "Budgeted",
  107.  
  108.                 GUIL_GadgetSpecID, GID_BPCATSEL,
  109.             TAG_DONE,
  110.         TAG_DONE,
  111.             
  112.  
  113.         /* budget setting */
  114.         GUIL_VertGroup,1,
  115.             GUIL_FrameType, GUILFT_Ridge,
  116.             GUIL_FrameHeadline, "Budget Control",
  117.  
  118.             GUIL_HorizGroup,0,    
  119.                 GUIL_GadgetSpecID, GID_BPAMOUNT,
  120.                 GUIL_GadgetSpecID, GID_BPADJUST,
  121.  
  122.                        TAG_DONE,
  123.  
  124.             GUIL_GadgetSpecID, GID_BPREMOVE,
  125.         TAG_DONE,
  126.  
  127.     TAG_DONE,
  128.         
  129.     TAG_DONE,
  130.     
  131.     GUIL_HorizGroup,1,
  132.         GUIL_Flags, GUILF_EqualSize | GUILF_EqualWidth,
  133.  
  134.            GUIL_GadgetSpecID, GID_BPOK,
  135.            GUIL_GadgetSpecID, GID_BPCANCEL,
  136.            
  137.     TAG_DONE,   
  138.            
  139. TAG_DONE,
  140. };
  141.  
  142.  
  143. /****************************************************
  144. * BudgetGUI ()
  145. *
  146. *    Creates the GUI for the budget panel.
  147. *****************************************************/
  148. void BudgetGUI(void)
  149. {
  150.  BOOL done = FALSE;
  151.  BOOL noreply;
  152.  UWORD ordinal;
  153.  ULONG signal;
  154.  
  155.     
  156.  AmiLock();
  157.  
  158.     GF_SetGUIAttr(budgetGUI, GUI_OpenGUI, TRUE, TAG_DONE);
  159.  
  160.      /* grab window */
  161.      GF_GetGUIAttr(budgetGUI,GUI_Window,&budgetWin,TAG_DONE);
  162.  
  163.                 /* Process input events */
  164.                 while (!done)
  165.                 {
  166.                     struct IntuiMessage *imsg;
  167.  
  168.                     /* Wait for an event to occur */
  169.  
  170.                     signal = GF_Wait(guiapp,AmigaGuideSignal(agc));
  171.            if (signal & AmigaGuideSignal(agc)) {
  172.             AmiHelpMsg();
  173.             continue;
  174.             }
  175.  
  176.  
  177.                     /* We only bother to listen for CLOSEWINDOW events.
  178.                      * Of course, in a real application, you would be
  179.                      * examining the Class field for IDCMP_GADGETUP
  180.                      * messages and act accordingly.
  181.                      */
  182.  
  183.                     while (imsg = GF_GetIMsg(guiapp))
  184.                     {
  185.             noreply = TRUE;
  186.                         switch (imsg->Class) {
  187.                 case IDCMP_REFRESHWINDOW:
  188.                     RegRefresh(TRUE);
  189.                     break;
  190.  
  191.                                 case IDCMP_CLOSEWINDOW:
  192.                     done = TRUE;
  193.                                         break;
  194.  
  195. #if 0
  196.                 case IDCMP_GADGETUP:
  197.                     noreply = FALSE;
  198.                     done=BudgetHandleGadget(imsg);
  199.                     break;
  200.  
  201.                 case IDCMP_RAWKEY:
  202.                     AmiHelpKey(imsg,GROUP_PANEL);
  203.                     break;
  204. #endif
  205.                         }
  206.                                      
  207.                               
  208.                         if (noreply) GF_ReplyIMsg(imsg);
  209.                     }
  210.                 }
  211.    AmiUnlock();
  212.   return;
  213. }
  214.  
  215. /***************************************************
  216. * BudgetHandleGadget()
  217. *
  218. *    Handles gadget events for this panel
  219. ****************************************************/
  220. BOOL  BudgetHandleGadget(struct IntuiMessage *imsg)
  221. {
  222.  BOOL done = FALSE;
  223.  struct Gadget *gad = (struct Gadget *)(imsg->IAddress);
  224.  UWORD code = imsg->Code;
  225.  categoryNode *temp;
  226.  
  227.  switch (gad->GadgetID) {
  228.     
  229.     case GID_BPOK:
  230.         done = TRUE;
  231.         /* copy stuff into new.. */
  232.         newbudget = TRUE;
  233.         break;
  234.  
  235.     case GID_BPCANCEL:
  236.         done = TRUE;
  237.         break;
  238.  
  239.  }
  240.  
  241.  GF_ReplyIMsg(imsg);
  242.  return (done);
  243. }
  244.  
  245. /****************************************************
  246. * BudgetInit()
  247. *
  248. *    Set up some globals
  249. *****************************************************/
  250. BOOL BudgetInit(void)
  251. {
  252.  
  253.  
  254.  return (TRUE);
  255. }
  256.