diff options
Diffstat (limited to 'gr-qtgui/lib/timedisplayform.cc')
-rw-r--r-- | gr-qtgui/lib/timedisplayform.cc | 138 |
1 files changed, 39 insertions, 99 deletions
diff --git a/gr-qtgui/lib/timedisplayform.cc b/gr-qtgui/lib/timedisplayform.cc index c650cd3eb0..e3c7f8a60b 100644 --- a/gr-qtgui/lib/timedisplayform.cc +++ b/gr-qtgui/lib/timedisplayform.cc @@ -1,6 +1,6 @@ /* -*- c++ -*- */ /* - * Copyright 2011 Free Software Foundation, Inc. + * Copyright 2011,2012 Free Software Foundation, Inc. * * This file is part of GNU Radio * @@ -21,34 +21,30 @@ */ #include <cmath> -#include <QColorDialog> #include <QMessageBox> #include <timedisplayform.h> #include <iostream> TimeDisplayForm::TimeDisplayForm(int nplots, QWidget* parent) - : QWidget(parent) + : DisplayForm(nplots, parent) { - _systemSpecifiedFlag = false; _intValidator = new QIntValidator(this); _intValidator->setBottom(0); _layout = new QGridLayout(this); - _timeDomainDisplayPlot = new TimeDomainDisplayPlot(nplots, this); - _layout->addWidget(_timeDomainDisplayPlot, 0, 0); - - _numRealDataPoints = 1024; - + _displayPlot = new TimeDomainDisplayPlot(nplots, this); + _layout->addWidget(_displayPlot, 0, 0); setLayout(_layout); - Reset(); + NPointsMenu *nptsmenu = new NPointsMenu(this); + _menu->addAction(nptsmenu); + connect(nptsmenu, SIGNAL(whichTrigger(int)), + this, SLOT(setNPoints(const int))); - // Create a timer to update plots at the specified rate - displayTimer = new QTimer(this); - connect(displayTimer, SIGNAL(timeout()), this, SLOT(updateGuiTimer())); + Reset(); - connect(_timeDomainDisplayPlot, SIGNAL(plotPointSelected(const QPointF)), - this, SLOT(onTimePlotPointSelected(const QPointF))); + connect(_displayPlot, SIGNAL(plotPointSelected(const QPointF)), + this, SLOT(onPlotPointSelected(const QPointF))); } TimeDisplayForm::~TimeDisplayForm() @@ -57,121 +53,65 @@ TimeDisplayForm::~TimeDisplayForm() // Don't worry about deleting Display Plots - they are deleted when parents are deleted delete _intValidator; - - displayTimer->stop(); - delete displayTimer; -} - -void -TimeDisplayForm::newData( const TimeUpdateEvent* spectrumUpdateEvent) -{ - const std::vector<double*> timeDomainDataPoints = spectrumUpdateEvent->getTimeDomainPoints(); - const uint64_t numTimeDomainDataPoints = spectrumUpdateEvent->getNumTimeDomainDataPoints(); - - _timeDomainDisplayPlot->PlotNewData(timeDomainDataPoints, - numTimeDomainDataPoints, - d_update_time); } -void -TimeDisplayForm::resizeEvent( QResizeEvent *e ) +TimeDomainDisplayPlot* +TimeDisplayForm::getPlot() { - QSize s = size(); - emit _timeDomainDisplayPlot->resizeSlot(&s); + return ((TimeDomainDisplayPlot*)_displayPlot); } void -TimeDisplayForm::customEvent( QEvent * e) +TimeDisplayForm::newData(const QEvent* updateEvent) { - if(e->type() == 10005) { - TimeUpdateEvent* timeUpdateEvent = (TimeUpdateEvent*)e; - newData(timeUpdateEvent); - } - //else if(e->type() == 10008){ - //setWindowTitle(((SpectrumWindowCaptionEvent*)e)->getLabel()); - //} - //else if(e->type() == 10009){ - //Reset(); - //if(_systemSpecifiedFlag){ - // _system->ResetPendingGUIUpdateEvents(); - //} - //} -} + TimeUpdateEvent *tevent = (TimeUpdateEvent*)updateEvent; + const std::vector<double*> dataPoints = tevent->getTimeDomainPoints(); + const uint64_t numDataPoints = tevent->getNumTimeDomainDataPoints(); -void -TimeDisplayForm::updateGuiTimer() -{ - _timeDomainDisplayPlot->canvas()->update(); + getPlot()->PlotNewData(dataPoints, + numDataPoints, + d_update_time); } void -TimeDisplayForm::onTimePlotPointSelected(const QPointF p) +TimeDisplayForm::customEvent(QEvent * e) { - emit plotPointSelected(p, 3); + if(e->type() == TimeUpdateEvent::Type()) { + newData(e); + } } void -TimeDisplayForm::setFrequencyRange(const double newCenterFrequency, - const double newStartFrequency, - const double newStopFrequency) +TimeDisplayForm::setSampleRate(const double samprate) { - double fdiff = std::max(fabs(newStartFrequency), fabs(newStopFrequency)); - - if(fdiff > 0) { + if(samprate > 0) { std::string strtime[4] = {"sec", "ms", "us", "ns"}; - double units10 = floor(log10(fdiff)); + double units10 = floor(log10(samprate)); double units3 = std::max(floor(units10 / 3.0), 0.0); double units = pow(10, (units10-fmod(units10, 3.0))); int iunit = static_cast<int>(units3); - _startFrequency = newStartFrequency; - _stopFrequency = newStopFrequency; - - _timeDomainDisplayPlot->SetSampleRate(_stopFrequency - _startFrequency, - units, strtime[iunit]); + getPlot()->SetSampleRate(samprate, units, strtime[iunit]); + } + else { + throw std::runtime_error("TimeDisplayForm: samprate must be > 0.\n"); } } void -TimeDisplayForm::Reset() -{ -} - - -void -TimeDisplayForm::closeEvent( QCloseEvent *e ) -{ - //if(_systemSpecifiedFlag){ - // _system->SetWindowOpenFlag(false); - //} - - qApp->processEvents(); - - QWidget::closeEvent(e); -} - -void -TimeDisplayForm::setTimeDomainAxis(double min, double max) -{ - _timeDomainDisplayPlot->setYaxis(min, max); -} - -void -TimeDisplayForm::setUpdateTime(double t) +TimeDisplayForm::setYaxis(double min, double max) { - d_update_time = t; - // QTimer class takes millisecond input - displayTimer->start(d_update_time*1000); + getPlot()->setYaxis(min, max); } -void -TimeDisplayForm::setTitle(int which, QString title) +int +TimeDisplayForm::getNPoints() const { - _timeDomainDisplayPlot->setTitle(which, title); + return d_npoints; } void -TimeDisplayForm::setColor(int which, QString color) +TimeDisplayForm::setNPoints(const int npoints) { - _timeDomainDisplayPlot->setColor(which, color); + d_npoints = npoints; } |