# HG changeset patch # User Hasan Yavuz Ă–ZDERYA # Date 2017-03-13 05:56:04 # Node ID 4126c800559df0a10620237a184ab4d86f12d87b # Parent da58111e7ca97ed71dc5342537252294bba71737 connected ui signals diff --git a/src/mainwindow.cpp b/src/mainwindow.cpp --- a/src/mainwindow.cpp +++ b/src/mainwindow.cpp @@ -133,6 +133,7 @@ MainWindow::MainWindow(QWidget *parent) QObject::connect(&portControl, &PortControl::portToggled, this, &MainWindow::onPortToggled); + // plot control signals connect(&plotControlPanel, &PlotControlPanel::numOfSamplesChanged, this, &MainWindow::onNumOfSamplesChanged); @@ -142,6 +143,9 @@ MainWindow::MainWindow(QWidget *parent) connect(&plotControlPanel, &PlotControlPanel::yScaleChanged, plotMan, &PlotManager::setYAxis); + connect(&plotControlPanel, &PlotControlPanel::xScaleChanged, + plotMan, &PlotManager::setXAxis); + QObject::connect(ui->actionClear, SIGNAL(triggered(bool)), this, SLOT(clearPlot())); diff --git a/src/plotcontrolpanel.cpp b/src/plotcontrolpanel.cpp --- a/src/plotcontrolpanel.cpp +++ b/src/plotcontrolpanel.cpp @@ -61,6 +61,12 @@ PlotControlPanel::PlotControlPanel(QWidg ui->spYmax->setRange((-1) * std::numeric_limits::max(), std::numeric_limits::max()); + ui->spXmin->setRange((-1) * std::numeric_limits::max(), + std::numeric_limits::max()); + + ui->spXmax->setRange((-1) * std::numeric_limits::max(), + std::numeric_limits::max()); + // connect signals connect(ui->spNumOfSamples, SIGNAL(valueChanged(int)), this, SLOT(onNumOfSamples(int))); @@ -74,6 +80,15 @@ PlotControlPanel::PlotControlPanel(QWidg connect(ui->spYmin, SIGNAL(valueChanged(double)), this, SLOT(onYScaleChanged())); + connect(ui->cbIndex, &QCheckBox::toggled, + this, &PlotControlPanel::onIndexChecked); + + connect(ui->spXmax, SIGNAL(valueChanged(double)), + this, SLOT(onXScaleChanged())); + + connect(ui->spXmin, SIGNAL(valueChanged(double)), + this, SLOT(onXScaleChanged())); + // init scale range preset list for (int nbits = 8; nbits <= 24; nbits++) // signed binary formats { @@ -222,6 +237,33 @@ void PlotControlPanel::onRangeSelected() ui->cbAutoScale->setChecked(false); } +void PlotControlPanel::onIndexChecked(bool checked) +{ + if (checked) + { + ui->lXmin->setEnabled(false); + ui->lXmax->setEnabled(false); + ui->spXmin->setEnabled(false); + ui->spXmax->setEnabled(false); + + emit xScaleChanged(true); // use index + } + else + { + ui->lXmin->setEnabled(true); + ui->lXmax->setEnabled(true); + ui->spXmin->setEnabled(true); + ui->spXmax->setEnabled(true); + + emit xScaleChanged(false, ui->spXmin->value(), ui->spXmax->value()); + } +} + +void PlotControlPanel::onXScaleChanged() +{ + emit xScaleChanged(false, ui->spXmin->value(), ui->spXmax->value()); +} + void PlotControlPanel::setChannelInfoModel(ChannelInfoModel* model) { ui->tvChannelInfo->setModel(model); diff --git a/src/plotcontrolpanel.h b/src/plotcontrolpanel.h --- a/src/plotcontrolpanel.h +++ b/src/plotcontrolpanel.h @@ -54,6 +54,7 @@ public: signals: void numOfSamplesChanged(int value); void yScaleChanged(bool autoScaled, double yMin = 0, double yMax = 1); + void xScaleChanged(bool asIndex, double xMin = 0, double xMax = 1); private: Ui::PlotControlPanel *ui; @@ -74,6 +75,8 @@ private slots: void onAutoScaleChecked(bool checked); void onYScaleChanged(); void onRangeSelected(); + void onIndexChecked(bool checked); + void onXScaleChanged(); }; #endif // PLOTCONTROLPANEL_H diff --git a/src/plotmanager.cpp b/src/plotmanager.cpp --- a/src/plotmanager.cpp +++ b/src/plotmanager.cpp @@ -260,7 +260,7 @@ void PlotManager::addCurve(QString title { auto curve = new QwtPlotCurve(title); auto series = new FrameBufferSeries(buffer); - series->setXAxis(false, 100, 500); + series->setXAxis(_xAxisAsIndex, _xMin, _xMax); curve->setSamples(series); _addCurve(curve); } @@ -417,6 +417,20 @@ void PlotManager::setYAxis(bool autoScal } } +void PlotManager::setXAxis(bool asIndex, double xMin, double xMax) +{ + _xAxisAsIndex = asIndex; + _xMin = xMin; + _xMax = xMax; + for (auto curve : curves) + { + // TODO: what happens when addCurve(QVector) is used? + FrameBufferSeries* series = static_cast(curve->data()); + series->setXAxis(asIndex, xMin, xMax); + } + replot(); +} + void PlotManager::flashSnapshotOverlay() { for (auto plot : plotWidgets) diff --git a/src/plotmanager.h b/src/plotmanager.h --- a/src/plotmanager.h +++ b/src/plotmanager.h @@ -66,6 +66,8 @@ public slots: void showDemoIndicator(bool show = true); /// Set the Y axis void setYAxis(bool autoScaled, double yMin = 0, double yMax = 1); + /// Set the X axis + void setXAxis(bool asIndex, double xMin = 0 , double xMax = 1); /// Display an animation for snapshot void flashSnapshotOverlay(); /// Should be called to update zoom base @@ -83,6 +85,9 @@ private: bool _autoScaled; double _yMin; double _yMax; + bool _xAxisAsIndex; + double _xMin; + double _xMax; // menu actions QAction showGridAction;