The Tools section - a menu and a ruler below the window 
drawing area - offers extra mechanisms to improve GAMGI 
functionality. Everytime an action is active, its label 
in the tool bar is highlighted, showing the default color 
again when disabled.
Axes
When rotating/moving, changes can be applied to the objects 
or to the referential. In GAMGI, by default, rotation/translation 
is applied to the objects (even when the selected object is a 
layer, in which case all layer objects are rotated/translated). 
To rotate/translate the referential instead, just press the 
Axes button. To restore the initial mode, press 
Axes
again. Changing the referential is equivalent to select
Layer->Modify and change the layer parameters that 
define the observer position and orientation: 
Eye, 
Center and 
Up
Changing the referential has usually the opposite effect
of changing the object, a confusing effect, even for experienced
users: moving an object to the right has the same visual effect 
of moving the referential to the left. Moreover, changing the 
referential is usually a much more sensitive task than to change 
the objects: instead of changing an object some distance away, 
the eye position is directly changing. Using this mode with the 
ruler is thus probably more effective than dragging with the mouse, 
particularly when dragging along arcs far from the center, to 
rotate along the Z axis.
The (X,Y,Z) referential mentioned here is a set of 3 vectors
pointing from the middle of the screen to: the right (X),
the top (Y), the user (z). By default, the referential is 
positioned at (10, 0, 0) and the axes are orientated along 
(1,0,0) for X, (0,1,0) for Y and (0,0,1) for Z, but this is 
no longer the case when the layer referential is moved or rotated.
 
GAMGI supports 3 methods to rotate, move and scale:
 
1) Dragg the mouse over the drawing area. This is very intuitive and works 
very well with small- or medium-sized objects. However, it is not very 
precise, and is too slow for very large objects. Moreover, it is not possible 
to move along the Z axis and rotations around the Z-axis are less precise 
(though still intuitive).
2) Specify directly the rotation angles and translation vectors, using the 
Object Create and 
Object Modify dialogs. Although this is the 
most precise method, rotation and translation values must be introduced 
directly, which is usually very inconvenient unless the good values are 
known in advance.
3) After selecting the action in the tool bar: 
Rotate, 
Move 
or 
Scale, press the mouse over the positional ruler below, 
centered at 0, with larger negative changes at the far left and 
larger positive changes at the far right. Rotations/translations 
around/along the x,y,z axes are selected pressing the left,middle,right 
mouse buttons, respectively (scaling works with any button).
This method is more precise than the mouse dragging movements, 
without the need to introduce specific values for rotation, 
translation, scaling.
Rotate
To rotate, press 
Rotate and then click on the positive 
(counter-colockwise) or negative side of the ruler, with the left 
button (X rotation), the middle button (Y rotation) or the right 
button (Z rotation). The rotation angle for the current mouse position, 
over the ruler, is shown in real time in the window status bar.
Currently rotations angles vary in the range [-30.0, +30.0].
Rotating is always applied to the currently selected object 
when 
Axes is off and to the current layer referential
when it is on.
Move
To move, press 
Move and then click on the positive 
or negative side of the ruler, with the left button (X translation), 
the middle button (Y translation) or the right button (Z translation).
The translation length for the current mouse position, over 
the ruler, is shown in real time in the window status bar.
Currently translation lengths vary in the range [-10.0, +10.0].
Translating is always applied to the currently selected object
when 
Axes is off and to the current layer referential
when it is on.
Scale
To scale, press 
Scale and then click on the positive 
or negative side of the ruler, with any button mouse.
The scaling factor for the current mouse position, over 
the ruler, is shown in real time in the window status bar.
Currently scaling factors vary in the range [0.5, 2.0].
Scaling is always applied to the currently selected object
when 
Axes is off and to the current layer when it is on.
Undo
For each layer, GAMGI maintains a list of old configurations, 
saved automatically, permiting users to undo any discontinuous 
action inside a layer. To change the number of saved configurations 
select 
Layer->Config.
Pressing 
Undo shows a dialog allowing users to navigate back and 
forward through a list of previously saved layers, plus the current one. 
Pressing 
Cancel restores the original layer and closes the dialog, 
pressing 
Ok turns the visible layer into the new current layer. 
In this case, the old current layer becomes the last saved layer, thus 
becoming the last to be removed and the first to appear when the user 
presses 
Undo again and inspects the saved layers.
Undo keeps automatically any discontinuous action occurring in a layer 
but ignores completely continuous actions. A discontinuous action occurs
when a user presses 
Ok, clicks over the ruler to rotate, 
move, scale an object, or in general when a clear boundary 
can be defined between what existed before and after.
Continuous actions occur when objects are moved, rotated, scaled,
directly with the mouse, as parameters are changing almost continuously.
If continuous actions were saved with 
Undo, in a few seconds all 
Undo levels would be filled up with almost equal layers and old 
Undo layers would be removed forever, turning the 
Undo 
mechanism much less useful. Moreover, continuous actions would be slow, 
because GAMGI would be saving things all the time.
Save
The 
Save mechanism works exactly as the 
Undo mechanism, 
except that it is fully controlled by the user, who decides when a layer 
must be saved, while the 
Undo mechanism works without any user 
intervention. With the 
Save mechanism, users can save any layer 
exactly when they wish (in particular after any discontinuous action), 
and control when old layers are discarded, after exceeding the number 
of saved configurations.
To save a layer, just press 
Save and then 
Ok, this way adding 
the current layer to the list of saved configurations (this mechanism works 
also with 
Undo, but it is not as useful as here, because 
Undo 
layers are removed automatically, without user control, when the number of 
Undo levels is exceeded).
Although 
Save and 
Undo work exactly in the same way and 
complement each other, they use totally independent resources, even the number 
of 
Undo levels is independent of the number of 
Save levels. 
Console
Pressing 
Console raises the xterm window used to launch GAMGI, 
so users can easily inspect messages sent to the standard output. 
Pressing the console button again puts the current window on top 
and buries the xterm window beneath.
Shell
Pressing 
Shell launches a xterm window, totally independent 
from GAMGI, that can be used to edit files, perform shell actions 
or launch other applications.