VR-Forces 4.8 Class Documentation
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
vrfCopyPasteHandler.h
Go to the documentation of this file.
1 /******************************************************************************
2 ** Copyright (c) 2012 MAK Technologies, Inc.
3 ** All rights reserved.
4 ******************************************************************************/
5 
8 
13 
14 #pragma once
15 
16 #include <vrvUtil/signalslib.h>
17 
18 #include <vrfGuiCore/vrfGuiCore.h>
19 #include <vrfGuiCore/copyObject.h>
20 
21 #include <vrvCore/DtSimEntry.h>
22 #include <vrvCore/DtElementEntry.h>
23 
24 #include <matrix/geodeticCoord.h>
25 
26 #include <boost/signals2.hpp>
27 
28 namespace makVrv
29 {
30  class DtDe;
31 }
32 
33 namespace makVrf
34 {
35  class DtCopyObjectCreator;
36  class DtCopyObject;
37  class DtVrfObjectManipulationEventProcessor;
38 
41  {
42  public:
43  typedef std::pair<std::string, int> DtPasteInformation;
44  typedef std::map<std::string, DtPasteInformation> DtPasteData;
45  typedef std::map<DtCopyObject*, int> DtObjectsCopying;
46  typedef std::vector<DtCopyObject*> DtObjectsDeleting;
47  typedef std::vector<DtCopyObject*> DtObjectsPasting;
48 
49  public:
51  virtual ~DtVrfCopyPasteHandler();
52 
53  public:
55  const DtPasteData& pasteData() const
56  {
57  return myPasteData;
58  }
59 
61  virtual void clearPasteData();
62 
65  virtual void copy(const makVrv::DtUniqueID& id);
66 
67  virtual bool canCopy() const
68  {
69  return (myObjectsCopying.size() == 0);
70  }
71 
72  int numCopying() const
73  {
74  return myObjectsCopying.size();
75  }
76 
77  virtual bool canPaste() const
78  {
79  return ((myPasteData.size() != 0) && !pasting());
80  }
81 
84  virtual void stop();
85 
87  virtual void cancelPaste();
88 
91  virtual void cancelled(DtCopyObject*);
92 
95  virtual void copied(DtCopyObject*, const std::string&);
96 
98  virtual void tick();
99 
101  virtual void copyOperationPending(DtCopyObject*, const std::string&);
102 
104  virtual DtCopyObject* createCopyObject(const makVrv::DtElementEntry&) const;
105 
107  virtual DtCopyObject* createCopyObject(int type) const = 0;
108 
109  void setPasteFlags(int f)
110  {
111  myPasteFlags = f;
112  }
113 
114  int pasteFlags() const
115  {
116  return myPasteFlags;
117  }
118 
119  bool hasObjectsToPaste() const
120  {
121  return (myObjectsPasting.size() != 0);
122  }
123 
125  virtual void setPreserveOffsets(bool);
126  virtual bool preserveOffsets() const;
127 
128  public:
132  virtual void paste(const DtVector& at = DtVector(), int flags =
134 
136  bool pasting() const
137  {
138  return myEventProcessor != 0;
139  }
140 
144  {
145  myMaximumToProcessInPastePass = i;
146  }
147 
149  {
150  return myMaximumToProcessInPastePass;
151  }
152 
154  virtual void cleanup();
155 
157  virtual DtCopyObject* createObjectFromPasteData(int type, const std::string& buffer) const;
158 
160  virtual void queueObjectsToPaste();
161 
163  virtual void slot_onPaste();
164 
166  {
167  return myObjectsPasting;
168  }
169 
170  virtual void setPasteData(const std::string& name, int type, const std::string& pasteBuffer);
171 
175  virtual void registerName(const DtString&);
176  virtual bool nameIsRegistered(const DtString&) const;
178 
179  protected:
180 
183  virtual void pasted(DtCopyObject*);
184 
187  virtual void removeFromCopying(DtCopyObject*);
188 
191  virtual void cleanupEventProcessor();
192 
193  protected:
195  virtual void slot_onLocationChanged(const DtVector&, double);
196 
198  virtual void pasteOperationPending(DtCopyObject*, const std::string&);
199 
202  virtual void pasteCancelled(DtCopyObject*);
203 
206  virtual void removeFromBeingPasted(DtCopyObject*);
207 
208  public:
210  boost::signals2::signal<void (bool)> signal_hasPasteData;
211  boost::signals2::signal<void ()> signal_stopped;
212  boost::signals2::signal<void (DtCopyObject*)> signal_copyCancelled;
213  boost::signals2::signal<void (DtCopyObject*, const std::string&)> signal_copied;
214  boost::signals2::signal<void ()> signal_copyComplete;
215  boost::signals2::signal<void (DtCopyObject*, const std::string&)> signal_copyOperationPending;
216 
217  boost::signals2::signal<void ()> signal_pasting;
218  boost::signals2::signal<void ()> signal_pasteComplete;
219  boost::signals2::signal<void (DtCopyObject*)> signal_pasted;
220  boost::signals2::signal<void (DtCopyObject*)> signal_pasteCancelled;
221  boost::signals2::signal<void (DtCopyObject*, const std::string&)> signal_pasteOperationPending;
222 
223  protected:
225 
237  DtGeodeticCoord myOrigin;
238  DtReferenceEllipsoid myReferenceEllipsoid;
239 
241 
242  std::set<DtString> myRegisteredNames;
243  };
244 }
bool pasting() const
Returns true if currently pasting.
Definition: vrfCopyPasteHandler.h:136
boost::signals2::signal< void(DtCopyObject *, const std::string &)> signal_copyOperationPending
Definition: vrfCopyPasteHandler.h:215
int numCopying() const
Definition: vrfCopyPasteHandler.h:72
Manage the tick and mouse events when editing or placing a Vrf object.
Definition: vrfObjectManipulationEventProcessor.h:35
virtual bool canCopy() const
Definition: vrfCopyPasteHandler.h:67
boost::signals2::signal< void()> signal_pasteComplete
Definition: vrfCopyPasteHandler.h:218
std::map< DtCopyObject *, int > DtObjectsCopying
Definition: vrfCopyPasteHandler.h:45
DtVrfObjectManipulationEventProcessor * myEventProcessor
Definition: vrfCopyPasteHandler.h:233
boost::signals2::signal< void(DtCopyObject *)> signal_pasted
Definition: vrfCopyPasteHandler.h:219
std::vector< DtCopyObject * > DtObjectsDeleting
Definition: vrfCopyPasteHandler.h:46
bool hasObjectsToPaste() const
Definition: vrfCopyPasteHandler.h:119
DtGeodeticCoord myOrigin
Definition: vrfCopyPasteHandler.h:237
bool myQueueing
Definition: vrfCopyPasteHandler.h:236
const DtPasteData & pasteData() const
Returns the paste data currently in paste buffer.
Definition: vrfCopyPasteHandler.h:55
DtObjectsPasting myObjectsBeingPasted
Definition: vrfCopyPasteHandler.h:230
const DtObjectsPasting & objectsPasting() const
Definition: vrfCopyPasteHandler.h:165
boost::signals2::signal< void()> signal_stopped
Definition: vrfCopyPasteHandler.h:211
DtObjectsDeleting myToDelete
Definition: vrfCopyPasteHandler.h:232
int pasteFlags() const
Definition: vrfCopyPasteHandler.h:114
bool myPreserveOffsets
Definition: vrfCopyPasteHandler.h:240
#define DT_DLL_VRFGUICORE
Contains DLL export macros.
Definition: vrfGuiCore.h:25
DtElementEntry holds the non-simulation-specific data about an element, including its element type an...
Definition: DtElementEntry.h:22
std::map< std::string, DtPasteInformation > DtPasteData
Definition: vrfCopyPasteHandler.h:44
void setMaximumToProcessInPastePass(int i)
Maximum number of objects to try and paste in a single pass.
Definition: vrfCopyPasteHandler.h:143
boost::signals2::signal< void(DtCopyObject *)> signal_copyCancelled
Definition: vrfCopyPasteHandler.h:212
int maximumToProcessInPastePass() const
Definition: vrfCopyPasteHandler.h:148
int myPasteFlags
Definition: vrfCopyPasteHandler.h:235
Contains makVrv::DtSimEntry class.
DtPasteData myPasteData
Buffer is a map of object name to data.
Definition: vrfCopyPasteHandler.h:227
makVrv::DtDe & myDe
Definition: vrfCopyPasteHandler.h:224
Definition: copyObject.h:145
Definition: copyObject.h:124
void setPasteFlags(int f)
Definition: vrfCopyPasteHandler.h:109
DtObjectsPasting myObjectsPasting
Definition: vrfCopyPasteHandler.h:229
boost::signals2::signal< void()> signal_copyComplete
Definition: vrfCopyPasteHandler.h:214
unsigned long long DtUniqueID
Definition: DtUniqueID.h:22
boost::signals2::signal< void(DtCopyObject *)> signal_pasteCancelled
Definition: vrfCopyPasteHandler.h:220
std::vector< DtCopyObject * > DtObjectsPasting
Definition: vrfCopyPasteHandler.h:47
DtObjectsCopying myObjectsCopying
Definition: vrfCopyPasteHandler.h:228
boost::signals2::signal< void(bool)> signal_hasPasteData
Emitted when state of whether or not can paste has changed.
Definition: vrfCopyPasteHandler.h:210
std::pair< std::string, int > DtPasteInformation
Definition: vrfCopyPasteHandler.h:43
virtual bool canPaste() const
Definition: vrfCopyPasteHandler.h:77
DtReferenceEllipsoid myReferenceEllipsoid
Definition: vrfCopyPasteHandler.h:238
std::set< DtString > myRegisteredNames
Definition: vrfCopyPasteHandler.h:242
The DtDe is the core component of any VR-Vantage application.
Definition: DtDe.h:69
boost::signals2::signal< void(DtCopyObject *, const std::string &)> signal_pasteOperationPending
Definition: vrfCopyPasteHandler.h:221
DtObjectsPasting myObjectsToPaste
Definition: vrfCopyPasteHandler.h:231
int myMaximumToProcessInPastePass
Definition: vrfCopyPasteHandler.h:234
boost::signals2::signal< void(DtCopyObject *, const std::string &)> signal_copied
Definition: vrfCopyPasteHandler.h:213
boost::signals2::signal< void()> signal_pasting
Definition: vrfCopyPasteHandler.h:217
Contains makVrv::DtElementEntry class.
The Master DtVrfCopyPasteManagerHandler.
Definition: vrfCopyPasteHandler.h:40

Document ID: Generated on Thu Aug 27 10:56:05 EDT 2020 from SVN revision 217100
Copyright © 2005-2020 MAK Technologies. All Rights Reserved (www.mak.com)