/* The name of the program goes here. */

program:"echo"

/* A very brief action-oriented title goes here. */

title:"Echo The Command Line"

/* The command line format string goes here.  Those items inside of the ['s will
 * only be displayed if at least one flag or parameter inside of them is
 * set.  Those items inside of the ('s are the internal names that we use for flags
 * and parameters. */

commandstring:"[-(f1)(f2)] required=(parm1) [optional=(parm2)]"

/* The 1-5 line description of the command goes here. */

description:"This command will echo all of its command line args to the screen"

/* The "on context" help for undefined areas goes here.  If your help is long,
 * use the "helpfile" key instead and give it a path to a help file.
 * This will be located in "$XGRASSHELPDIR/xclip". */

help:"This interface will do what ever you want."

/* The help widget command goes here.  This key will invoke the help widget
 * starting with the file "$XGRASSHELPDIR/16.glossary/file.def".  The interface will
 * create an item in the "Help" pulldown menu entitled 
 * "Definition of File". */

helpwidgetref:"16.glossary/file.def:Definition of File"

/* The error codes command goes here.  This key gives a comma-separated list of
 * acceptable exit codes for the command you are interfacing to.  Some programs exit
 * with a non-zero exit code even though they exitted successfully (xclip 
 * thinks a zero exit code is successful). */

errorcodes:"0,1"

/* The capture output command goes here.  This key tells whether or not to capture
 * output into the XGRASS Command Output Editor. */

capture:true

/* The main interface description goes here.  Always start the main interface
 * description with a "{". */

{
	/* flags and parameters will apper in the order they are listed
	 * in this file. */

	parameter parm1

	/* description, type, and optional keys are required in that
	 * order.
	 *
	 * The description goes here.  The description is for this parameter only. */

	description:"Parameter 1 description"

	/*  The type key goes here.  The type can be:
         *
	 *   character  - a character string of any length
	 *   integer - an integer number
	 *   float (or double) - a floating point number
	 *   logical - on/off or true/false 
	 *   enum - a comma separated list of alternatives
	 *   filename - an ascii file name
	 *   database_element - any of the GRASS data types
	 * 
	 * Types are modified in the following ways:
	 *
	 *   character - no modifier available
	 *
	 *   integer - "minimum:maximum:startvalue"
	 *      e.g. the xclip code 'type:integer:"0:100:50"' 
	 *      will produce a slider ranging from 0 to 100 starting at 50
	 *
	 *   double - "minimum:maximum:startvalue:decimalpoints"
	 *      e.g. the xclip code 'type:double:"0:100:50:2"' 
	 *      will produce a slider ranging from 0.0 to 1.00 
	 *      starting at 0.5
	 *
	 *   logical - "trueValue:falseValue"
	 *      e.g. the xclip code 'type:logical:"Kurt:Bob"' 
	 *      will produce a toggle button that displays Kurt
	 *      when set, Bob when not set
	 *
	 *   enum - "option1,option2,...,optionN"
	 *
	 *   filename - no modifier available
	 *
	 *   database_element - dbtype
	 *      where dbtype = [raster, vector, or sites]
	 *      e.g.,  the xclip code 'type:database_element:raster'
	 *      will allow selection of a raster map using the browser
	 *      IF the 'input' keyword is true */

	type:character

	/* The optional key goes here.  It is either true or false. */

	optional:false

	/* The rest of the keys are optional.
	 *
	 * default:"defaultValue" - sets the value of this parameter at
	 *                          run-time
	 *
	 * help:"helpstring"      - same as above
	 * helpfile:"filename"
	 *
	 * You may include as many precludes and requires items as you need.
	 *
	 * precludes:flag:flagname or
	 * precludes:parm:parmname    - means that giving this parameter a
	 *            value will *UNSET* the given flag or parameter
	 *
	 * requires:flag:flagname or
	 * requires:parm:parmname - means that this parameter requires
	 *            that some other flag or parameter is set
	 *
	 * multiple:true/false - means that this parameter can have
	 *            multple values (only works with filname, database_element,
	 *            and enum types)
	 *
	 * input:true/false - indicates whether this is an input parameter
	 *            or not. */
	;

	parameter parm2
	description:"This is parameter 2"
	type:integer:"0:100:50"
	optional:true
	;

	dialog "Dialog Button String"
		description:"Dialog Title"

	/* help:"helpstring"    - same as above
	 * helpfile:"filename" */

	/* start of dialog */

	{
		flag f1
		key:"f" /* this gets put in the commandstring */
		description:"This is flag 1"
		;

		/* You can also have requires and precludes here. */

		flag f2
		key:"flag2" /* this gets put in the commandstring */
		description:"This is flag 2"
		;

	/* end of dialog */
	}


/* Always end the main interface description with a "}" */

}
