VR-Forces Developer's Guide
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
vrfSelectionHandler.h
Go to the documentation of this file.
1 /*******************************************************************************
2 ** Copyright (c) 2014 MAK Technologies, Inc.
3 ** All rights reserved.
4 *******************************************************************************/
5 
8 
10 
11 #pragma once
12 
13 #include <vrfGuiCore/vrfGuiCore.h>
15 
18 #include <vrvCore/DtUniqueID.h>
19 #include <vrvCore/DtSimState.h>
20 #include <vrvCore/DtEntityState.h>
22 #include <vrfutil/rwUUID.h>
25 
26 #include <vlpi/entityType.h>
27 #include <boost/signals2.hpp>
28 
29 namespace makVrv
30 {
31  class DtDe;
32  class DtBaseStateView;
33  class DtSimEntry;
34  class DtChannel;
35 }
36 
37 class Dt3dBoundingVolume;
38 
39 namespace makVrf
40 {
41  class DtVrfStateViewCollectionManager;
42 
43  struct DtLaserDesignatorState;
44 
50  {
51  public:
53  virtual ~DtVrfSelectionHandler();
54 
56  static DtVrfSelectionHandler& instance(makVrv::DtDe& de);
57 
58  public:
62  virtual void currentSelectionChanged(const makVrv::DtSelectionManager::IdSet& selected);
63  boost::signals2::signal<void (const makVrv::DtSelectionManager::IdSet& selected)> signal_currentSelectionChanged;
64 
66  virtual makVrv::DtSelectionManager::IdSet convertNamesToIds(const std::vector<DtUUID>&) const;
67  virtual makVrv::DtSelectionManager::IdSet convertNamesToIds(const std::vector<std::string>&) const;
68 
70  virtual DtVector getLocationFromLaserState(const DtLaserDesignatorState&) const;
71 
73  virtual std::vector<DtUUID> getSelectedNames() const;
74  virtual std::vector<DtUUID> getSelectedNames(const makVrv::DtSelectionManager::IdSet&) const;
75 
77  virtual std::vector<std::string> getSelectedNamesAsMarkingText() const;
78  virtual std::vector<std::string> getSelectedNamesAsMarkingText(const makVrv::DtSelectionManager::IdSet&) const;
79 
81  virtual std::vector<makVrv::DtSimEntry*> getSelectedEntries() const;
82  virtual std::vector<makVrv::DtSimEntry*> getSelectedEntries(const makVrv::DtSelectionManager::IdSet&) const;
83 
85  virtual bool selectionHasExtendedKeyAndValue(const DtString& keyword, const DtString& value) const;
86 
88  virtual void selectObjects(const std::vector<DtUUID>& names);
89 
91  virtual bool allObjectsAreVrfSimulated(const makVrv::DtSelectionManager::IdSet&) const;
92 
94  virtual bool anyObjectsAreClutterObjects(const makVrv::DtSelectionManager::IdSet&) const;
95 
97  virtual bool anyObjectsAreRemotelyAttached(const makVrv::DtSelectionManager::IdSet&) const;
98 
101  virtual bool allObjectsAreInSameVrfSession(const makVrv::DtSelectionManager::IdSet&) const;
102 
104  virtual bool objectIsVrfSimulated(makVrv::DtUniqueID) const;
105 
107  virtual bool objectIsRemotelyAttached(makVrv::DtUniqueID) const;
108 
110  virtual bool objectIsClutterObject(makVrv::DtUniqueID) const;
111 
113  virtual bool objectInSameVrfSession(makVrv::DtUniqueID) const;
114 
115  virtual const makVrv::DtStateView<makVrv::DtVrlinkSimulatedBaseState>* getVrlinkSimulatedState(makVrv::DtUniqueID id) const;
116 
119  virtual DtEntityType getEntityTypeFromUniqueID(makVrv::DtUniqueID id) const;
120 
125  virtual void selectItemsInScreenBox(makVrv::DtChannel& channel,
126  int minX, int minY, int maxX, int maxY, const makVrv::DtSelectionManager::IdSet& mergeWith = makVrv::DtSelectionManager::IdSet());
127 
129  virtual bool isWithinScreenBounds(makVrv::DtChannel&, const makVrv::DtUniqueID& id, const makVrv::DtVrlinkSimulatedBaseState*,
130  int minX, int minY, int maxX, int maxY) const;
131  virtual makVrv::DtUniqueID sceneObjectIdFromElementId( makVrv::DtChannel& channel, const makVrv::DtUniqueID& elementID ) const;
132 
134  virtual void setLastDatabaseLocation(const DtVector&);
135 
137  virtual const DtVector& lastDatabaseLocation() const;
138 
140  virtual void setAllowNonVrfItemsToBeManipulated(bool);
141  virtual bool allowNonVrfItemsToBeManipulated() const;
142 
144  virtual void setAutomaticallSelectDeselectAggregateExpansionChanges(bool);
145  virtual bool automaticallSelectDeselectAggregateExpansionChanges() const;
146 
150  virtual void zoomToExtents(bool zoomEvenIfPrimaryAttachment = false) const;
151 
153  virtual void zoomToExtents(const std::vector<makVrv::DtUniqueID>& ids, bool zoomEvenIfPrimaryAttachment = false) const;
154 
156  virtual void zoomToExtents(makVrv::DtUniqueID, bool zoomEvenIfPrimaryAttachment = false) const;
157 
159  virtual void centerOn(const std::vector<makVrv::DtUniqueID>& ids) const;
160 
162  virtual void centerOn(makVrv::DtUniqueID) const;
163 
165  virtual void zoomToBoundingVolume(const DtVector& geometricCenter, double radius, bool maintainCurrentAltitude = true) const;
166 
167  virtual void setBlockAggregateSelectionChanges(bool);
168  bool blockAggregateSelectionChanges() const;
169 
172  virtual void showInformationFor(makVrv::DtElementID);
173 
177  virtual void setEntityTypeBoxSelectable(const DtEntityType&, bool);
178  virtual bool entityTypeBoxSelectable(const DtEntityType&) const;
179 
180  virtual void setEntityUniqueIDBoxSelectable(makVrv::DtUniqueID, bool);
181  virtual bool entityUniqueIDBoxSelectable(makVrv::DtUniqueID) const;
183 
185  virtual void pushSelections(bool andClear = false);
186 
188  virtual bool hasPushedSelections() const;
189 
191  virtual int pushSelectionsCount() const;
192 
194  virtual void popSelections(bool popOnly = false);
195 
197  virtual void clearSelections();
198 
199  virtual const makVrv::DtSelectionManager::IdSet& selectionsInScreenBox();
200  virtual void startingSweepSelection();
201 
209  virtual bool canChangeAltitudeOf(const DtEntityType& et) const;
210 
211  protected:
212 
214  virtual bool canBoxSelectEntity(const makVrv::DtUniqueID& id, const makVrv::DtVrlinkSimulatedBaseState* state) const;
215 
216  virtual void slot_onCurrentSelectionChanged(
217  const makVrv::DtSelectionManager::IdSet& selected,
218  const makVrv::DtSelectionManager::IdSet& deselected);
219 
220  virtual void slot_onObjectEntryAdded(makVrv::DtSimObjectEntry&);
221 
224  virtual void slot_onSimStateAdded(makVrv::DtSimObjectEntry& entry);
225 
226  virtual void slot_onStateViewUpdated(makVrv::DtStateView<makVrv::DtVrlinkSimulatedBaseState>*);
227 
228  virtual void slot_deInitialized(makVrv::DtDe&);
229 
230  virtual void slot_onAttributesChanged( const makVrv::DtElementAttributeManager::EntryAttributesList& signalList );
231 
232  virtual void completeAggregateSelectionChange(makVrv::DtSelectionManager::IdSet deselect, makVrv::DtSelectionManager::IdSet select);
233 
234  public:
235  boost::signals2::signal<void (const DtVector&)> signal_lastDatabaseLocationSet;
236  boost::signals2::signal<void (makVrv::DtElementID)> signal_showInformationFor;
237  boost::signals2::signal<void ()> signal_selectionPushed;
238  boost::signals2::signal<void ()> signal_selectionPopped;
239  boost::signals2::signal<void ()> signal_selectionAboutToBePopped;
240 
241  protected:
249 
250  std::set<makVrv::DtUniqueID> myEntityUniqueIDNotBoxSelectable;
251  std::vector<DtEntityType> myEntityTypeNotBoxSelectable;
252 
253  typedef std::vector<makVrv::DtSelectionManager::IdSet> Selections;
255 
257  boost::signals2::scoped_connection mySelectionChangedConnection;
258  };
259 }
makVrv::DtSelectionManager::IdSet mySelectionsInScreenBox
Definition: vrfSelectionHandler.h:256
Virtual base class. Allows for RTTI and proper virtual destruction. Used by Creators, Factories, Providers, Assemblers and User Interfaces.
Definition: DtVirtualBaseClass.h:19
boost::signals2::signal< void(const DtVector &)> signal_lastDatabaseLocationSet
Definition: vrfSelectionHandler.h:235
DtVector myLastDatabaseLocation
Definition: vrfSelectionHandler.h:246
bool myAllowNonVrfItemsToBeManipulated
Definition: vrfSelectionHandler.h:247
boost::signals2::signal< void()> signal_selectionPushed
Definition: vrfSelectionHandler.h:237
Contains makVrv:DtSelectionManager class.
std::set< makVrv::DtUniqueID > myEntityUniqueIDNotBoxSelectable
Definition: vrfSelectionHandler.h:250
Contains the DtUUID class declaration.
#define DT_DLL_VRFGUICORE
Contains DLL export macros.
Definition: vrfGuiCore.h:25
DtUniqueID DtElementID
The ElementID is a specific type of unique ID used to represent VR-Vantage uniquely defined elements...
Definition: DtUniqueID.h:23
boost::signals2::signal< void()> signal_selectionAboutToBePopped
Definition: vrfSelectionHandler.h:239
DtVrfStateViewCollectionManager * myStateViewCollectionManager
Definition: vrfSelectionHandler.h:245
boost::signals2::scoped_connection mySelectionChangedConnection
Definition: vrfSelectionHandler.h:257
The abstract Channel Class.
Definition: DtChannel.h:35
std::vector< DtEntityType > myEntityTypeNotBoxSelectable
Definition: vrfSelectionHandler.h:251
Contains makVrv::DtVirtualBaseClass class.
A DtSimObjectEntry is an entry for a persistent simulation object like an entity. ...
Definition: DtSimObjectEntry.h:22
Functionality added to allow developers to more easily get information about currently selected items...
Definition: vrfSelectionHandler.h:49
std::vector< EntryAttributes > EntryAttributesList
Define the type used to signal changes to one or more attributes for one or more elements.
Definition: DtElementAttributeManager.h:44
Class to manage disconnection of boost connections on deletion.
Definition: DtSignalConnectionManager.h:20
makVrv::DtSignalConnectionManager myConnections
Definition: vrfSelectionHandler.h:244
Contains makVrv::DtVrlinkSimulatedEntityState class.
This class is the central point for looking up information about a particular object in the VRF GUI...
Definition: vrfStateViewCollectionManager.h:143
makVrv::DtDe & myDe
Definition: vrfSelectionHandler.h:242
unsigned long long DtUniqueID
Definition: DtUniqueID.h:19
boost::signals2::signal< void(const makVrv::DtSelectionManager::IdSet &selected)> signal_currentSelectionChanged
Definition: vrfSelectionHandler.h:63
Selections mySelections
Definition: vrfSelectionHandler.h:254
makVrv::DtSelectionManager::IdSet myLastSelection
Definition: vrfSelectionHandler.h:243
Base class to provide boost signal/slot management.
Contains makVrv::DtUniqueID type.
Contains the DtElementAttributeManager class declaration.
The DtDe is the core component of any VR-Vantage application. It owns a DtRenderer, DtDeCommunicator, as well as a DtDisplay and other things.
Definition: DtDe.h:72
Contains makVrv::DtSimState class.
Contains makVrv::DtElementChanges class.
boost::signals2::signal< void()> signal_selectionPopped
Definition: vrfSelectionHandler.h:238
std::set< DtUniqueID > IdSet
Definition: DtSelectionManager.h:32
Definition: laserDesignatorState.h:26
bool myBlockAggregateSelectionChanges
Definition: vrfSelectionHandler.h:248
boost::signals2::signal< void(makVrv::DtElementID)> signal_showInformationFor
Definition: vrfSelectionHandler.h:236
std::vector< makVrv::DtSelectionManager::IdSet > Selections
Definition: vrfSelectionHandler.h:253

Document ID: Generated on Wed Mar 27 22:49:11 EDT 2024 from SVN revision 264633
Copyright © 2005-2024 MAK Technologies. All Rights Reserved (www.mak.com)