
Step 1:

just sketching the app: the class structure, the events, the general
idea

Note: this code may be reused. pay attention to `draw_background'

Step 2:

adding basic rubber band selection stuff; the selection is recorded in
the corresponding object; try to left click and drag around the
window; for now, if there is another click, another selection is
started no matter what

Step 3:

the selection class now gets some code; functionality added: after
releasing the left button, one can now use the left button to move
individual points. a click with the left button outside the points
restarts the rubberband selection

Step 4:

The order of the selection point matters; we need a way to show that
and to allow the user to edit this order.

Showing the order can be done drawing numbers around each
point. However, this has the disadvantage of overloading the drawing
and there is some work required in order to find the best
(uncluttered) position of the numbers all the time. This is why I
chose a simpler way: The first point is drawn a bit larger and it's
square is thicker, and there is a small arrow pointing to the second
point. Given the fact we only have four points, this is a pretty good
indication of the order, without overloading the interface with
drawings. All the required modifications occur in the `draw' command
of the selection class. There should be a small modification in the
`matches_point' query also ...

About the editing: one clicks a point with the middle button and then
presses a number from one to four. The clicked point becomes the point
number <number pressed on the keyboard>. If the typed number is 5 the
whole selection is rotated "to the left" (point 2 becomes 1, 3->2,
4->3, 1->4). If it's 6 then the rotations is in the other order.
