CEDRIC  Revision_backup-2009-02
SetupTreeWidget.h
Go to the documentation of this file.
1 /******************************************************************************
2  *
3  * Copyright (C) 2008 Boris Iven, Max Hermann
4  *
5  * This file is part of the "CEDRIC Event Display" application.
6  *
7  *****************************************************************************/
8 
9 #ifndef SETUPTREEWIDGET_H
10 #define SETUPTREEWIDGET_H
11 
12 #include <QtGui/QTreeWidget>
13 #include <QDomDocument>
14 #include <osg/Node>
15 #include <vector>
16 
17 class QAction;
18 class PhastNode;
19 
25 class SetupTreeWidget : public QTreeWidget
26 {
27  Q_OBJECT
28 
29 public:
30  enum ItemTypes
31  {
32  //bit flags for QWidgetItem (must be >= 1000)
33  ROOT_NODE = 1024,
34  INNER_NODE = 2048,
35  LEAF_NODE = 4096,
36  DETECTOR = 8192,
37  RICH = 16384,
38  CALORIMETER = 32768,
39  MAGNET = 65536,
40  TARGET = 131072
41  };
42 
43  enum ItemDataRoles //user roles must be >= 32
44  {
48  };
49 
51  {
52  COL_NAME = 0,
56  COL_COLOR = 2,
58  };
59 
60  enum ColorType
61  {
62  UNKNOWN = 0,
63  MIXED = 1,
64  RGB = 2
65  };
66  SetupTreeWidget( QWidget* parent=0 );
67 
68  //QDomDocument* getDomDocument() { loadConfiguration(); return domDocument; }
69  QDomDocument* getDomDocument() { return domDocument; }
70 
71 signals:
72 
73  void doReload();
74 
76  void updateNeeded();
77 
78 public slots:
79 
80  bool loadConfiguration();
81  void saveConfiguration();
82  //~ void manageConfigurations(); // OBSOLETE
83  void addGroup();
84  void deleteGroup();
85  void updateContextMenu(QTreeWidgetItem* current, int col);
86  void updateItem(QTreeWidgetItem* item, int col);
87  void changeSetupAlpha(int alpha);
88 
89  void highlight(int uid);
92  {
93  for( int i=0; i < columnCount(); ++i )
94  resizeColumnToContents( i );
95  }
96 
97 public:
98 
99 
100  void setInitialBuild(bool state = false);
101  void setOsgRootNode(osg::ref_ptr<osg::Node> rootNode){setupOsgRootNode = rootNode;}
102  bool loadConfiguration(QString filename);
103  void createUIDMapEntry(int uid, QTreeWidgetItem* item);
104 
105  //void select(QList<int> uids);
106 
107 protected:
108  void createActions();
109  void createContextMenu();
110 
111  //Drag & Drop
112  //void mouseMoveEvent(QMouseEvent* event);
113  void mousePressEvent(QMouseEvent* event);
114  void startDrag(Qt::DropActions supportedActions);
115  //void dragEnterEvent(QDragEnterEvent* event);
116  //void dragMoveEvent(QDragMoveEvent *event);
117  void dropEvent(QDropEvent* event);
118 
119 private slots:
121  void highlight(QTreeWidgetItem* item, QTreeWidgetItem* unHighlightMe);
122 
123 
124 private:
125  QAction* loadAction;
126  QAction* saveAction;
127  QAction* manageAction;
128  QAction* newGroupAction;
129  QAction* deleteGroupAction;
130  QDomDocument* domDocument;
131 
132  QMap<int, QTreeWidgetItem*> UID2Item;
133 
134  osg::ref_ptr<osg::Node> setupOsgRootNode;
135 
136  //Drag & Drop
137  QTreeWidgetItem* draggedItem;
138  QTreeWidgetItem* oldParentItem;
139 
140  struct DragDropSet
141  {
142  QTreeWidgetItem* draggedItem;
143  QTreeWidgetItem* oldParentItem;
144  osg::Node::ParentList osgParentsBeforeDrag;
145  };
146 
147  QList<DragDropSet> dragDropList;
148 
149  osg::Node::ParentList osgParentsBeforeDrag;
150  QDomElement domParentBeforeDrag;
151 
152 
153  void changeNodeColor(PhastNode* osgNode, QTreeWidgetItem* item); //remove ?
154  void changeNodeAlpha(osg::ref_ptr<osg::Node> osgNode, int alpha); //remove ?
155  bool initialBuild; //to prevent updateItem to be called during initial tree building
156  bool traversingUpwards;
157 
158  bool updateMultiStateItems(QTreeWidgetItem* root, bool upwardsOnly = false);
159 
160 
161  //xml generation
162  void createDomTree(QDomElement rootElement, QTreeWidgetItem* rootItem);
163 };
164 
165 #endif
void createContextMenu()
Definition: SetupTreeWidget.cpp:115
Definition: SetupTreeWidget.h:57
The Phast Setup in a QTreeWidget, relates DOM (XML) and OSG (graphical) representation.
Definition: SetupTreeWidget.h:25
Definition: SetupTreeWidget.h:45
void highlight(int uid)
Definition: SetupTreeWidget.cpp:1505
ItemTypes
Definition: SetupTreeWidget.h:30
Definition: SetupTreeWidget.h:36
void createActions()
Definition: SetupTreeWidget.cpp:97
Definition: SetupTreeWidget.h:63
ColorType
Definition: SetupTreeWidget.h:60
void deleteGroup()
Definition: SetupTreeWidget.cpp:461
void saveConfiguration()
Definition: SetupTreeWidget.cpp:523
Definition: SetupTreeWidget.h:62
Definition: SetupTreeWidget.h:55
void addGroup()
Definition: SetupTreeWidget.cpp:383
QDomDocument * getDomDocument()
Definition: SetupTreeWidget.h:69
SetupTreeWidget(QWidget *parent=0)
Definition: SetupTreeWidget.cpp:36
Definition: SetupTreeWidget.h:64
Definition: SetupTreeWidget.h:46
void updateContextMenu(QTreeWidgetItem *current, int col)
Definition: SetupTreeWidget.cpp:343
void changeSetupAlpha(int alpha)
Definition: SetupTreeWidget.cpp:300
void setOsgRootNode(osg::ref_ptr< osg::Node > rootNode)
Definition: SetupTreeWidget.h:101
Graphical representation of Phast objects (e.g. PaDetector, PaTrack, ...) as OpenSceneGraph node...
Definition: PhastNode.h:32
void setInitialBuild(bool state=false)
Definition: SetupTreeWidget.cpp:126
void mousePressEvent(QMouseEvent *event)
Definition: SetupTreeWidget.cpp:930
bool loadConfiguration()
Definition: SetupTreeWidget.cpp:856
Definition: SetupTreeWidget.h:35
ColumnType
Definition: SetupTreeWidget.h:50
void createUIDMapEntry(int uid, QTreeWidgetItem *item)
Definition: SetupTreeWidget.cpp:1517
void autoResizeColumns()
Resize columns to fit content (just calls QTreeWidget::resizeColumnToContents() for every column) ...
Definition: SetupTreeWidget.h:91
Definition: SetupTreeWidget.h:39
Definition: SetupTreeWidget.h:56
void updateNeeded()
views must be updated (e.g. due to color/alpha change)
void startDrag(Qt::DropActions supportedActions)
Definition: SetupTreeWidget.cpp:1198
Definition: SetupTreeWidget.h:52
Definition: SetupTreeWidget.h:33
Definition: SetupTreeWidget.h:47
Definition: SetupTreeWidget.h:34
ItemDataRoles
Definition: SetupTreeWidget.h:43
Definition: SetupTreeWidget.h:40
Definition: SetupTreeWidget.h:54
Definition: SetupTreeWidget.h:38
Definition: SetupTreeWidget.h:53
void updateItem(QTreeWidgetItem *item, int col)
Definition: SetupTreeWidget.cpp:131
Definition: SetupTreeWidget.h:37
void dropEvent(QDropEvent *event)
Definition: SetupTreeWidget.cpp:1294