home *** CD-ROM | disk | FTP | other *** search
/ AmigActive 6 / AACD06.ISO / AACD / Programming / DOpus4-GPL / Config / dopusbase.h < prev    next >
C/C++ Source or Header  |  2000-01-27  |  15KB  |  404 lines

  1. /*
  2.  
  3. Directory Opus 4
  4. Original GPL release version 4.12
  5. Copyright 1993-2000 Jonathan Potter
  6.  
  7. This program is free software; you can redistribute it and/or
  8. modify it under the terms of the GNU General Public License
  9. as published by the Free Software Foundation; either version 2
  10. of the License, or (at your option) any later version.
  11.  
  12. This program is distributed in the hope that it will be useful,
  13. but WITHOUT ANY WARRANTY; without even the implied warranty of
  14. MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  15. GNU General Public License for more details.
  16.  
  17. You should have received a copy of the GNU General Public License
  18. along with this program; if not, write to the Free Software
  19. Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
  20.  
  21. All users of Directory Opus 4 (including versions distributed
  22. under the GPL) are entitled to upgrade to the latest version of
  23. Directory Opus version 5 at a reduced price. Please see
  24. http://www.gpsoft.com.au for more information.
  25.  
  26. The release of Directory Opus 4 under the GPL in NO WAY affects
  27. the existing commercial status of Directory Opus 5.
  28.  
  29. */
  30.  
  31. /*
  32.  *
  33.  * dopus.library header file
  34.  *
  35.  * Support library for Directory Opus version 3.50+
  36.  *
  37.  * (c) Copyright 1992 Jonathan Potter
  38.  *
  39.  */
  40.  
  41. /* Library base structure */
  42.  
  43. struct DOpusBase {
  44.     struct Library LibNode;
  45.     UBYTE Flags;
  46.     UBYTE pad;
  47.     struct ExecBase *ExecBase;
  48.     struct DosLibrary *DOSBase;
  49.     struct IntuitionBase *IntuitionBase;
  50.     struct GfxBase *GfxBase;
  51.     struct LayersBase *LayersBase;
  52.     /* Private stuff */
  53.     ULONG pdb_cycletop;
  54.     ULONG pdb_cyclebot;
  55.     ULONG pdb_check;
  56.     ULONG pad1;
  57.     ULONG pad2;
  58.     ULONG pad3;
  59.     ULONG pad4;
  60.     ULONG pdb_Flags;
  61.     ULONG SegList;
  62. };
  63.  
  64. /* File requester definition structure */
  65.  
  66. #define DIRBUF_SIZE  256
  67. #define FILEBUF_SIZE 32
  68.  
  69. struct DOpusFileReq {
  70.     char *title;            /* Requester title or NULL for default    */
  71.     char *dirbuf,*filebuf;  /* Buffers for directory and filenames    */
  72.     struct Window *window;  /* Window in screen to appear on          */
  73.     int x,y;                /* x & y position of requester window     */
  74.     int lines;              /* Number of files to display at once     */
  75.     ULONG flags;            /* Flags; see below                       */
  76.     struct DOpusRemember
  77.         *filearraykey;        /* Remember structure for multiple files  */
  78.     char **filearray;       /* Array of multiple files (DFRF_MULTI)   */
  79. };
  80.  
  81. /* Requester flags */
  82.  
  83. #define DFRB_DIRREQ 0 /* Directory requester - no files        */
  84. #define DFRB_MULTI  1 /* Can select more than one file at once */
  85. #define DFRB_SAVE   2 /* Save requester                        */
  86. #define DFRB_FONT   3 /* Font requester                        */
  87.  
  88. #define DFRF_DIRREQ (1<<DFRB_DIRREQ)
  89. #define DFRF_MULTI  (1<<DFRB_MULTI)
  90. #define DFRF_SAVE   (1<<DFRB_SAVE)
  91. #define DFRF_FONT   (1<<DFRB_FONT)
  92.  
  93. /* return values of FileRequest() */
  94.  
  95. #define RETURN_OKAY    1
  96. #define RETURN_CANCEL  0
  97. #define ERROR_NOMEM   -1
  98.  
  99. /* return values of CompareLock() */
  100.  
  101. #define LOCK_DIFFERENT   -1
  102. #define LOCK_SAME         0
  103. #define LOCK_SAME_VOLUME  1
  104.  
  105. /* return values of Assign() */
  106.  
  107. #define ASSIGN_OK     0
  108. #define ASSIGN_NODEV  1
  109. #define ASSIGN_NOMEM  2
  110. #define ASSIGN_CANCEL 3
  111.  
  112. /* DOpusDateTime structure for StampToStr() and StrToStamp() */
  113.  
  114. struct DOpusDateTime {
  115.     struct DateStamp dat_Stamp; /* DOS Datestamp               */
  116.     UBYTE dat_Format;           /* Sets the date string format */
  117.     UBYTE dat_Flags;            /* Flags; see below            */
  118.     char *dat_StrDay;           /* day of the week string      */
  119.     char *dat_StrDate;          /* date string                 */
  120.     char *dat_StrTime;          /* time string                 */
  121.     char **custom_weekdays;     /* array of weekday names      */
  122.     char **custom_shortweekdays;/* array of short weekday names*/
  123.     char **custom_months;       /* array of month names        */
  124.     char **custom_shortmonths;  /* array of short month names  */
  125.     char **custom_special_days; /* array of special days       */
  126. };
  127.  
  128. #define DDTB_SUBST  0 /* Substitute "Today","Tomorrow" where appropriate */
  129. #define DDTB_FUTURE 1 /* "Monday", etc. refers to next not last day      */
  130.  
  131. #define DDTB_CUSTOM 6 /* Custom strings */
  132. #define DDTB_12HOUR 7 /* 12-hour time */
  133.  
  134. #define DDTF_SUBST  (1<<DDTB_SUBST)
  135. #define DDTF_FUTURE (1<<DDTB_FUTURE)
  136.  
  137. #define DDTF_CUSTOM (1<<DDTB_CUSTOM)
  138. #define DDTF_12HOUR (1<<DDTB_12HOUR)
  139.  
  140. #define FORMAT_DOS 0 /* dd-mmm-yy */
  141. #define FORMAT_INT 1 /* yy-mm-dd  */
  142. #define FORMAT_USA 2 /* mm-dd-yy  */
  143. #define FORMAT_CDN 3 /* dd-mm-yy  */
  144. #define FORMAT_AUS FORMAT_CDN
  145.  
  146. /* ListView definition structure */
  147.  
  148. struct DOpusListView {
  149.     ULONG listid;          /* Unique ID number                           */
  150.     struct Window *window; /* Window to add the ListView to              */
  151.     int x,y;               /* x & y position of ListView                 */
  152.     int w,h;               /* Width and height of ListView               */
  153.     char *title;           /* Title of ListView                          */
  154.     char **items;          /* Null-terminated array of items to display  */
  155.     char *selectarray;     /* Table of selection status used with        */
  156.                            /*   DLVB_MULTI. See docs for more info.      */
  157.     ULONG flags;           /* Flags; see below                           */
  158.     int sliderwidth;       /* Width of slider                            */
  159.     int slidercol;         /* Pen colour of slider, -1 for default       */
  160.     int sliderbgcol;       /* Pen colour of slider background            */
  161.     int textcol;           /* Pen colour of general text, -1 for default */
  162.     int boxhi,boxlo;       /* Pen colours of 3D box, -1 for defaults     */
  163.     int arrowfg,arrowbg;   /* Arrow fg/bg colours, -1 for defaults       */
  164.     int itemfg,itembg;     /* Item fg/bg colours, -1 for defaults        */
  165.     int topitem;           /* First item displayed                       */
  166.     int itemselected;      /* Item just clicked on                       */
  167.     struct DOpusListView
  168.         *next;               /* Next ListView to add to window or NULL     */
  169.  
  170.     /* Private stuff */
  171.  
  172.     int oldoffset,count,lines,columns;
  173.     struct DOpusRemember *key;
  174.     struct Gadget *listgads;
  175.     struct Image *listimage;
  176.     struct PropInfo *listprop;
  177.     struct Region *listregion;
  178.     int gadadd,fw,fh,fb,xo,yo,mx,my,chk,ty;
  179.     char ofg,obg,odm;
  180.     char *selected;
  181. };
  182.  
  183. /* ListView flags */
  184.  
  185. #define DLVB_MULTI  0 /* Can multi-select items                              */
  186. #define DLVB_LEAVE  1 /* Leave item selected                                 */
  187. #define DLVB_CHECK  2 /* Select with check marks, used with MULTI and LEAVE  */
  188. #define DLVB_TOGGLE 3 /* Used with LEAVE to toggle item on/off               */
  189. #define DLVB_SLOW   4 /* Specify slow scrolling                              */
  190. #define DLVB_DUMB   5 /* Dumb list; display only - no mouse selection        */
  191. #define DLVB_TTOP   6 /* Title at the top of the list (default to the left)  */
  192. #define DLVB_ENDNL  7 /* End list with a null-string as well as NULL pointer */
  193. #define DLVB_HIREC  8 /* Highlight by recessed borders                       */
  194.  
  195. #define DLVF_MULTI  (1<<DLVB_MULTI)
  196. #define DLVF_LEAVE  (1<<DLVB_LEAVE)
  197. #define DLVF_CHECK  (1<<DLVB_CHECK)
  198. #define DLVF_TOGGLE (1<<DLVB_TOGGLE)
  199. #define DLVF_SLOW   (1<<DLVB_SLOW)
  200. #define DLVF_DUMB   (1<<DLVB_DUMB)
  201. #define DLVF_TTOP   (1<<DLVB_TTOP)
  202. #define DLVF_ENDNL  (1<<DLVB_ENDNL)
  203. #define DLVF_HIREC  (1<<DLVB_HIREC)
  204.  
  205. /* DOpusListView->selectarray flags */
  206.  
  207. #define LVARRAY_SELECTED     1   /* Item is selected */
  208. #define LVARRAY_DISABLED     2   /* Item is disabled */
  209.  
  210. /* DOpusRemember structure, used by LAllocRemember() and LFreeRemember() */
  211.  
  212. struct DOpusRemember {
  213.     struct DOpusRemember *next,*current;
  214.     ULONG size;
  215. };
  216.  
  217. /* Right mouse button gadget text */
  218.  
  219. struct RMBGadgetText {
  220.     char *text;                    /* Text string                      */
  221.     int x,y;                       /* x and y coordinates of text      */
  222.     int w,h;                       /* Width and Height of text area    */
  223.     int fg,bg;                     /* Fg and Bg pens                   */
  224. };
  225.  
  226. /* Right mouse button gadget structure, used by RMBGadget */
  227.  
  228. struct RMBGadget {
  229.     struct RMBGadget *next;        /* Next RMBGadget                 */
  230.     int x,y;                       /* x and y coordinates            */
  231.     int w,h;                       /* Width and Height               */
  232.     int flags;                     /* Flags; see below               */
  233.     int id;                        /* ID number of this RMBGadget    */
  234.     struct RMBGadgetText txt[2];   /* Alternate gadget text displays */
  235.     struct Border *high_bord[2];   /* Borders to highlight with      */
  236. };
  237.  
  238. #define RGB_ALTTEXT 0  /* This gadget has alternate text displays */
  239. #define RGB_ALTBORD 1  /* Highlight with borders */
  240.  
  241. #define RGF_ALTTEXT (1<<RGB_ALTTEXT)
  242. #define RGF_ALTBORD (1<<RGB_ALTBORD)
  243.  
  244. /* Defines used for AddGadgets */
  245.  
  246. #define GAD_NONE  -1
  247. #define GAD_CYCLE 1
  248. #define GAD_CHECK 2
  249. #define GAD_RADIO 3
  250. #define GAD_GLASS 4
  251.  
  252. /* SimpleRequest structure */
  253.  
  254. struct DOpusSimpleRequest {
  255.     char *text;                 /* Text to display            */
  256.     char **gads;                /* Gadget names               */
  257.     int *rets;                  /* Gadget return values       */
  258.     int hi,lo;                  /* 3D hi and lo pen colours   */
  259.     int fg,bg;                  /* Text Fg and Bg pen colours */
  260.     char *strbuf;               /* Buffer for string gadget   */
  261.     int strlen;                 /* Maximum string length      */
  262.     int flags;                  /* Flags, see below           */
  263.     struct TextFont *font;      /* Font to use, must be open  */
  264.     int value;                  /* Generic data               */
  265.     char *title;                /* Title for req with borders */
  266. };
  267.  
  268. #define SRB_LONGINT   0  /* Integer gadget                          */
  269. #define SRB_CENTJUST  1  /* Center justify string (left is default) */
  270. #define SRB_RIGHTJUST 2  /* Right justify string (left is default)  */
  271. #define SRB_GLASS     3  /* Glass gadget                            */
  272. #define SRB_DIRGLASS  4  /* Glass gadget is for directory requester */
  273. #define SRB_BORDERS   5  /* Requester borders                       */
  274. #define SRB_NOCENTER  6  /* Don't center text in requester          */
  275. #define SRB_RECESSHI  7  /* Highlight gadgets by recessing          */
  276. #define SRB_EXTEND    8  /* StringExtend passed in value            */
  277.  
  278. #define SRF_LONGINT   (1<<SRB_LONGINT)
  279. #define SRF_CENTJUST  (1<<SRB_CENTJUST)
  280. #define SRF_RIGHTJUST (1<<SRB_RIGHTJUST)
  281. #define SRF_GLASS     (1<<SRB_GLASS)
  282. #define SRF_DIRGLASS  (1<<SRB_DIRGLASS)
  283. #define SRF_BORDERS   (1<<SRB_BORDERS)
  284. #define SRF_NOCENTER  (1<<SRB_NOCENTER)
  285. #define SRF_RECESSHI  (1<<SRB_RECESSHI)
  286. #define SRF_EXTEND    (1<<SRB_EXTEND)
  287.  
  288.  
  289. /* Function prototypes */
  290.  
  291. void ActivateStrGad(struct Gadget *,struct Window *);
  292. AddGadgets(struct Window *,struct Gadget *,char **,int,int,int,int);
  293. AddListView(struct DOpusListView *,int);
  294. Assign(char *,char *);
  295. Atoh(char *,int);
  296. char *BaseName(char *);
  297. void BtoCStr(BSTR,char *,int);
  298. CheckExist(char *,int *);
  299. CheckHexGad(struct Gadget *,struct Window *,int,int);
  300. CheckNumGad(struct Gadget *,struct Window *,int,int);
  301. CompareDate(struct DateStamp *,struct DateStamp *);
  302. CompareLock(BPTR,BPTR);
  303. void Decode_RLE(char *source,char *dest,int size);
  304. void DisableGadget(struct Gadget *,struct RastPort *,int,int);
  305. void Do3DBox(struct RastPort *,int,int,int,int,int,int);
  306. void Do3DCycleBox(struct RastPort *,int,int,int,int,int,int);
  307. void Do3DFrame(struct RastPort *,int,int,int,int,char *,int,int);
  308. void Do3DStringBox(struct RastPort *,int,int,int,int,int,int);
  309. void DoArrow(struct RastPort *,int,int,int,int,int,int,int);
  310. void DoCycleGadget(struct Gadget *,struct Window *,char **,int);
  311. void DoGlassImage(struct RastPort *,struct Gadget *,int,int,int);
  312. DoRMBGadget(struct RMBGadget *,struct Window *);
  313. DoSimpleRequest(struct Window *,struct DOpusSimpleRequest *);
  314. void DrawCheckMark(struct RastPort *,int,int,int);
  315. void EnableGadget(struct Gadget *,struct RastPort *,int,int);
  316. FileRequest(struct DOpusFileReq *);
  317. void FixSliderBody(struct Window *,struct Gadget *,int,int,int);
  318. void FixSliderPot(struct Window *,struct Gadget *,int,int,int,int);
  319. GetSliderPos(struct Gadget *,int,int);
  320. void GetWBScreen(struct Screen *);
  321. void GhostGadget(struct Gadget *,struct RastPort *,int,int);
  322. void HiliteGad(struct Gadget *,struct RastPort *);
  323. void *LAllocRemember(struct DOpusRemember **,ULONG,ULONG);
  324. struct IORequest *LCreateExtIO(struct MsgPort *,int);
  325. struct MsgPort *LCreatePort(char *,int);
  326. void LDeleteExtIO(struct IORequest *);
  327. void LDeletePort(struct MsgPort *);
  328. void LFreeRemEntry(struct DOpusRemember **,char *);
  329. void LFreeRemember(struct DOpusRemember **);
  330. struct DOpusListView *ListViewIDCMP(struct DOpusListView *,struct IntuiMessage *);
  331. LMatchPattern(char *,char *);
  332. LMatchPatternI(char *,char *);
  333. void LParsePattern(char *,char *);
  334. void LParsePatternI(char *,char *);
  335. void LSprintf(char *,char *,...);
  336. void LStrCat(char *,char *);
  337. LStrCmp(char *,char *);
  338. LStrCmpI(char *,char *);
  339. void LStrCpy(char *,char *);
  340. void LStrnCat(char *,char *,int);
  341. LStrnCmp(char *,char *,int);
  342. LStrnCmpI(char *,char *,int);
  343. void LStrnCpy(char *,char *,int);
  344. char LToLower(char);
  345. char LToUpper(char);
  346. PathName(BPTR,char *,int);
  347. Random(int);
  348. RawkeyToStr(USHORT,USHORT,char *,char *,int);
  349. RefreshListView(struct DOpusListView *,int);
  350. void RefreshStrGad(struct Gadget *,struct Window *);
  351. RemoveListView(struct DOpusListView *,int);
  352. SearchPathList(char *,char *,int);
  353. void Seed(int);
  354. SendPacket(struct MsgPort *,int,ULONG *,int);
  355. void SetBusyPointer(struct Window *);
  356. void ShowSlider(struct Window *,struct Gadget *);
  357. StampToStr(struct DOpusDateTime *);
  358. StrCombine(char *,char *,char *,int);
  359. StrConcat(char *,char *,int);
  360. void StrToLower(char *,char *);
  361. StrToStamp(struct DOpusDateTime *);
  362. void StrToUpper(char *,char *);
  363. TackOn(char *,char *,int);
  364. void UScoreText(struct RastPort *,char *,int,int,int);
  365. struct Image *GetButtonImage(int,int,int,int,int,int,struct DOpusRemember **);
  366. void DrawRadioButton(struct RastPort *,int,int,int,int,int,int);
  367. struct Image *GetCheckImage(int,int,int,struct DOpusRemember **);
  368. struct Window *OpenRequester(struct RequesterBase *);
  369. void CloseRequester(struct RequesterBase *);
  370. APTR AddRequesterObject(struct RequesterBase *,struct TagItem *);
  371. void RefreshRequesterObject(struct RequesterBase *,struct RequesterObject *);
  372. void ObjectText(struct RequesterBase *,short,short,short,short,char *,short);
  373. void CreateGadgetBorders(struct DOpusRemember **,int,int,struct Border **,struct Border **,int,int,int);
  374. void AddGadgetBorders(struct DOpusRemember **,struct Gadget *,int,int,int);
  375. void SelectGadget(struct Window *,struct Gadget *);
  376. FSSetMenuStrip(struct Window *,struct Menu *);
  377.  
  378. /* DOpus-private functions */
  379.  
  380. ReadConfig(char *,struct ConfigStuff *);
  381. SaveConfig(char *,struct ConfigStuff *);
  382. DefaultConfig(struct ConfigStuff *);
  383. GetDevices(struct ConfigStuff *);
  384. AssignGadget(struct ConfigStuff *,int,int,char *,char *);
  385. AssignMenu(struct ConfigStuff *,int,char *,char *);
  386. FreeConfig(struct ConfigStuff *);
  387. CheckConfig(struct ConfigStuff *);
  388. FindSystemFile(char *,char *,int,int);
  389. ReadStringFile(struct StringData *,char *);
  390. FreeStringFile(struct StringData *);
  391.  
  392. #define SYSFILE_COMMAND    0
  393. #define SYSFILE_DATA       1
  394. #define SYSFILE_LIBRARY    2
  395. #define SYSFILE_REXX       3
  396. #define SYSFILE_MODULE     4
  397. #define SYSFILE_REQUESTER  5
  398.  
  399. #define ERROR_NOT_CONFIG -1
  400.  
  401. #ifndef DOPUS_PRAG
  402. #include "dopuspragmas.h"
  403. #endif
  404.