home *** CD-ROM | disk | FTP | other *** search
- /************** AMICHECK main driver ****************/
-
- /* Include everything */
- #define INTUI_V36_NAMES_ONLY
- #include <dos.h> /* let us use the WBarg stuff */
- #include <stdio.h>
- #include <proto/dos.h>
- #include <proto/exec.h>
- #include <intuition/gadgetclass.h>
- #include <clib/intuition_protos.h>
- #include <clib/graphics_protos.h>
- #include <devices/inputevent.h>
- #include <clib/keymap_protos.h>
- #include <string.h>
- #include <clib/asl_protos.h>
- #include <libraries/asl.h>
- #include <fcntl.h>
- #include <clib/icon_protos.h>
- #include <intuition/pointerclass.h>
- #include <intuition/classusr.h>
- #include <clib/utility_protos.h>
-
- #include <dos/dostags.h>
-
- #include "amiCheck.h"
- #include "mainPanel.h"
- #include "regGadget.h"
- #include "libraries.h"
- #include "enterPanel.h"
- #include "seltempPanel.h"
- #include "dataBase.h"
- #include "edittempPanel.h"
- #include "filterPanel.h"
- #include "sortPanel.h"
- #include "acctPanel.h"
- #include "reconcilePanel.h"
- #include "searchPanel.h"
- #include "categoryPanel.h"
- #include "statsPanel.h"
- #include "newtempPanel.h"
- #include "reportPanel.h"
- #include "scriptPanel.h"
- #include "analysisPanel.h"
- #include "formPanel.h"
- #include "netPanel.h"
- #include "qdatePanel.h"
- #include "qmemoPanel.h"
- #include "memoPanel.h"
- #include "namePanel.h"
- #include "amntPanel.h"
- #include "qnamePanel.h"
- #include "qamntPanel.h"
- #include "impexp.h"
- #include "printPanel.h"
- #include "groupPanel.h"
- #include "arexx.h"
- #include "keyPanel.h"
- #include "budgetPanel.h"
-
- AMIGAGUIDECONTEXT agc = NULL;
- struct NewAmigaGuide newAG = {NULL};
-
- static const char *VersionString = "\0$VER:" ACVERSION " " __AMIGADATE__;
-
- STRPTR AC_AppID = "amiCheck";
-
- STRPTR AC_Version = ACVERSION,
- AC_LongDesc = "Checkbook Software",
- AC_Author = "Douglas M. Dyer",
- AC_Date = __AMIGADATE__;
-
- STRPTR AC_WindowTitle = "amiCheck";
-
- #if 0
- #ifdef AC020
- STRPTR AC_Title = "amiCheck '020 " ACVERSION " " __AMIGADATE__;
- #else
- #ifdef EVALUATION
- STRPTR AC_Title = "amiCheck " ACVERSION " [limit 30 entries/account] " __AMIGADATE__;
- #else
- STRPTR AC_Title = "amiCheck " ACVERSION " " __AMIGADATE__;
- #endif
- #endif
- #endif
-
- STRPTR AC_Title = "amiCheck " ACVERSION " " __AMIGADATE__;
- STRPTR AC_Demo = "The unregistered version is\nlimited to 30 entries.\n\nPlease see the documents for \nregistration information. Thanks!";
-
- #define DEFAULT_FILEPATTERN "#?.AC"
- #define DEFAULT_IMPORTPATTERN "#?.txt"
- #define DEFAULT_SCRIPTPATTERN "#?.ACscript"
- #define DEFAULT_NETPATTERN "#?.ACnet"
-
- /* Library bases */
- struct Library *GUIFrontBase;
-
- /* Imported from the main panel module */
-
- extern STRPTR AC_Version,
- AC_LongDesc,
- AC_Author,
- AC_Date;
-
- extern STRPTR AC_WindowTitle;
- extern STRPTR AC_AppID;
-
- extern AC_InitialOrientation;
-
- /* globals */
- char currStr[AMNTSIZE+1];
- char stateStr[AMNTSIZE+1];
- char filtStr[AMNTSIZE+1];
- char filePattern[FILEPATTERN_SIZE];
- char importPattern[FILEPATTERN_SIZE];
- char scriptPattern[FILEPATTERN_SIZE];
- char netPattern[FILEPATTERN_SIZE];
-
- /* global help links */
- __far char *guideLinks[] = {
- "LINK MAIN_PANEL",
- "LINK SELTEMP_PANEL",
- "LINK NEWTEMP_PANEL",
- "LINK EDITTEMP_PANEL",
- "LINK FILTER_PANEL",
- "LINK SORT_PANEL",
- "LINK ANALYSIS_PANEL",
- "LINK FORMS_PANEL",
- "LINK ENTRY_PANEL",
- "LINK RECONCILE_PANEL",
- "LINK ACCOUNT_PANEL",
- "LINK SEARCH_PANEL",
- "LINK CAT_PANEL",
- "LINK STATS_PANEL",
- "LINK REPORT_PANEL",
- "LINK SCRIPT_PANEL",
- "LINK QUICKMEMO_PANEL",
- "LINK QUICKDATE_PANEL",
- "LINK QUICKNAME_PANEL",
- "LINK QUICKAMNT_PANEL",
- "LINK MEMO_PANEL",
- "LINK AMNT_PANEL",
- "LINK NAME_PANEL",
- "LINK NET_PANEL",
- "LINK PRINT_PANEL",
- "LINK GROUP_PANEL",
- "LINK AREXX_PANEL",
- "LINK KEY_PANEL",
- };
-
- usrkey dummykey = {0,NULL,""};
- UBYTE dclicktype = 0;
- BOOL amigaguide = FALSE;
- BOOL bootfile = FALSE;
- BOOL layoutwarn = TRUE;
- BOOL batchmode = FALSE;
- GUIFrontApp *guiapp;
- GUIFront *gui;
- ExtErrorData exterr;
- struct InputEvent ie;
- struct Menu *menuStrip = NULL;
- extern BOOL skipped;
- char currFile[FILESIZE] = "";
- char currNode[FILESIZE];
- char *iconPath = "PROGDIR:AC_Icons/";
- char *guidePath = "PROGDIR:documents/amiCheck.guide";
- char arexxTemp[FILESIZE];
- BOOL autosort = FALSE;
- BOOL alldisabled=FALSE;
- BOOL seldone = FALSE;
- BOOL simpleRefresh = FALSE;
- ULONG amiAslHeight = 200L;
-
- char amiWindowTitle[100];
- char *quitstr = "Are you sure you want to quit amiCheck?\nAll changes to the current account will be lost.";
- char *newstr = "Are you sure you want to start a new account?\nAll changes to the current account will be lost.";
- char *openstr = "Are you sure you want to open an account?\nAll changes to the current account will be lost.";
- BOOL FALLBACK = FALSE;
-
- struct NewMenu amiMenu[] =
- {
- {NM_TITLE, "File", 0,0,0,0,},
- {NM_ITEM, "New...", "N",0,0,0,},
- {NM_ITEM, NM_BARLABEL, 0,0,0,0,},
- {NM_ITEM, "Open...", "O", 0,0,0,},
- {NM_ITEM, "Save", "S", 0,0,0,},
- {NM_ITEM, "Save and Exit", "X", 0,0,0,},
- {NM_ITEM, "Save As...", "A",0,0,0,},
- {NM_ITEM, NM_BARLABEL, 0,0,0,0,},
- {NM_ITEM, "Import", 0,0,0,0,},
- {NM_SUB, "Ascii Format...", 0,0,0,0,},
- {NM_ITEM, "Export", 0,0,0,0,},
- {NM_SUB, "Ascii Format...", 0,0,0,0,},
- {NM_ITEM, NM_BARLABEL, 0,0,0,0,},
- {NM_ITEM, "Reconcile...", ";",0,0,0,},
- {NM_ITEM, NM_BARLABEL, 0,0,0,0,},
- {NM_ITEM, "Print Checks...", "P",0,0,0,},
- {NM_ITEM, NM_BARLABEL, 0,0,0,0,},
- {NM_ITEM, "About", 0,0,0,0,},
- {NM_SUB, "Third Parties...", 0,0,0,0,},
- {NM_SUB, "amiCheck...", 0,0,0,0,},
- {NM_ITEM, "Register...", 0,0,0,0,},
- {NM_ITEM, NM_BARLABEL, 0,0,0,0,},
- {NM_ITEM, "Quit", "Q",0,0,0,},
-
-
- {NM_TITLE, "Search", 0,0,0,0,},
- {NM_ITEM, "Search...", "[",0,0,0,},
- {NM_ITEM, "Search Again", "]",0,0,0,},
- {NM_ITEM, NM_BARLABEL, 0,0,0,0,},
- {NM_ITEM, "Jump to Selected", "J",NM_ITEMDISABLED,0,0,},
-
- {NM_TITLE, "Edit", 0,0,0,0,},
- {NM_ITEM, "Quick Transaction", 0,0,0,0,},
- {NM_SUB, "Check...", "C",0,0,0,},
- {NM_SUB, "Withdrawal...", "W",0,0,0,},
- {NM_SUB, "Deposit...", "D",0,0,0,},
- {NM_SUB, "Script...", "P",0,0,0,},
- {NM_SUB, "Use Template...", "U",0,0,0,},
- {NM_ITEM, "Duplicate Entry...","E",0,0,0,},
- {NM_ITEM, "Batch Mode", "B", CHECKIT | MENUTOGGLE,0,0,},
- {NM_ITEM, NM_BARLABEL, 0,0,0,0,},
- {NM_ITEM, "Clear", "/",NM_ITEMDISABLED,0,0,},
- {NM_ITEM, "Unclear", "\\",NM_ITEMDISABLED,0,0,},
- {NM_ITEM, NM_BARLABEL, 0,0,0,0,},
- {NM_ITEM, "Apply Order...", 0,0,0,0,},
- {NM_ITEM, "Move Entry", 0,NM_ITEMDISABLED,0,0,},
- {NM_ITEM, "Unfilter Item", "L",NM_ITEMDISABLED,0,0,},
- {NM_ITEM, "Range Actions", 0,NM_ITEMDISABLED,0,0,},
- {NM_SUB, "Clear All...", 0,0,0,0,},
- {NM_SUB, "Unclear All...", 0,0,0,0,},
- {NM_SUB, NM_BARLABEL, 0,0,0,0,},
- {NM_SUB, "Mark All Deducible...", 0,0,0,0,},
- {NM_SUB, "Mark All Non-Deductible...", 0,0,0,0,},
- {NM_SUB, "Mark All Printed...",0,0,0,0,},
- {NM_SUB, "Mark All Unprinted...", 0,0,0,0,},
- {NM_SUB, NM_BARLABEL, 0,0,0,0,},
- {NM_SUB, "Void All...", 0,0,0,0,},
- {NM_SUB, "Unvoid All...", 0,0,0,0,},
- {NM_SUB, NM_BARLABEL, 0,0,0,0,},
- {NM_SUB, "Remove All...", 0,0,0,0,},
-
- {NM_ITEM, NM_BARLABEL, 0,0,0,0,},
- {NM_ITEM, "Account Info...", "I",0,0,0,},
- {NM_ITEM, "Quick Data", 0,0,0,0,},
- {NM_SUB, "Memo Editor...", 0,0,0,0,},
- {NM_SUB, "Payee Editor...", 0,0,0,0,},
- {NM_SUB, "Amounts Editor...", 0,0,0,0,},
-
-
- {NM_TITLE, "Utility", 0,0,0,0,},
- {NM_ITEM, "Report Generator...", "R",0,0,0,},
- {NM_ITEM, NM_BARLABEL, 0,0,0,0,},
- {NM_ITEM, "Script Editor...", 0,0,0,0,},
- {NM_ITEM, NM_BARLABEL, 0,0,0,0,},
- {NM_ITEM, "Net Worth...", "T",0,0,0,},
-
- {NM_TITLE, "ARexx", 0,NM_ITEMDISABLED,0,0,},
- {NM_ITEM, "Assign Macros...", "M",0,0,0,},
- {NM_ITEM, NM_BARLABEL, 0,0,0,0,},
- {NM_ITEM, arexxMacros[0].macroname, "1",0,0,0,},
- {NM_ITEM, arexxMacros[1].macroname, "2",0,0,0,},
- {NM_ITEM, arexxMacros[2].macroname, "3",0,0,0,},
- {NM_ITEM, arexxMacros[3].macroname, "4",0,0,0,},
- {NM_ITEM, arexxMacros[4].macroname, "5",0,0,0,},
- {NM_ITEM, arexxMacros[5].macroname, "6",0,0,0,},
- {NM_ITEM, arexxMacros[6].macroname, "7",0,0,0,},
- {NM_ITEM, arexxMacros[7].macroname, "8",0,0,0,},
- {NM_ITEM, arexxMacros[8].macroname, "9",0,0,0,},
- {NM_ITEM, arexxMacros[9].macroname, "0",0,0,0,},
- {NM_ITEM, "Other...", 0,0,0,0,},
-
- #if 0
- {NM_ITEM, NM_BARLABEL, 0,0,0,0,},
- {NM_ITEM, "Start Recording", 0,NM_ITEMDISABLED,0,0,},
- {NM_ITEM, "Stop Recording...", 0,NM_ITEMDISABLED,0,0,},
- #endif
- {NM_ITEM, NM_BARLABEL, 0,NM_ITEMDISABLED,0,0,},
- {NM_ITEM, "Open CommandShell", 0,0,0,0,},
- {NM_ITEM, "Close CommandShell",0,0,0,0,},
-
-
- {NM_TITLE, "Preferences", 0,0,0,0,},
- {NM_ITEM, "Window", 0,0,0,0,},
- {NM_SUB, "Show Memos", "=",CHECKIT | MENUTOGGLE,0,0,},
- {NM_ITEM, "Double Click", 0,0,0,0,},
- {NM_SUB, "Edit Transaction", 0,CHECKIT | MENUTOGGLE, ~1,0,},
- {NM_SUB, "Toggle Clear", 0,CHECKIT | MENUTOGGLE, ~2,0,},
- {NM_SUB, "Unfilter", 0,CHECKIT | MENUTOGGLE, ~4,0,},
- {NM_ITEM, "Date Format", 0,0,0,0,},
- {NM_SUB, "12/31/99", 0,CHECKIT | MENUTOGGLE, ~1,0,},
- {NM_SUB, "31/12/99", 0,CHECKIT | MENUTOGGLE, ~2,0,},
- {NM_SUB, "DEC-31-99", 0,CHECKIT | MENUTOGGLE, ~4,0,},
- {NM_SUB, "31-DEC-99", 0,CHECKIT | MENUTOGGLE, ~8,0,},
- {NM_ITEM, NM_BARLABEL, 0,0,0,0,},
- {NM_ITEM, "Check Forms...", "F",0,0,0,},
-
- {NM_END, NULL, 0,0,0,0,},
- };
-
- /* "flexible" menu arrangement aid */
- #define FILETITLE 0
- #define SEARCHTITLE 1
- #define EDITTITLE 2
- #define UTILITYTITLE 3
- #define AREXXTITLE 4
- #define PREFSTITLE 5
-
- #define FILENEW 0
- #define FILEOPEN 2
- #define FILESAVE 3
- #define FILESAVEEXIT 4
- #define FILESAVEAS 5
- #define FILEIMPORT 7
- #define FILEEXPORT 8
- #define FILERECON 10
- #define FILEPRINT 12
- #define FILEABOUT 14
- #define FILEABOUTAC 1
- #define FILEABOUTPART 0
- #define FILEREGISTER 15
- #define FILEQUIT 17
-
- #define FILEIMPASCII 0
- #define FILEEXPASCII 0
-
- #define SEARCHSEARCH 0
- #define SEARCHAGAIN 1
- #define SEARCHJUMP 3
-
- #define EDITQUICK 0
- #define EDITQCHECK 0
- #define EDITQWITHDRAWAL 1
- #define EDITQDEPOSIT 2
- #define EDITQSCRIPT 3
- #define EDITQTEMPLATE 4
- #define EDITDUPLICATE 1
- #define EDITBATCH 2
- #define EDITCLEAR 4
- #define EDITUNCLEAR 5
- #define EDITAPPLYSORT 7
- #define EDITMOVE 8
- #define EDITUNFILT 9
- #define EDITRANGE 10
- #define EDITRANGECLR 0
- #define EDITRANGEUCL 1
- #define EDITRANGEDED 3
- #define EDITRANGEUND 4
- #define EDITRANGEPR 5
- #define EDITRANGEUPR 6
- #define EDITRANGEVD 8
- #define EDITRANGEUVD 9
- #define EDITRANGERM 11
- #define EDITACCT 12
- #define EDITDATA 13
- #define EDITDMEMO 0
- #define EDITDNAME 1
- #define EDITDAMNT 2
-
-
- #define UTILITYREPORT 0
- #define UTILITYSCRIPT 2
- #define UTILITYNET 4
-
- #define AREXXASSIGN 0
- #define AREXXM1 2
- #define AREXXM2 3
- #define AREXXM3 4
- #define AREXXM4 5
- #define AREXXM5 6
- #define AREXXM6 7
- #define AREXXM7 8
- #define AREXXM8 9
- #define AREXXM9 10
- #define AREXXM10 11
- #define AREXXOTHER 12
-
- #if 0
- #define AREXXBEGINREC 14
- #define AREXXENDREC 15
- #endif
-
- #define AREXXOPENCMD 14
- #define AREXXCLOSECMD 15
-
-
- #define PREFSWINDOW 0
- #define PREFSWINDOWMEMO 0
- #define PREFSDCLICK 1
- #define PREFSDCLICKE 0
- #define PREFSDCLICKC 1
- #define PREFSDCLICKU 2
- #define PREFSDATE 2
- #define PREFSDATE1 0
- #define PREFSDATE2 1
- #define PREFSDATE3 2
- #define PREFSDATE4 3
- #define PREFSFORM 4
-
- static BOOL dokey;
-
- UWORD __chip busyPointer37[] =
- {
- 0x0000,0x0000,
-
- 0x0400,0x07c0,
- 0x0000,0x07c0,
- 0x0100,0x0380,
- 0x0000,0x07e0,
- 0x07c0,0x1ff8,
- 0x1ff0,0x3fec,
- 0x3ff8,0x7fde,
- 0x3ff8,0x7fbe,
- 0x7ffc,0xff7f,
- 0x7efc,0xffff,
- 0x7ffc,0xffff,
- 0x3ff8,0x7ffe,
- 0x3ff8,0x7ffe,
- 0x1ff0,0x3ffc,
- 0x07c0,0x1ff8,
- 0x0000,0x07e0,
-
- 0x0000,0x0000,
- };
-
- UWORD __chip movePointer37[] =
- {
- 0x0000,0x0000,
-
- 0x0180,0x0180,
- 0x0f80,0x0e00,
- 0xfffc,0xf07c,
- 0x7ffc,0x8000,
- 0x0f80,0xf07c,
- 0x0180,0x0e00,
- 0x0000,0x0180,
-
- 0x0000,0x0000,
- };
-
- UWORD __chip movePointer39[2][7] = {
- {
- 0x0180,
- 0x0f80,
- 0xfffc,
- 0x7ffc,
- 0x0f80,
- 0x0180,
- 0x0000,
- },
- {
- 0x0180,
- 0x0e00,
- 0xf07c,
- 0x8000,
- 0xf07c,
- 0x0e00,
- 0x0180,
- },
- };
-
- struct BitMap ptrBM;
- APTR moveObj;
- BOOL OS39 = TRUE, moveActive = FALSE;
- filterNode *moveNode;
- WORD moveRow = -1;
-
- BOOL amidone;
-
- struct TagItem *aslTagList;
-
- struct TagItem scriptloadtags[] =
- {
- ASL_Hail, (ULONG)"Select Script File:",
- ASL_File, (ULONG)"",
- ASL_Dir, (ULONG)"PROGDIR:macros",
- ASL_Pattern, (ULONG)scriptPattern, /*"#?.ACscript",*/
- ASL_FuncFlags, FILF_PATGAD,
- TAG_DONE,
- };
-
- struct TagItem scriptsavetags[] =
- {
- ASL_Hail, (ULONG)"Save Script As:",
- ASL_File, (ULONG)"untitled.ACscript",
- ASL_Pattern,(ULONG)"~(#?.info)",
- ASL_FuncFlags, FILF_SAVE,
- ASL_Dir, (ULONG)"PROGDIR:macros",
- TAG_DONE,
- };
-
- struct TagItem rexxtags[] =
- {
- ASL_Hail, (ULONG)"Select ARexx Macro:",
- ASL_File, (ULONG)"",
- ASL_FuncFlags, FILF_PATGAD,
- ASL_Dir, (ULONG)"PROGDIR:macros",
- TAG_DONE,
- };
-
- struct TagItem loadtags[] =
- {
- ASL_Hail, (ULONG)"Open Account:",
- ASL_File, (ULONG)"",
- ASL_Pattern,(ULONG)filePattern, /*"#?.AC",*/
- ASL_FuncFlags, FILF_PATGAD,
- ASL_Dir, (ULONG)"PROGDIR:",
- TAG_DONE,
- };
-
- struct TagItem savetags[] =
- {
- ASL_Hail, (ULONG)"Save Account As:",
- ASL_File, (ULONG)"untitled.AC",
- ASL_Pattern,(ULONG)"~(#?.info)",
- ASL_Dir, (ULONG)"PROGDIR:",
- ASL_FuncFlags, FILF_SAVE,
- TAG_DONE,
- };
-
- struct TagItem impasciitags[] =
- {
- ASL_Hail, (ULONG)"Import ASCII:",
- ASL_File, (ULONG)"",
- ASL_Pattern,(ULONG)importPattern, /*"#?.txt",*/
- ASL_FuncFlags, FILF_PATGAD,
- ASL_Dir, (ULONG)"PROGDIR:",
- TAG_DONE,
- };
-
- STRPTR *demoptr;
-
- struct TagItem expasciitags[] =
- {
- ASL_Hail, (ULONG)"Export Filter as ASCII:",
- ASL_File, (ULONG)"untitled.txt",
- ASL_Pattern,(ULONG)"~(#?.info)",
- ASL_Dir, (ULONG)"PROGDIR:",
- ASL_FuncFlags, FILF_SAVE,
- TAG_DONE,
- };
-
- struct TagItem devtags[] =
- {
- ASL_Hail, (ULONG)"Select Output Device:",
- /*ASL_File, (ULONG)"",*/
- ASL_Pattern,(ULONG)"~(#?.info)",
- /*ASL_Dir, (ULONG)"PROGDIR:",*/
- ASL_FuncFlags, FILF_SAVE,
- TAG_DONE,
- };
-
- struct TagItem reporttags[] = {
- ASL_Hail, (ULONG)"Save Report To:",
- ASL_File, (ULONG)"untitled.ACreport",
- ASL_Pattern,(ULONG)"#?.ACreport",
- ASL_Dir, (ULONG)"PROGDIR:",
- ASL_FuncFlags, FILF_SAVE,
- TAG_DONE,
- };
-
-
- struct TagItem netloadtags[] =
- {
- ASL_Hail, (ULONG)"Select Summary File:",
- ASL_File, (ULONG)"",
- ASL_Pattern, (ULONG)netPattern, /*"#?.ACnet",*/
- ASL_Dir, (ULONG)"PROGDIR:",
- ASL_FuncFlags, FILF_PATGAD,
- TAG_DONE,
- };
-
- struct TagItem netsavetags[] =
- {
- ASL_Hail, (ULONG)"Save Summary As:",
- ASL_File, (ULONG)"untitled.ACnet",
- ASL_Pattern,(ULONG)"#?.ACnet",
- ASL_Dir, (ULONG)"PROGDIR:",
- ASL_FuncFlags, FILF_SAVE,
- TAG_DONE,
- };
-
- struct Window *amiWindow;
- struct FileRequester *impasciiASL = NULL, *expasciiASL = NULL;
- struct FileRequester *scriptASL = NULL, *devASL = NULL, *reportASL = NULL;
- struct FileRequester *loadASL = NULL, *scriptsaveASL = NULL;
- struct FileRequester *saveASL = NULL, *netloadASL = NULL, *netsaveASL = NULL;
- struct FileRequester *otherRexxASL = NULL;
-
- /* prototypes */
- BOOL AmiInit(void);
- void AmiShutdown(void);
- void AmiSetupMemo(void);
- void AmiHandleGadget(struct IntuiMessage *);
- void AmiHandleScript(void);
- void AmiEditEntry(void);
- void AmiProcessRawkeys(struct IntuiMessage *);
- void AmiRangeMark(long);
- BOOL AmiHandleMenu(struct IntuiMessage *);
- BOOL AmiAsk(char *);
- void AmiAbout(void);
- void AmiAboutPart(void);
- void AmiHandleGadgetDown(struct IntuiMessage *);
- void AmiSearchFail(void);
- BOOL AmiCountVerify(void);
- BOOL AmiAllocRequesters(void);
- void AmiResetBals(void);
- void AmiDisableAll(BOOL);
- void AmiParseCmd(int, char **);
- BOOL AmiOpenGUI(void);
- void AmiCloseGUI(void);
- void AmiMoveRestore(void);
- void AmiMoveActive(void);
- void AmiCheckRenumber(char,long);
- void AmiLocalMsg(struct IntuiMessage *);
- void AmiSetupDclick(void);
- void AmiSetupDate(void);
- void AmiDuplicateEntry(void);
- void AmiToggleClear(void);
- void AmiArexxMenu(void);
- void AmiApplySort(void);
- LONG AmiBaseHelp(void);
- void AmiBaseLink(char *);
- void AmiHelpMsg(void);
- void AmiRunMacro(char *fname);
-
- /* Code */
- /*********************************************************************************/
- main(int argc, char **argv)
- {
- ULONG signal, sigmask;
-
- seltempGUI = edittempGUI = newGUI = filterGUI = sortGUI = analGUI = formGUI = NULL;
- entryGUI = recGUI = acctGUI = searchGUI = catGUI = statGUI = repGUI = scriptGUI = NULL;
- qdateGUI = qmemoGUI = qamntGUI = qnameGUI = memoGUI = amntGUI = nameGUI = netGUI = NULL;
- printGUI = groupGUI = arexxGUI = keyGUI = NULL;
-
-
- /* support either command or tooltypes or wbench */
- if (argc == 0) {
- argc = _WBArgc;
- argv = _WBArgv;
- }
-
- AmiParseCmd(argc,argv);
-
- sprintf(amiWindowTitle,AC_WindowTitle);
- ptrKey = &usrKey;
-
- /* Attempt to open library */
- if (GUIFrontBase = OpenLibrary(GUIFRONTNAME, GUIFRONTVERSION))
- {
- /* Create our application anchor structure */
-
- if (guiapp = GF_CreateGUIApp(AC_AppID,
- GFA_Version, AC_Version,
- GFA_LongDesc, AC_LongDesc,
- GFA_Author, AC_Author,
- GFA_Date, AC_Date,
- TAG_DONE))
- {
-
- /* Create a gui for our application */
- TRYLABEL:
- if (gui = GF_CreateGUI(guiapp, AC_MainPanel,AC_MainSpecs,
- GUI_InitialOrientation, AC_InitialOrientation,
- GUI_ExtendedError, &exterr,
- GUI_WindowTitle, amiWindowTitle,
- GUI_OpenGUI, TRUE,
- GUI_ExtraIDCMP, IDCMP_RAWKEY|IDCMP_ACTIVEWINDOW|IDCMP_REFRESHWINDOW,
- GUI_NewMenu, amiMenu,
- GUI_ScreenTitle, AC_Title,
- TAG_DONE))
- {
- amidone = FALSE;
-
- DataListInit();
-
- /* initialize application interface */
- if (!amidone && AmiInit() != TRUE) amidone = TRUE;
-
- if (AmigaGuideBase != NULL) {
- amigaguide = TRUE;
- AmiBaseHelp();
- }
-
- AmiLock();
- KeyVerify(ptrKey);
-
- /* open panels */
- if (!amidone && AmiOpenGUI() != TRUE) amidone = TRUE;
- if (!amidone && DataInit() != TRUE) amidone = TRUE;
- if (!amidone && AnalysisSetup() != TRUE) amidone = TRUE;
-
- if (!amidone) GF_GetGUIAttr(gui,GUI_MenuStrip, &menuStrip, TAG_DONE);
- if (menuStrip == NULL) amidone = TRUE;
-
- KeyVerify(&dummykey);
-
- if (!amidone && EasyRexxBase != NULL) {
- if (axOpen() == FALSE) amidone = TRUE;
- sigmask = ER_SIGNAL(axContext);
- OnMenu(amiWindow,FULLMENUNUM(AREXXTITLE,NOITEM,NOSUB));
- sprintf(arexxTemp,"T:%s",axContext->portname);
- }
- else {
- sigmask = 0;
- axContext = NULL;
- OffMenu(amiWindow,FULLMENUNUM(AREXXTITLE,NOITEM,NOSUB));
- }
-
- /* GF_SetAliasKey(gui,0x40,GID_GETSELTYPE);*/
-
- AmiArexxMenu();
-
- demoptr = &AC_Demo;
-
- if (!amidone && bootfile)
- AmiOpen(currFile,TRUE);
-
- /* set up showMenu check */
- if (!amidone) AmiSetupMemo();
-
- if (!amidone) AmiSetupDclick();
-
- if (!amidone) AmiSetupDate();
-
- AmiUnlock();
-
- if (amidone) {
- AmiAnnounce("Failed to initialize application:\nTry a smaller font?\nTry more overscan?\nTry a proportional font (ie:helvetica)?");
- }
- else if (FALLBACK && layoutwarn)
- AmiAnnounce("Font did not fit properly:\nCompromised window layout.\n(cosmetic warning only)");
-
-
- if (!dokey) AmiAnnounce(*demoptr);
-
- /* Process input events */
- while (!amidone || (axContext && ER_SAFETOQUIT(axContext)==FALSE))
- {
- struct IntuiMessage *imsg;
-
- /* Wait for an event to occur */
-
- signal = GF_Wait(guiapp,ER_SIGNAL(axContext) | AmigaGuideSignal(agc));
-
- /* AREXX message? */
- ER_SETSIGNALS(axContext,signal);
- if (signal & ER_SIGNAL(axContext)) {
- amidone = axHandle(axContext);
- continue;
- }
-
- /* Amigaguide message? */
- else 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))
- {
- if (imsg->IDCMPWindow->UserData == seltempGUI) {
- if (selWin != NULL)
- seldone = SelTempMsg(imsg);
- }
- else if (imsg->IDCMPWindow->UserData == gui) {
- AmiLocalMsg(imsg);
- }
-
- GF_ReplyIMsg(imsg);
- }
-
- if (seldone == TRUE) {
- GF_SetGUIAttr(seltempGUI, GUI_OpenGUI, FALSE, TAG_DONE);
- selWin = NULL;
- seldone = FALSE;
- }
- }
-
- /* We're done with the GUI, so free it. GF_DestroyGUIApp
- * actually does this for us, but it still looks nicer if
- * we do it manually (I think :-)
- */
- AmiLock();
- if (amigaguide && agc) CloseAmigaGuide(agc);
- DataFreeAll();
- AmiShutdown();
- AmiUnlock();
- if (EasyRexxBase != NULL) {
- axClose();
- remove(arexxTemp);
- }
- GF_DestroyGUI(gui);
- LibClose();
- }
- else {
- Printf("Unable to create GUI (Error data: %ld.%ld)\n", exterr.ee_ErrorCode, exterr.ee_ErrorData);
-
- /* attempt to fall back */
- if (AC_MainPanel[21] == GUILF_EqualShare) {
- AC_MainPanel[21] = GUILF_PropShare;
- FALLBACK = TRUE;
- goto TRYLABEL;
- }
- }
-
- /* Destroy application anchor structure */
- GF_DestroyGUIApp(guiapp);
- }
- else
- PutStr("Unable to open guifront.library\n");
-
- CloseLibrary(GUIFrontBase);
- }
- else
- PutStr("Requires guifront.library V37+\n");
-
- }
-
- /**********************************************************
- * AmiLocalMsg()
- *
- * Handles messages from afar
- ***********************************************************/
- void AmiLocalMsg(struct IntuiMessage *imsg)
- {
- switch (imsg->Class) {
-
- case IDCMP_RAWKEY:
- AmiProcessRawkeys(imsg);
- break;
-
- case IDCMP_MENUPICK:
- amidone = AmiHandleMenu(imsg);
- break;
-
- case IDCMP_GADGETDOWN:
- AmiHandleGadgetDown(imsg);
- break;
-
- case IDCMP_MOUSEMOVE:
- RegMoveList(&filtered,imsg->Code);
- RegRefresh(FALSE);
- break;
-
- case IDCMP_CLOSEWINDOW:
- amidone = AmiAsk(quitstr);
- break;
-
- case IDCMP_GADGETUP:
- AmiHandleGadget(imsg);
- break;
-
- case IDCMP_REFRESHWINDOW:
- RegRefresh(TRUE);
- break;
-
- default:
- RegRefresh(TRUE);
- break;
- }
- }
-
- /**********************************************************
- * AmiInit()
- *
- * Initialize basic variables and images
- ***********************************************************/
- BOOL AmiInit(void)
- {
- char buffer[50];
- PrefsHandle *ph;
-
- OS39 = TRUE;
- if (LibOpen(39L) != TRUE) {
- if (LibOpen(37L) != TRUE)
- return (FALSE);
- OS39 = FALSE;
- }
-
- GF_GetGUIAttr(gui,GUI_Window,&amiWindow,TAG_DONE);
-
- if (RegInit() != TRUE) return (FALSE);
- if (AmiAllocRequesters() != TRUE) return (FALSE);
-
- GF_LockPrefsList();
- for (ph = GF_FirstPrefsNode(); ph != NULL; ph = GF_NextPrefsNode(ph)) {
- GF_CopyAppID(ph,buffer);
- if (strcmpi(buffer,AC_AppID) == 0)
- break;
- }
- if (ph == NULL)
- buffer[0]=0;
-
- GF_GetPrefsAttr (buffer,
- PRF_SimpleRefresh, &simpleRefresh,
- TAG_DONE);
-
- GF_UnlockPrefsList();
-
- if (simpleRefresh)
- simpleRefresh = TRUE;
-
-
- /* otherwise, */
- AmiDisableAll(TRUE);
-
- dokey = KeyReadFile();
-
- if (OS39) {
- InitBitMap(&ptrBM,2,16,7);
- ptrBM.Planes[0] = (char *)movePointer39[0];
- ptrBM.Planes[1] = (char *)movePointer39[1];
- moveObj = NewObject(NULL,POINTERCLASS,
- POINTERA_XOffset,0,
- POINTERA_YOffset,-3,
- POINTERA_XResolution, POINTERXRESN_HIRES,
- POINTERA_YResolution, POINTERYRESN_HIGHASPECT,
- POINTERA_BitMap, &ptrBM,
- TAG_DONE);
- }
-
- return (TRUE);
- }
-
- /**********************************************************
- * AmiShutdown()
- *
- * Quitting the application
- **********************************************************/
- void AmiShutdown(void)
- {
- if (OS39) {
- /*printf("os39 specifics\n");*/
- DisposeObject(moveObj);
- }
-
- AmiCloseGUI();
- if (scriptASL) FreeAslRequest(scriptASL);
- if (loadASL) FreeAslRequest(loadASL);
- if (saveASL) FreeAslRequest(saveASL);
- if (impasciiASL) FreeAslRequest(impasciiASL);
- if (expasciiASL) FreeAslRequest(expasciiASL);
- if (otherRexxASL) FreeAslRequest(otherRexxASL);
-
- if (aslTagList) FreeTagItems(aslTagList);
-
- RegFreeAll();
- AnalysisFree();
- }
-
- /*********************************************************
- * AmiHandleGadget()
- *
- * Handle gadget activity of this panel
- **********************************************************/
- void AmiHandleGadget( struct IntuiMessage *imsg)
- {
- struct Gadget *gad = (struct Gadget *)(imsg->IAddress);
- /*UWORD code = imsg->Code; */
-
- if (moveActive)
- AmiMoveRestore();
-
- switch (gad->GadgetID) {
-
- case GID_ANALYSIS:
- if (AnalysisGUI())
- AmiDisableSel(FALSE);
- break;
-
- case GID_SORT:
- if (SortGUI() == TRUE) {
- AmiLock();
- /*DataRebuildFilters();*/
- if (!IsListEmpty(&sortfields))
- DataSortFilter((filterNode *)filtered.mlh_Head,
- (filterNode *)filtered.mlh_TailPred,
- (sortNode *)sortfields.lh_Head);
- else DataRebuildFilters();
- RegNewFilter();
- AmiUnlock();
- }
- break;
-
- case GID_GETSELTYPE:
- SelTempGUI();
- AmiNewTemp();
- break;
-
- case GID_STATS:
- StatGUI();
- break;
-
- case GID_BUDGET:
- CatGUI();
- break;
-
- case GID_NEWTYPE:
- EditTempGUI();
-
- /* update type field */
- AmiNewTemp();
- break;
-
- case GID_FILTER:
- if (FilterGUI() == TRUE) {
- AmiLock();
- memcpy(&filterControl, &currFilter, sizeof(filterSetting));
- DataRebuildFilters();
- if (autosort == TRUE && !IsListEmpty(&sortfields))
- DataSortFilter((filterNode *)filtered.mlh_Head,
- (filterNode *)filtered.mlh_TailPred,
- (sortNode *)sortfields.lh_Head);
- RegNewFilter();
- DataFilterBalance(&filtered);
- DataBuildBal(usrAccount.decimal,&filtAmnt,filtStr);
- AmiUpdateFilt(filtStr);
- AmiUnlock();
- }
- break;
-
- case GID_EDIT:
- AmiEditEntry();
- break;
-
- #if 0
- case GID_RECONCILE:
- ReconcileGUI();
- break;
- #endif
-
- }
- }
-
- /******************************************************************
- * AmiEnterData()
- *
- * Called by seltemp
- *******************************************************************/
- void AmiEnterData(void)
- {
- entryNode *entry;
- filterNode *filt;
- BOOL del;
-
- if (entryCount >= 30)
- if (AmiCountVerify()) return;
- #ifdef EVALUATION
- if (entryCount >= 30) {
- AmiAnnounce("You have met or exceeded the evaluation\nlimit of 30 entries.\n\nPlease see the documents for registration information.\nThanks!");
- return;
- }
- #endif
- if (amntState.currTemplate == SCRIPTTYPE)
- AmiHandleScript();
- else do {
- entry = EntryGUI("Enter New Transaction",FALSE, NULL, &del);
- if (entry != NULL) {
- DataAddEntry(entry,&entries, &filt);
-
- /* update curr balance */
- if (!(entry->flags & VOIDED)) {
- DataUpdateBal(entry->type, &entry->amount,
- &amntState.currAmnt,currStr);
- AmiUpdateCurr(currStr);
- }
-
- if (filt != NULL) {
- RegAddEntry(filt);
- if ( !(entry->flags & VOIDED)) {
- DataUpdateBal(entry->type, &entry->amount,
- &filtAmnt,filtStr);
- AmiUpdateFilt(filtStr);
- }
- AmiDisableSel(TRUE);
- }
-
- memcpy(&currDate,&entry->date,sizeof(dateType));
- currCentury = entry->date.year/100;
- }
-
- } while (entry != NULL && batchmode);
-
- return;
- }
-
- /*******************************************************************
- * AmiHandleScript()
- *
- * scripting engine
- ********************************************************************/
- void AmiHandleScript(void)
- {
- char fname[FILESIZE], line[FILESIZE];
- FILE *scr;
- BOOL del = FALSE;
- entryNode *entry;
- filterNode *filt;
-
- /* open requester */
- AmiLock();
-
- if (AmiGetFile(gui,scriptASL,fname,FILESIZE)) {
-
- if ( !(scr = fopen(fname,"r")) ) {
- AmiAnnounce("Could not open script file.");
- return;
- }
-
- /*while (fscanf(scr,"%s",line) != EOF) */
- while (fgets(line,FILESIZE-1,scr) != NULL) {
- /* remove \n */
- if (strlen(line)>0)
- line[strlen(line)-1]=0;
-
- amntState.currTemplate = DataNode2Ord(&templates,line);
-
- entry = EntryGUI("Enter New Transaction", TRUE, NULL, &del);
- if (entry != NULL && !skipped) {
- DataAddEntry(entry,&entries, &filt);
-
- /* update curr balance */
- if (!(entry->flags & VOIDED)) {
- DataUpdateBal(entry->type, &entry->amount,
- &amntState.currAmnt, currStr);
- AmiUpdateCurr(currStr);
- }
-
- if (filt != NULL) {
- if ( !(entry->flags & VOIDED)) {
- DataUpdateBal(entry->type, &entry->amount,
- &filtAmnt, filtStr);
- AmiUpdateFilt(filtStr);
-
- }
- RegAddEntry(filt);
- }
-
- memcpy(&currDate,&entry->date,sizeof(dateType));
- currCentury = entry->date.year/100;
- }
-
- /* if enter data was canceled (not skipped), quit script */
- if (entry == NULL && !skipped)
- break;
- }
- /* close file */
- fclose(scr);
-
- /* return curr template to script type */
- amntState.currTemplate = SCRIPTTYPE;
- }
- AmiUnlock();
-
- }
-
- /*********************************************************************
- * AmiNewTemp
- *
- * Opens user template selection panel
- *********************************************************************/
- void AmiNewTemp(void)
- {
- templateNode *temp;
-
- /* update type field */
- temp = (templateNode *)DataOrd2Node(&templates,amntState.currTemplate);
- GF_SetGadgetAttrs(gui,gadgetspecs[GID_SELTYPE].gs_Gadget,
- GTTX_Text,temp->tempname,
- TAG_DONE);
- }
-
- /*************************************************
- * AmiProcessRawkeys
- *
- * Process the rawkeys into ansi
- **************************************************/
- void AmiProcessRawkeys(struct IntuiMessage *imsg)
- {
- static BOOL upevent = FALSE;
- static BOOL renum = FALSE;
- static long upval;
- static BOOL shift = FALSE, ctrl = FALSE;
-
-
- if (moveActive)
- AmiMoveRestore();
-
-
- /* check renumber scheme */
- if (renum && upevent && imsg->Code > 0x0 && imsg->Code < 0xA){
- if (upval == (0x4f | 0x80)) {
- AmiCheckRenumber(0,imsg->Code);
- }
-
- else if (upval == (0x4e | 0x80)) {
- AmiCheckRenumber(1,imsg->Code);
- }
-
- renum = FALSE;
- return;
- }
-
- if (upevent && imsg->Code != upval)
- return;
-
-
- upevent = FALSE;
- renum = FALSE;
-
- /* for now, use raw keys */
- switch (imsg->Code) {
- case 0x40:
- if (!alldisabled) {
- SelTempGUI();
- AmiNewTemp();
- }
- break;
-
- case 0xe1:
- case 0xe0:
- shift = FALSE;
- break;
-
- case 0x61:
- case 0x60:
- shift = TRUE;
- break;
-
- case 0xe3:
- ctrl = FALSE;
- break;
-
- case 0x63:
- ctrl = TRUE;
- break;
-
- case 0x4f:
- upevent = renum = TRUE;
- upval = imsg->Code | 0x80;
- break;
-
- case 0x4e:
- upevent = renum = TRUE;
- upval = imsg->Code | 0x80;
- break;
-
- case 0x4c:
-
- upevent = TRUE;
- upval = imsg->Code | 0x80;
- if (shift)
- RegKeyScroll(SHIFTUP);
- else if (ctrl)
- RegKeyScroll(CTRLUP);
- else
- RegKeyScroll(UP);
- break;
-
- case 0x4d:
- upevent = TRUE;
- upval = imsg->Code | 0x80;
-
- if (shift)
- RegKeyScroll(SHIFTDOWN);
- else if (ctrl)
- RegKeyScroll(CTRLDOWN);
- else
- RegKeyScroll(DOWN);
- break;
-
- case HELP_KEY:
- AmiBaseLink(guideLinks[MAIN_PANEL]);
- break;
- }
-
- #if 0
- UBYTE buffer[9];
- struct InputEvent ie;
- APTR *eventptr;
-
- ie.ie_Class = IECLASS_RAWKEY;
- ie.ie_Code = imsg->Code;
- ie.ie_Qualifier = imsg->Qualifier;
- eventptr = imsg->IAddress;
- ie.ie_EventAddress = *eventptr;
-
- x=MapRawKey(&ie, buffer, 8, NULL);
- if (x == -1)
- return;
- else if (x) {
- buffer[x]=0;
- printf("MAPS TO:[%s]:",buffer);
- for (y=0;y<x;y++)
- printf(" %x",buffer[y]);
- printf("\n");
- }
- #endif
- }
-
- /*******************************************************
- * AmiDuplicateEntry()
- *
- * Duplicate and edit current transaction
- ********************************************************/
- void AmiDuplicateEntry(void)
- {
- filterNode *find, *filt;
- entryNode *entry, orig;
- BOOL del;
-
- find = (filterNode *)DataOrd2Node((struct List *)&filtered,selRow);
- if (find == NULL) return;
- memcpy(&orig,find->entry,sizeof(entryNode));
-
- /* raise panel */
- do {
- if (orig.type == CHECKTYPE)
- orig.check = amntState.currCheckNumber;
-
- entry = EntryGUI("Duplicated Transaction",FALSE,&orig, &del);
-
- if (entry != NULL) {
- DataAddEntry(entry,&entries, &filt);
-
- /* update curr balance */
- if (!(entry->flags & VOIDED)) {
- DataUpdateBal(entry->type, &entry->amount, &amntState.currAmnt,currStr);
- AmiUpdateCurr(currStr);
- }
-
- if (filt != NULL) {
- RegAddEntry(filt);
- if ( !(entry->flags & VOIDED)) {
- DataUpdateBal(entry->type, &entry->amount, &filtAmnt, filtStr);
- AmiUpdateFilt(filtStr);
- }
- AmiDisableSel(TRUE);
- }
-
- memcpy(&currDate,&entry->date,sizeof(dateType));
- memcpy(&orig.date,&entry->date,sizeof(dateType));
- currCentury = entry->date.year/100;
- }
-
- } while (entry != NULL && batchmode);
- }
-
- /*******************************************************
- * AmiEditEntry()
- *
- * Edits an entry by poping up entry panel
- ********************************************************/
- void AmiEditEntry(void)
- {
- BOOL del;
- amountType amount;
- UBYTE type, flag;
- filterNode *find;
- entryNode *edit, *entry;
-
- find = (filterNode *)DataOrd2Node((struct List *)&filtered,selRow);
- edit = find->entry;
-
- /* lets remove its amount */
- amount = edit->amount;
- type = edit->type;
- flag = edit->flags;
-
- if ( !(flag & VOIDED) ) {
- if (edit->type != DEPOSITTYPE ) {
- DataUpdateBal(DEPOSITTYPE,&edit->amount, &amntState.currAmnt,currStr);
- DataUpdateBal(DEPOSITTYPE,&edit->amount, &filtAmnt, filtStr);
- }
- else {
- DataUpdateBal(CHECKTYPE,&edit->amount,&amntState.currAmnt,currStr);
- DataUpdateBal(CHECKTYPE,&edit->amount,&filtAmnt, filtStr);
- }
- }
- else amount = 0;
-
- /* raise panel */
- entry = EntryGUI("Edit Transaction",FALSE,edit, &del);
- if (entry != NULL ) {
- memcpy( ((char *)edit)+sizeof(struct MinNode),
- ((char *)entry)+sizeof(struct MinNode),
- sizeof(entryNode)-sizeof(struct MinNode));
-
- if (DataTestFilter(edit,&filterControl)) {
- RegRedrawSel(find);
- if ( !(edit->flags & VOIDED))
- DataUpdateBal(type,&edit->amount, &filtAmnt, filtStr);
- }
-
- else {
- DataRemoveFilter(find);
- RegRemoveSel();
- }
-
- if ( !(edit->flags & VOIDED) )
- DataUpdateBal(type,&edit->amount, &amntState.currAmnt, currStr);
-
- AmiUpdateCurr(currStr);
- AmiUpdateFilt(filtStr);
-
- memcpy(&currDate,&entry->date,sizeof(dateType));
- currCentury = entry->date.year/100;
- }
- else {
- if (del == TRUE) {
- DataRemoveEntry(edit,find);
- amiChangedItems = TRUE;
- RegRemoveSel();
- if ( !(flag & VOIDED) ) {
- AmiUpdateCurr(currStr);
- AmiUpdateFilt(filtStr);
- }
- }
-
- else {
- /* oops, stick the old one back in! */
- if ( !(flag & VOIDED) )
- DataUpdateBal(type,&amount, &amntState.currAmnt, currStr);
- DataUpdateBal(type,&amount, &filtAmnt, filtStr);
- }
- }
- }
-
- /******************************************************
- * AmiHandleMenu()
- *
- * process menu selections
- *******************************************************/
- BOOL AmiHandleMenu(struct IntuiMessage *imsg)
- {
- BOOL done = FALSE, donemenu = FALSE;
- UWORD menunum;
- UWORD row;
- UWORD title, item, sub;
- amountType amount;
- struct MenuItem *menu;
- char fname[FILESIZE+15];
- filterNode *filt;
-
- menunum = imsg->Code;
- while ( (menunum != MENUNULL) && (!donemenu) ) {
- menu = ItemAddress(menuStrip,menunum);
- title = MENUNUM(menunum);
- item = ITEMNUM(menunum);
- sub = SUBNUM(menunum);
-
- if (title == FILETITLE) {
- AmiMoveRestore();
- switch (item) {
- case FILENEW:
- if (AmiAsk(newstr)) {
-
- if (AcctGUI("New Account",TRUE) == TRUE) {
- amntState.currTemplate = CHECKTYPE;
- AmiNewTemp();
- seldone = TRUE;
- SelTempStrip();
-
- AmiLock();
- DataFreeAll();
- DataInit(); /* zeros out stuff! */
-
-
- AmiDisableSel(TRUE);
- RegNewFilter();
- AmiArexxMenu();
-
- memcpy(&usrAccount, &tempAcct, sizeof(accntState));
-
- DataUpdateBal(DEPOSITTYPE,&usrAccount.beginAmount,
- &amntState.currAmnt, currStr);
- AmiUpdateCurr(currStr);
-
- amntState.currCheckNumber = usrAccount.checknumber-1;
- sprintf(currFile,"%s","untitled.AC");
- sprintf(amiWindowTitle,"%s: %s",AC_WindowTitle,currFile);
- SetWindowTitles(amiWindow,amiWindowTitle,(UBYTE *)-1);
- AmiDisableAll(FALSE);
- OffMenu(amiWindow,FULLMENUNUM(FILETITLE,FILESAVE,NOSUB));
- OffMenu(amiWindow,FULLMENUNUM(FILETITLE,FILESAVEEXIT,NOSUB));
- DataBuildBal(usrAccount.decimal,&amntState.currAmnt,currStr);
- DataBuildBal(usrAccount.decimal,&amntState.stateAmnt,stateStr);
- DataBuildBal(usrAccount.decimal,&filtAmnt,filtStr);
- AmiUpdateCurr(currStr);
- AmiUpdateState(stateStr);
- AmiUpdateFilt(filtStr);
- amiChangedItems = TRUE;
- AmiUnlock();
- }
- }
- break;
-
- case FILEOPEN:
- AmiOpen(NULL,FALSE);
- break;
-
- case FILESAVEEXIT:
- if (AmiSave(NULL,FALSE))
- done = TRUE;
- break;
-
- case FILESAVE:
- AmiSave(NULL,FALSE);
- break;
-
- case FILESAVEAS:
- AmiSave(NULL,TRUE);
- break;
-
- case FILEPRINT:
- PrintGUI();
- break;
-
- case FILEIMPORT:
- if (entryCount >= 30)
- if (AmiCountVerify()) break;
-
- switch (sub) {
- case FILEIMPASCII:
-
- if (selRow == -1) {
- if (!DataQuery(gui,"Items will be appended to\nthe bottom of the database.",
- "OK|Cancel")) {
- break;
- }
- }
- else {
- if (!DataQuery(gui,"Items will be appended under\nthe selected transaction.",
- "OK|Cancel")) {
- break;
- }
- }
-
- AmiLock();
- if (AmiGetFile(gui,impasciiASL,fname,FILESIZE)) {
- if (ImportAscii(fname) != TRUE)
- AmiAnnounce("Problem importing file.");
- }
- AmiUnlock();
-
- break;
- }
- break;
-
- case FILEEXPORT:
- switch (sub) {
- case FILEEXPASCII:
- AmiLock();
- if (AmiGetFile(gui,expasciiASL,fname,FILESIZE)) {
- if (ExportAscii(fname) != TRUE)
- AmiAnnounce("Problem exporting file.");
- }
- AmiUnlock();
-
- break;
- }
- break;
-
-
- case FILERECON:
- ReconcileGUI();
- break;
-
- case FILEABOUT:
- switch (sub) {
- case FILEABOUTAC:
- AmiAbout();
- break;
-
- case FILEABOUTPART:
- AmiAboutPart();
- break;
- }
- break;
-
- case FILEREGISTER:
- KeyGUI();
- break;
-
- case FILEQUIT:
- done = AmiAsk(quitstr);
- break;
- }
- }
-
- else if (title == SEARCHTITLE) {
- AmiMoveRestore();
-
- switch (item) {
- case SEARCHSEARCH:
- if (SearchGUI(&row)) {
- row = DataSearchFilter(&filtered,&searchControl);
- if (row == -1) {
- /* announce to user of search failure */
- AmiSearchFail();
- }
- else {
- searchControl.lastrow = selRow = row;
- RegMoveToSel(&filtered);
- AmiDisableSel(FALSE);
- }
- }
- break;
-
- case SEARCHAGAIN:
- row = DataSearchFilter(&filtered,&searchControl);
- if (row == -1) {
- /* announce to user of search failure */
- AmiSearchFail();
- }
- else {
- searchControl.lastrow = selRow = row;
- RegMoveToSel(&filtered);
- }
- break;
-
- case SEARCHJUMP:
- if (selRow != -1)
- RegMoveToSel(&filtered);
- break;
- }
- }
-
- else if (title == EDITTITLE) {
- switch (item) {
- case EDITDATA:
- AmiMoveRestore();
- switch (sub) {
- case EDITDMEMO:
- MemoGUI();
- break;
-
- case EDITDAMNT:
- AmntGUI();
- break;
-
- case EDITDNAME:
- NameGUI();
- break;
- }
- break;
-
- case EDITQUICK:
- AmiMoveRestore();
- switch (sub) {
- case EDITQCHECK:
- amntState.currTemplate = CHECKTYPE;
- AmiNewTemp();
- AmiEnterData();
- break;
-
- case EDITQWITHDRAWAL:
- amntState.currTemplate = WITHDRAWALTYPE;
- AmiNewTemp();
- AmiEnterData();
- break;
-
- case EDITQDEPOSIT:
- amntState.currTemplate = DEPOSITTYPE;
- /* update type field */
- AmiNewTemp();
- AmiEnterData();
- break;
-
- case EDITQTEMPLATE:
- AmiEnterData();
- break;
-
- case EDITQSCRIPT:
- amntState.currTemplate = SCRIPTTYPE;
- AmiNewTemp();
- AmiEnterData();
- break;
- }
- break;
-
- case EDITBATCH:
- AmiMoveRestore();
- batchmode = !batchmode;
- break;
-
- case EDITCLEAR:
- AmiMoveRestore();
- filt = (filterNode *)DataOrd2Node((struct List *)&filtered,selRow);
- filt->entry->flags |= CLEARED;
-
- amount = filt->entry->amount;
-
- if (DataTestFilter(filt->entry,&filterControl))
- RegRedrawSel(filt);
- else {
- if ( !(filt->entry->flags & VOIDED)) {
- DataUpdateBal(
- (filt->entry->type==DEPOSITTYPE)?WITHDRAWALTYPE:DEPOSITTYPE,
- &amount, &filtAmnt, filtStr);
- AmiUpdateFilt(filtStr);
- }
- DataRemoveFilter(filt);
- RegRemoveSel();
- }
- amiChangedItems = TRUE;
- break;
-
- case EDITUNCLEAR:
- AmiMoveRestore();
- filt = (filterNode *)DataOrd2Node((struct List *)&filtered,selRow);
- filt->entry->flags &= ~CLEARED;
-
- amount = filt->entry->amount;
-
- if (DataTestFilter(filt->entry,&filterControl))
- RegRedrawSel(filt);
- else {
- if ( !(filt->entry->flags & VOIDED)) {
- DataUpdateBal(
- (filt->entry->type==DEPOSITTYPE)?WITHDRAWALTYPE:DEPOSITTYPE,
- &amount, &filtAmnt, filtStr);
- AmiUpdateFilt(filtStr);
- }
- DataRemoveFilter(filt);
- RegRemoveSel();
- }
- amiChangedItems = TRUE;
- break;
-
- case EDITDUPLICATE:
- AmiMoveRestore();
- AmiDuplicateEntry();
- break;
-
- case EDITMOVE:
- if (moveActive) {
- AmiMoveRestore();
- }
- else {
- ActivateWindow(amiWindow);
- AmiMoveActive();
- }
- break;
-
- case EDITAPPLYSORT:
- AmiApplySort();
- break;
-
- case EDITUNFILT:
- AmiMoveRestore();
- AmiLock();
- filt = (filterNode *)DataOrd2Node((struct List *)&filtered,selRow);
- amount = filt->entry->amount;
- if ( !(filt->entry->flags & VOIDED)) {
- DataUpdateBal(
- (filt->entry->type==DEPOSITTYPE)?WITHDRAWALTYPE:DEPOSITTYPE,
- &amount, &filtAmnt, filtStr);
- AmiUpdateFilt(filtStr);
- }
- DataRemoveFilter(filt);
- RegRemoveSel();
- AmiUnlock();
- break;
-
- case EDITRANGE:
- AmiMoveRestore();
- AmiRangeMark(sub);
- break;
-
- case EDITACCT:
- AmiMoveRestore();
- if (AcctGUI("Account Information",FALSE) == TRUE) {
- amount = 0;
- DataUpdateBal(DEPOSITTYPE,&amount,
- &amntState.currAmnt,currStr);
- AmiUpdateCurr(currStr);
- }
- break;
-
-
- }
- }
-
- else if (title == UTILITYTITLE) {
- AmiMoveRestore();
- switch (item) {
- case UTILITYREPORT:
- ReportGUI();
- break;
-
- case UTILITYSCRIPT:
- ScriptGUI();
- break;
-
- case UTILITYNET:
- NetGUI();
- break;
- }
- }
-
- else if (title == AREXXTITLE) {
- AmiMoveRestore();
- switch (item) {
- case AREXXASSIGN:
- if (ArexxGUI())
- AmiArexxMenu();
- break;
-
- case AREXXM1:
- AmiRunMacro(arexxMacros[0].macrofile);
- break;
-
- case AREXXM2:
- AmiRunMacro(arexxMacros[1].macrofile);
- break;
-
- case AREXXM3:
- AmiRunMacro(arexxMacros[2].macrofile);
- break;
-
- case AREXXM4:
- AmiRunMacro(arexxMacros[3].macrofile);
- break;
-
- case AREXXM5:
- AmiRunMacro(arexxMacros[4].macrofile);
- break;
-
- case AREXXM6:
- AmiRunMacro(arexxMacros[5].macrofile);
- break;
-
- case AREXXM7:
- AmiRunMacro(arexxMacros[6].macrofile);
- break;
-
- case AREXXM8:
- AmiRunMacro(arexxMacros[7].macrofile);
- break;
-
- case AREXXM9:
- AmiRunMacro(arexxMacros[8].macrofile);
- break;
-
- case AREXXM10:
- AmiRunMacro(arexxMacros[9].macrofile);
- break;
-
- case AREXXOTHER:
-
- AmiLock();
- if (AmiGetFile(gui,otherRexxASL,fname,FILESIZE)) {
- AmiUnlock();
- AmiRunMacro(fname);
- }
- else {
- AmiUnlock();
- }
-
- break;
-
- #if 0
- case AREXXBEGINREC:
- break;
-
- case AREXXENDREC:
- break;
- #endif
-
- case AREXXOPENCMD:
- axOpenCmd();
- break;
-
- case AREXXCLOSECMD:
- axCloseCmd();
- break;
- }
- }
-
- else if (title == PREFSTITLE) {
- AmiMoveRestore();
- switch (item) {
- case PREFSWINDOW:
- switch (sub) {
- case PREFSWINDOWMEMO:
- RegSwapMemo();
- break;
- }
- break;
-
- case PREFSDCLICK:
- switch (sub) {
- case PREFSDCLICKE:
- dclicktype = 0;
- break;
-
- case PREFSDCLICKC:
- dclicktype=1;
- break;
-
- case PREFSDCLICKU:
- dclicktype=2;
- break;
-
- }
- break;
-
- case PREFSDATE:
- switch (sub) {
- case PREFSDATE1:
- dateFormat = DATE_MMDDYY;
- RegResetOffsets(1);
- RegRedrawFilter(0);
- QDateNewFormat();
- break;
- case PREFSDATE2:
- dateFormat = DATE_DDMMYY;
- RegResetOffsets(1);
- RegRedrawFilter(0);
- QDateNewFormat();
- break;
- case PREFSDATE3:
- dateFormat = DATE_DEC_12;
- RegResetOffsets(1);
- RegRedrawFilter(0);
- QDateNewFormat();
- break;
- case PREFSDATE4:
- dateFormat = DATE_12_DEC;
- RegResetOffsets(1);
- RegRedrawFilter(0);
- QDateNewFormat();
- break;
- }
- break;
-
- case PREFSFORM:
- FormGUI();
- break;
- }
- }
-
- menunum = menu->NextSelect;
- }
-
- return (done);
- }
-
- /********************************************************************
- * AmiApplySort()
- *
- * Enforce current order of filter
- *********************************************************************/
- void AmiApplySort(void)
- {
- filterNode *filt = NULL;
- entryNode *last = NULL;
-
- AmiLock();
- if (!DataQuery(gui,"This will affect all filtered entries.\nAre you sure?","OK|Cancel")) {
- AmiUnlock();
- return;
- }
-
- while ( (filt = (filterNode *)DataGetNext((struct List *)&filtered,(struct Node *)filt)) != NULL) {
-
- /* first entry will be our "top" */
- if (last != NULL) {
- Remove((struct Node *)filt->entry);
- Insert((struct List *)&entries,(struct Node *)filt->entry,(struct Node *)last);
- }
-
- last = filt->entry;
- }
-
- AmiUnlock();
- }
-
- /*********************************************************************
- * AmiRangeMark()
- *
- * Mark all filtered transactions
- **********************************************************************/
- void AmiRangeMark(long item)
- {
- filterNode *filt = NULL;
- amountType amount;
-
- /* verify! */
- AmiLock();
- if (!DataQuery(gui,"This will affect all filtered entries.\nAre you sure?","OK|Cancel")) {
- AmiUnlock();
- return;
- }
-
- switch (item) {
- case EDITRANGECLR:
- while ( (filt = (filterNode *)DataGetNext((struct List *)&filtered,(struct Node *)filt)) != NULL)
- filt->entry->flags |= CLEARED;
- break;
-
- case EDITRANGEUCL:
- while ( (filt = (filterNode *)DataGetNext((struct List *)&filtered,(struct Node *)filt)) != NULL)
- filt->entry->flags &= ~CLEARED;
- break;
-
- case EDITRANGEDED:
- while ( (filt = (filterNode *)DataGetNext((struct List *)&filtered,(struct Node *)filt)) != NULL)
- filt->entry->flags |= TAXDEDUCT;
- break;
-
- case EDITRANGEUND:
- while ( (filt = (filterNode *)DataGetNext((struct List *)&filtered,(struct Node *)filt)) != NULL)
- filt->entry->flags &= ~TAXDEDUCT;
- break;
-
- case EDITRANGEPR:
- while ( (filt = (filterNode *)DataGetNext((struct List *)&filtered,(struct Node *)filt)) != NULL) {
- if (filt->entry->type != CHECKTYPE)
- continue;
-
- filt->entry->flags |= PRINTED;
- }
- break;
-
- case EDITRANGEUPR:
- while ( (filt = (filterNode *)DataGetNext((struct List *)&filtered,(struct Node *)filt)) != NULL) {
- if (filt->entry->type != CHECKTYPE)
- continue;
-
- filt->entry->flags &= ~PRINTED;
- }
- break;
-
- case EDITRANGEVD:
- while ( (filt = (filterNode *)DataGetNext((struct List *)&filtered,(struct Node *)filt)) != NULL) {
-
- if (filt->entry->type != CHECKTYPE)
- continue;
-
- amount = filt->entry->amount;
- if ( !(filt->entry->flags & VOIDED)) {
- DataUpdateBal(
- (filt->entry->type==DEPOSITTYPE)?WITHDRAWALTYPE:DEPOSITTYPE,
- &amount, &amntState.currAmnt, currStr);
- }
- filt->entry->flags |= VOIDED;
- }
- break;
-
- case EDITRANGEUVD:
- while ( (filt = (filterNode *)DataGetNext((struct List *)&filtered,(struct Node *)filt)) != NULL) {
- if (filt->entry->type != CHECKTYPE)
- continue;
-
- amount = filt->entry->amount;
- if ((filt->entry->flags & VOIDED)) {
- DataUpdateBal(
- (filt->entry->type==DEPOSITTYPE)?DEPOSITTYPE:WITHDRAWALTYPE,
- &amount, &amntState.currAmnt, currStr);
- }
- filt->entry->flags &= ~VOIDED;
- }
- break;
-
- case EDITRANGERM:
- while ( (filt = (filterNode *)DataGetNext((struct List *)&filtered,NULL)) != NULL) {
- amount = filt->entry->amount;
- if ( !(filt->entry->flags & VOIDED)) {
- DataUpdateBal(
- (filt->entry->type==DEPOSITTYPE)?WITHDRAWALTYPE:DEPOSITTYPE,
- &amount, &amntState.currAmnt, currStr);
- }
- DataRemoveEntry(filt->entry,filt);
- }
- break;
- }
-
- amiChangedItems = TRUE;
- DataUpdateFilters(&filtered);
- if (autosort == TRUE && !IsListEmpty(&sortfields))
- DataSortFilter((filterNode *)filtered.mlh_Head,
- (filterNode *)filtered.mlh_TailPred,
- (sortNode *)sortfields.lh_Head);
- RegNewFilter();
- DataFilterBalance(&filtered);
- DataBuildBal(usrAccount.decimal, &filtAmnt,filtStr);
- AmiUpdateFilt(filtStr);
- AmiUpdateCurr(currStr);
- AmiUnlock();
- }
-
- /*********************************************************************
- * AmiToggleClear()
- *
- * Toggles the clear flag of transaction
- **********************************************************************/
- void AmiToggleClear(void)
- {
- filterNode *find;
-
- find = (filterNode *)DataOrd2Node((struct List *)&filtered,selRow);
- find->entry->flags ^= CLEARED;
-
- if (DataTestFilter(find->entry,&filterControl))
- RegRedrawSel(find);
-
- else {
- if ( !(find->entry->flags & VOIDED))
- DataUpdateBal((find->entry->type==DEPOSITTYPE)?WITHDRAWALTYPE:DEPOSITTYPE,
- &find->entry->amount, &filtAmnt, filtStr);
-
- DataRemoveFilter(find);
- RegRemoveSel();
- AmiUpdateFilt(filtStr);
- }
- }
-
- /**********************************************************************
- * AmiSearchFail()
- *
- * Prompt user with search failure
- ***********************************************************************/
- void AmiSearchFail(void)
- {
- struct EasyStruct es;
- char *str = "No search matches found.";
-
- es.es_StructSize = sizeof(struct EasyStruct);
- es.es_Flags = 0;
- es.es_Title = "amiCheck NOTICE:";
- es.es_TextFormat = str;
- es.es_GadgetFormat = "OK";
- AmiLock();
- GF_EasyRequest(gui,amiWindow,&es,NULL);
- AmiUnlock();
- }
-
- /**********************************************************************
- * AmiAboutPart()
- *
- * About information! third party support
- ***********************************************************************/
- void AmiAboutPart(void)
- {
- struct EasyStruct es;
- char str[220];
-
- sprintf(str,"A big thankyou to the following\nquality third-party support:\nEasyRexx © 1994,1995 Ketil Hunn\nGuiFront © 1994 Michael Berg\n");
- es.es_StructSize = sizeof(struct EasyStruct);
- es.es_Flags = 0;
- es.es_Title = "About Third Parties:";
- es.es_TextFormat = str;
- es.es_GadgetFormat = "OK";
- AmiLock();
- GF_EasyRequest(gui,amiWindow,&es,NULL);
- AmiUnlock();
-
- }
-
- /**********************************************************************
- * AmiAbout()
- *
- * About information!
- ***********************************************************************/
- void AmiAbout(void)
- {
- struct EasyStruct es;
- #if 0
- #ifdef EVALUATION
- char *SpecialString = "Shareware EVALUATION copy.";
- #else
- char *SpecialString = "Registration ID found. Thank you!";
- #endif
- #endif
- char str[220];
-
- sprintf(str,"%s %s\nCopyright © 1995 Douglas M. Dyer\ndyer@alx.sticomet.com\n\nCheckbook software for the Amiga® computer\n\nPrinter Checks:\n1-800-336-4168 Acct#Q00305",
- AC_AppID,AC_Version);
-
- es.es_StructSize = sizeof(struct EasyStruct);
- es.es_Flags = 0;
- es.es_Title = "About amiCheck:";
- es.es_TextFormat = str;
- es.es_GadgetFormat = "OK";
- AmiLock();
- GF_EasyRequest(gui,amiWindow,&es,NULL);
- AmiUnlock();
-
- }
-
- /*********************************************************************
- * AmiAnnounce()
- *
- * Announce using a requester
- **********************************************************************/
- void AmiAnnounce(char *str)
- {
- struct EasyStruct es;
-
- es.es_StructSize = sizeof(struct EasyStruct);
- es.es_Flags = 0;
- es.es_Title = "amiCheck NOTICE:";
- es.es_TextFormat = str;
- es.es_GadgetFormat = "OK";
- AmiLock();
- GF_EasyRequest(gui,amiWindow,&es,NULL);
- AmiUnlock();
-
- }
-
- /**********************************************************************
- * AmiAsk()
- *
- * ok/cancel requester
- ***********************************************************************/
- BOOL AmiAsk(char *str)
- {
- struct EasyStruct es;
- BOOL val = TRUE;
-
- if ( amiChangedItems == TRUE) {
- es.es_StructSize = sizeof(struct EasyStruct);
- es.es_Flags = 0;
- es.es_Title = "amiCheck NOTICE:";
- es.es_TextFormat = str;
- es.es_GadgetFormat = "OK|Save First|Cancel";
- AmiLock();
- val = GF_EasyRequest(gui,amiWindow,&es,NULL);
- AmiUnlock();
-
- /* save first if asked! */
- if (val == 2) {
- if (AmiSave(NULL,FALSE))
- val--;
- }
- }
-
- return (val);
- }
-
-
- /************************************************************
- * AmiDisableSel()
- *
- * Disables items that are not needed when no item
- * is selected.
- *************************************************************/
- void AmiDisableSel(BOOL dis)
- {
- UWORD menunum1, menunum2, menunum3, menunum4, menunum5, menunum6;
- static BOOL disit = FALSE;
-
- if (dis == disit)
- return;
-
- disit = dis;
-
- /* disable menu items */
- menunum1 = FULLMENUNUM(EDITTITLE,EDITCLEAR,NOSUB);
- menunum2 = FULLMENUNUM(EDITTITLE,EDITUNCLEAR,NOSUB);
- menunum3 = FULLMENUNUM(EDITTITLE,EDITMOVE,NOSUB);
- menunum4 = FULLMENUNUM(SEARCHTITLE,SEARCHJUMP,NOSUB);
- menunum5 = FULLMENUNUM(EDITTITLE,EDITUNFILT,NOSUB);
- menunum6 = FULLMENUNUM(EDITTITLE,EDITDUPLICATE,NOSUB);
- if (dis) {
- OffMenu(amiWindow, menunum1);
- OffMenu(amiWindow, menunum2);
- OffMenu(amiWindow, menunum3);
- OffMenu(amiWindow, menunum4);
- OffMenu(amiWindow, menunum5);
- OffMenu(amiWindow, menunum6);
- }
- else {
- OnMenu(amiWindow, menunum1);
- OnMenu(amiWindow, menunum2);
- OnMenu(amiWindow, menunum3);
- OnMenu(amiWindow, menunum4);
- OnMenu(amiWindow, menunum5);
- OnMenu(amiWindow, menunum6);
- }
-
- /* disable edit button */
- GF_SetGadgetAttrs(gui,AC_MainSpecs[GID_EDIT]->gs_Gadget,
- GA_Disabled,dis,
- TAG_DONE);
-
- if (dis)
- AmiMoveRestore();
- }
-
- /************************************************************
- * AmiDisableAll()
- *
- * Disables all items - no account
- *************************************************************/
- void AmiDisableAll(BOOL dis)
- {
- alldisabled = dis;
-
- /* turn off the other stuff if this is all off */
- if (dis)
- AmiDisableSel(TRUE);
-
- /* disable gadgets */
- if (dis == TRUE)
- GF_SetGadgetAttrs(gui,AC_MainSpecs[GID_TREND]->gs_Gadget,
- GA_Disabled,dis,
- TAG_DONE);
-
- GF_SetGadgetAttrs(gui,AC_MainSpecs[GID_GETSELTYPE]->gs_Gadget,
- GA_Disabled,dis,
- TAG_DONE);
-
- /*
- GF_SetGadgetAttrs(gui,AC_MainSpecs[GID_ENTERTYPE]->gs_Gadget,
- GA_Disabled,dis,
- TAG_DONE);
- */
-
- GF_SetGadgetAttrs(gui,AC_MainSpecs[GID_NEWTYPE]->gs_Gadget,
- GA_Disabled,dis,
- TAG_DONE);
-
- GF_SetGadgetAttrs(gui,AC_MainSpecs[GID_FILTER]->gs_Gadget,
- GA_Disabled,dis,
- TAG_DONE);
-
- GF_SetGadgetAttrs(gui,AC_MainSpecs[GID_STATS]->gs_Gadget,
- GA_Disabled,dis,
- TAG_DONE);
-
- GF_SetGadgetAttrs(gui,AC_MainSpecs[GID_BUDGET]->gs_Gadget,
- GA_Disabled,dis,
- TAG_DONE);
-
- GF_SetGadgetAttrs(gui,AC_MainSpecs[GID_ANALYSIS]->gs_Gadget,
- GA_Disabled,dis,
- TAG_DONE);
-
- GF_SetGadgetAttrs(gui,AC_MainSpecs[GID_SORT]->gs_Gadget,
- GA_Disabled,dis,
- TAG_DONE);
-
-
- /* disable menu items */
- if (dis) {
- OffMenu(amiWindow,FULLMENUNUM(FILETITLE,FILESAVEEXIT,NOSUB));
- OffMenu(amiWindow,FULLMENUNUM(FILETITLE,FILESAVE,NOSUB));
- OffMenu(amiWindow,FULLMENUNUM(FILETITLE,FILESAVEAS,NOSUB));
- OffMenu(amiWindow,FULLMENUNUM(EDITTITLE,EDITQUICK,NOSUB));
- OffMenu(amiWindow,FULLMENUNUM(EDITTITLE,EDITBATCH,NOSUB));
- OffMenu(amiWindow,FULLMENUNUM(EDITTITLE,EDITAPPLYSORT,NOSUB));
- OffMenu(amiWindow,FULLMENUNUM(SEARCHTITLE,SEARCHSEARCH,NOSUB));
- OffMenu(amiWindow,FULLMENUNUM(SEARCHTITLE,SEARCHAGAIN,NOSUB));
- OffMenu(amiWindow,FULLMENUNUM(EDITTITLE,EDITRANGE,NOSUB));
- OffMenu(amiWindow,FULLMENUNUM(EDITTITLE,EDITACCT,NOSUB));
- OffMenu(amiWindow,FULLMENUNUM(UTILITYTITLE,UTILITYREPORT,NOSUB));
- OffMenu(amiWindow,FULLMENUNUM(PREFSTITLE,PREFSFORM,NOSUB));
- OffMenu(amiWindow,FULLMENUNUM(EDITTITLE,EDITDATA,NOSUB));
- OffMenu(amiWindow,FULLMENUNUM(FILETITLE,FILEIMPORT,NOSUB));
- OffMenu(amiWindow,FULLMENUNUM(FILETITLE,FILEEXPORT,NOSUB));
- OffMenu(amiWindow,FULLMENUNUM(FILETITLE,FILEPRINT,NOSUB));
- OffMenu(amiWindow,FULLMENUNUM(FILETITLE,FILERECON,NOSUB));
- OffMenu(amiWindow,FULLMENUNUM(AREXXTITLE,AREXXASSIGN,NOSUB));
- OffMenu(amiWindow,FULLMENUNUM(AREXXTITLE,AREXXM1,NOSUB));
- OffMenu(amiWindow,FULLMENUNUM(AREXXTITLE,AREXXM2,NOSUB));
- OffMenu(amiWindow,FULLMENUNUM(AREXXTITLE,AREXXM3,NOSUB));
- OffMenu(amiWindow,FULLMENUNUM(AREXXTITLE,AREXXM4,NOSUB));
- OffMenu(amiWindow,FULLMENUNUM(AREXXTITLE,AREXXM5,NOSUB));
- OffMenu(amiWindow,FULLMENUNUM(AREXXTITLE,AREXXM6,NOSUB));
- OffMenu(amiWindow,FULLMENUNUM(AREXXTITLE,AREXXM7,NOSUB));
- OffMenu(amiWindow,FULLMENUNUM(AREXXTITLE,AREXXM8,NOSUB));
- OffMenu(amiWindow,FULLMENUNUM(AREXXTITLE,AREXXM9,NOSUB));
- OffMenu(amiWindow,FULLMENUNUM(AREXXTITLE,AREXXM10,NOSUB));
-
- /* "never" turn these off */
- #if 0
- OffMenu(amiWindow,FULLMENUNUM(AREXXTITLE,AREXXOTHER,NOSUB));
- OffMenu(amiWindow,FULLMENUNUM(AREXXTITLE,AREXXOPENCMD,NOSUB));
- OffMenu(amiWindow,FULLMENUNUM(AREXXTITLE,AREXXCLOSECMD,NOSUB));
- #endif
- }
- else {
- OnMenu(amiWindow,FULLMENUNUM(FILETITLE,FILESAVE,NOSUB));
- OnMenu(amiWindow,FULLMENUNUM(FILETITLE,FILESAVEEXIT,NOSUB));
- OnMenu(amiWindow,FULLMENUNUM(FILETITLE,FILESAVEAS,NOSUB));
- OnMenu(amiWindow,FULLMENUNUM(EDITTITLE,EDITQUICK,NOSUB));
- OnMenu(amiWindow,FULLMENUNUM(EDITTITLE,EDITBATCH,NOSUB));
- OnMenu(amiWindow,FULLMENUNUM(EDITTITLE,EDITAPPLYSORT,NOSUB));
- OnMenu(amiWindow,FULLMENUNUM(SEARCHTITLE,SEARCHSEARCH,NOSUB));
- OnMenu(amiWindow,FULLMENUNUM(SEARCHTITLE,SEARCHAGAIN,NOSUB));
- OnMenu(amiWindow,FULLMENUNUM(EDITTITLE,EDITACCT,NOSUB));
- OnMenu(amiWindow,FULLMENUNUM(UTILITYTITLE,UTILITYREPORT,NOSUB));
- OnMenu(amiWindow,FULLMENUNUM(EDITTITLE,EDITRANGE,NOSUB));
- OnMenu(amiWindow,FULLMENUNUM(EDITTITLE,EDITDATA,NOSUB));
- OnMenu(amiWindow,FULLMENUNUM(FILETITLE,FILERECON,NOSUB));
- OnMenu(amiWindow,FULLMENUNUM(PREFSTITLE,PREFSFORM,NOSUB));
- OnMenu(amiWindow,FULLMENUNUM(FILETITLE,FILEPRINT,NOSUB));
- OnMenu(amiWindow,FULLMENUNUM(FILETITLE,FILEIMPORT,NOSUB));
- OnMenu(amiWindow,FULLMENUNUM(FILETITLE,FILEEXPORT,NOSUB));
- OnMenu(amiWindow,FULLMENUNUM(AREXXTITLE,AREXXASSIGN,NOSUB));
- OnMenu(amiWindow,FULLMENUNUM(AREXXTITLE,AREXXM1,NOSUB));
- OnMenu(amiWindow,FULLMENUNUM(AREXXTITLE,AREXXM2,NOSUB));
- OnMenu(amiWindow,FULLMENUNUM(AREXXTITLE,AREXXM3,NOSUB));
- OnMenu(amiWindow,FULLMENUNUM(AREXXTITLE,AREXXM4,NOSUB));
- OnMenu(amiWindow,FULLMENUNUM(AREXXTITLE,AREXXM5,NOSUB));
- OnMenu(amiWindow,FULLMENUNUM(AREXXTITLE,AREXXM6,NOSUB));
- OnMenu(amiWindow,FULLMENUNUM(AREXXTITLE,AREXXM7,NOSUB));
- OnMenu(amiWindow,FULLMENUNUM(AREXXTITLE,AREXXM8,NOSUB));
- OnMenu(amiWindow,FULLMENUNUM(AREXXTITLE,AREXXM9,NOSUB));
- OnMenu(amiWindow,FULLMENUNUM(AREXXTITLE,AREXXM10,NOSUB));
- OnMenu(amiWindow,FULLMENUNUM(AREXXTITLE,AREXXOTHER,NOSUB));
- OnMenu(amiWindow,FULLMENUNUM(AREXXTITLE,AREXXOPENCMD,NOSUB));
- OnMenu(amiWindow,FULLMENUNUM(AREXXTITLE,AREXXCLOSECMD,NOSUB));
- }
- }
-
- /*********************************************************
- * AmiHandleGadgetDown()
- *
- * Handle those down buttons
- **********************************************************/
- void AmiHandleGadgetDown(struct IntuiMessage *imsg)
- {
- struct Gadget *gad = (struct Gadget *)(imsg->IAddress);
- UWORD code = imsg->Code;
- filterNode *node;
- amountType amount;
-
- switch (gad->GadgetID) {
- case GID_REGFIELD:
- if (RegHitTest(imsg->Micros, imsg->Seconds, imsg->MouseX,imsg->MouseY)) {
- if (dclicktype == 1)
- AmiToggleClear();
-
- else if (dclicktype == 2) {
- node = (filterNode *)DataOrd2Node((struct List *)&filtered,selRow);
- amount = node->entry->amount;
- if ( !(node->entry->flags & VOIDED)) {
- DataUpdateBal(
- (node->entry->type==DEPOSITTYPE)?WITHDRAWALTYPE:DEPOSITTYPE,
- &amount, &filtAmnt, filtStr);
- AmiUpdateFilt(filtStr);
- }
- DataRemoveFilter(node);
- RegRemoveSel();
- }
-
- else AmiEditEntry();
- }
- break;
-
- case GID_REGVSCROL:
- RegMoveList(&filtered,code);
- RegRefresh(FALSE);
- break;
-
- }
- }
-
- /**********************************************************
- * AmiAllocRequesters()
- *
- * Alocates and sets up asl requestors for both loads and
- * one saveas
- ***********************************************************/
- BOOL AmiAllocRequesters(void)
- {
-
- /* allocate the generic tag list */
- aslTagList = AllocateTagItems(5);
- if (aslTagList) {
- aslTagList[0].ti_Tag = ASL_Window;
- aslTagList[0].ti_Data = (unsigned long)amiWindow;
- aslTagList[1].ti_Tag = ASL_Height;
- aslTagList[1].ti_Data = amiAslHeight;
- aslTagList[2].ti_Tag = ASL_OKText;
- aslTagList[2].ti_Data = (unsigned long)"OK";
- aslTagList[3].ti_Tag = ASL_CancelText;
- aslTagList[3].ti_Data = (unsigned long)"Cancel";
- aslTagList[4].ti_Tag = TAG_DONE;
- }
- else return (FALSE);
-
- scriptASL = (struct FileRequester *)AllocAslRequest(ASL_FileRequest,
- scriptloadtags);
- if (scriptASL == NULL)
- return (FALSE);
-
- scriptsaveASL = (struct FileRequester *)AllocAslRequest(ASL_FileRequest,
- scriptsavetags);
- if (scriptsaveASL == NULL)
- return (FALSE);
-
- otherRexxASL = (struct FileRequester *)AllocAslRequest(ASL_FileRequest,
- rexxtags);
- if (otherRexxASL == NULL)
- return (FALSE);
-
- loadASL = (struct FileRequester *)AllocAslRequest(ASL_FileRequest,
- loadtags);
- if (loadASL == NULL)
- return (FALSE);
-
- saveASL = (struct FileRequester *)AllocAslRequest(ASL_FileRequest,
- savetags);
- if (saveASL == NULL)
- return (FALSE);
-
- impasciiASL = (struct FileRequester *)AllocAslRequest(ASL_FileRequest,
- impasciitags);
- if (impasciiASL == NULL)
- return (FALSE);
-
- expasciiASL = (struct FileRequester *)AllocAslRequest(ASL_FileRequest,
- expasciitags);
- if (expasciiASL == NULL)
- return (FALSE);
-
- netsaveASL = (struct FileRequester *)AllocAslRequest(ASL_FileRequest,
- netsavetags);
- if (netsaveASL == NULL)
- return (FALSE);
-
- netloadASL = (struct FileRequester *)AllocAslRequest(ASL_FileRequest,
- netloadtags);
- if (netloadASL == NULL)
- return (FALSE);
-
- reportASL = (struct FileRequester *)AllocAslRequest(ASL_FileRequest,
- reporttags);
- if (reportASL == NULL)
- return (FALSE);
-
- devASL = (struct FileRequester *)AllocAslRequest(ASL_FileRequest,
- devtags);
- if (devASL == NULL)
- return (FALSE);
-
- return (TRUE);
- }
-
- /****************************************************************
- * AmiUpdateFilt()
- *
- * Updates the Filter balance field
- *****************************************************************/
- void AmiUpdateFilt(char *str)
- {
- strcpy(filtStr,str);
- GF_SetGadgetAttrs(gui,gadgetspecs[GID_RUNBAL].gs_Gadget,
- GTTX_Text,filtStr,
- TAG_DONE);
- }
-
- /****************************************************************
- * AmiUpdateCurr()
- *
- * Updates the curr balance field
- *****************************************************************/
- void AmiUpdateCurr(char *str)
- {
- strcpy(currStr,str);
- GF_SetGadgetAttrs(gui,gadgetspecs[GID_CURRBAL].gs_Gadget,
- GTTX_Text,currStr,
- TAG_DONE);
- }
-
- /****************************************************************
- * AmiUpdateState()
- *
- * Updates the Statement balance field
- *****************************************************************/
- void AmiUpdateState(char *str)
- {
- strcpy(stateStr,str);
- GF_SetGadgetAttrs(gui,gadgetspecs[GID_STATBAL].gs_Gadget,
- GTTX_Text,stateStr,
- TAG_DONE);
- }
-
- /*******************************************************************************
- * AmiParseCmd()
- *
- * Parse the input tooltypes and parameters
- ********************************************************************************/
- void AmiParseCmd(int argc, char **argv)
- {
- char *ptr;
- ULONG rows;
- char dtype[80];
-
- strcpy(filePattern,DEFAULT_FILEPATTERN);
- strcpy(importPattern,DEFAULT_IMPORTPATTERN);
- strcpy(scriptPattern,DEFAULT_SCRIPTPATTERN);
- strcpy(netPattern,DEFAULT_NETPATTERN);
-
- #if 0
- if (argc==0) {
- sprintf(iconPath,"AC_Icons/");
- sprintf(guidePath,"documents/amiCheck.guide");
- return;
- }
- else {
- ptr = PathPart(argv[0]);
- if (ptr != NULL) {
- if (*ptr == '/')
- *(ptr+1) = NULL;
- else *ptr = NULL;
-
- sprintf(iconPath,"%sAC_Icons/",argv[0]);
- sprintf(guidePath,"%sdocuments/amiCheck.guide",argv[0]);
- }
- else {
- sprintf(iconPath,"AC_Icons/");
- sprintf(guidePath,"documents/amiCheck.guide");
- }
- }
-
- #endif
-
- while (argc>1) {
- /* templaterows */
- if (strnicmp(argv[argc-1],"TEMPLATEROWS",strlen("TEMPLATEROWS") ) == 0) {
- ptr = strchr(argv[argc-1],'=');
- if (ptr != NULL) {
- sscanf(ptr+1,"%d",&rows);
- if (rows < 5) rows = 5;
- SP_SelTempSpecs[GID_SPTEMPLIST]->gs_MinHeight = rows;
- }
- }
-
- /* aslheight */
- else if (strnicmp(argv[argc-1],"ASLHEIGHT",strlen("ASLHEIGHT") ) == 0) {
- ptr = strchr(argv[argc-1],'=');
- if (ptr != NULL) {
- sscanf(ptr+1,"%u",&amiAslHeight);
- }
- }
-
- /* numcols */
- else if (strnicmp(argv[argc-1],"NUMCOLS",strlen("NUMCOLS") ) == 0) {
- ptr = strchr(argv[argc-1],'=');
- if (ptr != NULL) {
- sscanf(ptr+1,"%d",&rows);
- if (rows < 5) rows = 5;
- gadgetspecs[GID_REGFIELD].gs_MinWidth = rows;
- }
- }
-
- /* numrows */
- else if (strnicmp(argv[argc-1],"NUMROWS",strlen("NUMROWS") ) == 0) {
- ptr = strchr(argv[argc-1],'=');
- if (ptr != NULL) {
- sscanf(ptr+1,"%d",&rows);
- if (rows < 5) rows = 5;
- gadgetspecs[GID_REGFIELD].gs_MinHeight = rows;
- }
- }
-
- /* layout change warning */
- else if (strnicmp(argv[argc-1],"NOLAYOUTWARN",strlen("NOLAYOUTWARN") ) == 0) {
- layoutwarn = FALSE;
- }
-
- /* autosort flag */
- else if (strnicmp(argv[argc-1],"AUTOSORT",strlen("AUTOSORT") ) == 0) {
- autosort = TRUE;
- }
-
- /* show memo flag */
- else if (strnicmp(argv[argc-1],"SHOWMEMO",strlen("SHOWMEMO") ) == 0) {
- showMemo = TRUE;
- }
-
- /* DCLICK flag */
- else if (strnicmp(argv[argc-1],"DCLICK",strlen("DCLICK") ) == 0) {
- dclicktype = 0;
- ptr = strchr(argv[argc-1],'=');
- if (ptr != NULL) {
- sscanf(ptr+1,"%s",dtype);
- if (strnicmp(dtype,"CLEAR",strlen("CLEAR")) == 0)
- dclicktype = 1;
- else if (strnicmp(dtype,"UNFILT",strlen("UNFILT")) == 0)
- dclicktype = 2;
- else if (strnicmp(dtype,"EDIT",strlen("EDIT")) == 0)
- dclicktype = 0;
- }
- }
-
- /* DATE flag */
- else if (strnicmp(argv[argc-1],"DATE",strlen("DATE") ) == 0) {
- dateFormat = DATE_MMDDYY;
- ptr = strchr(argv[argc-1],'=');
- if (ptr != NULL) {
- sscanf(ptr+1,"%s",dtype);
- if (strnicmp(dtype,"FORMAT1",strlen("FORMAT1")) == 0)
- dateFormat = DATE_MMDDYY;
- else if (strnicmp(dtype,"FORMAT2",strlen("FORMAT2")) == 0)
- dateFormat = DATE_DDMMYY;
- else if (strnicmp(dtype,"FORMAT3",strlen("FORMAT3")) == 0)
- dateFormat = DATE_DEC_12;
- else if (strnicmp(dtype,"FORMAT4",strlen("FORMAT4")) == 0)
- dateFormat = DATE_12_DEC;
- }
- }
-
- /* LOAD pattern */
- else if (strnicmp(argv[argc-1],"LOADPATTERN",strlen("LOADPATTERN") ) == 0) {
- ptr = strchr(argv[argc-1],'=');
- if (ptr != NULL) {
- sscanf(ptr+1,"%s",dtype);
- if (strlen(dtype) < FILEPATTERN_SIZE) {
- strcpy(filePattern,dtype);
- }
- }
- }
-
- /* IMPORT pattern */
- else if (strnicmp(argv[argc-1],"IMPORTPATTERN",strlen("IMPORTPATTERN") ) == 0) {
- ptr = strchr(argv[argc-1],'=');
- if (ptr != NULL) {
- sscanf(ptr+1,"%s",dtype);
- if (strlen(dtype) < FILEPATTERN_SIZE) {
- strcpy(importPattern,dtype);
- }
- }
- }
-
- /* SCRIPT pattern */
- else if (strnicmp(argv[argc-1],"SCRIPTPATTERN",strlen("SCRIPTPATTERN") ) == 0) {
- ptr = strchr(argv[argc-1],'=');
- if (ptr != NULL) {
- sscanf(ptr+1,"%s",dtype);
- if (strlen(dtype) < FILEPATTERN_SIZE) {
- strcpy(scriptPattern,dtype);
- }
- }
- }
-
- /* NET pattern */
- else if (strnicmp(argv[argc-1],"NETPATTERN",strlen("NETPATTERN") ) == 0) {
- ptr = strchr(argv[argc-1],'=');
- if (ptr != NULL) {
- sscanf(ptr+1,"%s",dtype);
- if (strlen(dtype) < FILEPATTERN_SIZE) {
- strcpy(netPattern,dtype);
- }
- }
- }
-
- /* is it a tooltype comment or file name? */
- else if ( (char)*argv[argc-1] != '(' && !bootfile) {
- /* assume it to be a file */
- strcpy(currFile, argv[argc-1]);
- bootfile = TRUE;
- }
- argc--;
- }
- }
-
- /********************************************************************************
- * AmiOpenGUI()
- *
- * open all guis in system
- *
- *********************************************************************************/
- BOOL AmiOpenGUI(void)
- {
-
- seltempGUI = GF_CreateGUI(guiapp, SP_SelTempPanel,SP_SelTempSpecs,
- GUI_InitialOrientation, (ULONG)GUIL_VertGroup,
- GUI_WindowTitle, (ULONG)"Templates",
- GUI_OpenGUI, (ULONG)FALSE,
- GUI_Backfill, (ULONG)FALSE,
- GUI_ExtraIDCMP, (ULONG)IDCMP_RAWKEY,
- GUI_NewMenu, amiMenu,
- GUI_ScreenTitle, AC_Title,
- TAG_DONE);
- if (seltempGUI == NULL)
- return (FALSE);
-
- edittempGUI = GF_CreateGUI(guiapp, TP_EditTempPanel,TP_EditTempSpecs,
- GUI_InitialOrientation, (ULONG)GUIL_VertGroup,
- GUI_WindowTitle, (ULONG)"Edit Template List",
- GUI_OpenGUI, (ULONG)FALSE,
- GUI_Backfill, (ULONG)TRUE,
- GUI_ExtraIDCMP, (ULONG)IDCMP_RAWKEY,
- GUI_ScreenTitle, AC_Title,
- TAG_DONE);
- if (edittempGUI == NULL)
- return (FALSE);
-
- newGUI = GF_CreateGUI(guiapp, NP_EnterPanel,NP_EnterSpecs,
- GUI_InitialOrientation, (ULONG)GUIL_VertGroup,
- GUI_WindowTitle, (ULONG)NULL,
- GUI_OpenGUI, (ULONG)FALSE,
- GUI_Backfill, (ULONG)TRUE,
- GUI_ExtraIDCMP, (ULONG)(IDCMP_RAWKEY | IDCMP_ACTIVEWINDOW),
- GUI_ScreenTitle, AC_Title,
- TAG_DONE);
- if (newGUI == NULL)
- return (FALSE);
-
- filterGUI = GF_CreateGUI(guiapp, FP_FilterPanel,FP_FilterSpecs,
- GUI_InitialOrientation, (ULONG)GUIL_VertGroup,
- GUI_WindowTitle, (ULONG)"Edit Filter Settings",
- GUI_OpenGUI, (ULONG)FALSE,
- GUI_ExtraIDCMP, (ULONG)(IDCMP_RAWKEY | IDCMP_ACTIVEWINDOW),
- GUI_Backfill, (ULONG)TRUE,
- GUI_ScreenTitle, AC_Title,
- TAG_DONE);
- if (filterGUI == NULL)
- return (FALSE);
-
- memcpy(&dummykey,ptrKey,sizeof(usrkey));
-
- sortGUI = GF_CreateGUI(guiapp, SRP_SortPanel,SRP_SortSpecs,
- GUI_InitialOrientation, (ULONG)GUIL_VertGroup,
- GUI_WindowTitle, (ULONG)"Register Sort",
- GUI_OpenGUI, (ULONG)FALSE,
- GUI_Backfill, (ULONG)TRUE,
- GUI_ExtraIDCMP, (ULONG)IDCMP_RAWKEY,
- GUI_ScreenTitle, AC_Title,
- TAG_DONE);
- if (sortGUI == NULL)
- return (FALSE);
-
- entryGUI = GF_CreateGUI(guiapp, EP_EnterPanel,EP_EnterSpecs,
- GUI_InitialOrientation, (ULONG)GUIL_VertGroup,
- GUI_WindowTitle, (ULONG)NULL,
- GUI_OpenGUI, (ULONG)FALSE,
- GUI_Backfill, (ULONG)TRUE,
- GUI_ExtraIDCMP, (ULONG)(IDCMP_RAWKEY | IDCMP_ACTIVEWINDOW),
- GUI_ScreenTitle, AC_Title,
- TAG_DONE);
- if (entryGUI == NULL)
- return (FALSE);
-
- recGUI = GF_CreateGUI(guiapp, RCP_RecPanel,RCP_RecSpecs,
- GUI_InitialOrientation, (ULONG)GUIL_VertGroup,
- GUI_WindowTitle, (ULONG)"Reconciliation",
- GUI_OpenGUI, (ULONG)FALSE,
- GUI_Backfill, (ULONG)TRUE,
- GUI_ExtraIDCMP, (ULONG)(IDCMP_RAWKEY | IDCMP_ACTIVEWINDOW),
- GUI_ScreenTitle, AC_Title,
- TAG_DONE);
- if (recGUI == NULL)
- return (FALSE);
-
- acctGUI = GF_CreateGUI(guiapp, ACP_AcctPanel,ACP_AcctSpecs,
- GUI_InitialOrientation, (ULONG)GUIL_VertGroup,
- GUI_WindowTitle, (ULONG)NULL,
- GUI_OpenGUI, (ULONG)FALSE,
- GUI_Backfill, (ULONG)TRUE,
- GUI_ExtraIDCMP, (ULONG)IDCMP_ACTIVEWINDOW,
- GUI_ScreenTitle, AC_Title,
- TAG_DONE);
- if (acctGUI == NULL)
- return (FALSE);
-
- searchGUI = GF_CreateGUI(guiapp, SEP_SearchPanel,SEP_SearchSpecs,
- GUI_InitialOrientation, (ULONG)GUIL_VertGroup,
- GUI_WindowTitle, (ULONG)"Register Search ",
- GUI_OpenGUI, (ULONG)FALSE,
- GUI_Backfill, (ULONG)TRUE,
- GUI_ExtraIDCMP, (ULONG)(IDCMP_ACTIVEWINDOW | IDCMP_RAWKEY),
- GUI_ScreenTitle, AC_Title,
- TAG_DONE);
- if (searchGUI == NULL)
- return (FALSE);
-
- catGUI = GF_CreateGUI(guiapp, CP_CatPanel,CP_CatSpecs,
- GUI_InitialOrientation, (ULONG)GUIL_VertGroup,
- GUI_WindowTitle, (ULONG)"Edit Category List",
- GUI_OpenGUI, (ULONG)FALSE,
- GUI_Backfill, (ULONG)TRUE,
- GUI_ExtraIDCMP, (ULONG)(IDCMP_RAWKEY | IDCMP_ACTIVEWINDOW),
- GUI_ScreenTitle, AC_Title,
- TAG_DONE);
- if (catGUI == NULL)
- return (FALSE);
-
- statGUI = GF_CreateGUI(guiapp, STP_StatPanel,STP_StatSpecs,
- GUI_InitialOrientation, (ULONG)GUIL_VertGroup,
- GUI_WindowTitle, (ULONG)"Register Statistics ",
- GUI_OpenGUI, (ULONG)FALSE,
- GUI_Backfill, (ULONG)FALSE,
- GUI_ExtraIDCMP, (ULONG)IDCMP_RAWKEY,
- GUI_ScreenTitle, AC_Title,
- TAG_DONE);
- if (statGUI == NULL)
- return (FALSE);
-
- repGUI = GF_CreateGUI(guiapp, REP_ReportPanel,REP_ReportSpecs,
- GUI_InitialOrientation, (ULONG)GUIL_VertGroup,
- GUI_WindowTitle, (ULONG)"Report Generator",
- GUI_OpenGUI, (ULONG)FALSE,
- GUI_Backfill, (ULONG)TRUE,
- GUI_ExtraIDCMP, (ULONG)IDCMP_ACTIVEWINDOW,
- GUI_ScreenTitle, AC_Title,
- TAG_DONE);
- if (repGUI == NULL)
- return (FALSE);
-
- scriptGUI = GF_CreateGUI(guiapp, SCP_ScriptPanel,SCP_ScriptSpecs,
- GUI_InitialOrientation, (ULONG)GUIL_VertGroup,
- GUI_WindowTitle, (ULONG)"Script Editor ",
- GUI_OpenGUI, (ULONG)FALSE,
- GUI_Backfill, (ULONG)TRUE,
- GUI_ExtraIDCMP, (ULONG)(IDCMP_ACTIVEWINDOW | IDCMP_RAWKEY),
- GUI_ScreenTitle, AC_Title,
- TAG_DONE);
- if (scriptGUI == NULL)
- return (FALSE);
-
- groupGUI = GF_CreateGUI(guiapp, GRP_GroupPanel,GRP_GroupSpecs,
- GUI_InitialOrientation, (ULONG)GUIL_VertGroup,
- GUI_WindowTitle, (ULONG)"Group Editor ",
- GUI_OpenGUI, (ULONG)FALSE,
- GUI_Backfill, (ULONG)TRUE,
- GUI_ExtraIDCMP, (ULONG)(IDCMP_ACTIVEWINDOW | IDCMP_RAWKEY),
- GUI_ScreenTitle, AC_Title,
- TAG_DONE);
- if (groupGUI == NULL)
- return (FALSE);
-
- analGUI = GF_CreateGUI(guiapp, AN_MainPanel,AN_MainSpecs,
- GUI_InitialOrientation, (ULONG)GUIL_VertGroup,
- GUI_WindowTitle, (ULONG)"Graphical Analysis",
- GUI_OpenGUI, (ULONG)FALSE,
- GUI_Backfill, (ULONG)FALSE,
- GUI_ExtraIDCMP, (ULONG)(IDCMP_ACTIVEWINDOW | IDCMP_RAWKEY),
- GUI_ScreenTitle, AC_Title,
- TAG_DONE);
- if (analGUI == NULL)
- return (FALSE);
-
- qdateGUI = GF_CreateGUI(guiapp, QD_DatePanel,QD_DateSpecs,
- GUI_InitialOrientation, (ULONG)GUIL_VertGroup,
- GUI_WindowTitle, (ULONG)"Dates",
- GUI_OpenGUI, (ULONG)FALSE,
- GUI_Backfill, (ULONG)TRUE,
- GUI_ExtraIDCMP, (ULONG)(IDCMP_ACTIVEWINDOW | IDCMP_RAWKEY),
- GUI_ScreenTitle, AC_Title,
- TAG_DONE);
- if (qdateGUI == NULL)
- return (FALSE);
-
- qmemoGUI = GF_CreateGUI(guiapp, QM_MemoPanel,QM_MemoSpecs,
- GUI_InitialOrientation, (ULONG)GUIL_VertGroup,
- GUI_WindowTitle, (ULONG)"Memos",
- GUI_OpenGUI, (ULONG)FALSE,
- GUI_Backfill, (ULONG)FALSE,
- GUI_ExtraIDCMP, (ULONG)(IDCMP_ACTIVEWINDOW | IDCMP_RAWKEY),
- GUI_ScreenTitle, AC_Title,
- TAG_DONE);
- if (qmemoGUI == NULL)
- return (FALSE);
-
- memoGUI = GF_CreateGUI(guiapp, M_MemoPanel,M_MemoSpecs,
- GUI_InitialOrientation, (ULONG)GUIL_VertGroup,
- GUI_WindowTitle, (ULONG)"Quick-Memo Editor",
- GUI_OpenGUI, (ULONG)FALSE,
- GUI_Backfill, (ULONG)TRUE,
- GUI_ExtraIDCMP, (ULONG)(IDCMP_ACTIVEWINDOW | IDCMP_RAWKEY),
- GUI_ScreenTitle, AC_Title,
- TAG_DONE);
- if (memoGUI == NULL)
- return (FALSE);
-
- qnameGUI = GF_CreateGUI(guiapp, QN_NamePanel,QN_NameSpecs,
- GUI_InitialOrientation, (ULONG)GUIL_VertGroup,
- GUI_WindowTitle, (ULONG)"Payees",
- GUI_OpenGUI, (ULONG)FALSE,
- GUI_Backfill, (ULONG)FALSE,
- GUI_ExtraIDCMP, (ULONG)(IDCMP_ACTIVEWINDOW | IDCMP_RAWKEY),
- GUI_ScreenTitle, AC_Title,
- TAG_DONE);
- if (qnameGUI == NULL)
- return (FALSE);
-
- qamntGUI = GF_CreateGUI(guiapp, QA_AmntPanel,QA_AmntSpecs,
- GUI_InitialOrientation, (ULONG)GUIL_VertGroup,
- GUI_WindowTitle, (ULONG)"Amounts",
- GUI_OpenGUI, (ULONG)FALSE,
- GUI_Backfill, (ULONG)FALSE,
- GUI_ExtraIDCMP, (ULONG)(IDCMP_ACTIVEWINDOW | IDCMP_RAWKEY),
- GUI_ScreenTitle, AC_Title,
- TAG_DONE);
- if (qamntGUI == NULL)
- return (FALSE);
-
- nameGUI = GF_CreateGUI(guiapp, N_NamePanel,N_NameSpecs,
- GUI_InitialOrientation, (ULONG)GUIL_VertGroup,
- GUI_WindowTitle, (ULONG)"Quick-Payee Editor",
- GUI_OpenGUI, (ULONG)FALSE,
- GUI_Backfill, (ULONG)TRUE,
- GUI_ExtraIDCMP, (ULONG)(IDCMP_ACTIVEWINDOW | IDCMP_RAWKEY),
- GUI_ScreenTitle, AC_Title,
- TAG_DONE);
- if (nameGUI == NULL)
- return (FALSE);
-
- amntGUI = GF_CreateGUI(guiapp, A_AmntPanel,A_AmntSpecs,
- GUI_InitialOrientation, (ULONG)GUIL_VertGroup,
- GUI_WindowTitle, (ULONG)"Quick-Amount Editor",
- GUI_OpenGUI, (ULONG)FALSE,
- GUI_Backfill, (ULONG)TRUE,
- GUI_ExtraIDCMP, (ULONG)(IDCMP_ACTIVEWINDOW | IDCMP_RAWKEY),
- GUI_ScreenTitle, AC_Title,
- TAG_DONE);
- if (amntGUI == NULL)
- return (FALSE);
-
- formGUI = GF_CreateGUI(guiapp, FP_FormPanel,FP_FormSpecs,
- GUI_InitialOrientation, (ULONG)GUIL_VertGroup,
- GUI_WindowTitle, (ULONG)"Check Forms ",
- GUI_OpenGUI, (ULONG)FALSE,
- GUI_Backfill, (ULONG)TRUE,
- GUI_ExtraIDCMP, (ULONG)IDCMP_ACTIVEWINDOW,
- GUI_ScreenTitle, AC_Title,
- TAG_DONE);
- if (formGUI == NULL)
- return (FALSE);
-
- netGUI = GF_CreateGUI(guiapp, NET_NetPanel,NET_NetSpecs,
- GUI_InitialOrientation, (ULONG)GUIL_VertGroup,
- GUI_WindowTitle, (ULONG)"Net Worth Analysis",
- GUI_OpenGUI, (ULONG)FALSE,
- GUI_Backfill, (ULONG)TRUE,
- GUI_ExtraIDCMP, (ULONG)(IDCMP_ACTIVEWINDOW | IDCMP_RAWKEY),
- GUI_ScreenTitle, AC_Title,
- TAG_DONE);
- if (netGUI == NULL)
- return (FALSE);
-
- printGUI = GF_CreateGUI(guiapp, PR_PrintPanel,PR_PrintSpecs,
- GUI_InitialOrientation, (ULONG)GUIL_VertGroup,
- GUI_WindowTitle, (ULONG)"Print Checks",
- GUI_OpenGUI, (ULONG)FALSE,
- GUI_Backfill, (ULONG)TRUE,
- GUI_ExtraIDCMP, (ULONG)(IDCMP_ACTIVEWINDOW | IDCMP_RAWKEY),
- GUI_ScreenTitle, AC_Title,
- TAG_DONE);
- if (printGUI == NULL)
- return (FALSE);
-
- arexxGUI = GF_CreateGUI(guiapp, AX_ArexxPanel,AX_ArexxSpecs,
- GUI_InitialOrientation, (ULONG)GUIL_VertGroup,
- GUI_WindowTitle, (ULONG)"Assign Macros",
- GUI_OpenGUI, (ULONG)FALSE,
- GUI_Backfill, (ULONG)TRUE,
- GUI_ExtraIDCMP, (ULONG)(IDCMP_ACTIVEWINDOW | IDCMP_RAWKEY),
- GUI_ScreenTitle, AC_Title,
- TAG_DONE);
- if (arexxGUI == NULL)
- return (FALSE);
-
- keyGUI = GF_CreateGUI(guiapp, KEY_KeyPanel,KEY_KeySpecs,
- GUI_InitialOrientation, (ULONG)GUIL_VertGroup,
- GUI_WindowTitle, (ULONG)"Keyfile Registration",
- GUI_OpenGUI, (ULONG)FALSE,
- GUI_Backfill, (ULONG)TRUE,
- GUI_ExtraIDCMP, (ULONG)(IDCMP_ACTIVEWINDOW | IDCMP_RAWKEY),
- GUI_ScreenTitle, AC_Title,
- TAG_DONE);
- if (keyGUI == NULL)
- return (FALSE);
-
- #if 0
- budgetGUI = GF_CreateGUI(guiapp, BP_BudgetPanel,BP_BudgetSpecs,
- GUI_InitialOrientation, (ULONG)GUIL_VertGroup,
- GUI_WindowTitle, (ULONG)"Budget Distribution",
- GUI_OpenGUI, (ULONG)TRUE,
- GUI_Backfill, (ULONG)TRUE,
- GUI_ExtraIDCMP, (ULONG)(IDCMP_ACTIVEWINDOW | IDCMP_RAWKEY),
- GUI_ScreenTitle, AC_Title,
- TAG_DONE);
- if (budgetGUI == NULL)
- return (FALSE);
- #endif
-
- return (TRUE);
- }
-
- /********************************************************************************
- * AmiCloseGUI()
- *
- * Destroys guis
- *
- *********************************************************************************/
- void AmiCloseGUI(void)
- {
- selWin = NULL;
- if (seltempGUI) GF_DestroyGUI(seltempGUI);
- if (edittempGUI) GF_DestroyGUI(edittempGUI);
- if (newGUI) GF_DestroyGUI(newGUI);
- if (filterGUI) GF_DestroyGUI(filterGUI);
- if (sortGUI) GF_DestroyGUI(sortGUI);
- if (entryGUI) GF_DestroyGUI(entryGUI);
- if (recGUI) GF_DestroyGUI(recGUI);
- if (acctGUI) GF_DestroyGUI(acctGUI);
- if (searchGUI) GF_DestroyGUI(searchGUI);
- if (catGUI) GF_DestroyGUI(catGUI);
- if (statGUI) GF_DestroyGUI(statGUI);
- if (repGUI) GF_DestroyGUI(repGUI);
- if (scriptGUI) GF_DestroyGUI(scriptGUI);
- if (groupGUI) GF_DestroyGUI(groupGUI);
- if (analGUI) GF_DestroyGUI(analGUI);
- if (formGUI) GF_DestroyGUI(formGUI);
- if (netGUI) GF_DestroyGUI(netGUI);
- if (qdateGUI) GF_DestroyGUI(qdateGUI);
- if (qmemoGUI) GF_DestroyGUI(qmemoGUI);
- if (memoGUI) GF_DestroyGUI(memoGUI);
- if (nameGUI) GF_DestroyGUI(nameGUI);
- if (amntGUI) GF_DestroyGUI(amntGUI);
- if (qamntGUI) GF_DestroyGUI(qamntGUI);
- if (qnameGUI) GF_DestroyGUI(qnameGUI);
- if (printGUI) GF_DestroyGUI(printGUI);
- if (arexxGUI) GF_DestroyGUI(arexxGUI);
- if (keyGUI) GF_DestroyGUI(keyGUI);
- #if 0
- if (budgetGUI) GF_DestroyGUI(budgetGUI);
- #endif
- }
-
- /********************************************************
- * AmiMoveSwap()
- *
- * Move the selected item!
- *********************************************************/
- void AmiMoveSwap(void)
- {
- filterNode *ftemp;
- entryNode *etemp, *entemp;
- UWORD eord, enord;
-
- if (!moveActive || selRow == -1)
- return;
-
- ftemp = (filterNode *)DataOrd2Node((struct List *)&filtered,selRow);
- if (ftemp != moveNode) {
-
- /* move the template nodes first */
- Remove((struct Node *)moveNode);
- if (selRow > moveRow)
- Insert( (struct List *)&filtered,(struct Node *)moveNode, (struct Node *)ftemp);
- else Insert( (struct List *)&filtered,(struct Node *)moveNode, (struct Node *)ftemp->node.mln_Pred);
-
- /* swap the ACTUAL ENTRY NODE */
- etemp = moveNode->entry;
- entemp = ftemp->entry;
- eord = DataFindNode( (struct List *)&entries, (struct Node *)etemp);
- enord = DataFindNode( (struct List *)&entries, (struct Node *)entemp);
- Remove((struct Node *)etemp);
-
- if (enord > eord)
- Insert( (struct List *)&entries,(struct Node *)etemp, (struct Node *)entemp);
- else Insert( (struct List *)&entries,(struct Node *)etemp, (struct Node *)entemp->node.mln_Pred);
-
- /* display changes */
- RegMoveList(&filtered,regTopRow);
- RegRefresh(FALSE);
- /*
- RegRedrawRow(moveNode);
- RegRedrawSel(entemp);
- */
-
- amiChangedItems = TRUE;
- }
-
- AmiMoveRestore();
- }
-
- /********************************************************
- * AmiMoveActive()
- *
- * activates mouse ptr and move state
- *********************************************************/
- void AmiMoveActive(void)
- {
- moveActive = TRUE;
- moveNode = (filterNode *)DataOrd2Node((struct List *)&filtered,selRow);
- moveRow = selRow;
- if (!OS39)
- SetPointer(amiWindow,movePointer37,7,14,0,-3);
- else
- SetWindowPointer(amiWindow,
- WA_Pointer,moveObj,
- TAG_DONE);
- }
-
-
- /********************************************************
- * AmiMoveRestore()
- *
- * restores mouse ptr and move state
- *********************************************************/
- void AmiMoveRestore(void)
- {
-
- moveActive = FALSE;
- moveNode = NULL;
- if (!OS39)
- ClearPointer(amiWindow);
- else {
- /*printf("os39 specific\n");*/
- SetWindowPointer(amiWindow,
- WA_Pointer,NULL,
- TAG_DONE);
- }
- }
-
- /********************************************************
- * AmiUnlock()
- *
- * Unlocks amicheck, supplies normal pointer
- *********************************************************/
- void AmiUnlock()
- {
-
- GF_UnlockGUI(gui);
- if (selWin != NULL)
- GF_UnlockGUI(seltempGUI);
-
- if (!OS39)
- ClearPointer(amiWindow);
- else {
- /*printf("os39 specific\n");*/
- SetWindowPointer(amiWindow,
- WA_Pointer,NULL,
- WA_BusyPointer,FALSE,
- TAG_DONE);
- }
- }
-
- /********************************************************
- * AmiLock()
- *
- * locks amicheck, supplies wait pointer
- *********************************************************/
- void AmiLock()
- {
-
- GF_LockGUI(gui);
-
- if (selWin != NULL)
- GF_LockGUI(seltempGUI);
-
- if (!OS39)
- SetPointer(amiWindow,busyPointer37,16,16,-5,0);
- else {
- /*printf("os39 specific\n");*/
- SetWindowPointer(amiWindow,
- WA_Pointer,NULL,
- WA_BusyPointer,TRUE,
- WA_PointerDelay,FALSE,
- TAG_DONE);
- }
- }
-
- /**********************************************************************
- * AmiCheckRenumber()
- *
- * renumber a check quickly -+ 1-9
- ***********************************************************************/
- void AmiCheckRenumber(char op, long amnt)
- {
- filterNode *filt;
-
- if (selRow == -1)
- return;
-
- filt = (filterNode *)DataOrd2Node((struct List *)&filtered,selRow);
- if (filt->entry->type != CHECKTYPE)
- return;
-
- switch (op) {
- case 0:
- if (filt->entry->check >= amnt) {
- filt->entry->check -= amnt;
- RegRedrawSel(filt);
- amiChangedItems = TRUE;
- amntState.currCheckNumber = filt->entry->check+1;
- }
- break;
- case 1: ;
- if (filt->entry->check + amnt < filt->entry->check)
- break;
- filt->entry->check += amnt;
- RegRedrawSel(filt);
- amiChangedItems = TRUE;
- amntState.currCheckNumber = filt->entry->check+1;
- break;
- }
- }
-
- /**********************************************************************************
- * AmiSetupMemo()
- *
- * Inits the show memo check in the menu to the tooltype
- ***********************************************************************************/
- void AmiSetupMemo(void)
- {
- struct MenuItem *menu;
-
- menu = ItemAddress(menuStrip,FULLMENUNUM(PREFSTITLE,PREFSWINDOW,PREFSWINDOWMEMO));
- menu->Flags &= ~CHECKED;
- if (showMemo) menu->Flags |= CHECKED;
- ResetMenuStrip(amiWindow,menuStrip);
- }
-
-
- /**********************************************************************************
- * AmiSetupDclick()
- *
- * Inits the check in the dclick to the tooltype
- ***********************************************************************************/
- void AmiSetupDclick(void)
- {
- struct MenuItem *menu;
-
- switch (dclicktype) {
- case 1:
- menu = ItemAddress(menuStrip,FULLMENUNUM(PREFSTITLE,PREFSDCLICK,PREFSDCLICKC));
- menu->Flags |= CHECKED;
- ResetMenuStrip(amiWindow,menuStrip);
- break;
-
- case 2:
- menu = ItemAddress(menuStrip,FULLMENUNUM(PREFSTITLE,PREFSDCLICK,PREFSDCLICKU));
- menu->Flags |= CHECKED;
- ResetMenuStrip(amiWindow,menuStrip);
- break;
-
- default:
- menu = ItemAddress(menuStrip,FULLMENUNUM(PREFSTITLE,PREFSDCLICK,PREFSDCLICKE));
- menu->Flags |= CHECKED;
- ResetMenuStrip(amiWindow,menuStrip);
- break;
- }
- }
-
- /**********************************************************************************
- * AmiSetupDate()
- *
- * Inits the check in the date to the tooltype
- ***********************************************************************************/
- void AmiSetupDate(void)
- {
- struct MenuItem *menu;
-
- switch (dateFormat) {
- case DATE_DEC_12:
- menu = ItemAddress(menuStrip,FULLMENUNUM(PREFSTITLE,PREFSDATE,PREFSDATE2));
- menu->Flags |= CHECKED;
- ResetMenuStrip(amiWindow,menuStrip);
- break;
-
- case DATE_12_DEC:
- menu = ItemAddress(menuStrip,FULLMENUNUM(PREFSTITLE,PREFSDATE,PREFSDATE3));
- menu->Flags |= CHECKED;
- ResetMenuStrip(amiWindow,menuStrip);
- break;
-
- default:
- menu = ItemAddress(menuStrip,FULLMENUNUM(PREFSTITLE,PREFSDATE,PREFSDATE1));
- menu->Flags |= CHECKED;
- ResetMenuStrip(amiWindow,menuStrip);
- break;
- }
- }
-
- /**************************************************************************************
- * AmiArexxMenu()
- *
- * Sets up macro labels in menu
- ***************************************************************************************/
- void AmiArexxMenu(void)
- {
- int x;
- struct MenuItem *menu;
-
- for (x=0;x<MAXMACROS;x++) {
- menu = ItemAddress(menuStrip, FULLMENUNUM(AREXXTITLE,AREXXM1+x,NOSUB));
- ResetMenuStrip(amiWindow,menuStrip);
- }
-
- /*sprintf(arexxMacros[2].macroname,"now at %d\n",entryCount);*/
- }
-
- /**************************************************************************
- * AmiSave()
- *
- * Save the application
- ****************************************************************************/
- BOOL AmiSave(char *fname, BOOL saveas)
- {
- BOOL ret = TRUE;
-
- AmiLock();
-
- /* is this a new file? */
- if (saveas) {
- if (fname != NULL) {
- strcpy(currFile, fname);
- stcgfn(currNode, currFile);
- }
- else {
- if (AmiGetFile(gui,saveASL,currFile,FILESIZE) == 0) {
- ret = FALSE;
- goto FINISHED;
- }
-
- strcpy(currNode, saveASL->fr_File);
- }
- }
-
-
- if (DataSaveFile(currFile, saveas) == FALSE) {
- AmiAnnounce("Encountered trouble trying to save file.");
- }
- else {
- if (saveas) {
- DataAttachIcon(iconPath,"AC_Account",currFile);
- sprintf(amiWindowTitle,"%s: %s",AC_WindowTitle, currNode);
- SetWindowTitles(amiWindow,amiWindowTitle,(UBYTE *)-1);
- OnMenu(amiWindow,FULLMENUNUM(FILETITLE,FILESAVE,NOSUB));
- OnMenu(amiWindow,FULLMENUNUM(FILETITLE,FILESAVEEXIT,NOSUB));
- }
-
- amiChangedItems = FALSE;
- }
-
- FINISHED:
-
- AmiUnlock();
- return ret;
- }
-
- /***************************************************************
- * AmiOpen()
- *
- * Open an application
- ****************************************************************/
- void AmiOpen(char *appfile, BOOL force)
- {
- char fname[FILESIZE];
-
- if (force || AmiAsk(newstr)) {
-
- /* open, and change window title */
- AmiLock();
- if (appfile != NULL || AmiGetFile(gui,loadASL,fname,FILESIZE)) {
- AmiDisableSel(TRUE);
- OnMenu(amiWindow,FULLMENUNUM(FILETITLE,FILESAVE,NOSUB));
- OnMenu(amiWindow,FULLMENUNUM(FILETITLE,FILESAVEEXIT,NOSUB));
-
- AmiLock();
-
- /* file was selected, open it */
- if (appfile != NULL)
- strcpy(fname,appfile);
-
- seldone = TRUE;
- SelTempStrip();
-
- amiChangedItems = FALSE;
- DataFreeAll();
- DataInit();
-
- RegNewFilter();
- AmiResetBals();
-
- /* insert data */
- if (DataLoadFile(fname) != TRUE) {
- AmiAnnounce("Encountered trouble opening file\n");
- }
- else {
- /* partition out file name */
- if (appfile != NULL) {
- stcgfn(currNode,appfile);
- strcpy(currFile,appfile);
- }
- else {
- strcpy(currNode,loadASL->fr_File);
- strcpy(currFile,fname);
- }
-
- sprintf(amiWindowTitle,"%s: %s",AC_WindowTitle,
- currNode);
- SetWindowTitles(amiWindow,amiWindowTitle,(UBYTE *)-1);
-
- if (autosort == TRUE && !IsListEmpty(&sortfields))
- DataSortFilter((filterNode *)filtered.mlh_Head,
- (filterNode *)filtered.mlh_TailPred,
- (sortNode *)sortfields.lh_Head);
-
- AmiArexxMenu();
-
- RegNewFilter();
- DataFilterBalance(&filtered);
- AmiNewTemp();
-
- DataBuildBal(usrAccount.decimal,&amntState.currAmnt,currStr);
- DataBuildBal(usrAccount.decimal,&amntState.stateAmnt,stateStr);
- DataBuildBal(usrAccount.decimal,&filtAmnt,filtStr);
- AmiUpdateCurr(currStr);
- AmiUpdateState(stateStr);
- AmiUpdateFilt(filtStr);
-
- /* enable items */
- AmiDisableAll(FALSE);
- }
- AmiUnlock();
- }
- AmiUnlock();
- }
-
- }
-
-
- /***************************************************
- * AmiBaseHelp()
- *
- * Initialize the amigaguide context
- ***************************************************/
- LONG AmiBaseHelp(void)
- {
- LONG retval = 0L;
-
- /* Fill in the NewAmigaGuide structure */
- memset(&newAG,0,sizeof(struct NewAmigaGuide));
- newAG.nag_Name = guidePath; /*guidePath;*/
- newAG.nag_Screen = amiWindow->WScreen;
- newAG.nag_BaseName = "amiCheck";
-
- /* Open the AmigaGuide client */
- if ( !(agc = OpenAmigaGuideAsync(&newAG,
- TAG_DONE))) {
-
- /* Get the reason for failure */
- retval = IoErr();
- }
-
- return (retval);
- }
-
-
- /***************************************************
- * AmiBaseLink()
- *
- * Jump to a particular context
- ****************************************************/
- void AmiBaseLink(char *link)
- {
-
- if (!amigaguide || agc == NULL)
- return;
-
- SendAmigaGuideCmd(agc,
- link,
- NULL);
- }
-
- /****************************************************
- * AmiHelpMsg()
- *
- * Handle AmigaGuide messages
- *****************************************************/
- void AmiHelpMsg(void)
- {
- struct AmigaGuideMsg *agm;
-
- while ( agm = GetAmigaGuideMsg(agc)) {
-
- #if 0
- switch (agm->agm_Type) {
-
- case ToolCmdReplyID:
- if (agm->agm_Pri_Ret) {
- printf("ERROR!\n");
- printf("reason=%d,str=%s\n",agm->agm_Sec_Ret,agm->agm_Data);
- }
- break;
-
- case ToolStatusID:
- if (agm->agm_Pri_Ret) {
- printf("Status: ERROR!\n");
- printf("reason=%d,str=%s\n",agm->agm_Sec_Ret,agm->agm_Data);
- }
- break;
- }
- #endif
- ReplyAmigaGuideMsg(agm);
- }
-
- }
-
- /**************************************************
- * AmiHelpKey()
- *
- * Open help link based on key
- ***************************************************/
- void AmiHelpKey(struct IntuiMessage *imsg, ULONG panel)
- {
-
- if (imsg->Code == HELP_KEY && amigaguide){
- AmiBaseLink(guideLinks[panel]);
- }
- }
-
- /***********************************************************************
- * AmiRunMacro()
- *
- * Run a macro given a file name
- ************************************************************************/
- void AmiRunMacro(char *fname)
- {
- char copybuf[1024];
- ULONG bytes=0;
- FILE *new = NULL, *orig= NULL;
-
-
- orig = fopen(fname,"r");
- if (orig == NULL) {
- AmiAnnounce("Cannot read macro file.");
- return;
- }
-
- /* create temporary file in T: */
- if ( (new= fopen(arexxTemp,"wc")) == NULL) {
- AmiAnnounce("Trouble preparing to run macro.");
- return;
- }
-
- /* copy stub "address amicheck" to it */
- fprintf(new,"/* comment */\nADDRESS %s\n",axContext->portname);
-
- /* insert rest of macro */
- while ( (bytes = fread(copybuf,1,1024,orig)))
- fwrite(copybuf,1,bytes,new);
-
- fclose(orig);
- fclose(new);
-
- /* execute macro */
-
- /* execute macro */
- /*
- sprintf(copybuf,"run sys:rexxc/rx %s\n",arexxTemp);
- system(copybuf);
- */
-
- sprintf(copybuf,"sys:rexxc/rx %s\n",arexxTemp);
- SystemTags(copybuf,
- SYS_Asynch, TRUE,
- TAG_DONE);
- #if 0
- RunARexxMacro(
- axContext,
- ER_MacroFile, fname,
- TAG_DONE);
- #endif
- }
-
- /*************************************************************************
- * AmiGetFile()
- *
- * Get a file from an ASL requester
- **************************************************************************/
- BOOL AmiGetFile(GUIFront *wgui, struct FileRequester *asl, char *filestore, int storesize)
- {
- BOOL retval = FALSE;
-
- if (asl == NULL || filestore == NULL)
- return FALSE;
-
- /* lock panel */
- AmiLock();
- GF_LockGUI(wgui);
-
-
- if (GF_AslRequest(asl,aslTagList)) {
-
- if (!DataGetFileName(filestore,storesize,asl->fr_Drawer,asl->fr_File))
- strncpy(filestore,asl->fr_File,storesize);
-
- retval = TRUE;
- }
-
- /* unlock panel */
- GF_UnlockGUI(wgui);
- AmiUnlock();
-
- return (retval);
- }
-
- /******************************************************
- * AmiCountVerify()
- *
- * Verify for the entry count
- *******************************************************/
- BOOL AmiCountVerify(void)
- {
- BOOL anno = !(dummykey.id == dummykey.verify);
-
- if (anno)
- AmiAnnounce(*demoptr);
-
- return anno;
- }
-
- /*******************************************************
- * AmiResetBals()
- *
- * Reset the balances to zero
- ********************************************************/
- void AmiResetBals(void)
- {
- amountType zero = 0;
- char amnt[AMNTSIZE];
-
- DataInitBal(DEPOSITTYPE,&zero,&amntState.currAmnt);
- DataInitBal(DEPOSITTYPE,&zero,&amntState.stateAmnt);
- DataInitBal(DEPOSITTYPE,&zero,&filtAmnt);
-
- DataBuildBal(usrAccount.decimal,&amntState.currAmnt,amnt);
- AmiUpdateCurr(amnt);
-
- DataBuildBal(usrAccount.decimal,&amntState.stateAmnt,amnt);
- AmiUpdateState(amnt);
-
- DataBuildBal(usrAccount.decimal,&filtAmnt,amnt);
- AmiUpdateFilt(amnt);
- }
-