home *** CD-ROM | disk | FTP | other *** search
- /* reconcilePanel.c
- *
- * defines the GUIFront characteristics of the reconcile panel
- */
-
- #include <stdio.h>
- #include <intuition/gadgetclass.h>
- #include "amiCheck.h"
- #include "mainPanel.h"
- #include "reconcilePanel.h"
- #include "dataBase.h"
- #include <string.h>
- #include "regGadget.h"
-
-
- /* prototypes */
- BOOL RecHandleGadget(struct IntuiMessage *);
- void RecInit(void);
-
- ExtErrorData RecExtData;
- GUIFront *recGUI;
- char recstr[AMNTSIZE+1];
- BOOL doit = FALSE;
-
- /* quick configure of some gadgets */
- struct TagItem warnTags[] =
- {
- {GTTX_Text,"If this does not match statement,"},
- {TAG_DONE},
- };
-
- struct TagItem resTags[] =
- {
- {GTTX_Text,"POSTPONE reconcile by canceling."},
- {TAG_DONE},
- };
-
-
- /* define gadgetspec */
- GadgetSpec RCPgadgetspecs[] =
- {
- {TEXT_KIND,AMNTSIZE,0,{0,0,0,0,"Reconcile Result:",NULL,GID_RCPCURR,
- PLACETEXT_LEFT},TxtBorder,GS_DefaultTags},
-
- {TEXT_KIND,0,0,{0,0,0,0,NULL,NULL,GID_RCPWARN,
- PLACETEXT_LEFT},warnTags,GS_DefaultTags},
-
- {TEXT_KIND,0,0,{0,0,0,0,NULL,NULL,GID_RCPRESULTS,
- PLACETEXT_LEFT},resTags,GS_DefaultTags},
-
- {BUTTON_KIND,0,0,{0,0,0,0,"_OK", NULL, GID_RCPOK,
- PLACETEXT_IN}, NULL, GS_DefaultTags},
-
- {BUTTON_KIND,0,0,{0,0,0,0,"_Cancel", NULL, GID_RCPCANCEL,
- PLACETEXT_IN}, NULL, GS_DefaultTags},
-
- };
-
- /* set up array of pointers to our specs */
- GadgetSpec *RCP_RecSpecs[] =
- {
- &RCPgadgetspecs[0],
- &RCPgadgetspecs[1],
- &RCPgadgetspecs[2],
- &RCPgadgetspecs[3],
- &RCPgadgetspecs[4],
- NULL,
- };
-
-
- /* define the layout of this panel */
- ULONG RCP_RecPanel[] =
- {
- GUIL_Flags, GUILF_PropShare | GUILF_EqualWidth,
-
- GUIL_HorizGroup, 2,
- GUIL_Flags, GUILF_PropShare | GUILF_EqualHeight,
- GUIL_FrameType, GUILFT_Recess,
-
- GUIL_VertGroup, 3,
- GUIL_Flags, GUILF_PropShare | GUILF_EqualWidth,
-
- GUIL_GadgetSpecID, GID_RCPCURR,
-
- GUIL_VertGroup,0,
- GUIL_GadgetSpecID, GID_RCPWARN,
- GUIL_GadgetSpecID, GID_RCPRESULTS,
- TAG_DONE,
- TAG_DONE,
- TAG_DONE,
-
- GUIL_HorizGroup,1,
- GUIL_Flags, GUILF_EqualSize | GUILF_EqualWidth,
-
- GUIL_GadgetSpecID, GID_RCPOK,
- GUIL_GadgetSpecID, GID_RCPCANCEL,
-
- TAG_DONE,
-
- TAG_DONE,
- };
-
-
- /****************************************************
- * ReconcileGUI ()
- *
- * Creates the GUI for the sort panel.
- *****************************************************/
- void ReconcileGUI(void)
- {
- BOOL done = FALSE;
- ULONG signal;
-
- AmiLock();
- doit = FALSE;
-
- GF_SetGUIAttr(recGUI, GUI_OpenGUI, TRUE, TAG_DONE);
- RecInit();
- /* Process input events */
- while (!done)
- {
- struct IntuiMessage *imsg;
-
- /* Wait for an event to occur */
-
- signal = GF_Wait(guiapp,AmigaGuideSignal(agc));
-
- /* We only bother to listen for CLOSEWINDOW events.
- * Of course, in a real application, you would be
- * examining the Class field for IDCMP_GADGETUP
- * messages and act accordingly.
- */
-
- if (signal & AmigaGuideSignal(agc)) {
- AmiHelpMsg();
- continue;
- }
-
- while (imsg = GF_GetIMsg(guiapp))
- {
- switch (imsg->Class) {
- case IDCMP_RAWKEY:
- AmiHelpKey(imsg,RECONCILE_PANEL);
- break;
-
- case IDCMP_CLOSEWINDOW:
- done = TRUE;
- break;
-
- case IDCMP_GADGETUP:
- done=RecHandleGadget(imsg);
- break;
-
- case IDCMP_REFRESHWINDOW:
- RegRefresh(TRUE);
- break;
- }
-
-
- GF_ReplyIMsg(imsg);
- }
- }
-
- GF_SetGUIAttr(recGUI, GUI_OpenGUI, FALSE, TAG_DONE);
- AmiUnlock();
-
- if (doit == TRUE) {
- /* re-filter now that we have potentially marked up flags */
- AmiDisableSel(TRUE);
- AmiLock();
- DataRebuildFilters();
- if (autosort == TRUE && !IsListEmpty(&sortfields))
- DataSortFilter((filterNode *)filtered.mlh_Head,
- (filterNode *)filtered.mlh_TailPred,
- (sortNode *)sortfields.lh_Head);
- RegNewFilter();
-
- /* update the filter balance */
- DataFilterBalance(&filtered);
- DataBuildBal(usrAccount.decimal,&filtAmnt,filtStr);
- AmiUpdateFilt(filtStr);
-
- AmiUnlock();
- }
-
- return;
- }
-
- /***************************************************
- * RecHandleGadget()
- *
- * Handles gadget events for this panel
- ****************************************************/
- BOOL RecHandleGadget(struct IntuiMessage *imsg)
- {
- BOOL done = FALSE;
- struct Gadget *gad = (struct Gadget *)(imsg->IAddress);
- UWORD code = imsg->Code;
-
- char amntstr[AMNTSIZE+1];
-
- switch (gad->GadgetID) {
-
- case GID_RCPCANCEL:
- done = TRUE;
- break;
-
- case GID_RCPOK:
- amiChangedItems = TRUE;
- amntState.stateAmnt = DataReconcile(TRUE);
- DataBuildBal(usrAccount.decimal,&amntState.stateAmnt,amntstr);
- AmiUpdateState(amntstr);
-
- done= doit= TRUE;
- break;
- }
-
- return (done);
- }
-
- /****************************************************
- * RecInit()
- *
- * Set up some globals
- *****************************************************/
- void RecInit(void)
- {
- balanceType bal;
-
- bal = DataReconcile(FALSE);
- DataBuildBal(usrAccount.decimal,&bal,recstr);
-
- /* initialize our amount */
- GF_SetGadgetAttrs (recGUI, RCP_RecSpecs[GID_RCPCURR]->gs_Gadget,
- GTTX_Text, recstr,
- TAG_DONE);
-
- }
-