+
+#include <QVBoxLayout>
+
+#include "qui/ScrollableScene.hpp"
+
+ScrollableScene::ScrollableScene(QWidget *parent) :
+ QWidget(parent),
+ viewportBar(Qt::Horizontal)
+{
+ // construct central opengl widget
+ QVBoxLayout *layout = new QVBoxLayout;
+
+ layout->addWidget(&path_scene);
+ layout->addWidget(&viewportBar);
+
+ connect(&viewportBar, SIGNAL(valueChanged(int)),
+ this, SLOT(setViewportCenter(int)));
+ connect(&path_scene, SIGNAL(viewportChanged()),
+ this, SLOT(updateScrollBar()));
+
+ setLayout(layout);
+
+ // sets range & scale
+ updateScrollBar();
+}
+
+void ScrollableScene::updateScrollBar()
+{
+ float max_right = path_scene.right();
+ float max_left = path_scene.left();
+ float max_range = max_right - max_left;
+ float cur_left = path_scene.viewportLeft();
+ float cur_right = path_scene.viewportRight();
+ float cur_center = ((cur_right-cur_left)/2)+cur_left;
+ // set range to min
+ thumb = (int)cur_center;
+ viewportBar.setRange((int)max_left, (int)max_right);
+ viewportBar.setValue(thumb);
+}
+
+void ScrollableScene::setViewportCenter(int x)
+{
+ if (x != thumb) {
+ thumb = x;
+ path_scene.setViewportCenter(thumb);
+ }
+}
+