[GUI] Statically-typed read-only attributes

Glynn Clements glynn.clements at virgin.net
Mon Sep 15 01:06:00 EDT 2003


Sven Panne wrote:

> > [...] This raises the problem: what if I have also "instance Positioned 
> > Window"? Well, this problem has many solutions, the simplest of wich is 
> > *not* to have statically read-only attributes. I would rather try other 
> > solutions, however they might complicate the class and type hierarchy.
> > 
> > What do you all think about this?
> 
> I think that the distinction (read-only, write-only, read-write) is very
> important for a good API design:

Reminder: under Xt, an attribute has three such "flags":

[C] Can be set when the widget is created (XtCreateWidget etc).
[S] Can be set after the widget is created (XtSetValues etc).
[G] Can be retrieved (XtGetValues etc).

These are all independent, although some combinations are more common
than others:

+ Attributes tend to be CSG unless there is a reason to the contrary.

+ Callback lists are invariably C; once the widget is created, you
have to use Xt{Add,Remove}Callback rather than replacing the entire
list.

+ C without S is quite common; attributes which dictate a specific
"role" for a widget (e.g. XmNrowColumnType) usually can't be changed.

+ S without C typically corresponds to attributes types for which a
value can't reasonably be constructed before the widget has been
created. E.g. for compound widgets (e.g. OK/Cancel dialogs), the
attributes which specify the child widgets (e.g. the OK/Cancel
buttons) are SG.

+ The absence of G is not uncommon; this typically means that the
resource value is converted to an internal form in a way that can't
readily be reversed.

+ Just G (i.e. read-only) is common for values which are computed
rather than stored (e.g. XmNancestorSensitive).

-- 
Glynn Clements <glynn.clements at virgin.net>


More information about the GUI mailing list