home *** CD-ROM | disk | FTP | other *** search
/ Fresh Fish 8 / FreshFishVol8-CD1.bin / new / util / batch / dosreqtools / dosextensions / requestersrc / rtpaletterequest.c < prev    next >
C/C++ Source or Header  |  1994-11-16  |  5KB  |  178 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. "\n"
  17. "Useage: rtPaletteRequest\n"  
  18. "\n"
  19. " TITLE/A,COLOR/N/K,POSITION=POS/K,TOPOFFSET=TOP/N/K,LEFTOFFSET=LEFT/N/K,\n"
  20. " PUBSCREEN/K\n" 
  21. "\n"
  22. "Arguments:\n"
  23. "\n"
  24. "  TITLE      <text> - Title text for requester window.\n"
  25. "  COLOR             - Default color register.\n"
  26. "  POSITION    <pos> - Open requester window at <pos>.  Permissible values are:\n"
  27. " >or POS              CENTERSCR, TOPLEFTSCR, CENTERWIN, TOPLEFTWIN, POINTER.\n"
  28. "  TOPOFFSET   <num> - Offset position relative to above.\n"
  29. " >or TOP\n"
  30. "  LEFFTOFFSET <num> - Offset position relative to above.\n"
  31. " >or LEFT\n"
  32. "  PUBSCREEN <screen>- Public screen name.\n";
  33.  
  34. #define TEMPLATE "TITLE/A,COLOR/N/K,POSITION=POS/K,TOPOFFSET=TOP/N/K,LEFTOFFSET=LEFT/N/K,PUBSCREEN/K"
  35.  
  36. #define OPT_TITLE  0
  37. #define OPT_COLOR   1
  38. #define OPT_POSITION 2
  39. #define OPT_TOPOFFSET 3
  40. #define OPT_LEFTOFFSET 4
  41. #define OPT_PUBSCREEN 5
  42. #define OPT_COUNT 6
  43.  
  44. struct Library *ReqToolsBase;
  45.  
  46. int
  47. main (int argc, char **argv)
  48. {
  49.   int retval = 0;
  50.  
  51.   if (argc)
  52.     {
  53.       if ((argc == 2) && (stricmp (argv[1], "HELP") == 0))
  54.     {
  55.       fprintf (stdout, "%s", MyExtHelp);
  56.     }
  57.       else
  58.       {
  59.     /* My custom RDArgs */
  60.     struct RDArgs *myrda;
  61.  
  62.     /* Need to ask DOS for a RDArgs structure */
  63.     if (myrda = (struct RDArgs *) AllocDosObject (DOS_RDARGS, NULL))
  64.       {
  65.         /*
  66.            * The array of LONGs where ReadArgs() will store the data from
  67.            * the command line arguments.  C guarantees that all the array
  68.            * entries will be set to zero.
  69.          */
  70.         LONG *result[OPT_COUNT] =
  71.         {NULL};
  72.  
  73.         /* parse my command line */
  74.         if (ReadArgs (TEMPLATE, result, myrda))
  75.           {
  76.         if (ReqToolsBase = (struct Library *) OpenLibrary ("reqtools.library", LIBRARY_MINIMUM))
  77.           {
  78.             struct rtReqInfo *requester;
  79.  
  80.             if (requester = (struct rtReqInfo *) rtAllocRequest (RT_REQINFO, NULL))
  81.               {
  82.             /*
  83.                * Take care of requester positioning -
  84.                * These flags common to most rt requesters
  85.              */
  86.             if (stricmp (result[OPT_POSITION], "CENTERSCR") == 0)
  87.               requester->ReqPos = REQPOS_CENTERSCR;
  88.             else if (stricmp (result[OPT_POSITION], "TOPLEFTSCR") == 0)
  89.               requester->ReqPos = REQPOS_TOPLEFTSCR;
  90.             else if (stricmp (result[OPT_POSITION], "CENTERWIN") == 0)
  91.               requester->ReqPos = REQPOS_CENTERWIN;
  92.             else if (stricmp (result[OPT_POSITION], "TOPLEFTWIN") == 0)
  93.               requester->ReqPos = REQPOS_TOPLEFTWIN;
  94.             else
  95.               requester->ReqPos = REQPOS_POINTER;
  96.  
  97.             {
  98.                 struct Process *process = (struct Process *) FindTask (NULL);
  99.                 APTR windowptr = process->pr_WindowPtr;
  100.  
  101.               /*
  102.                  * Tags will be used to take care ofattributes not directly
  103.                  * settable in the rtReqInfo structure
  104.                */
  105.  
  106.               retval = (rtPaletteRequest ((result[OPT_TITLE]) ? result[OPT_TITLE] : NULL, requester,
  107.  
  108.                   (result[OPT_COLOR]) ? RTPA_Color : TAG_IGNORE,
  109.                              *result[OPT_COLOR],
  110.               /*
  111.                  * Finally,
  112.                  * set some more general tags shared by most requesters
  113.                */
  114.                              (result[OPT_TOPOFFSET]) ? RT_TopOffset : TAG_IGNORE,
  115.                              *result[OPT_TOPOFFSET],
  116.                              (result[OPT_LEFTOFFSET]) ? RT_LeftOffset : TAG_IGNORE,
  117.                              *result[OPT_LEFTOFFSET],
  118.                 (windowptr) ? RT_Window : TAG_IGNORE,
  119.                 windowptr,
  120.                              (result[OPT_PUBSCREEN]) ? RT_PubScrName : TAG_IGNORE,
  121.                              result[OPT_PUBSCREEN],
  122.                              TAG_END)) ? TRUE : FALSE;
  123.  
  124.             }
  125.             rtFreeRequest (requester);
  126.               }
  127.             else
  128.               {
  129.             /* Unable to allocate request structure */
  130.             retval = 20;
  131.               }
  132.             CloseLibrary (ReqToolsBase);
  133.           }
  134.         else
  135.           {
  136.             /* Unable to open reqtools.library */
  137.             fprintf (stderr, "rtPalletRequest: Unable to open reqtools.library.\n");
  138.             retval = 20;
  139.           }
  140.         FreeArgs (myrda);
  141.           }
  142.         else
  143.           {
  144.         /*
  145.            * Something went wrong in the parse
  146.          */
  147.  
  148.         if (result[OPT_TITLE] == NULL)
  149.           {
  150.             fprintf (stderr, "rtPaletteRequest: Required argument missing.\n");
  151.           }
  152.         else
  153.           {
  154.             /* something else is wrong */
  155.             fprintf (stderr, "rtPaletteRequest: Command syntax error.\n");
  156.           }
  157.  
  158.           fprintf (stderr, "Try - rtPaletteRequest help.\n");
  159.  
  160.         retval = 20;
  161.           }
  162.         FreeDosObject (DOS_RDARGS, myrda);
  163.       }
  164.     else
  165.       {
  166.         /* Unable to alloc readargs structure */
  167.         retval = 20;
  168.       }
  169.       }
  170.     }
  171.   else
  172.     {
  173.       /* launched from workbench */
  174.     }
  175.  
  176.   return (retval);
  177. }
  178.