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

Michael Barton michael.barton at asu.edu
Mon May 21 22:47:12 EDT 2007


I'll just have to put a catch around it. But it bothers me not knowing why
this is a problem with Windows TclTk.

Michael


On 5/21/07 7:34 PM, "Glynn Clements" <glynn at gclements.plus.com> wrote:

> 
> 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.

__________________________________________
Michael Barton, Professor of Anthropology
School of Human Evolution & Social Change
Center for Social Dynamics & Complexity
Arizona State University

phone: 480-965-6213
fax: 480-965-7671
www: http://www.public.asu.edu/~cmbarton





More information about the grass-dev mailing list