| Ticket UUID: | 772535 | |||
| Title: | snit: implementation of mymethod command | |||
| Type: | RFE | Version: | None | |
| Submitter: | andreas_kupries | Created on: | 2003-07-16 18:55:16 | |
| Subsystem: | snit | Assigned To: | duquette | |
| Priority: | 3 Low | Severity: | ||
| Status: | Deleted | Last Modified: | 2004-08-08 11:21:16 | |
| Resolution: | Closed By: | duquette | ||
| Closed on: | 2004-08-08 04:21:16 | |||
| Description: |
To deal with renaming of objects snit provides the
command [mymethod] to create code which can be
given to callback handlers.
The generated code essentially refers to the variable
$Snit_instance in the unchanging private namespace of
the object, which contains the current name of the
intance = instance command.
Example:
mymethod foo
generates
"$Snit_instance foo"
This is variable reference is a bit problematic. The code
executing the callback __must not__ any list command
when adding additional arguments to the callback. Which
is usual. The moment a list command is used, for
example [linsert], or [lappend] to build up the full cllback
command the variable reference will be quoted in braces,
and the final command will look like:
"{$Snit_instance} foo arg1 arg2 ..."
[eval]'ing this fails.
Example stacktrace
invalid command
name "$::ttable::ttable::Snit_inst1::Snit_instance"
while executing
"{$::ttable::ttable::Snit_inst1::Snit_instance}
NColChanged 0 3"
("uplevel" body line 1)
invoked from within
"uplevel #0 [linsert $options(-ncolcommand) end
$oldncols $ncols]"
(procedure "Snit_configure-data" line 42)
invoked from within
You see how the command is constructed, and the
additional quoting generated by this.
The big problem is that the usage of list commands to
construct an eval'able callback is the usual way of doing
this.
| |||
| User Comments: |
duquette added on 2004-08-08 11:21:16:
Logged In: YES user_id=372859 As the comment below says, the actual fix for this problem was committed over a year ago; and since then we've made the decision that it's OK for snit types and widgets to depend on Snit run-time code (this was a space issue). So this RFE is no longer needed. andreas_kupries added on 2003-07-22 23:03:59: Logged In: YES user_id=75003 Conversion to RFE complete. andreas_kupries added on 2003-07-22 22:56:47: Logged In: YES user_id=75003 Patch committed. This report will now change into an RFE. The handling should be moved into the type/instance namespace to allow types/objects in the future to run independent of snit itself. andreas_kupries added on 2003-07-19 01:45:25: File Added - 56218: diff.snit.txt Logged In: YES user_id=75003 Here is a patch. | |||
Attachments:
- diff.snit.txt [download] added by andreas_kupries on 2003-07-19 01:45:25. [details]
