home *** CD-ROM | disk | FTP | other *** search
/ Amiga Games 1996 October / Amiga_Games_Extra_CD_10-96.bin / userbox / publicdomain / grabkey / source / gk_settings.c < prev    next >
C/C++ Source or Header  |  1996-07-15  |  8KB  |  276 lines

  1. /*
  2. **    GrabKEY
  3. **
  4. **        © 1996 by Timo C. Nentwig
  5. **        All Rights Reserved !
  6. **
  7. **        Tcn@techbase.in-berlin.de
  8. **
  9. **
  10. */
  11.  
  12. /// #include
  13.  
  14. #include "gk_GST.h"
  15. #include "gk_Protos.h"
  16.  
  17. ///
  18. /// proto
  19.  
  20. proto VOID    EvalArgs        (VOID);
  21. proto VOID    EvalTTypes      (VOID);
  22. proto VOID    InitSettings    (VOID);
  23. proto VOID    SaveTTypes      (VOID);
  24.  
  25. ///
  26.  
  27. /// InitSetting ()
  28.  
  29.     /*
  30.      *    FUNCTION    Initialize settings structure.
  31.      *
  32.      *    NOTE
  33.      *
  34.      *    EXAMPLE     InitSettings ();
  35.      *
  36.      */
  37.  
  38.  
  39. VOID
  40. InitSettings (VOID)
  41. {
  42.  
  43.     STRCPY (Set -> Key . Window . Save , "LALT F1");
  44.     STRCPY (Set -> Key . Screen . Save , "CTRL F1");
  45.  
  46.     STRCPY (Set -> Key . Window . Clip , "LALT F2");
  47.     STRCPY (Set -> Key . Screen . Clip , "CTRL F2");
  48.  
  49.     STRCPY (Set -> Key . Window . Print, "LALT F3");
  50.     STRCPY (Set -> Key . Screen . Print, "CTRL F3");
  51.  
  52.     STRCPY (Set -> Sound . Start       , "");
  53.     STRCPY (Set -> Sound . Done        , "");
  54.     STRCPY (Set -> Sound . Error       , "");
  55.  
  56.     STRCPY (Set -> File . Path         , "");
  57.             Set -> File . Count        = FALSE;
  58.             Set -> File . Icon         = FALSE;
  59.  
  60.             Set -> Cx . Priority       = 0L;
  61.             Set -> Cx . PopUp          = FALSE;
  62.     STRCPY (Set -> Cx . PopKey         , "LALT CTRL F1");
  63.  
  64. }
  65.  
  66. ///
  67. /// EvalTTypes ()
  68.  
  69.     /*
  70.      *    FUNCTION    Evaluate tooltypes.
  71.      *
  72.      *    NOTE
  73.      *
  74.      *    EXAMPLE     EvalTTypes ("path:dir/icon);
  75.      *
  76.      */
  77.  
  78.  
  79. VOID
  80. EvalTTypes (VOID)
  81. {
  82.  
  83.     struct    DiskObject   *Icon;
  84.  
  85.         // Try to read the icon file
  86.  
  87.     if (Icon = GetDiskObject (PRG_TITLE))
  88.     {
  89.  
  90.         #define    Item(s)    FindToolType (Icon -> do_ToolTypes, s)
  91.  
  92.         STRPTR    String;
  93.  
  94.         if (String = Item ("COUNTFILES"))                  Set -> File . Count        = atob (String);
  95.         if (String = Item ("ICON"))                        Set -> File . Icon         = atob (String);
  96.  
  97.         if (String = Item ("CX_POPKEY"))           STRCPY (Set -> Cx . PopKey, String);
  98.         if (String = Item ("CX_POPUP"))                    Set -> Cx . PopUp          = atob (String);
  99.         if (String = Item ("CX_PRIORITY"))                 Set -> Cx . Priority       = atol (String);
  100.  
  101.         if (String = Item ("SAVE_WINDOW_KEY"))     STRCPY (Set -> Key . Window . Save, String);
  102.         if (String = Item ("SAVE_SCREEN_KEY"))     STRCPY (Set -> Key . Screen . Save, String);
  103.  
  104.         if (String = Item ("CLIP_WINDOW_KEY"))     STRCPY (Set -> Key . Window . Clip, String);
  105.         if (String = Item ("CLIP_SCREEN_KEY"))     STRCPY (Set -> Key . Screen . Clip, String);
  106.  
  107.         if (String = Item ("PRINT_WINDOW_KEY"))    STRCPY (Set -> Key . Window . Print, String);
  108.         if (String = Item ("PRINT_SCREEN_KEY"))    STRCPY (Set -> Key . Screen . Print, String);
  109.  
  110.         if (String = Item ("SOUND_START"))         STRCPY (Set -> Sound . Start, String);
  111.         if (String = Item ("SOUND_DONE"))          STRCPY (Set -> Sound . Done, String);
  112.         if (String = Item ("SOUND_ERROR"))         STRCPY (Set -> Sound . Error, String);
  113.  
  114.         if (String = Item ("FILE"))                STRCPY (Set -> File . Path, String);
  115.  
  116.         FreeDiskObject (Icon);
  117.  
  118.     }
  119.  
  120. }
  121.  
  122. ///
  123. /// SaveTTypes ()
  124.  
  125.     /*
  126.      *    FUNCTION    Save settings to tooltypes.
  127.      *
  128.      *    NOTE
  129.      *
  130.      *    EXAMPLE     SaveTTypes();
  131.      *
  132.      */
  133.  
  134.  
  135. VOID
  136. SaveTTypes (VOID)
  137. {
  138. /*
  139.     struct    DiskObject   *Icon;
  140.  
  141.         // Try to read the icon file
  142.  
  143.     if (Icon = GetDiskObject (PRG_TITLE))
  144.     {
  145.  
  146.         #define    Item(s)    FindToolType (Icon -> do_ToolTypes, s)
  147.  
  148.         STRPTR    String;
  149.  
  150.         if (Item ("COUNTFILES"))                            Set -> File . Count        = TRUE;
  151.  
  152.         if (String = Item ("CX_POPKEY"))            STRCPY (Set -> Cx . PopKey, String);
  153.         if (String = Item ("CX_POPUP"))                     Set -> Cx . PopUp          = atob (String);
  154.         if (String = Item ("CX_PRIORITY"))                  Set -> Cx . Priority       = atol (String);
  155.  
  156.         if (String = Item ("SAVE_WINDOW_KEY"))     STRCPY (Set -> Key . Window . Save, String);
  157.         if (String = Item ("SAVE_SCREEN_KEY"))     STRCPY (Set -> Key . Screen . Save, String);
  158.  
  159.         if (String = Item ("CLIP_WINDOW_KEY"))     STRCPY (Set -> Key . Window . Clip, String);
  160.         if (String = Item ("CLIP_SCREEN_KEY"))     STRCPY (Set -> Key . Screen . Clip, String);
  161.  
  162.         if (String = Item ("PRINT_WINDOW_KEY"))    STRCPY (Set -> Key . Window . Print, String);
  163.         if (String = Item ("PRINT_SCREEN_KEY"))    STRCPY (Set -> Key . Screen . Print, String);
  164.  
  165.         if (String = Item ("SOUND_START"))         STRCPY (Set -> Sound . Start, String);
  166.         if (String = Item ("SOUND_DONE"))          STRCPY (Set -> Sound . Done, String);
  167.         if (String = Item ("SOUND_ERROR"))         STRCPY (Set -> Sound . Error, String);
  168.  
  169.         if (String = Item ("FILE"))                STRCPY (Set -> File . Path, String);
  170.  
  171.         FreeDiskObject (Icon);
  172.  
  173.     }
  174.     else
  175.     {
  176.  
  177.         ShowRequest ("OK", "Failed to save to \"" PRG_TITLE "\" !\n");
  178.  
  179.     }
  180. */
  181.  
  182.     ShowRequest ("Shut up", "SaveTTypes()\n\nNot implementated, yet !\n");
  183.  
  184. }
  185.  
  186. ///
  187. /// EvalArgs ()
  188.  
  189.     /*
  190.      *    FUNCTION    Evaluate given shell arguments
  191.      *
  192.      *    NOTE
  193.      *
  194.      *    EXAMPLE     EvalArgs ();
  195.      *
  196.      */
  197.  
  198.  
  199. VOID
  200. EvalArgs (VOID)
  201. {
  202.  
  203.     #define    ARG_TEMPLATE    "CX_PRIORITY/N/K,CX_POPUP/K,CX_POPKEY/K,"   \
  204.                                "COUNTFILES/S,ICON/S"                       \
  205.                                "SAVE_WINDOW_KEY/K,SAVE_SCREEN_KEY/K,"      \
  206.                                "CLIP_WINDOW_KEY/K,CLIP_SCREEN_KEY/K,"      \
  207.                                "PRINT_WINDOW_KEY/K,PRINT_SCREEN_KEY/K,"    \
  208.                                "SOUND_START/K,SOUND_DONE/K,SOUND_ERROR/K," \
  209.                                "FILE/K"
  210.  
  211.     enum    {
  212.  
  213.                 CX_PRIORITY, CX_POPUP, CX_POPKEY,
  214.                 COUNTFILES, ICON,
  215.                 SAVE_WINDOW_KEY, SAVE_SCREEN_KEY,
  216.                 CLIP_WINDOW_KEY, CLIP_SCREEN_KEY,
  217.                 PRINT_WINDOW_KEY, PRINT_SCREEN_KEY,
  218.                 SOUND_START, SOUND_DONE, SOUND_ERROR,
  219.                 FILE,
  220.                 ARG_COUNT
  221.  
  222.             };
  223.  
  224.  
  225.     STRPTR   *ArgArray;
  226.  
  227.     if (ArgArray = (STRPTR *) AllocVec (sizeof (STRPTR) * (ARG_COUNT), MEMF_ANY | MEMF_CLEAR))
  228.     {
  229.  
  230.         struct    RDArgs   *ArgsPtr;
  231.  
  232.         if (ArgsPtr = (struct RDArgs *) AllocDosObject (DOS_RDARGS, TAG_END))
  233.         {
  234.  
  235.             ArgsPtr -> RDA_ExtHelp  =  "" PRG_TITLE " " PRG_VERSION "\n"
  236.                                        "Copyright © " PRG_YEAR " by " PRG_AUTHOR "\n"
  237.                                        "All Rights Reserved !\n\n"
  238.                                         PRG_EMAIL "\n";
  239.  
  240.             if (ReadArgs (ARG_TEMPLATE, (LONG *) ArgArray, ArgsPtr))
  241.             {
  242.  
  243.                 if (ArgArray [CX_PRIORITY]      )            Set -> Cx . Priority       = * (LONG *) ArgArray [CX_PRIORITY];
  244.                 if (ArgArray [CX_POPUP]         )            Set -> Cx . PopUp          = atob (ArgArray [CX_POPUP]);
  245.                 if (ArgArray [CX_POPKEY]        )    STRCPY (Set -> Cx . PopKey         , ArgArray [CX_POPKEY]);
  246.  
  247.                 if (ArgArray [COUNTFILES]       )            Set -> File . Count        = TRUE;
  248.                 if (ArgArray [ICON]             )            Set -> File . Icon         = TRUE;
  249.                 if (ArgArray [SAVE_WINDOW_KEY]  )    STRCPY (Set -> Key . Window . Save , ArgArray [SAVE_WINDOW_KEY]);
  250.                 if (ArgArray [SAVE_SCREEN_KEY]  )    STRCPY (Set -> Key . Screen . Save , ArgArray [SAVE_SCREEN_KEY]);
  251.                 if (ArgArray [CLIP_WINDOW_KEY]  )    STRCPY (Set -> Key . Window . Clip , ArgArray [CLIP_WINDOW_KEY]);
  252.                 if (ArgArray [CLIP_SCREEN_KEY]  )    STRCPY (Set -> Key . Screen . Clip , ArgArray [CLIP_SCREEN_KEY]);
  253.                 if (ArgArray [PRINT_WINDOW_KEY] )    STRCPY (Set -> Key . Window . Print, ArgArray [PRINT_WINDOW_KEY]);
  254.                 if (ArgArray [PRINT_SCREEN_KEY] )    STRCPY (Set -> Key . Screen . Print, ArgArray [PRINT_SCREEN_KEY]);
  255.                 if (ArgArray [SOUND_START]      )    STRCPY (Set -> Sound . Start       , ArgArray [SOUND_START]);
  256.                 if (ArgArray [SOUND_DONE]       )    STRCPY (Set -> Sound . Done        , ArgArray [SOUND_DONE]);
  257.                 if (ArgArray [SOUND_ERROR]      )    STRCPY (Set -> Sound . Error       , ArgArray [SOUND_ERROR]);
  258.                 if (ArgArray [FILE]             )    STRCPY (Set -> File . Path         , ArgArray [FILE]);
  259.  
  260.                 FreeArgs (ArgsPtr);
  261.  
  262.             }
  263.  
  264.             FreeDosObject (DOS_RDARGS, ArgsPtr);
  265.  
  266.         }
  267.  
  268.         FreeVec (ArgArray);
  269.  
  270.     }
  271.  
  272. }
  273.  
  274. ///
  275.  
  276.