[GRASS-dev] Re: gis.m: font selection in module panels

Glynn Clements glynn at gclements.plus.com
Mon May 21 22:34:37 EDT 2007


Moritz Lennert wrote:

> > For when you get up tomorrow.
> >
> > Try this for the entire if clause
> >
> >     if {![info exists env(GRASS_FONT)]} {
> >         set fontindex -1
> >     } elseif {$env(GRASS_FONT) != ""} {
> >         set fontindex [lsearch $fontlist $env(GRASS_FONT)]
> >         if {$fontindex > -1} {
> >             $fontlb selection set $fontindex
> >             $fontlb see $fontindex
> >         }
> >     }
> >
> 
> 
> Doesn't work, but I'm getting closer to identifying the problem:
> Going back to the original version and just erasing the second part of the
> if clause, I now notice (a bit more awake than yesterday) that I still get
> an error message, but not the same:
> 
> can't read "env(GRASS_FONT)": no such variable
> can't read "env(GRASS_FONT)": no such variable
>     while executing
> "lsearch $fontlist $env(GRASS_FONT)"
>     (procedure "Gm:DefaultFont" line 27)
>     invoked from within
> "Gm:DefaultFont dbarscale"
>     (procedure "GmDtext::set_font" line 5)
>     invoked from within
> "GmDtext::set_font 1"
>     ("uplevel" body line 1)
>     invoked from within
> "uplevel \#0 $cmd"
>     (procedure "Button::_release" line 18)
>     invoked from within
> "Button::_release .mainframe.frame.pw1.f1.frame.sw.sf.frame.fr.fontopt1.b"
>     (command bound to event)
> 
> So actually the problem is not the 'if exists' clause, but it's
> '$env(GRASS_FONT)'. For some reason, it seems like it does not recognize
> env() as the function it is, but rather it tries to get the content of a
> variable name 'env(GRASS_FONT)'. GRASS_FONT is recognized as existing,
> since it passes the test 'if {[info exists env(GRASS_FONT)]}'.

I can only conclude that "info exists ..." doesn't do what you want
when applied to array elements.

You could try catching the error, and dumping out "env" with
"array get env" to see if that provides any clues.

-- 
Glynn Clements <glynn at gclements.plus.com>




More information about the grass-dev mailing list