Gui Command

The GuiCommand is one of the most important functions of FreeCAD in the main interaction point of the user. Every time the user selects a menu item or presses a toolbar button it activates a GuiCommand. Some of the attributes of a GuiCommand are:
 * Defines a name
 * Contains an icon
 * Defines the scope for an undo/redo
 * Has a help page
 * Opens and controls dialogs
 * Macro recording
 * and so forth...

Naming
The GuiCommand is named in a certain way: ModuleName_CommandName e.g "Base_Open" this is the Open Gui Command in the Base system. The GuiCommand in a certain module is named with the module name in front e.g. "Part_Cylinder".

If the docu is not finished use Template:UnfinishedDocu

Help page
Every GuiCommand has to have a help page. The help page is hosted on the FreeCAD docu wiki. The article has the same name as the GuiCommand, e.g. Draft ShapeString.

To create your own help pages you can use the template: GuiCommand model

Example:
 * Draft ShapeString
 * Draft Line

Icons


Every GuiCommand has to have an icon. We use the Tango icon set and its guidelines. On the right side you see the tango color palette.

Preferable all Icons are drafted with SVG with e.g. Inkscape. This makes it easier to apply changes and derive additional Icons in the same application space.

icons color coding chart



We try as much as possible to respect this chart, so the color of the icons has a direct meaning.

Quality requirements
There are a lot of GuiCommands (Features) in FreeCAD which are experimental or used shortly for implementation purposes. These GuiCommands are mostly in the dedicated workbenches like Part, Mesh or Cam. To ensure a good user experience the workbench Complete was created. This workbench incorporates all GuiCommands which meet certain Quality requirements which are described here:


 * The Command/Feature has to be finished. No work in progress!
 * Has to have a help page like Draft ShapeString
 * All the fields in Template:GuiCommand have to filled in
 * A picture of the dialogs the command eventually yield
 * detailed description of the command and all its parameters and settings
 * Description of the related python interfaces and classes with example code
 * Set up a proper Icon and menu position

Hopefully this becomes true for all GuiCommands in the List of Commands.