home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
AmigActive 6
/
AACD06.ISO
/
AACD
/
Utilities
/
amiCheck
/
Source
/
enterPanel.c
< prev
next >
Wrap
C/C++ Source or Header
|
1998-06-11
|
19KB
|
708 lines
/* 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);
}