VR-Forces 4.5 Class Documentation
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator 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 
14 #include <QtCore/QHash>
15 #include <QtGui/QImage>
16 #include <QtCore/QMap>
17 #include <QtCore/QString>
18 #include <QtCore/QVariant>
19 #include <QtWidgets/QMessageBox>
20 #include <QtWidgets/QItemDelegate>
22 #include "vrfutil/rwForces.h"
24 
25 #include <boost/function.hpp>
26 
27 #include <set>
28 
29 namespace makVrf
30 {
31  class DtEntityMapperKey;
32 }
33 
35 class DtFilename;
37 class DtList;
38 class QComboBox;
42 class DtModelSetEntry;
43 class QLabel;
44 class DtUiElementEvent;
45 class QPushButton;
46 class QLineEdit;
48 
49 const int DtModelRole = Qt::UserRole;
50 const int DtGlobalForcesRole = Qt::UserRole + 1;
51 
53 
54 typedef boost::function<bool (const DtModelSetEntry*)> DtEntityFilterFunction;
55 
57 {
58 public:
61  virtual bool isValid(const DtModelSetEntry*);
62 
63  void setCategory(const QString&);
64  void setUsedByCountry(const QString&);
65  void setFilterOnForces(const DtRwForces&);
66 
68  virtual void ignoreObjectType(const DtObjectType&);
69 
71  virtual void removeIgnoreObjectType(const DtObjectType&);
72 
73  virtual DtEntityPaletteFilter* clone() const { return new DtEntityPaletteFilter(*this); };
74 
75  virtual void addFilterFunction(DtEntityFilterFunction f) { myFilterFunctions.push_back(f); };
76 
77 protected:
78  std::vector<DtEntityFilterFunction> myFilterFunctions;
79  QString myCategory;
80  QString myUsedByCountry;
83 
84  std::set<DtString> myIgnoreObjectTypes;
85 };
86 
88 {
89 public:
91  virtual QVariant data(int column, int role) const;
92 
93  virtual DtModelSetEntry* proxyModel() const;
94  virtual QList<QVariant> proxyForces() const;
95 
96  void setPaletteParent(DtSimulationObjectEditorList* p) { myPaletteParent = p; };
97  QString forcePixmapKey(DtModelSetEntry*, const QList<QVariant>&) const;
98  bool isInMasterSMS() const;
99 
100  virtual bool operator<(const QTreeWidgetItem & other ) const;
101  virtual void clearVisuals();
102 
103 protected:
104  virtual QImage getPixmap(const DtObjectType& o, int force) const;
105  virtual void createGrayscaleForcePixmap() const;
106 
107 protected:
109  mutable QString myForcePixmapKey;
110  mutable QImage myForcePixmap;
111  mutable QImage myGrayscaleForcePixmap;
113 };
114 
116 {
117 public:
120 
121 protected:
122  virtual void paint(QPainter *painter,
123  const QStyleOptionViewItem &option,
124  const QModelIndex &index) const;
125 };
126 
128 {
129  Q_OBJECT
130 
131 public:
132 
135 
137  virtual ~DtSimulationObjectEditorList();
138 
140  virtual void init();
141 
142  bool hasSelection() const;
143  virtual void clear();
144  virtual std::set<makVrf::DtEntityMapperKey> getSelectedInformation() const;
145  virtual std::set<makVrf::DtEntityMapperKey> getRevertableKeys() const;
146  virtual void getSelectedInformation(DtObjectType& key) const;
147  virtual void getInformation(QTreeWidgetItem*, makVrf::DtEntityMapperKey& key) const;
148  virtual void getInformation(QTreeWidgetItem*, DtObjectType& key) const;
149  virtual DtEntityPaletteItem* itemFor(const DtEntityType& t) const;
150 
151  virtual bool canRevertExisting() const;
152  virtual bool canMakeTemplate() const;
153 
155  virtual bool canDeleteExisting(bool any = false) const;
156  virtual bool selectedIsInMasterSMS() const;
157 
158  virtual bool canAddSubordinateToSelected() const;
159 
160  virtual void getCategorySelections(DtRwForces&, DtRwNLengthStringVector&);
161  virtual void addCategory(const QString&);
162  virtual bool hasCategory(const QString&) const;
163 
164  virtual void select(const std::vector<DtObjectType>&);
165 
166  virtual QString textFilter() const;
167  virtual void setTextFilter(const QString&);
168 
169  virtual DtObjectType selectedObjectType() const;
170  virtual std::vector<DtObjectType> selectedObjectTypes() const;
171  virtual QTreeWidgetItem* selectedItem() const;
172  virtual DtModelSetEntry* selectedModel() const;
173  virtual void setSelected(const QString&);
174  virtual void setSelected(DtModelSetEntry*);
175  virtual void selectPath(const QString& path);
176  virtual DtModelSetEntry* modelFor(QTreeWidgetItem*) const;
177  virtual int selectedItemsCount() const;
178  virtual bool selectedIsPartOfSimulationObjectGroup() const;
179  virtual bool itemIsPartOfSimulationObjectGroup(QTreeWidgetItem*) const;
180  virtual void addFilterFunction(DtEntityFilterFunction f);
181 
183  virtual void ignoreObjectType(const DtObjectType&);
184 
186  virtual void removeIgnoreObjectType(const DtObjectType&);
187 
188  virtual void selectUncategorized();
189  virtual void selectCategory(const QString&);
190  virtual void selectUsedByCountry(const QString&);
191 
192  QTreeWidget* entityList();
193 
194  static DtSimulationObjectEditorList* create(QWidget* parent = NULL);
195  void setRightClickEnabled(bool b);
196  bool rightClickEnabled() const;
197 
198  virtual QStringList selectedNames() const;
199  virtual void selectNames(const QStringList&);
200 
201  QTreeWidgetItem* currentlyDisplaying() const;
202 
205  virtual void setFilterOnForces(const DtRwForces& forces);
206  const DtRwForces& filterOnForces() const;
207 
208  virtual void changeModel(DtModelSetEntry* oldModel, DtModelSetEntry* newModel);
209 
210  virtual bool selectModel(DtModelSetEntry* m, bool clear = true);
211  virtual QString categoryFor(DtModelSetEntry* m) const;
212 
213  virtual DtString selectedCategoryRawData() const;
214  virtual QString selectedCategory() const;
215  virtual QString selectedUsedByCountry() const;
216  virtual QString selectedPath() const;
217 
218  virtual makVrf::DtTreeWidget* createEntitiesList(QWidget* p);
219  virtual DtSimulationObjectEditorHistory* createHistoryBar(QWidget* p);
220 
222  virtual void setShowHistory(bool);
223  bool showingHistory() const;
224 
225  virtual DtObjectType stringToType(const QString&) const;
226 
228  virtual void hierarchyChanged(const DtUiElementEvent& e);
229  virtual void hierarchyChanged(const DtObjectType& obj);
230 
231  const QList<QVariant>& allForces() const;
232 
234  virtual void disableItemsThatHaveThisAsAChild(const DtObjectType&);
235  virtual void enableAllItems();
236 
238  virtual bool itemContains(const DtVrfSubObjectParameterList&, const DtObjectType&) const;
239  virtual void addObjectToHierarchy(const DtObjectType&, QTreeWidgetItem*, int index = -1);
240 
241  bool executingFilter() const;
242  virtual QSize sizeHint() const;
243  virtual QSize minimumSizeHint() const;
244 
245 public:
246  virtual void removeFromHierarchy();
247  virtual void moveUp();
248  virtual void moveDown();
249  virtual void replaceInHierarchy();
250  virtual void addNewSubordinate();
251  virtual void addNewSubordinateFromExisting();
252  virtual void addToHierarchy();
253  virtual void addSubordinatesFromPalette();
254  virtual void opdEntryAdded(DtModelSetEntry*, bool select = false);
255 
256 public slots:
257  virtual void fillInList();
258  virtual void deleteExisting();
259  virtual void revertExisting();
260  virtual void executeFilter();
261  virtual void redisplayListIcons();
262  virtual void executeTextFilter();
263 
264 protected slots:
265  virtual void resetTextFilter();
266  virtual void exitAddSubordinatesFromPalette();
267  virtual void itemRightClicked(QTreeWidgetItem*, QMouseEvent*);
268  virtual void selectionChanged();
269  virtual void itemExpanded(QTreeWidgetItem*);
270  virtual void addObjectToHierarchy(const DtObjectType&);
271 
272 protected:
273  virtual void moveInHierarchy(int iFrom, int iTo, QTreeWidgetItem* parent);
274  virtual void replaceObjectInHierarchy(const DtObjectType& t, QTreeWidgetItem* toReplace);
275 
276  virtual void loadSubordinatesFor(QTreeWidgetItem*, const DtVrfSubObjectParameterList&);
277  virtual void loadSimulationObjectGroup(QTreeWidgetItem* parent, DtSimulationObjectGroupModelSetEntry*);
278 
279  virtual void attachItemsToParent(QTreeWidgetItem* parent, const std::vector<DtModelSetEntry*>& toLoad);
280 
281  virtual void revertChanged(const makVrf::DtEntityMapperKey&);
282  virtual void revertChanged(DtModelSetEntry*);
283  virtual void addModelEntry(DtModelSetEntry*);
284  virtual DtEntityPaletteFilter* createFilter();
285  virtual DtEntityPaletteItem* createPaletteItem();
286  virtual DtEntityPaletteItem* createPaletteItem(DtModelSetEntry*);
287  virtual void createForcesList();
288 
289  virtual void disableInvalidItems();
290 
291  virtual void createTreeWidgetItemsFor(const std::vector<DtModelSetEntry*>&, QVector<QTreeWidgetItem*>& items);
292  virtual void slot_entityEntryAboutToBeRemoved(DtSimulationModelSetLoader::EntityData*);
293  virtual void slot_entityEntryAdded(DtSimulationModelSetLoader::EntityData*);
294  virtual void hideAllObjectsByObjectType(QTreeWidgetItem*, DtSimulationModelSetLoader::EntityData*);
295  virtual bool showAllObjectsByObjectType(QTreeWidgetItem*, DtSimulationModelSetLoader::EntityData*);
296 
297 public:
298  boost::signal<void ()> signal_itemSelectionChanged;
299  boost::signal<void ()> signal_itemStatusChanged;
300  boost::signal<void (const QVector<QTreeWidgetItem*>&)> signal_itemsAdded;
301 
302 public:
316 
320 
321 protected:
328 
330 };
331 
333 {
334 public:
337 
338  void setBlockSelectionByKeypad(bool b)
339  {
340  myBlockSelectionByKeypad = b;
341  }
342 
343  bool blockSelectionByKeypad() const
344  {
345  return myBlockSelectionByKeypad;
346  }
347 
348  virtual void keyPressEvent(QKeyEvent*);
349  virtual void focusOutEvent(QFocusEvent* e);
350 
351 protected:
352 
353  virtual QSize sizeHint() const;
354  virtual QSize minimumSizeHint() const;
355 
356  virtual QMimeData* mimeData(const QList<QTreeWidgetItem*> list) const;
357  virtual QStringList mimeTypes() const;
358  virtual void dragEnterEvent(QDragEnterEvent *d);
359  virtual void dragMoveEvent(QDragMoveEvent *d);
360  virtual void dropEvent(QDropEvent* d);
361 
362 protected:
364 };
365 
367 {
369 }
370 
372 {
373  return myRightClickEnabled;
374 }
375 
377 {
378  return (myEntities && (myEntities->selectedItems().count() != 0));
379 }
380 
382 {
383  return myEntities;
384 }
385 
387 {
388  return myFilterOnForces;
389 }
390 
392 {
393  return myForces;
394 }
395 
397 {
398  return myCurrentlyDisplaying;
399 }
400 
402 {
403  return myExecutingFilter;
404 }
405 
408 {
409 public:
412 
415 
418 
420  static void registerInstance(makVrv::DtDe&, DtSimulationObjectEditorListCreator*);
421 
423  virtual DtSimulationObjectEditorList* create(QWidget* parent);
424 
425 protected:
427 };

Document ID: Generated on Thu Mar 23 18:54:12 EDT 2017 from SVN revision 174804
Copyright © 2005-2017 VT MÄK. All Rights Reserved (www.mak.com)