VR-Forces 4.10 Class Documentation
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
List of all members | Public Types | Public Member Functions | Static Public Member Functions | Public Attributes | Protected Types | Protected Member Functions | Protected Attributes
makVrv::DtSelectionManager Class Reference

The master window of the scene. More...

Inheritance diagram for makVrv::DtSelectionManager:
Inheritance graph
[legend]

Public Types

enum  SelectionMode { SelectionModeAll = 0, SelectionModeEntities = 1, SelectionModeTerrain = 2 }
 
enum  SelectionType {
  NoValidSelection, Entity, Prop, BuoyOrBeacon,
  Terrain, Aggregate, Observer, ControlObject,
  OverlayObject, Intervisibility, Feature, Mixed
}
 The nature of the current selection. More...
 
enum  SelectionOperation {
  NoOperation = 0, AddToSelection, RemoveFromSelection, MultipleSelection,
  SetSelection, ClearSelection, MaintainSelectionIfSelected
}
 
typedef std::set< DtUniqueIDIdSet
 

Public Member Functions

virtual ~DtSelectionManager ()
 DTOR. More...
 
virtual void performSelectionOperation (SelectionOperation op, const IdSet &ids)
 Utility function for specify the operation using a variable. More...
 
virtual void setCurrentSelections (const IdSet &selections)
 set the current selection set More...
 
virtual void setCurrentHovered (const DtUniqueID &sceneObjId, bool hovered)
 Announce whether a widget associated with some scene object is being hovered over with the mouse cursor. More...
 
const DtSelectionManager::IdSetcurrentSelections () const
 get the current selection set More...
 
virtual void addToCurrentSelection (const IdSet &adds)
 add to the current selection set More...
 
virtual void maintainCurrentSelectionIfSelected (const IdSet &maintain)
 If item is already selected, maintain the current selection, else act as SetSelection. More...
 
virtual void removeFromCurrentSelection (const IdSet &removes)
 add to the current selection set More...
 
virtual void toggleFromCurrentSelection (const IdSet &toggles)
 Each id current not selected will be selected and each id already selected will be deselected. More...
 
virtual void removeFromCurrentSelection (const DtElementData::UniqueIdList &removes)
 add to the current selection set More...
 
SelectionMode selectionMode () const
 Selection Mode. More...
 
virtual void setSelectionMode (SelectionMode mode)
 
virtual bool isSelectable (DtUniqueID id) const
 Determine an element's selectability Determines, based on the element's type and current selection mode, if the object is selectable. More...
 
virtual bool isSelectable (const DtElementEntry *entry) const
 Determine an object's selectability. More...
 
bool isSelected (DtUniqueID id) const
 Check to see if an object is selected. More...
 
virtual SelectionType selectionType () const
 
virtual bool propSelectionHasNonReplacedProp ()
 check to see if any of the selected props are not replaced props More...
 
virtual bool propSelectionMajorityTransparent ()
 Is the majority of selected props transparent or opaque; used by toggle transparency selected. More...
 
virtual void slot_onElementsRemoved (const DtElementData::UniqueIdList &elementIds)
 Called by signal whenever elements are removed. More...
 
virtual void backupCurrentSelection ()
 Puts the current selection onto the backup queue. More...
 
virtual bool restoreCurrentSelection ()
 Restores a previously backed up selection. More...
 
bool selectionIsVertex (const IdSet &selection)
 
bool objectIsVertex (const DtUniqueID &id)
 
DtUniqueID parentId (const DtUniqueID &id)
 
virtual bool allItemsWantVertexSelection (const IdSet &) const
 Returns true if the items in the selection set are vertices and the vertices parents all want vertex selection. More...
 
virtual void addWantsVertexSelection (DtElementEntry::ElementType)
 Adds an item to the wants to have vertex selection list. More...
 
virtual void removeWantsVertexSelection (DtElementEntry::ElementType)
 Removes an item to the wants to have vertex selection list. More...
 
virtual bool wantsVertexSelection (DtElementID) const
 Returns true if the object type wants vertex selection. More...
 
virtual void addSelectableObjectType (DtElementEntry::ElementType type, SelectionMode=SelectionModeAll)
 {@ More...
 
virtual void removeSelectableObjectType (DtElementEntry::ElementType type, SelectionMode)
 
virtual void removeSelectableObjectTypeFromAllModes (DtElementEntry::ElementType type)
 
virtual bool objectTypeSelectable (DtElementEntry::ElementType type, SelectionMode mode) const
 
virtual bool objectTypeSelectable (DtElementEntry::ObjectType type) const
 Uses current selection mode to see if object type is selectable. More...
 
- Public Member Functions inherited from makVrv::DtVirtualBaseClass
 DtVirtualBaseClass ()
 Do nothing constructor. More...
 
virtual ~DtVirtualBaseClass ()
 Virtual do nothing destructor. More...
 

Static Public Member Functions

static DtSelectionManagerinstance (DtDe &de)
 Get the selection manager instance. More...
 
static SelectionOperation selectionOperationForMouseEvent (const DtMouseEvent &mouseEvent)
 Choose the appropriate selection operation based on the mouse event. More...
 
static bool typeSupportsMultipleSelection (DtElementEntry::ObjectType type, bool vertexSelectsParent)
 Check to see if an object type supports multiple selection. More...
 

Public Attributes

boost::signalslib::signal
< void(const DtElementID
&entityId, bool hasMouseCursor)> 
signal_elementHasMouseCursorStateChanged
 Emitted when an element's scene object is being hovered over by the mouse cursor. More...
 
boost::signalslib::signal
< void(const IdSet &selected,
const IdSet &deselected,
SelectionType newType,
SelectionType oldType)> 
signal_currentSelectionChanged
 Emited when the current selection changes. More...
 
boost::signalslib::signal
< void(const DtUniqueID &id,
const DtUniqueID &parentId)> 
signal_vertexSelected
 Special case: emitted in addition to of currentSelectionChanged when a vertex is selected. More...
 
boost::signalslib::signal
< void(const DtUniqueID &id,
const DtUniqueID &parentId)> 
signal_vertexDeselected
 Special case: emitted in addition to currentSelectionChanged when a vertex is deselected. More...
 
boost::signalslib::signal
< void(const IdSet &entityIds)> 
signal_entityInfoToggled
 Emitted when the selected entities have their info pin state toggled Perhaps this signal doesn't belong here... More...
 
boost::signalslib::signal
< void(const DtUniqueID
&, const DtColorValue &, bool)> 
signal_entityTrackHistoryColorOverride
 Emitted when the selected entity has its track history color changed. More...
 
boost::signalslib::signal< void()> signal_selectionModeChanged
 Emited when the selection mode changes. More...
 

Protected Types

typedef std::set
< DtElementEntry::ElementType
WantsVertexSelection
 
typedef std::set
< DtElementEntry::ElementType
ElementTypeSet
 
typedef boost::unordered_map
< SelectionMode,
ElementTypeSet
SelectionModeMap
 
typedef std::queue< IdSetIdSetQueue
 

Protected Member Functions

 DtSelectionManager (DtDe &de)
 CTOR. More...
 
void addToCurrentSelection (DtUniqueID id)
 add to the current selection set More...
 
void removeFromCurrentSelection (DtUniqueID id)
 add to the current selection set More...
 
void announceCurrentSelectionChanged (const IdSet &selected, const IdSet &deselected, SelectionType oldType)
 Announce the selection changes by emitting signals. More...
 
void updateSelectionDisplay (const IdSet &selected, const IdSet &deselected)
 
void updateSelectionType ()
 
SelectionType elementSelectionType (DtElementEntry *entry) const
 Get the selection type for an element. More...
 
void convertVertexIdsToParentIds (const IdSet &in, IdSet &out)
 

Protected Attributes

DtDemyDe
 
IdSet myCurrentSelections
 
SelectionMode mySelectionMode
 
bool myIgnoreSelectionChanges
 Set when a signal is raised to avoid loops. More...
 
bool myIgnoreSelectionModeChanges
 
SelectionType mySelectionType
 
IdSetQueue myBackupSelections
 
WantsVertexSelection myWantsVertexSelection
 
SelectionModeMap mySelectionModeMap
 
DtSignalConnectionManager mySignals
 

Detailed Description

The master window of the scene.

Member Typedef Documentation

typedef std::queue<IdSet> makVrv::DtSelectionManager::IdSetQueue
protected

Member Enumeration Documentation

Enumerator
SelectionModeAll 
SelectionModeEntities 
SelectionModeTerrain 

The nature of the current selection.

Enumerator
NoValidSelection 
Entity 
Prop 
BuoyOrBeacon 
Terrain 
Aggregate 
Observer 
ControlObject 
OverlayObject 
Intervisibility 
Feature 
Mixed 

More than one type of object selected.

Enumerator
NoOperation 
AddToSelection 
RemoveFromSelection 
MultipleSelection 
SetSelection 
ClearSelection 
MaintainSelectionIfSelected 

If item is already selected, maintain the current selection, else act as SetSelection This will only be true if all items are currently selected in the supplied set.

Constructor & Destructor Documentation

virtual makVrv::DtSelectionManager::~DtSelectionManager ( )
virtual

DTOR.

makVrv::DtSelectionManager::DtSelectionManager ( DtDe de)
protected

CTOR.

Member Function Documentation

static DtSelectionManager& makVrv::DtSelectionManager::instance ( DtDe de)
static

Get the selection manager instance.

virtual void makVrv::DtSelectionManager::performSelectionOperation ( SelectionOperation  op,
const IdSet ids 
)
virtual

Utility function for specify the operation using a variable.

Reimplemented in makVrf::DtVrfSelectionManager.

virtual void makVrv::DtSelectionManager::setCurrentSelections ( const IdSet selections)
virtual

set the current selection set

virtual void makVrv::DtSelectionManager::setCurrentHovered ( const DtUniqueID sceneObjId,
bool  hovered 
)
virtual

Announce whether a widget associated with some scene object is being hovered over with the mouse cursor.

This function finds the DtElementID of the scene object from its scene object id and emits signal_elementHasMouseCursorStateChanged(elementId, hovered). This function will do nothing if the element ID cannot be determined.

See Also
DtElementData::elementIdFromSceneObjectId(...)
const DtSelectionManager::IdSet& makVrv::DtSelectionManager::currentSelections ( ) const

get the current selection set

virtual void makVrv::DtSelectionManager::addToCurrentSelection ( const IdSet adds)
virtual

add to the current selection set

virtual void makVrv::DtSelectionManager::maintainCurrentSelectionIfSelected ( const IdSet maintain)
virtual

If item is already selected, maintain the current selection, else act as SetSelection.

This will only be true if all items are currently selected in the supplied set

virtual void makVrv::DtSelectionManager::removeFromCurrentSelection ( const IdSet removes)
virtual

add to the current selection set

virtual void makVrv::DtSelectionManager::toggleFromCurrentSelection ( const IdSet toggles)
virtual

Each id current not selected will be selected and each id already selected will be deselected.

virtual void makVrv::DtSelectionManager::removeFromCurrentSelection ( const DtElementData::UniqueIdList removes)
virtual

add to the current selection set

SelectionMode makVrv::DtSelectionManager::selectionMode ( ) const

Selection Mode.

virtual void makVrv::DtSelectionManager::setSelectionMode ( SelectionMode  mode)
virtual
virtual bool makVrv::DtSelectionManager::isSelectable ( DtUniqueID  id) const
virtual

Determine an element's selectability Determines, based on the element's type and current selection mode, if the object is selectable.

This form needs to look up the element, so it's better to use the form with a DtElementEntry argument if you have it.

virtual bool makVrv::DtSelectionManager::isSelectable ( const DtElementEntry entry) const
virtual

Determine an object's selectability.

Determines, based on the object's type and current selection mode, if the object is selectable.

bool makVrv::DtSelectionManager::isSelected ( DtUniqueID  id) const

Check to see if an object is selected.

virtual SelectionType makVrv::DtSelectionManager::selectionType ( ) const
virtual
virtual bool makVrv::DtSelectionManager::propSelectionHasNonReplacedProp ( )
virtual

check to see if any of the selected props are not replaced props

virtual bool makVrv::DtSelectionManager::propSelectionMajorityTransparent ( )
virtual

Is the majority of selected props transparent or opaque; used by toggle transparency selected.

virtual void makVrv::DtSelectionManager::slot_onElementsRemoved ( const DtElementData::UniqueIdList elementIds)
virtual

Called by signal whenever elements are removed.

virtual void makVrv::DtSelectionManager::backupCurrentSelection ( )
virtual

Puts the current selection onto the backup queue.

virtual bool makVrv::DtSelectionManager::restoreCurrentSelection ( )
virtual

Restores a previously backed up selection.

If there are no selections backed up, returns false

bool makVrv::DtSelectionManager::selectionIsVertex ( const IdSet selection)
bool makVrv::DtSelectionManager::objectIsVertex ( const DtUniqueID id)
DtUniqueID makVrv::DtSelectionManager::parentId ( const DtUniqueID id)
virtual bool makVrv::DtSelectionManager::allItemsWantVertexSelection ( const IdSet ) const
virtual

Returns true if the items in the selection set are vertices and the vertices parents all want vertex selection.

Element types can be added to vertex selection by calling addWantsVertexSelection(). To remove, call removeWantsVertexSelection()

virtual void makVrv::DtSelectionManager::addWantsVertexSelection ( DtElementEntry::ElementType  )
virtual

Adds an item to the wants to have vertex selection list.

virtual void makVrv::DtSelectionManager::removeWantsVertexSelection ( DtElementEntry::ElementType  )
virtual

Removes an item to the wants to have vertex selection list.

virtual bool makVrv::DtSelectionManager::wantsVertexSelection ( DtElementID  ) const
virtual

Returns true if the object type wants vertex selection.

virtual void makVrv::DtSelectionManager::addSelectableObjectType ( DtElementEntry::ElementType  type,
SelectionMode  = SelectionModeAll 
)
virtual

{@

Manages types that are valid for certain selection modes

virtual void makVrv::DtSelectionManager::removeSelectableObjectType ( DtElementEntry::ElementType  type,
SelectionMode   
)
virtual
virtual void makVrv::DtSelectionManager::removeSelectableObjectTypeFromAllModes ( DtElementEntry::ElementType  type)
virtual
virtual bool makVrv::DtSelectionManager::objectTypeSelectable ( DtElementEntry::ElementType  type,
SelectionMode  mode 
) const
virtual
virtual bool makVrv::DtSelectionManager::objectTypeSelectable ( DtElementEntry::ObjectType  type) const
virtual

Uses current selection mode to see if object type is selectable.

static SelectionOperation makVrv::DtSelectionManager::selectionOperationForMouseEvent ( const DtMouseEvent mouseEvent)
static

Choose the appropriate selection operation based on the mouse event.

static bool makVrv::DtSelectionManager::typeSupportsMultipleSelection ( DtElementEntry::ObjectType  type,
bool  vertexSelectsParent 
)
static

Check to see if an object type supports multiple selection.

Since it matters if we're currently selecting our parent with vertices and since this function is static, that must be passed in

void makVrv::DtSelectionManager::addToCurrentSelection ( DtUniqueID  id)
protected

add to the current selection set

void makVrv::DtSelectionManager::removeFromCurrentSelection ( DtUniqueID  id)
protected

add to the current selection set

void makVrv::DtSelectionManager::announceCurrentSelectionChanged ( const IdSet selected,
const IdSet deselected,
SelectionType  oldType 
)
protected

Announce the selection changes by emitting signals.

void makVrv::DtSelectionManager::updateSelectionDisplay ( const IdSet selected,
const IdSet deselected 
)
protected
void makVrv::DtSelectionManager::updateSelectionType ( )
protected
SelectionType makVrv::DtSelectionManager::elementSelectionType ( DtElementEntry entry) const
protected

Get the selection type for an element.

void makVrv::DtSelectionManager::convertVertexIdsToParentIds ( const IdSet in,
IdSet out 
)
protected

Member Data Documentation

boost::signalslib::signal<void (const DtElementID& entityId, bool hasMouseCursor)> makVrv::DtSelectionManager::signal_elementHasMouseCursorStateChanged

Emitted when an element's scene object is being hovered over by the mouse cursor.

boost::signalslib::signal<void (const IdSet& selected, const IdSet& deselected, SelectionType newType, SelectionType oldType)> makVrv::DtSelectionManager::signal_currentSelectionChanged

Emited when the current selection changes.

boost::signalslib::signal<void (const DtUniqueID& id, const DtUniqueID& parentId)> makVrv::DtSelectionManager::signal_vertexSelected

Special case: emitted in addition to of currentSelectionChanged when a vertex is selected.

boost::signalslib::signal<void (const DtUniqueID& id, const DtUniqueID& parentId)> makVrv::DtSelectionManager::signal_vertexDeselected

Special case: emitted in addition to currentSelectionChanged when a vertex is deselected.

boost::signalslib::signal<void (const IdSet& entityIds)> makVrv::DtSelectionManager::signal_entityInfoToggled

Emitted when the selected entities have their info pin state toggled Perhaps this signal doesn't belong here...

boost::signalslib::signal<void(const DtUniqueID&, const DtColorValue&, bool)> makVrv::DtSelectionManager::signal_entityTrackHistoryColorOverride

Emitted when the selected entity has its track history color changed.

boost::signalslib::signal<void ()> makVrv::DtSelectionManager::signal_selectionModeChanged

Emited when the selection mode changes.

DtDe& makVrv::DtSelectionManager::myDe
protected
IdSet makVrv::DtSelectionManager::myCurrentSelections
protected
SelectionMode makVrv::DtSelectionManager::mySelectionMode
protected
bool makVrv::DtSelectionManager::myIgnoreSelectionChanges
protected

Set when a signal is raised to avoid loops.

bool makVrv::DtSelectionManager::myIgnoreSelectionModeChanges
protected
SelectionType makVrv::DtSelectionManager::mySelectionType
protected
IdSetQueue makVrv::DtSelectionManager::myBackupSelections
protected
WantsVertexSelection makVrv::DtSelectionManager::myWantsVertexSelection
protected
SelectionModeMap makVrv::DtSelectionManager::mySelectionModeMap
protected
DtSignalConnectionManager makVrv::DtSelectionManager::mySignals
protected

The documentation for this class was generated from the following file:

Document ID: Generated on Tue Sep 21 17:42:52 EDT 2021 from SVN revision 234861
Copyright © 2005-2021 MAK Technologies. All Rights Reserved (www.mak.com)