The Purple Shoes Manual 0.7.166

Events

Wondering how to catch stray mouse clicks or keyboard typing? Events are sent to a slot whenever a mouse moves inside the slot. Or whenever a key is pressed. Even when the slot is created or destroyed. You can attach a block to each of these events.

Mouse events include motion, click, release, hover and leave. Keyboard typing is represented by the keypress event. And the start and finish events indicate when a canvas comes into play or is discarded.

So, let's say you want to change the background of a slot whenever the mouse floats over it. We can use the hover event to change the background when the mouse comes inside the slot. And leave to change back when the mouse floats away.

 Shoes.app do
   s = stack width: 200, height: 200 do
     background red
   end
   s.hover do
     s.clear { background blue }
   end
   s.leave do
     s.clear { background red }
   end
 end

The click block is called when a mouse button is clicked. The button is the number of the mouse button which has been pressed. The left and top are the mouse coordinates at which the click happened.

To catch the moment when the mouse is unclicked, see the release event.

When a slot is removed, it's finish event occurs. The finish block is immediately handed self, the slot object which has been removed.

Note: Purple Shoes doesn't support finish method.

The hover event happens when the mouse enters the slot. The block gets self, meaning the object which was hovered over.

To catch the mouse exiting the slot, check out the leave event.

Whenever a key (or combination of keys) is pressed, the block gets called. The block is sent a key which is a string representing the character (such as the letter or number) on the key.

So, for example, if Shift-a is pressed, the block will get the string "SHIFT" and "A".

And if the F1 key is pressed, the "F1" string is received.

The modifier keys are "CTRL", "SHIFT" and "ALT". They appear in that order. If Shift-Control-Alt-PgUp is pressed, the strings will be "SHIFT", "CTRL", "ALT" and "PAGE_UP".

One thing about the shift key. On US keyboards, Shift-7 is an ampersand. So you'll get the string "SHIFT" and "&" rather than "SHIFT" and "7". And, if you press Shift-Alt-7 on such a keyboard, you'll get the strings: "SHIFT", "ALT" and "&".

 Shoes.app do
   info = para "NO KEY is PRESSED."
   keypress do |k|
     info.replace "#{k.inspect} was PRESSED."
   end
 end

The leave event takes place when the mouse cursor exits a slot. The moment it no longer is inside the slot's edges. When that takes place, the block is called with self, the slot object which is being left.

Also see hover if you'd like to detect the mouse entering a slot.

The motion block gets called every time the mouse moves around inside the slot. The block is handed the cursor's left and top coordinates.

 Shoes.app width: 200, height: 200 do
   background black
   fill white
   circ = oval 0, 0, 100, 100
   motion do |top, left|
     circ.move top - 50, left - 50
   end
 end

The release block runs whenever the mouse is unclicked (on mouse up). When the finger is lifted. The button is the number of the button that was depressed. The left and top are the coordinates of the mouse at the time the button was released.

To catch the actual mouse click, use the click event.

The first time the slot is drawn, the start event fires. The block is handed self, the slot object which has just been drawn.

Note: Purple Shoes doesn't support start method.

Next: Manipulation Blocks