CEDRIC  Revision_backup-2009-02
EventMultiViewer.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 EVENTMULTIVIEWER_H
10 #define EVENTMULTIVIEWER_H
11 
12 #include <QWidget>
13 #include <QList>
14 class QAction;
15 class QComboBox;
16 class QDoubleSpinBox;
17 class QVBoxLayout;
18 class QToolBar;
19 
20 #include <osg/Node>
21 #include <osg/ref_ptr>
22 
23 #include <vector>
24 
25 #include "config.h"
26 #include "gl2ps.h"
27 #include "MyCameraWidget.h"
28 class EventViewerWidget;
29 class PhastScene;
30 class Selectable;
31 
32 
39 {
40 public:
41  void add ( EventViewerWidget* viewer );
42  void remove( EventViewerWidget* viewer );
43  void clear();
44  void update();
45 protected:
46  std::vector<EventViewerWidget*> m_linkGroup;
47 };
48 
54 class EventMultiViewer : public QWidget
55 {
56  Q_OBJECT
57 
58 public:
64  enum ExportFormats { PS=GL2PS_PS, EPS=GL2PS_EPS, PDF=GL2PS_PDF, SVG=GL2PS_SVG };
65 
67 
68  //~ /// Soon to be obsolete function, replaced by own PhastScene class which sends change() signals
69  //~ //void setScenegraph( osg::Node* node );
70  //~ private:
71  //~ osg::ref_ptr<osg::Node> _scenegraph;
72 
73  void setPhastScene( PhastScene* phastScene );
74 
75 
76 signals:
77  void positionChanged( float x, float y, float z );
78 
79 public:
81  QToolBar* globalActionsToolbar() { return globalToolBar; }
83  QToolBar* localActionsToolbar() { return localToolBar; }
84 
85 public slots:
86  void homeViewers();
87 
88  void triggerRedraw();
89 
90  void exportActiveViewerTo( int exportFormat );
91 
92  QAction* layoutAction( int layout );
93 
95  void setActiveParticle( int index );
96 
97 protected slots:
98  void link( bool b );
99  void lock( bool b );
100 
101  void setLayout( int layout );
102  void setLayout( QAction* layoutAction );
103 
104  void setMouseMode( int mouseMode );
105  void setMouseMode( QAction* mouseModeAction );
106 
107  void setRulerVisible( bool visible );
108 
109  void setLocalActionsEnabled( bool enable );
110 
111  void setActiveViewer( EventViewerWidget* viewer );
112 
113  void changeProjection( int proj );
114 
115  void requestView( Selectable* selectable );
116 
117 protected:
118  void createActions();
119  void createWidgets();
120  void createToolBars();
121 
122  QWidget* createViewerMatrix();
123  QWidget* createClusterVisPerspective();
124  QWidget* createTrackDetVisPerspective();
125 
126  void connectViewers();
127  void disconnectViewers();
128 
129 private:
130  QToolBar* localToolBar;
131  QToolBar* globalToolBar;
132 
133  // global actions
134  QAction* zoomAct;
135  QAction* rotateAct;
136  QAction* selectAct;
137  QAction* rulerAct;
138  QList<QAction*> layoutActs;
139 
140  // local actions
141  QComboBox* projCombo;
142  QDoubleSpinBox* alphaSpinBox;
143  QAction* viewSideAct;
144  QAction* viewTopAct;
145  QAction* viewFrontAct;
146  QAction* fitAct;
147  QAction* linkAct;
148  QAction* lockAct;
149 
150 #ifdef DEBUG
151  // for debugging purposes
152  QAction* contUpdateAct;
153 #endif
154 
155  QWidget* contentWidget;
156  QVBoxLayout* contentLayout;
157  QList<EventViewerWidget*> viewerWidgets;
158  EventViewerWidget* activeViewer;
159 
160  int m_layout;
161 
162  LinkedViewers m_linkedViewers;
163 
164  PhastScene* m_phastScene;
165 };
166 
167 #endif
ExportFormats
Definition: EventMultiViewer.h:64
void lock(bool b)
Definition: EventMultiViewer.cpp:515
QWidget * createTrackDetVisPerspective()
Definition: EventMultiViewer.cpp:795
EventMultiViewer()
Definition: EventMultiViewer.cpp:92
void setMouseMode(int mouseMode)
Definition: EventMultiViewer.cpp:383
void link(bool b)
Definition: EventMultiViewer.cpp:499
Base class for a cedric "Viewer" i.e. a manipulable camera onto a scenegraph.
Definition: EventViewerWidget.h:51
Definition: Selectable.h:15
Definition: EventMultiViewer.h:64
Layouts
Definition: EventMultiViewer.h:59
Definition: EventMultiViewer.h:62
void clear()
Definition: EventMultiViewer.cpp:68
Trackball rotation on left mouse button.
Definition: MyCameraWidget.h:33
Picking/Selection on left mouse button.
Definition: MyCameraWidget.h:35
QToolBar * localActionsToolbar()
Toolbar containing local per-viewer actions (like "Projection mode", "Link")
Definition: EventMultiViewer.h:83
Definition: EventMultiViewer.h:64
Definition: EventMultiViewer.h:61
void setActiveParticle(int index)
This is used to forward a particle change to any FilterVis* viewer who needs it.
Definition: EventMultiViewer.cpp:182
Definition: EventMultiViewer.h:59
Definition: EventMultiViewer.h:60
void disconnectViewers()
Definition: EventMultiViewer.cpp:361
void changeProjection(int proj)
Definition: EventMultiViewer.cpp:521
QWidget * createViewerMatrix()
Definition: EventMultiViewer.cpp:656
Combine a set of EventViewerWidget's to a 'perspective' (see enum Layouts) and provide user-interface...
Definition: EventMultiViewer.h:54
void requestView(Selectable *selectable)
Definition: EventMultiViewer.cpp:216
Definition: EventMultiViewer.h:59
void exportActiveViewerTo(int exportFormat)
Definition: EventMultiViewer.cpp:119
QWidget * createClusterVisPerspective()
Definition: EventMultiViewer.cpp:739
void createWidgets()
Definition: EventMultiViewer.cpp:613
void homeViewers()
Definition: EventMultiViewer.cpp:348
QAction * layoutAction(int layout)
Definition: EventMultiViewer.cpp:531
void update()
Definition: EventMultiViewer.cpp:73
Definition: EventMultiViewer.h:59
void setRulerVisible(bool visible)
Definition: EventMultiViewer.cpp:400
void setActiveViewer(EventViewerWidget *viewer)
Definition: EventMultiViewer.cpp:435
void connectViewers()
Definition: EventMultiViewer.cpp:371
Rubberband zoom on left mouse button.
Definition: MyCameraWidget.h:34
Definition: EventMultiViewer.h:59
QToolBar * globalActionsToolbar()
Toolbar containing global actions (like "Zoom", "Rotate", "Select" and "Ruler")
Definition: EventMultiViewer.h:81
void setLocalActionsEnabled(bool enable)
Definition: EventMultiViewer.cpp:416
void setLayout(int layout)
Definition: EventMultiViewer.cpp:255
Definition: EventMultiViewer.h:59
void createToolBars()
Definition: EventMultiViewer.cpp:632
MouseMode
Definition: EventMultiViewer.h:61
void positionChanged(float x, float y, float z)
Definition: EventMultiViewer.h:63
Definition: EventMultiViewer.h:64
void setPhastScene(PhastScene *phastScene)
Definition: EventMultiViewer.cpp:192
Definition: EventMultiViewer.h:64
Scenegraph holding static and dynamic Phast geometry.
Definition: PhastScene.h:32
Manage a set of 'linked' viewers i.e. viewers on which camera transformation acts simultaneous (helpe...
Definition: EventMultiViewer.h:38
void createActions()
Definition: EventMultiViewer.cpp:538
void triggerRedraw()
Definition: EventMultiViewer.cpp:408
Definition: EventMultiViewer.h:59
void add(EventViewerWidget *viewer)
Definition: EventMultiViewer.cpp:32
std::vector< EventViewerWidget * > m_linkGroup
Definition: EventMultiViewer.h:46