track labels
[mussa.git] / qui / PathWidget.cpp
1 #include <iostream>
2
3 #include <QLabel>
4 #include <QScrollBar>
5 #include <QSpacerItem>
6 #include <QSplitter>
7 #include <QVBoxLayout>
8 #include <QWidget>
9
10 #include "qui/PathScene.hpp"
11 #include "qui/PathWidget.hpp"
12 #include "qui/ScrollableScene.hpp"
13 #include "qui/SequenceDescription.hpp"
14 #include "alg/glsequence.hpp"
15
16 #include <math.h>
17 using namespace std;
18
19 PathWidget::PathWidget(QWidget *parent)
20   : QSplitter(parent),
21     scrollable_scene(parent)
22 {
23   setOrientation(Qt::Horizontal);
24
25   addWidget(&left_sidebar);
26   addWidget(&scrollable_scene);
27   addWidget(&right_sidebar);
28
29   connect(&scrollable_scene.scene(), SIGNAL(viewportChanged()),
30           this, SLOT(updatePosition()));
31 }
32
33 void PathWidget::updateTracks()
34 {
35   left_sidebar.updateSidebar(scrollable_scene.scene());
36   right_sidebar.updateSidebar(scrollable_scene.scene());
37   updatePosition();
38 }
39
40 void PathWidget::updatePosition()
41 {
42   const PathScene& scene = scrollable_scene.scene();
43   const vector<GlSequence> &tracks = scene.tracks();
44   vector<SequenceDescription *> left = left_sidebar.descriptions;
45   vector<SequenceDescription *> right = right_sidebar.descriptions;
46   for(size_t i = 0; i != tracks.size() and i != right.size(); ++i)
47   {
48     left[i]->setPosition(tracks[i].leftbase(scene.viewportLeft()));
49     right[i]->setPosition(tracks[i].rightbase(scene.viewportRight()));
50   }
51 }