VR-Forces 5.0.3 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> PasteInformation;
42  typedef std::map<std::string, std::vector<PasteInformation> > PasteData;
43  typedef std::map<DtCopyObject*, int> ObjectsCopying;
44  typedef std::vector<DtCopyObject*> ObjectsDeleting;
45  typedef std::vector<DtCopyObject*> ObjectsPasting;
46 
47  public:
49  virtual ~DtVrfCopyPasteHandler();
50 
51  public:
53  const PasteData& pasteData() const
54  {
55  return myPasteData;
56  }
57 
60  virtual int numberOfObjectsInPasteData() const;
61 
63  virtual void clearPasteData();
64 
67  virtual void copy(const makVrv::DtUniqueID& id);
68 
69  virtual bool canCopy() const
70  {
71  return (myObjectsCopying.size() == 0);
72  }
73 
74  int numCopying() const
75  {
76  return myObjectsCopying.size();
77  }
78 
79  virtual bool canPaste() const
80  {
81  return ((myPasteData.size() != 0) && !pasting());
82  }
83 
86  virtual void stop();
87 
89  virtual void cancelPaste();
90 
93  virtual void cancelled(DtCopyObject*);
94 
97  virtual void copied(DtCopyObject*, const std::string&);
98 
100  virtual void tick();
101 
103  virtual void copyOperationPending(DtCopyObject*, const std::string&);
104 
106  virtual DtCopyObject* createCopyObject(const makVrv::DtElementEntry&) const;
107 
109  virtual DtCopyObject* createCopyObject(int type) const = 0;
110 
111  void setPasteFlags(int f)
112  {
113  myPasteFlags = f;
114  }
115 
116  int pasteFlags() const
117  {
118  return myPasteFlags;
119  }
120 
121  bool hasObjectsToPaste() const
122  {
123  return (myObjectsPasting.size() != 0);
124  }
125 
127  virtual void setPreserveOffsets(bool);
128  virtual bool preserveOffsets() const;
129 
130  public:
134  virtual void paste(const DtVector& at = DtVector(), int flags =
136 
138  bool pasting() const
139  {
140  return myEventProcessor != 0;
141  }
142 
146  {
147  myMaximumToProcessInPastePass = i;
148  }
149 
151  {
152  return myMaximumToProcessInPastePass;
153  }
154 
156  virtual void cleanup();
157 
159  virtual DtCopyObject* createObjectFromPasteData(int type, const std::string& buffer) const;
160 
162  virtual void queueObjectsToPaste();
163 
165  virtual void slot_onPaste();
166 
168  {
169  return myObjectsPasting;
170  }
171 
172  virtual void setPasteData(const std::string& name, int type, const std::string& pasteBuffer);
173 
177  virtual void registerName(const DtString&);
178  virtual bool nameIsRegistered(const DtString&) const;
180 
181  protected:
182 
185  virtual void pasted(DtCopyObject*);
186 
189  virtual void removeFromCopying(DtCopyObject*);
190 
193  virtual void cleanupEventProcessor();
194 
195  protected:
197  virtual void slot_onLocationChanged(const DtVector&, double);
198 
200  virtual void pasteOperationPending(DtCopyObject*, const std::string&);
201 
204  virtual void pasteCancelled(DtCopyObject*);
205 
208  virtual void removeFromBeingPasted(DtCopyObject*);
209 
210  public:
212  boost::signals2::signal<void (bool)> signal_hasPasteData;
213  boost::signals2::signal<void ()> signal_stopped;
214  boost::signals2::signal<void (DtCopyObject*)> signal_copyCancelled;
215  boost::signals2::signal<void (DtCopyObject*, const std::string&)> signal_copied;
216  boost::signals2::signal<void ()> signal_copyComplete;
217  boost::signals2::signal<void (DtCopyObject*, const std::string&)> signal_copyOperationPending;
218 
219  boost::signals2::signal<void ()> signal_pasting;
220  boost::signals2::signal<void ()> signal_pasteComplete;
221  boost::signals2::signal<void (DtCopyObject*)> signal_pasted;
222  boost::signals2::signal<void (DtCopyObject*)> signal_pasteCancelled;
223  boost::signals2::signal<void (DtCopyObject*, const std::string&)> signal_pasteOperationPending;
224 
225  protected:
227 
239  DtGeodeticCoord myOrigin;
240  DtReferenceEllipsoid myReferenceEllipsoid;
241 
243 
244  std::set<DtString> myRegisteredNames;
245  };
246 }
bool pasting() const
Returns true if currently pasting.
Definition: vrfCopyPasteHandler.h:138
boost::signals2::signal< void(DtCopyObject *, const std::string &)> signal_copyOperationPending
Definition: vrfCopyPasteHandler.h:217
int numCopying() const
Definition: vrfCopyPasteHandler.h:74
ObjectsPasting myObjectsBeingPasted
Definition: vrfCopyPasteHandler.h:232
Manage the tick and mouse events when editing or placing a Vrf object.
Definition: vrfObjectManipulationEventProcessor.h:35
virtual bool canCopy() const
Definition: vrfCopyPasteHandler.h:69
boost::signals2::signal< void()> signal_pasteComplete
Definition: vrfCopyPasteHandler.h:220
DtVrfObjectManipulationEventProcessor * myEventProcessor
Definition: vrfCopyPasteHandler.h:235
boost::signals2::signal< void(DtCopyObject *)> signal_pasted
Definition: vrfCopyPasteHandler.h:221
bool hasObjectsToPaste() const
Definition: vrfCopyPasteHandler.h:121
DtGeodeticCoord myOrigin
Definition: vrfCopyPasteHandler.h:239
bool myQueueing
Definition: vrfCopyPasteHandler.h:238
boost::signals2::signal< void()> signal_stopped
Definition: vrfCopyPasteHandler.h:213
PasteData myPasteData
Buffer is a map of object name to data.
Definition: vrfCopyPasteHandler.h:229
int pasteFlags() const
Definition: vrfCopyPasteHandler.h:116
bool myPreserveOffsets
Definition: vrfCopyPasteHandler.h:242
#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
const PasteData & pasteData() const
Returns the paste data currently in paste buffer.
Definition: vrfCopyPasteHandler.h:53
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:145
boost::signals2::signal< void(DtCopyObject *)> signal_copyCancelled
Definition: vrfCopyPasteHandler.h:214
int maximumToProcessInPastePass() const
Definition: vrfCopyPasteHandler.h:150
int myPasteFlags
Definition: vrfCopyPasteHandler.h:237
Contains makVrv::DtSimEntry class.
std::map< std::string, std::vector< PasteInformation > > PasteData
Definition: vrfCopyPasteHandler.h:42
makVrv::DtDe & myDe
Definition: vrfCopyPasteHandler.h:226
Definition: copyObject.h:145
ObjectsPasting myObjectsToPaste
Definition: vrfCopyPasteHandler.h:233
Definition: copyObject.h:124
void setPasteFlags(int f)
Definition: vrfCopyPasteHandler.h:111
ObjectsDeleting myToDelete
Definition: vrfCopyPasteHandler.h:234
boost::signals2::signal< void()> signal_copyComplete
Definition: vrfCopyPasteHandler.h:216
boost::signals2::signal< void(DtCopyObject *)> signal_pasteCancelled
Definition: vrfCopyPasteHandler.h:222
const ObjectsPasting & objectsPasting() const
Definition: vrfCopyPasteHandler.h:167
std::map< DtCopyObject *, int > ObjectsCopying
Definition: vrfCopyPasteHandler.h:43
boost::signals2::signal< void(bool)> signal_hasPasteData
Emitted when state of whether or not can paste has changed.
Definition: vrfCopyPasteHandler.h:212
virtual bool canPaste() const
Definition: vrfCopyPasteHandler.h:79
DtReferenceEllipsoid myReferenceEllipsoid
Definition: vrfCopyPasteHandler.h:240
std::vector< DtCopyObject * > ObjectsDeleting
Definition: vrfCopyPasteHandler.h:44
std::vector< DtCopyObject * > ObjectsPasting
Definition: vrfCopyPasteHandler.h:45
std::set< DtString > myRegisteredNames
Definition: vrfCopyPasteHandler.h:244
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
std::pair< std::string, int > PasteInformation
Definition: vrfCopyPasteHandler.h:41
boost::signals2::signal< void(DtCopyObject *, const std::string &)> signal_pasteOperationPending
Definition: vrfCopyPasteHandler.h:223
ObjectsPasting myObjectsPasting
Definition: vrfCopyPasteHandler.h:231
ObjectsCopying myObjectsCopying
Definition: vrfCopyPasteHandler.h:230
int myMaximumToProcessInPastePass
Definition: vrfCopyPasteHandler.h:236
boost::signals2::signal< void(DtCopyObject *, const std::string &)> signal_copied
Definition: vrfCopyPasteHandler.h:215
boost::signals2::signal< void()> signal_pasting
Definition: vrfCopyPasteHandler.h:219
Contains makVrv::DtElementEntry class.
The Master DtVrfCopyPasteManagerHandler.
Definition: vrfCopyPasteHandler.h:38

Document ID: Generated on Thu Jun 1 17:58:13 EDT 2023 from SVN revision 255404
Copyright © 2005-2021 MAK Technologies. All Rights Reserved (www.mak.com)