|
From: Joe E. <jen...@fl...> - 2004-09-30 20:21:04
|
The Tile widgets are intended to be mostly compatible with
their core counterparts; the main difference is that the new
widgets have fewer options. (For example: -activebackground
and -disabledforeground are subsumed by [style map]; custom
layouts make things like -indicatoron unnecessary; and things
like -container, -colormap, and -visual for frames have been
left out on purpose.)
In order to test just how compatible the new widgets really are,
Tile currently includes all of the the missing options as
"compatibility options": they can be set and queried, but
have no effect. This way you can swap out the core widgets
with a single [namespace import] withough having to extensively
modify existing code.
Compatibility options were always intended to be an interim
measure, solely for testing purposes during development.
This strategy has worked OK so far; you can [namespace
import -force tile::*] without _immediately_ breaking
everything. In fact, many applications don't break for
several minutes if you do this.
There are a few compatibility options that really ought to be
"real" ones. For example, you ought to be able to set the
-font, -foreground and -background on [ttk::label]s; this
currently has no effect. The reason for this is, if these are
"real" options, they have to have NULL default values so the
theme settings will normally be used. But, if they have a NULL
default and you use [ttk::labels] in place of core [label]s,
BWidgets and other megawidget packages break.
Now that an integration strategy has been worked out,
(separate tk::* and ttk::* namespaces), and it looks like
the [namespace import] technique *won't* usually be used
at global scope, I think it's time to phase compatibility
options out.
You can turn them off now by compiling with -DNO_COMPAT;
I'd like to make this the default in the next release.
In more detail:
+ 0.5 release: Compatibility options disabled, but may be
reenabled at 'configure'-time. 'tile::*' and 't*'
aliases still present but deprecated.
+ 0.6 release: Compatibility options completely gone.
Add selected options back as "real" ones based on
feedback from the 0.5 release, or provide equivalent
functionality in a different way (see for example
demos/repeater.tcl). 'tile::*' and 't*' aliases removed.
Sound OK?
--Joe English
jen...@fl...
|