VR-Forces 4.10 Class Documentation
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
DtTerrainEditorWidget.h
Go to the documentation of this file.
1 /*****************************************************************************
2 * Copyright (c) 2021 MAK Technologies, Inc.
3 * All rights reserved.
4 *****************************************************************************/
5 
9 
10 #pragma once
11 
13 #include <QtWidgets/QWidget>
19 
20 // Class Forward Declarations
21 class QHBoxLayout;
22 class QVBoxLayout;
23 class QGridLayout;
24 class QTreeWidget;
25 class QTabWidget;
26 class QPushButton;
27 class QToolButton;
28 class QMenu;
29 class QTreeWidgetItem;
30 
31 namespace makVrv
32 {
33  class DtTerrainEditorProperties;
34  class DtTerrainEditorPropertyTreeWidgetItem;
35  class DtOsgEarthAddTerrainLayerWidget;
36  class DtOsgEarthAddModelLayerWidget;
37  class DtTdbAddFeatureLayerWidget;
38  class DtOsgEarthCacheDialog;
39  class DtOsgEarthGenerateBoundaryWidget;
40  class DtTerrainEditorLogic;
41 
49  {
50  Q_OBJECT
51 
52  public:
54 
57  {
58  ItemDataType = Qt::UserRole,
63  ItemDataDisplayName
64  };
65 
68  {
69  ItemDataUrl = Qt::UserRole
70  };
71 
74  {
78  UnknownTree
79  };
80 
82  typedef std::map<TerrainContentItemKey, QTreeWidgetItem*> TerrainContentTreeWidgetItemsMap;
83 
86  typedef std::map<TerrainContentItemKey, DtTerrainEditorPropertyTreeWidgetItem*> TerrainPropertyTreeWidgetItemsMap;
87 
89  typedef std::map<std::string, QTreeWidgetItem*> OsgEarthFragmentContentItemsMap;
90 
91  public:
93  virtual ~DtTerrainEditorWidget();
94 
95  private:
101  DtTerrainEditorWidget &operator=(const DtTerrainEditorWidget&);
102 
103  public:
105  virtual void initialize();
106 
108  virtual bool isInitialized();
109 
111  virtual void cleanup();
112 
114 
118  virtual void addTerrainContentTopLevelItem(const TerrainContentItemKey& key, const std::string& displayName);
119 
126  virtual void addTerrainContentItem(const TerrainContentItemKey& key, const TerrainContentItemKey& parentKey, const std::string& displayName, int index = -1, bool editable = false,
127  bool checked = true);
128 
132  virtual void addOsgEarthFragmentContentTopLevelItem(const std::string& key, const std::string& displayName);
133 
138  virtual void addOsgEarthFragmentContentItem(const std::string& key, const std::string& parentKey, const std::string& displayName);
139 
141  virtual void clearTreeWidgets();
142 
144  virtual void cleanOsgEarthFragmentTreeWidget();
145 
148  virtual void setSelectedOsgEarthFragmentKeys(const std::vector<TerrainContentItemKey>& keys);
149 
153  virtual void setFocusOnTerrainContentTreeWidgetItem(const TerrainContentItemKey& key, bool expanded = true);
154 
157  virtual void removeTerrainContentTreeWidgetItem(const TerrainContentItemKey& key);
158 
161  virtual bool hasTerrainContentTreeWidgetItem(const TerrainContentItemKey& key);
162 
165  virtual bool hasTerrainPropertyTreeWidgetItem(const TerrainContentItemKey& key);
166 
168  virtual void resizeTerrainPropertyTreeWidget();
169 
171  virtual void resizeTerrainFragmentTreeWidget();
172 
176  virtual void moveTerrainContentTreeWidgetItem( TerrainContentItemKey key, bool up);
177 
180  virtual void setGenerateCacheButtonEnabled(bool enabled);
181 
184  virtual void setGenerateBoundaryButtonEnabled(bool enabled);
185 
188  virtual void setSaveTerrainButtonEnabled(bool enabled);
189 
192  virtual void setCommitChangeButtonEnabled(bool enabled);
193 
196  virtual void setRevertChangeButtonEnabled(bool enabled);
197 
200  virtual void enableOsgEarthFragmentTabWidget(bool enabled);
201 
205  virtual void showTerrainPropertyTreeWidgetItem(const TerrainContentItemKey& key);
206 
210  virtual void showTerrainPropertyTreeWidgetItems(const std::vector<TerrainContentItemKey>& key);
211 
215  int getIndexOfTerrainContentItem(const TerrainContentItemKey& key);
216 
220  virtual void setProperties(const TerrainContentItemKey& key, const DtTerrainEditorProperties* props);
221 
225  virtual bool properties(const TerrainContentItemKey& key, DtTerrainEditorProperties* props);
226 
229  virtual void showCacheDialog(const std::string& osgEarthTerrainDefinition);
230 
233  virtual DtUnicode showSaveMtfFileDialog(const DtUnicode& directory);
234 
237  virtual DtUnicode showSaveOsgEarthFileDialog(const DtUnicode& directory);
238 
241  virtual void showSaveFileConfirmationMessageBox(const DtUnicode& fileName);
242 
245  virtual bool showWarnReloadTerrainMessageBox(bool& checked);
246 
249  virtual bool showReloadTerrainAfterGenerateMaskMessageBox(const std::string& terrainPatch);
250 
255  virtual bool showChooseLayerTypeMessageBox(const DtUnicode& url, int& type);
256 
260  virtual void showFileExtensionNotSupportedMessageBox(const DtUnicode& fileName);
261 
264  virtual void setGenerateBoundaryModels(const std::vector<std::string>& models);
265 
269  virtual void recursivelyExpandOrCollapseTerrainContentTreeItemByKey(const TerrainContentItemKey& key, bool isExpanded);
270 
274  virtual void recursivelyExpandOrCollapseQTreeWidgetItem(QTreeWidgetItem* item, bool isExpanded);
275 
277  virtual void expandTerrainContentTreeWidget();
278 
280  virtual void expandOsgEarthFragmentTreeWidget();
281 
286  virtual bool checkIfNameDuplicate(const TerrainContentItemKey& key, const std::string& name);
287 
291  virtual void setTerrainContentTreeItemName(const TerrainContentItemKey& key, const std::string& name);
292 
296  virtual void setTerrainContentTreeItemVisibility(const TerrainContentItemKey& key, bool visible);
297 
301  virtual void setTerrainPropertyTreeItemName(const TerrainContentItemKey& key, const std::string& name);
302 
306  virtual void setTerrainPropertyTreeItemVisibility(const TerrainContentItemKey& key, bool visible);
307 
308  protected:
309 
311  DtTerrainEditorWidget(DtDe& de, QWidget* parent);
312 
314  void setupGui();
315 
317  virtual void connectSignals();
318 
321  virtual void setStyleSheetForTopPanelButtons();
322 
326  virtual void addTerrainPropertyTreeWidgetItem(const TerrainContentItemKey& key, DtTerrainEditorPropertyTreeWidgetItem* item);
327 
331  virtual QTreeWidgetItem* getTerrainContentItem(const TerrainContentItemKey& key);
332 
338  virtual void setTerrainContentItemAttributes(QTreeWidgetItem* item, const TerrainContentItemKey& key, const std::string& displayName, bool checked = true);
339 
342  virtual void removeTerrainContentTreeWidgetItem(QTreeWidgetItem* item);
343 
347  virtual void removeTerrainContentTreeWidgetItemFromMap(QTreeWidgetItem* item);
348 
351  int getTerrainContentItemType(QTreeWidgetItem* item);
352 
355  int getTerrainContentItemId(QTreeWidgetItem* item);
356 
359  std::string getTerrainContentItemName(QTreeWidgetItem* item);
360 
363  std::string getTerrainContentItemDisplayName(QTreeWidgetItem* item);
364 
367  int getTerrainContentItemParentType(QTreeWidgetItem* item);
368 
371  int getTerrainContentItemParentId(QTreeWidgetItem* item);
372 
375  TerrainContentItemKey getTerrainContentItemKey(QTreeWidgetItem* item);
376 
379  virtual DtTerrainEditorPropertyTreeWidgetItem* getTerrainEditorPropertyTreeWidgetItem(const TerrainContentItemKey& key) const;
380 
384  virtual DtTerrainEditorPropertyTreeWidgetItem* createTerrainEditorPropertyTreeWidgetItem(const TerrainContentItemKey& key);
385 
389  virtual std::string getTerrainEditorPropertyTreeWidgetItemCreatorName(TerrainContentItemType type);
390 
393  std::string getOsgEarthFragmentItemKey(QTreeWidgetItem* item);
394 
397  bool hasTerrainContentItem(const TerrainContentItemKey& key);
398 
400  virtual void populateTerrainContentTreeContextMenu(QContextMenuEvent* e);
401 
403  virtual void populateTerrainFragmentTreeContextMenu(QContextMenuEvent* e);
404 
406  virtual void populateTerrainPropertyTreeContextMenu(QContextMenuEvent* e);
407 
409  virtual void renameTerrainContentTreeWidgetItem();
410 
412  virtual void saveTerrainContentTreeWidgetItem();
413 
415  virtual void deleteTerrainContentTreeWidgetItem();
416 
418  virtual void hideAllTerrainContentTreeTopLevelItems();
419 
421  virtual void hideAllTerrainPropertyTreeTopLevelItems();
422 
424  virtual bool isTerrainContentTabEnabled();
425 
427  virtual bool isTerrainPropertyTabEnabled();
428 
429  protected:
430 
436  virtual void slot_osgEarthTerrainLayerRequestAdded(int type, const std::string& name, const std::string& driver, const DtUnicode& url);
437 
443  virtual void slot_osgEarthModelLayerDataRequestAdded(const std::string& name, const std::string& driver, const DtUnicode& url, const std::string& wfsType);
444 
449  virtual void slot_MAKFeatureLayerDataRequestAdded(const DtUnicode& filepath, bool toFrontEnd, bool toSimEngine);
450 
456  virtual void slot_generateBoundary(const std::string& definition, const std::string& name, bool, bool);
457 
458  protected slots:
459 
463  virtual void on_terrainContentTreeWidget_currentItemChanged(QTreeWidgetItem* current, QTreeWidgetItem* previous);
464 
468  virtual void on_terrainContentTreeWidget_itemPressed(QTreeWidgetItem* item, int column);
469 
473  virtual void on_terrainContentTreeWidget_itemDoubleClicked(QTreeWidgetItem* item, int column);
474 
478  virtual void on_terrainContentTreeWidget_itemChanged(QTreeWidgetItem* item, int column);
479 
483  virtual void on_osgEarthFragmentTreeWidget_currentItemChanged(QTreeWidgetItem* current, QTreeWidgetItem* previous);
484 
488  virtual void on_terrainPropertyTreeWidget_currentItemChanged(QTreeWidgetItem* current, QTreeWidgetItem* previous);
489 
493  virtual void on_terrainPropertyTreeWidget_itemPressed(QTreeWidgetItem*, int column);
494 
497  virtual void on_terrainContentTabWidget_currentChanged(int index);
498 
501  virtual void on_terrainPropertiesTabWidget_currentChanged(int index);
502 
504  virtual void on_terrainContentTreeMenu_triggered(QAction* action);
505 
507  virtual void on_terrainPropertyTreeMenu_triggered(QAction* action);
508 
510  virtual void on_terrainContentTree_checkBox_stateChanged(const QTreeWidgetItem *, int checked);
511 
513  virtual void on_addTerrainPatchButton_released();
514 
516  virtual void on_addImageLayerButton_released();
517 
519  virtual void on_addElevationLayerButton_released();
520 
522  virtual void on_addFeatureButton_released();
523 
525  virtual void on_addOceanLayerButton_released();
526 
528  virtual void on_commitChangesButton_released();
529 
531  virtual void on_revertChangesButton_released();
532 
534  virtual void on_saveTerrainButton_released();
535 
537  virtual void on_generateCacheButton_released();
538 
540  virtual void on_generateBoundaryButton_released();
541 
543  virtual void contextMenuEvent(QContextMenuEvent* e);
544 
546  virtual void dragEnterEvent(QDragEnterEvent *e);
547 
549  virtual void dropEvent(QDropEvent* e);
550 
552 
553  protected:
554 
559 
561  DtOsgEarthAddModelLayerWidget* myOsgEarthAddModelLayerWidget;
565 
566  QVBoxLayout* myMainLayout;
568 
569  QWidget* myAddDataWidget;
577 
578  QWidget* myCacheWidget;
579  QHBoxLayout* myCacheButtonsLayout;
582 
583  QWidget* mySaveWidget;
584  QHBoxLayout* mySaveButtonsLayout;
587 
589 
590  QHBoxLayout* myBottomButtonsLayout;
593 
598 
603  std::vector<TerrainContentItemKey> mySelectedOsgEarthFragmentKeys;
604 
606 
608 
611  };
612 
616  : public DtVirtualBaseClass
617  {
618  public:
619  static DtTerrainEditorWidgetCreator& instance(DtDe& de);
620  static void registerInstance(DtDe& de, DtTerrainEditorWidgetCreator* creator);
621  virtual DtTerrainEditorWidget* create(DtDe& de, QWidget* parent) const;
622  };
623 }
TerrainContentItemKey mySelectedTerrainContentItemKey
Definition: DtTerrainEditorWidget.h:599
std::map< TerrainContentItemKey, QTreeWidgetItem * > TerrainContentTreeWidgetItemsMap
A map of the terrain content items indexed by the terrain content item key.
Definition: DtTerrainEditorWidget.h:82
DtTerrainEditorPropertyTreeWidgetItem.
Definition: DtTerrainEditorPropertyTreeWidgetItem.h:99
Definition: DtTerrainEditorWidget.h:60
Contains DLL export macros.
QToolButton * mySaveOsgEarthTerrainButton
Definition: DtTerrainEditorWidget.h:585
Virtual base class.
Definition: DtVirtualBaseClass.h:19
A unicode string.
Definition: DtUnicode.h:33
TerrainContentItemDataRole
Item data stored in the terrain content item.
Definition: DtTerrainEditorWidget.h:56
std::vector< TerrainContentItemKey > mySelectedOsgEarthFragmentKeys
Definition: DtTerrainEditorWidget.h:603
Creator for the DtTerrainEditorWidget.
Definition: DtTerrainEditorWidget.h:615
QWidget * myAddDataWidget
Definition: DtTerrainEditorWidget.h:569
DtOsgEarthPropertyItemKey mySelectedDtOsgEarthPropertyItemKey
Definition: DtTerrainEditorWidget.h:602
TerrainContentTreeWidgetItemsMap myTerrainContentTreeWidgetItemsMap
Definition: DtTerrainEditorWidget.h:600
QToolButton * myGenerateBoundaryButton
Definition: DtTerrainEditorWidget.h:581
OsgEarthFragmentItemDataRole
Item data stored in the osgEarth fragment item.
Definition: DtTerrainEditorWidget.h:67
QToolButton * myAddElevationLayerButton
Definition: DtTerrainEditorWidget.h:573
DtTerrainEditorProperties.
Definition: DtTerrainEditorProperties.h:26
DtOsgEarthAddTerrainLayerWidget * myOsgEarthAddTerrainLayerWidget
Definition: DtTerrainEditorWidget.h:560
QGridLayout * myAddDataButtonsLayout
Definition: DtTerrainEditorWidget.h:570
QToolButton * mySaveTerrainButton
Definition: DtTerrainEditorWidget.h:586
DtTerrainEditorLogic * myLogic
Definition: DtTerrainEditorWidget.h:557
DtTdbAddFeatureLayerWidget A dialog widget used by DtTerrainEditorWidget to add a Tdb Feature layer i...
Definition: DtTdbAddFeatureLayerWidget.h:29
QTreeWidget * myTerrainPropertyTreeWidget
Definition: DtTerrainEditorWidget.h:597
std::map< std::string, QTreeWidgetItem * > OsgEarthFragmentContentItemsMap
A map of the osgEarth fragment items indexed by the full url of the fragment file.
Definition: DtTerrainEditorWidget.h:89
TreeWidgetType mySelectedTreeWidget
Definition: DtTerrainEditorWidget.h:601
Widget for editing the terrain in the scene.
Definition: DtTerrainEditorWidget.h:47
DtTerrainEditorInterface.
Definition: DtTerrainEditorInterface.h:56
Definition: DtTerrainEditorWidget.h:76
QToolButton * myGenerateCacheButton
Definition: DtTerrainEditorWidget.h:580
QHBoxLayout * mySaveButtonsLayout
Definition: DtTerrainEditorWidget.h:584
Definition: DtTerrainEditorWidget.h:61
QHBoxLayout * myBottomButtonsLayout
Definition: DtTerrainEditorWidget.h:590
QTabWidget * myTopLevelTabWidget
Definition: DtTerrainEditorWidget.h:567
Definition: DtTerrainEditorWidget.h:77
DtOsgEarthAddModelLayerWidget * myOsgEarthAddModelLayerWidget
Definition: DtTerrainEditorWidget.h:561
QVBoxLayout * myMainLayout
Definition: DtTerrainEditorWidget.h:566
QToolButton * myAddFeatureLayerButton
Definition: DtTerrainEditorWidget.h:575
QToolButton * myAddOceanLayerButton
Definition: DtTerrainEditorWidget.h:576
Contains makVrv::DtVirtualBaseClass class.
QTabWidget * myTerrainContentTabWidget
Definition: DtTerrainEditorWidget.h:594
Contains makVrv::DtOsgEarthPropertyItemKey class.
std::map< TerrainContentItemKey, DtTerrainEditorPropertyTreeWidgetItem * > TerrainPropertyTreeWidgetItemsMap
A map of the terrain property items indexed by the terrain content item key.
Definition: DtTerrainEditorWidget.h:86
Definition: DtTerrainEditorWidget.h:62
DtSignalConnectionManager mySignals
Definition: DtTerrainEditorWidget.h:558
Contains the DtTerrainEditorInterface class declaration.
TerrainContentItemType
Definition: DtTerrainEditorInterface.h:61
DtTdbAddFeatureLayerWidget * myMAKAddFeatureLayerWidget
Definition: DtTerrainEditorWidget.h:562
QTreeWidget * myTerrainContentTreeWidget
Definition: DtTerrainEditorWidget.h:595
DtOsgEarthCacheDialog * myOsgEarthCacheDialog
Definition: DtTerrainEditorWidget.h:563
TerrainPropertyTreeWidgetItemsMap myTerrainPropertyTreeWidgetItemsMap
Definition: DtTerrainEditorWidget.h:607
Class to manage disconnection of boost connections on deletion.
Definition: DtSignalConnectionManager.h:20
TreeWidgetType
Different type of tree widget in the terrain editor.
Definition: DtTerrainEditorWidget.h:73
OsgEarthFragmentContentItemsMap myOsgEarthFragmentContentItemsMap
Definition: DtTerrainEditorWidget.h:605
DtOsgEarthGenerateBoundaryWidget * myOsgEarthGenerateBoundaryWidget
Definition: DtTerrainEditorWidget.h:564
QTabWidget * myTerrainPropertiesTabWidget
Definition: DtTerrainEditorWidget.h:588
QToolButton * myAddTerrainPatchButton
Definition: DtTerrainEditorWidget.h:571
DtDe & myDe
Definition: DtTerrainEditorWidget.h:555
DtOsgEarthCacheDialog Widget for generating cache data of image/elevation/model.
Definition: DtOsgEarthCacheDialog.h:40
Base class to provide boost signal/slot management.
DtOsgEarthGenerateBoundaryWidget.
Definition: DtOsgEarthGenerateBoundaryWidget.h:35
QMenu * myTerrainContentTreeMenu
Definition: DtTerrainEditorWidget.h:609
QPushButton * myRevertChangesButton
Definition: DtTerrainEditorWidget.h:592
DtOsgEarthPropertyItemKey Key of the osgEarth property item, represented by the type and index...
Definition: DtOsgEarthPropertyItemKey.h:22
QHBoxLayout * myCacheButtonsLayout
Definition: DtTerrainEditorWidget.h:579
QWidget * mySaveWidget
Definition: DtTerrainEditorWidget.h:583
Contains the DtTerrainEditorPropertyTreeWidgetItem class declaration.
TerrainContentItemKey.
Definition: DtTerrainEditorInterface.h:107
DtTerrainEditorLogic.
Definition: DtTerrainEditorLogic.h:67
DtOsgEarthAddTerrainLayerWidget This widget is used by the DtTerrainEditorWidget to add an image or e...
Definition: DtOsgEarthAddTerrainLayerWidget.h:34
The DtDe is the core component of any VR-Vantage application.
Definition: DtDe.h:69
Definition: DtTerrainEditorWidget.h:75
bool myIsInitialized
Definition: DtTerrainEditorWidget.h:556
QTreeWidget * myOsgEarthFragmentTreeWidget
Definition: DtTerrainEditorWidget.h:596
QMenu * myTerrainPropertyTreeMenu
Definition: DtTerrainEditorWidget.h:610
QToolButton * myAddImageLayerButton
Definition: DtTerrainEditorWidget.h:572
#define DT_DLL_VRVTERRAINEDITOR
Definition: vrvTerrainEditor.h:25
QPushButton * myCommitChangesButton
Definition: DtTerrainEditorWidget.h:591
Definition: DtTerrainEditorWidget.h:59
QWidget * myCacheWidget
Definition: DtTerrainEditorWidget.h:578
QToolButton * myAddFeatureButton
Definition: DtTerrainEditorWidget.h:574

Document ID: Generated on Tue Sep 21 17:42:52 EDT 2021 from SVN revision 234861
Copyright © 2005-2021 MAK Technologies. All Rights Reserved (www.mak.com)