home *** CD-ROM | disk | FTP | other *** search
/ AmigActive 6 / AACD06.ISO / AACD / Programming / DOpus4-GPL / Config / config.h next >
C/C++ Source or Header  |  2000-01-27  |  24KB  |  976 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. #include <fctype.h>
  32. #include <string.h>
  33. #include <stdlib.h>
  34. #include <stdarg.h>
  35. #include <stddef.h>
  36. #include <exec/types.h>
  37. #include <exec/memory.h>
  38. #include <exec/execbase.h>
  39. #include <dos/dos.h>
  40. #include <dos/dosextens.h>
  41. #include <dos/exall.h>
  42. #include <intuition/intuitionbase.h>
  43. #include <intuition/sghooks.h>
  44. #include <graphics/gfxbase.h>
  45. #include <graphics/gfxmacros.h>
  46. #include <workbench/workbench.h>
  47. #include <workbench/startup.h>
  48. #include <proto/all.h>
  49.  
  50. #include "dopusbase.h"
  51. #include "stringdata.h"
  52.  
  53. #define NUM_MODULES 4
  54.  
  55. #define OSVER_34 0
  56. #define OSVER_37 1
  57. #define OSVER_38 2
  58. #define OSVER_39 3
  59. #define OSVER_40 4
  60.  
  61. #define GAD_BASE 1000
  62. #define STRING_BASE 10000
  63. #define REQ_BASE 11000
  64.  
  65. #define CONFIG_STRUCTURE_SIZE 9200
  66.  
  67. #define OLD_CONFIG_VERSION 9999
  68. #define CONFIG_VERSION 10000
  69. #define CONFIG_MAGIC 0xFACE
  70.  
  71. enum {
  72.     FONT_GENERAL,
  73.     FONT_DIRS,
  74.     FONT_TEXT,
  75.     FONT_GADGETS,
  76.     FONT_MENUS,
  77.     FONT_STATUS,
  78.     FONT_NAMES,
  79.     FONT_CLOCK,
  80.     FONT_REQUEST,
  81.     FONT_STRING,
  82.     FONT_ICONIFY,
  83.     FONT_SCREEN,
  84.  
  85.     FONT_COUNT};
  86.  
  87. #define FFLAG_8ONLY   1
  88. #define FFLAG_NOPROP  2
  89.  
  90. #define NUMFLAGS 16
  91. #define MAXFUNCS 32
  92. #define HIDDENLINES 6
  93.  
  94. #define FB_OUTPUTWIN    0
  95. #define FB_OUTPUTFILE   1
  96. #define FB_WB2F         2
  97. #define FB_DOPUS2F      3
  98. #define FB_RUNASYNC     4
  99. #define FB_CDSOURCE     5
  100. #define FB_CDDEST       6
  101. #define FB_DOALLFILES   7
  102. #define FB_RECURSEDIR   8
  103. #define FB_RELOADFILE   9
  104. #define FB_AUTOICONIFY  10
  105. #define FB_NOQUOTE      11
  106. #define FB_RESCANSOURCE 12
  107. #define FB_RESCANDEST   13
  108. #define FB_SHELLSTARTUP 14
  109. #define FB_DOPUSSTARTUP 15
  110.  
  111. #define FF_OUTPUTWIN    (1<<FB_OUTPUTWIN)
  112. #define FF_OUTPUTFILE   (1<<FB_OUTPUTFILE)
  113. #define FF_WB2F         (1<<FB_WB2F)
  114. #define FF_DOPUS2F      (1<<FB_DOPUS2F)
  115. #define FF_RUNASYNC     (1<<FB_RUNASYNC)   
  116. #define FF_CDSOURCE     (1<<FB_CDSOURCE)
  117. #define FF_CDDEST       (1<<FB_CDDEST)
  118. #define FF_DOALLFILES   (1<<FB_DOALLFILES)
  119. #define FF_RECURSEDIR   (1<<FB_RECURSEDIR)
  120. #define FF_RELOADFILE   (1<<FB_RELOADFILE)
  121. #define FF_AUTOICONIFY  (1<<FB_AUTOICONIFY)
  122. #define FF_NOQUOTE      (1<<FB_NOQUOTE)
  123. #define FF_RESCANSOURCE (1<<FB_RESCANSOURCE)
  124. #define FF_RESCANDEST   (1<<FB_RESCANDEST)
  125. #define FF_SHELLSTARTUP (1<<FB_SHELLSTARTUP)
  126. #define FF_DOPUSSTARTUP (1<<FB_DOPUSSTARTUP)
  127.  
  128. #define SFB_AUTOICONIFY  0
  129. #define SFB_CDDEST       1
  130. #define SFB_CDSOURCE     2
  131. #define SFB_DOPUS2F      3
  132. #define SFB_DOALLFILES   4
  133. #define SFB_DOPUSSTARTUP 5
  134. #define SFB_SHELLSTARTUP 6
  135. #define SFB_NOQUOTE      7
  136. #define SFB_OUTPUTFILE   8
  137. #define SFB_OUTPUTWIN    9
  138. #define SFB_RECURSEDIR   10
  139. #define SFB_RELOADFILE   11
  140. #define SFB_RESCANDEST   12
  141. #define SFB_RESCANSOURCE 13
  142. #define SFB_RUNASYNC     14
  143. #define SFB_WB2F         15
  144.  
  145. #define FT_INTERNAL     0
  146. #define FT_EXECUTABLE   1
  147. #define FT_WORKBENCH    2
  148. #define FT_BATCH        3
  149. #define FT_AREXX        4
  150.  
  151. #define FT_REQUESTER    5
  152. #define FT_CHDIR       99
  153.  
  154. #define FC_INTERNAL     '*'
  155. #define FC_WORKBENCH    '%'
  156. #define FC_BATCH        '$'
  157. #define FC_AREXX        '&'
  158. #define FC_REQUESTER    '@'
  159. #define FC_CHDIR        '!'
  160.  
  161. #define MENUCOUNT 100
  162. #define GADCOUNT 84
  163. #define DRIVECOUNT 32
  164. #define NUMFONTS 16
  165. #define USEDRIVECOUNT 30
  166.  
  167. #define FTYC_MATCH        1
  168. #define FTYC_MATCHNAME    2
  169. #define FTYC_MATCHBITS    3
  170. #define FTYC_MATCHCOMMENT 4
  171. #define FTYC_MATCHSIZE    5
  172. #define FTYC_MATCHDATE    6
  173. #define FTYC_MOVETO       7
  174. #define FTYC_MOVE         8
  175. #define FTYC_SEARCHFOR    9
  176. #define FTYC_OR         253
  177. #define FTYC_AND        254
  178. #define FTYC_ENDSECTION 255
  179.  
  180. #define FTYC_ENDLIMIT   252
  181. #define FTYC_COMMANDOK   10
  182. #define FTYC_CYCLEEND    12
  183.  
  184. #define FILETYPE_FUNCNUM   16
  185.  
  186. struct dopusfunction {
  187.     char name[16];
  188.     int which,stack;
  189.     unsigned char key,qual;
  190.     char type,pri,delay;
  191.     char fpen,bpen;
  192.     char pad;
  193.     char *function;
  194. };
  195.  
  196. /*
  197. struct newdopusfunction {
  198.     char *name;
  199.     char *image[2];
  200.     int pad2;
  201.     int which,stack;
  202.     unsigned char key,qual;
  203.     char type,pri,delay;
  204.     char fpen,bpen;
  205.     char pad;
  206.     char *function;
  207. };
  208. */
  209.  
  210. struct newdopusfunction {
  211.     char *name;
  212.     int pad2[3];
  213.     int which,stack;
  214.     unsigned char key,qual;
  215.     char type,pri,delay;
  216.     char fpen,bpen;
  217.     char pad;
  218.     char *function;
  219. };
  220.  
  221. struct dopusfiletype {
  222.     struct dopusfiletype *next;
  223.     char type[32];
  224.     char typeid[8];
  225.     char actionstring[FILETYPE_FUNCNUM][40];
  226.     int which[FILETYPE_FUNCNUM],stack[FILETYPE_FUNCNUM];
  227.     char pri[FILETYPE_FUNCNUM],delay[FILETYPE_FUNCNUM];
  228.     unsigned char *recognition;
  229.     char *function[FILETYPE_FUNCNUM];
  230.     char *iconpath;
  231. };
  232.  
  233. struct fileclass {
  234.     struct fileclass *last,*next;
  235.     char type[32];
  236.     char typeid[8];
  237.     unsigned char *recognition;
  238. };
  239.  
  240. struct dopusgadgetbanks {
  241.     struct newdopusfunction gadgets[GADCOUNT];
  242.     struct dopusgadgetbanks *next;
  243. };
  244.  
  245. struct dopushotkey {
  246.     struct dopushotkey *next;
  247.     UWORD code,qualifier;
  248.     char name[40];
  249.     struct dopusfunction func;
  250. };
  251.  
  252.  
  253. struct Config {
  254.     USHORT version;
  255.     USHORT magic;
  256.  
  257.     char copyflags;
  258.     char deleteflags;
  259.     char errorflags;
  260.     unsigned char generalflags;
  261.     char iconflags;
  262.     char existflags;
  263.     char sepflags;
  264.     char sortflags;
  265.     char dynamicflags;
  266.     char sortmethod[2];
  267.  
  268.     char hotkeyflags;
  269.  
  270.     char menutit[5][16];
  271.     struct newdopusfunction menu[MENUCOUNT];
  272.  
  273.     struct dopusfunction drive[DRIVECOUNT];
  274.  
  275.     char outputcmd[80],output[80];
  276.     int gadgetrows;
  277.  
  278.     char separatemethod[2];
  279.  
  280.     char language[30];
  281.  
  282.     char displaypos[2][16];
  283.     char displaylength[2][16];
  284.  
  285.     char pubscreen_name[80];
  286.  
  287.     USHORT Palette[16];
  288.     char gadgettopcol,gadgetbotcol;
  289.     char statusfg,statusbg;
  290.     char filesfg,filesbg,filesselfg,filesselbg;
  291.     char dirsfg,dirsbg,dirsselfg,dirsselbg;
  292.     char clockfg,clockbg;
  293.     char requestfg,requestbg;
  294.     char disknamefg,disknamebg,disknameselfg,disknameselbg;
  295.     char slidercol,arrowfg,arrowbg,littlegadfg,littlegadbg;
  296.  
  297.     char pad3;
  298.  
  299.     char scrdepth;
  300.     char screenflags;
  301.     int screenmode;
  302.     int scrw,scrh;
  303.     char fontbuf[40];
  304.     char arrowpos[3];
  305.  
  306.     char pad4;
  307.  
  308.     char startupscript[80];
  309.     char dirflags;
  310.     unsigned char bufcount;
  311.  
  312.     char pad5[2];
  313.  
  314.     char autodirs[2][30];
  315.     char pad5a[80];
  316.     UWORD hotkeycode,hotkeyqual;
  317.  
  318.     char toolicon[80],projecticon[80],drawericon[80],defaulttool[80];
  319.     char priority;
  320.     char showdelay,viewbits,fadetime,tabsize;
  321.  
  322.     char pad7[2];
  323.  
  324.     char hiddenbit;
  325.     char showpat[40],hidepat[40];
  326.     char showpatparsed[40],hidepatparsed[40];
  327.     char icontype,scrclktype,showfree;
  328.  
  329.     char pad8;
  330.  
  331.     short iconx,icony;
  332.     short wbwinx,wbwiny;
  333.  
  334.     char configreturnscript[80];
  335.  
  336.     char fontsizes[NUMFONTS];
  337.     char fontbufs[NUMFONTS][40];
  338.  
  339.     char uniconscript[80];
  340.     char sliderbgcol;
  341.  
  342.     char pad_foo;
  343.  
  344.     short scr_winx,scr_winy;
  345.     short scr_winw,scr_winh;
  346.  
  347.     char morepadding[231];
  348.  
  349.     char old_displaypos[2][8];
  350.     char dateformat,addiconflags;
  351.     char stringfgcol,stringbgcol;
  352.     char namelength[2];
  353.     char sliderwidth,sliderheight;
  354.     char formatflags;
  355.     short iconbutx,iconbuty;
  356.     char stringheight;
  357.     char stringselfgcol,stringselbgcol;
  358.     char generalscreenflags;
  359.  
  360.     struct Rectangle scrollborders[2];
  361.  
  362.     char old_displaylength[2][8];
  363.  
  364.     char shellstartup[30];
  365.  
  366.     char windowdelta;
  367.  
  368.     char pad9a[397];
  369.  
  370.     int loadexternal;
  371.  
  372.     ULONG new_palette[48];
  373.  
  374.     char arrowsize[3];
  375.  
  376.     char slider_pos;
  377.  
  378.     short config_x;
  379.     short config_y;
  380.  
  381.     char pad10[1414];
  382. };
  383.  
  384. struct dopusconfigmsg {
  385.     struct Message msg;
  386.     int command;
  387.     char *buffer;
  388. };
  389.  
  390. #define CONFIG_GET_CONFIG 1
  391. #define CONFIG_HERES_CONFIG 2
  392. #define CONFIG_ALL_DONE 3
  393. #define CONFIG_NEW_HOTKEY 4
  394. #define CONFIG_HOTKEYS_CHANGE 5
  395.  
  396. struct configconfig {
  397.     struct Config *config;
  398.     struct dopusfiletype *firsttype;
  399.     struct DOpusRemember *typekey;
  400.     struct dopusgadgetbanks *firstbank;
  401.     int changed;
  402.     char configname[256];
  403.     struct Window *Window;
  404.     struct Screen *Screen;
  405.     struct dopushotkey *firsthotkey;
  406. };
  407.  
  408. extern struct ExtNewScreen configscr;
  409. extern struct NewWindow configwin,requestwin;
  410. extern struct ExecBase *SysBase;
  411. extern struct DOpusBase *DOpusBase;
  412. extern struct GfxBase *GfxBase;
  413. extern struct DosLibrary *DOSBase;
  414. extern struct IntuitionBase *IntuitionBase;
  415. extern struct Screen *Screen;
  416. extern struct Window *Window;
  417. extern struct ViewPort *vp;
  418. extern struct RastPort *rp;
  419. extern struct Process *myproc;
  420. extern struct IntuiMessage *IMsg;
  421. extern APTR wsave,realwsave;
  422. extern char *spacestring;
  423. extern char fontbuf[50];
  424. extern struct TextAttr sfont,bsfont;
  425. extern struct Config *config,*undoconfig;
  426. extern struct dopusfiletype *firsttype;
  427. extern struct dopushotkey *firsthotkey;
  428. extern struct dopusgadgetbanks *firstbank,*curbank;
  429. extern struct DOpusRemember *typekey,*fontkey;
  430. extern char configname[256],loadnamebuf[256];
  431. extern char filebuf[32],dirbuf[258];
  432. extern struct DOpusFileReq filereq;
  433. extern int version2;
  434. extern struct MsgPort *conport,*cmdport,*appport;
  435. /*
  436. extern struct MsgPort *clip_port;
  437. extern struct IOClipReq *clip_io;
  438. */
  439.  
  440. struct ConfigStuff {
  441.     struct Config *config;
  442.     struct DOpusRemember *typekey;
  443.     struct dopusfiletype *firsttype;
  444.     struct dopusgadgetbanks *firstbank,*curbank;
  445.     struct dopushotkey *firsthotkey;
  446. };
  447.  
  448. extern struct ConfigStuff cstuff;
  449. extern struct DOpusRemember *mainkey,*gadgetkey,*tickkey,*screenkey,*clipkey,*buttonkey;
  450. extern struct Gadget *maingad,*tickgad,*gadgads,*menugads,*drivegads;
  451. extern int tickcount;
  452. extern struct dopusconfigmsg msg;
  453.  
  454. extern struct TagItem taglist[2];
  455. extern UWORD drawinfo[];
  456. extern int lchanged,changed;
  457.  
  458. extern struct Image
  459.     *checkonimage,*checkoffimage,
  460.     *buttononimage,*buttonoffimage,
  461.     copy_checkonimage,copy_checkoffimage;
  462.  
  463. #define CTYPE_MOVEREL -3
  464. #define CTYPE_MOVE -2
  465. #define CTYPE_SKIP -1
  466. #define CTYPE_TEXT 1
  467. #define CTYPE_GAD  2
  468. #define CTYPE_STR  3
  469. #define CTYPE_REQ  4
  470. #define CTYPE_RAD  5
  471. #define CTYPE_MRAD  6
  472.  
  473. struct ConfigGadget {
  474.     char type;
  475.     char value;
  476.     int nameentry;
  477.     short x,y;
  478.     short w,h;
  479.     int bit;
  480.     int mutualex;
  481.     char *buffer;
  482.     struct Gadget *gad;
  483. };
  484.  
  485. #define CFG_MAINMENU  11
  486. #define CFG_GADGET    0
  487. #define CFG_DRIVE     1
  488. #define CFG_FILETYPE  2
  489. #define CFG_HOTKEYS   3
  490. #define CFG_MENU      4
  491. #define CFG_OPERATION 5
  492. #define CFG_SCREEN    6
  493. #define CFG_SYSTEM    7
  494. #define CFG_SAVE      8
  495. #define CFG_OKAY      9
  496. #define CFG_CANCEL    10
  497.  
  498. #define OP_COPY       0
  499. #define OP_DATEFORMAT 1
  500. #define OP_DELETE     2
  501. #define OP_ERRORCHECK 3
  502. #define OP_GENERAL    4
  503. #define OP_ICONS      5
  504. #define OP_FORMAT     6
  505. #define OP_UPDATE     7
  506. #define OP_OKAY       8
  507. #define OP_CANCEL     9
  508.  
  509. #define SYS_AMIGADOS    0
  510. #define SYS_CLOCK       1
  511. #define SYS_DIRECTORIES 2
  512. #define SYS_HOTKEYS     3
  513. #define SYS_ICONS       4
  514. #define SYS_MODULES     5
  515. #define SYS_SHOWPATTERN 6
  516. #define SYS_STARTUP     7
  517. #define SYS_VIEWPLAY    8
  518. #define SYS_OKAY        9
  519. #define SYS_CANCEL      10
  520.  
  521. #define GAD_NEXTBANK     0
  522. #define GAD_NEWBANK      1
  523. #define GAD_COPYBANK     2
  524. #define GAD_SWAPBANK     3
  525. #define GAD_DELETEBANK   4
  526. #define GAD_COPYGADGET   5
  527. #define GAD_SWAPGADGET   6
  528. #define GAD_DELETEGADGET 7
  529. #define GAD_OKAY         8
  530. #define GAD_CANCEL       9
  531.  
  532. #define MENU_COPYMENU    0
  533. #define MENU_SWAPMENU    1
  534. #define MENU_DELETEMENU  2
  535. #define MENU_SORTMENU    3
  536. #define MENU_INSERTITEM  4
  537. #define MENU_COPYITEM    5
  538. #define MENU_SWAPITEM    6
  539. #define MENU_DELETEITEM  7
  540. #define MENU_OKAY        8
  541. #define MENU_CANCEL      9
  542. #define MENU_MOVEUP     10
  543. #define MENU_MOVEDOWN   11
  544. #define MENU_SLIDER     12
  545.  
  546. #define DRIVE_GETDRIVES   0
  547. #define DRIVE_COPYBANK    1
  548. #define DRIVE_SWAPBANK    2
  549. #define DRIVE_DELETEBANK  3
  550. #define DRIVE_SORTBANK    4
  551. #define DRIVE_COPYDRIVE   5
  552. #define DRIVE_SWAPDRIVE   6
  553. #define DRIVE_DELETEDRIVE 7
  554. #define DRIVE_OKAY        8
  555. #define DRIVE_CANCEL      9
  556. #define DRIVE_EDITNAME   10
  557. #define DRIVE_EDITSAMPLE 11
  558. #define DRIVE_EDITREQ    12
  559. #define DRIVE_EDITPATH   13
  560.  
  561. #define FILETYPE_NEW          0
  562. #define FILETYPE_SWAP         1
  563. #define FILETYPE_DELETE       2
  564. #define FILETYPE_OKAY         3
  565. #define FILETYPE_CANCEL       4
  566.  
  567. #define HOTKEYS_NEWHOTKEY     0
  568. #define HOTKEYS_DELETE        1
  569. #define HOTKEYS_DUPLICATE     2
  570. #define HOTKEYS_OKAY          3
  571. #define HOTKEYS_SWAP          4
  572. #define HOTKEYS_CANCEL        5
  573.  
  574. #define EDIT_OKAY             0
  575. #define EDIT_CANCEL           1
  576. #define EDIT_EDITCLASS        2
  577. #define EDIT_NAME             3
  578. #define EDIT_SAMPLE           4
  579. #define EDIT_NEWENTRY         5
  580. #define EDIT_DUPLICATE        6
  581. #define EDIT_SWAP             7
  582. #define EDIT_DELETE           8
  583. #define EDIT_STACK            9
  584. #define EDIT_PRIORITY        10
  585. #define EDIT_DELAY           11
  586. #define EDIT_TYPE            12
  587. #define EDIT_FUNC            13
  588. #define EDIT_REQUESTER       14
  589. #define EDIT_PATH            15
  590. #define EDIT_ARGREQ          16
  591. #define EDIT_FILETYPEACTION  17
  592.  
  593. #define CLASS_OKAY           0
  594. #define CLASS_CANCEL         1
  595. #define CLASS_TYPE           3
  596. #define CLASS_NEWENTRY       4
  597. #define CLASS_DUPLICATE      5
  598. #define CLASS_SWAP           6
  599. #define CLASS_DELETE         7
  600. #define CLASS_OPERATION      8
  601. #define CLASS_FUNC           9
  602. #define CLASS_FILEVIEWREQ    10
  603. #define CLASS_FILEVIEW       11
  604. #define CLASS_HEXDEC         12
  605. #define CLASS_VIEWSLIDER     13
  606. #define CLASS_VIEWUP         14
  607. #define CLASS_VIEWDOWN       15
  608. #define CLASS_TYPEID         16
  609.  
  610. #define EDIT_FUNCTIONS    1
  611. #define EDIT_FLAGS        2
  612. #define EDIT_FUNCTIONTYPE 3
  613.  
  614. #define SCREEN_ARROWS     0
  615. #define SCREEN_COLOURS    1
  616. #define SCREEN_FONTS      2
  617. #define SCREEN_GENERAL    3
  618. #define SCREEN_PALETTE    4
  619. #define SCREEN_SCREENMODE 5
  620. #define SCREEN_SLIDERS    6
  621. #define SCREEN_OKAY       7
  622. #define SCREEN_CANCEL     8
  623.  
  624. #define PALETTE_SLIDER    100
  625. #define PALETTE_STRING    103
  626.  
  627. #define COLOURS_SELECT    200
  628.  
  629. #define SCREENMODE_WIDTH      300
  630. #define SCREENMODE_HEIGHT     301
  631. #define SCREENMODE_DEPTH      302
  632. #define SCREENMODE_DEFWIDTH   303
  633. #define SCREENMODE_DEFHEIGHT  304
  634. #define SCREENMODE_HALFHEIGHT 305
  635. #define SCREENMODE_SLIDER     306
  636.  
  637. #define HOTKEY_SAMPLE     400
  638. #define HOTKEY_MMB        401
  639.  
  640. #define FORMAT_MAXNUM 9
  641.  
  642. #define FORMAT_WINDOW      500
  643. #define FORMAT_RESET       501
  644. #define FORMAT_CLEAR       502
  645. #define FORMAT_LENGTH      503
  646. #define FORMAT_SEPARATE    510
  647. #define FORMAT_REVERSESORT 511
  648.  
  649. #define ICON_ICONREQ       600
  650. #define ICON_ICONPATH      601
  651. #define ICON_TOOLREQ       602
  652. #define ICON_TOOLPATH      603
  653.  
  654. #define ARROWBASE          600
  655. #define ARROWCYCLE         610
  656.  
  657. #define FONT_SIZE 700
  658.  
  659. #define SCREEN_SLIDER_LEFTCYCLE 800
  660. #define SCREEN_SLIDER_RIGHTCYCLE 801
  661.  
  662. #define COLBIT_STATUS        0
  663. #define COLBIT_SELDISKNAME   1
  664. #define COLBIT_DISKNAME      2
  665. #define COLBIT_SELDIRECTORY  3
  666. #define COLBIT_DIRECTORY     4
  667. #define COLBIT_SELFILE       5
  668. #define COLBIT_FILE          6
  669. #define COLBIT_SLIDERS       7
  670. #define COLBIT_ARROWS        8
  671. #define COLBIT_TINYGADS      9
  672. #define COLBIT_CLOCK         10
  673. #define COLBIT_REQUESTER     11
  674. #define COLBIT_3DBOXES       12
  675. #define COLBIT_STRINGS       13
  676. #define COLBIT_SELSTRINGS    14
  677.  
  678. #define COLOURS_STATUS       (1<<COLBIT_STATUS)
  679. #define COLOURS_SELDISKNAME  (1<<COLBIT_SELDISKNAME)
  680. #define COLOURS_DISKNAME     (1<<COLBIT_DISKNAME)
  681. #define COLOURS_SELDIRECTORY (1<<COLBIT_SELDIRECTORY)
  682. #define COLOURS_DIRECTORY    (1<<COLBIT_DIRECTORY)
  683. #define COLOURS_SELFILE      (1<<COLBIT_SELFILE)
  684. #define COLOURS_FILE         (1<<COLBIT_FILE)
  685. #define COLOURS_SLIDERS      (1<<COLBIT_SLIDERS)
  686. #define COLOURS_ARROWS       (1<<COLBIT_ARROWS)
  687. #define COLOURS_TINYGADS     (1<<COLBIT_TINYGADS)
  688. #define COLOURS_CLOCK        (1<<COLBIT_CLOCK)
  689. #define COLOURS_REQUESTER    (1<<COLBIT_REQUESTER)
  690. #define COLOURS_3DBOXES      (1<<COLBIT_3DBOXES)
  691. #define COLOURS_STRINGS      (1<<COLBIT_STRINGS)
  692. #define COLOURS_SELSTRINGS   (1<<COLBIT_SELSTRINGS)
  693.  
  694. #define COLOURS_ALL          (1<<32)-1
  695.  
  696. struct ColourSel {
  697.     char item;
  698.     short x1,y1,x2,y2;
  699. };
  700.  
  701. extern struct ColourSel coloursel[];
  702.  
  703. extern char
  704.     *mainmenugads[14],
  705.     *listviewgads[3],
  706.     *listviewgads2[4],
  707.     *operationgads[14],
  708.     *systemgads[14],
  709.     *gadgetgads[11],
  710.     *functypelist[],
  711.     ftype_funcmap[],
  712.     *functypestr[],
  713.     *editfuncgads[6],
  714.     *editfuncgads2[16],
  715.     *gadflaglist[17],
  716.     *editclassgads[10],
  717.     *menugadgets[11],
  718.     *drivegadgets[11],
  719.     *drivegadgets2[5],
  720.     *screengadgets[14],
  721.     *formatgadgets[10],
  722.     *hotkeygadgets[3],
  723.     *arrowgadtxt[4],
  724.     *arrowtypetxt[3],
  725.     *filetypeactiongadgets[11],
  726.  
  727.     *commandlist[95],
  728.     *arglist[18],
  729.     *classopslist[12],
  730.  
  731.     *formatnames[FORMAT_MAXNUM+1],
  732.     *selectedformatnames[FORMAT_MAXNUM+1],
  733.  
  734.     *defdir[],
  735.     *palettegadgets[],*coloursgadgets[],
  736.     *screenmodegadgets[],
  737.     *hotkeysgadgets[],
  738.     *windownames[2],*errorcheckingtxt[],*separatenames[3];
  739.  
  740. extern struct ConfigGadget
  741.     *operationgadgets[8],*systemgadgets[9],scr_generalgadgets[];
  742.  
  743.  
  744. #define UNDO_MAIN      1
  745. #define UNDO_GADGET    2
  746. #define UNDO_MENU      4
  747. #define UNDO_FILETYPE  8
  748. #define UNDO_DRIVE     16
  749. #define UNDO_HOTKEYS   32
  750. #define UNDO_ALL       (UNDO_MAIN|UNDO_GADGET|UNDO_MENU|UNDO_FILETYPE|UNDO_DRIVE|UNDO_HOTKEYS)
  751.  
  752. struct ConfigUndo {
  753.     struct Config *config;
  754.     struct newdopusfunction *menu;
  755.     struct dopusfunction *drive;
  756.     struct dopusfiletype *firsttype;
  757.     struct dopusgadgetbanks *firstbank;
  758.     struct DOpusRemember *key;
  759.     struct dopushotkey *firsthotkey;
  760.     char menutit[5][16];
  761. };
  762.  
  763. extern struct ConfigUndo *makeundo();
  764. extern char *getcopy(),*compilefunclist(),**makefiletypelist(),**makeclasslist();
  765. extern struct dopusgadgetbanks *lastbank();
  766.  
  767. extern int fontplaceflags[],fontplacevals[];
  768. extern struct RMBGadget nextbankrmb,insertbankrmb,formatclearrmb,sampleclearrmb;
  769. extern struct DOpusListView
  770.     editlists[3],cmdlist,screenmodeview,listlist,iconlistview,
  771.     fontsizelistview,fontlistview,fontplacelist,editclasslist,hotkeyslist,
  772.     helplist,filetypeactionlist,
  773.     modulelist,languagelist;
  774. extern char *external_module_list[],*external_module_name[];
  775. extern int external_module_map[];
  776.  
  777. extern struct Gadget
  778.     editfuncgadgets[15],cmdcancelgad,menuslidergads[3],editdrivegadgets[4],
  779.     palettegads[6],coloursgad,screenmodegads[7],editclassgadgets[14],
  780.     listokaygad[3],formatgads[10],hotkeygad,hotkeymmbgad,arrowgadgets[8],
  781.     fontsizegadget,helpgad,helpcancelgad,draggad,icongads[4],depthgads[2],
  782.     screen_sliders_gadgets[];
  783.  
  784. extern struct Image menusliderimage;
  785. extern struct PropInfo menusliderprop,paletteprop[3];
  786.  
  787. extern char
  788.     edit_namebuf[256],edit_stackbuf[7],edit_prioritybuf[5],edit_delaybuf[3],
  789.     edit_funcbuf[256],edit_pathbuf[256],edit_actionbuf[40],
  790.     palette_buf[3][4],screenwidth_buf[6],screenheight_buf[6],screendepth_buf[3],
  791.     formatlen_buf[5][3],fontsize_buf[12],edit_typeidbuf[8];
  792.  
  793. extern struct StringInfo namesinfo,funcsinfo;
  794.  
  795. #ifdef __SASC_60
  796. extern __chip USHORT
  797.     glass_data[2][18],uparrow_data[6],downarrow_data[6],
  798.     pageflip_data1[5],pageflip_data2[3];
  799. #else
  800. extern USHORT
  801.     __chip glass_data[2][18],
  802.     __chip uparrow_data[6],
  803.     __chip downarrow_data[6],
  804.     __chip leftarrow_data[6],
  805.     __chip rightarrow_data[6],
  806.     __chip pageflip_data1[5],
  807.     __chip pageflip_data2[3];
  808. #endif
  809.  
  810. extern struct IntuiMessage *getintuimsg();
  811.  
  812. extern struct newdopusfunction *selgad;
  813. extern struct Gadget *seligad;
  814.  
  815. struct ScreenMode {
  816.     struct ScreenMode *next;
  817.     char name[80];
  818.     UWORD minw,minh;
  819.     UWORD maxw,maxh;
  820.     UWORD defw,defh;
  821.     UWORD maxdepth;
  822.     ULONG mode;
  823. };
  824.  
  825. #define MODE_WORKBENCHUSE        1
  826. #define MODE_WORKBENCHCLONE      2
  827. #define MODE_PUBLICSCREENUSE     3
  828. #define MODE_PUBLICSCREENCLONE   4
  829.  
  830. extern char **screenmodelist;
  831. extern struct ScreenMode *firstmode,*screenmode;
  832. extern struct ScreenMode *showdisplaydesc(),*getscreenmode();
  833.  
  834. #define SCRFLAGS_DEFWIDTH   1
  835. #define SCRFLAGS_DEFHEIGHT  2
  836. #define SCRFLAGS_HALFHEIGHT 4
  837.  
  838. extern struct MenuItem
  839.     projectitems[],edititems[],gadrowsitems[],classitems[],neatstuffitem;
  840. extern struct Menu projectmenu,editmenu,gadrowsmenu,classmenu,neatstuffmenu;
  841.  
  842. extern int changed,curoperation,clipcount;
  843.  
  844. struct Clip {
  845.     struct Clip *next;
  846.     char name[256];
  847.     struct dopusfunction func;
  848. };
  849.  
  850. extern struct Clip *firstclip;
  851.  
  852. extern USHORT defpalettes[11][4],def_dopus_palette[16];
  853. extern struct DOpusListView palettelist,listformatlists[2];
  854. extern int rowtrans[5];
  855.  
  856. extern struct Library *DiskfontBase;
  857. extern struct Library *WorkbenchBase;
  858. extern struct Library *IconBase;
  859. extern struct Library *PPBase;
  860. extern struct TextFont *tfont;
  861. extern char
  862.     *fontdatabuf,**fontlist,*(**fontsizelist),
  863.     **noproplist,*(**nopropsizelist),
  864.     **only8list,*only8sizelist[];
  865.  
  866. extern int gadflagvals[];
  867.  
  868. extern struct fileclass *firstclass;
  869. extern int classopvals[];
  870. extern char classname[256];
  871. extern struct DOpusRemember *helpkey;
  872. extern char *helpbuffer;
  873. extern int helpsize;
  874. extern char currenthelpname[256];
  875.  
  876. extern char **fileclasslist;
  877. extern char *fileclasstype[];
  878. extern char maxlength[5];
  879.  
  880. extern struct StringExtend stringex;
  881.  
  882. extern struct DiskObject dropboxobj;
  883. extern void *appobject;
  884. extern struct AppMessage *appmsg;
  885.  
  886. #define MY_APPOBJECT 1
  887.  
  888. extern unsigned char *fileview_buf;
  889. extern int fileview_lines,fileview_size,fileview_topline,fileview_type,fileview_oldtop;
  890. extern int fileview_offset,fileview_position;
  891. extern char *fileview_types[];
  892.  
  893. extern char *icontypes[],*palettenames[14],*fontplacenames[FONT_COUNT+1];
  894.  
  895. extern struct IntuiText
  896.     newtext,opentext,savetext,saveastext,cuttext,copytext,
  897.     pastetext,erasetext,newclasstext,editclasstext,deleteclasstext,
  898.     clearclasstext,duplicateclasstext,clearcliptext,
  899.     gadrowstext[5],paintmodetext;
  900.  
  901. extern int network;
  902.  
  903. extern char *ftype_funcs[];
  904.  
  905. extern struct StringData stringdata;
  906.  
  907. extern short func_list_items[];
  908.  
  909. extern struct Border *gadget_dog_sel_border,*gadget_dog_unsel_border;
  910. extern struct Border *gadget_sel_border,*gadget_unsel_border;
  911.  
  912. extern int x_off,y_off,x_bot,y_bot;
  913. extern char help_ok;
  914. extern int paint_state,paint_fg,paint_bg;
  915.  
  916. extern int screen_depth;
  917.  
  918. extern short
  919.     editfuncgadgets_xy[15][2],
  920.     editdrivegadgets_xy[4][2],
  921.     menuslidergads_xy[3][2],
  922.     palettegads_xy[6][2],
  923.     coloursgad_xy[2],
  924.     screenmodegads_xy[7][2],
  925.     formatgads_xy[10][2],
  926.     icongads_xy[4][2],
  927.     hotkeymmbgad_xy[2],
  928.     hotkeygad_xy[2],
  929.     arrowgadgets_xy[8][2],
  930.     fontsizegadget_xy[2],
  931.     editclassgadgets_xy[14][2],
  932.     screen_sliders_gadgets_xy[2][2];
  933.  
  934. #define FTFUNC_AUTOFUNC1   0
  935. #define FTFUNC_AUTOFUNC2   1
  936. #define FTFUNC_DOUBLECLICK 2
  937. #define FTFUNC_CLICKMCLICK 3
  938. #define FTFUNC_ANSIREAD    4
  939. #define FTFUNC_AUTOFUNC3   5
  940. #define FTFUNC_HEXREAD     6
  941. #define FTFUNC_LOOPPLAY    7
  942. #define FTFUNC_PLAY        8
  943. #define FTFUNC_AUTOFUNC4   9
  944. #define FTFUNC_READ        10
  945. #define FTFUNC_SHOW        11
  946.  
  947. #define FREQ_FILETYPE  10
  948. #define FREQ_FILECLASS 11
  949. #define FREQ_ARGREQ    12
  950. #define FREQ_PATHREQ   20
  951. #define FREQ_GENERIC   21
  952.  
  953. struct ColourTable {
  954.     ULONG red;
  955.     ULONG green;
  956.     ULONG blue;
  957.     unsigned char pen;
  958.     char alloc;
  959. };
  960.  
  961. extern struct ColourTable screen_pens[16];
  962.  
  963. extern short colour_box_xy[2][16][4],colour_box_num;
  964.  
  965. extern struct ScreenMode *curmode;
  966. extern ULONG palette_backup[48];
  967. extern struct DOpusRemember *borderkey;
  968. extern short palettegad_xy[16][4];
  969. extern int bpg;
  970.  
  971. extern char *left_right_cycle[3];
  972.  
  973. #include "configstrings.h"
  974.  
  975. #include "functions.h"
  976.