VR-Forces 5.0.2 Developer's Guide
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
simulationObjectEditorList.h
Go to the documentation of this file.
1 /*******************************************************************************
2 ** Copyright (c) 2020 MAK Technologies, Inc.
3 ** All rights reserved.
4 *******************************************************************************/
5 
8 
9 #pragma once
10 
11 #if !defined(Q_MOC_RUN)
18 #include "vrfutil/rwForces.h"
20 #endif
21 
22 #include <QtCore/QHash>
23 #include <QtGui/QImage>
24 #include <QtCore/QMap>
25 #include <QtCore/QDir>
26 #include <QtCore/QString>
27 #include <QtCore/QVariant>
28 #include <QtWidgets/QMessageBox>
29 #include <QtWidgets/QStyledItemDelegate>
30 
31 #include <boost/function.hpp>
32 
33 #include <set>
34 
35 class QToolButton;
36 
37 namespace makVrf
38 {
39  class DtEntityMapperKey;
40  class DtCountrySelectionEntryWidget;
41 }
42 
44 class DtFilename;
46 class DtList;
47 class QComboBox;
48 class QDir;
51 class DtModelSetEntry;
52 class QLabel;
53 class DtUiElementEvent;
54 class QPushButton;
55 class QToolButton;
56 class QCheckBox;
57 class QLineEdit;
60 class QGridLayout;
61 class QSplitter;
62 
63 const int DtModelRole = Qt::UserRole;
64 const int DtGlobalForcesRole = Qt::UserRole + 1;
65 
67 
68 typedef boost::function<bool (const DtModelSetEntry*, bool& showWarningIcon)> DtEntityFilterFunction;
69 
71 {
72 public:
75  virtual bool isValid(const DtModelSetEntry*, bool& failedUserFilter);
76 
77  void setCategories(const std::vector<std::string>&);
78  void setUsedByCountry(const std::string&, const std::string& countryName);
79  void setFilterOnForces(const DtRwForces&);
80 
82  virtual void ignoreObjectType(const DtObjectType&);
83 
85  virtual void clearIgnoreObjectTypes() { myIgnoreObjectTypes.clear(); };
86 
88  virtual void removeIgnoreObjectType(const DtObjectType&);
89 
90  virtual DtEntityPaletteFilter* clone() const { return new DtEntityPaletteFilter(*this); };
91 
92  virtual void addFilterFunction(DtEntityFilterFunction f) { myFilterFunctions.push_back(f); };
93 
94 protected:
95  std::vector<DtEntityFilterFunction> myFilterFunctions;
96  std::set<std::string> myCategories;
97  std::string myUsedByCountry;
98  std::string myCountryName;
101 
102  std::set<DtString> myIgnoreObjectTypes;
103 };
104 
106 {
107 public:
109  virtual QVariant data(int column, int role) const;
110 
111  virtual DtModelSetEntry* proxyModel() const;
112  virtual QList<QVariant> proxyForces() const;
113 
114  void setPaletteParent(DtSimulationObjectEditorList* p) { myPaletteParent = p; };
115  QString forcePixmapKey(DtModelSetEntry*, const QList<QVariant>&) const;
116  bool isInMasterSMS() const;
117 
118  virtual bool operator<(const QTreeWidgetItem & other ) const;
119  virtual void clearVisuals();
120 
121  virtual void setShowWarning(bool);
122  bool showWarning() const
123  {
124  return myShowWarning;
125  }
126 
127  virtual void setWarning(const QString&);
128  const QString& warning() const
129  {
130  return myWarning;
131  }
132 
133 protected:
134  virtual QImage getPixmap(const DtObjectType& o, int force) const;
135  virtual void createGrayscaleForcePixmap() const;
136 
137 protected:
139  mutable QString myForcePixmapKey;
140  mutable QImage myForcePixmap;
141  mutable QImage myGrayscaleForcePixmap;
144  QString myWarning;
145  QImage* myWarningIcon;
146 };
147 
149 {
150 public:
153 
154 protected:
155  virtual void paint(QPainter *painter,
156  const QStyleOptionViewItem &option,
157  const QModelIndex &index) const;
158 };
159 
161 {
162  Q_OBJECT
163 
164 public:
165 
168 
170  virtual ~DtSimulationObjectEditorList();
171 
173  virtual void init();
174 
175  bool hasSelection() const;
176  virtual void clear();
177  virtual std::set<makVrf::DtEntityMapperKey> getSelectedInformation() const;
178  virtual std::set<makVrf::DtEntityMapperKey> getRevertableKeys() const;
179  virtual void getSelectedInformation(DtObjectType& key) const;
180  virtual void getInformation(QTreeWidgetItem*, makVrf::DtEntityMapperKey& key) const;
181  virtual void getInformation(QTreeWidgetItem*, DtObjectType& key) const;
182  virtual DtEntityPaletteItem* itemFor(const DtEntityType& t) const;
183 
184  virtual bool canRevertExisting() const;
185  virtual bool canMakeTemplate() const;
186 
188  virtual bool canDeleteExisting(bool any = false) const;
189  virtual bool selectedIsInMasterSMS() const;
190  virtual bool selectedParentIsInMasterSMS() const;
191 
192  virtual bool canAddSubordinateToSelected() const;
193 
194  virtual void getCategorySelections(DtRwForces&, DtRwNLengthStringVector&);
195  virtual bool hasCategory(const QString&) const;
196 
197  virtual void select(const std::vector<DtObjectType>&);
198 
199  virtual std::vector<std::string> selectedCategories() const;
200 
201  virtual QString textFilter() const;
202  virtual void setTextFilter(const QString&);
203 
204  virtual DtObjectType selectedObjectType() const;
205  virtual std::vector<DtObjectType> selectedObjectTypes() const;
206  virtual QTreeWidgetItem* selectedItem() const;
207  virtual DtModelSetEntry* selectedModel() const;
208  virtual void setSelected(const QString&, bool forceReselect = true);
209  virtual void setSelected(DtModelSetEntry*, bool forceReselect = true);
210  virtual void selectPath(const QString& path);
211  virtual DtModelSetEntry* modelFor(QTreeWidgetItem*) const;
212  virtual int selectedItemsCount() const;
213  virtual bool selectedIsPartOfSimulationObjectGroup() const;
214  virtual bool itemIsPartOfSimulationObjectGroup(QTreeWidgetItem*) const;
215  virtual void addFilterFunction(DtEntityFilterFunction f);
216 
217  virtual void updateUsedByCountries();
218 
220  virtual void ignoreObjectType(const DtObjectType&);
221 
223  virtual void removeIgnoreObjectType(const DtObjectType&);
224  virtual void clearIgnoreObjectTypes();
225 
226  virtual void selectUncategorized();
227  virtual void selectCategory(const QString&);
228  virtual void selectUsedByCountry(const std::string&);
229 
230  QTreeWidget* entityList();
231 
232  static DtSimulationObjectEditorList* create(QWidget* parent = NULL);
233  virtual void setRightClickEnabled(bool b);
234  bool rightClickEnabled() const;
235 
236  virtual void setShowWarningForFilteredItems(bool b);
237  bool showWarningForFilteredItems() const;
238 
239  virtual QStringList selectedNames() const;
240  virtual void selectNames(const QStringList&);
241 
242  QTreeWidgetItem* currentlyDisplaying() const;
243 
246  virtual void setFilterOnForces(const DtRwForces& forces);
247  const DtRwForces& filterOnForces() const;
248 
249  virtual void changeModel(DtModelSetEntry* oldModel, DtModelSetEntry* newModel);
250 
251  virtual bool selectModel(DtModelSetEntry* m, bool clear = true);
252 
253  virtual bool checkSMSValid(QTreeWidgetItem*) const;
254 
255  virtual QString selectedUsedByCountry() const;
256  virtual std::string selectedCountryCode() const;
257  virtual QString selectedPath() const;
258 
259  virtual makVrf::DtTreeWidget* createEntitiesList(QWidget* p);
260 
262  virtual void setShowIncluded(bool);
263  bool showIncluded() const
264  {
265  return myShowIncluded;
266  }
267 
269  virtual void setShowAllTags(bool);
270  bool showAllTags() const
271  {
272  return myShowAllTags;
273  }
274 
275  static DtObjectType stringToType(const QString&);
276 
278  virtual void hierarchyChanged(const DtUiElementEvent& e);
279  virtual void hierarchyChanged(const DtObjectType& obj);
280 
281  const QList<QVariant>& allForces() const;
282 
284  virtual void disableItemsThatHaveThisAsAChild(const DtObjectType&);
285  virtual void enableAllItems();
286 
288  virtual bool itemContains(const DtVrfSubObjectParameterList&, const DtObjectType&) const;
289  virtual void addObjectToHierarchy(const DtObjectType&, QTreeWidgetItem*, int index = -1);
290 
291  bool executingFilter() const;
292  virtual QSize sizeHint() const;
293  virtual QSize minimumSizeHint() const;
294 
295 public:
296  virtual void removeFromHierarchy();
297  virtual void moveUp();
298  virtual void moveDown();
299  virtual void replaceInHierarchy();
300  virtual void addNewSubordinate();
301  virtual void addNewSubordinateFromExisting();
302  virtual void addToHierarchy();
303  virtual void addSubordinatesFromPalette();
304  virtual void opdEntryAdded(DtModelSetEntry*, bool select = false);
305 
306 public slots:
307  virtual void fillInList();
308  virtual void deleteExisting();
309  virtual void revertExisting();
310  virtual void executeFilter();
311  virtual void redisplayListIcons();
312  virtual void executeTextFilter();
313  virtual void selectionChanged();
314  virtual void copyListContentsToClipboard();
315 
316 protected slots:
317  virtual void resetTextFilter();
318  virtual void exitAddSubordinatesFromPalette();
319  virtual void itemRightClicked(QTreeWidgetItem*, QMouseEvent*);
320  virtual void itemExpanded(QTreeWidgetItem*);
321  virtual void addObjectToHierarchy(const DtObjectType&);
322 
323 protected:
324  virtual void moveInHierarchy(int iFrom, int iTo, QTreeWidgetItem* parent);
325  virtual void replaceObjectInHierarchy(const DtObjectType& t, QTreeWidgetItem* toReplace);
326 
327  virtual void loadSubordinatesFor(QTreeWidgetItem*, const DtVrfSubObjectParameterList&);
328  virtual void loadSimulationObjectGroup(QTreeWidgetItem* parent, DtSimulationObjectGroupModelSetEntry*);
329 
331  {
332  LoadInformation(DtModelSetEntry* model, bool sw = false, const QString& w = "") : mse(model), showWarning(sw), warning(w) {};
333  LoadInformation() : mse(0), showWarning(false) {};
334  LoadInformation(const LoadInformation& orig) : mse(orig.mse), showWarning(orig.showWarning), warning(orig.warning) {};
335 
336  DtModelSetEntry* mse;
338  QString warning;
339  };
340 
341  virtual void attachItemsToParent(QTreeWidgetItem* parent, const std::vector<LoadInformation>& toLoad);
342  virtual void slot_processUIEvent(const DtUiElementEvent& e);
343 
344  virtual void revertChanged(const makVrf::DtEntityMapperKey&);
345  virtual void revertChanged(DtModelSetEntry*);
346  virtual void addModelEntry(DtModelSetEntry*);
347  virtual DtEntityPaletteFilter* createFilter();
348  virtual DtEntityPaletteItem* createPaletteItem();
349  virtual DtEntityPaletteItem* createPaletteItem(DtModelSetEntry*);
350  virtual void createForcesList();
351  virtual void preloadModelSet();
352 
353  virtual void disableInvalidItems();
354 
355  virtual void createTreeWidgetItemsFor(const std::vector<LoadInformation>&, QVector<QTreeWidgetItem*>& items);
356  virtual void slot_entityEntryAboutToBeRemoved(DtSimulationModelSetLoader::EntityData*);
357  virtual void slot_entityEntryAdded(DtSimulationModelSetLoader::EntityData*);
358  virtual void hideAllObjectsByObjectType(QTreeWidgetItem*, DtSimulationModelSetLoader::EntityData*);
359  virtual bool showAllObjectsByObjectType(QTreeWidgetItem*, DtSimulationModelSetLoader::EntityData*);
360  virtual void runHealthCheck();
361  virtual void updateHealthResults();
362 
363 signals:
364  void itemDoubleClicked(QTreeWidgetItem*, int);
365  void healthCheckResults(const QString&);
366 
367 public:
368  boost::signals2::signal<void ()> signal_itemSelectionChanged;
369  boost::signals2::signal<void ()> signal_itemStatusChanged;
370  boost::signals2::signal<void (const QVector<QTreeWidgetItem*>&)> signal_itemsAdded;
371 
372 public:
384  QGridLayout* myControlsLayout;
385  std::vector<QTreeWidgetItem*> myItemsToGrab;
388 
392 
393  QSplitter* mySplitter;
395 
396 protected:
406 
410 };
411 
413 {
414  Q_OBJECT
415  Q_PROPERTY(QColor OutlineColor MEMBER myOutlineColor USER true)
416 
417 public:
420 
422  {
423  myBlockSelectionByKeypad = b;
424  }
425 
427  {
428  return myBlockSelectionByKeypad;
429  }
430 
431  virtual void keyPressEvent(QKeyEvent*);
432  virtual void focusOutEvent(QFocusEvent* e);
433 
434  void setListParent(DtSimulationObjectEditorList* p) { myListParent = p; };
435  DtSimulationObjectEditorList* listParent() const { return myListParent; };
436 
437  const QColor& outlineColor() const
438  {
439  return myOutlineColor;
440  }
441 
442 protected:
443 
444  virtual QSize sizeHint() const;
445  virtual QSize minimumSizeHint() const;
446 
447  virtual QMimeData* mimeData(const QList<QTreeWidgetItem*> list) const;
448  virtual QStringList mimeTypes() const;
449  virtual void dragEnterEvent(QDragEnterEvent *d);
450  virtual void dragMoveEvent(QDragMoveEvent *d);
451  virtual void dropEvent(QDropEvent* d);
452 
453 protected:
457 };
458 
460 {
462 }
463 
465 {
466  return myRightClickEnabled;
467 }
468 
470 {
471  return (myEntities && (myEntities->selectedItems().count() != 0));
472 }
473 
475 {
476  return myEntities;
477 }
478 
480 {
481  return myFilterOnForces;
482 }
483 
485 {
486  return myForces;
487 }
488 
490 {
491  return myCurrentlyDisplaying;
492 }
493 
495 {
496  return myExecutingFilter;
497 }
498 
501 {
502 public:
505 
508 
511 
513  static void registerInstance(makVrv::DtDe&, DtSimulationObjectEditorListCreator*);
514 
516  virtual DtSimulationObjectEditorList* create(QWidget* parent);
517 
518 protected:
520 };
Definition: simulationModelSetLoader.h:160
std::vector< QTreeWidgetItem * > myItemsToGrab
Definition: simulationObjectEditorList.h:385
boost::signals2::signal< void()> signal_itemSelectionChanged
Definition: simulationObjectEditorList.h:368
Definition: simulationObjectEditorList.h:412
QImage myForcePixmap
Definition: simulationObjectEditorList.h:140
Definition: treeWidget.h:35
Definition: entityMapperKey.h:23
const DtRwForces & filterOnForces() const
Definition: simulationObjectEditorList.h:479
Virtual base class. Allows for RTTI and proper virtual destruction. Used by Creators, Factories, Providers, Assemblers and User Interfaces.
Definition: DtVirtualBaseClass.h:19
const QColor & outlineColor() const
Definition: simulationObjectEditorList.h:437
std::set< std::string > myCategories
Definition: simulationObjectEditorList.h:96
QToolButton * myResetButton
Definition: simulationObjectEditorList.h:391
Definition: simulationObjectEditorList.h:70
QList< QVariant > myForces
Definition: simulationObjectEditorList.h:378
virtual void clearIgnoreObjectTypes()
Clears the list of object types to ignore.
Definition: simulationObjectEditorList.h:85
bool myShowWarningForFilteredItems
Definition: simulationObjectEditorList.h:405
bool myInFreeFormAddMode
Definition: simulationObjectEditorList.h:399
LoadInformation(DtModelSetEntry *model, bool sw=false, const QString &w="")
Definition: simulationObjectEditorList.h:332
virtual QSize minimumSizeHint() const
const int DtGlobalForcesRole
Definition: simulationObjectEditorList.h:64
DtRwNLengthStringVector is a named, readable/writable vector of strings of arbitrary length...
Definition: rwNLengthStringVector.h:28
const QList< QVariant > & allForces() const
Definition: simulationObjectEditorList.h:484
bool showAllTags() const
Definition: simulationObjectEditorList.h:270
QGridLayout * myControlsLayout
Definition: simulationObjectEditorList.h:384
const QString & warning() const
Definition: simulationObjectEditorList.h:128
DtObjectType myDisableIfContains
Definition: simulationObjectEditorList.h:397
DtVrfSubObjectParameterList is a readable/writable list of DtVrfSubObjectParameterEntrys.
Definition: vrfSubObjectParameterList.h:21
bool myExecutingFilter
Definition: simulationObjectEditorList.h:401
boost::function< bool(const DtModelSetEntry *, bool &showWarningIcon)> DtEntityFilterFunction
Definition: simulationObjectEditorList.h:66
DtSimulationObjectEditorList * myPaletteParent
Definition: simulationObjectEditorList.h:138
QColor myOutlineColor
Definition: simulationObjectEditorList.h:456
boost::signals2::signal< void()> signal_itemStatusChanged
Definition: simulationObjectEditorList.h:369
DtEntityPaletteFilter * myFilter
Definition: simulationObjectEditorList.h:376
virtual void setRightClickEnabled(bool b)
Definition: simulationObjectEditorList.h:459
A simple widget with an embedded de.
Definition: displayDefinitionWidget.h:84
bool myShowIncluded
Definition: simulationObjectEditorList.h:403
bool showIncluded() const
Definition: simulationObjectEditorList.h:263
makVrv::DtDe & myDe
Definition: simulationObjectEditorList.h:519
LoadInformation()
Definition: simulationObjectEditorList.h:333
virtual ~DtSimulationObjectEditorListItemDelegate()
Definition: simulationObjectEditorList.h:152
void setBlockSelectionByKeypad(bool b)
Definition: simulationObjectEditorList.h:421
DtRwForces myFilterOnForces
Definition: simulationObjectEditorList.h:99
Definition: simulationObjectEditorList.h:330
Description: A model is a set of items that defines a model to create in the back-end from the front-...
Definition: simulationObjectGroupModelSetEntry.h:161
QTreeWidget * entityList()
Definition: simulationObjectEditorList.h:474
std::set< DtString > myIgnoreObjectTypes
Definition: simulationObjectEditorList.h:102
Definition: objectType.h:27
makVrf::DtCountrySelectionEntryWidget * myUsedByCountry
Definition: simulationObjectEditorList.h:375
Definition: modelSetEntry.h:34
virtual DtEntityPaletteFilter * clone() const
Definition: simulationObjectEditorList.h:90
Contains makVrv::DtVirtualBaseClass class.
std::string myCountryName
Definition: simulationObjectEditorList.h:98
bool myBlockSelectionByKeypad
Definition: simulationObjectEditorList.h:454
DtObjectType mySelectObjectTypeIfAvailable
Definition: simulationObjectEditorList.h:402
makVrv::DtSignalConnectionManager myConnections
Definition: simulationObjectEditorList.h:408
bool myShowAllTags
Definition: simulationObjectEditorList.h:404
QSplitter * mySplitter
Definition: simulationObjectEditorList.h:393
QTreeWidgetItem * myGrabbing
Definition: simulationObjectEditorList.h:386
makVrv::DtSignalConnectionManager myEntryConnections
Definition: simulationObjectEditorList.h:409
bool showWarning
Definition: simulationObjectEditorList.h:337
Class to manage disconnection of boost connections on deletion.
Definition: DtSignalConnectionManager.h:20
bool rightClickEnabled() const
Definition: simulationObjectEditorList.h:464
QTreeWidgetItem * myNextAddIsTo
Definition: simulationObjectEditorList.h:383
bool myDisableIfContainsObject
Definition: simulationObjectEditorList.h:398
QString myWarning
Definition: simulationObjectEditorList.h:144
DtDisplayWidget * displayWidget
Definition: simulationObjectEditorList.h:377
Definition: simulationObjectEditorList.h:105
Contains makVrf::DtTagSelectorWidget class.
Definition: simulationObjectEditorTagSelectorWidget.h:14
bool executingFilter() const
Definition: simulationObjectEditorList.h:494
QImage * myWarningIcon
Definition: simulationObjectEditorList.h:145
void setListParent(DtSimulationObjectEditorList *p)
Definition: simulationObjectEditorList.h:434
DtModelSetEntry * mySelectedModel
Definition: simulationObjectEditorList.h:382
Description: A readable, writable list of DtForceType.
Definition: rwForces.h:34
QLineEdit * mySearch
Definition: simulationObjectEditorList.h:390
DtAddObjectToHierarchy * myAddToHierarchyDialog
Definition: simulationObjectEditorList.h:381
bool myShowWarning
Definition: simulationObjectEditorList.h:143
Base class to provide boost signal/slot management.
QString myForcePixmapKey
Definition: simulationObjectEditorList.h:139
QTreeWidgetItem * myCurrentlySelectedBeforeGrab
Definition: simulationObjectEditorList.h:387
DT_DLL_DEBUGDRAWRENDERER void init(makVrv::DtDe &de)
Work function for the plugin initialization.
const int DtModelRole
Definition: simulationObjectEditorList.h:63
DtSimulationObjectEditorTagSelectorWidget * myTags
Definition: simulationObjectEditorList.h:374
std::string myUsedByCountry
Definition: simulationObjectEditorList.h:97
virtual QSize sizeHint() const
Need to do this as default sizeHint() for an abstract scroll area (in Qt 4.2.2) is too large...
bool blockSelectionByKeypad() const
Definition: simulationObjectEditorList.h:426
DtSimulationObjectEditorList * listParent() const
Definition: simulationObjectEditorList.h:435
The DtUiElement class is the base for which all UI elements are defined. If you wish to create a new ...
Definition: uiElement.h:97
Creator for the list.
Definition: simulationObjectEditorList.h:500
makVrv::DtDe & myDe
Definition: simulationObjectEditorList.h:407
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
makVrv::DtDe & myDe
Definition: simulationObjectEditorList.h:142
Definition: addObjectToHierarchy.h:20
DtSimulationObjectEditorList * myListParent
Definition: simulationObjectEditorList.h:455
void setPaletteParent(DtSimulationObjectEditorList *p)
Definition: simulationObjectEditorList.h:114
QLabel * mySearchLabel
Definition: simulationObjectEditorList.h:389
Definition: simulationObjectEditorList.h:160
Widget that allows the selection of a country.
Definition: countrySelectionEntryWidget.h:39
DtRwForces myFilterOnForces
Definition: simulationObjectEditorList.h:379
QString warning
Definition: simulationObjectEditorList.h:338
DtSimulationObjectEditorListItemDelegate(QWidget *parent)
Definition: simulationObjectEditorList.h:151
makVrf::DtTreeWidget * myEntities
Definition: simulationObjectEditorList.h:373
bool showWarning() const
Definition: simulationObjectEditorList.h:122
makVrv::DtDe & myDe
Definition: simulationObjectEditorList.h:100
bool hasSelection() const
Definition: simulationObjectEditorList.h:469
#define DT_DLL_simulationObjectEditorimpl
This file is used to determine how to build.
Definition: simulationObjectEditorImplDefines.h:33
QTreeWidgetItem * currentlyDisplaying() const
Definition: simulationObjectEditorList.h:489
QWidget * myControlsWidget
Definition: simulationObjectEditorList.h:394
QImage myGrayscaleForcePixmap
Definition: simulationObjectEditorList.h:141
bool myRightClickEnabled
Definition: simulationObjectEditorList.h:380
QTreeWidgetItem * myCurrentlyDisplaying
Definition: simulationObjectEditorList.h:400
Definition: simulationObjectEditorList.h:148

Document ID: Generated on Sun Dec 4 20:22:03 EST 2022 from SVN revision 249613
Copyright © 2005-2021 MAK Technologies. All Rights Reserved (www.mak.com)