home *** CD-ROM | disk | FTP | other *** search
/ Magazyn Amiga 13 / MA_Cover_13.bin / source / c / db3.6-beta-src / db.h < prev    next >
Encoding:
C/C++ Source or Header  |  1997-11-26  |  10.2 KB  |  337 lines

  1.  
  2. /* Headerfile for the db project */
  3.  
  4. #include <exec/lists.h>
  5. #include <dos.h>                        /* FMSIZE and FNSIZE */
  6. #include <stdio.h>              /* FILE */
  7. #include <exec/nodes.h>
  8. #include <exec/lists.h>
  9. #include <exec/types.h>
  10. #include <libraries/locale.h>
  11. #include <proto/locale.h>
  12.  
  13. #define CATCOMP_NUMBERS
  14. #include "db_strings.h"
  15. #include "Select.h"
  16.  
  17. /**********************************************************************/
  18. /*                              Defines                               */
  19. /**********************************************************************/
  20.  
  21. #define TOGGLE_LED *(UBYTE *)0xbfe001 ^= 2
  22.  
  23. /* Locale */
  24. #define GetAppStr(index) (GetString(&LocaleInfo,(index)))
  25.  
  26. #define DSIZE 25
  27.  
  28.  
  29. #define TEXTFIELD_KIND 4711
  30.  
  31.  
  32. /* Rawkeycodes + 128 for upkey codes */
  33. #define RAW_TAB                 (0x42)
  34. #define RAW_ESC                 (0x45)
  35. #define RAW_HELP                        (0x5f)
  36.  
  37. #define RAW_UP                          (0x4c)  
  38. #define RAW_DOWN                        (0x4d)  
  39. #define RAW_LEFT                        (0x4f)
  40. #define RAW_RIGHT                       (0x4e)
  41.  
  42. #define RAW_F1                  (0x50)
  43. #define RAW_F2                  (0x51)
  44. #define RAW_F3                  (0x52)
  45. #define RAW_F4                  (0x53)
  46. #define RAW_F5                  (0x54)
  47. #define RAW_F6                  (0x55)
  48. #define RAW_F7                  (0x56
  49. #define RAW_F8                  (0x57)
  50. #define RAW_F9                  (0x58)
  51. #define RAW_F10                 (0x59)
  52.  
  53. #define VANILLA_DEL             (0x7f)
  54. #define VANILLA_ESC             (0x1b)
  55.  
  56. #define SEP_SPACE                       (' ')
  57. #define SEP_TAB                 ('\t')
  58.  
  59. /* Layout defines */
  60. #define DEFTABSIZE 6
  61. #define STRGADFRAMESWIDTH 14
  62. #define STRGADFRAMESHEIGHT 6
  63.  
  64.  
  65. #define LATER   NULL
  66.  
  67. #define MODE_NORMAL             0
  68. #define MODE_FIND                       1
  69. #define MODE_SORT                       2
  70. #define MODE_FILTER             3
  71.  
  72.  
  73. /* Limits */
  74. #define FIELDNAMELENGTH 50
  75. #define LAYOUTNAMELENGTH 50
  76. #define WINDOWTITLELENGTH 80
  77. #define DEFMAXFLDLEN 200
  78.  
  79. #define LOADBUFFERSIZE 65536    /* This restricts the recordlength */
  80.  
  81. #define NOTMODIFIED 0
  82. #define RECMODIFIED 1
  83. #define PROMODIFIED 2
  84.  
  85. /* For the ASL file requester */
  86. #define MYLEFTEDGE 50
  87. #define MYTOPEDGE  50
  88. #define MYWIDTH    300
  89. #define MYHEIGHT   300
  90.  
  91. /* Savemodes for Save() */
  92. #define SAVE_PRO 0
  93. #define SAVE_VIEW 1
  94. #define SAVE_VIEW_WN 2
  95. #define SAVE_TAB_ASCII 3
  96. #define SAVE_COMMA_ASCII 4
  97.  
  98. #define SORT_DIR_AZ 0
  99. #define SORT_DIR_ZA 1
  100.  
  101. /* Codes returned by LoadField */
  102. #define BUFSIZE_ERR 0
  103. #define FLD_OK 1
  104. #define REC_OK 2
  105. #define END_OF_FILE 3
  106.  
  107. /* Error codes from various functions */
  108. #define MEM_ERR -1
  109. #define RFF_ERR -2
  110. #define FILE_ERR -3
  111.  
  112. #define GAD_ERR -4
  113. #define WIN_ERR -5
  114. #define MENU_ERR -6
  115. #define WINSIZE_ERR -7
  116.  
  117. enum arguments { FILES, DEVICE, UNIT, DIALPREFIX, DIALPOSTFIX, AREACODE,
  118.  PUBSCREEN, FONTNAME, FONTSIZE, NOICONS, NOSPEEDRENDER, NORETURNSTEP, NOSERIAL,
  119.  HORIZBAR, ESCQUIT, TONEDIAL, TONEDIALSPEED, CCITT5, MAKEBACKUP, LOCALESORT,
  120.  HIGHLABEL, NOBORDER, DEFPATTERN, DEFREXXPATTERN };
  121.  
  122. enum serialerrors { OK, MSGPORTERR, IOEXTERR, DEVICEERR };
  123.  
  124. typedef char loadreturncode;
  125.  
  126. /**********************************************************************/
  127. /*                              externs                               */
  128. /**********************************************************************/
  129.  
  130. extern char EmptyString[];
  131.  
  132. extern struct Pro *CurrentPro;
  133.  
  134. /* This is from the DataIcon.c file created by IconEdit */
  135. /* We will modify fields here before writing icons */
  136. extern struct DiskObject DataIcon;
  137.  
  138. extern LONG MyArgArray[];
  139.  
  140. extern struct MsgPort *AWPort;
  141. extern struct TextFont *UserTextFont;
  142. extern struct LocaleInfo LocaleInfo;
  143.  
  144. extern LONG WinSig;
  145.  
  146. extern struct Gadget *NextGad;  /* MyStrHook() sets this if tabcycling */
  147.  
  148. extern struct Library *RexxSysBase;
  149. extern struct Library *LocaleBase;
  150. extern struct Library *DiskfontBase;
  151. extern struct Library *IFFParseBase;
  152. extern struct Library *IconBase;
  153. extern struct Library *CxBase;
  154. extern struct Library *AslBase;
  155. extern struct GfxBase *GfxBase;
  156. extern struct IntuitionBase *IntuitionBase;
  157. extern struct Library *GadToolsBase;
  158. extern struct Library *UtilityBase;
  159. extern struct Library *WorkbenchBase;   /* For AppWindow */
  160.  
  161.  
  162. /**********************************************************************/
  163. /*                              structs                               */
  164. /**********************************************************************/
  165.  
  166. typedef char *Field;
  167.  
  168. struct Space {
  169.         UWORD XOffset;
  170.         UWORD YOffset;
  171.         WORD Width;
  172.         WORD Height;
  173. };
  174.  
  175. struct Rec {
  176.         struct Rec *Next;
  177.         struct Rec *Prev;
  178.         Field *Fields;
  179.         short FldSum;
  180. };
  181.  
  182. struct FldInfo {
  183.         struct FldInfo *Next;
  184.         struct MinList FldTags;
  185.         char Name[FIELDNAMELENGTH];
  186.         int Len; /* Max length of field (excluding '\0') */
  187.         char Type; /* String, Checkbox, Cycle.. */
  188. };
  189.         
  190. struct VisFldInfo {
  191.         struct VisFldInfo *Next;
  192.         struct MinList VisTags;
  193.         char Name[FIELDNAMELENGTH];
  194.         struct Gadget   *Gadget;            /* Corresponding gadget in window */
  195.         struct Space Pos;                   /* Gadget position */
  196.         struct IntuiText Label;             /* For textfield gadget */
  197.         short Offset;                       /* Field offset in database */
  198.         unsigned char VisLen;               /* Visual length in chars */
  199.         char Format;                        /* Visual format: Caps, ALL CAPS... */
  200.         char FTyp;                          /* Fieldtype */
  201.         int Code;                           /* Active choice in cyclegadget so we don't use v39 func. */
  202.         char **CEnt;                        /* Pointer to Cyclechoices */
  203.         char NEnt;                          /* Number of entries in cyclegad */
  204.         char VisSep;                        /* Visual separator: Space, TAB or NewLine */
  205. };
  206.  
  207. struct RxInfo { /* Rexx menu item data */
  208.         struct RxInfo *Next;
  209.         struct MinList RxTags;
  210. /*      char Name[FIELDNAMELENGTH]; */
  211. };
  212.  
  213. struct SR {
  214.         struct SR *Next;
  215.         APTR GadgetRender;
  216. };
  217.  
  218. /*
  219.  * Layout is the internal name for a View in db. (The name "View"is used by the OS)
  220.  */
  221.  
  222. struct Layout {
  223.         struct Layout *NextLayout;
  224.         struct MinList LayTags;
  225.         char Name[LAYOUTNAMELENGTH];
  226.         char Title[WINDOWTITLELENGTH]; /* WindowTitle */
  227.         struct Window *Window;
  228.         WORD XPos, YPos;
  229.         struct AppWindow *AppWin;
  230.         struct Gadget *GList;
  231.         struct Gadget *DragGad;
  232.         Select *Browser;
  233.         struct SR *FirstSR;     /* SpeedRender struct that holds gadget borders */
  234.         struct VisFldInfo *FirstVisFldInfo;
  235.         struct VisFldInfo *FirstUndoVisFldInfo;
  236.         BOOL ComplexGadgets;
  237. };
  238.  
  239. struct SoftMenu {
  240.         struct MenuItem *Items;         /* The variable menuitems */
  241.         struct NewMenu *NewItems;       /* Stores NewMenu structs for Items */
  242.         int NewItemsNum;                                /* For deallocation */
  243. };
  244.  
  245. struct Pro {
  246.         struct Pro *NextPro;
  247.         struct MinList ProTags;
  248.         struct MinList UnknownLines;
  249.         char Name[FNSIZE];
  250.         char Drawer[FMSIZE];
  251.         char Pattern[FMSIZE];
  252.         char OutputName[FMSIZE];
  253.         char OutputDrawer[FMSIZE];
  254.         char ARexxName[FMSIZE];
  255.         char ARexxDrawer[FMSIZE];
  256.         char ARexxPattern[FMSIZE];
  257.         struct Rec *FirstRec;
  258.         int RecSum;
  259.         struct Rec *CurrentRec;
  260.         int RecNum;
  261.         struct Rec *FindRec;
  262.         struct Rec *SortRec;
  263.         struct Rec **Recpp;     /* Points to either CurrentRec, FindRec or SortRec */
  264.         struct FldInfo *FirstFldInfo;
  265.         struct RxInfo *FirstRxInfo;     /* The rxmenu RFF line */
  266.         struct Layout *FirstLayout;
  267.         struct Layout *CurrentLayout;
  268.         struct Menu *Menu;                              /* Same menustrip for the whole project */
  269.         struct SoftMenu ViewMenu;
  270.         struct SoftMenu ARexxMenu;
  271.         char Mode;
  272.         BOOL IsSorted;
  273.         char Sep;       /* Separator: ; , space or tab */
  274.         char Modified;  /* bit 0 = Record modified, bit 1 = project modified */
  275.  
  276.         BOOL Quiet;             /* Rexx stuff. Don't update GUI */
  277.         short CurrentFldOffset;         /* Rexx stuff */
  278. };
  279.  
  280. /**********************************************************************/
  281. /*                             functions                              */
  282. /**********************************************************************/
  283.  
  284. STRPTR __asm GetString(register __a0 struct LocaleInfo *li,
  285.                        register __d0 LONG stringNum);
  286.  
  287. int DoDial(char *phonenumber);
  288. int DB_CUT(void);
  289. int DB_COPY(void);
  290. int DB_PASTE(void);
  291. BOOL PasteFromClipboard(struct Pro *Pr, struct Rec *crp);
  292.  
  293. int ChangeView(struct Layout *lay);
  294.  
  295. void UpdateRecord(struct Pro *Pr);
  296. BOOL UpdateFld(struct Rec *crp, short offset, char *s);
  297. void UpdateWindow(struct Pro *Pr);
  298. void UpdateDragBar(struct Pro *Pr);
  299. void UpdateGadgets(struct Pro *Pr);
  300.  
  301. struct Rec *FindRecord(struct Pro *Pr, int StartRec, int Dir);
  302. void DoSort(struct Pro *Pr, short offset);
  303. BOOL JumpList(struct Pro *Pr, int delta);
  304.  
  305. char *ReadVisFld(struct Pro *Pr, struct VisFldInfo *vf);
  306. LONG EasyLocRequest(struct Window *w, struct EasyStruct *es, ULONG *idcmp,
  307.  APTR arg1, ...);
  308.  
  309. void SetProMode(struct Pro *Pr, char Mode);
  310. BOOL IsInputBlocked(void);
  311. BOOL BlockInput(struct Window *Win, BOOL Delay);
  312. void FreeInput(struct Window *Win);
  313. Field GetFld(struct Rec *crp, short Offset);
  314.  
  315. extern void ShowError(int errnum, char *text);
  316.  
  317. extern void RFFDelete(struct Pro *);
  318. extern struct RFFTag *FindTag(struct MinList *list, short int id);
  319. extern void DeleteTag(struct RFFTag *ot);
  320. extern void DeleteRFFLine(struct RFFLine *ol);
  321.  
  322. extern struct VisFldInfo *GetVisFldInfo(struct Layout *Lay, struct Gadget *g);
  323.  
  324. extern struct FldInfo *GetFldInfo(struct Pro *, short);
  325. extern BOOL SpeedRenderOn(struct Layout *Lay);
  326. extern void SpeedRenderOff(struct Layout *Lay);
  327. extern void ByeBye(void);
  328. extern struct Layout *NewLayout(struct Pro *Pr);
  329.  
  330.  
  331. /**********************************************************************/
  332. /*                             structures                             */
  333. /**********************************************************************/
  334.  
  335. extern struct NewMenu DesignNewMenu[];
  336. extern Class *TextFieldClass;
  337.