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

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)