/*
**    GrabKEY
**
**        © 1996 by Timo C. Nentwig
**        All Rights Reserved !
**
**        Tcn@techbase.in-berlin.de
**
**
*/

/// #include

#include "gk_GST.h"
#include "gk_Protos.h"

///
/// proto

proto VOID    EvalArgs        (VOID);
proto VOID    EvalTTypes      (VOID);
proto VOID    InitSettings    (VOID);
proto VOID    SaveTTypes      (VOID);

///

/// InitSetting ()

	/*
	 *    FUNCTION    Initialize settings structure.
	 *
	 *    NOTE
	 *
	 *    EXAMPLE     InitSettings ();
	 *
	 */


VOID
InitSettings (VOID)
{

	STRCPY (Set -> Key . Window . Save , "LALT F1");
	STRCPY (Set -> Key . Screen . Save , "CTRL F1");

	STRCPY (Set -> Key . Window . Clip , "LALT F2");
	STRCPY (Set -> Key . Screen . Clip , "CTRL F2");

	STRCPY (Set -> Key . Window . Print, "LALT F3");
	STRCPY (Set -> Key . Screen . Print, "CTRL F3");

	STRCPY (Set -> Sound . Start       , "");
	STRCPY (Set -> Sound . Done        , "");
	STRCPY (Set -> Sound . Error       , "");

	STRCPY (Set -> File . Path         , "");
			Set -> File . Count        = FALSE;
			Set -> File . Icon         = FALSE;

			Set -> Cx . Priority       = 0L;
			Set -> Cx . PopUp          = FALSE;
	STRCPY (Set -> Cx . PopKey         , "LALT CTRL F1");

}

///
/// EvalTTypes ()

	/*
	 *    FUNCTION    Evaluate tooltypes.
	 *
	 *    NOTE
	 *
	 *    EXAMPLE     EvalTTypes ("path:dir/icon);
	 *
	 */


VOID
EvalTTypes (VOID)
{

	struct    DiskObject   *Icon;

		// Try to read the icon file

	if (Icon = GetDiskObject (PRG_TITLE))
	{

		#define    Item(s)    FindToolType (Icon -> do_ToolTypes, s)

		STRPTR    String;

		if (String = Item ("COUNTFILES"))                  Set -> File . Count        = atob (String);
		if (String = Item ("ICON"))                        Set -> File . Icon         = atob (String);

		if (String = Item ("CX_POPKEY"))           STRCPY (Set -> Cx . PopKey, String);
		if (String = Item ("CX_POPUP"))                    Set -> Cx . PopUp          = atob (String);
		if (String = Item ("CX_PRIORITY"))                 Set -> Cx . Priority       = atol (String);

		if (String = Item ("SAVE_WINDOW_KEY"))     STRCPY (Set -> Key . Window . Save, String);
		if (String = Item ("SAVE_SCREEN_KEY"))     STRCPY (Set -> Key . Screen . Save, String);

		if (String = Item ("CLIP_WINDOW_KEY"))     STRCPY (Set -> Key . Window . Clip, String);
		if (String = Item ("CLIP_SCREEN_KEY"))     STRCPY (Set -> Key . Screen . Clip, String);

		if (String = Item ("PRINT_WINDOW_KEY"))    STRCPY (Set -> Key . Window . Print, String);
		if (String = Item ("PRINT_SCREEN_KEY"))    STRCPY (Set -> Key . Screen . Print, String);

		if (String = Item ("SOUND_START"))         STRCPY (Set -> Sound . Start, String);
		if (String = Item ("SOUND_DONE"))          STRCPY (Set -> Sound . Done, String);
		if (String = Item ("SOUND_ERROR"))         STRCPY (Set -> Sound . Error, String);

		if (String = Item ("FILE"))                STRCPY (Set -> File . Path, String);

		FreeDiskObject (Icon);

	}

}

///
/// SaveTTypes ()

	/*
	 *    FUNCTION    Save settings to tooltypes.
	 *
	 *    NOTE
	 *
	 *    EXAMPLE     SaveTTypes();
	 *
	 */


VOID
SaveTTypes (VOID)
{
/*
	struct    DiskObject   *Icon;

		// Try to read the icon file

	if (Icon = GetDiskObject (PRG_TITLE))
	{

		#define    Item(s)    FindToolType (Icon -> do_ToolTypes, s)

		STRPTR    String;

		if (Item ("COUNTFILES"))                            Set -> File . Count        = TRUE;

		if (String = Item ("CX_POPKEY"))            STRCPY (Set -> Cx . PopKey, String);
		if (String = Item ("CX_POPUP"))                     Set -> Cx . PopUp          = atob (String);
		if (String = Item ("CX_PRIORITY"))                  Set -> Cx . Priority       = atol (String);

		if (String = Item ("SAVE_WINDOW_KEY"))     STRCPY (Set -> Key . Window . Save, String);
		if (String = Item ("SAVE_SCREEN_KEY"))     STRCPY (Set -> Key . Screen . Save, String);

		if (String = Item ("CLIP_WINDOW_KEY"))     STRCPY (Set -> Key . Window . Clip, String);
		if (String = Item ("CLIP_SCREEN_KEY"))     STRCPY (Set -> Key . Screen . Clip, String);

		if (String = Item ("PRINT_WINDOW_KEY"))    STRCPY (Set -> Key . Window . Print, String);
		if (String = Item ("PRINT_SCREEN_KEY"))    STRCPY (Set -> Key . Screen . Print, String);

		if (String = Item ("SOUND_START"))         STRCPY (Set -> Sound . Start, String);
		if (String = Item ("SOUND_DONE"))          STRCPY (Set -> Sound . Done, String);
		if (String = Item ("SOUND_ERROR"))         STRCPY (Set -> Sound . Error, String);

		if (String = Item ("FILE"))                STRCPY (Set -> File . Path, String);

		FreeDiskObject (Icon);

	}
	else
	{

		ShowRequest ("OK", "Failed to save to \"" PRG_TITLE "\" !\n");

	}
*/

	ShowRequest ("Shut up", "SaveTTypes()\n\nNot implementated, yet !\n");

}

///
/// EvalArgs ()

	/*
	 *    FUNCTION    Evaluate given shell arguments
	 *
	 *    NOTE
	 *
	 *    EXAMPLE     EvalArgs ();
	 *
	 */


VOID
EvalArgs (VOID)
{

	#define    ARG_TEMPLATE    "CX_PRIORITY/N/K,CX_POPUP/K,CX_POPKEY/K,"   \
							   "COUNTFILES/S,ICON/S"                       \
							   "SAVE_WINDOW_KEY/K,SAVE_SCREEN_KEY/K,"      \
							   "CLIP_WINDOW_KEY/K,CLIP_SCREEN_KEY/K,"      \
							   "PRINT_WINDOW_KEY/K,PRINT_SCREEN_KEY/K,"    \
							   "SOUND_START/K,SOUND_DONE/K,SOUND_ERROR/K," \
							   "FILE/K"

	enum    {

				CX_PRIORITY, CX_POPUP, CX_POPKEY,
				COUNTFILES, ICON,
				SAVE_WINDOW_KEY, SAVE_SCREEN_KEY,
				CLIP_WINDOW_KEY, CLIP_SCREEN_KEY,
				PRINT_WINDOW_KEY, PRINT_SCREEN_KEY,
				SOUND_START, SOUND_DONE, SOUND_ERROR,
				FILE,
				ARG_COUNT

			};


	STRPTR   *ArgArray;

	if (ArgArray = (STRPTR *) AllocVec (sizeof (STRPTR) * (ARG_COUNT), MEMF_ANY | MEMF_CLEAR))
	{

		struct    RDArgs   *ArgsPtr;

		if (ArgsPtr = (struct RDArgs *) AllocDosObject (DOS_RDARGS, TAG_END))
		{

			ArgsPtr -> RDA_ExtHelp  =  "[2m" PRG_TITLE " " PRG_VERSION "\n"
									   "Copyright © " PRG_YEAR " by " PRG_AUTHOR "[0m\n"
									   "All Rights Reserved !\n\n"
										PRG_EMAIL "\n";

			if (ReadArgs (ARG_TEMPLATE, (LONG *) ArgArray, ArgsPtr))
			{

				if (ArgArray [CX_PRIORITY]      )            Set -> Cx . Priority       = * (LONG *) ArgArray [CX_PRIORITY];
				if (ArgArray [CX_POPUP]         )            Set -> Cx . PopUp          = atob (ArgArray [CX_POPUP]);
				if (ArgArray [CX_POPKEY]        )    STRCPY (Set -> Cx . PopKey         , ArgArray [CX_POPKEY]);

				if (ArgArray [COUNTFILES]       )            Set -> File . Count        = TRUE;
				if (ArgArray [ICON]             )            Set -> File . Icon         = TRUE;
				if (ArgArray [SAVE_WINDOW_KEY]  )    STRCPY (Set -> Key . Window . Save , ArgArray [SAVE_WINDOW_KEY]);
				if (ArgArray [SAVE_SCREEN_KEY]  )    STRCPY (Set -> Key . Screen . Save , ArgArray [SAVE_SCREEN_KEY]);
				if (ArgArray [CLIP_WINDOW_KEY]  )    STRCPY (Set -> Key . Window . Clip , ArgArray [CLIP_WINDOW_KEY]);
				if (ArgArray [CLIP_SCREEN_KEY]  )    STRCPY (Set -> Key . Screen . Clip , ArgArray [CLIP_SCREEN_KEY]);
				if (ArgArray [PRINT_WINDOW_KEY] )    STRCPY (Set -> Key . Window . Print, ArgArray [PRINT_WINDOW_KEY]);
				if (ArgArray [PRINT_SCREEN_KEY] )    STRCPY (Set -> Key . Screen . Print, ArgArray [PRINT_SCREEN_KEY]);
				if (ArgArray [SOUND_START]      )    STRCPY (Set -> Sound . Start       , ArgArray [SOUND_START]);
				if (ArgArray [SOUND_DONE]       )    STRCPY (Set -> Sound . Done        , ArgArray [SOUND_DONE]);
				if (ArgArray [SOUND_ERROR]      )    STRCPY (Set -> Sound . Error       , ArgArray [SOUND_ERROR]);
				if (ArgArray [FILE]             )    STRCPY (Set -> File . Path         , ArgArray [FILE]);

				FreeArgs (ArgsPtr);

			}

			FreeDosObject (DOS_RDARGS, ArgsPtr);

		}

		FreeVec (ArgArray);

	}

}

///

