Creare una GUI tcltk per script in grass
Da Wikipedia, l'enciclopedia libera.
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 scrip 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 defoult 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

