/* the name of the program goes first */
program:"echo"

/* a very brief action-oriented title goes next.. */
title:"Echo The Command Line"

/* 
 * Next comes the command line format string 
 * Text inside of ['s will only be printer if
 * at least one flag or parameter inside them 
 * set...Text inside of ('s is an internal name
 * that we use for flags and parameters...
 */
commandstring:"[-(f1)(f2)] required=(parm1) [optional=(parm2)]"


/*
 * The description comes next... This is a fairly long (1-5 line)
 * description of the command.
 */
description:"This command will echo all of its command line args to the screen"

/*
 * This describes help text that is displayed when the user invokes
 * context help and selects some undefined area. 
 * If your help is long use the "helpfile" key instead and give it 
 * a path to a help file (will be located in "$XGRASSHELPDIR/xclip").
 */
help:"This interface will wipe you bottom if you ask it..."

/*
 * 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"

/* 
 * 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 successful...xclip 
 * thinks a zero exit code is success.
 */
errorcodes:"0,1"

/* 
 * This key tells whether or not to capture output into the
 * XGRASS Command Output Editor....
 */
capture:true

/*
 * 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 is for this parameter only...
	 * 
	 * 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"
	 *          *or* "opt1:key1,opt2:key2,...,opt3:key3"
	 *      e.g. the xclip code 'type:enum:"Kurt:k,Bob:b"' 
	 *      will produce a list that displays Kurt and Bob,
	 *      but when Kurt is selected the parameter is set to "k".
	 *
	 *   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
	 *
	 */
	description:"Parameter 1 description"
	type:character
	optional:false
	/*
	 * The rest of these 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"
		  /* 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 */
	  }


/*
 * End the main interface description with a "}"
 */
}
