Selection - maintains a list of selected graphical compo-
nent views
SYNOPSIS
#include <Unidraw/selection.h>
DESCRIPTION
A Selection manages a set of distinguished graphical com-
ponent views, usually those in which the user has
expressed interest by selecting them with a tool or com-
mand. Each selection object maintains a list of graphical
component views and provides operations for iterating
through and manipulating the list. Components, commands,
tools, and editors often rely on one or more selection
objects to supply the components on which they operate.
PUBLIC OPERATIONS
Selection(Selection* = nil)
Create a new selection object, optionally contain-
ing references to the same views as the given
selection object.
virtual ~Selection()
Destroy a selection instance. Deleting the selec-
tion does not in turn delete the view instances it
maintains.
void Show(Viewer* = nil)
void Update(Viewer* = nil)
void Hide(Viewer* = nil)
void Init(Viewer* = nil)
These operations affect how the selection is repre-
sented visually in the viewer. Show instructs the
views to initialize and draw their handles to high-
light themselves, thus indicating that they are
selected. To do so, it calls RedrawHandles on each
view. Update makes handles of newly-selected,
unhighlighted views appear by calling DrawHandles
on all its views. Hide unhighlights the views by
calling their EraseHandles operation. Finally,
Init initializes each view's handles without draw-
ing them (in case the handles' appearance may have
changed) by calling InitHandles on each.
void Clear(Viewer* = nil)
Remove all views from the Selection object, hiding
their handles in the process.
void Append(GraphicView*)
void Prepend(GraphicView*)
void InsertAfter(Iterator, GraphicView*)
void InsertBefore(Iterator, GraphicView*)
void Remove(Iterator&)
Operations for modifying the selection's list of
views. Append and Prepend add a GraphicView to the
end and the beginning of the list, respectively.
InsertAfter and InsertBefore insert a GraphicView
after and before the GraphicView pointed to by the
iterator, respectively. The Remove operations
remove a view from the list (without deleting it).
You can remove a view instance by referring to it
explicitly or by specifying an iterator. If an
iterator is supplied, the Remove operation will
advance it to point to the following view as a side
effect.
GraphicView* GetView(Iterator)
void SetView(GraphicView*, Iterator&)
GetView returns the view to which an iterator
points. SetView initializes an iterator to point
to a particular view in the list; it initializes
the iterator to point to a nil instance if the
given GraphicView is not in the selection list.
void First(Iterator&)
void Last(Iterator&)
void Next(Iterator&)
void Prev(Iterator&)
boolean Done(Iterator)
Operations for iterating over the selection list.
First and Last initialize an iterator to point to
the beginning and end of the list, respectively.
Next increments the iterator to point to the fol-
lowing view, while Prev decrements the iterator to
point to the preceding view. Done returns whether
or not the iterator points beyond the first or last
view in the list.
boolean IsEmpty()
boolean Includes(GraphicView*)
int Number()
Operations that return information about the selec-
tion object's contents. IsEmpty returns whether
the selection list is empty, Includes returns
whether the list contains the given view, and Num-
ber returns the number of views in the list.
void Sort(GraphicView*)
Sort the views in the selection list to conform to
their order in the given GraphicView's list of
children. The selection list's order usually
reflects the order in which the user selected the
objects, not their order in their parent. Sort is
useful in operations that modify or depend on the
void Exclusive(Selection*)
Operations that change the selection object's con-
tents based on another selection's. Merge adds the
views in the given selection to those already in
the selection object (the union of the two sets),
while Exclusive adds those views not already in
this object and removes those common to both (the
union minus the intersection of the two sets).
Neither of these operations change the contents of
their argument.
void GetBox(Coord&, Coord&, Coord&, Coord&)
Return the bounding box circumscribing the views in
the selection list.
PROTECTED OPERATIONS
UList* Elem(Iterator)
GraphicView* View(UList*)
Selection stores its views on a UList, which is
accessible via the _ulist protected member. The
Selection's iteration operations store the UList
containing the current view in their iterator.
Elem is a convenience function for returning the
UList to which an iterator points, and View
extracts the GraphicView that a UList element con-
tains.
SEE ALSO
GraphicView(3U), Iterator(3U), UList(3U), Viewer(3U)
Man(1) output converted with
man2html