home *** CD-ROM | disk | FTP | other *** search
/ Fresh Fish 4 / FreshFish_May-June1994.bin / bbs / amigalib / d998 / texprt.lha / TeXPrt / source / TeXPrtArexx.c < prev   
Encoding:
C/C++ Source or Header  |  1994-04-05  |  11.1 KB  |  248 lines

  1. /***************************************************************************
  2.  *                                                                         *
  3.  *  Filename : TeXPrtArexx.c                                               *
  4.  *                                                                         *
  5.  *  Description : Rountines for Arexx support.                             *
  6.  *                                                                         *
  7.  ***************************************************************************
  8.  *                                                                         *
  9.  *                         Modification History                            *
  10.  *                                                                         *
  11.  *  Date      Author       Comments                                        *
  12.  * ----------------------------------------------------------------------  *
  13.  * 27.2.94    R.Bödi       Created.                                        *
  14.  *  2.3.94    R.Bödi       Added commands SCREENTOFRONT, SCREENTOBACK.     *
  15.  *                                                                         *
  16.  ***************************************************************************
  17.  *                                                                         *
  18.  * Copyright © 1994 Richard Bödi,  All rights reserved.                    *
  19.  *                                                                         *
  20.  ***************************************************************************/
  21.  
  22. /*----------------------------- INCLUDES ----------------------------------*/
  23.  
  24. #include "TeXPrt.h"
  25. #include "TexPrt_protos.h"
  26. #include "TexPrt_globals.h"
  27.  
  28. /*----------------------------- DEFINES -----------------------------------*/
  29.  
  30. #define  REXXERROR   (APTR)1
  31.  
  32. /*---------------------------- PROTOTYPES ---------------------------------*/
  33.  
  34. static APTR __saveds __asm RxConfig (register __a0 struct Hook *, register __a2 APTR *, register __a1 ULONG *);
  35. static APTR __saveds __asm RxCopies (register __a0 struct Hook *, register __a2 APTR *, register __a1 ULONG *);
  36. static APTR __saveds __asm RxDriver (register __a0 struct Hook *, register __a2 APTR *, register __a1 ULONG *);
  37. static APTR __saveds __asm RxDVIFile (register __a0 struct Hook *, register __a2 APTR *, register __a1 ULONG *);
  38. static APTR __saveds __asm RxFrom_To (register __a0 struct Hook *, register __a2 APTR *, register __a1 ULONG *);
  39. static APTR __saveds __asm RxHOffset (register __a0 struct Hook *, register __a2 APTR *, register __a1 ULONG *);
  40. static APTR __saveds __asm RxOption (register __a0 struct Hook *, register __a2 APTR *, register __a1 ULONG *);
  41. static APTR __saveds __asm RxOrientation (register __a0 struct Hook *, register __a2 APTR *, register __a1 ULONG *);
  42. static APTR __saveds __asm RxOutFile (register __a0 struct Hook *, register __a2 APTR *, register __a1 ULONG *);
  43. static APTR __saveds __asm RxPages (register __a0 struct Hook *, register __a2 APTR *, register __a1 ULONG *);
  44. static APTR __saveds __asm RxVOffset (register __a0 struct Hook *, register __a2 APTR *, register __a1 ULONG *);
  45.  
  46. /*---------------------------- GLOBAL DATA --------------------------------*/
  47.  
  48. static struct Hook
  49.    ConfigHook     = { {NULL}, (APTR)RxConfig,      NULL, (APTR)&StructPointers },
  50.    CopiesHook     = { {NULL}, (APTR)RxCopies,      NULL, (APTR)&StructPointers },
  51.    DriverHook     = { {NULL}, (APTR)RxDriver,      NULL, (APTR)&StructPointers },
  52.    DVIFileHook    = { {NULL}, (APTR)RxDVIFile,     NULL, (APTR)&StructPointers },
  53.    From_ToHook    = { {NULL}, (APTR)RxFrom_To,     NULL, (APTR)&StructPointers },
  54.    HOffsetHook    = { {NULL}, (APTR)RxHOffset,     NULL, (APTR)&StructPointers },
  55.    OptionHook     = { {NULL}, (APTR)RxOption,      NULL, (APTR)&StructPointers },
  56.    OrientationHook= { {NULL}, (APTR)RxOrientation, NULL, (APTR)&StructPointers },
  57.    OutFileHook    = { {NULL}, (APTR)RxOutFile,     NULL, (APTR)&StructPointers },
  58.    PagesHook      = { {NULL}, (APTR)RxPages,       NULL, (APTR)&StructPointers },
  59.    VOffsetHook    = { {NULL}, (APTR)RxVOffset,     NULL, (APTR)&StructPointers };
  60.  
  61. struct MUI_Command ARexxCommandList[] =
  62. {
  63.     { "CONFIG",       "SAVE/S,SAVEAS/K",            2,                &ConfigHook },
  64.     { "COPIES",       "NUMBER/A/N",                 1,                &CopiesHook },
  65.     { "DRIVER",       "NAME/A",                     1,                &DriverHook },
  66.     { "DVIFILE",      "FILE/A",                     1,                &DVIFileHook },
  67.     { "FROM_TO",      "DOCUMENT/S,FROM/N/K,TO/N/K", 3,                &From_ToHook },
  68.     { "HOFFSET",      "MM/A/N",                     1,                &HOffsetHook },
  69.     { "OPTION",       "NUMBER/A/N,ON/S,OFF/S",      3,                &OptionHook },
  70.     { "ORIENTATION",  "PORTRAIT/S,LANDSCAPE/S",     2,                &OrientationHook },
  71.     { "OUTFILE",      "FILE/A",                     1,                &OutFileHook },
  72.     { "PAGES",        "ALL/S,ODD/S,EVEN/S",         3,                &PagesHook },
  73.     { "PRINT",         (char *)MC_TEMPLATE_ID,      ID_PRINTAREXX,    NULL },
  74.     { "TOBACK",        (char *)MC_TEMPLATE_ID,      ID_TOBACK,        NULL },
  75.     { "TOFRONT",       (char *)MC_TEMPLATE_ID,      ID_TOFRONT,       NULL },
  76.     { "SCREENTOBACK",  (char *)MC_TEMPLATE_ID,      ID_SCREENTOBACK,  NULL },
  77.     { "SCREENTOFRONT", (char *)MC_TEMPLATE_ID,      ID_SCREENTOFRONT, NULL },
  78.     { "VOFFSET",      "MM/A/N",                     1,                &VOffsetHook },
  79.     { NULL,           NULL,                         NULL,             NULL },
  80. };
  81.  
  82.  
  83. /*------------------------------- CODE ------------------------------------*/
  84.  
  85. static APTR __saveds __asm RxConfig (register __a0 struct Hook *Hook, register __a2 APTR *Object, register __a1 ULONG *Parms)
  86.  
  87. {
  88. struct StructPointers   *SP = (struct StructPointers *)Hook->h_Data;
  89.  
  90. if (Parms[0])
  91.    {
  92.    if (SaveDriverSpec (SP->AvailDrivers->DriverFiles + SP->DriverNumber * NAMELENGTH,
  93.                        SP->TeXDriver, SP->RawSettings, SP->DefaultSettings, SP->MUIPointers))
  94.       return (NULL);
  95.    else
  96.       return (REXXERROR);
  97.    }
  98.  
  99. if (Parms[1])
  100.    {
  101.    if (SaveDriverSpec ((char *)Parms[1], SP->TeXDriver, SP->RawSettings, SP->DefaultSettings, SP->MUIPointers))
  102.       return (NULL);
  103.    else
  104.       return (REXXERROR);
  105.    }
  106.  
  107. return (REXXERROR);
  108. }
  109.  
  110. /*-------------------------------------------------------------------------*/
  111.  
  112. static APTR __saveds __asm RxCopies (register __a0 struct Hook *Hook, register __a2 APTR *Object, register __a1 ULONG *Parms)
  113.  
  114. {
  115. return ((APTR)SetAttrs (((struct StructPointers *)Hook->h_Data)->MUIPointers->STR_Copies,
  116.                         MUIA_String_Integer, abs(*((long *)Parms[0])), TAG_DONE));
  117. }
  118.  
  119. /*-------------------------------------------------------------------------*/
  120.  
  121. static APTR __saveds __asm RxDriver (register __a0 struct Hook *Hook, register __a2 APTR *Object, register __a1 ULONG *Parms)
  122.  
  123. {
  124. int                     DriverNo;
  125. struct StructPointers  *SP = (struct StructPointers *)Hook->h_Data;
  126.  
  127. for (DriverNo = 0; DriverNo < SP->AvailDrivers->NoOfDrivers; DriverNo++)
  128.    if (!strcmp (SP->AvailDrivers->DriverNames + DriverNo * NAMELENGTH, (char *)Parms[0]))
  129.       {
  130.       DoMethod (SP->MUIPointers->app, MUIM_Application_SetMenuCheck, ID_DRIVER + SP->DriverNumber, FALSE);
  131.       DoMethod (SP->MUIPointers->app, MUIM_Application_SetMenuCheck, ID_DRIVER + DriverNo, TRUE);
  132.       if (LoadDriverSpec (SP, DriverNo))
  133.          {
  134.          UpdateGUI (SP->MUIPointers, SP->DefaultSettings, SP->ParsedSettings);
  135.          return (NULL);
  136.          }
  137.       break;
  138.       }
  139.  
  140. return (REXXERROR);
  141. }
  142.  
  143. /*-------------------------------------------------------------------------*/
  144.  
  145. static APTR __saveds __asm RxDVIFile (register __a0 struct Hook *Hook, register __a2 APTR *Object, register __a1 ULONG *Parms)
  146.  
  147. {
  148. return ((APTR)SetAttrs (((struct StructPointers *)Hook->h_Data)->MUIPointers->STR_DVIFile,
  149.                         MUIA_String_Contents, (char *)Parms[0], TAG_DONE));
  150. }
  151.  
  152. /*-------------------------------------------------------------------------*/
  153.  
  154. static APTR __saveds __asm RxFrom_To (register __a0 struct Hook *Hook, register __a2 APTR *Object, register __a1 ULONG *Parms)
  155.  
  156. {
  157. ULONG          Error;
  158. enum PageSel   PageSel = FROMTO;
  159.  
  160. if (Parms[0])
  161.    PageSel = DOCUMENT;
  162.  
  163. if (Parms[1])
  164.    Error = SetAttrs (((struct StructPointers *)Hook->h_Data)->MUIPointers->STR_From,
  165.                      MUIA_String_Integer, *((long *)Parms[1]), TAG_DONE);
  166.  
  167. if (Parms[2])
  168.    Error |= SetAttrs (((struct StructPointers *)Hook->h_Data)->MUIPointers->STR_To,
  169.                       MUIA_String_Integer, *((long *)Parms[2]), TAG_DONE);
  170.  
  171. Error |= SetAttrs (((struct StructPointers *)Hook->h_Data)->MUIPointers->RAD_FromTo,
  172.                    MUIA_Radio_Active, PageSel, TAG_DONE);
  173.  
  174. return ((APTR)Error);
  175. }
  176.  
  177. /*-------------------------------------------------------------------------*/
  178.  
  179. static APTR __saveds __asm RxHOffset (register __a0 struct Hook *Hook, register __a2 APTR *Object, register __a1 ULONG *Parms)
  180.  
  181. {
  182. return ((APTR)SetAttrs (((struct StructPointers *)Hook->h_Data)->MUIPointers->STR_X,
  183.                         MUIA_String_Integer, *((long *)Parms[0]), TAG_DONE));
  184. }
  185.  
  186. /*-------------------------------------------------------------------------*/
  187.  
  188. static APTR __saveds __asm RxOption (register __a0 struct Hook *Hook, register __a2 APTR *Object, register __a1 ULONG *Parms)
  189.  
  190. {
  191. BOOL  On = FALSE;
  192. long  OptionNo = *((long *)Parms[0]) - 1;
  193.  
  194. if (Parms[1]) On = TRUE;
  195.  
  196. if ((OptionNo >= 0) && (OptionNo < OPTIONS))
  197.    return ((APTR)SetAttrs (((struct StructPointers *)Hook->h_Data)->MUIPointers->CHM_Option[OptionNo], MUIA_Selected, On, TAG_DONE));
  198. else
  199.    return (REXXERROR);
  200. }
  201.  
  202. /*-------------------------------------------------------------------------*/
  203.  
  204. static APTR __saveds __asm RxOrientation (register __a0 struct Hook *Hook, register __a2 APTR *Object, register __a1 ULONG *Parms)
  205.  
  206. {
  207. enum Orientation  Orientation = PORTRAIT;
  208.  
  209. if (Parms[1])  Orientation = LANDSCAPE;
  210.  
  211. return ((APTR)SetAttrs (((struct StructPointers *)Hook->h_Data)->MUIPointers->RAD_Orientation,
  212.                         MUIA_Radio_Active, Orientation, TAG_DONE));
  213. }
  214.  
  215. /*-------------------------------------------------------------------------*/
  216.  
  217. static APTR __saveds __asm RxOutFile (register __a0 struct Hook *Hook, register __a2 APTR *Object, register __a1 ULONG *Parms)
  218.  
  219. {
  220. return ((APTR)SetAttrs (((struct StructPointers *)Hook->h_Data)->MUIPointers->STR_OutFile,
  221.                         MUIA_String_Contents, (char *)Parms[0], TAG_DONE));
  222. }
  223.  
  224. /*-------------------------------------------------------------------------*/
  225.  
  226. static APTR __saveds __asm RxPages (register __a0 struct Hook *Hook, register __a2 APTR *Object, register __a1 ULONG *Parms)
  227.  
  228. {
  229. enum PageType  PageType = ALL;
  230.  
  231. if (Parms[1]) PageType = ODD;
  232. if (Parms[2]) PageType = EVEN;
  233.  
  234. return ((APTR)SetAttrs (((struct StructPointers *)Hook->h_Data)->MUIPointers->RAD_OddEven,
  235.                         MUIA_Radio_Active, PageType, TAG_DONE));
  236. }
  237.  
  238. /*-------------------------------------------------------------------------*/
  239.  
  240. static APTR __saveds __asm RxVOffset (register __a0 struct Hook *Hook, register __a2 APTR *Object, register __a1 ULONG *Parms)
  241.  
  242. {
  243. return ((APTR)SetAttrs (((struct StructPointers *)Hook->h_Data)->MUIPointers->STR_Y,
  244.                         MUIA_String_Integer, *((long *)Parms[0]), TAG_DONE));
  245. }
  246.  
  247. /*---------------------------- END OF FILE --------------------------------*/
  248.