home *** CD-ROM | disk | FTP | other *** search
/ Club Amiga de Montreal - CAM / CAM_CD_1.iso / files / 632.lha / ParM_v3.6 / ParM_Src.lzh / ParM_Src / ParMBase.h < prev    next >
Encoding:
C/C++ Source or Header  |  1992-02-13  |  6.7 KB  |  213 lines

  1. /*
  2.  *    ParMBase.h - Copyright © 1991 by S.R. & P.C.
  3.  *
  4.  *    Created:    22 Mar 1991  17:28:15
  5.  *    Modified:    12 Feb 1992  20:45:40
  6.  *
  7.  *    Make>> make
  8.  */
  9.  
  10. #define CMDBUFSIZE    255        /* MUST be odd for alignement in ParMConfig */
  11.  
  12. #define DEFAULT_CMD_WINDOW        "CON:0000/0011/0640/0100/Command window/auto/close/wait"
  13. #define DEFAULT_SHELL_WINDOW    "CON:0000/0011/0640/0100/Shell/close"
  14. #define DEFAULT_SHELL_CMD        "NewShell"
  15. #define DEFAULT_WAIT_CMD        "WaitReturn"
  16. #define DEFAULT_TMP_DIR            "T:"
  17. #define DEFAULT_MOUSEOPT_FILE    "Devs:Mouse.Opt"
  18.  
  19.  
  20. /* This only for Mouse stuff */
  21.  
  22. struct MouseOpt {
  23.     USHORT Version;                /* Version of this Mouse.Opt file */
  24.     BYTE HandlerPri;            /* Input Handler priority */
  25.     UBYTE NClick;                /* Number of click before WindowToFront() ( = 0 if not ) */
  26.     USHORT Flags;                /* See below */
  27.     USHORT Threshold;            /* Threshold: minimum varation before acceleration */
  28.     USHORT Acc;                    /* Acceleration factor */
  29.     SHORT SunMouse;                /* Auto activate window */
  30.     USHORT MouseBlank;            /* Time before mouse blank, zero to disable */
  31.     USHORT ScreenBlank;            /* Time before screen blank, zero to disable */
  32.     USHORT WTFQual;                /* Qualifier for Window to front */
  33. };
  34.  
  35. #define MOUSEOPT_VERSION    2
  36.  
  37. #define MO_SCREENTOBACK        0x0001
  38. #define MO_WINDOWTOBACK        0x0002
  39.  
  40.  
  41. struct Extended_WBStartup {
  42.     struct WBStartup WBStartup;
  43.     struct WBArg *ArgArray;
  44.     short ArrayLength;
  45.     long Stack;
  46. };
  47.  
  48.  
  49. struct RunInfo {
  50.     char  *ri_Cmd;        /* Command */
  51.     char  *ri_Args;        /* Command arguments */
  52.     char  *ri_Window;    /* Console when mode = CLI */
  53.     long  ri_Stack;        /* Stack for command */
  54.     short ri_Pri;        /* Pri of command */
  55. };
  56.  
  57.  
  58. struct Extended_MenuItem {
  59.     struct MenuItem emi_MenuItem;
  60.     struct RunInfo emi_RunInfo;
  61.     SHORT emi_Mode;                    /* TOK_ARUN | TOK_RUN | TOK_WB | TOK_CFG */
  62.     USHORT emi_Flags;                /* See below */
  63. };
  64.  
  65. #define EMIF_WBTOFRONT    0x0001        /* Bring WB screen to front just after running cmd */
  66.  
  67.  
  68. struct AutoCmd {
  69.     struct AutoCmd *ac_Next;
  70.     struct RunInfo ac_RunInfo;        /* Cmd associated with file type */
  71.     ULONG  ac_FileType;                /* Type of the file */
  72.     SHORT  ac_Mode;                    /* TOK_ARUN | TOK_RUN | TOK_WB | TOK_CFG */
  73.     USHORT ac_Flags;                /* Same as emi_Flags */
  74. };
  75.  
  76.  
  77. struct ParMConfig {
  78.     struct Window *Win;
  79.     struct Menu *LinkMenu;
  80.     char CurCfg[80];
  81.     char CmdWindow[80];
  82.     char ShellWindow[80];
  83.     char ShellCmd[80];
  84.     char WaitCmd[80];
  85.     char TmpDir[40];
  86.     char *ReqTitle;
  87.     long DefaultStack;
  88.     short MenuPen;
  89.     short ItemHeight;        /* Obsolete */
  90.     USHORT ShortCutQual;
  91.     BOOL SimpleCmdMode;
  92.     char CommandBuffer[CMDBUFSIZE+1];
  93.     struct AutoCmd *AutoCmdList;
  94.     ULONG (*GetFileTypeID)(char *IDString);
  95.     SHORT ReservedFutureUse[6];
  96.     /* Reserved internal use */
  97.     struct Menu *CurrentMenu;
  98.     struct MenuItem *CurrentSubMenu;
  99.     struct MenuItem **CurrentItem;
  100.     struct Remember *MemList;
  101.     char *mem;            /* local to Malloc() */
  102.     size_t Avail;        /* local to Malloc() */
  103. };
  104.  
  105.  
  106. /* ParM Events flags */
  107. #define PEF_PASSTHROUGH        0x0001
  108. #define PEF_SCREENTOFRONT    0x0002
  109. #define PEF_NOCHECK            0x0004
  110. #define PEF_OUT_OF_ORDER    0x0008
  111.  
  112.  
  113. struct ParMBase {
  114.     struct Library pb_Lib;
  115.     ULONG  pb_SegList;                    /* seg list of lib itself */
  116.     struct ArpBase  *ArpBase;            /* Copy of ArpBase */
  117.     struct ReqLib   *ReqBase;            /* Copy of reqBase */
  118.     struct IconBase *IconBase;            /* Copy of IconBase */
  119.     struct LayersBase *LayersBase;        /* Copy of LayersBase */
  120.     struct MsgPort  pb_MsgPort;            /* For WB replies */
  121.     short  pb_MsgCnt;                    /* Number of WB running processes */
  122. };
  123.  
  124.  
  125. /* Tokens.h  */
  126.  
  127. #define TOK_ITEM            1
  128. #define TOK_ARUN            2
  129. #define TOK_RUN                3
  130. #define TOK_SHELL            4
  131. #define TOK_WB                5
  132. #define TOK_CFG                6
  133. #define TOK_WIN                7
  134. #define TOK_PRI                8
  135. #define TOK_STACK            9
  136. #define TOK_MENU            10
  137. #define TOK_SUBMENU            11
  138. #define TOK_ENDSUBMENU        12
  139. #define TOK_COLOR            13
  140. #define TOK_CMDWIN            14
  141. #define TOK_SHELLWIN        15
  142. #define TOK_SHELLCMD        16
  143. #define TOK_WAITCMD            17
  144. #define TOK_TMPDIR            18
  145. #define TOK_SHORTCUTQUAL    19
  146. #define TOK_ACTIVATEKEY        20
  147. #define TOK_PASSTHROUGH        21
  148. #define TOK_SCREENTOFRONT    22
  149. #define TOK_NOCHECK            23
  150. #define TOK_WBTF            24
  151. #define TOK_AUTOCMD            25
  152. #define TOK_STR                26    /* not a keyword! */
  153.  
  154. #define MAX_KEYWORD 25
  155.  
  156.  
  157. long ParseMenus(struct ParMConfig *PCfg);
  158. void FreeMenus(struct ParMConfig *PCfg);
  159. long ARun(struct ParMConfig *PCfg, struct RunInfo *Command);
  160. long Run(struct ParMConfig *PCfg, struct RunInfo *Command, BYTE Mode);
  161. long WBRun(struct ParMConfig *PCfg, struct Extended_WBStartup *EWBS, BYTE Pri);
  162. long GetTool(struct ParMConfig *PCfg, struct Extended_WBStartup *EWBS, long Stack);
  163. long MakeWBArg(struct ParMConfig *PCfg, struct WBArg *WBArg, char *Cmd);
  164. struct Extended_WBStartup *MakeWBStartup(struct ParMConfig *PCfg, struct RunInfo *Command);
  165. void WBFree(struct Extended_WBStartup *EWBS);
  166. void Command(struct ParMConfig *PCfg);
  167. void ParseLine(char *cmd);
  168. char *DosError(long);
  169. char *StrIoErr(void);
  170. ULONG MakeMenuShortCut(struct Menu *M, ULONG c);
  171. void InitDefaults(struct ParMConfig *PCfg);
  172. void FreeRepliedWBMessages(void);
  173. void NewMinList(struct MinList *MinList);
  174. char *CopyStr(char *str);
  175. void FreeStr(char *str);
  176. long IsHidden(struct Window *W);
  177. struct Window *GetWindow(void);
  178. struct IORequest *CreateExtIO(struct MsgPort *ioReplyPort, long size);
  179. void CleanUp(struct Menu *Menu, short LeftEdge, short ItemHeight);
  180. void NewCleanUp(struct Menu *Menu, struct TextAttr *MenuFont, short LeftEdge);
  181. void UpdateParMEventsWindow(struct Window *OldWindow, struct Window *NewWindow);
  182. void UpdateMouseOpt(struct MouseOpt *NewMouseOpt);
  183. void GetCurrentMouseOpt(struct MouseOpt *MouseOpt);
  184.  
  185. #pragma amicall(ParMBase, 0x1e, ParseMenus(a0))
  186. #pragma amicall(ParMBase, 0x24, FreeMenus(a0))
  187. #pragma amicall(ParMBase, 0x2a, ARun(a0,a1))
  188. #pragma amicall(ParMBase, 0x30, Run(a0,a1,d0))
  189. #pragma amicall(ParMBase, 0x36, WBRun(a0,a1,d0))
  190. #pragma amicall(ParMBase, 0x3c, GetTool(a0,a1,d0))
  191. #pragma amicall(ParMBase, 0x42, MakeWBArg(a0,a1,a2))
  192. #pragma amicall(ParMBase, 0x48, MakeWBStartup(a0,a1))
  193. #pragma amicall(ParMBase, 0x4e, WBFree(a0))
  194. #pragma amicall(ParMBase, 0x54, Command(a0))
  195. #pragma amicall(ParMBase, 0x5a, ParseLine(a0))
  196. #pragma amicall(ParMBase, 0x60, DosError(d0))
  197. #pragma amicall(ParMBase, 0x66, StrIoErr())
  198. #pragma amicall(ParMBase, 0x6c, MakeMenuShortCut(a0,d0))
  199. #pragma amicall(ParMBase, 0x72, InitDefaults(a0))
  200. #pragma amicall(ParMBase, 0x78, FreeRepliedWBMessages())
  201. #pragma amicall(ParMBase, 0x7e, NewMinList(a0))
  202. #pragma amicall(ParMBase, 0x84, CopyStr(a0))
  203. #pragma amicall(ParMBase, 0x8a, FreeStr(a0))
  204. #pragma amicall(ParMBase, 0x90, IsHidden(a0))
  205. #pragma amicall(ParMBase, 0x96, GetWindow())
  206. #pragma amicall(ParMBase, 0x9c, CreateExtIO(a0, d0))
  207. #pragma amicall(ParMBase, 0xa2, CleanUp(a0, d0, d1))
  208. #pragma amicall(ParMBase, 0xa8, NewCleanUp(a0, a1, d0))
  209. #pragma amicall(ParMBase, 0xae, UpdateParMEventsWindow(a0, a1))
  210. #pragma amicall(ParMBase, 0xb4, UpdateMouseOpt(a0))
  211. #pragma amicall(ParMBase, 0xba, GetCurrentMouseOpt(a0))
  212.  
  213.