VR-Forces 4.7 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 
15 #include <QtCore/QHash>
16 #include <QtGui/QImage>
17 #include <QtCore/QMap>
18 #include <QtCore/QString>
19 #include <QtCore/QVariant>
20 #include <QtWidgets/QMessageBox>
21 #include <QtWidgets/QItemDelegate>
23 #include "vrfutil/rwForces.h"
25 
26 #include <boost/function.hpp>
27 
28 #include <set>
29 
30 namespace makVrf
31 {
32  class DtEntityMapperKey;
33 }
34 
36 class DtFilename;
38 class DtList;
39 class QComboBox;
42 class DtModelSetEntry;
43 class QLabel;
44 class DtUiElementEvent;
45 class QPushButton;
46 class QCheckBox;
47 class QLineEdit;
50 class QGridLayout;
51 class QSplitter;
52 
53 const int DtModelRole = Qt::UserRole;
54 const int DtGlobalForcesRole = Qt::UserRole + 1;
55 
57 
58 typedef boost::function<bool (const DtModelSetEntry*, bool& showWarningIcon)> DtEntityFilterFunction;
59 
61 {
62 public:
65  virtual bool isValid(const DtModelSetEntry*, bool& failedUserFilter);
66 
67  void setCategories(const std::vector<std::string>&);
68  void setUsedByCountry(const QString&);
69  void setFilterOnForces(const DtRwForces&);
70 
72  virtual void ignoreObjectType(const DtObjectType&);
73 
75  virtual void clearIgnoreObjectTypes() { myIgnoreObjectTypes.clear(); };
76 
78  virtual void removeIgnoreObjectType(const DtObjectType&);
79 
80  virtual DtEntityPaletteFilter* clone() const { return new DtEntityPaletteFilter(*this); };
81 
82  virtual void addFilterFunction(DtEntityFilterFunction f) { myFilterFunctions.push_back(f); };
83 
84 protected:
85  std::vector<DtEntityFilterFunction> myFilterFunctions;
86  std::set<std::string> myCategories;
87  QString myUsedByCountry;
90 
91  std::set<DtString> myIgnoreObjectTypes;
92 };
93 
95 {
96 public:
98  virtual QVariant data(int column, int role) const;
99 
100  virtual DtModelSetEntry* proxyModel() const;
101  virtual QList<QVariant> proxyForces() const;
102 
103  void setPaletteParent(DtSimulationObjectEditorList* p) { myPaletteParent = p; };
104  QString forcePixmapKey(DtModelSetEntry*, const QList<QVariant>&) const;
105  bool isInMasterSMS() const;
106 
107  virtual bool operator<(const QTreeWidgetItem & other ) const;
108  virtual void clearVisuals();
109 
110  virtual void setShowWarning(bool);
111  bool showWarning() const
112  {
113  return myShowWarning;
114  }
115 
116  virtual void setWarning(const QString&);
117  const QString& warning() const
118  {
119  return myWarning;
120  }
121 
122 protected:
123  virtual QImage getPixmap(const DtObjectType& o, int force) const;
124  virtual void createGrayscaleForcePixmap() const;
125 
126 protected:
128  mutable QString myForcePixmapKey;
129  mutable QImage myForcePixmap;
130  mutable QImage myGrayscaleForcePixmap;
133  QString myWarning;
134  QImage* myWarningIcon;
135 };
136 
138 {
139 public:
142 
143 protected:
144  virtual void paint(QPainter *painter,
145  const QStyleOptionViewItem &option,
146  const QModelIndex &index) const;
147 };
148 
150 {
151  Q_OBJECT
152 
153 public:
154 
157 
159  virtual ~DtSimulationObjectEditorList();
160 
162  virtual void init();
163 
164  bool hasSelection() const;
165  virtual void clear();
166  virtual std::set<makVrf::DtEntityMapperKey> getSelectedInformation() const;
167  virtual std::set<makVrf::DtEntityMapperKey> getRevertableKeys() const;
168  virtual void getSelectedInformation(DtObjectType& key) const;
169  virtual void getInformation(QTreeWidgetItem*, makVrf::DtEntityMapperKey& key) const;
170  virtual void getInformation(QTreeWidgetItem*, DtObjectType& key) const;
171  virtual DtEntityPaletteItem* itemFor(const DtEntityType& t) const;
172 
173  virtual bool canRevertExisting() const;
174  virtual bool canMakeTemplate() const;
175 
177  virtual bool canDeleteExisting(bool any = false) const;
178  virtual bool selectedIsInMasterSMS() const;
179 
180  virtual bool canAddSubordinateToSelected() const;
181 
182  virtual void getCategorySelections(DtRwForces&, DtRwNLengthStringVector&);
183  virtual bool hasCategory(const QString&) const;
184 
185  virtual void select(const std::vector<DtObjectType>&);
186 
187  virtual std::vector<std::string> selectedCategories() const;
188 
189  virtual QString textFilter() const;
190  virtual void setTextFilter(const QString&);
191 
192  virtual DtObjectType selectedObjectType() const;
193  virtual std::vector<DtObjectType> selectedObjectTypes() const;
194  virtual QTreeWidgetItem* selectedItem() const;
195  virtual DtModelSetEntry* selectedModel() const;
196  virtual void setSelected(const QString&, bool forceReselect = true);
197  virtual void setSelected(DtModelSetEntry*, bool forceReselect = true);
198  virtual void selectPath(const QString& path);
199  virtual DtModelSetEntry* modelFor(QTreeWidgetItem*) const;
200  virtual int selectedItemsCount() const;
201  virtual bool selectedIsPartOfSimulationObjectGroup() const;
202  virtual bool itemIsPartOfSimulationObjectGroup(QTreeWidgetItem*) const;
203  virtual void addFilterFunction(DtEntityFilterFunction f);
204 
206  virtual void ignoreObjectType(const DtObjectType&);
207 
209  virtual void removeIgnoreObjectType(const DtObjectType&);
210  virtual void clearIgnoreObjectTypes();
211 
212  virtual void selectUncategorized();
213  virtual void selectCategory(const QString&);
214  virtual void selectUsedByCountry(const QString&);
215 
216  QTreeWidget* entityList();
217 
218  static DtSimulationObjectEditorList* create(QWidget* parent = NULL);
219  virtual void setRightClickEnabled(bool b);
220  bool rightClickEnabled() const;
221 
222  virtual void setShowWarningForFilteredItems(bool b);
223  bool showWarningForFilteredItems() const;
224 
225  virtual QStringList selectedNames() const;
226  virtual void selectNames(const QStringList&);
227 
228  QTreeWidgetItem* currentlyDisplaying() const;
229 
232  virtual void setFilterOnForces(const DtRwForces& forces);
233  const DtRwForces& filterOnForces() const;
234 
235  virtual void changeModel(DtModelSetEntry* oldModel, DtModelSetEntry* newModel);
236 
237  virtual bool selectModel(DtModelSetEntry* m, bool clear = true);
238 
239  virtual bool checkSMSValid(QTreeWidgetItem*) const;
240 
241  virtual QString selectedUsedByCountry() const;
242  virtual QString selectedPath() const;
243 
244  virtual makVrf::DtTreeWidget* createEntitiesList(QWidget* p);
245 
247  virtual void setShowIncluded(bool);
248  bool showIncluded() const
249  {
250  return myShowIncluded;
251  }
252 
254  virtual void setShowAllTags(bool);
255  bool showAllTags() const
256  {
257  return myShowAllTags;
258  }
259 
260  virtual DtObjectType stringToType(const QString&) const;
261 
263  virtual void hierarchyChanged(const DtUiElementEvent& e);
264  virtual void hierarchyChanged(const DtObjectType& obj);
265 
266  const QList<QVariant>& allForces() const;
267 
269  virtual void disableItemsThatHaveThisAsAChild(const DtObjectType&);
270  virtual void enableAllItems();
271 
273  virtual bool itemContains(const DtVrfSubObjectParameterList&, const DtObjectType&) const;
274  virtual void addObjectToHierarchy(const DtObjectType&, QTreeWidgetItem*, int index = -1);
275 
276  bool executingFilter() const;
277  virtual QSize sizeHint() const;
278  virtual QSize minimumSizeHint() const;
279 
280 public:
281  virtual void removeFromHierarchy();
282  virtual void moveUp();
283  virtual void moveDown();
284  virtual void replaceInHierarchy();
285  virtual void addNewSubordinate();
286  virtual void addNewSubordinateFromExisting();
287  virtual void addToHierarchy();
288  virtual void addSubordinatesFromPalette();
289  virtual void opdEntryAdded(DtModelSetEntry*, bool select = false);
290 
291 public slots:
292  virtual void fillInList();
293  virtual void deleteExisting();
294  virtual void revertExisting();
295  virtual void executeFilter();
296  virtual void redisplayListIcons();
297  virtual void executeTextFilter();
298  virtual void selectionChanged();
299  virtual void copyListContentsToClipboard();
300 
301 protected slots:
302  virtual void resetTextFilter();
303  virtual void exitAddSubordinatesFromPalette();
304  virtual void itemRightClicked(QTreeWidgetItem*, QMouseEvent*);
305  virtual void itemExpanded(QTreeWidgetItem*);
306  virtual void addObjectToHierarchy(const DtObjectType&);
307 
308 protected:
309  virtual void moveInHierarchy(int iFrom, int iTo, QTreeWidgetItem* parent);
310  virtual void replaceObjectInHierarchy(const DtObjectType& t, QTreeWidgetItem* toReplace);
311 
312  virtual void loadSubordinatesFor(QTreeWidgetItem*, const DtVrfSubObjectParameterList&);
313  virtual void loadSimulationObjectGroup(QTreeWidgetItem* parent, DtSimulationObjectGroupModelSetEntry*);
314 
316  {
317  LoadInformation(DtModelSetEntry* model, bool sw = false, const QString& w = "") : mse(model), showWarning(sw), warning(w) {};
318  LoadInformation() : mse(0), showWarning(false) {};
319  LoadInformation(const LoadInformation& orig) : mse(orig.mse), showWarning(orig.showWarning), warning(orig.warning) {};
320 
321  DtModelSetEntry* mse;
323  QString warning;
324  };
325 
326  virtual void attachItemsToParent(QTreeWidgetItem* parent, const std::vector<LoadInformation>& toLoad);
327  virtual void slot_processUIEvent(const DtUiElementEvent& e);
328 
329  virtual void revertChanged(const makVrf::DtEntityMapperKey&);
330  virtual void revertChanged(DtModelSetEntry*);
331  virtual void addModelEntry(DtModelSetEntry*);
332  virtual DtEntityPaletteFilter* createFilter();
333  virtual DtEntityPaletteItem* createPaletteItem();
334  virtual DtEntityPaletteItem* createPaletteItem(DtModelSetEntry*);
335  virtual void createForcesList();
336 
337  virtual void disableInvalidItems();
338 
339  virtual void createTreeWidgetItemsFor(const std::vector<LoadInformation>&, QVector<QTreeWidgetItem*>& items);
340  virtual void slot_entityEntryAboutToBeRemoved(DtSimulationModelSetLoader::EntityData*);
341  virtual void slot_entityEntryAdded(DtSimulationModelSetLoader::EntityData*);
342  virtual void hideAllObjectsByObjectType(QTreeWidgetItem*, DtSimulationModelSetLoader::EntityData*);
343  virtual bool showAllObjectsByObjectType(QTreeWidgetItem*, DtSimulationModelSetLoader::EntityData*);
344  virtual void runHealthCheck();
345  virtual void updateHealthResults();
346 
347 signals:
348  void itemDoubleClicked(QTreeWidgetItem*, int);
349  void healthCheckResults(const QString&);
350 
351 public:
352  boost::signal<void ()> signal_itemSelectionChanged;
353  boost::signal<void ()> signal_itemStatusChanged;
354  boost::signal<void (const QVector<QTreeWidgetItem*>&)> signal_itemsAdded;
355 
356 public:
368  QGridLayout* myControlsLayout;
369 
373 
374  QSplitter* mySplitter;
376 
377 protected:
387 
391 };
392 
394 {
395 public:
398 
399  void setBlockSelectionByKeypad(bool b)
400  {
401  myBlockSelectionByKeypad = b;
402  }
403 
404  bool blockSelectionByKeypad() const
405  {
406  return myBlockSelectionByKeypad;
407  }
408 
409  virtual void keyPressEvent(QKeyEvent*);
410  virtual void focusOutEvent(QFocusEvent* e);
411 
412 protected:
413 
414  virtual QSize sizeHint() const;
415  virtual QSize minimumSizeHint() const;
416 
417  virtual QMimeData* mimeData(const QList<QTreeWidgetItem*> list) const;
418  virtual QStringList mimeTypes() const;
419  virtual void dragEnterEvent(QDragEnterEvent *d);
420  virtual void dragMoveEvent(QDragMoveEvent *d);
421  virtual void dropEvent(QDropEvent* d);
422 
423 protected:
425 };
426 
428 {
430 }
431 
433 {
434  return myRightClickEnabled;
435 }
436 
438 {
439  return (myEntities && (myEntities->selectedItems().count() != 0));
440 }
441 
443 {
444  return myEntities;
445 }
446 
448 {
449  return myFilterOnForces;
450 }
451 
453 {
454  return myForces;
455 }
456 
458 {
459  return myCurrentlyDisplaying;
460 }
461 
463 {
464  return myExecutingFilter;
465 }
466 
469 {
470 public:
473 
476 
479 
481  static void registerInstance(makVrv::DtDe&, DtSimulationObjectEditorListCreator*);
482 
484  virtual DtSimulationObjectEditorList* create(QWidget* parent);
485 
486 protected:
488 };

Document ID: Generated on Fri Apr 26 21:53:14 EDT 2019 from SVN revision 197883
Copyright © 2005-2019 VT MAK. All Rights Reserved (www.mak.com)