home *** CD-ROM | disk | FTP | other *** search
- /* enterPanel.c
- *
- * defines the GUIFront characteristics of the data-entry panel
- */
-
- #include <stdio.h>
- #include <intuition/gadgetclass.h>
- #include <clib/intuition_protos.h>
- #include "amiCheck.h"
- #include "dataBase.h"
- #include "enterPanel.h"
- #include "qdatePanel.h"
- #include "qmemoPanel.h"
- #include "qnamePanel.h"
- #include "qamntPanel.h"
- #include "regGadget.h"
- #include <string.h>
-
-
- void EntryInit(BOOL, entryNode *, BOOL *);
- BOOL EntryHandleGadget(struct IntuiMessage *);
- BOOL EntryGoodbye(struct IntuiMessage *, entryNode *);
- BOOL skipped;
-
- BOOL *deleteit;
- ExtErrorData enterExtData;
- entryNode newnode, *entryretval;
- GUIFront *entryGUI;
- static char amntstr[AMNTSIZE];
- WORD catactive;
- struct Window *myWin;
-
- /* define gadgetspec */
- GadgetSpec EPgadgetspecs[] =
- {
-
- {STRING_KIND,50,1,{0,0,0,0,"_Name",NULL,GID_EPNAME, /* 50 */
- PLACETEXT_LEFT}, strNameTags,GS_DefaultTags},
-
- {STRING_KIND,50,1,{0,0,0,0,"_Memo",NULL,GID_EPMEMO,
- PLACETEXT_LEFT}, strMemoTags,GS_DefaultTags},
-
- {STRING_KIND,10,1,{0,0,0,0,"_Amount",NULL,GID_EPAMNT, /* 10 */
- PLACETEXT_LEFT}, strAmntTags,GS_DefaultTags},
-
- {STRING_KIND,10,1,{0,0,0,0,"_Date",NULL,GID_EPDATE,
- PLACETEXT_LEFT}, strDateTags,GS_DefaultTags},
-
-
- {CHECKBOX_KIND,0,1,{0,0,0,0,"Mark _Printed",NULL,GID_EPPRINTED,
- PLACETEXT_RIGHT}, NULL,GS_DefaultTags},
-
- {CHECKBOX_KIND,0,1,{0,0,0,0,"_Tax Deductible",NULL,GID_EPTAX,
- PLACETEXT_RIGHT}, NULL,GS_DefaultTags},
-
- {CHECKBOX_KIND,0,1,{0,0,0,0,"Mark _Voided",NULL,GID_EPVOIDED,
- PLACETEXT_RIGHT}, NULL,GS_DefaultTags},
-
-
- {LISTVIEW_KIND, 30,1,{0,0,0,0,NULL,NULL,GID_EPCATEGORY,
- PLACETEXT_LEFT}, ListView, GS_DefaultTags},
-
- {INTEGER_KIND,9,1,{0,0,0,0,"Ch_eck", NULL, GID_EPNUMBER, /* 9 */
- PLACETEXT_LEFT}, strCheckTags, GS_DefaultTags },
-
- {BUTTON_KIND,0,0,{0,0,0,0,"_OK", NULL, GID_EPOK,
- PLACETEXT_IN}, NULL, GS_DefaultTags},
-
- {BUTTON_KIND,0,0,{0,0,0,0,"_Skip", NULL, GID_EPSKIP,
- PLACETEXT_IN}, NULL, GS_DefaultTags},
-
- {BUTTON_KIND,0,0,{0,0,0,0,"_Cancel", NULL, GID_EPCANCEL,
- PLACETEXT_IN}, NULL, GS_DefaultTags},
-
- {TEXT_KIND,0,0,{0,0,0,0,"Type",NULL,GID_EPTEMPLATE,
- PLACETEXT_LEFT},TxtBorder,GS_DefaultTags},
-
- {BUTTON_KIND,0,0,{0,0,0,0,"_Remove", NULL, GID_EPREMOVE,
- PLACETEXT_IN}, NULL, GS_DefaultTags},
-
- {GETALT_KIND, 0,0,{0,0,0,0,NULL,NULL,GID_EPDATELIST,
- PLACETEXT_LEFT}, MiscButton, GS_DefaultTags },
-
- {GETALT_KIND, 0,0,{0,0,0,0,NULL,NULL,GID_EPMEMOLIST,
- PLACETEXT_LEFT}, MiscButton, GS_DefaultTags },
-
- {GETALT_KIND, 0,0,{0,0,0,0,NULL,NULL,GID_EPNAMELIST,
- PLACETEXT_LEFT}, MiscButton, GS_DefaultTags },
-
- {GETALT_KIND, 0,0,{0,0,0,0,NULL,NULL,GID_EPAMNTLIST,
- PLACETEXT_LEFT}, MiscButton, GS_DefaultTags },
-
- {CHECKBOX_KIND,0,1,{0,0,0,0,"Mark C_leared",NULL,GID_EPCLEARED,
- PLACETEXT_RIGHT}, NULL,GS_DefaultTags},
-
- {STRING_KIND,0,0,{0,0,0,0,"Date Cleared",NULL,GID_EPCLEARDATE,
- PLACETEXT_LEFT},strDateTags,GS_DefaultTags},
-
- {GETALT_KIND, 0,0,{0,0,0,0,NULL,NULL,GID_EPCLEARDATEQ,
- PLACETEXT_LEFT}, MiscButton, GS_DefaultTags },
-
- {TEXT_KIND,0,0,{0,0,0,0,"% Budgeted",NULL,GID_EPBUDGETED,
- PLACETEXT_LEFT},TxtBorder,GS_DefaultTags},
-
- {GETALT_KIND, 0,0,{0,0,0,0,NULL,NULL,GID_EPBUDGET,
- PLACETEXT_LEFT}, MiscButton, GS_DefaultTags },
-
- {BUTTON_KIND,0,0,{0,0,0,0,"Address...", NULL, GID_EPADDRESS,
- PLACETEXT_IN}, NULL, GS_DefaultTags},
- };
-
- /* set up array of pointers to our specs */
- GadgetSpec *EP_EnterSpecs[] =
- {
- &EPgadgetspecs[0],
- &EPgadgetspecs[1],
- &EPgadgetspecs[2],
- &EPgadgetspecs[3],
- &EPgadgetspecs[4],
- &EPgadgetspecs[5],
- &EPgadgetspecs[6],
- &EPgadgetspecs[7],
- &EPgadgetspecs[8],
- &EPgadgetspecs[9],
- &EPgadgetspecs[10],
- &EPgadgetspecs[11],
- &EPgadgetspecs[12],
- &EPgadgetspecs[13],
- &EPgadgetspecs[14],
- &EPgadgetspecs[15],
- &EPgadgetspecs[16],
- &EPgadgetspecs[17],
- &EPgadgetspecs[18],
- &EPgadgetspecs[19],
- &EPgadgetspecs[20],
- &EPgadgetspecs[21],
- &EPgadgetspecs[22],
- &EPgadgetspecs[23],
- NULL,
- };
-
-
- /* define the layout of this panel */
- ULONG EP_EnterPanel[] =
- {
- GUIL_Flags, GUILF_PropShare | GUILF_EqualWidth,
-
- GUIL_HorizGroup, 1,
- GUIL_Flags, GUILF_PropShare, /* | GUILF_LabelAlign,*/
- GUIL_FrameType, GUILFT_Recess,
-
- GUIL_VertGroup,1,
- GUIL_HorizGroup,1,
- GUIL_VertGroup,1,
- GUIL_Flags, GUILF_LabelAlign | GUILF_EqualWidth,
-
- GUIL_GadgetSpecID, GID_EPTEMPLATE,
-
- GUIL_HorizGroup, 2,
- GUIL_Flags,GUILF_EqualSize,
-
- GUIL_GadgetSpecID, GID_EPNUMBER,
-
- GUIL_HorizGroup,0,
- GUIL_GadgetSpecID, GID_EPDATE,
- GUIL_GadgetSpecID, GID_EPDATELIST,
- TAG_DONE,
-
- GUIL_HorizGroup,0,
- GUIL_GadgetSpecID, GID_EPAMNT,
- GUIL_GadgetSpecID, GID_EPAMNTLIST,
- TAG_DONE,
- TAG_DONE,
-
- GUIL_HorizGroup,0,
- GUIL_GadgetSpecID, GID_EPNAME,
- GUIL_GadgetSpecID, GID_EPNAMELIST,
- TAG_DONE,
-
- GUIL_HorizGroup,0,
- GUIL_GadgetSpecID, GID_EPMEMO,
- GUIL_GadgetSpecID, GID_EPMEMOLIST,
- TAG_DONE,
- TAG_DONE,
-
- TAG_DONE,
-
- GUIL_HorizGroup, 1,
- GUIL_Flags, GUILF_PropShare | GUILF_EqualHeight,
-
- GUIL_VertGroup,1,
- GUIL_FrameType, GUILFT_Ridge,
- GUIL_Flags, GUILF_LabelAlign | GUILF_EqualWidth,
- GUIL_FrameHeadline, " Misc",
- #if 1
- GUIL_GadgetSpecID, GID_EPCATEGORY,
- #endif
- #if 0
-
- GUIL_VertGroup,1,
- GUIL_Flags, GUILF_LabelAlign | GUILF_EqualWidth,
- GUIL_HorizGroup,0,
- GUIL_GadgetSpecID, GID_EPCLEARDATE,
- GUIL_GadgetSpecID, GID_EPCLEARDATEQ,
- TAG_DONE,
-
- GUIL_HorizGroup, 0,
- GUIL_GadgetSpecID, GID_EPBUDGETED,
- GUIL_GadgetSpecID, GID_EPBUDGET,
- TAG_DONE,
- TAG_DONE,
-
- GUIL_GadgetSpecID, GID_EPADDRESS,
- #endif
- TAG_DONE,
-
- GUIL_VertGroup, 1,
- GUIL_FrameType, GUILFT_Ridge,
- GUIL_FrameHeadline, "Flags",
- GUIL_GadgetSpecID, GID_EPCLEARED,
- GUIL_GadgetSpecID, GID_EPTAX,
- GUIL_GadgetSpecID, GID_EPVOIDED,
- GUIL_GadgetSpecID, GID_EPPRINTED,
-
- TAG_DONE,
-
- TAG_DONE,
-
- TAG_DONE,
- TAG_DONE,
-
- GUIL_HorizGroup,1,
- GUIL_Flags, GUILF_EqualSize | GUILF_EqualWidth,
-
- GUIL_GadgetSpecID, GID_EPOK,
- GUIL_GadgetSpecID, GID_EPREMOVE,
- GUIL_GadgetSpecID, GID_EPSKIP,
- GUIL_GadgetSpecID, GID_EPCANCEL,
-
- TAG_DONE,
-
- TAG_DONE,
- };
-
-
- /****************************************************************
- * EntryGUI()
- *
- * creates gui for this panel
- ****************************************************************/
- entryNode *EntryGUI(char *title, BOOL scripted, entryNode *editnode, BOOL *del)
- {
- BOOL noreply,done = FALSE;
- UWORD ordinal;
- categoryNode *cat;
- ULONG signal;
-
- AmiLock();
-
-
- GF_SetGUIAttr(entryGUI, GUI_OpenGUI, TRUE, TAG_DONE);
- /* grab window */
- GF_GetGUIAttr(entryGUI,GUI_Window,&myWin,TAG_DONE);
- SetWindowTitles(myWin,title,(UBYTE *)-1);
- EntryInit(scripted, editnode, del);
-
- #if 0
- /* map keys to quickwindows */
- GF_SetAliasKey(entryGUI,0x0f ,GID_EPDATELIST);
- GF_SetAliasKey(entryGUI,0x1d ,GID_EPAMNTLIST);
- GF_SetAliasKey(entryGUI,0x1e ,GID_EPNAMELIST);
- GF_SetAliasKey(entryGUI,0x1f ,GID_EPMEMOLIST);
- #endif
-
-
- /* Process input events */
- while (!done)
- {
- struct IntuiMessage *imsg;
-
- /* Wait for an event to occur */
-
- signal = GF_Wait(guiapp,AmigaGuideSignal(agc));
- if (signal & AmigaGuideSignal(agc)) {
- AmiHelpMsg();
- continue;
- }
-
- /* 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.
- */
-
- while (imsg = GF_GetIMsg(guiapp))
- {
- noreply = TRUE;
- switch (imsg->Class) {
- case IDCMP_REFRESHWINDOW:
- RegRefresh(TRUE);
- break;
-
- case IDCMP_CLOSEWINDOW:
- entryretval = NULL;
- done = TRUE;
- break;
-
- case IDCMP_RAWKEY:
- if (GF_ProcessListView(entryGUI,EP_EnterSpecs[GID_EPCATEGORY],
- imsg,&ordinal)) {
- catactive = ordinal;
- cat = (categoryNode *)DataOrd2Node(&categories,catactive);
- strncpy(newnode.category,cat->node.ln_Name,CATNAMESIZE);
- }
- else AmiHelpKey(imsg,ENTRY_PANEL);
- break;
-
- case IDCMP_GADGETUP:
- done=EntryHandleGadget(imsg);
- noreply = FALSE;
- break;
- }
-
- catactive = ordinal;
- if (noreply) GF_ReplyIMsg(imsg);
- }
- }
-
- #if 1
- GF_SetGadgetAttrs (entryGUI, EP_EnterSpecs[GID_EPCATEGORY]->gs_Gadget,
- GTLV_Labels, ~0,
- TAG_DONE);
- #endif
-
- GF_SetGUIAttr(entryGUI, GUI_OpenGUI, FALSE, TAG_DONE);
- AmiUnlock();
-
- return (entryretval);
- }
-
- /*********************************************************************
- * EntryInit()
- *
- * Initializes this panel
- **********************************************************************/
- void EntryInit(BOOL scripted, entryNode *edit, BOOL *del)
- {
- char strdate[DATESIZE];
- templateNode *curr;
- entryNode *data;
-
- /* grab window */
- GF_GetGUIAttr(entryGUI,GUI_Window,&myWin,TAG_DONE);
-
- deleteit = del;
- *deleteit = FALSE;
-
- GF_SetGadgetAttrs(entryGUI,EP_EnterSpecs[GID_EPSKIP]->gs_Gadget,
- GA_Disabled,!scripted,
- TAG_DONE);
-
- if (edit == NULL) {
- GF_SetGadgetAttrs(entryGUI,EPgadgetspecs[GID_EPREMOVE].gs_Gadget,
- GA_Disabled,TRUE,
- TAG_DONE);
-
- /* copy template in */
- curr = (templateNode *)DataOrd2Node(&templates,amntState.currTemplate);
- data = &curr->template;
- }
- else {
- GF_SetGadgetAttrs(entryGUI,EPgadgetspecs[GID_EPREMOVE].gs_Gadget,
- GA_Disabled,FALSE,
- TAG_DONE);
-
- data = edit;
- }
-
- memcpy(&newnode,data,sizeof(entryNode));
-
- DataBuildAmnt(FALSE,&data->amount,amntstr);
-
- /* update gfx */
- if (data->type != CHECKTYPE)
- GF_SetGadgetAttrs (entryGUI, EP_EnterSpecs[GID_EPNUMBER]->gs_Gadget,
- GA_Disabled,TRUE,
- TAG_DONE);
- else {
- if (edit == NULL) {
- GF_SetGadgetAttrs (entryGUI, EP_EnterSpecs[GID_EPNUMBER]->gs_Gadget,
- GTIN_Number, amntState.currCheckNumber,
- GA_Disabled, FALSE,
- TAG_DONE);
- newnode.check = amntState.currCheckNumber;
- }
- else
- GF_SetGadgetAttrs (entryGUI, EP_EnterSpecs[GID_EPNUMBER]->gs_Gadget,
- GTIN_Number, data->check,
- GA_Disabled, FALSE,
- TAG_DONE);
- }
-
- GF_SetGadgetAttrs (entryGUI, EP_EnterSpecs[GID_EPNAME]->gs_Gadget,
- GTST_String,data->name,
- TAG_DONE);
-
- GF_SetGadgetAttrs (entryGUI, EP_EnterSpecs[GID_EPMEMO]->gs_Gadget,
- GTST_String,data->memo,
- TAG_DONE);
-
- GF_SetGadgetAttrs (entryGUI, EP_EnterSpecs[GID_EPAMNT]->gs_Gadget,
- GTST_String,amntstr,
- TAG_DONE);
-
- GF_SetGadgetAttrs (entryGUI, EP_EnterSpecs[GID_EPPRINTED]->gs_Gadget,
- GTCB_Checked,(data->flags & PRINTED)?1:0,
- GA_Disabled, (data->type != CHECKTYPE)?TRUE:FALSE,
- TAG_DONE);
-
- GF_SetGadgetAttrs (entryGUI, EP_EnterSpecs[GID_EPCLEARED]->gs_Gadget,
- GTCB_Checked,(data->flags & CLEARED)?1:0,
- TAG_DONE);
-
- GF_SetGadgetAttrs (entryGUI, EP_EnterSpecs[GID_EPVOIDED]->gs_Gadget,
- GTCB_Checked,(data->flags & VOIDED)?1:0,
- GA_Disabled, (data->type != CHECKTYPE)?TRUE:FALSE,
- TAG_DONE);
-
- GF_SetGadgetAttrs (entryGUI, EP_EnterSpecs[GID_EPTAX]->gs_Gadget,
- GTCB_Checked,(data->flags & TAXDEDUCT)?1:0,
- TAG_DONE);
-
- catactive=DataNode2Ord(&categories,data->category);
- #if 1
- GF_SetGadgetAttrs (entryGUI, EP_EnterSpecs[GID_EPCATEGORY]->gs_Gadget,
- GTLV_Labels, &categories,
- GTLV_Selected, catactive,
- GTLV_MakeVisible, catactive,
- TAG_DONE);
- #endif
-
- if (edit == NULL) {
- /* stuff in current date */
- memcpy(&newnode.date,&currDate,sizeof(dateType));
- }
- else {
- /* stuff in old date */
- memcpy(&newnode.date,&edit->date,sizeof(dateType));
- }
- DataBuildDate(&newnode.date,strdate);
- GF_SetGadgetAttrs (entryGUI, EP_EnterSpecs[GID_EPDATE]->gs_Gadget,
- GTST_String,strdate,
- TAG_DONE);
-
- if (edit != NULL)
- curr = (templateNode *)DataOrd2Node(&templates,edit->type);
-
- GF_SetGadgetAttrs (entryGUI, EP_EnterSpecs[GID_EPTEMPLATE]->gs_Gadget,
- GTTX_Text,curr->tempname,
- TAG_DONE);
-
- entryretval = NULL;
- skipped = FALSE;
- }
-
- /***************************************************
- * EntryHandleGadget()
- *
- * Handles gadget events for this panel
- ****************************************************/
- BOOL EntryHandleGadget(struct IntuiMessage *imsg)
- {
- categoryNode *cat;
- nameNode *dn;
- amntNode *da;
- memoNode *dm;
- struct Gadget *gad = (struct Gadget *)(imsg->IAddress);
- UWORD code = imsg->Code;
- BOOL done = FALSE;
- struct EasyStruct es;
- struct Window *win = NULL;
- static char newamntstr[AMNTSIZE], newdatestr[DATESIZE];
-
- switch (gad->GadgetID) {
- case GID_EPDATELIST:
- if (QDateGUI(((struct StringInfo *)(EP_EnterSpecs[GID_EPDATE]->gs_Gadget)->SpecialInfo)->Buffer)) {
- memcpy(&newnode.date,&edate,sizeof(dateType));
- DataBuildDate(&edate,newdatestr);
-
- GF_SetGadgetAttrs(entryGUI,EP_EnterSpecs[GID_EPDATE]->gs_Gadget,
- GTST_String,newdatestr,
- TAG_DONE);
- }
- break;
-
- case GID_EPMEMOLIST:
- if (QMemoGUI(entryGUI)) {
- dm=(memoNode*)DataOrd2Node(&memolist,qmemoSel);
- strcpy(newnode.memo,dm->memoStr);
- GF_SetGadgetAttrs(entryGUI,EP_EnterSpecs[GID_EPMEMO]->gs_Gadget,
- GTST_String,newnode.memo,
- TAG_DONE);
- }
- break;
-
- case GID_EPNAMELIST:
- if (QNameGUI(entryGUI)) {
- dn=(nameNode*)DataOrd2Node(&namelist,qnameSel);
- strcpy(newnode.name,dn->nameStr);
- GF_SetGadgetAttrs(entryGUI,EP_EnterSpecs[GID_EPNAME]->gs_Gadget,
- GTST_String,newnode.name,
- TAG_DONE);
- }
- break;
-
- case GID_EPAMNTLIST:
- if (QAmntGUI(entryGUI)) {
- da=(amntNode*)DataOrd2Node(&amntlist,qamntSel);
- strcpy(newamntstr,da->amntStr);
- GF_SetGadgetAttrs(entryGUI,EP_EnterSpecs[GID_EPAMNT]->gs_Gadget,
- GTST_String,newamntstr,
- TAG_DONE);
- }
- break;
-
- case GID_EPCATEGORY:
- catactive = code;
- cat = (categoryNode *)DataOrd2Node(&categories,catactive);
- strncpy(newnode.category,cat->node.ln_Name,CATNAMESIZE);
- break;
-
- case GID_EPNAME:
- strncpy(newnode.name,((struct StringInfo *)gad->SpecialInfo)->Buffer, STRINGSIZE);
- break;
-
- case GID_EPMEMO:
- strncpy(newnode.memo,((struct StringInfo *)gad->SpecialInfo)->Buffer, STRINGSIZE);
- break;
-
- case GID_EPAMNT:
- /* special case return early.... activated gadget */
- if (!DataVerifyAmnt(((struct StringInfo*)gad->SpecialInfo)->Buffer,newamntstr) ) {
- DisplayBeep(myWin->WScreen);
- DataAnnounceAmount(entryGUI);
- GF_ReplyIMsg(imsg);
- DataSitNSpin(EP_EnterSpecs[GID_EPAMNT]->gs_Gadget,myWin);
- return (done);
- }
- else {
- DataStoreAmnt(&newnode.amount,newamntstr );
- DataBuildAmnt(FALSE,&newnode.amount,newamntstr);
- GF_SetGadgetAttrs(entryGUI,EP_EnterSpecs[GID_EPAMNT]->gs_Gadget,
- GTST_String,newamntstr,
- TAG_DONE);
- }
- break;
-
- case GID_EPDATE:
- /* special case return early.... activated gadget */
- if (!DataVerifyDate(((struct StringInfo*)gad->SpecialInfo)->Buffer,newdatestr) ) {
- DisplayBeep(myWin->WScreen);
- DataAnnounceDate(entryGUI);
- GF_ReplyIMsg(imsg);
- DataSitNSpin(EP_EnterSpecs[GID_EPDATE]->gs_Gadget,myWin);
- return (done);
- }
- else {
- DataStoreDate(&newnode.date,newdatestr );
- GF_SetGadgetAttrs(entryGUI,EP_EnterSpecs[GID_EPDATE]->gs_Gadget,
- GTST_String,newdatestr,
- TAG_DONE);
- }
- break;
-
- case GID_EPVOIDED:
- if (code)
- newnode.flags |= VOIDED;
- else newnode.flags &= ~VOIDED;
- break;
-
- case GID_EPCLEARED:
- if (code)
- newnode.flags |= CLEARED;
- else newnode.flags &= ~CLEARED;
- break;
-
- case GID_EPPRINTED:
- if (code)
- newnode.flags |= PRINTED;
- else newnode.flags &= ~PRINTED;
- break;
-
- case GID_EPTAX:
- if (code)
- newnode.flags |= TAXDEDUCT;
- else newnode.flags &= ~TAXDEDUCT;
- break;
-
- case GID_EPNUMBER:
- newnode.check =(UWORD)((struct StringInfo*)gad->SpecialInfo)->LongInt;
- break;
-
- case GID_EPSKIP:
- skipped = TRUE;
- /* fall through */
- case GID_EPCANCEL:
- entryretval = NULL;
- done=TRUE;
- break;
-
- case GID_EPREMOVE:
- /* why don't we first make _sure_ */
- es.es_StructSize = sizeof(struct EasyStruct);
- es.es_Flags = 0;
- es.es_Title = "amiCheck NOTICE:";
- es.es_TextFormat = "Are you sure you wish\nto delete this transaction?";
- es.es_GadgetFormat = "OK|Cancel";
-
- GF_GetGUIAttr(gui,
- GUI_Window,&win,
- TAG_DONE);
-
- GF_LockGUI(entryGUI);
- if (GF_EasyRequest(gui,win,&es,NULL) != FALSE) {
-
- *deleteit = TRUE;
- entryretval = NULL;
- done = TRUE;
- }
- GF_UnlockGUI(entryGUI);
- break;
-
- case GID_EPOK:
- if (EntryGoodbye(imsg, &newnode)) {
- amiChangedItems = TRUE;
- if (newnode.type == CHECKTYPE)
- amntState.currCheckNumber = newnode.check + 1;
- entryretval = &newnode;
- done = TRUE;
- QDateAdd(&newnode.date);
- }
- else return (FALSE);
- break;
-
- }
-
- GF_ReplyIMsg(imsg);
- return (done);
- }
-
- /*****************************************************
- * EntryGoodbye()
- *
- * Checks for invalid strings
- ******************************************************/
- BOOL EntryGoodbye(struct IntuiMessage *imsg, entryNode *temp)
- {
- char *grab;
- char newamntstr[AMNTSIZE+1];
- char newdatestr[DATESIZE+1];
-
- /* check for "special" entries */
- grab = ((struct StringInfo *)(EP_EnterSpecs[GID_EPDATE]->gs_Gadget)->SpecialInfo)->Buffer;
- if (!DataVerifyDate(grab,newdatestr) ) {
- DisplayBeep(myWin->WScreen);
- DataAnnounceDate(entryGUI);
- GF_ReplyIMsg(imsg);
- DataSitNSpin(EP_EnterSpecs[GID_EPDATE]->gs_Gadget,myWin);
- return (FALSE);
- }
- else {
- DataStoreDate(&temp->date,newdatestr );
- }
-
- grab = ((struct StringInfo *)(EP_EnterSpecs[GID_EPAMNT]->gs_Gadget)->SpecialInfo)->Buffer;
- if (!DataVerifyAmnt(grab,newamntstr) ) {
- DisplayBeep(myWin->WScreen);
- DataAnnounceAmount(entryGUI);
- GF_ReplyIMsg(imsg);
- DataSitNSpin(EP_EnterSpecs[GID_EPAMNT]->gs_Gadget,myWin);
- return (FALSE);
- }
- else {
- DataStoreAmnt(&temp->amount,newamntstr );
- }
-
- /* check for strange amount */
- if (temp->amount == 0) {
- DisplayBeep(myWin->WScreen);
- if (DataQuery(entryGUI,"Amount field is ZERO\nAccept this?", "OK|Cancel") == 0) {
- DataSitNSpin(EP_EnterSpecs[GID_EPAMNT]->gs_Gadget,myWin);
- return (FALSE);
- }
- }
-
-
-
- /* copy over new strings */
- grab = ((struct StringInfo *)(EP_EnterSpecs[GID_EPNAME]->gs_Gadget)->SpecialInfo)->Buffer;
- strncpy(temp->name,grab, STRINGSIZE);
-
- grab = ((struct StringInfo *)(EP_EnterSpecs[GID_EPMEMO]->gs_Gadget)->SpecialInfo)->Buffer;
- strncpy(temp->memo,grab, STRINGSIZE);
-
- temp->check= (UWORD)((struct StringInfo *)(EP_EnterSpecs[GID_EPNUMBER]->gs_Gadget)->SpecialInfo)->LongInt;
- return (TRUE);
- }
-