|
From: Jeff H. <je...@Ac...> - 2004-10-09 01:57:56
|
> 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.) I want to make sure that we are careful when transitioning to styles that we don't ignore the simplicity evident in Tk through its options. On the one hand, we want to allow for theming and styles for improved consistency, OTOH, we don't want to make it annoyingly complex to have slight variations (like bg) for single widget instances. Background is the most common, but it isn't the only case, and not just for labels (which was mentioned below), but entries would commonly need this as well (as well as comboboxes and related things that might derive from the entry widget). > 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. And to what lengths does one have to go to fix these older packages? > You can turn them off now by compiling with -DNO_COMPAT; > I'd like to make this the default in the next release. > + 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. I would like to push this out one more release. As I mentioned on the chat, I think the value is that you will be abel to pull more people into tile if the hill to climb is a hill, not a mountain. As somewhat related example was my transition to the tile combobox from the bwidgets combo. Since the tile cb does not use numeric indexing (which I hopefully convinced Joe is a good idea), it took an hour just to convert one cb in an app over to tile. I did this to make use tile entries throughout - which themselves required 0 effort beyond the namespace import. My point is though that if we disallow the compat stuff, it may raise the bar to transition any app over to tile, discouraging others from making the move. Then again, the counterpoint was that these options are going to disappear sometime, so it may be better to force the conversion once, rather than twice in smaller steps. However, I currently favor the 2 smaller steps, since we all know that just a few option add's clean up a lot of Tk L&F, and that in itself is hard enough to make people do. ;) Jeff |