Gaphas is a diagramming widget for GTK+ written in Python.
It is a MVC canvas that uses Cairo_ for rendering. One of the nicer things of this widget is that the user (model) is not bothered with bounding box calculations: this is all done through Cairo.
Here are some key features of "Gaphas":
· Each item has it's own separate coordinate space (easy when items are rotated).
· Items on the canvas can be connected to each other. Connections are maintained by a linear constraint solver.
· Multiple views on one Canvas.
· What is drawn is determined by Painters. Multiple painters can be used and painters can be stacked.
· User interaction is handled by Tools. Tools can be stacked.
· Versatile undo/redo system