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"
	and done.
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 mailing list