[GRASS-dev] gui/tcltk/gis.m/*.tcl: wrong `variable' syntax

Michael Barton michael.barton at asu.edu
Mon Mar 31 11:26:00 EDT 2008


On Mar 30, 2008, at 2:17 AM, Glynn Clements wrote:
>
> Michael Barton wrote:
>
>>> Date: Fri, 28 Mar 2008 23:24:36 +0600
>>> From: Ivan Shmakov <ivan at theory.asu.ru>
>>> Subject: [GRASS-dev] gui/tcltk/gis.m/*.tcl: wrong `variable' syntax
>>> To: grass-dev at lists.osgeo.org
>>> Cc: Ivan Shmakov <oneingray at gmail.com>
>>> Message-ID: <m263v67odn.fsf at cherry.siamics.int>
>>> Content-Type: text/plain; charset=us-ascii
>>>
>>> 	The lines marked ``>'' below seem nonsensical to me.  For what
>>> 	reason, e. g., would one need to assign to an `array' variable
>>> 	thrice, let alone introducing the `#' variable?
>>>
>>> barscale.tcl	12	namespace eval GmBarscale {
>>> barscale.tcl	13 >	    variable array opt # barscale current options
>>> barscale.tcl	14	    variable count 1
>>> barscale.tcl	15 >	    variable array lfile # scale
>>> barscale.tcl	16 >	    variable array lfilemask # scale
>>> barscale.tcl	17	    variable optlist
>>> barscale.tcl	18	    variable first
>>> barscale.tcl	19 >	    variable array dup # layer
>>> barscale.tcl	20 >	    variable placement #LabelEntry widget for
>>> scale bar placment coordinates
>>> barscale.tcl	21	};
>>
>>
>> Ivan,
>>
>> Everything following the # is a comment to document the variable
>
> No it isn't. It may have been *intended* as a comment, but the #
> character is only treated as starting a comment when it occurs at the
> beginning of a command, e.g. at the beginning of a line, or following
> a semicolon.

I got this syntax from prior TclTk code. This is what happens when  
you learn a language in that way. So we just need to move all these  
to their own line


>
> From the Tcl(n) manpage:
>
>        [9] Comments.
>               If a hash character (``#'') appears at  a  point   
> where  Tcl  is
>               expecting  the  first  character of the first word of  
> a command,
>               then the hash character and the characters that   
> follow  it,  up
>               through  the next newline, are treated as a comment  
> and ignored.
>               The comment character only has significance when it   
> appears  at
>               the beginning of a command.
>
> It's quite common for people to get bitten by this. Most of the time,
> you just get a syntax error, but in this case the code is legal (it
> just doesn't do what you expect).
>
>> There is one place that is a serious problem where we could really
>> use a much more experienced TclTk programmer like you to sort out:
>> the progress bar. It seems like it ought to be straightforward, but
>> there is something wrong with the progress bar code so that if a
>> module executes too quickly, it crashes the entire TclTk interface.
>
> AFAICT, the issue is due to an event handler being re-entered through
> the "update" command.
>
> I note that ProgressBar::_modify calls update. One option is to remove
> that call. Any other options (i.e. allowing event handlers to be
> re-entered) are quite complex.

I'll try this as soon as I can get back to doing this. Thanks.

Michael

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



More information about the grass-dev mailing list