33#include < QEvent>
44#include < QMouseEvent>
55#include < QWindow>
6+ #include < QVBoxLayout>
67
78#include < QMainWindow>
89#include < algorithm>
1112
1213
1314OpenGLRendererWidget::OpenGLRendererWidget () :
14- QOpenGLWidget()
15+ QOpenGLWidget(),
16+ _tracker(nullptr ),
17+ msgLabel(new QLabel(this ))
1518{
19+ // UI
20+ QVBoxLayout* layout = new QVBoxLayout (this );
21+ msgLabel->setAlignment (Qt::AlignBottom);
22+ msgLabel->setStyleSheet (QString::fromUtf8 (" color: rgb(235, 235, 235);" ));
23+ layout->addWidget (msgLabel);
24+ setLayout (layout);
25+
1626
1727 setAcceptDrops (true );
1828 setFocusPolicy (Qt::FocusPolicy::ClickFocus);
@@ -45,7 +55,7 @@ OpenGLRendererWidget::OpenGLRendererWidget() :
4555
4656 #endif
4757
48- refWidget = new ReferenceSetupWidget (this , &_tracker );
58+ refWidget = new ReferenceSetupWidget (this );
4959
5060 pedal = new PedalManager ();
5161
@@ -83,10 +93,11 @@ OpenGLRendererWidget::OpenGLRendererWidget() :
8393 }
8494 }
8595 });
96+
97+ }
8698
87- connectToTracker ();
88-
89-
99+ OpenGLRendererWidget::~OpenGLRendererWidget () {
100+ delete _tracker;
90101}
91102
92103// void OpenGLRendererWidget::setTexels(int width, int height, int depth, std::vector<float>& texels)
@@ -117,10 +128,20 @@ void OpenGLRendererWidget::setColormap(const QImage& colormap)
117128}
118129
119130
120- void OpenGLRendererWidget::connectToTracker ()
131+ void OpenGLRendererWidget::connectToTracker (PSTracker* tracker )
121132{
122- _tracker.Connect ();
123- setFocus ();
133+ if (tracker == nullptr ) _tracker = new PSTracker ();
134+ else _tracker = tracker;
135+
136+ try {
137+ _tracker->initPST ();
138+ _tracker->Connect ();
139+ }
140+ catch (const char * err) {
141+ msgLabel->setText (err);
142+ }
143+
144+ emit trackerAvailable (_tracker);
124145}
125146
126147void OpenGLRendererWidget::setEyeOffset (float eyeOffset)
@@ -199,8 +220,8 @@ void OpenGLRendererWidget::paintGL()
199220 _volumeRenderer.render (defaultFramebufferObject (), getCamPos (), aspect, true , _controls->getControlMatrix ());
200221#else
201222 QMatrix4x4 pose;
202- if (_tracker. GetTargetMatrix (pose)) {
203- _volumeRenderer.render (defaultFramebufferObject (), getCamPos (), aspect, _tracker. poseIsLive (), pose);
223+ if (_tracker != nullptr && _tracker-> GetTargetMatrix (pose)) {
224+ _volumeRenderer.render (defaultFramebufferObject (), getCamPos (), aspect, _tracker-> poseIsLive (), pose);
204225 }
205226#endif
206227}
@@ -211,7 +232,7 @@ void OpenGLRendererWidget::cleanup()
211232#ifdef CONTROLS
212233 if (_controls != nullptr ) delete _controls;
213234#endif
214-
235+ delete _tracker;
215236
216237 makeCurrent ();
217238}
0 commit comments