Subject: POLL: BWidgets usage information - DN [1]
Eric Melski <ericm@nospam.scriptics.com> - 25 Feb 2000 - comp.lang.tcl
(my apologies for the length of the post) We have been using BWidgets at Scriptics for several months now. Connect, our flagship product, depends heavily on the megawidgets provided by BWidgets. But we have run into a wall as far as the widget set goes: though they are very full-featured, they are also rather slow. On some of our more complex GUI's, the creation time of the BWidgets components accounts for a substantial portion of the total creation time. The net result is that for some windows the time to create is well past the "user tolerance threshhold." We have been considering ways to address the problem, in the course of which I have been studying the BWidgets megawidget infrastructure in detail. After some experimentation, I found that be slightly altering some of the feature set, I could improve the loading time of some of our most heavily used widgets (SpinBox and ComboBox) by 30% or more. I know that more improvement is possible, but it may require noticeable loss of backwards compatibility. For my own reference, I would like to know how many people would be significantly inconvenienced by the changes enumerated below. The response I see may impact whether these modifications are a) made at all; b) made and given to the community as major revision to BWidgets (ie, v2.0 or some such); or c) made and given to the community as some new package (EWidgets ?). Of course, any changes we make will be made available in some form, it's just a question of what the resulting package is called. The changes I've been experimenting with are: * changes to the option database/BWidgets interface. Currently it is possible to add default configuration options to a BWidget via the option database with this syntax: option add *BWIDGETCLASS.optionName $value widgetDefault Unfortunately, this causes, for every widget of type BWIDGETCLASS, many option database queries, and an inefficient processing thereof. If we leverage the option database and instead require syntax like: option add *BWIDGETCLASS.subWidget.optionName $value widgetDefault We eliminate unneccesary option database queries/processing. (Of course, mega widget options that are new to the mega widget and do not map directly to a subWidget are still specified with the former syntax). So the question here is, do many people really use the option database with BWidgets? * Changes to the composition of some widgets Some widgets, such as the SpinBox and ComboBox, have the BWidget LabelFrame included in them. The LabelFrame makes it easy to have a SpinBox with a label next to it, for example. But the cost of creating this extra megawidget is significant -- the SpinBox could be created faster if the LabelFrame were not rolled into it. Remember that you could still get the same behavior by explicitly creating the LabelFrame yourself, and putting the SpinBox inside it. It just wouldn't be incorporated into the SpinBox megawidget itself. In my experience, the LabelFrame inside the megawidget is of fairly limited utility, because it's difficult to make multiple SpinBoxes with labels line up correctly unless the geometry management is performed outside of the SpinBox (ie, I do the gridding myself). The LabelFrame prevents me from doing that, so I don't use it. The question here is, do many people rely on this particular functionality, or could I reasonably remove it from the SpinBox? I apologize for the length of the post, but I appreciate any feedback. Again, whatever changes we make will be released (in fact, you can get to them via CVS right now anyway), but if people feel that the sorts of changes suggested here have too great an impact, we may change the package name. Thanks for your input, - eric
Last modified
2000-03-11
2000-03-11
(195.108.246.55)
Note: you are looking at
the snapshot of an old wiki
- much of this information
is likely to be very outdated
