A cleaner Morphic for 3.5 (was: Re: Re-doing Morphic ( Was:
Re:Traits prototype image ))
Richard A. O'Keefe
ok at cs.otago.ac.nz
Tue Feb 11 23:43:53 UTC 2003
"Andreas Raab" <andreas.raab at gmx.de> wrote:
I'll give you just one example: If I want to make a button in eToys, here is
what I do. I go to the supplies flap, grab a rectangle, open its viewer,
drag out the "color <- <...>" tile, set the color I want, set the trigger to
"mouse down", grab a second "color <- <...>" tile, change it to "mouse up"
This reminds me: is there a general way of picking up a colour
and dropping it as text or as a new colour for something?
Suppose I want to make something the same colour as the purple in one
of those purple-and-green left arrows in a Viewer.
1. Find one of them. TUrns out to be an ImageMorph. Explore it.
2. an ImageMorph -> a ColorForm -> an array of Colors -> which one?
3. As a completely off-the-wall thing, I tried selecting the colours
in that array one by one and typing "self display". To my pleased
surprise, "self display" actually _worked_. After several tests,
colors at: 29 seems to be the one I want.
4, Now I can select (Color r: 0.595 g: 0.0 b: 0.396) and paste it into
a Browser. Except I can't. I can only select the _line_ containing
that object. I don't know how to select the _text_. No, Ctrl-click
followed by "copy to paste buffer" does not in fact work. When I
paste in another window, I still get unrelated junk. The only method
I can find that works is to select the Color instance I want, choose
"inspect", in the Inspector type "self storeString" <print it>,
and _then_ copy the text I want before dismissing the Inspector.
5. If I want to change the colour of an existing thing, I can now bring
up an Explorer on the thing I want to colour, type "self color: ",
paste in the storeString, and <do it>.
There _has_ to be an easier way to pick up a colour,
and there _has_ to be an easier way to apply it or paste it.
One approach would be to make the "eyedropper" work differently.
There'd be a completely passive image providing a pallette.
When you selected the "eyedropper", you would be enabled to pick up
a colour from *anywhere* you can see.
Amongst other things, this would make it much easier to provide
alternative colour pallettes, like a box of pastels.
So which way would you rather use yourself?! Unless someone has a really
masochistic inclination I can safely claim that the first one is the way to
go - it's better in every single way, starting from the ability to use
direct manipulation, over robustness, up to efficiency (even I need about
five times as long with the second one and I know *exactly* what I'm doing).
There are a number of things that are hard to do with EToys, such as
"I want all these buttons to have the same colour scheme; if one of them
is changed, the others should change to match." That's something you want
almost as often as you want more than one button.
And this is exactly what I said in my message (and what frustrates me so
about what you write) - if anything we need *MORE* eToy-like things in
Squeak and and in particular at the system level. What you are proposing is
not just one, it's two steps backwards.
It might make a good layering, though.
More information about the Squeak-dev