Creare una GUI tcltk per script in grass
Fac simile di uno script per grass dotato di GUI "graphic user interface"
la prima parte di uno script grass è l'intestazione dove si riporta una breve descrizione del comando ed eventuali requisiti di sistema (es. applicazioni aggiuntive) l'intestazione inizia con lo specificare il tipo di script fornendo il path all'eseguibile ( bash (#!bin/sh),python (#!/usr/bin/python), perl, etc..)
ad esempio per bash avremo una intestazione del tipo :
#!/bin/sh
############################################################################
#
# MODULE: "nome comando"
#
# AUTHOR(S): "autore"
#
#
# PURPOSE: "descrizione comando"
#
#
# COPYRIGHT: (c) 2006 by the GRASS Development Team
#
# This program is free software under the GNU General Public
# License (>=v2). Read the file COPYING that comes with GRASS
# for details.
#
# REQUIRES: "requisiti "
#
#
#############################################################################
in seguito si descrive la parte grafica del comando :
Descrizione del comando
#%Module
#% description: "descrizione del comando"
#%End
nome da assegnare alla variabile:
#%key
"TIPO" di variabile
#%type
opzioni :
string integer double
per gestire imput multipli si aggiunge :
#% multiple : ( opzioni: yes , no )
il parametro puo avere un valore di default e una lista di opzioni :
#% options :
#% answer:
per la ricerca e selezione di file o cartelle (compresi i file presenti nel mapset) va indicato :
#% gisprompt:
opzioni :
old, new_file, file, output, input, cell, vector
se il modulo presenta numerose opzioni è possibile dividerlo in più "tab" aggiungendo :
#% guisection:
per descrivere il tipo di opzione :
#% description:
per specificare se un'opzione è necessaria o meno, si utilizza :
#% required : ( opzioni: yes , no )
Un esempoi: per la scelta di tali opzioni, si parte da un "template" e lo si modifica a seconda delle esigenze : (con la possibilità di omettere le opzioni superflue )
#%option #% guisection: #% multiple : #% key_desc: #% key: #% answer: #% options : #% type: #% gisprompt: #% description: #% required : #%end
per i flag l'espressione da utilizzare è standard e priva di opzioni, ne va specificata solo la descrizione e la "key" identificativa (lettera o num. 0-9) :
#%flag #% key: #% description: #%END
un esempio :
#!/bin/sh
############################################################################ # # MODULE: nome modulo # # AUTHOR(S): nome autore # # # PURPOSE: funzione del modulo # # # COPYRIGHT: (c) 2006 by the GRASS Development Team # # This program is free software under the GNU General Public # License (>=v2). Read the file COPYING that comes with GRASS # for details. # # REQUIRES: requisiti necessari per utilizzare il modulo (ad esempio sw supplementari .. R, octave, etc..) # # #############################################################################
#%Module #% description: breve descrizione #%End #%flag #% guisection: sezione1 #% key: 1 #% description: descrizione flag #%END #%option #% guisection: sezione1 #% key: nome_variabile1 #% type: string #% gisprompt: old,cell,raster #% description: Input elevation data #% required: no #%end #%option #% guisection: sezione1 #% key: nome_variabile2 #% type: double #% description: descrizione_variabile2 #% required : no #%end #%option #% guisection: sezione1 #% key: variabile3 #% type: string #% gisprompt: new_file,file,output #% description: descrizione_variabile3 #% required : no #%end #%option #% guisection: sezione1 #% key: variabile4 #% type: string #% description: descrizione_variabile4 #% required : no #%end #%option #% guisection: sezione1 #% key: variabile5 #% type: string #% gisprompt: old_file,file,input #% description: descrizione_variabile5 #% required : no #%end #%option #% guisection: sezione1 #% key: variabile6 #% type: string #% gisprompt: old,vector,vector #% multiple : no #% description: descrizione_variabile6 #% required: no #%end #%option #% guisection: sezione1 #% key: variabile7 #% answer : 1 #% options :1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30 #% type: integer #% description: descrizione_variabile7 #% required : no #%end #%option #% guisection: sezione1 #% key: variabile8 #% options :red,green,blue,yellow,white,black #% type: string #% description: descrizione_variabile8 #% required : no #%end
variabile1=$GIS_OPT_variabile1 variabile2=$GIS_OPT_variabile2 variabile3=$GIS_OPT_variabile3 variabile4=$GIS_OPT_variabile4 variabile5=$GIS_OPT_variabile5 variabile6=$GIS_OPT_variabile6 variabile7=$GIS_OPT_variabile7 variabile8=$GIS_OPT_variabile8
if [ -z $GISBASE ] ; then
echo "You must be in GRASS GIS to run this program."
exit 1
fi
if [ "$1" != "@ARGS_PARSED@" ] ; then exec g.parser "$0" "$@" fi
risulterà una gui del tipo :
--Epifanio 20:11, Dic 25, 2007 (CEST)Massimo Di Stefano