home *** CD-ROM | disk | FTP | other *** search
/ Fresh Fish 8 / FreshFishVol8-CD1.bin / new / util / batch / dosreqtools / dosextensions / requestersrc / rtpalletrequest.c < prev    next >
C/C++ Source or Header  |  1994-11-16  |  4KB  |  159 lines

  1.  
  2. #include <dos/dos.h>
  3. #include <dos/rdargs.h>
  4. #include <clib/dos_protos.h>
  5. #include <stdio.h>
  6. #include <string.h>
  7. #include <exec/lists.h>
  8.  
  9. #include <libraries/reqtools.h>
  10.  
  11. #include <functions.h>
  12.  
  13. static char version_string[] = "$VER: rtPaletteRequest 2.3 (16.11.94)";
  14.  
  15. char MyExtHelp[] =
  16. "Usage : rtPalletRequest  TITLETEXT,COLOR/N/K,POSITION=POS/K,TOPOFFSET=TOP/N/K,LEFTOFFSET=LEFT/N/K,\n"
  17. "                          PUBSCEREEN/K\n\n"
  18. "Parameters:\n\n"
  19. "  TITLETEXT  <text> - Title text for requester window.\n"
  20. "  COLOR       <num> -\n"
  21. "  POSITION    <pos> - Open requester window at <pos>.  Permissible values are:\n"
  22. "                      CENTERSCR, TOPLEFTSCR, CENTERWIN, TOPLEFTWIN, POINTER.\n"
  23. "  TOPOFFSET   <num> - Offset position relative to above.\n"
  24. "  LEFFTOFFSET <num> - Offset position relative to above.\n"
  25. "  PUBSCREEN <screen>- Public screen name.\n";
  26.  
  27. #define TEMPLATE "TITLETEXT,COLOR/N/K,POSITION=POS/K,TOPOFFSET=TOP/N/K,LEFTOFFSET=LEFT/N/K,PUBSCREEN/K"
  28.  
  29. #define OPT_TITLETEXT  0
  30. #define OPT_COLOR   1
  31. #define OPT_POSITION 2
  32. #define OPT_TOPOFFSET 3
  33. #define OPT_LEFTOFFSET 4
  34. #define OPT_PUBSCREEN 5
  35. #define OPT_COUNT 6
  36.  
  37. struct Library *ReqToolsBase;
  38.  
  39. int
  40. main (int argc, char **argv)
  41. {
  42.   int retval = 0;
  43.  
  44.   if (argc)
  45.     {
  46.       /* My custom RDArgs */
  47.       struct RDArgs *myrda;
  48.  
  49.       /* Need to ask DOS for a RDArgs structure */
  50.       if (myrda = (struct RDArgs *) AllocDosObject (DOS_RDARGS, NULL))
  51.     {
  52.       /*
  53.        * The array of LONGs where ReadArgs() will store the data from
  54.        * the command line arguments.  C guarantees that all the array
  55.        * entries will be set to zero.
  56.        */
  57.       LONG *result[OPT_COUNT] =
  58.       {NULL};
  59.  
  60.       /* parse my command line */
  61.       if (ReadArgs (TEMPLATE, result, myrda))
  62.         {
  63.           if (ReqToolsBase = (struct Library *) OpenLibrary ("reqtools.library", LIBRARY_MINIMUM))
  64.         {
  65.           struct rtReqInfo *requester;
  66.  
  67.           if (requester = (struct rtReqInfo *) rtAllocRequest (RT_REQINFO, NULL))
  68.             {
  69.               /*
  70.                * Take care of requester positioning -
  71.                * These flags common to most rt requesters
  72.                */
  73.               if (stricmp (result[OPT_POSITION], "CENTERSCR") == 0)
  74.             requester->ReqPos = REQPOS_CENTERSCR;
  75.               else if (stricmp (result[OPT_POSITION], "TOPLEFTSCR") == 0)
  76.             requester->ReqPos = REQPOS_TOPLEFTSCR;
  77.               else if (stricmp (result[OPT_POSITION], "CENTERWIN") == 0)
  78.             requester->ReqPos = REQPOS_CENTERWIN;
  79.               else if (stricmp (result[OPT_POSITION], "TOPLEFTWIN") == 0)
  80.             requester->ReqPos = REQPOS_TOPLEFTWIN;
  81.               else
  82.             requester->ReqPos = REQPOS_POINTER;
  83.  
  84.               {
  85.             /*
  86.              * Tags will be used to take care ofattributes not directly
  87.              * settable in the rtReqInfo structure
  88.              */
  89.  
  90.             retval = rtPaletteRequest ((result[OPT_TITLETEXT]) ? result[OPT_TITLETEXT] : NULL, requester,
  91.  
  92.                            (result[OPT_COLOR]) ? RTPA_Color : TAG_IGNORE,
  93.                            *result[OPT_COLOR],
  94.             /*
  95.              * Finally,
  96.              * set some more general tags shared by most requesters
  97.              */
  98.                           (result[OPT_TOPOFFSET]) ? RT_TopOffset : TAG_IGNORE,
  99.                           *result[OPT_TOPOFFSET],
  100.                           (result[OPT_LEFTOFFSET]) ? RT_LeftOffset : TAG_IGNORE,
  101.                           *result[OPT_LEFTOFFSET],
  102.                           (result[OPT_PUBSCREEN]) ? RT_PubScrName : TAG_IGNORE,
  103.                           result[OPT_PUBSCREEN],
  104.                           TAG_END);
  105.  
  106.               }
  107.               rtFreeRequest (requester);
  108.             }
  109.           else
  110.             {
  111.               /* Unable to allocate request structure */
  112.               retval = 20;
  113.             }
  114.           CloseLibrary (ReqToolsBase);
  115.         }
  116.           else
  117.         {
  118.           /* Unable to open reqtools.library */
  119.           fprintf (stderr, "rtPalletRequest: Unable to open reqtools.library.\n");
  120.           retval = 20;
  121.         }
  122.           FreeArgs (myrda);
  123.         }
  124.       else
  125.         {
  126.           /*
  127.            * Something went wrong in the parse
  128.            */
  129.  
  130.           if (result[OPT_TITLETEXT] == NULL)
  131.         {
  132.           fprintf (stderr, "\nrtPalletRequest: Required argument missing.\n\n");
  133.         }
  134.           else
  135.         {
  136.           /* something else is wrong */
  137.           fprintf (stderr, "\nrtPalletRequest: Command syntax error.\n\n");
  138.         }
  139.  
  140.           fprintf (stderr, "%s", MyExtHelp);
  141.  
  142.           retval = 20;
  143.         }
  144.       FreeDosObject (DOS_RDARGS, myrda);
  145.     }
  146.       else
  147.     {
  148.       /* Unable to alloc readargs structure */
  149.       retval = 20;
  150.     }
  151.     }
  152.   else
  153.     {
  154.       /* launched from workbench */
  155.     }
  156.  
  157.   return (retval);
  158. }
  159.