VR-Forces 4.6 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 
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 QCheckBox;
47 class QLineEdit;
50 class QGridLayout;
51 
52 const int DtModelRole = Qt::UserRole;
53 const int DtGlobalForcesRole = Qt::UserRole + 1;
54 
56 
57 typedef boost::function<bool (const DtModelSetEntry*)> DtEntityFilterFunction;
58 
60 {
61 public:
64  virtual bool isValid(const DtModelSetEntry*);
65 
66  void setCategories(const std::vector<std::string>&);
67  void setUsedByCountry(const QString&);
68  void setFilterOnForces(const DtRwForces&);
69 
71  virtual void ignoreObjectType(const DtObjectType&);
72 
74  virtual void removeIgnoreObjectType(const DtObjectType&);
75 
76  virtual DtEntityPaletteFilter* clone() const { return new DtEntityPaletteFilter(*this); };
77 
78  virtual void addFilterFunction(DtEntityFilterFunction f) { myFilterFunctions.push_back(f); };
79 
80 protected:
81  std::vector<DtEntityFilterFunction> myFilterFunctions;
82  std::set<std::string> myCategories;
83  QString myUsedByCountry;
86 
87  std::set<DtString> myIgnoreObjectTypes;
88 };
89 
91 {
92 public:
94  virtual QVariant data(int column, int role) const;
95 
96  virtual DtModelSetEntry* proxyModel() const;
97  virtual QList<QVariant> proxyForces() const;
98 
99  void setPaletteParent(DtSimulationObjectEditorList* p) { myPaletteParent = p; };
100  QString forcePixmapKey(DtModelSetEntry*, const QList<QVariant>&) const;
101  bool isInMasterSMS() const;
102 
103  virtual bool operator<(const QTreeWidgetItem & other ) const;
104  virtual void clearVisuals();
105 
106 protected:
107  virtual QImage getPixmap(const DtObjectType& o, int force) const;
108  virtual void createGrayscaleForcePixmap() const;
109 
110 protected:
112  mutable QString myForcePixmapKey;
113  mutable QImage myForcePixmap;
114  mutable QImage myGrayscaleForcePixmap;
116 };
117 
119 {
120 public:
123 
124 protected:
125  virtual void paint(QPainter *painter,
126  const QStyleOptionViewItem &option,
127  const QModelIndex &index) const;
128 };
129 
131 {
132  Q_OBJECT
133 
134 public:
135 
138 
140  virtual ~DtSimulationObjectEditorList();
141 
143  virtual void init();
144 
145  bool hasSelection() const;
146  virtual void clear();
147  virtual std::set<makVrf::DtEntityMapperKey> getSelectedInformation() const;
148  virtual std::set<makVrf::DtEntityMapperKey> getRevertableKeys() const;
149  virtual void getSelectedInformation(DtObjectType& key) const;
150  virtual void getInformation(QTreeWidgetItem*, makVrf::DtEntityMapperKey& key) const;
151  virtual void getInformation(QTreeWidgetItem*, DtObjectType& key) const;
152  virtual DtEntityPaletteItem* itemFor(const DtEntityType& t) const;
153 
154  virtual bool canRevertExisting() const;
155  virtual bool canMakeTemplate() const;
156 
158  virtual bool canDeleteExisting(bool any = false) const;
159  virtual bool selectedIsInMasterSMS() const;
160 
161  virtual bool canAddSubordinateToSelected() const;
162 
163  virtual void getCategorySelections(DtRwForces&, DtRwNLengthStringVector&);
164  virtual bool hasCategory(const QString&) const;
165 
166  virtual void select(const std::vector<DtObjectType>&);
167 
168  virtual std::vector<std::string> selectedCategories() const;
169 
170  virtual QString textFilter() const;
171  virtual void setTextFilter(const QString&);
172 
173  virtual DtObjectType selectedObjectType() const;
174  virtual std::vector<DtObjectType> selectedObjectTypes() const;
175  virtual QTreeWidgetItem* selectedItem() const;
176  virtual DtModelSetEntry* selectedModel() const;
177  virtual void setSelected(const QString&);
178  virtual void setSelected(DtModelSetEntry*);
179  virtual void selectPath(const QString& path);
180  virtual DtModelSetEntry* modelFor(QTreeWidgetItem*) const;
181  virtual int selectedItemsCount() const;
182  virtual bool selectedIsPartOfSimulationObjectGroup() const;
183  virtual bool itemIsPartOfSimulationObjectGroup(QTreeWidgetItem*) const;
184  virtual void addFilterFunction(DtEntityFilterFunction f);
185 
187  virtual void ignoreObjectType(const DtObjectType&);
188 
190  virtual void removeIgnoreObjectType(const DtObjectType&);
191 
192  virtual void selectUncategorized();
193  virtual void selectCategory(const QString&);
194  virtual void selectUsedByCountry(const QString&);
195 
196  QTreeWidget* entityList();
197 
198  static DtSimulationObjectEditorList* create(QWidget* parent = NULL);
199  void setRightClickEnabled(bool b);
200  bool rightClickEnabled() const;
201 
202  virtual QStringList selectedNames() const;
203  virtual void selectNames(const QStringList&);
204 
205  QTreeWidgetItem* currentlyDisplaying() const;
206 
209  virtual void setFilterOnForces(const DtRwForces& forces);
210  const DtRwForces& filterOnForces() const;
211 
212  virtual void changeModel(DtModelSetEntry* oldModel, DtModelSetEntry* newModel);
213 
214  virtual bool selectModel(DtModelSetEntry* m, bool clear = true);
215 
216  virtual bool checkSMSValid(QTreeWidgetItem*) const;
217 
218  virtual QString selectedUsedByCountry() const;
219  virtual QString selectedPath() const;
220 
221  virtual makVrf::DtTreeWidget* createEntitiesList(QWidget* p);
222  virtual DtSimulationObjectEditorHistory* createHistoryBar(QWidget* p);
223 
225  virtual void setShowHistory(bool);
226  bool showingHistory() const;
227 
228  virtual DtObjectType stringToType(const QString&) const;
229 
231  virtual void hierarchyChanged(const DtUiElementEvent& e);
232  virtual void hierarchyChanged(const DtObjectType& obj);
233 
234  const QList<QVariant>& allForces() const;
235 
237  virtual void disableItemsThatHaveThisAsAChild(const DtObjectType&);
238  virtual void enableAllItems();
239 
241  virtual bool itemContains(const DtVrfSubObjectParameterList&, const DtObjectType&) const;
242  virtual void addObjectToHierarchy(const DtObjectType&, QTreeWidgetItem*, int index = -1);
243 
244  bool executingFilter() const;
245  virtual QSize sizeHint() const;
246  virtual QSize minimumSizeHint() const;
247 
248 public:
249  virtual void removeFromHierarchy();
250  virtual void moveUp();
251  virtual void moveDown();
252  virtual void replaceInHierarchy();
253  virtual void addNewSubordinate();
254  virtual void addNewSubordinateFromExisting();
255  virtual void addToHierarchy();
256  virtual void addSubordinatesFromPalette();
257  virtual void opdEntryAdded(DtModelSetEntry*, bool select = false);
258 
259 public slots:
260  virtual void fillInList();
261  virtual void deleteExisting();
262  virtual void revertExisting();
263  virtual void executeFilter();
264  virtual void redisplayListIcons();
265  virtual void executeTextFilter();
266  virtual void selectionChanged();
267 
268 protected slots:
269  virtual void resetTextFilter();
270  virtual void exitAddSubordinatesFromPalette();
271  virtual void itemRightClicked(QTreeWidgetItem*, QMouseEvent*);
272  virtual void itemExpanded(QTreeWidgetItem*);
273  virtual void addObjectToHierarchy(const DtObjectType&);
274 
275 protected:
276  virtual void moveInHierarchy(int iFrom, int iTo, QTreeWidgetItem* parent);
277  virtual void replaceObjectInHierarchy(const DtObjectType& t, QTreeWidgetItem* toReplace);
278 
279  virtual void loadSubordinatesFor(QTreeWidgetItem*, const DtVrfSubObjectParameterList&);
280  virtual void loadSimulationObjectGroup(QTreeWidgetItem* parent, DtSimulationObjectGroupModelSetEntry*);
281 
282  virtual void attachItemsToParent(QTreeWidgetItem* parent, const std::vector<DtModelSetEntry*>& toLoad);
283 
284  virtual void revertChanged(const makVrf::DtEntityMapperKey&);
285  virtual void revertChanged(DtModelSetEntry*);
286  virtual void addModelEntry(DtModelSetEntry*);
287  virtual DtEntityPaletteFilter* createFilter();
288  virtual DtEntityPaletteItem* createPaletteItem();
289  virtual DtEntityPaletteItem* createPaletteItem(DtModelSetEntry*);
290  virtual void createForcesList();
291 
292  virtual void disableInvalidItems();
293 
294  virtual void createTreeWidgetItemsFor(const std::vector<DtModelSetEntry*>&, QVector<QTreeWidgetItem*>& items);
295  virtual void slot_entityEntryAboutToBeRemoved(DtSimulationModelSetLoader::EntityData*);
296  virtual void slot_entityEntryAdded(DtSimulationModelSetLoader::EntityData*);
297  virtual void hideAllObjectsByObjectType(QTreeWidgetItem*, DtSimulationModelSetLoader::EntityData*);
298  virtual bool showAllObjectsByObjectType(QTreeWidgetItem*, DtSimulationModelSetLoader::EntityData*);
299 
300 public:
301  boost::signal<void ()> signal_itemSelectionChanged;
302  boost::signal<void ()> signal_itemStatusChanged;
303  boost::signal<void (const QVector<QTreeWidgetItem*>&)> signal_itemsAdded;
304 
305 public:
319  QGridLayout* myControlsLayout;
320  QWidget* myTopLine;
321 
325 
326 protected:
333 
335 };
336 
338 {
339 public:
342 
343  void setBlockSelectionByKeypad(bool b)
344  {
345  myBlockSelectionByKeypad = b;
346  }
347 
348  bool blockSelectionByKeypad() const
349  {
350  return myBlockSelectionByKeypad;
351  }
352 
353  virtual void keyPressEvent(QKeyEvent*);
354  virtual void focusOutEvent(QFocusEvent* e);
355 
356 protected:
357 
358  virtual QSize sizeHint() const;
359  virtual QSize minimumSizeHint() const;
360 
361  virtual QMimeData* mimeData(const QList<QTreeWidgetItem*> list) const;
362  virtual QStringList mimeTypes() const;
363  virtual void dragEnterEvent(QDragEnterEvent *d);
364  virtual void dragMoveEvent(QDragMoveEvent *d);
365  virtual void dropEvent(QDropEvent* d);
366 
367 protected:
369 };
370 
372 {
374 }
375 
377 {
378  return myRightClickEnabled;
379 }
380 
382 {
383  return (myEntities && (myEntities->selectedItems().count() != 0));
384 }
385 
387 {
388  return myEntities;
389 }
390 
392 {
393  return myFilterOnForces;
394 }
395 
397 {
398  return myForces;
399 }
400 
402 {
403  return myCurrentlyDisplaying;
404 }
405 
407 {
408  return myExecutingFilter;
409 }
410 
413 {
414 public:
417 
420 
423 
425  static void registerInstance(makVrv::DtDe&, DtSimulationObjectEditorListCreator*);
426 
428  virtual DtSimulationObjectEditorList* create(QWidget* parent);
429 
430 protected:
432 };

Document ID: Generated on Thu Apr 12 03:15:37 EDT 2018 from SVN revision 187986
Copyright © 2005-2018 VT MÄK. All Rights Reserved (www.mak.com)