Chapter 11
Morphic

Morphic is the name given to Pharo’s graphical interface. Morphic is written in Smalltalk, so it is fully portable between operating systems; as a consequence, Pharo looks exactly the same on Unix, MacOS and Windows. What distinguishes Morphic from most other user interface toolkits is that it does not have separate modes for “composing” and “running” the interface: all the graphical elements can be assembled and disassembled by the user, at any time.1

11.1 The history of Morphic

Morphic was developed by John Maloney and Randy Smith for the Self programming language, starting around 1993. Maloney later wrote a new version of Morphic for Squeak, but the basic ideas behind the Self version are still alive and well in Pharo Morphic: directness and liveness. Directness means that the shapes on the screen are objects that can be examined or changed directly, that is, by pointing at them using the mouse. Liveness means that the user interface is always able to respond to user actions: information on the screen is continuously updated as the world that it describes changes. A simple example of this is that you can detach a menu item and keep it as a button.

PIC Bring up the world menu. Meta-click once on the world menu to bring up its morphic halo2 , then meta-click again on the menu item you want to detach to bring up its halo. Now drag that item elsewhere on the screen by grabbing the black handle PIC, as shown in Figure 11.1.


PIC

Figure 11.1: Detaching a morph, here the Workspace menu item, to make it an independent button.


All of the objects that you see on the screen when you run Pharo are Morphs, that is, they are instances of subclasses of class Morph.

Morph itself is a large class with many methods; this makes it possible