VR-Forces Developer's Guide
 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(const 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 
322  virtual void addTerrainPropertyTreeWidgetItem(const TerrainContentItemKey& key, DtTerrainEditorPropertyTreeWidgetItem* item);
323 
327  virtual QTreeWidgetItem* getTerrainContentItem(const TerrainContentItemKey& key);
328 
334  virtual void setTerrainContentItemAttributes(QTreeWidgetItem* item, const TerrainContentItemKey& key, const std::string& displayName, bool checked = true);
335 
338  virtual void removeTerrainContentTreeWidgetItem(QTreeWidgetItem* item);
339 
343  virtual void removeTerrainContentTreeWidgetItemFromMap(QTreeWidgetItem* item);
344 
347  int getTerrainContentItemType(QTreeWidgetItem* item);
348 
351  int getTerrainContentItemId(QTreeWidgetItem* item);
352 
355  std::string getTerrainContentItemName(QTreeWidgetItem* item);
356 
359  std::string getTerrainContentItemDisplayName(QTreeWidgetItem* item);
360 
363  int getTerrainContentItemParentType(QTreeWidgetItem* item);
364 
367  int getTerrainContentItemParentId(QTreeWidgetItem* item);
368 
371  TerrainContentItemKey getTerrainContentItemKey(QTreeWidgetItem* item);
372 
375  virtual DtTerrainEditorPropertyTreeWidgetItem* getTerrainEditorPropertyTreeWidgetItem(const TerrainContentItemKey& key) const;
376 
380  virtual DtTerrainEditorPropertyTreeWidgetItem* createTerrainEditorPropertyTreeWidgetItem(const TerrainContentItemKey& key);
381 
385  virtual std::string getTerrainEditorPropertyTreeWidgetItemCreatorName(TerrainContentItemType type);
386 
389  std::string getOsgEarthFragmentItemKey(QTreeWidgetItem* item);
390 
393  bool hasTerrainContentItem(const TerrainContentItemKey& key);
394 
396  virtual void populateTerrainContentTreeContextMenu(QContextMenuEvent* e);
397 
399  virtual void populateTerrainFragmentTreeContextMenu(QContextMenuEvent* e);
400 
402  virtual void populateTerrainPropertyTreeContextMenu(QContextMenuEvent* e);
403 
405  virtual void renameTerrainContentTreeWidgetItem();
406 
408  virtual void saveTerrainContentTreeWidgetItem();
409 
411  virtual void deleteTerrainContentTreeWidgetItem();
412 
414  virtual void hideAllTerrainContentTreeTopLevelItems();
415 
417  virtual void hideAllTerrainPropertyTreeTopLevelItems();
418 
420  virtual bool isTerrainContentTabEnabled();
421 
423  virtual bool isTerrainPropertyTabEnabled();
424 
425  protected:
426 
432  virtual void slot_osgEarthTerrainLayerRequestAdded(int type, const std::string& name, const std::string& driver, const DtUnicode& url);
433 
439  virtual void slot_osgEarthModelLayerDataRequestAdded(const std::string& name, const std::string& driver, const DtUnicode& url, const std::string& wfsType);
440 
445  virtual void slot_MAKFeatureLayerDataRequestAdded(const DtUnicode& filepath, bool toFrontEnd, bool toSimEngine);
446 
452  virtual void slot_generateBoundary(const std::string& definition, const std::string& name, bool, bool);
453 
454  protected slots:
455 
459  virtual void on_terrainContentTreeWidget_currentItemChanged(QTreeWidgetItem* current, QTreeWidgetItem* previous);
460 
464  virtual void on_terrainContentTreeWidget_itemPressed(QTreeWidgetItem* item, int column);
465 
469  virtual void on_terrainContentTreeWidget_itemDoubleClicked(QTreeWidgetItem* item, int column);
470 
474  virtual void on_terrainContentTreeWidget_itemChanged(QTreeWidgetItem* item, int column);
475 
479  virtual void on_osgEarthFragmentTreeWidget_currentItemChanged(QTreeWidgetItem* current, QTreeWidgetItem* previous);
480 
484  virtual void on_terrainPropertyTreeWidget_currentItemChanged(QTreeWidgetItem* current, QTreeWidgetItem* previous);
485 
489  virtual void on_terrainPropertyTreeWidget_itemPressed(QTreeWidgetItem*, int column);
490 
493  virtual void on_terrainContentTabWidget_currentChanged(int index);
494 
497  virtual void on_terrainPropertiesTabWidget_currentChanged(int index);
498 
500  virtual void on_terrainContentTreeMenu_triggered(QAction* action);
501 
503  virtual void on_terrainPropertyTreeMenu_triggered(QAction* action);
504 
506  virtual void on_terrainContentTree_checkBox_stateChanged(const QTreeWidgetItem *, int checked);
507 
509  virtual void on_addTerrainPatchButton_released();
510 
512  virtual void on_addImageLayerButton_released();
513 
515  virtual void on_addElevationLayerButton_released();
516 
518  virtual void on_addFeatureButton_released();
519 
521  virtual void on_addOceanLayerButton_released();
522 
524  virtual void on_commitChangesButton_released();
525 
527  virtual void on_revertChangesButton_released();
528 
530  virtual void on_saveTerrainButton_released();
531 
533  virtual void on_generateCacheButton_released();
534 
536  virtual void on_generateBoundaryButton_released();
537 
539  virtual void contextMenuEvent(QContextMenuEvent* e);
540 
542  virtual void dragEnterEvent(QDragEnterEvent *e);
543 
545  virtual void dropEvent(QDropEvent* e);
546 
548 
549  protected:
550 
555 
557  DtOsgEarthAddModelLayerWidget* myOsgEarthAddModelLayerWidget;
561 
562  QVBoxLayout* myMainLayout;
564 
565  QWidget* myAddDataWidget;
573 
574  QWidget* myCacheWidget;
575  QHBoxLayout* myCacheButtonsLayout;
578 
579  QWidget* mySaveWidget;
580  QHBoxLayout* mySaveButtonsLayout;
583 
585 
586  QHBoxLayout* myBottomButtonsLayout;
589 
594 
599  std::vector<TerrainContentItemKey> mySelectedOsgEarthFragmentKeys;
600 
602 
604 
607  };
608 
612  : public DtVirtualBaseClass
613  {
614  public:
615  static DtTerrainEditorWidgetCreator& instance(DtDe& de);
616  static void registerInstance(DtDe& de, DtTerrainEditorWidgetCreator* creator);
617  virtual DtTerrainEditorWidget* create(DtDe& de, QWidget* parent) const;
618  };
619 }
TerrainContentItemKey mySelectedTerrainContentItemKey
Definition: DtTerrainEditorWidget.h:595
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:581
Virtual base class. Allows for RTTI and proper virtual destruction. Used by Creators, Factories, Providers, Assemblers and User Interfaces.
Definition: DtVirtualBaseClass.h:19
A unicode string. DtUnicode stores a UTF-16 encoded unicode string. Code Point, a Unicode character...
Definition: DtUnicode.h:33
TerrainContentItemDataRole
Item data stored in the terrain content item.
Definition: DtTerrainEditorWidget.h:56
std::vector< TerrainContentItemKey > mySelectedOsgEarthFragmentKeys
Definition: DtTerrainEditorWidget.h:599
Creator for the DtTerrainEditorWidget.
Definition: DtTerrainEditorWidget.h:611
QWidget * myAddDataWidget
Definition: DtTerrainEditorWidget.h:565
DtOsgEarthPropertyItemKey mySelectedDtOsgEarthPropertyItemKey
Definition: DtTerrainEditorWidget.h:598
TerrainContentTreeWidgetItemsMap myTerrainContentTreeWidgetItemsMap
Definition: DtTerrainEditorWidget.h:596
QToolButton * myGenerateBoundaryButton
Definition: DtTerrainEditorWidget.h:577
OsgEarthFragmentItemDataRole
Item data stored in the osgEarth fragment item.
Definition: DtTerrainEditorWidget.h:67
QToolButton * myAddElevationLayerButton
Definition: DtTerrainEditorWidget.h:569
DtTerrainEditorProperties.
Definition: DtTerrainEditorProperties.h:26
DtOsgEarthAddTerrainLayerWidget * myOsgEarthAddTerrainLayerWidget
Definition: DtTerrainEditorWidget.h:556
QGridLayout * myAddDataButtonsLayout
Definition: DtTerrainEditorWidget.h:566
QToolButton * mySaveTerrainButton
Definition: DtTerrainEditorWidget.h:582
DtTerrainEditorLogic * myLogic
Definition: DtTerrainEditorWidget.h:553
DtTdbAddFeatureLayerWidget A dialog widget used by DtTerrainEditorWidget to add a Tdb Feature layer i...
Definition: DtTdbAddFeatureLayerWidget.h:29
QTreeWidget * myTerrainPropertyTreeWidget
Definition: DtTerrainEditorWidget.h:593
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:597
Widget for editing the terrain in the scene. It supports adding/modifying image layer/elevation layer...
Definition: DtTerrainEditorWidget.h:47
DtTerrainEditorInterface.
Definition: DtTerrainEditorInterface.h:59
Definition: DtTerrainEditorWidget.h:76
QToolButton * myGenerateCacheButton
Definition: DtTerrainEditorWidget.h:576
QHBoxLayout * mySaveButtonsLayout
Definition: DtTerrainEditorWidget.h:580
Definition: DtTerrainEditorWidget.h:61
QHBoxLayout * myBottomButtonsLayout
Definition: DtTerrainEditorWidget.h:586
QTabWidget * myTopLevelTabWidget
Definition: DtTerrainEditorWidget.h:563
Definition: DtTerrainEditorWidget.h:77
DtOsgEarthAddModelLayerWidget * myOsgEarthAddModelLayerWidget
Definition: DtTerrainEditorWidget.h:557
QVBoxLayout * myMainLayout
Definition: DtTerrainEditorWidget.h:562
QToolButton * myAddFeatureLayerButton
Definition: DtTerrainEditorWidget.h:571
QToolButton * myAddOceanLayerButton
Definition: DtTerrainEditorWidget.h:572
Contains makVrv::DtVirtualBaseClass class.
QTabWidget * myTerrainContentTabWidget
Definition: DtTerrainEditorWidget.h:590
Contains makVrv::DtOsgEarthPropertyItemKey class.
std::map< TerrainContentItemKey, DtTerrainEditorPropertyTreeWidgetItem * > TerrainPropertyTreeWidgetItemsMap
A map of the terrain property items indexed by the terrain content item key. Each terrain content ite...
Definition: DtTerrainEditorWidget.h:86
Definition: DtTerrainEditorWidget.h:62
DtSignalConnectionManager mySignals
Definition: DtTerrainEditorWidget.h:554
Contains the DtTerrainEditorInterface class declaration.
TerrainContentItemType
Definition: DtTerrainEditorInterface.h:64
DtTdbAddFeatureLayerWidget * myMAKAddFeatureLayerWidget
Definition: DtTerrainEditorWidget.h:558
QTreeWidget * myTerrainContentTreeWidget
Definition: DtTerrainEditorWidget.h:591
DtOsgEarthCacheDialog * myOsgEarthCacheDialog
Definition: DtTerrainEditorWidget.h:559
TerrainPropertyTreeWidgetItemsMap myTerrainPropertyTreeWidgetItemsMap
Definition: DtTerrainEditorWidget.h:603
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:601
DtOsgEarthGenerateBoundaryWidget * myOsgEarthGenerateBoundaryWidget
Definition: DtTerrainEditorWidget.h:560
QTabWidget * myTerrainPropertiesTabWidget
Definition: DtTerrainEditorWidget.h:584
QToolButton * myAddTerrainPatchButton
Definition: DtTerrainEditorWidget.h:567
DtDe & myDe
Definition: DtTerrainEditorWidget.h:551
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:605
QPushButton * myRevertChangesButton
Definition: DtTerrainEditorWidget.h:588
DtOsgEarthPropertyItemKey Key of the osgEarth property item, represented by the type and index...
Definition: DtOsgEarthPropertyItemKey.h:22
QHBoxLayout * myCacheButtonsLayout
Definition: DtTerrainEditorWidget.h:575
QWidget * mySaveWidget
Definition: DtTerrainEditorWidget.h:579
Contains the DtTerrainEditorPropertyTreeWidgetItem class declaration.
TerrainContentItemKey.
Definition: DtTerrainEditorInterface.h:110
DtTerrainEditorLogic.
Definition: DtTerrainEditorLogic.h:69
DtOsgEarthAddTerrainLayerWidget This widget is used by the DtTerrainEditorWidget to add an image or e...
Definition: DtOsgEarthAddTerrainLayerWidget.h:35
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:72
Definition: DtTerrainEditorWidget.h:75
bool myIsInitialized
Definition: DtTerrainEditorWidget.h:552
QTreeWidget * myOsgEarthFragmentTreeWidget
Definition: DtTerrainEditorWidget.h:592
QMenu * myTerrainPropertyTreeMenu
Definition: DtTerrainEditorWidget.h:606
QToolButton * myAddImageLayerButton
Definition: DtTerrainEditorWidget.h:568
#define DT_DLL_VRVTERRAINEDITOR
Definition: vrvTerrainEditor.h:25
QPushButton * myCommitChangesButton
Definition: DtTerrainEditorWidget.h:587
Definition: DtTerrainEditorWidget.h:59
QWidget * myCacheWidget
Definition: DtTerrainEditorWidget.h:574
QToolButton * myAddFeatureButton
Definition: DtTerrainEditorWidget.h:570

Document ID: Generated on Wed Mar 27 22:49:11 EDT 2024 from SVN revision 264633
Copyright © 2005-2024 MAK Technologies. All Rights Reserved (www.mak.com)