VR-Forces 5.0.1 Developer's Guide
 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 
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 namespace makVrv
27 {
28  class DtDe;
29 }
30 
31 namespace makVrf
32 {
33  class DtCopyObjectCreator;
34  class DtCopyObject;
35  class DtVrfObjectManipulationEventProcessor;
36 
39  {
40  public:
41  typedef std::pair<std::string, int> DtPasteInformation;
42  typedef std::map<std::string, DtPasteInformation> DtPasteData;
43  typedef std::map<DtCopyObject*, int> DtObjectsCopying;
44  typedef std::vector<DtCopyObject*> DtObjectsDeleting;
45  typedef std::vector<DtCopyObject*> DtObjectsPasting;
46 
47  public:
49  virtual ~DtVrfCopyPasteHandler();
50 
51  public:
53  const DtPasteData& pasteData() const
54  {
55  return myPasteData;
56  }
57 
59  virtual void clearPasteData();
60 
63  virtual void copy(const makVrv::DtUniqueID& id);
64 
65  virtual bool canCopy() const
66  {
67  return (myObjectsCopying.size() == 0);
68  }
69 
70  int numCopying() const
71  {
72  return myObjectsCopying.size();
73  }
74 
75  virtual bool canPaste() const
76  {
77  return ((myPasteData.size() != 0) && !pasting());
78  }
79 
82  virtual void stop();
83 
85  virtual void cancelPaste();
86 
89  virtual void cancelled(DtCopyObject*);
90 
93  virtual void copied(DtCopyObject*, const std::string&);
94 
96  virtual void tick();
97 
99  virtual void copyOperationPending(DtCopyObject*, const std::string&);
100 
102  virtual DtCopyObject* createCopyObject(const makVrv::DtElementEntry&) const;
103 
105  virtual DtCopyObject* createCopyObject(int type) const = 0;
106 
107  void setPasteFlags(int f)
108  {
109  myPasteFlags = f;
110  }
111 
112  int pasteFlags() const
113  {
114  return myPasteFlags;
115  }
116 
117  bool hasObjectsToPaste() const
118  {
119  return (myObjectsPasting.size() != 0);
120  }
121 
123  virtual void setPreserveOffsets(bool);
124  virtual bool preserveOffsets() const;
125 
126  public:
130  virtual void paste(const DtVector& at = DtVector(), int flags =
132 
134  bool pasting() const
135  {
136  return myEventProcessor != 0;
137  }
138 
142  {
143  myMaximumToProcessInPastePass = i;
144  }
145 
147  {
148  return myMaximumToProcessInPastePass;
149  }
150 
152  virtual void cleanup();
153 
155  virtual DtCopyObject* createObjectFromPasteData(int type, const std::string& buffer) const;
156 
158  virtual void queueObjectsToPaste();
159 
161  virtual void slot_onPaste();
162 
164  {
165  return myObjectsPasting;
166  }
167 
168  virtual void setPasteData(const std::string& name, int type, const std::string& pasteBuffer);
169 
173  virtual void registerName(const DtString&);
174  virtual bool nameIsRegistered(const DtString&) const;
176 
177  protected:
178 
181  virtual void pasted(DtCopyObject*);
182 
185  virtual void removeFromCopying(DtCopyObject*);
186 
189  virtual void cleanupEventProcessor();
190 
191  protected:
193  virtual void slot_onLocationChanged(const DtVector&, double);
194 
196  virtual void pasteOperationPending(DtCopyObject*, const std::string&);
197 
200  virtual void pasteCancelled(DtCopyObject*);
201 
204  virtual void removeFromBeingPasted(DtCopyObject*);
205 
206  public:
208  boost::signals2::signal<void (bool)> signal_hasPasteData;
209  boost::signals2::signal<void ()> signal_stopped;
210  boost::signals2::signal<void (DtCopyObject*)> signal_copyCancelled;
211  boost::signals2::signal<void (DtCopyObject*, const std::string&)> signal_copied;
212  boost::signals2::signal<void ()> signal_copyComplete;
213  boost::signals2::signal<void (DtCopyObject*, const std::string&)> signal_copyOperationPending;
214 
215  boost::signals2::signal<void ()> signal_pasting;
216  boost::signals2::signal<void ()> signal_pasteComplete;
217  boost::signals2::signal<void (DtCopyObject*)> signal_pasted;
218  boost::signals2::signal<void (DtCopyObject*)> signal_pasteCancelled;
219  boost::signals2::signal<void (DtCopyObject*, const std::string&)> signal_pasteOperationPending;
220 
221  protected:
223 
235  DtGeodeticCoord myOrigin;
236  DtReferenceEllipsoid myReferenceEllipsoid;
237 
239 
240  std::set<DtString> myRegisteredNames;
241  };
242 }
bool pasting() const
Returns true if currently pasting.
Definition: vrfCopyPasteHandler.h:134
boost::signals2::signal< void(DtCopyObject *, const std::string &)> signal_copyOperationPending
Definition: vrfCopyPasteHandler.h:213
int numCopying() const
Definition: vrfCopyPasteHandler.h:70
Manage the tick and mouse events when editing or placing a Vrf object.
Definition: vrfObjectManipulationEventProcessor.h:35
virtual bool canCopy() const
Definition: vrfCopyPasteHandler.h:65
boost::signals2::signal< void()> signal_pasteComplete
Definition: vrfCopyPasteHandler.h:216
std::map< DtCopyObject *, int > DtObjectsCopying
Definition: vrfCopyPasteHandler.h:43
DtVrfObjectManipulationEventProcessor * myEventProcessor
Definition: vrfCopyPasteHandler.h:231
boost::signals2::signal< void(DtCopyObject *)> signal_pasted
Definition: vrfCopyPasteHandler.h:217
std::vector< DtCopyObject * > DtObjectsDeleting
Definition: vrfCopyPasteHandler.h:44
bool hasObjectsToPaste() const
Definition: vrfCopyPasteHandler.h:117
DtGeodeticCoord myOrigin
Definition: vrfCopyPasteHandler.h:235
bool myQueueing
Definition: vrfCopyPasteHandler.h:234
const DtPasteData & pasteData() const
Returns the paste data currently in paste buffer.
Definition: vrfCopyPasteHandler.h:53
DtObjectsPasting myObjectsBeingPasted
Definition: vrfCopyPasteHandler.h:228
const DtObjectsPasting & objectsPasting() const
Definition: vrfCopyPasteHandler.h:163
boost::signals2::signal< void()> signal_stopped
Definition: vrfCopyPasteHandler.h:209
DtObjectsDeleting myToDelete
Definition: vrfCopyPasteHandler.h:230
int pasteFlags() const
Definition: vrfCopyPasteHandler.h:112
bool myPreserveOffsets
Definition: vrfCopyPasteHandler.h:238
#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:42
void setMaximumToProcessInPastePass(int i)
Maximum number of objects to try and paste in a single pass. This is to try and prevent network messa...
Definition: vrfCopyPasteHandler.h:141
boost::signals2::signal< void(DtCopyObject *)> signal_copyCancelled
Definition: vrfCopyPasteHandler.h:210
int maximumToProcessInPastePass() const
Definition: vrfCopyPasteHandler.h:146
int myPasteFlags
Definition: vrfCopyPasteHandler.h:233
Contains makVrv::DtSimEntry class.
DtPasteData myPasteData
Buffer is a map of object name to data.
Definition: vrfCopyPasteHandler.h:225
makVrv::DtDe & myDe
Definition: vrfCopyPasteHandler.h:222
Definition: copyObject.h:145
Definition: copyObject.h:124
void setPasteFlags(int f)
Definition: vrfCopyPasteHandler.h:107
DtObjectsPasting myObjectsPasting
Definition: vrfCopyPasteHandler.h:227
boost::signals2::signal< void()> signal_copyComplete
Definition: vrfCopyPasteHandler.h:212
boost::signals2::signal< void(DtCopyObject *)> signal_pasteCancelled
Definition: vrfCopyPasteHandler.h:218
std::vector< DtCopyObject * > DtObjectsPasting
Definition: vrfCopyPasteHandler.h:45
DtObjectsCopying myObjectsCopying
Definition: vrfCopyPasteHandler.h:226
boost::signals2::signal< void(bool)> signal_hasPasteData
Emitted when state of whether or not can paste has changed.
Definition: vrfCopyPasteHandler.h:208
std::pair< std::string, int > DtPasteInformation
Definition: vrfCopyPasteHandler.h:41
virtual bool canPaste() const
Definition: vrfCopyPasteHandler.h:75
DtReferenceEllipsoid myReferenceEllipsoid
Definition: vrfCopyPasteHandler.h:236
std::set< DtString > myRegisteredNames
Definition: vrfCopyPasteHandler.h:240
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:70
boost::signals2::signal< void(DtCopyObject *, const std::string &)> signal_pasteOperationPending
Definition: vrfCopyPasteHandler.h:219
DtObjectsPasting myObjectsToPaste
Definition: vrfCopyPasteHandler.h:229
int myMaximumToProcessInPastePass
Definition: vrfCopyPasteHandler.h:232
boost::signals2::signal< void(DtCopyObject *, const std::string &)> signal_copied
Definition: vrfCopyPasteHandler.h:211
boost::signals2::signal< void()> signal_pasting
Definition: vrfCopyPasteHandler.h:215
Contains makVrv::DtElementEntry class.
The Master DtVrfCopyPasteManagerHandler.
Definition: vrfCopyPasteHandler.h:38

Document ID: Generated on Mon Jun 20 00:38:30 EDT 2022 from SVN revision 244029
Copyright © 2005-2021 MAK Technologies. All Rights Reserved (www.mak.com)