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 :


grass.modulo.gui

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


Torna a HOWTOs e procedure tipo

Personal tools