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

Document ID: Generated on Thu Aug 27 10:56:05 EDT 2020 from SVN revision 217100
Copyright © 2005-2020 MAK Technologies. All Rights Reserved (www.mak.com)