This file lists features of GEF. This is useful in seeing what is there, and can be a good place to start before diving into the code. Also this feature list is useful for informal regression testing: if you add something new, check to make sure that all the old features still work.
Each feature is named with a unique string (e.g., "drag_object_constrained"). For most features there are comments in the source code that indicate where the feature manifests itself. Also there are references in the feature list to bugs in the bug list. You can follow the references by using a multi-file search command (e.g., grep) or you can use tags if you use emacs. A tag file with entries for bugs and features can be downloaded from the GEF web site.
Some features are planned but not implmented. These are left as projects for students or other users of this framework. These features are marked with "Needs-More-Work" here and in the code (if there is a marked place where something should be added).
Most of these features are user-visible, meaning that they are something that the user can see and use. Some of them are programmer features that only the programmer can see and use. Most of the programmer features are in section 7, and most of them are pervasive throughout the code, so there are not very many comments in the code that refer back to these features.
My intent was mainly to list features, and to describe them only a little bit. A detailed description of each feature would be useful for on-line help, but it would take a very long time to write and it would need to be updated as GEF changes. I have given brief comments only where the names of features are not enough to describe them.
Feature list overview:
a.
FEATURE: select_by_click Needs-More-Work
b.
FEATURE: select_by_area
c.
FEATURE: select_by_tab_key
d.
FEATURE: select_all
e.
FEATURE: select_inversion
f.
FEATURE: select_none
g.
FEATURE: select_by_predicate Needs-More-Work
a.
FEATURE: drag_object
b.
FEATURE: drag_object_constrained
c.
FEATURE: drag_handle
Clicking on a DiagramElement selects it. Shift-click is buggy.
Starting on the drawing background and dragging out an area with the
mouse will select all DiagramElements in the rectangle.
Pressing the tab key when zero or one DiagramElements are selected
will select the first or next DiagramElement. Shift-tab selects the
last/previous element. The ordering of DiagramElements is their
back-to-front ordering.
A menu comand allows users to select all DiagramElements in the
diagram.
A menu command allows users to select all DiagramElements that are
not currently selected.
Clicking in the background area deselects all DiagramElements.
In the future I would like to define a dialog box that allows users
to select all DiagramElements that fit certain criteria: e.g.,
select all rectangles that have line width of zero.
When the user drags starting from a DiagramElement, the
DiagramElement is continously modified until the user lets go.
The user can move DiagramElements around by dragging them.
Holding down the control key keeps the DiagramElements moving only
vertically or only horizontally.
Dragging on a handle of a selected DiagramElement will change the
state of the DiagramElement, e.g., resizing it.