**TclOO extension** [RZ] I'm missing some features in plain [TclOO]. So I added these features on top of it. Feel free to comment or use it. * private variables (see also [TclOO private variables]) * options with cget/configure function * components (object and widgets) with integration in cget/configure methods * private components Everything is on top of [TclOO]. The class `::zz::class` contains the `::oo::class` commands and the additional features. The `::zz::define` command contains the `::oo::define` commands and the additional features. New classes should use `::zz::object` as superclass. All classes will be created with the createWithNamespace function of [TclOO]. New Object will be created without the new function. The new object name is the first parameter. ***Enhanced commands*** * `constructor` Access to private variables, setup internal structures and calling next * `destructor` Access to private variables, deleting components and calling next * `method` Access to private variables * `variable` Additional `-private` and `-privateclear` switches ***New class commands*** `option ` : Define new option. The will on optionsetting in the current class context evaluated. `option delete ..` : Remove previously defined option. `component add createcommand ?optionlist?` <
> `component addprivate createcommand ?optionlist?` : Define new component. If the name starts with '.' (dot) it is a widget. If name is '.' (only a dot) it will make the current object act as a widget. If the name starts with ':' (double colon) it is a object. : The `createcommand` will be evaluated to create the component. It should return the component command. Component commands should also have cget/configure methods to access options. If the second word inside the createcomand start with `%W` then `%W` is replaced with the current object widget '`$zz(.)`' : The `optionlist` is a "key value" list. : If key is `keep` then value is used as an option list. All component options matching one of these entries will be added to the object options. : If key is `ignore` then value is used as an option list. All already defined component options matching one of these entries will be deleted. : If key and value is starting with '`-`' (minus sign) then component option names key is mapped to object option value. `component delete ..` <
> `component deleteprivate ..` : Remove previously defined component's. ***New object commands*** `cget