State, Attributes and Some basic widgets

Wolfgang Thaller <[email protected]>
Newsgroups gmane.comp.lang.haskell.gui
Message-ID <[email protected]>
It seems that the discussion about how to represent widget attributes 
has died down again recently. I'll try to get it going again...

I'll try to list a few very basic widgets and their most important 
attributes. I'm using Apple's terms, I don't always know the "proper" 
Windows, Motif or GTK terms.

Push Button
Read/Write attributes: Label (String), Enabled (Bool)
Callbacks: onClick

Check Boxes and Radio Buttons
Read/Write attributes: Label (String), Enabled (Bool), Value (Bool)
Callbacks: onClick

Static Text (a.k.a. Labels)
Read/Write attributes: Label (String), Enabled (Bool; yes, at least on 
Mac OS, static text can be greyed out)

Scroll Bar:
Read/Write attributes: Value, minimum, maximum, size of visible part, 
step sizes etc...
Callbacks: onScrollStart onScroll onScrollFinished (or something like 
that)

So far, I've only listed plain read/write attributes, and callbacks 
(I'm in favour of allowing multiple callbacks).

We could add a whole lot of read-only attributes to each widget:

current size, minimum size, maximum size, (platform-specific) native 
handle, etc.

Were there any examples of write-only attributes, that can always be 
written, but never be read?

What attributes are there that cannot be changed after creation or that 
have no sensible default? (Yes, I do consider "" to be a sensible 
default for a button label)

On Widget Names:
Then there is the Xt-style widget name, which would need to be 
specified on widget creation, and which would then be read-only.
Is it really necessary to have this on all platforms? I gather it is 
used for looking up customization from X resources - does this make 
sense if the widgets have been created programmatically using a 
cross-platform interface?
People targeting other platforms first wouldn't know what to use the 
name for, and why it's a good idea to specify a proper name. If the 
interface is loaded from an UIL file, then of course there would be a 
Xt widget name, but do we need it even in programs that don't care 
about UIL files and X resources?

On linked states:
a) I think that linked states and general state-change notification is 
outside the scope of the CGA.
b) Allowing linked states would require every state change to go 
through the CGA; it would be more difficult to map to the underlying 
backend library, in case the backend library changes some state "on 
it's own".

Cheers,

Wolfgang
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.