Index: trunk/tools/FlairGCS/CMakeLists.txt
===================================================================
--- trunk/tools/FlairGCS/CMakeLists.txt	(revision 16)
+++ trunk/tools/FlairGCS/CMakeLists.txt	(revision 17)
@@ -8,7 +8,4 @@
 	src/main.cpp
 	src/UdtSocket.cpp
-	src/Scope.cpp
-	src/ScopeFixedStep.cpp
-	src/ScopeVariableStep.cpp
 	src/DataPlot1D.cpp
 	src/DataPlot2D.cpp
@@ -16,5 +13,4 @@
 	src/Picture.cpp
 	src/DataRemote.cpp
-	src/Scrollbar.cpp
 	src/file_ui.cpp
 	src/FormLayout.cpp
@@ -41,8 +37,6 @@
 	src/UdtSocket.h
 	src/RangeFinderPlot.h
-	src/Scope.h
 	src/DataPlot2D.h
 	src/Picture.h
-	src/Scrollbar.h
 	src/Manager.h
 	src/file_ui.h
@@ -80,4 +74,5 @@
 	${CMAKE_SYSROOT}/usr/include/udt
 	${CMAKE_SYSROOT}/usr/include/qwt
+	${CMAKE_SYSROOT}/usr/include/QwtDataViewer
 	${CMAKE_SYSROOT}/usr/include/qt4/QtMobility
 	${CMAKE_SYSROOT}/usr/include/qt4/QtLocation
@@ -89,5 +84,5 @@
 
 ADD_EXECUTABLE(${PROJECT_NAME} ${PROJECT_SOURCE_FILES} ${MOC_SOURCES} ${RCC_SOURCES})
-TARGET_LINK_LIBRARIES(${PROJECT_NAME} ${QT_LIBRARIES} qwt udt QtLocation FileLib z)
+TARGET_LINK_LIBRARIES(${PROJECT_NAME} ${QT_LIBRARIES} qwt QwtDataViewer udt QtLocation FileLib z)
 
 INSTALL(
Index: trunk/tools/FlairGCS/src/DataPlot1D.h
===================================================================
--- trunk/tools/FlairGCS/src/DataPlot1D.h	(revision 16)
+++ trunk/tools/FlairGCS/src/DataPlot1D.h	(revision 17)
@@ -6,5 +6,5 @@
 #define DATAPLOT1D_H_INCLUDED
 
-#include "ScopeFixedStep.h"
+#include <ScopeFixedStep.h>
 #include "DataRemote.h"
 
Index: trunk/tools/FlairGCS/src/Scope.cpp
===================================================================
--- trunk/tools/FlairGCS/src/Scope.cpp	(revision 16)
+++ 	(revision )
@@ -1,303 +1,0 @@
-// %flair:license{
-// This file is part of the Flair framework distributed under the
-// CECILL-C License, Version 1.0.
-// %flair:license}
-#include "Scope.h"
-#include "Scrollbar.h"
-#include <qwt_plot_curve.h>
-#include <qwt_plot_grid.h>
-#include <qwt_plot_magnifier.h>
-#include <qwt_plot_canvas.h>
-#include <qwt_scale_widget.h>
-#include <qwt_legend_label.h>
-#include <qwt_legend.h>
-#include <qwt_plot_panner.h>
-#include <QMouseEvent>
-#include <QMenu>
-#include <QTimer>
-#include <QTime>
-#include <QApplication>
-
-#define WHEEL_DIVIDOR 30
-
-Scope::Scope(QString title, float ymin, float ymax, float view_size_s,
-             unsigned int refresh_rate_ms, unsigned int history_size)
-    : QwtPlot() {
-  this->ymin = ymin;
-  this->ymax = ymax;
-  this->history_size = history_size;
-  this->view_size_s = view_size_s;
-  orig_view_size_s = view_size_s;
-
-  // scroll bar
-  scrollbar = new ScrollBar(Qt::Horizontal, canvas());
-  connect(scrollbar, SIGNAL(valueChanged(Qt::Orientation, float, float)), this,
-          SLOT(scrollBarMoved(Qt::Orientation, float, float)));
-  scrolling = true;
-
-  // minimum size; sinon widget trop grand
-  setMinimumHeight(10);
-  setMinimumWidth(1);
-
-  alignScales(); // is it necessary?
-
-  //  Initialize data
-  elapsed_time_s = 0;
-
-  // Assign a title
-  setTitle(title);
-
-  // Axis
-  setAxisTitle(QwtPlot::xBottom, "Time (s)");
-  setAxisScale(QwtPlot::xBottom, 0, view_size_s);
-
-  setAxisTitle(QwtPlot::yLeft, "Values");
-  setAxisScale(QwtPlot::yLeft, ymin, ymax);
-
-  // grid
-  QwtPlotGrid *grid = new QwtPlotGrid;
-  grid->setPen(QPen(Qt::black, 0, Qt::DotLine));
-  grid->attach(this);
-
-  // zoomer
-  QwtPlotMagnifier *zoomer = new QwtPlotMagnifier(canvas());
-  zoomer->setWheelModifiers(Qt::ControlModifier);
-  zoomer->setMouseButton(Qt::NoButton);
-  zoomer->setAxisEnabled(xBottom, 0);
-
-  // scroller
-  QwtPlotPanner *scroller = new QwtPlotPanner(canvas());
-  scroller->setAxisEnabled(xBottom, 0);
-
-  // legend
-  QwtLegend *new_legend = new QwtLegend();
-  new_legend->setDefaultItemMode(QwtLegendData::Checkable);
-  insertLegend(new_legend, QwtPlot::BottomLegend);
-
-  connect(new_legend, SIGNAL(checked(const QVariant &, bool, int)),
-          SLOT(legendChecked(const QVariant &, bool)));
-
-  QTimer *timer = new QTimer(this);
-  connect(timer, SIGNAL(timeout()), this, SLOT(replot()));
-  timer->start(refresh_rate_ms);
-}
-
-Scope::~Scope() {
-  for (int i = 0; i < curves.count(); i++) {
-    free(curves.at(i)->data_x);
-    free(curves.at(i)->data_y);
-    delete curves.at(i)->plot;
-    free(curves.at(i));
-  }
-}
-
-void Scope::resetXView(void) {
-  // setAxisScale(QwtPlot::xBottom,0, orig_view_size_s);
-  changeViewSize(orig_view_size_s);
-}
-
-void Scope::resetYView(void) { setAxisScale(QwtPlot::yLeft, ymin, ymax); }
-
-bool Scope::eventFilter(QObject *o, QEvent *e) {
-  switch (e->type()) {
-  case QEvent::Resize: {
-    const int fw = ((QwtPlotCanvas *)canvas())->frameWidth();
-
-    QRect rect;
-    rect.setSize(((QResizeEvent *)e)->size());
-    rect.setRect(rect.x() + fw, rect.y() + fw, rect.width() - 2 * fw,
-                 rect.height() - 2 * fw);
-
-    scrollbar->setGeometry(0, 0, rect.width(), 10);
-    return true;
-  }
-  case QEvent::Wheel: {
-    // ctrl+wheel is already handled for y zoom
-    if (!(QApplication::keyboardModifiers() & Qt::ControlModifier)) {
-      QWheelEvent *wheelevent = static_cast<QWheelEvent *>(e);
-      if (view_size_s + wheelevent->delta() / WHEEL_DIVIDOR > 0)
-        changeViewSize(view_size_s + wheelevent->delta() / WHEEL_DIVIDOR);
-    }
-    return true;
-  }
-  default:
-    break;
-  }
-  return QwtPlot::eventFilter(o, e);
-}
-
-void Scope::changeViewSize(float new_view_size_s) {
-  view_size_s = new_view_size_s;
-
-  if (scrolling == false) {
-    // 4 cas: on utilise le temps au milieu de la vue actuelle
-
-    // le temps total est plus petit que le view_size_s, on affiche tout:
-    if (elapsed_time_s < view_size_s) {
-      scrolling = true;
-    } else {
-      double min = (min_scroll + max_scroll) / 2 - view_size_s / 2;
-      double max = (min_scroll + max_scroll) / 2 + view_size_s / 2;
-      // on va du debut jusqu'a view size
-      if (min < 0) {
-        min = 0;
-        max = view_size_s;
-      }
-      // on va de fin-viewsize jusqu'a la fin
-      if (max > elapsed_time_s) {
-        min = elapsed_time_s - view_size_s;
-        max = elapsed_time_s;
-      }
-      scrollbar->moveSlider(
-          min, max); // move slider coupe le signal, on fait aussi le scrollbar
-      scrollBarMoved(Qt::Horizontal, min, max);
-    }
-  }
-}
-
-void Scope::legendChecked(const QVariant &itemInfo, bool on) {
-  QwtPlotItem *plotItem = infoToItem(itemInfo);
-  if (plotItem)
-    showCurve(plotItem, on);
-}
-
-void Scope::showCurve(QwtPlotItem *item, bool on) {
-  item->setVisible(on);
-
-  QwtLegend *lgd = qobject_cast<QwtLegend *>(legend());
-
-  QList<QWidget *> legendWidgets = lgd->legendWidgets(itemToInfo(item));
-
-  if (legendWidgets.size() == 1) {
-    QwtLegendLabel *legendLabel =
-        qobject_cast<QwtLegendLabel *>(legendWidgets[0]);
-
-    if (legendLabel)
-      legendLabel->setChecked(on);
-  }
-}
-
-int Scope::addCurve(QPen pen, QString legend) {
-  Curve *curve = (Curve *)malloc(sizeof(Curve));
-  curve->data_x = (double *)calloc(history_size, sizeof(double));
-  curve->data_y = (double *)calloc(history_size, sizeof(double));
-  curve->index = 0;
-  curve->min_index = 0;
-  curve->max_index = 0;
-
-  // Insert new curve
-  curve->plot = new QwtPlotCurve(legend);
-  curve->plot->attach(this);
-  curve->plot->setPen(pen);
-  curves.append(curve);
-
-  showCurve(curve->plot, true);
-
-  return curves.count() - 1;
-}
-
-void Scope::updateCurve(Curve *curve) {
-  if (scrolling == true) {
-    curve->plot->setRawSamples(&curve->data_x[curve->min_index],
-                               &curve->data_y[curve->min_index],
-                               curve->max_index - curve->min_index);
-  }
-
-  if (curve->index == history_size) {
-    // printf("a revoir qd on arrive a la fin, il faudrait faire un realloc pour
-    // rien perdre\n");
-    // attention le setrawdata s'attend a ce que l'adresse change pas, ce qui
-    // n'est pas le cas avec lerealloc
-    // il faudra refaire un setrawdata ici
-    curve->index = 0;
-    curve->min_index = 0;
-    scrolling = true;
-  }
-
-  // determine les index pour la visualisation
-  if (scrolling == true) {
-    curve->max_index = curve->index;
-    computeMinIndex(curve, elapsed_time_s - view_size_s);
-  }
-
-  scrollbar->setBase(0, elapsed_time_s);
-  if (scrolling == true) {
-    scrollbar->moveSlider(elapsed_time_s - view_size_s, elapsed_time_s);
-
-    if (elapsed_time_s < view_size_s) {
-      setAxisScale(QwtPlot::xBottom, 0, view_size_s);
-    } else {
-      setAxisScale(QwtPlot::xBottom, elapsed_time_s - view_size_s,
-                   elapsed_time_s);
-    }
-  } else {
-    scrollbar->moveSlider(min_scroll, max_scroll);
-  }
-}
-
-void Scope::alignScales(void) {
-  // The code below shows how to align the scales to
-  // the canvas frame, but is also a good example demonstrating
-  // why the spreaded API needs polishing.
-  /*
-      plot->canvas()->setFrameStyle(QFrame::Box | QFrame::Plain );
-      plot->canvas()->setLineWidth(1);
-  */
-  for (int i = 0; i < QwtPlot::axisCnt; i++) {
-    QwtScaleWidget *scaleWidget = (QwtScaleWidget *)axisWidget(i);
-    if (scaleWidget)
-      scaleWidget->setMargin(0);
-
-    QwtScaleDraw *scaleDraw = (QwtScaleDraw *)axisScaleDraw(i);
-    if (scaleDraw)
-      scaleDraw->enableComponent(QwtAbstractScaleDraw::Backbone, false);
-  }
-}
-
-void Scope::scrollBarMoved(Qt::Orientation o, float min, float max) {
-  min_scroll = min;
-  max_scroll = max;
-
-  if (max == scrollbar->maxBaseValue()) {
-    scrolling = true;
-  } else {
-    scrolling = false;
-    setAxisScale(QwtPlot::xBottom, min, max);
-
-    // determine les index pour la visualisation
-    for (int i = 0; i < curves.count(); i++) {
-      computeMinIndex(curves.at(i), min);
-      computeMaxIndex(curves.at(i), max);
-      curves.at(i)->plot->setRawSamples(
-          &curves.at(i)->data_x[curves.at(i)->min_index],
-          &curves.at(i)->data_y[curves.at(i)->min_index],
-          curves.at(i)->max_index - curves.at(i)->min_index);
-    }
-  }
-}
-
-// TODO: faire une dichotomie
-void Scope::computeMinIndex(Curve *curve, float displayed_min_time) {
-  if (curve->data_x[curve->index] > displayed_min_time) {
-    if (curve->data_x[curve->min_index] < displayed_min_time) {
-      while (curve->data_x[curve->min_index] < displayed_min_time &&
-             curve->min_index != curve->index)
-        curve->min_index++;
-    } else {
-      while (curve->data_x[curve->min_index] > displayed_min_time &&
-             curve->min_index != 0)
-        curve->min_index--;
-    }
-  }
-}
-
-void Scope::computeMaxIndex(Curve *curve, float displayed_max_time) {
-  if (curve->data_x[curve->max_index] < displayed_max_time) {
-    while (curve->data_x[curve->max_index] < displayed_max_time &&
-           curve->max_index != curve->index)
-      curve->max_index++;
-  } else {
-    while (curve->data_x[curve->max_index] > displayed_max_time)
-      curve->max_index--;
-  }
-}
Index: trunk/tools/FlairGCS/src/Scope.h
===================================================================
--- trunk/tools/FlairGCS/src/Scope.h	(revision 16)
+++ 	(revision )
@@ -1,61 +1,0 @@
-// %flair:license{
-// This file is part of the Flair framework distributed under the
-// CECILL-C License, Version 1.0.
-// %flair:license}
-#ifndef SCOPE_H_INCLUDED
-#define SCOPE_H_INCLUDED
-
-#include <qwt_plot.h>
-#include <QPen>
-
-class ScrollBar;
-class QwtPlotCurve;
-class QwtPlotItem;
-class QMouseEvent;
-
-class Scope : public QwtPlot {
-  Q_OBJECT
-
-public:
-  Scope(QString title, float ymin, float ymax, float view_size_s = 20,
-        unsigned int refresh_rate_ms = 40, unsigned int history_size = 20000);
-  ~Scope();
-  int addCurve(QPen pen, QString legend);
-  void resetXView(void);
-  void resetYView(void);
-
-protected:
-  struct Curve {
-    QwtPlotCurve *plot;
-    double *data_x;
-    double *data_y;
-    unsigned int index;
-    unsigned int min_index;
-    unsigned int max_index;
-  };
-  QList<Curve *> curves;
-  float elapsed_time_s;
-
-  void updateCurve(Curve *curve);
-  bool eventFilter(QObject *, QEvent *);
-
-private:
-  float ymin, ymax;
-  float view_size_s, orig_view_size_s;
-  unsigned int history_size;
-  ScrollBar *scrollbar;
-  bool scrolling;
-  float min_scroll, max_scroll;
-
-  void alignScales(void);
-  void showCurve(QwtPlotItem *item, bool on);
-  void computeMinIndex(Curve *curve, float displayed_min_time);
-  void computeMaxIndex(Curve *curve, float displayed_max_time);
-  void changeViewSize(float new_view_size_s);
-
-private slots:
-  void legendChecked(const QVariant &itemInfo, bool on);
-  void scrollBarMoved(Qt::Orientation o, float min, float max);
-};
-
-#endif // SCOPE_H_INCLUDED
Index: trunk/tools/FlairGCS/src/ScopeFixedStep.cpp
===================================================================
--- trunk/tools/FlairGCS/src/ScopeFixedStep.cpp	(revision 16)
+++ 	(revision )
@@ -1,30 +1,0 @@
-// %flair:license{
-// This file is part of the Flair framework distributed under the
-// CECILL-C License, Version 1.0.
-// %flair:license}
-#include "ScopeFixedStep.h"
-#include "Scrollbar.h"
-#include <qwt_plot_curve.h>
-
-ScopeFixedStep::ScopeFixedStep(QString title, float ymin, float ymax,
-                               float step_s, float view_size_s,
-                               unsigned int refresh_rate_ms,
-                               unsigned int history_size)
-    : Scope(title, ymin, ymax, view_size_s, refresh_rate_ms, history_size) {
-  this->step_s = step_s;
-}
-
-ScopeFixedStep::~ScopeFixedStep() {}
-
-void ScopeFixedStep::plot(double *value) {
-  elapsed_time_s += step_s;
-  for (int i = 0; i < curves.count(); i++) {
-    Curve *curve = curves.at(i);
-
-    curve->data_x[curve->index] = elapsed_time_s;
-    curve->data_y[curve->index] = value[i];
-    curve->index++;
-
-    updateCurve(curve);
-  }
-}
Index: trunk/tools/FlairGCS/src/ScopeFixedStep.h
===================================================================
--- trunk/tools/FlairGCS/src/ScopeFixedStep.h	(revision 16)
+++ 	(revision )
@@ -1,22 +1,0 @@
-// %flair:license{
-// This file is part of the Flair framework distributed under the
-// CECILL-C License, Version 1.0.
-// %flair:license}
-#ifndef SCOPEFIXEDSTEP_H_INCLUDED
-#define SCOPEFIXEDSTEP_H_INCLUDED
-
-#include <Scope.h>
-
-class ScopeFixedStep : public Scope {
-public:
-  ScopeFixedStep(QString title, float ymin, float ymax, float step_s,
-                 float view_size_s = 20, unsigned int refresh_rate_ms = 40,
-                 unsigned int history_size = 20000);
-  ~ScopeFixedStep();
-  void plot(double *value);
-
-protected:
-  float step_s;
-};
-
-#endif // SCOPEFIXEDSTEP_H_INCLUDED
Index: trunk/tools/FlairGCS/src/ScopeVariableStep.cpp
===================================================================
--- trunk/tools/FlairGCS/src/ScopeVariableStep.cpp	(revision 16)
+++ 	(revision )
@@ -1,29 +1,0 @@
-// %flair:license{
-// This file is part of the Flair framework distributed under the
-// CECILL-C License, Version 1.0.
-// %flair:license}
-#include "ScopeVariableStep.h"
-#include "Scrollbar.h"
-#include <QTime>
-#include <qwt_plot_curve.h>
-
-ScopeVariableStep::ScopeVariableStep(QString title, float ymin, float ymax,
-                                     float view_size_s,
-                                     unsigned int refresh_rate_ms,
-                                     unsigned int history_size)
-    : Scope(title, ymin, ymax, view_size_s, refresh_rate_ms, history_size) {}
-
-ScopeVariableStep::~ScopeVariableStep() {}
-
-void ScopeVariableStep::plot(double value, QTime time,
-                             unsigned int curve_index) {
-  static QTime start_time = QTime::currentTime();
-  Curve *curve = curves.at(curve_index);
-
-  elapsed_time_s = start_time.msecsTo(time) / 1000.;
-  curve->data_x[curve->index] = elapsed_time_s;
-  curve->data_y[curve->index] = value;
-  curve->index++;
-
-  updateCurve(curve);
-}
Index: trunk/tools/FlairGCS/src/ScopeVariableStep.h
===================================================================
--- trunk/tools/FlairGCS/src/ScopeVariableStep.h	(revision 16)
+++ 	(revision )
@@ -1,21 +1,0 @@
-// %flair:license{
-// This file is part of the Flair framework distributed under the
-// CECILL-C License, Version 1.0.
-// %flair:license}
-#ifndef SCOPEVARIABLESTEP_H_INCLUDED
-#define SCOPEVARIABLESTEP_H_INCLUDED
-
-#include <Scope.h>
-
-class ScopeVariableStep : public Scope {
-public:
-  ScopeVariableStep(QString title, float ymin, float ymax,
-                    float view_size_s = 20, unsigned int refresh_rate_ms = 40,
-                    unsigned int history_size = 20000);
-  ~ScopeVariableStep();
-  void plot(double value, QTime time, unsigned int curve_index = 0);
-
-private:
-};
-
-#endif // SCOPEVARIABLESTEP_H_INCLUDED
Index: trunk/tools/FlairGCS/src/Scrollbar.cpp
===================================================================
--- trunk/tools/FlairGCS/src/Scrollbar.cpp	(revision 16)
+++ 	(revision )
@@ -1,143 +1,0 @@
-// %flair:license{
-// This file is part of the Flair framework distributed under the
-// CECILL-C License, Version 1.0.
-// %flair:license}
-#include <qstyle.h>
-#include <qstyleoption.h>
-#include "Scrollbar.h"
-
-ScrollBar::ScrollBar(QWidget *parent) : QScrollBar(parent) { init(); }
-
-ScrollBar::ScrollBar(Qt::Orientation o, QWidget *parent)
-    : QScrollBar(o, parent) {
-  init();
-}
-
-ScrollBar::ScrollBar(float minBase, float maxBase, Qt::Orientation o,
-                     QWidget *parent)
-    : QScrollBar(o, parent) {
-  init();
-  setBase(minBase, maxBase);
-  moveSlider(minBase, maxBase);
-}
-
-void ScrollBar::init(void) {
-  d_inverted = orientation() == Qt::Vertical;
-  d_baseTicks = 1000000;
-  d_minBase = 0.0;
-  d_maxBase = 1.0;
-  moveSlider(d_minBase, d_maxBase);
-
-  connect(this, SIGNAL(sliderMoved(int)), SLOT(catchSliderMoved(int)));
-  connect(this, SIGNAL(valueChanged(int)), SLOT(catchValueChanged(int)));
-}
-
-void ScrollBar::setInverted(bool inverted) {
-  if (d_inverted != inverted) {
-    d_inverted = inverted;
-    moveSlider(minSliderValue(), maxSliderValue());
-  }
-}
-
-bool ScrollBar::isInverted(void) const { return d_inverted; }
-
-void ScrollBar::setBase(float min, float max) {
-  if (min != d_minBase || max != d_maxBase) {
-    d_minBase = min;
-    d_maxBase = max;
-
-    moveSlider(minSliderValue(), maxSliderValue());
-  }
-}
-
-void ScrollBar::moveSlider(float min, float max) {
-  const int sliderTicks =
-      qRound((max - min) / (d_maxBase - d_minBase) * d_baseTicks);
-
-  // setRange initiates a valueChanged of the scrollbars
-  // in some situations. So we block
-  // and unblock the signals.
-
-  blockSignals(true);
-
-  setRange(sliderTicks / 2, d_baseTicks - sliderTicks / 2);
-  int steps = sliderTicks / 200;
-  if (steps <= 0)
-    steps = 1;
-
-  setSingleStep(steps);
-  setPageStep(sliderTicks);
-
-  int tick = mapToTick(min + (max - min) / 2);
-  if (isInverted())
-    tick = d_baseTicks - tick;
-
-  setSliderPosition(tick);
-  blockSignals(false);
-}
-
-float ScrollBar::minBaseValue(void) const { return d_minBase; }
-
-float ScrollBar::maxBaseValue(void) const { return d_maxBase; }
-
-void ScrollBar::sliderRange(int value, float &min, float &max) const {
-  if (isInverted())
-    value = d_baseTicks - value;
-
-  const int visibleTicks = pageStep();
-
-  min = mapFromTick(value - visibleTicks / 2);
-  max = mapFromTick(value + visibleTicks / 2);
-}
-
-float ScrollBar::minSliderValue(void) const {
-  float min, dummy;
-  sliderRange(value(), min, dummy);
-
-  return min;
-}
-
-float ScrollBar::maxSliderValue(void) const {
-  float max, dummy;
-  sliderRange(value(), dummy, max);
-
-  return max;
-}
-
-int ScrollBar::mapToTick(float v) const {
-  return (int)((v - d_minBase) / (d_maxBase - d_minBase) * d_baseTicks);
-}
-
-float ScrollBar::mapFromTick(int tick) const {
-  return d_minBase + (d_maxBase - d_minBase) * tick / d_baseTicks;
-}
-
-void ScrollBar::catchValueChanged(int value) {
-  float min, max;
-  sliderRange(value, min, max);
-  Q_EMIT valueChanged(orientation(), min, max);
-}
-
-void ScrollBar::catchSliderMoved(int value) {
-  float min, max;
-  sliderRange(value, min, max);
-  Q_EMIT sliderMoved(orientation(), min, max);
-}
-
-int ScrollBar::extent(void) const {
-  QStyleOptionSlider opt;
-  opt.init(this);
-  opt.subControls = QStyle::SC_None;
-  opt.activeSubControls = QStyle::SC_None;
-  opt.orientation = orientation();
-  opt.minimum = minimum();
-  opt.maximum = maximum();
-  opt.sliderPosition = sliderPosition();
-  opt.sliderValue = value();
-  opt.singleStep = singleStep();
-  opt.pageStep = pageStep();
-  opt.upsideDown = invertedAppearance();
-  if (orientation() == Qt::Horizontal)
-    opt.state |= QStyle::State_Horizontal;
-  return style()->pixelMetric(QStyle::PM_ScrollBarExtent, &opt, this);
-}
Index: trunk/tools/FlairGCS/src/Scrollbar.h
===================================================================
--- trunk/tools/FlairGCS/src/Scrollbar.h	(revision 16)
+++ 	(revision )
@@ -1,56 +1,0 @@
-// %flair:license{
-// This file is part of the Flair framework distributed under the
-// CECILL-C License, Version 1.0.
-// %flair:license}
-#ifndef _SCROLLBAR_H
-#define _SCROLLBAR_H 1
-
-#include <qscrollbar.h>
-
-class ScrollBar : public QScrollBar {
-  Q_OBJECT
-
-public:
-  ScrollBar(QWidget *parent = NULL);
-  ScrollBar(Qt::Orientation, QWidget *parent = NULL);
-  ScrollBar(float minBase, float maxBase, Qt::Orientation o,
-            QWidget *parent = NULL);
-
-  void setInverted(bool);
-  bool isInverted(void) const;
-
-  float minBaseValue(void) const;
-  float maxBaseValue(void) const;
-
-  float minSliderValue(void) const;
-  float maxSliderValue(void) const;
-
-  int extent(void) const;
-
-Q_SIGNALS:
-  void sliderMoved(Qt::Orientation, float, float);
-  void valueChanged(Qt::Orientation, float, float);
-
-public Q_SLOTS:
-  virtual void setBase(float min, float max);
-  virtual void moveSlider(float min, float max);
-
-protected:
-  void sliderRange(int value, float &min, float &max) const;
-  int mapToTick(float) const;
-  float mapFromTick(int) const;
-
-private Q_SLOTS:
-  void catchValueChanged(int value);
-  void catchSliderMoved(int value);
-
-private:
-  void init(void);
-
-  bool d_inverted;
-  float d_minBase;
-  float d_maxBase;
-  int d_baseTicks;
-};
-
-#endif
