The layout problems with Configurers (e.g., that our dialogs look like stacks
of Jenga blocks) have finally driven me to do something about them. I’m
finding that in doing this there’s a whole cascade of other problems:
Configurers handle nulls inconsistently
Configurers return their GUIs as a monolithic block so that it’s not
possible to do external alignment
The relationship between Configurers and Configurables is backwards: right
now the Configurables are listening for changes in Configurers, but the
Configurables are the model, and so the view should be the listener.
Configurers should be groupable under headings in dialogs. Right now they’re
added in no particular order.
Configurers provide no way to validate input. (This is important—we can
stop nonsense values from being input if we can validate input as it comes.)
Since we can’t change the Configurable interface without breaking backwards
compatibility, fixing the layout problems will require a new interface.
However, if the other problems aren’t fixed at the same time, then we’ll end
up needing a third interface to replace the one I’m about to create, so it
seems like a good idea to fix all of these problems in one shot.
The new batch of interfaces I’m working on (Editor, HasChangeableProperty)
will be able to coexist with the old ones until they’re phased out; I think
I’m going to tackle preferences first, since there’s at least one other
problem there that I can solve at the same time, namely that it would be more
friendly if we stored them in a human-readable file.
I didn’t rate it as a high priority either until I realized that it bothers
me every single time I look at a Configurer. I always underestimate the
value of immediately fixing things which annoy me, and then only realize
that I should have fixed them right away after suffering through them for
a long time.
Sure. Thanks.
I can’t tell for certain yet, but I think it won’t be terribly invasive.
If we shoot for June 30, I can tell you that you’ll probably get zero (0)
of the features I promised, and I think also nothing from Michael.
–
Michael Kiefte, Ph.D.
Associate Professor
School of Human Communication Disorders
Dalhousie University
Halifax, Nova Scotia, Canada
tel: +1 902 494 5150
fax: +1 902 494 5151
The primary problem for me is that the 3.2 development cycle is exactly
overlapping with when I’m trying to finish my dissertation. I’m sure
that what I’m doing will work to some percentage by then, noting that zero
is a percent.
I made some good progress with this over the weekend, enough that I should be able to finish converting all of the preferences to use the new structure over the course of this week. Once I’ve done that, I’ll be able to point to some examples and we can talk about how to convert the rest of the things which use Configurers.
As a taste of what’s coming, I’m attaching a screenshot of the new Preferences dialog, which I modelled after the one in Firefox. Everything you see there is built by attaching Editors to the Preferences dialog, so it’s as functional (from the point of view of being built automatically) as the old Preferences dialog, but has proper spacing around all of the components and supports grouping related preferences into groups rather than displaying them in the order they were added.