Creare una GUI tcltk per script in grass

Da GfossWiki.

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 :


grass.modulo.gui

--Epifanio 20:11, Dic 25, 2007 (CEST)Massimo Di Stefano


Torna a HOWTOs e procedure tipo

Strumenti personali
Namespace
Varianti
Azioni
menu principale
GFOSS
Strumenti