Posted to tcl by apw at Sun Sep 16 12:17:01 GMT 2007view raw
- Hi George,
- I have a perhaps not completely satisfying answer for megpkg:
- ::itcl::type s1 {
- option foo
- option key -configuremethod callbackKey -validatemethod valKey
- option anotherkey
- constructor {args} {
- configure {*}$args
- }
- method valKey {option value} {
- if {$value eq "bob"] {
- return 1
- }
- if {$options(key) ne ""} {
- error "you changed -text"
- }
- return 0
- }
- method callbackKey {option value} {
- set options($key) $value
- }}
- set s [s1 #auto -foo bar -key value -anotherkey value]
- puts [$s cget -key]
- $s configure -key Hello
- # produces the error above
- $s configure -key bob
- # sets key to bob
- you don't need locking as only defined options are allowed
- for setting and getting the options you can use configure and cget