From f41530726eb2ef70a4683faa9f5e4760b67d7d5f Mon Sep 17 00:00:00 2001
From: Tom Rondeau
Date: Thu, 21 Apr 2011 19:11:03 -0400
Subject: gr-qtgui: adding time-domain only plotter.

---
 gr-qtgui/lib/timedisplayform.cc | 180 ++++++++++++++++++++++++++++++++++++++++
 1 file changed, 180 insertions(+)
 create mode 100644 gr-qtgui/lib/timedisplayform.cc

(limited to 'gr-qtgui/lib/timedisplayform.cc')

diff --git a/gr-qtgui/lib/timedisplayform.cc b/gr-qtgui/lib/timedisplayform.cc
new file mode 100644
index 000000000..809c88a9b
--- /dev/null
+++ b/gr-qtgui/lib/timedisplayform.cc
@@ -0,0 +1,180 @@
+/* -*- c++ -*- */
+/*
+ * Copyright 2011 Free Software Foundation, Inc.
+ * 
+ * This file is part of GNU Radio
+ * 
+ * GNU Radio is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3, or (at your option)
+ * any later version.
+ * 
+ * GNU Radio is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ * 
+ * You should have received a copy of the GNU General Public License
+ * along with GNU Radio; see the file COPYING.  If not, write to
+ * the Free Software Foundation, Inc., 51 Franklin Street,
+ * Boston, MA 02110-1301, USA.
+ */
+
+#include <cmath>
+#include <QColorDialog>
+#include <QMessageBox>
+#include <timedisplayform.h>
+
+TimeDisplayForm::TimeDisplayForm(QWidget* parent)
+  : QWidget(parent)
+{
+  _systemSpecifiedFlag = false;
+  _intValidator = new QIntValidator(this);
+  _intValidator->setBottom(0);
+  _timeDomainDisplayPlot = new TimeDomainDisplayPlot(this);
+
+  _numRealDataPoints = 1024;
+  
+  Reset();
+
+  // Create a timer to update plots at the specified rate
+  displayTimer = new QTimer(this);
+  connect(displayTimer, SIGNAL(timeout()), this, SLOT(UpdateGuiTimer()));
+
+  connect(_timeDomainDisplayPlot, SIGNAL(plotPointSelected(const QPointF)),
+	  this, SLOT(onTimePlotPointSelected(const QPointF)));
+}
+
+TimeDisplayForm::~TimeDisplayForm()
+{
+  // Qt deletes children when parent is deleted
+
+  // 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 gr_complex* timeDomainDataPoints = spectrumUpdateEvent->getTimeDomainPoints();
+  const uint64_t numTimeDomainDataPoints = spectrumUpdateEvent->getNumTimeDomainDataPoints();
+  const timespec generatedTimestamp = spectrumUpdateEvent->getDataTimestamp();
+
+  // FIXME: make time domain display take complex inputs
+  double *real = new double[numTimeDomainDataPoints];
+  double *imag = new double[numTimeDomainDataPoints];
+  for(uint64_t i = 0; i < numTimeDomainDataPoints; i++) {
+    real[i] = timeDomainDataPoints[i].real();
+    imag[i] = timeDomainDataPoints[i].imag();
+  }
+  
+  _timeDomainDisplayPlot->PlotNewData(real, imag,
+				      numTimeDomainDataPoints,
+				      d_update_time);
+
+  // Tell the system the GUI has been updated
+  //if(_systemSpecifiedFlag){
+  //  _system->SetLastGUIUpdateTime(generatedTimestamp);
+  //  _system->DecrementPendingGUIUpdateEvents();
+  //}
+
+  delete [] real;
+  delete [] imag;
+}
+
+void
+TimeDisplayForm::resizeEvent( QResizeEvent *e )
+{
+  QSize s(0,0);
+  //s.setWidth(TimeDomainDisplayFrame->width());
+  //s.setHeight(TimeDomainDisplayFrame->height());
+  emit _timeDomainDisplayPlot->resizeSlot(&s);
+}
+
+void
+TimeDisplayForm::customEvent( QEvent * e)
+{
+  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();
+  //}
+  //}
+}
+
+void
+TimeDisplayForm::UpdateGuiTimer()
+{
+  _timeDomainDisplayPlot->canvas()->update();
+}
+
+void
+TimeDisplayForm::onTimePlotPointSelected(const QPointF p)
+{
+  emit plotPointSelected(p, 3);
+}
+
+void
+TimeDisplayForm::SetFrequencyRange(const double newCenterFrequency,
+				   const double newStartFrequency, 
+				   const double newStopFrequency)
+{
+  double fdiff = std::max(fabs(newStartFrequency), fabs(newStopFrequency));
+
+  if(fdiff > 0) {
+    std::string strtime[4] = {"sec", "ms", "us", "ns"};
+    double units10 = floor(log10(fdiff));
+    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]);
+  }
+}
+
+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->set_yaxis(min, max);
+}
+
+void
+TimeDisplayForm::SetUpdateTime(double t)
+{
+  d_update_time = t;
+  // QTimer class takes millisecond input
+  displayTimer->start(d_update_time*1000);
+}
+
-- 
cgit 


From ca8e6096da49c825c14ac05962bb7747f84c2ba6 Mon Sep 17 00:00:00 2001
From: Tom Rondeau
Date: Sat, 23 Apr 2011 11:01:10 -0400
Subject: gr-qtgui: time domain sink now shows and receives updates.

---
 gr-qtgui/lib/timedisplayform.cc | 19 ++++++++-----------
 1 file changed, 8 insertions(+), 11 deletions(-)

(limited to 'gr-qtgui/lib/timedisplayform.cc')

diff --git a/gr-qtgui/lib/timedisplayform.cc b/gr-qtgui/lib/timedisplayform.cc
index 809c88a9b..e90eaab06 100644
--- a/gr-qtgui/lib/timedisplayform.cc
+++ b/gr-qtgui/lib/timedisplayform.cc
@@ -24,6 +24,7 @@
 #include <QColorDialog>
 #include <QMessageBox>
 #include <timedisplayform.h>
+#include <iostream>
 
 TimeDisplayForm::TimeDisplayForm(QWidget* parent)
   : QWidget(parent)
@@ -31,10 +32,15 @@ TimeDisplayForm::TimeDisplayForm(QWidget* parent)
   _systemSpecifiedFlag = false;
   _intValidator = new QIntValidator(this);
   _intValidator->setBottom(0);
+
+  _layout = new QGridLayout(this);
   _timeDomainDisplayPlot = new TimeDomainDisplayPlot(this);
+  _layout->addWidget(_timeDomainDisplayPlot, 0, 0);
 
   _numRealDataPoints = 1024;
-  
+
+  setLayout(_layout);
+
   Reset();
 
   // Create a timer to update plots at the specified rate
@@ -75,12 +81,6 @@ TimeDisplayForm::newData( const TimeUpdateEvent* spectrumUpdateEvent)
 				      numTimeDomainDataPoints,
 				      d_update_time);
 
-  // Tell the system the GUI has been updated
-  //if(_systemSpecifiedFlag){
-  //  _system->SetLastGUIUpdateTime(generatedTimestamp);
-  //  _system->DecrementPendingGUIUpdateEvents();
-  //}
-
   delete [] real;
   delete [] imag;
 }
@@ -88,10 +88,7 @@ TimeDisplayForm::newData( const TimeUpdateEvent* spectrumUpdateEvent)
 void
 TimeDisplayForm::resizeEvent( QResizeEvent *e )
 {
-  QSize s(0,0);
-  //s.setWidth(TimeDomainDisplayFrame->width());
-  //s.setHeight(TimeDomainDisplayFrame->height());
-  emit _timeDomainDisplayPlot->resizeSlot(&s);
+  emit _timeDomainDisplayPlot->resizeSlot(&size());
 }
 
 void
-- 
cgit 


From 01f44f64c916b4aa38bc81662d2c8b82c4cc0b57 Mon Sep 17 00:00:00 2001
From: Tom Rondeau
Date: Sat, 23 Apr 2011 14:30:32 -0400
Subject: gr-qtgui: moving towards allowing time plot to have multiple
 connections.

---
 gr-qtgui/lib/timedisplayform.cc | 23 +++++++----------------
 1 file changed, 7 insertions(+), 16 deletions(-)

(limited to 'gr-qtgui/lib/timedisplayform.cc')

diff --git a/gr-qtgui/lib/timedisplayform.cc b/gr-qtgui/lib/timedisplayform.cc
index e90eaab06..65940b013 100644
--- a/gr-qtgui/lib/timedisplayform.cc
+++ b/gr-qtgui/lib/timedisplayform.cc
@@ -26,7 +26,7 @@
 #include <timedisplayform.h>
 #include <iostream>
 
-TimeDisplayForm::TimeDisplayForm(QWidget* parent)
+TimeDisplayForm::TimeDisplayForm(int nplots, QWidget* parent)
   : QWidget(parent)
 {
   _systemSpecifiedFlag = false;
@@ -34,8 +34,8 @@ TimeDisplayForm::TimeDisplayForm(QWidget* parent)
   _intValidator->setBottom(0);
 
   _layout = new QGridLayout(this);
-  _timeDomainDisplayPlot = new TimeDomainDisplayPlot(this);
-  _layout->addWidget(_timeDomainDisplayPlot, 0, 0);
+  _timeDomainDisplayPlot = new TimeDomainDisplayPlot(nplots, this);
+  _layout->addWidget(_timeDomainDisplayPlot, 0, 0, 100, 100);
 
   _numRealDataPoints = 1024;
 
@@ -65,24 +65,15 @@ TimeDisplayForm::~TimeDisplayForm()
 void
 TimeDisplayForm::newData( const TimeUpdateEvent* spectrumUpdateEvent)
 {
-  const gr_complex* timeDomainDataPoints = spectrumUpdateEvent->getTimeDomainPoints();
+  const int which = spectrumUpdateEvent->which();
+  const double* timeDomainDataPoints = spectrumUpdateEvent->getTimeDomainPoints();
   const uint64_t numTimeDomainDataPoints = spectrumUpdateEvent->getNumTimeDomainDataPoints();
   const timespec generatedTimestamp = spectrumUpdateEvent->getDataTimestamp();
-
-  // FIXME: make time domain display take complex inputs
-  double *real = new double[numTimeDomainDataPoints];
-  double *imag = new double[numTimeDomainDataPoints];
-  for(uint64_t i = 0; i < numTimeDomainDataPoints; i++) {
-    real[i] = timeDomainDataPoints[i].real();
-    imag[i] = timeDomainDataPoints[i].imag();
-  }
   
-  _timeDomainDisplayPlot->PlotNewData(real, imag,
+  //std::cout << "TimeDisplayForm: which: " << which << std::endl;
+  _timeDomainDisplayPlot->PlotNewData(which, timeDomainDataPoints,
 				      numTimeDomainDataPoints,
 				      d_update_time);
-
-  delete [] real;
-  delete [] imag;
 }
 
 void
-- 
cgit 


From 0877adb2e194c9dfad2484519b2979e2bed93958 Mon Sep 17 00:00:00 2001
From: Tom Rondeau
Date: Sat, 23 Apr 2011 15:11:17 -0400
Subject: gr-qtgui: Passing vectors of data to update plot for stability; also
 moving responsibility of keeping track of plot updates out to qtgui_sink
 instead of inside plot qidget.

---
 gr-qtgui/lib/timedisplayform.cc | 8 +++-----
 1 file changed, 3 insertions(+), 5 deletions(-)

(limited to 'gr-qtgui/lib/timedisplayform.cc')

diff --git a/gr-qtgui/lib/timedisplayform.cc b/gr-qtgui/lib/timedisplayform.cc
index 65940b013..368e47c95 100644
--- a/gr-qtgui/lib/timedisplayform.cc
+++ b/gr-qtgui/lib/timedisplayform.cc
@@ -65,13 +65,11 @@ TimeDisplayForm::~TimeDisplayForm()
 void
 TimeDisplayForm::newData( const TimeUpdateEvent* spectrumUpdateEvent)
 {
-  const int which = spectrumUpdateEvent->which();
-  const double* timeDomainDataPoints = spectrumUpdateEvent->getTimeDomainPoints();
+  const std::vector<double*> timeDomainDataPoints = spectrumUpdateEvent->getTimeDomainPoints();
   const uint64_t numTimeDomainDataPoints = spectrumUpdateEvent->getNumTimeDomainDataPoints();
-  const timespec generatedTimestamp = spectrumUpdateEvent->getDataTimestamp();
+  const timespec generatedTimestamp = {0,0};
   
-  //std::cout << "TimeDisplayForm: which: " << which << std::endl;
-  _timeDomainDisplayPlot->PlotNewData(which, timeDomainDataPoints,
+  _timeDomainDisplayPlot->PlotNewData(timeDomainDataPoints,
 				      numTimeDomainDataPoints,
 				      d_update_time);
 }
-- 
cgit 


From e251c885f19281ef918987e09c2aac1af6a952c2 Mon Sep 17 00:00:00 2001
From: Tom Rondeau
Date: Sun, 24 Apr 2011 00:31:39 -0400
Subject: gr-qtgui: provide function and slot for setting the labels of a time
 curve.

---
 gr-qtgui/lib/timedisplayform.cc | 5 +++++
 1 file changed, 5 insertions(+)

(limited to 'gr-qtgui/lib/timedisplayform.cc')

diff --git a/gr-qtgui/lib/timedisplayform.cc b/gr-qtgui/lib/timedisplayform.cc
index 368e47c95..816331771 100644
--- a/gr-qtgui/lib/timedisplayform.cc
+++ b/gr-qtgui/lib/timedisplayform.cc
@@ -164,3 +164,8 @@ TimeDisplayForm::SetUpdateTime(double t)
   displayTimer->start(d_update_time*1000);
 }
 
+void
+TimeDisplayForm::SetTitle(int which, QString title)
+{
+  _timeDomainDisplayPlot->set_title(which, title);
+}
-- 
cgit 


From 43a3a7296412dc52216e7f63856a86945f4ba438 Mon Sep 17 00:00:00 2001
From: Tom Rondeau
Date: Sun, 24 Apr 2011 01:30:08 -0400
Subject: gr-qtgui: clean up

---
 gr-qtgui/lib/timedisplayform.cc | 10 +++++-----
 1 file changed, 5 insertions(+), 5 deletions(-)

(limited to 'gr-qtgui/lib/timedisplayform.cc')

diff --git a/gr-qtgui/lib/timedisplayform.cc b/gr-qtgui/lib/timedisplayform.cc
index 816331771..05baee7f9 100644
--- a/gr-qtgui/lib/timedisplayform.cc
+++ b/gr-qtgui/lib/timedisplayform.cc
@@ -35,7 +35,7 @@ TimeDisplayForm::TimeDisplayForm(int nplots, QWidget* parent)
 
   _layout = new QGridLayout(this);
   _timeDomainDisplayPlot = new TimeDomainDisplayPlot(nplots, this);
-  _layout->addWidget(_timeDomainDisplayPlot, 0, 0, 100, 100);
+  _layout->addWidget(_timeDomainDisplayPlot, 0, 0);
 
   _numRealDataPoints = 1024;
 
@@ -67,7 +67,6 @@ TimeDisplayForm::newData( const TimeUpdateEvent* spectrumUpdateEvent)
 {
   const std::vector<double*> timeDomainDataPoints = spectrumUpdateEvent->getTimeDomainPoints();
   const uint64_t numTimeDomainDataPoints = spectrumUpdateEvent->getNumTimeDomainDataPoints();
-  const timespec generatedTimestamp = {0,0};
   
   _timeDomainDisplayPlot->PlotNewData(timeDomainDataPoints,
 				      numTimeDomainDataPoints,
@@ -77,7 +76,8 @@ TimeDisplayForm::newData( const TimeUpdateEvent* spectrumUpdateEvent)
 void
 TimeDisplayForm::resizeEvent( QResizeEvent *e )
 {
-  emit _timeDomainDisplayPlot->resizeSlot(&size());
+  QSize s = size();
+  emit _timeDomainDisplayPlot->resizeSlot(&s);
 }
 
 void
@@ -153,7 +153,7 @@ TimeDisplayForm::closeEvent( QCloseEvent *e )
 void
 TimeDisplayForm::SetTimeDomainAxis(double min, double max)
 {
-  _timeDomainDisplayPlot->set_yaxis(min, max);
+  _timeDomainDisplayPlot->setYaxis(min, max);
 }
 
 void
@@ -167,5 +167,5 @@ TimeDisplayForm::SetUpdateTime(double t)
 void
 TimeDisplayForm::SetTitle(int which, QString title)
 {
-  _timeDomainDisplayPlot->set_title(which, title);
+  _timeDomainDisplayPlot->setTitle(which, title);
 }
-- 
cgit 


From 11de76b9214a59930ac8d8c031880b5bd293973d Mon Sep 17 00:00:00 2001
From: Tom Rondeau
Date: Sun, 24 Apr 2011 01:47:05 -0400
Subject: gr-qtgui: adding function and slot to set a time display curve's
 color.

---
 gr-qtgui/lib/timedisplayform.cc | 6 ++++++
 1 file changed, 6 insertions(+)

(limited to 'gr-qtgui/lib/timedisplayform.cc')

diff --git a/gr-qtgui/lib/timedisplayform.cc b/gr-qtgui/lib/timedisplayform.cc
index 05baee7f9..c2bb9f75d 100644
--- a/gr-qtgui/lib/timedisplayform.cc
+++ b/gr-qtgui/lib/timedisplayform.cc
@@ -169,3 +169,9 @@ TimeDisplayForm::SetTitle(int which, QString title)
 {
   _timeDomainDisplayPlot->setTitle(which, title);
 }
+
+void
+TimeDisplayForm::SetColor(int which, QString color)
+{
+  _timeDomainDisplayPlot->setColor(which, color);
+}
-- 
cgit 


From 83c1463ef9aa550d8c44cd259cf14dea433e1973 Mon Sep 17 00:00:00 2001
From: Tom Rondeau
Date: Sun, 24 Apr 2011 01:59:10 -0400
Subject: gr-qtgui: making (somewhat more) consistent case for function names.

---
 gr-qtgui/lib/timedisplayform.cc | 14 +++++++-------
 1 file changed, 7 insertions(+), 7 deletions(-)

(limited to 'gr-qtgui/lib/timedisplayform.cc')

diff --git a/gr-qtgui/lib/timedisplayform.cc b/gr-qtgui/lib/timedisplayform.cc
index c2bb9f75d..cc4ac9951 100644
--- a/gr-qtgui/lib/timedisplayform.cc
+++ b/gr-qtgui/lib/timedisplayform.cc
@@ -45,7 +45,7 @@ TimeDisplayForm::TimeDisplayForm(int nplots, QWidget* parent)
 
   // Create a timer to update plots at the specified rate
   displayTimer = new QTimer(this);
-  connect(displayTimer, SIGNAL(timeout()), this, SLOT(UpdateGuiTimer()));
+  connect(displayTimer, SIGNAL(timeout()), this, SLOT(updateGuiTimer()));
 
   connect(_timeDomainDisplayPlot, SIGNAL(plotPointSelected(const QPointF)),
 	  this, SLOT(onTimePlotPointSelected(const QPointF)));
@@ -99,7 +99,7 @@ TimeDisplayForm::customEvent( QEvent * e)
 }
 
 void
-TimeDisplayForm::UpdateGuiTimer()
+TimeDisplayForm::updateGuiTimer()
 {
   _timeDomainDisplayPlot->canvas()->update();
 }
@@ -111,7 +111,7 @@ TimeDisplayForm::onTimePlotPointSelected(const QPointF p)
 }
 
 void
-TimeDisplayForm::SetFrequencyRange(const double newCenterFrequency,
+TimeDisplayForm::setFrequencyRange(const double newCenterFrequency,
 				   const double newStartFrequency, 
 				   const double newStopFrequency)
 {
@@ -151,13 +151,13 @@ TimeDisplayForm::closeEvent( QCloseEvent *e )
 }
 
 void
-TimeDisplayForm::SetTimeDomainAxis(double min, double max)
+TimeDisplayForm::setTimeDomainAxis(double min, double max)
 {
   _timeDomainDisplayPlot->setYaxis(min, max);
 }
 
 void
-TimeDisplayForm::SetUpdateTime(double t)
+TimeDisplayForm::setUpdateTime(double t)
 {
   d_update_time = t;
   // QTimer class takes millisecond input
@@ -165,13 +165,13 @@ TimeDisplayForm::SetUpdateTime(double t)
 }
 
 void
-TimeDisplayForm::SetTitle(int which, QString title)
+TimeDisplayForm::setTitle(int which, QString title)
 {
   _timeDomainDisplayPlot->setTitle(which, title);
 }
 
 void
-TimeDisplayForm::SetColor(int which, QString color)
+TimeDisplayForm::setColor(int which, QString color)
 {
   _timeDomainDisplayPlot->setColor(which, color);
 }
-- 
cgit