Re: Modifying properties of several objects at the same time
- From: Ben Hetland <Ben A Hetland sintef no>
- To: dia-list gnome org
- Subject: Re: Modifying properties of several objects at the same time
- Date: Fri, 24 Oct 2003 14:27:06 +0200
Lars Clausen wrote:
On 22 Oct 2003, Ben Hetland wrote:
If the property in question does NOT have the same value in all
selected objects, however, then the field should still be enabled
(i.e. modifiable), but doesn't show any real value. It could also be
"dimmed down" or something to visually aid in the concept that there
are really multiple values around. If the user does not touch this
setting at all, then the properties should remain unchanged in all
objects. But if the user sets a different value, then that will be set
in all objects of that type.
This is the hard part. Suggestions or even patches for this would be most
welcome.
Maintaining a state with each widget I think is the clue to the
solution here, a flag indicating "common value" or not. (Or did you
mean that it's really hard to "dim down" a widget in GTK+?)
For simple things like check boxes, a tri-state selection to cycle
through could be the visual behavior:
[ ] Not selected
[X] Selected
[-] Different values
This is for example implemented in Windows Explorer's property box
for files, where the last case show a check mark with a gray
background. (And I have seen it used in several other
implementations too.) Here, selecting the third case, simply
indicates that the user doesn't want any of the objects to be
changed regarding this specific property.
For more complicated things like texts and numbers, this isn't as
simple. But I suggest the following:
- initially the item is grayed and shows no value at all
(empty field)
- if the user types anything in there, then this will be
the new value for _all_ selected objects of that kind
(we don't care about the old values being different).
The item's background turns white to reflect the change.
- There could be an additional button or check box next
to the field, allowing the user to revert his/her new
value, upon clicking this would set the field back to
its initial state.
We could also drop the last feature mentioned here, by asserting
that if the user really did override some "multi-value", but
changed his or her mind afterwards, then one could simply
[Cancel] the whole properties box and bring it up again.
I also assert that the imaginable possibility of being able to set
multiple values for the same field at the same time (when multiple
objects are selected), is not really a feature that is needed.
Because, if one really wants different values for some specific
property, then one can simply bring up the properties dialog
individually for each object in turn.
There's also a problem of figuring out which ones have the same setting,
but that's mostly a problem of understanding properties.
In pseudo code (inspired by C++ STL):
it = select.begin();
common_value = true;
value = it->val;
for_each( ++it, select.end(),
{ if (value != it->val) common_value = false; } );
if (common_value)
Display as normal: value
else
Display blank with empty field
OK, just thinking "aloud" here, sharing some ideas. Anyone willing
to elaborate are welcome to do so; otherwise I might try one day
myself if I get the time (which I unfortunately get far to rarely...).
-+-Ben-+-
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]