home *** CD-ROM | disk | FTP | other *** search
- /* netPanel.c
- *
- * defines the GUIFront characteristics of the net panel
- */
-
- #include <stdio.h>
- #include <intuition/gadgetclass.h>
- #include <exec/memory.h>
- #include <clib/exec_protos.h>
- #include <clib/asl_protos.h>
- #include <libraries/asl.h>
-
- #include "amiCheck.h"
- #include "regGadget.h"
- #include "dataBase.h"
- #include "netPanel.h"
- #include <string.h>
-
- #define NETCREDIT 0
- #define NETDEBIT 1
- #define NETCURR 0
- #define NETSTATE 1
-
- #define SUMSIZE (AMNTSIZE+8)
-
- /* prototypes */
- BOOL NetHandleGadget(struct IntuiMessage *);
- BOOL NetInit(void);
- void NetDisableGads(BOOL);
- netNode *NetAddNode(netNode *);
- void NetFreeList(void);
- BOOL NetSave (char *);
- BOOL NetLoad (char *);
- void NetUpdateLocal(netNode *);
- void NetWorth(void);
-
- static char ltax[SUMSIZE],cbal[SUMSIZE],sbal[SUMSIZE];
- static char repdebit[SUMSIZE],repcredit[SUMSIZE],networth[SUMSIZE],nettax[SUMSIZE];
- static char sumtype;
- static char fname[100];
- static char localnetbal=0;
-
- struct TagItem netinserttags[] =
- {
- ASL_Hail, (ULONG)"Select Account File:",
- ASL_OKText,"OK",
- ASL_CancelText,"Cancel",
- ASL_File, (ULONG)"",
- ASL_Pattern, (ULONG)filePattern, /*"#?.AC",*/
- ASL_Dir, (ULONG)"PROGDIR:",
- ASL_FuncFlags, FILF_PATGAD,
- TAG_DONE,
- };
-
- struct FileRequester *netinsertASL = NULL;
- WORD netEntries;
- struct Window *netWin;
- struct List netList;
- ExtErrorData NetExtData;
- GUIFront *netGUI;
- WORD netlistActive;
- char nettitle[100];
- UBYTE netdecimal;
-
- /* quick configure of some gadgets */
-
- STRPTR accountlabels[] =
- {
- "Credit",
- "Debit",
- NULL,
- };
-
- STRPTR netreportlabels[] =
- {
- "Current",
- "Statement",
- NULL,
- };
-
- struct TagItem netCycleTags[] =
- {
- {GTCY_Labels, accountlabels},
- {TAG_DONE},
- };
-
- struct TagItem netrepCycleTags[] =
- {
- {GTCY_Labels, netreportlabels},
- {TAG_DONE},
- };
-
-
- /* define gadgetspec */
- GadgetSpec NETgadgetspecs[] =
- {
- {LISTVIEW_KIND,20,8, {0,0,0,0,NULL,NULL,GID_NETLIST,
- PLACETEXT_ABOVE},ListView,GS_DefaultTags},
-
- {BUTTON_KIND,0,0,{0,0,0,0,"_Open", NULL, GID_NETOPEN,
- PLACETEXT_IN}, NULL, GS_DefaultTags},
-
- {BUTTON_KIND,0,0,{0,0,0,0,"_Save", NULL, GID_NETSAVE,
- PLACETEXT_IN}, NULL, GS_DefaultTags},
-
- {BUTTON_KIND,0,0,{0,0,0,0,"Save _As", NULL, GID_NETSAVEAS,
- PLACETEXT_IN}, NULL, GS_DefaultTags},
-
- {BUTTON_KIND,0,0,{0,0,0,0,"_Insert", NULL, GID_NETNEW,
- PLACETEXT_IN}, NULL, GS_DefaultTags | GS_NoHeightExtend},
-
- {BUTTON_KIND,0,0,{0,0,0,0,"_Remove", NULL, GID_NETREMOVE,
- PLACETEXT_IN}, NULL, GS_DefaultTags | GS_NoHeightExtend},
-
- {CYCLE_KIND,0,1, {0,0,0,0,"_Type",NULL,GID_NETTYPE,
- PLACETEXT_LEFT},netCycleTags,GS_DefaultTags | GS_NoHeightExtend},
-
- {TEXT_KIND,0,0,{0,0,0,0,"Curr Bal:",NULL,GID_NETCBAL,
- PLACETEXT_LEFT},TxtZero,GS_DefaultTags},
-
- {TEXT_KIND,0,0,{0,0,0,0,"Balance:",NULL,GID_NETSBAL,
- PLACETEXT_LEFT},TxtZero,GS_DefaultTags},
-
- {CYCLE_KIND,0,1, {0,0,0,0,"_Global Type",NULL,GID_NETREPTYPE,
- PLACETEXT_LEFT},netrepCycleTags,GS_DefaultTags | GS_NoHeightExtend},
-
- {TEXT_KIND,0,0,{0,0,0,0,"Debits:",NULL,GID_NETREPDEBIT,
- PLACETEXT_LEFT},TxtZero,GS_DefaultTags},
-
- {TEXT_KIND,0,0,{0,0,0,0,"Credits:",NULL,GID_NETREPCREDIT,
- PLACETEXT_LEFT},TxtZero,GS_DefaultTags},
-
- {TEXT_KIND,0,0,{0,0,0,0,"Summary:",NULL,GID_NETWORTH,
- PLACETEXT_LEFT},TxtZero,GS_DefaultTags},
-
- {BUTTON_KIND,0,0,{0,0,0,0,"_Cancel", NULL, GID_NETCANCEL,
- PLACETEXT_IN}, NULL, GS_DefaultTags},
-
- {TEXT_KIND,0,0,{0,0,0,0,"Tax Deduct:",NULL,GID_NETTAX,
- PLACETEXT_LEFT},TxtZero,GS_DefaultTags},
-
- {TEXT_KIND,0,0,{0,0,0,0,"Balance:",NULL,GID_NETTOTAL,
- PLACETEXT_LEFT},TxtZero,GS_DefaultTags},
-
- {TEXT_KIND,0,0,{0,0,0,0,"Tax Deduct:",NULL,GID_NETLOCALTAX,
- PLACETEXT_LEFT},TxtZero,GS_DefaultTags},
-
- {CYCLE_KIND,0,1, {0,0,0,0,"_Local Type",NULL,GID_NETACCBAL,
- PLACETEXT_LEFT},netrepCycleTags,GS_DefaultTags | GS_NoHeightExtend},
-
- };
-
- /* set up array of pointers to our specs */
- GadgetSpec *NET_NetSpecs[] =
- {
- &NETgadgetspecs[0],
- &NETgadgetspecs[1],
- &NETgadgetspecs[2],
- &NETgadgetspecs[3],
- &NETgadgetspecs[4],
- &NETgadgetspecs[5],
- &NETgadgetspecs[6],
- &NETgadgetspecs[7],
- &NETgadgetspecs[8],
- &NETgadgetspecs[9],
- &NETgadgetspecs[10],
- &NETgadgetspecs[11],
- &NETgadgetspecs[12],
- &NETgadgetspecs[13],
- &NETgadgetspecs[14],
- &NETgadgetspecs[15],
- &NETgadgetspecs[16],
- &NETgadgetspecs[17],
- NULL,
- };
-
-
- /* define the layout of this panel */
- ULONG NET_NetPanel[] =
- {
- GUIL_Flags, GUILF_PropShare | GUILF_EqualWidth,
-
- GUIL_HorizGroup, 1,
- GUIL_Flags, GUILF_PropShare | GUILF_EqualHeight,
- GUIL_FrameType, GUILFT_Recess,
-
- GUIL_VertGroup,1,
- GUIL_Flags, GUILF_PropShare | GUILF_EqualWidth,
- GUIL_FrameType, GUILFT_Ridge,
- GUIL_FrameHeadline, "Accounts",
-
- GUIL_VertGroup,0,
- GUIL_Flags, GUILF_PropShare | GUILF_EqualWidth,
- GUIL_GadgetSpecID, GID_NETLIST,
-
- GUIL_HorizGroup,1,
- GUIL_Flags, GUILF_EqualShare | GUILF_EqualWidth,
-
- GUIL_GadgetSpecID, GID_NETNEW,
- GUIL_GadgetSpecID, GID_NETREMOVE,
- TAG_DONE,
- TAG_DONE,
-
- GUIL_GadgetSpecID, GID_NETTYPE,
- TAG_DONE,
-
- GUIL_VertGroup,1,
- GUIL_Flags , GUILF_PropShare | GUILF_EqualWidth,
-
- GUIL_VertGroup,0,
- GUIL_Flags, GUILF_PropShare | GUILF_EqualWidth | GUILF_LabelAlign,
- GUIL_FrameType, GUILFT_Ridge,
- GUIL_FrameHeadline, "Account Info",
-
- GUIL_GadgetSpecID, GID_NETACCBAL,
- GUIL_GadgetSpecID, GID_NETSBAL,
- GUIL_GadgetSpecID, GID_NETLOCALTAX,
- TAG_DONE,
-
- GUIL_VertGroup,0,
- GUIL_Flags, GUILF_PropShare | GUILF_EqualWidth | GUILF_LabelAlign,
- GUIL_FrameType, GUILFT_Ridge,
- GUIL_FrameHeadline, "Summary",
-
- GUIL_GadgetSpecID, GID_NETREPTYPE,
- GUIL_GadgetSpecID, GID_NETREPDEBIT,
- GUIL_GadgetSpecID, GID_NETREPCREDIT,
- GUIL_GadgetSpecID, GID_NETWORTH,
- GUIL_GadgetSpecID, GID_NETTAX,
- TAG_DONE,
- TAG_DONE,
-
-
- TAG_DONE,
-
- GUIL_HorizGroup,1,
- GUIL_Flags, GUILF_EqualSize | GUILF_EqualWidth,
-
- GUIL_GadgetSpecID, GID_NETSAVE,
- GUIL_GadgetSpecID, GID_NETSAVEAS,
- GUIL_GadgetSpecID, GID_NETOPEN,
- GUIL_GadgetSpecID, GID_NETCANCEL,
-
- TAG_DONE,
-
- TAG_DONE,
- };
-
-
- /****************************************************
- * NetGUI ()
- *
- * Creates the GUI for the Net panel.
- *****************************************************/
- void NetGUI(void)
- {
- BOOL done = FALSE;
- BOOL noreply;
- UWORD ordinal;
- ULONG signal;
- netNode *net;
-
- AmiLock();
-
- GF_SetGUIAttr(netGUI, GUI_OpenGUI, TRUE, TAG_DONE);
- /* grab window */
- GF_GetGUIAttr(netGUI,GUI_Window,&netWin,TAG_DONE);
- if (!NetInit())
- done = TRUE;
-
-
- /* 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:
- done = TRUE;
- break;
-
- case IDCMP_RAWKEY:
- AmiHelpKey(imsg,NET_PANEL);
- if (IsListEmpty(&netList))
- break;
- if (GF_ProcessListView(netGUI,NET_NetSpecs[GID_NETLIST],
- imsg,&ordinal)) {
- if (netlistActive == -1)
- NetDisableGads(FALSE);
- netlistActive = ordinal;
- net = (netNode*)DataOrd2Node(&netList,ordinal);
- NetUpdateLocal(net);
- GF_SetGadgetAttrs(netGUI,NETgadgetspecs[GID_NETTYPE].gs_Gadget,
- GTCY_Active, net->actype,
- TAG_DONE);
- }
- break;
-
- case IDCMP_GADGETUP:
- noreply = FALSE;
- done=NetHandleGadget(imsg);
- break;
- }
-
-
- if (noreply) GF_ReplyIMsg(imsg);
- }
- }
-
- GF_SetGadgetAttrs(netGUI,NETgadgetspecs[GID_NETLIST].gs_Gadget,
- GTLV_Labels, ~0,
- TAG_DONE);
-
- NetFreeList();
- GF_SetGUIAttr(netGUI, GUI_OpenGUI, FALSE, TAG_DONE);
- AmiUnlock();
- return;
- }
-
- /***************************************************
- * NetHandleGadget()
- *
- * Handles gadget events for this panel
- ****************************************************/
- BOOL NetHandleGadget(struct IntuiMessage *imsg)
- {
- BOOL done = FALSE;
- struct Gadget *gad = (struct Gadget *)(imsg->IAddress);
- UWORD code = imsg->Code;
- netNode *net,*nett,netw;
- char response[200];
-
-
- switch (gad->GadgetID) {
-
- case GID_NETACCBAL:
- localnetbal = code;
- if (netlistActive != -1) {
- net = (netNode *)DataOrd2Node(&netList,netlistActive);
- NetUpdateLocal(net);
- }
- break;
-
- case GID_NETLIST:
- if (netlistActive == -1)
- NetDisableGads(FALSE);
-
- netlistActive = code;
- net = (netNode *)DataOrd2Node(&netList,netlistActive);
- NetUpdateLocal(net);
- GF_SetGadgetAttrs(netGUI,NETgadgetspecs[GID_NETTYPE].gs_Gadget,
- GTCY_Active, net->actype,
- TAG_DONE);
- break;
-
- case GID_NETREPTYPE:
- sumtype = code;
- NetWorth();
- break;
-
- case GID_NETTYPE:
- net = (netNode *)DataOrd2Node(&netList,netlistActive);
- net->actype = code;
- GF_SetGadgetAttrs(netGUI,NETgadgetspecs[GID_NETTYPE].gs_Gadget,
- GTCY_Active, net->actype,
- TAG_DONE);
- NetWorth();
- break;
-
- case GID_NETNEW:
- GF_LockGUI(netGUI);
- if (AmiGetFile(netGUI,loadASL,fname,100)) {
- sprintf(response,"Account already loaded:[%s]\n",fname);
- if (DataIsUnique(netGUI,&netList,fname,TRUE,response) == TRUE) {
-
-
- if (DataSummarize(fname,&netw) != TRUE) {
- DisplayBeep(netWin->WScreen);
- AmiAnnounce("Encountered trouble trying to read account file.");
- }
- else {
- /* convert over to our format */
- if (netw.balances.decimal != usrAccount.decimal) {
- DataBalConvert( &netw.balances.taxdeductcurr,
- netw.balances.decimal,usrAccount.decimal);
- DataBalConvert( &netw.balances.taxdeductstate,
- netw.balances.decimal,usrAccount.decimal);
- DataBalConvert( &netw.balances.currAmnt,
- netw.balances.decimal,usrAccount.decimal);
- DataBalConvert( &netw.balances.stateAmnt,
- netw.balances.decimal,usrAccount.decimal);
- }
-
- if (netEntries == 0) {
- GF_SetGadgetAttrs(netGUI,NETgadgetspecs[GID_NETSAVEAS].gs_Gadget,
- GA_Disabled, FALSE,
- TAG_DONE);
- }
-
- GF_SetGadgetAttrs(netGUI,NETgadgetspecs[GID_NETLIST].gs_Gadget,
- GTLV_Labels, ~0,
- TAG_DONE);
-
- netw.actype = NETCREDIT;
- NetAddNode(&netw);
- netEntries++;
-
- GF_SetGadgetAttrs(netGUI,NETgadgetspecs[GID_NETLIST].gs_Gadget,
- GTLV_Labels, &netList,
- GTLV_Selected, netlistActive,
- TAG_DONE);
-
- NetWorth();
- }
- }
-
- }
- GF_UnlockGUI(netGUI);
-
- break;
-
- case GID_NETSAVE:
- if (NetSave(fname) != TRUE) {
- DisplayBeep(netWin->WScreen);
- AmiAnnounce("Encountered trouble trying to save net file.");
- }
- break;
-
- case GID_NETSAVEAS:
- GF_LockGUI(netGUI);
- if (AmiGetFile(netGUI,netsaveASL,fname,100)) {
-
- if (NetSave(fname) != TRUE) {
- DisplayBeep(netWin->WScreen);
- AmiAnnounce("Encountered trouble trying to save net file.");
- }
-
- DataAttachIcon(iconPath,"AC_NetWorth",fname);
- GF_SetGadgetAttrs(netGUI,NETgadgetspecs[GID_NETSAVE].gs_Gadget,
- GA_Disabled, FALSE,
- TAG_DONE);
-
- sprintf(nettitle,"Net Worth Analysis: %s",netsaveASL->fr_File);
- SetWindowTitles(netWin,nettitle,(UBYTE *)-1);
- }
- GF_UnlockGUI(netGUI);
-
- break;
-
- case GID_NETOPEN:
- GF_LockGUI(netGUI);
- if (AmiGetFile(netGUI,netloadASL,fname,100)) {
-
- GF_SetGadgetAttrs(netGUI,NETgadgetspecs[GID_NETLIST].gs_Gadget,
- GTLV_Labels, ~0,
- TAG_DONE);
-
- NetFreeList();
- sprintf(nettitle,"Net Worth Analysis: %s",netloadASL->fr_File);
- SetWindowTitles(netWin,nettitle,(UBYTE *)-1);
-
- if (NetLoad(fname) != TRUE) {
- DisplayBeep(netWin->WScreen);
- AmiAnnounce("Encountered trouble trying to load net file.");
- }
-
- GF_SetGadgetAttrs(netGUI,NETgadgetspecs[GID_NETSAVE].gs_Gadget,
- GA_Disabled, FALSE,
- TAG_DONE);
-
- GF_SetGadgetAttrs(netGUI,NETgadgetspecs[GID_NETSAVEAS].gs_Gadget,
- GA_Disabled, FALSE,
- TAG_DONE);
-
- GF_SetGadgetAttrs(netGUI,NETgadgetspecs[GID_NETLIST].gs_Gadget,
- GTLV_Labels, &netList,
- GTLV_Selected, ~0,
- TAG_DONE);
-
- netlistActive = -1;
- memset(&netw,0,sizeof(netNode));
- NetUpdateLocal(&netw);
- NetWorth();
- NetDisableGads(TRUE);
- }
- GF_UnlockGUI(netGUI);
- break;
-
- case GID_NETREMOVE:
- /* detach and modify list */
- GF_SetGadgetAttrs(netGUI,NETgadgetspecs[GID_NETLIST].gs_Gadget,
- GTLV_Labels, ~0,
- TAG_DONE);
-
- net = (netNode *)DataOrd2Node(&netList,netlistActive);
-
- if (net->node.ln_Succ == (struct Node *)&netList.lh_Tail)
- netlistActive--;
-
- Remove(net);
- FreeVec(net);
-
- GF_SetGadgetAttrs(netGUI,NETgadgetspecs[GID_NETLIST].gs_Gadget,
- GTLV_Labels, &netList,
- GTLV_Selected, (IsListEmpty(&netList))?~0:netlistActive,
- TAG_DONE);
-
- if (netlistActive == -1) {
- memset(&netw,0,sizeof(netNode));
- NetUpdateLocal(&netw);
- }
- else {
- nett = (netNode *)DataOrd2Node(&netList,netlistActive);
- NetUpdateLocal(nett);
- GF_SetGadgetAttrs(netGUI,NETgadgetspecs[GID_NETTYPE].gs_Gadget,
- GTCY_Active, nett->actype,
- TAG_DONE);
- }
-
- if (IsListEmpty(&netList))
- NetDisableGads(TRUE);
-
- netEntries--;
- NetWorth();
- break;
-
- case GID_NETCANCEL:
- done = TRUE;
- break;
-
- }
-
- GF_ReplyIMsg(imsg);
- return (done);
- }
-
- /****************************************************
- * NetInit()
- *
- * Set up some globals
- *****************************************************/
- BOOL NetInit(void)
- {
- amountType zero = 0;
-
- netdecimal = usrAccount.decimal;
-
- sprintf(nettitle,"Net Worth Analysis: untitled.ACnet");
- SetWindowTitles(netWin,nettitle,(UBYTE *)-1);
-
- NewList (&netList);
-
- netlistActive = -1;
- netEntries = 0;
-
- GF_SetGadgetAttrs(netGUI,NETgadgetspecs[GID_NETLIST].gs_Gadget,
- GTLV_Labels, &netList,
- GTLV_Selected,~0,
- TAG_DONE);
-
- GF_SetGadgetAttrs(netGUI,NETgadgetspecs[GID_NETSAVE].gs_Gadget,
- GA_Disabled, TRUE,
- TAG_DONE);
-
- GF_SetGadgetAttrs(netGUI,NETgadgetspecs[GID_NETSAVEAS].gs_Gadget,
- GA_Disabled, TRUE,
- TAG_DONE);
-
- sumtype = NETSTATE;
- GF_SetGadgetAttrs(netGUI,NETgadgetspecs[GID_NETREPTYPE].gs_Gadget,
- GTCY_Active, sumtype,
- TAG_DONE);
-
- localnetbal = NETSTATE;
- GF_SetGadgetAttrs(netGUI,NETgadgetspecs[GID_NETACCBAL].gs_Gadget,
- GTCY_Active, localnetbal,
- TAG_DONE);
-
- NetDisableGads(TRUE);
-
- /* clear out text gadgets */
- DataBuildAmnt(TRUE,&zero,cbal);
- DataBuildAmnt(TRUE,&zero,sbal);
- DataBuildAmnt(TRUE,&zero,ltax);
- DataBuildAmnt(TRUE,&zero,repdebit);
- DataBuildAmnt(TRUE,&zero,repcredit);
- DataBuildAmnt(TRUE,&zero,networth);
- DataBuildAmnt(TRUE,&zero,nettax);
-
- /*
- GF_SetGadgetAttrs(netGUI,NETgadgetspecs[GID_NETCBAL].gs_Gadget,
- GTTX_Text,cbal,
- TAG_DONE);
- */
-
- GF_SetGadgetAttrs(netGUI,NETgadgetspecs[GID_NETSBAL].gs_Gadget,
- GTTX_Text,sbal,
- TAG_DONE);
-
- GF_SetGadgetAttrs(netGUI,NETgadgetspecs[GID_NETLOCALTAX].gs_Gadget,
- GTTX_Text,ltax,
- TAG_DONE);
-
- GF_SetGadgetAttrs(netGUI,NETgadgetspecs[GID_NETREPCREDIT].gs_Gadget,
- GTTX_Text,repcredit,
- TAG_DONE);
-
- GF_SetGadgetAttrs(netGUI,NETgadgetspecs[GID_NETREPDEBIT].gs_Gadget,
- GTTX_Text,repdebit,
- TAG_DONE);
-
- GF_SetGadgetAttrs(netGUI,NETgadgetspecs[GID_NETWORTH].gs_Gadget,
- GTTX_Text,networth,
- TAG_DONE);
-
- GF_SetGadgetAttrs(netGUI,NETgadgetspecs[GID_NETTAX].gs_Gadget,
- GTTX_Text,nettax,
- TAG_DONE);
-
-
- return (TRUE);
- }
-
- /****************************************************
- * NetDisableGads()
- *
- * Disable/Enable extra gadgets
- *****************************************************/
- void NetDisableGads(BOOL dis)
- {
-
-
- GF_SetGadgetAttrs(netGUI,NETgadgetspecs[GID_NETREMOVE].gs_Gadget,
- GA_Disabled, dis,
- TAG_DONE);
-
- GF_SetGadgetAttrs(netGUI,NETgadgetspecs[GID_NETTYPE].gs_Gadget,
- GA_Disabled, dis,
- TAG_DONE);
-
- }
-
- /****************************************************
- * NetAddNode()
- *
- * Add a node to the net list
- *****************************************************/
- netNode *NetAddNode(netNode *net)
- {
- netNode *temp;
-
- temp = (netNode *)AllocVec(sizeof(netNode),MEMF_CLEAR);
- if (temp == NULL)
- return(NULL);
-
- memcpy(temp,net,sizeof(netNode));
- temp->node.ln_Name = temp->acname;
- AddTail(&netList,temp);
-
- return (temp);
- }
-
- /*****************************************************
- * NetFreeList()
- *
- * Free a node
- ******************************************************/
- void NetFreeList(void)
- {
- netNode *temp = (netNode*)netList.lh_Head, *next;
-
- if (IsListEmpty(&netList))
- return;
-
- while ( (next=(netNode*)temp->node.ln_Succ)) {
- FreeVec(temp);
- temp = next;
- }
- }
-
-
- /**************************************************************************
- * NetSave()
- *
- * saves a net file
- ***************************************************************************/
- BOOL NetSave (char *fname)
- {
- netNode *temp = (netNode *)netList.lh_Head, *next;
- FILE *file;
-
- if (IsListEmpty(&netList))
- return(TRUE);
-
- if ( (file = fopen(fname,"w")) == NULL)
- return (FALSE);
-
- while ( (next = (netNode *)(temp->node.ln_Succ)) ) {
- fprintf(file,"%s %s",temp->acname, (temp->actype==NETCREDIT)?"CREDIT":"DEBIT");
- if (temp->node.ln_Succ != NULL)
- fprintf(file,"\n");
- temp = next;
- }
-
- fclose(file);
- return (TRUE);
- }
-
- /**************************************************************************
- * netLoad()
- *
- * Loads a net file
- ***************************************************************************/
- BOOL NetLoad (char *fname)
- {
- char fstr[100];
- char type[100];
- char response[200];
- netNode net;
- FILE *file;
-
- NewList(&netList);
- netEntries = 0;
-
- if ( (file = fopen(fname,"r")) == NULL)
- return (FALSE);
-
- while ( fscanf(file,"%s %s",fstr,type) != EOF) {
-
- sprintf(response,"Account already loaded:[%s]\n",fstr);
- if (DataIsUnique(netGUI,&netList,fstr,TRUE,response) == TRUE) {
-
- if (DataSummarize(fstr,&net) != TRUE) {
- DisplayBeep(netWin->WScreen);
- sprintf(response,"Failed to summarize [%s]\n",fstr);
- AmiAnnounce(response);
- }
- else {
- /* convert the balances to OUR decimal format */
- if (net.balances.decimal != usrAccount.decimal) {
- DataBalConvert( &net.balances.taxdeductcurr,
- net.balances.decimal,usrAccount.decimal);
- DataBalConvert( &net.balances.taxdeductstate,
- net.balances.decimal,usrAccount.decimal);
- DataBalConvert( &net.balances.currAmnt,
- net.balances.decimal,usrAccount.decimal);
- DataBalConvert( &net.balances.stateAmnt,
- net.balances.decimal,usrAccount.decimal);
- }
-
- if (strcmpi(type,"debit") == 0)
- net.actype = NETDEBIT;
- else net.actype = NETCREDIT;
-
- NetAddNode(&net);
-
- netEntries++;
- }
- }
- }
-
- fclose(file);
- return (TRUE);
- }
-
- /*****************************************************************
- * NetWorth
- *
- * Calculate total worth, update graphics
- ******************************************************************/
- void NetWorth(void)
- {
- netNode *temp = (netNode*)netList.lh_Head, *next;
- amountType zero = 0;
- balanceType repcr, repdeb, nw, nt;
-
- DataInitBal(DEPOSITTYPE,&zero,&repcr);
- DataInitBal(DEPOSITTYPE,&zero,&repdeb);
- DataInitBal(DEPOSITTYPE,&zero,&nw);
- DataInitBal(DEPOSITTYPE,&zero,&nt);
-
- if (IsListEmpty(&netList) != TRUE) {
- while ( (next=(netNode*)temp->node.ln_Succ)) {
- switch (temp->actype) {
- case NETCREDIT:
- switch (sumtype) {
- case NETCURR:
- DataBalAddBal(netdecimal, &repcr,
- &temp->balances.currAmnt, &repcr);
- DataBalAddBal(netdecimal, &nt,
- &temp->balances.taxdeductcurr, &nt);
- break;
-
- case NETSTATE:
- DataBalAddBal(netdecimal, &repcr,
- &temp->balances.stateAmnt, &repcr);
- DataBalAddBal(netdecimal, &nt,
- &temp->balances.taxdeductstate, &nt);
- break;
- }
- break;
-
- case NETDEBIT:
- switch (sumtype) {
- case NETCURR:
- DataBalAddBal(netdecimal, &repdeb,
- &temp->balances.currAmnt, &repdeb);
- DataBalAddBal(netdecimal, &nt,
- &temp->balances.taxdeductcurr, &nt);
- break;
-
- case NETSTATE:
- DataBalAddBal(netdecimal, &repdeb,
- &temp->balances.stateAmnt, &repdeb);
- DataBalAddBal(netdecimal, &nt,
- &temp->balances.taxdeductstate, &nt);
- break;
- }
- break;
- }
- temp = next;
- }
-
- repdeb.neg = !repdeb.neg;
- DataBalAddBal(netdecimal,&nw, &repcr, &repdeb);
- repdeb.neg = !repdeb.neg;
- }
-
- /* build strings */
- DataBuildBal(netdecimal,&repdeb,repdebit);
- DataBuildBal(netdecimal,&repcr,repcredit);
- DataBuildBal(netdecimal,&nw,networth);
- DataBuildBal(netdecimal,&nt,nettax);
-
- /* update gadgets */
- GF_SetGadgetAttrs(netGUI,NETgadgetspecs[GID_NETREPCREDIT].gs_Gadget,
- GTTX_Text,repcredit,
- TAG_DONE);
-
- GF_SetGadgetAttrs(netGUI,NETgadgetspecs[GID_NETREPDEBIT].gs_Gadget,
- GTTX_Text,repdebit,
- TAG_DONE);
-
- GF_SetGadgetAttrs(netGUI,NETgadgetspecs[GID_NETWORTH].gs_Gadget,
- GTTX_Text,networth,
- TAG_DONE);
-
- GF_SetGadgetAttrs(netGUI,NETgadgetspecs[GID_NETTAX].gs_Gadget,
- GTTX_Text,nettax,
- TAG_DONE);
- }
-
- /*****************************************************************
- * NetUpdateLocal
- *
- * Calcs local balances for selected account
- ******************************************************************/
- void NetUpdateLocal(netNode *net)
- {
-
- /* build strings */
- if (localnetbal == NETSTATE) {
- DataBuildBal(netdecimal,&net->balances.stateAmnt,sbal);
- DataBuildBal(netdecimal,&net->balances.taxdeductstate,ltax);
- }
- else {
- DataBuildBal(netdecimal,&net->balances.currAmnt,sbal);
- DataBuildBal(netdecimal,&net->balances.taxdeductcurr,ltax);
- }
-
- /* GF_SetGadgetAttrs(netGUI,NETgadgetspecs[GID_NETCBAL].gs_Gadget,
- GTTX_Text, cbal,
- TAG_DONE);
- */
-
- GF_SetGadgetAttrs(netGUI,NETgadgetspecs[GID_NETSBAL].gs_Gadget,
- GTTX_Text, sbal,
- TAG_DONE);
-
- GF_SetGadgetAttrs(netGUI,NETgadgetspecs[GID_NETLOCALTAX].gs_Gadget,
- GTTX_Text, ltax,
- TAG_DONE);
- }
-