VR-Forces 4.7 Class Documentation
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
displayDefinitionWidget.h
Go to the documentation of this file.
1 /*********************************************************************
2 ** Copyright (c) 2012 MaK Technologies, Inc.
3 ** All rights reserved.
4 *********************************************************************/
5 
8 #pragma once
9 
10 #include <vrvUtil/signalslib.h>
11 
16 #include <vlpi/entityType.h>
19 
20 #include <vrvCore/DtWindow.h>
25 #include <matrix/vlQuaternion.h>
26 
27 #include <QImage>
28 #include <QWidget>
29 
30 class DtModelSetEntry;
31 class DtUiElementEvent;
32 class QComboBox;
34 class QHBoxLayout;
35 class QLabel;
36 class QPushButton;
38 class DtSymbolEditor;
39 class DtMarkerVisualizer;
40 class QCheckBox;
41 class QLineEdit;
42 class QFrame;
43 class QSpinBox;
44 class QGridLayout;
45 class QStandardItem;
46 class QTreeWidget;
47 class QToolButton;
48 class QAbstractButton;
49 class QVBoxLayout;
53 
54 namespace makVrf
55 {
56  class DtVrfObjectFacadeInterface;
57  class DtEnvironmentalFacadeCollection;
58  class DtToolButtonWrapperWidget;
59 }
60 
61 namespace makVrv
62 {
63  class DtDe;
64  class DtPluginManager;
65  class DtOsgAdapterQtWidget;
66  class DtElementDefinitionManager;
67  class DtElementDefinitionNew;
68  class DtChannelManager;
69  class DtChannel;
70  class DtObserver;
71  class DtOsgObserverObject;
72  class DtWindowTextAgent;
73  class DtWidgetLabelAgent;
74  class DtVisualizerDefinitionSet;
75 }
76 
79 {
80  Q_OBJECT
81 
82 public:
83 
85  DtDisplayWidget(makVrv::DtDe& appDe, makVrv::DtDe* de, QWidget * parent = 0, Qt::WindowFlags f = 0 );
86 
88  virtual ~DtDisplayWidget();
89 
90  makVrv::DtOsgAdapterQtWidget* adapterWidget();
91 
92  virtual void init();
93  virtual void quitting();
94 
95  virtual void buildAdapterWidget();
96 
97  virtual void buildTicker();
98 
99  const std::vector<int>& modelSets() const
100  {
101  return myModelSets;
102  }
103 
104  int observerMode(int i) const
105  {
106  std::map<int, int>::const_iterator iter = myModeKeyMap.find(i);
107 
108  if (iter != myModeKeyMap.end())
109  {
110  return iter->second;
111  }
112 
113  return 0;
114  }
115 
116  const std::map<int, int>& modeMap() const
117  {
118  return myModeKeyMap;
119  }
120 
121  boost::signal<void ()> signal_channelsInitialized;
122 
123  virtual void initializeObservers();
124 
125  QImage contents();
126 
127  boost::signal<void ()> signal_resized;
128 
129 protected:
130 
131  virtual void createIg();
132 
133  virtual void preIgInitialize();
134 
135  virtual void overrideIgFunctionality();
136 
137  virtual void igInitialize();
138 
139  virtual void postIgInitialize();
140  virtual void resizeEvent( QResizeEvent* event);
141 
142 protected:
146  std::vector<int> myModelSets;
147  std::map<int, int> myModeKeyMap;
148 };
149 
151 {
152 
153 public:
154 
156 
159 
160 protected:
161 
163 
164 };
165 
167 {
168  Q_OBJECT
169 
170 public:
171  typedef boost::function<void ()> AskToChangeIfShared;
172  typedef std::vector<makVrf::DtVrfObjectFacadeInterface*> Facades;
173 
174  DtDisplayDefinitionWidget(makVrv::DtDe& appDe, QWidget* p);
175 
176  virtual ~DtDisplayDefinitionWidget();
177 
178  virtual void init();
179 
180  virtual void edit(const makVrf::DtEntityMapperKey&, bool move = true, bool fromSelection = false);
181  virtual void clearContents();
182 
184  {
185  return myDe;
186  }
187 
188  virtual void startSimulation();
189  virtual void stopSimulation();
190 
191  virtual bool hasOneDiGuy() const;
192 
193  virtual void revertExisting(const std::set<makVrf::DtEntityMapperKey>& key);
194 
195  virtual void updateStatus();
196 
197  virtual void preSimulationModelSetSave();
198 
199  virtual void simulationModelSetLoaded();
200 
201  virtual void cloneEntry(const DtEntityType& oldType, const DtEntityType& newType, DtModelSetEntry*);
202  virtual void uiEvent(const DtUiElementEvent&);
203 
204  virtual void setCompressedView(bool);
205 
206  virtual void disable();
207  virtual void enable();
208  DtDisplayWidget* displayWidget() { return myDisplayWidget; };
209 
210  virtual MarkerColor determineMarkerColor(const int markNum);
211 
212  virtual void setOnlyVisualControlsEnabled(bool);
213  virtual bool askToChangeIfShared(AskToChangeIfShared);
214 
215  virtual void reeditForModelSet(int);
216 
217  virtual void setSpeedMultiplier(double d);
218 
219  bool showMarkersAs2D() const
220  {
221  return myShowMarkersAs2D;
222  }
223 
224  bool showMarkerLabels() const
225  {
226  return myShowMarkerLabels;
227  }
228 
229  bool showMarkers() const
230  {
231  return myShowMarkers;
232  }
233 
234  bool showBoundingVolumes() const
235  {
236  return myShowBoundingVolumes;
237  }
238 
239  const Facades& facades() const
240  {
241  return myFacades;
242  }
243 
244  makVrv::DtElementDefinitionNew* elementDefinition() const
245  {
246  return myElementDefinition;
247  }
248 
249  makVrv::DtElementDefinitionManager* elementManager() const
250  {
251  return myManager;
252  }
253 
254  const makVrf::DtEntityMapperKey& editingKey() const
255  {
256  return myKey;
257  }
258 
259  bool showingSpotReports() const
260  {
261  return (spotReportMode() != -1);
262  }
263 
264  virtual bool displayEnabled() const;
265 
267  virtual void selectModelSet(int, bool spotReportMode = false);
268 
269  virtual void draw2DIcon();
270  virtual void resetVisuals();
271 
272  virtual void visualBaseChangedForTacticalGraphic(const std::string& schema, const std::string& visualizer);
273  virtual void visualBaseChangedForEntity(makVrv::DtElementDefinitionNew*);
274 
275  virtual void setEnvironmentalLabel(const std::string&, bool andSetInEnv = false);
276  virtual void updateVisualizerModifiedData();
277 
278  virtual bool changeFromLineToVolumetricLine();
279  virtual bool changeFromVolumetricLineToLine();
280  virtual bool changeFrom2DAreaTo3DArea();
281  virtual bool changeFrom3DAreaTo2DArea();
282 
283  virtual void setViewMagnification(double);
284 
285  boost::signal<void (bool)> signal_compressedChanged;
286  boost::signal<void ()> signal_visualizersHaveBeenModified;
287  boost::signal<void ()> signal_disabled;
288  boost::signal<void ()> signal_enabled;
289  boost::signal<void (bool)> signal_showingSpotReports;
290  boost::signal<void (const Facades&)> signal_facadesCreated;
291  boost::signal<void (const Facades&)> signal_facadesRecreated;
292  boost::signal<void (int)> signal_reeditForModelSet;
293 
294 protected:
295  virtual void simulate();
296  virtual void initializeFacadeForSimulation();
297  virtual void enableEditButton();
298 
299  virtual makVrv::DtUniqueID uniqueIDForModelSet() const;
300 
301  virtual void makeSureAllMilStdVisualizersAreTheSameAs(int modelSet);
302 
303  virtual void postInitialize();
304 
305  virtual void createNewEntry(const DtEntityType& newType, DtModelSetEntry* model, const DtEntityType& basedOnType = DtEntityType(),
306  bool resetTacticalGraphic = true, bool force = false, const makVrv::DtUnicode& elementDefinitionName = makVrv::DtUnicode::fromAscii(""),
308 
309  virtual DtVector visualPlacementFor(int set, makVrf::DtVrfObjectFacadeInterface*) const;
310  virtual double groundHeight(const DtVector&) const;
311 
312  virtual void createOrUpdatePositionMarker(const DtUiElementEvent&);
313  virtual void destroyPositionMarker(const DtUiElementEvent&);
314  virtual void setBoundingVolume(const DtUiElementEvent&);
315  virtual void runAfterCallFunction();
316 
317  virtual void updateMarkerAttachments();
318 
319  virtual void changeTrailingEffect(const QString&);
320 
321  virtual void resetEntityOrigin();
322  virtual void showEvent(QShowEvent*);
323 
326  virtual void mergeVisualizerAttributes(int modelSet, const makVrv::DtVisualizerDefinitionSet& source, makVrv::DtElementDefinitionNew* target) const;
327 
329  virtual void createEntryIfNoEntry(const DtEntityType&, bool force = false);
330  virtual void createEntityIfNoEntry(const DtEntityType&, bool force = false);
331  virtual void createTacticalGraphicIfNoEntry(const DtEntityType&, bool force = false);
332  virtual void createAggregateIfNoEntry(const DtEntityType&, bool force = false);
333 
334  virtual bool hasScribeOnExtent() const;
335  virtual void setShowScribeOnExtent(bool);
336 
337  virtual void resetMarkers();
338 
339  virtual DtString createVisualizerNameFor(makVrv::DtElementDefinitionManager*, DtModelSetEntry* entry);
340  virtual void opdEntryAdded(DtModelSetEntry* model, const DtEntityType&);
341  virtual void newDataFilesAdded(const std::vector<DtSimulationModelSetLoader::EntityData*>&);
342  virtual void visualMappingsModified(DtSimulationModelSetLoader::EntityData*);
343  virtual std::string modeForModelSet(int s);
344  virtual void setupForSimulationObjectGroup();
345  virtual void zoomToExtents();
346 
347  virtual bool isTacticalSmoke(const makVrf::DtEntityMapperKey&) const;
348  virtual void enableDynamicOceanAndPosition();
349 
350  virtual void uiElementModified(DtUiElement*);
351 
352  virtual void resetObserverViewModeToDefault(int tickCount, bool changeViewMode);
353 
354  virtual void setMarkingDecal(const std::string& annotation, const std::string& value);
355 
356  virtual void setupForces();
357 
358  virtual int spotReportMode() const;
359  virtual void spotReportEditingChanged();
360 
361  virtual void displayWidgetResized();
362  virtual void isBuoyancyAvailable();
363  virtual void areVisualMarkingsAvailable();
364  virtual void createEditors();
365  virtual void resetView();
366  virtual void resetMaintainObserverPosition();
367  virtual void checkMaintainObserverPosition();
368 
369 public slots:
370  virtual void edit2DVisuals();
371  virtual void editVisuals();
372  virtual void forcesModified();
373  virtual void setShowMarkerLabels(bool);
374  virtual void setShowMarkers(bool);
375  virtual void setShowMarkersAs2D(bool);
376  virtual void setShowBoundingVolumes(bool);
377  virtual void buoyancyDialogDestroyed();
378 
379  virtual bool setupForTacticalGraphic(const DtEntityType&, const std::vector<int>& modelSets);
380  virtual bool setupForEntity(const DtEntityType&, const std::vector<int>& modelSets);
381  virtual void visualizerModifiedWithReedit(bool reedit);
382  virtual void modelDefinitionModified();
383  virtual void visualizerModified();
384  virtual void visualsHaveBeenModified();
385 
386 protected slots:
387  virtual void buoyancyDestroyed();
388  virtual void observerModeChanged();
389  virtual void slot_onForceChangedByButton();
390  virtual void reedit();
391  virtual void finalizeModelChange();
392  virtual void setDiGuyData(const DtDiGuyInformation& diGuyData);
393  virtual void onChangeDefaultView();
394  virtual void onChangeDefaultViewWithObserverReset();
395  virtual void changeViewMode(int);
396  virtual void calculateSupportPoints();
397  virtual void calculateBoundingVolume();
398  virtual void forceComboChanged();
399  virtual void buoyancyModelRejected();
400  virtual void editBuoyancy();
401  virtual void editVisualMetaData();
402 
403 signals:
404  void visualsModified();
405  void uiElementEvent(const DtUiElementEvent&);
406  void redisplayListIcons();
407 
408 public:
411  QVBoxLayout* myCanvasLayout;
414  QHBoxLayout* myMainLayout;
415  QWidget* myMainCanvas;
423 
429 
433 
436 
439 
442 
446 
447 protected:
452 
454 
466  std::map<int, int> myViewSelection;
468 
470 
474 
476  {
477  ElementInformation() : manager(0), definition(0), type(makVrv::DtElementDefinitionTypeManager::BuiltInElementTypes_End) {};
479  : manager(mgr), definition(def), type(t)
480  {
481  }
483  : manager(orig.manager), definition(orig.definition), type(orig.type)
484  {
485  }
486 
490  };
491 
492  typedef std::map<std::string, ElementInformation> ElementDefinitionMap;
493  typedef std::map<bool, ElementDefinitionMap> ElementDefinitionMapByType;
494 
496 
497  bool myAllIs2D;
498 
505 
506  typedef std::pair<DtVector, DtTaitBryan> CameraInfo;
507  typedef std::map<int, CameraInfo> CameraMap;
509 
510  typedef std::map<int, DtMarkerVisualizer*> Markers;
512 
515 
518  std::string myLabel;
525  DtVector myObserverPosition, myModifiedObserverPosition;
527 
528  std::vector<makVrv::DtWidgetLabelAgent*> myInSpotReportMode;
529 
533 
534  std::set<std::string> myAlreadyAskedForShared;
539 
541 
545  boost::signalslib::connection myReeditConnection;
546  boost::signalslib::connection myPostReeditFunctionConnection;
547 
554  std::string myCurrentAction;
556 
558 };
559 
561 {
562 public:
565 
567  virtual ~DtUiDisplayWidgetCanvas();
568 
570 
572  virtual void processUiEvent(const DtUiElementEvent&);
573 
574  virtual DtString uniqueName() const
575  {
576  return "DtUiDisplayWidgetCanvas";
577  }
578 
579  virtual void setEnabled(bool b);
580 
581 protected:
582  virtual void createControls(QWidget*);
583  virtual void setFromParameters(const std::vector<DtReaderWriter*>& parentRw);
584 };
585 
587 {
588 public:
590  DtDisplayDefinitionWidgetHolder(makVrv::DtDe& de, QWidget* parent);
591 
594 
595  static DtDisplayDefinitionWidget* instance(makVrv::DtDe& de, QWidget* parent);
596 
597  DtDisplayDefinitionWidget* displayDefinitionWidget() { return myWidget; };
598 
599 protected:
600  DtDisplayDefinitionWidget* myWidget;
601 };
602 

Document ID: Generated on Fri Apr 26 21:53:14 EDT 2019 from SVN revision 197883
Copyright © 2005-2019 VT MAK. All Rights Reserved (www.mak.com)