Next: , Previous: Interactive mode, Up: Top


9 Graphical User Interface

In the event that adjustments to the final figure are required, the Graphical User Interface (GUI) xasy included with Asymptote allows you to move graphical objects around with mouse Button-1.

To use xasy, one must first deconstruct Asymptote pictures into transparent GIF images with the command asy -xN, where N denotes the magnification (a positive real number, say 2). The command asy -VxN automatically invokes xasy once deconstruction is complete. Alternatively, one may turn on the -xN option in interactive mode or from within a module using the function gui() or gui(N). One can turn GUI mode off again with gui(0).

The modified layout can be written to disk with the w key in a form readable to Asymptote. A wheel mouse is convenient for raising and lowering objects, to expose the object to be moved. If a wheel mouse is not available, mouse Button-2 (lower) can be used repeatedly instead. Here are the currently defined key mappings:

z
undo
r
redo
<Delete>
delete
w
write
q
quit

One can also draw connected line segments by holding down the shift key and pressing mouse Button-1 at each desired node. Releasing the shift key ends the definition of the path. More features will be added to this preliminary GUI soon.

As xasy is written in the interactive scripting language Python/TK, it requires that both Python and the tkinter package be installed (included with Python under MSDOS). Under Fedora Core 4, you can either install tkinter with the command

yum install tkinter
or manually install the individual packages:
rpm -i tkinter-2.4.1-2.i386.rpm 
rpm -U --nodeps tix-8.1.4-100.i386.rpm
rpm -U --nodeps tk-8.4.9-3.i386.rpm 

Deconstruction of compound objects (such as arrows) can be prevented by enclosing them within the commands

void begingroup(picture pic=currentpicture);
void endgroup(picture pic=currentpicture);
By default, the elements of a picture or frame will be grouped together on adding them to a picture. However, the elements of a frame added to another frame are not grouped together by default: their elements will be individually deconstructed (see add).