This module provides an easy-to-use interface to create an interactive, graphical front-end for you graph rewriting system. The controls of the GUI are:
- left-click on a menu entry: rule selection. At all times for each redex (according to the selected rule) one node of the redex (the first node that is matched) is marked red in the graph.
- right-click on a menu entry: applies the rule once for each redex currently existing in the graph. No contractions take place for redexes deleted or arisen during this process.
- right-click on a (red) node: applies the selected rule to the redex containing the node.
- drag a node: by this you can manually help out the graph drawing mechanism to find a better layout.
- drag outside of a node: scroll around.
- mouse wheel: zoom
space: pause/resume layouting
Please have a look the graph-rewriting-ski package for an example application that makes use of this library.
Initialises GLUT. Returns program name and command line arguments.
|:: (View [Port] n, Render n, View Position n, PortSpec n, View Rotation n)|
The number of layout steps to apply before displaying the graph
|-> (Graph n -> Graph n)|
A projection function that is applied just before displaying the graph
|-> (Node -> Rewrite n a)|
The monadic graph transformation code for a layout step
|-> Graph n|
|-> LabeledTree (Rule n)|
The rule menu given as a tree of named rules
|-> IO ()|
run can be used to start the GUI