diff options
Diffstat (limited to 'gr-qtgui/lib')
28 files changed, 384 insertions, 174 deletions
diff --git a/gr-qtgui/lib/ConstellationDisplayPlot.cc b/gr-qtgui/lib/ConstellationDisplayPlot.cc index 5bc89f83fa..51000cab17 100644 --- a/gr-qtgui/lib/ConstellationDisplayPlot.cc +++ b/gr-qtgui/lib/ConstellationDisplayPlot.cc @@ -65,14 +65,6 @@ ConstellationDisplayPlot::ConstellationDisplayPlot(int nplots, QWidget* parent) _numPoints = 1024; _penSize = 5; - setAxisScaleEngine(QwtPlot::xBottom, new QwtLinearScaleEngine); - set_xaxis(-2.0, 2.0); - setAxisTitle(QwtPlot::xBottom, "In-phase"); - - setAxisScaleEngine(QwtPlot::yLeft, new QwtLinearScaleEngine); - set_yaxis(-2.0, 2.0); - setAxisTitle(QwtPlot::yLeft, "Quadrature"); - _zoomer = new ConstellationDisplayZoomer(canvas()); #if QWT_VERSION < 0x060000 @@ -88,6 +80,15 @@ ConstellationDisplayPlot::ConstellationDisplayPlot(int nplots, QWidget* parent) _zoomer->setRubberBandPen(c); _zoomer->setTrackerPen(c); + setAxisScaleEngine(QwtPlot::xBottom, new QwtLinearScaleEngine); + set_xaxis(-2.0, 2.0); + setAxisTitle(QwtPlot::xBottom, "In-phase"); + + setAxisScaleEngine(QwtPlot::yLeft, new QwtLinearScaleEngine); + set_yaxis(-2.0, 2.0); + setAxisTitle(QwtPlot::yLeft, "Quadrature"); + updateAxes(); + QList<QColor> colors; colors << QColor(Qt::blue) << QColor(Qt::red) << QColor(Qt::green) << QColor(Qt::black) << QColor(Qt::cyan) << QColor(Qt::magenta) @@ -135,13 +136,13 @@ ConstellationDisplayPlot::~ConstellationDisplayPlot() void ConstellationDisplayPlot::set_xaxis(double min, double max) { - setAxisScale(QwtPlot::xBottom, min, max); + setXaxis(min, max); } void ConstellationDisplayPlot::set_yaxis(double min, double max) { - setAxisScale(QwtPlot::yLeft, min, max); + setYaxis(min, max); } void diff --git a/gr-qtgui/lib/DisplayPlot.cc b/gr-qtgui/lib/DisplayPlot.cc index 2b982b77d2..0b422ee1ca 100644 --- a/gr-qtgui/lib/DisplayPlot.cc +++ b/gr-qtgui/lib/DisplayPlot.cc @@ -107,19 +107,19 @@ DisplayPlot::setXaxis(double min, double max) } void -DisplayPlot::setTitle(int which, QString title) +DisplayPlot::setLineLabel(int which, QString label) { - _plot_curve[which]->setTitle(title); + _plot_curve[which]->setTitle(label); } QString -DisplayPlot::title(int which) +DisplayPlot::lineLabel(int which) { return _plot_curve[which]->title().text(); } void -DisplayPlot::setColor(int which, QColor color) +DisplayPlot::setLineColor(int which, QString color) { if (which < _nplots) { // Set the color of the pen @@ -144,7 +144,7 @@ DisplayPlot::setColor(int which, QColor color) } QColor -DisplayPlot::getColor(int which) const { +DisplayPlot::getLineColor(int which) const { // If that plot doesn't exist then return black. if (which < _nplots) return _plot_curve[which]->pen().color(); @@ -154,7 +154,7 @@ DisplayPlot::getColor(int which) const { // Use a preprocessor macro to create a bunch of hooks for Q_PROPERTY and hence the stylesheet. #define SETUPLINE(i, im1) \ void DisplayPlot::setLineColor ## i (QColor c) {setColor(im1, c);} \ - const QColor DisplayPlot::getLineColor ## i () const {return getColor(im1);} \ + const QColor DisplayPlot::getLineColor ## i () const {return getLineColor(im1);} \ void DisplayPlot::setLineWidth ## i (int width) {setLineWidth(im1, width);} \ int DisplayPlot::getLineWidth ## i () const {return getLineWidth(im1);} \ void DisplayPlot::setLineStyle ## i (Qt::PenStyle ps) {setLineStyle(im1, ps);} \ diff --git a/gr-qtgui/lib/DisplayPlot.h b/gr-qtgui/lib/DisplayPlot.h index fa8c14e764..934794680d 100644 --- a/gr-qtgui/lib/DisplayPlot.h +++ b/gr-qtgui/lib/DisplayPlot.h @@ -178,10 +178,10 @@ public: public slots: void setYaxis(double min, double max); void setXaxis(double min, double max); - void setTitle(int which, QString title); + void setLineLabel(int which, QString label); + void setLineColor(int which, QString color); - void setColor(int which, QColor color); - QColor getColor(int which) const; + QColor getLineColor(int which) const; void setLineWidth(int which, int width); int getLineWidth(int which) const; void setLineStyle(int which, Qt::PenStyle style); @@ -251,7 +251,7 @@ public slots: void setStop(bool on); - QString title(int which); + QString lineLabel(int which); void resizeSlot(QSize *s); diff --git a/gr-qtgui/lib/FrequencyDisplayPlot.cc b/gr-qtgui/lib/FrequencyDisplayPlot.cc index a2894a5042..0fdba579c8 100644 --- a/gr-qtgui/lib/FrequencyDisplayPlot.cc +++ b/gr-qtgui/lib/FrequencyDisplayPlot.cc @@ -221,7 +221,7 @@ FrequencyDisplayPlot::~FrequencyDisplayPlot() } void -FrequencyDisplayPlot::set_yaxis(double min, double max) +FrequencyDisplayPlot::setYaxis(double min, double max) { // Get the new max/min values for the plot _minYAxis = min; diff --git a/gr-qtgui/lib/FrequencyDisplayPlot.h b/gr-qtgui/lib/FrequencyDisplayPlot.h index fa153986b8..679ebf1cc4 100644 --- a/gr-qtgui/lib/FrequencyDisplayPlot.h +++ b/gr-qtgui/lib/FrequencyDisplayPlot.h @@ -72,7 +72,7 @@ public: void replot(); - void set_yaxis(double min, double max); + void setYaxis(double min, double max); void SetTraceColour (QColor); void SetBGColour (QColor c); diff --git a/gr-qtgui/lib/const_sink_c_impl.cc b/gr-qtgui/lib/const_sink_c_impl.cc index b504f7121d..547530c823 100644 --- a/gr-qtgui/lib/const_sink_c_impl.cc +++ b/gr-qtgui/lib/const_sink_c_impl.cc @@ -44,9 +44,9 @@ namespace gr { } const_sink_c_impl::const_sink_c_impl(int size, - const std::string &name, - int nconnections, - QWidget *parent) + const std::string &name, + int nconnections, + QWidget *parent) : gr_sync_block("const_sink_c", gr_make_io_signature(nconnections, nconnections, sizeof(gr_complex)), gr_make_io_signature(0, 0, 0)), @@ -94,7 +94,7 @@ namespace gr { } d_main_gui = new ConstellationDisplayForm(d_nconnections, d_parent); - d_main_gui->SetNPoints(d_size); + d_main_gui->setNPoints(d_size); // initialize update time to 10 times a second set_update_time(0.1); d_last_time = 0; @@ -121,6 +121,18 @@ namespace gr { } void + const_sink_c_impl::set_y_axis(double min, double max) + { + d_main_gui->setYaxis(min, max); + } + + void + const_sink_c_impl::set_x_axis(double min, double max) + { + d_main_gui->setXaxis(min, max); + } + + void const_sink_c_impl::set_update_time(double t) { //convert update time to ticks @@ -130,15 +142,21 @@ namespace gr { } void - const_sink_c_impl::set_title(int which, const std::string &title) + const_sink_c_impl::set_title(const std::string &title) { - d_main_gui->setTitle(which, title.c_str()); + d_main_gui->setTitle(title.c_str()); } void - const_sink_c_impl::set_color(int which, const std::string &color) + const_sink_c_impl::set_line_label(int which, const std::string &label) { - d_main_gui->setColor(which, color.c_str()); + d_main_gui->setLineLabel(which, label.c_str()); + } + + void + const_sink_c_impl::set_line_color(int which, const std::string &color) + { + d_main_gui->setLineColor(which, color.c_str()); } void @@ -187,18 +205,30 @@ namespace gr { d_size = newsize; d_index = 0; - d_main_gui->SetNPoints(d_size); + d_main_gui->setNPoints(d_size); } } void const_sink_c_impl::npoints_resize() { - int newsize = d_main_gui->GetNPoints(); + int newsize = d_main_gui->getNPoints(); set_nsamps(newsize); } int + const_sink_c_impl::nsamps() const + { + return d_size; + } + + void + const_sink_c_impl::reset() + { + d_index = 0; + } + + int const_sink_c_impl::work(int noutput_items, gr_vector_const_void_star &input_items, gr_vector_void_star &output_items) diff --git a/gr-qtgui/lib/const_sink_c_impl.h b/gr-qtgui/lib/const_sink_c_impl.h index a17a8793b4..8bb2344c9f 100644 --- a/gr-qtgui/lib/const_sink_c_impl.h +++ b/gr-qtgui/lib/const_sink_c_impl.h @@ -65,9 +65,13 @@ namespace gr { QWidget* qwidget(); PyObject* pyqwidget(); + void set_y_axis(double min, double max); + void set_x_axis(double min, double max); + void set_update_time(double t); - void set_title(int which, const std::string &title); - void set_color(int which, const std::string &color); + void set_title(const std::string &title); + void set_line_label(int which, const std::string &label); + void set_line_color(int which, const std::string &color); void set_line_width(int which, int width); void set_line_style(int which, Qt::PenStyle style); void set_line_marker(int which, QwtSymbol::Style marker); @@ -75,6 +79,9 @@ namespace gr { void set_size(int width, int height); + int nsamps() const; + void reset(); + int work(int noutput_items, gr_vector_const_void_star &input_items, gr_vector_void_star &output_items); diff --git a/gr-qtgui/lib/constellationdisplayform.cc b/gr-qtgui/lib/constellationdisplayform.cc index 98375ebaed..5f742de991 100644 --- a/gr-qtgui/lib/constellationdisplayform.cc +++ b/gr-qtgui/lib/constellationdisplayform.cc @@ -39,7 +39,7 @@ ConstellationDisplayForm::ConstellationDisplayForm(int nplots, QWidget* parent) NPointsMenu *nptsmenu = new NPointsMenu(this); _menu->addAction(nptsmenu); connect(nptsmenu, SIGNAL(whichTrigger(int)), - this, SLOT(SetNPoints(const int))); + this, SLOT(setNPoints(const int))); Reset(); @@ -84,13 +84,25 @@ ConstellationDisplayForm::customEvent(QEvent * e) } int -ConstellationDisplayForm::GetNPoints() const +ConstellationDisplayForm::getNPoints() const { return d_npoints; } void -ConstellationDisplayForm::SetNPoints(const int npoints) +ConstellationDisplayForm::setNPoints(const int npoints) { d_npoints = npoints; } + +void +ConstellationDisplayForm::setYaxis(double min, double max) +{ + getPlot()->set_yaxis(min, max); +} + +void +ConstellationDisplayForm::setXaxis(double min, double max) +{ + getPlot()->set_xaxis(min, max); +} diff --git a/gr-qtgui/lib/constellationdisplayform.h b/gr-qtgui/lib/constellationdisplayform.h index 6832bd44cc..d9715d3dd9 100644 --- a/gr-qtgui/lib/constellationdisplayform.h +++ b/gr-qtgui/lib/constellationdisplayform.h @@ -40,13 +40,14 @@ public: ConstellationDisplayPlot* getPlot(); - int GetNPoints() const; + int getNPoints() const; public slots: void customEvent(QEvent * e); - void SetNPoints(const int); + void setNPoints(const int); - // add set x/y axis + void setYaxis(double min, double max); + void setXaxis(double min, double max); private slots: void newData(const QEvent*); diff --git a/gr-qtgui/lib/displayform.cc b/gr-qtgui/lib/displayform.cc index 08ced9c913..e2475cb95e 100644 --- a/gr-qtgui/lib/displayform.cc +++ b/gr-qtgui/lib/displayform.cc @@ -22,6 +22,8 @@ #include <displayform.h> #include <iostream> +#include <QPixmap> +#include <QFileDialog> DisplayForm::DisplayForm(int nplots, QWidget* parent) : QWidget(parent), _nplots(nplots), _systemSpecifiedFlag(false) @@ -58,11 +60,11 @@ DisplayForm::DisplayForm(int nplots, QWidget* parent) _marker_alpha_menu.push_back(new MarkerAlphaMenu(i, this)); connect(_line_title_act[i], SIGNAL(whichTrigger(int, const QString&)), - this, SLOT(setTitle(int, const QString&))); + this, SLOT(setLineLabel(int, const QString&))); for(int j = 0; j < _line_color_menu[i]->getNumActions(); j++) { connect(_line_color_menu[i], SIGNAL(whichTrigger(int, const QString&)), - this, SLOT(setColor(int, const QString&))); + this, SLOT(setLineColor(int, const QString&))); } for(int j = 0; j < _line_width_menu[i]->getNumActions(); j++) { @@ -95,6 +97,12 @@ DisplayForm::DisplayForm(int nplots, QWidget* parent) _menu->addMenu(_lines_menu[i]); } + + _save_act = new QAction("Save", this); + _save_act->setStatusTip(tr("Save Figure")); + connect(_save_act, SIGNAL(triggered()), this, SLOT(saveFigure())); + _menu->addAction(_save_act); + Reset(); // Create a timer to update plots at the specified rate @@ -145,7 +153,7 @@ DisplayForm::mousePressEvent( QMouseEvent * e) // Update the line titles if changed externally for(int i = 0; i < _nplots; i++) { - _lines_menu[i]->setTitle(_displayPlot->title(i)); + _lines_menu[i]->setTitle(_displayPlot->lineLabel(i)); } _menu->exec(e->globalPos()); } @@ -185,16 +193,22 @@ DisplayForm::setUpdateTime(double t) } void -DisplayForm::setTitle(int which, const QString &title) +DisplayForm::setTitle(const QString &title) +{ + _displayPlot->setTitle(title); +} + +void +DisplayForm::setLineLabel(int which, const QString &label) { - _displayPlot->setTitle(which, title); + _displayPlot->setLineLabel(which, label); } void -DisplayForm::setColor(int which, const QString &color) +DisplayForm::setLineColor(int which, const QString &color) { QColor c = QColor(color); - _displayPlot->setColor(which, c); + _displayPlot->setLineColor(which, c); _displayPlot->replot(); } @@ -273,3 +287,40 @@ DisplayForm::setGrid() else setGrid(false); } + +void +DisplayForm::saveFigure() +{ + QPixmap qpix = QPixmap::grabWidget(this); + + QString types = QString(tr("JPEG file (*.jpg);;Portable Network Graphics file (*.png);;Bitmap file (*.bmp);;TIFF file (*.tiff)")); + + QString filename, filetype; + QFileDialog *filebox = new QFileDialog(0, "Save Image", "./", types); + filebox->setViewMode(QFileDialog::Detail); + if(filebox->exec()) { + filename = filebox->selectedFiles()[0]; + filetype = filebox->selectedNameFilter(); + } + else { + return; + } + + if(filetype.contains(".jpg")) { + qpix.save(filename, "JPEG"); + } + else if(filetype.contains(".png")) { + qpix.save(filename, "PNG"); + } + else if(filetype.contains(".bmp")) { + qpix.save(filename, "BMP"); + } + else if(filetype.contains(".tiff")) { + qpix.save(filename, "TIFF"); + } + else { + qpix.save(filename, "JPEG"); + } + + delete filebox; +} diff --git a/gr-qtgui/lib/displayform.h b/gr-qtgui/lib/displayform.h index c14b734d44..99b0e714f4 100644 --- a/gr-qtgui/lib/displayform.h +++ b/gr-qtgui/lib/displayform.h @@ -53,8 +53,9 @@ public slots: void setUpdateTime(double t); - void setTitle(int which, const QString &title); - void setColor(int which, const QString &color); + void setTitle(const QString &title); + void setLineLabel(int which, const QString &label); + void setLineColor(int which, const QString &color); void setLineWidth(int which, int width); void setLineStyle(int which, Qt::PenStyle style); void setLineMarker(int which, QwtSymbol::Style style); @@ -66,6 +67,8 @@ public slots: void setGrid(bool on); void setGrid(); + void saveFigure(); + private slots: virtual void newData(const QEvent*) = 0; void updateGuiTimer(); @@ -99,6 +102,8 @@ protected: QList<LineMarkerMenu*> _line_marker_menu; QList<MarkerAlphaMenu*> _marker_alpha_menu; + QAction *_save_act; + QTimer *d_displayTimer; double d_update_time; }; diff --git a/gr-qtgui/lib/freq_sink_c_impl.cc b/gr-qtgui/lib/freq_sink_c_impl.cc index cf5c989c09..e495dfcc25 100644 --- a/gr-qtgui/lib/freq_sink_c_impl.cc +++ b/gr-qtgui/lib/freq_sink_c_impl.cc @@ -115,9 +115,9 @@ namespace gr { } d_main_gui = new FreqDisplayForm(d_nconnections, d_parent); - d_main_gui->SetFFTSize(d_fftsize); - d_main_gui->SetFFTWindowType(d_wintype); - d_main_gui->SetFrequencyRange(d_center_freq, + d_main_gui->setFFTSize(d_fftsize); + d_main_gui->setFFTWindowType(d_wintype); + d_main_gui->setFrequencyRange(d_center_freq, d_center_freq - d_bandwidth/2.0, d_center_freq + d_bandwidth/2.0); @@ -150,7 +150,7 @@ namespace gr { freq_sink_c_impl::set_fft_size(const int fftsize) { d_fftsize = fftsize; - d_main_gui->SetFFTSize(fftsize); + d_main_gui->setFFTSize(fftsize); } int @@ -163,7 +163,7 @@ namespace gr { freq_sink_c_impl::set_fft_average(const float fftavg) { d_fftavg = fftavg; - d_main_gui->SetFFTAverage(fftavg); + d_main_gui->setFFTAverage(fftavg); } float @@ -178,15 +178,15 @@ namespace gr { { d_center_freq = centerfreq; d_bandwidth = bandwidth; - d_main_gui->SetFrequencyRange(d_center_freq, + d_main_gui->setFrequencyRange(d_center_freq, -d_bandwidth/2.0, d_bandwidth/2.0); } void - freq_sink_c_impl::set_fft_power_db(double min, double max) + freq_sink_c_impl::set_y_axis(double min, double max) { - d_main_gui->SetFrequencyAxis(min, max); + d_main_gui->setYaxis(min, max); } void @@ -199,15 +199,21 @@ namespace gr { } void - freq_sink_c_impl::set_title(int which, const std::string &title) + freq_sink_c_impl::set_title(const std::string &title) { - d_main_gui->setTitle(which, title.c_str()); + d_main_gui->setTitle(title.c_str()); } void - freq_sink_c_impl::set_color(int which, const std::string &color) + freq_sink_c_impl::set_line_label(int which, const std::string &label) { - d_main_gui->setColor(which, color.c_str()); + d_main_gui->setLineLabel(which, label.c_str()); + } + + void + freq_sink_c_impl::set_line_color(int which, const std::string &color) + { + d_main_gui->setLineColor(which, color.c_str()); } void @@ -235,6 +241,12 @@ namespace gr { } void + freq_sink_c_impl::reset() + { + d_index = 0; + } + + void freq_sink_c_impl::fft(float *data_out, const gr_complex *data_in, int size) { if(d_window.size()) { @@ -263,7 +275,7 @@ namespace gr { freq_sink_c_impl::windowreset() { filter::firdes::win_type newwintype; - newwintype = d_main_gui->GetFFTWindowType(); + newwintype = d_main_gui->getFFTWindowType(); if(d_wintype != newwintype) { d_wintype = newwintype; buildwindow(); @@ -284,8 +296,8 @@ namespace gr { { gruel::scoped_lock lock(d_mutex); - int newfftsize = d_main_gui->GetFFTSize(); - d_fftavg = d_main_gui->GetFFTAverage(); + int newfftsize = d_main_gui->getFFTSize(); + d_fftavg = d_main_gui->getFFTAverage(); if(newfftsize != d_fftsize) { // Resize residbuf and replace data diff --git a/gr-qtgui/lib/freq_sink_c_impl.h b/gr-qtgui/lib/freq_sink_c_impl.h index 106e50497d..d162ab03bd 100644 --- a/gr-qtgui/lib/freq_sink_c_impl.h +++ b/gr-qtgui/lib/freq_sink_c_impl.h @@ -88,17 +88,20 @@ namespace gr { float fft_average() const; void set_frequency_range(const double centerfreq, const double bandwidth); - void set_fft_power_db(double min, double max); + void set_y_axis(double min, double max); void set_update_time(double t); - void set_title(int which, const std::string &title); - void set_color(int which, const std::string &color); + void set_title(const std::string &title); + void set_line_label(int which, const std::string &label); + void set_line_color(int which, const std::string &color); void set_line_width(int which, int width); void set_line_style(int which, Qt::PenStyle style); void set_line_marker(int which, QwtSymbol::Style marker); void set_size(int width, int height); + void reset(); + int work(int noutput_items, gr_vector_const_void_star &input_items, gr_vector_void_star &output_items); diff --git a/gr-qtgui/lib/freq_sink_f_impl.cc b/gr-qtgui/lib/freq_sink_f_impl.cc index 2cf43e9994..c9ec1f52aa 100644 --- a/gr-qtgui/lib/freq_sink_f_impl.cc +++ b/gr-qtgui/lib/freq_sink_f_impl.cc @@ -115,9 +115,9 @@ namespace gr { } d_main_gui = new FreqDisplayForm(d_nconnections, d_parent); - d_main_gui->SetFFTSize(d_fftsize); - d_main_gui->SetFFTWindowType(d_wintype); - d_main_gui->SetFrequencyRange(d_center_freq, + d_main_gui->setFFTSize(d_fftsize); + d_main_gui->setFFTWindowType(d_wintype); + d_main_gui->setFrequencyRange(d_center_freq, d_center_freq - d_bandwidth/2.0, d_center_freq + d_bandwidth/2.0); @@ -150,7 +150,7 @@ namespace gr { freq_sink_f_impl::set_fft_size(const int fftsize) { d_fftsize = fftsize; - d_main_gui->SetFFTSize(fftsize); + d_main_gui->setFFTSize(fftsize); } int @@ -163,7 +163,7 @@ namespace gr { freq_sink_f_impl::set_fft_average(const float fftavg) { d_fftavg = fftavg; - d_main_gui->SetFFTAverage(fftavg); + d_main_gui->setFFTAverage(fftavg); } float @@ -178,15 +178,15 @@ namespace gr { { d_center_freq = centerfreq; d_bandwidth = bandwidth; - d_main_gui->SetFrequencyRange(d_center_freq, + d_main_gui->setFrequencyRange(d_center_freq, -d_bandwidth/2.0, d_bandwidth/2.0); } void - freq_sink_f_impl::set_fft_power_db(double min, double max) + freq_sink_f_impl::set_y_axis(double min, double max) { - d_main_gui->SetFrequencyAxis(min, max); + d_main_gui->setYaxis(min, max); } void @@ -199,15 +199,21 @@ namespace gr { } void - freq_sink_f_impl::set_title(int which, const std::string &title) + freq_sink_f_impl::set_title(const std::string &title) { - d_main_gui->setTitle(which, title.c_str()); + d_main_gui->setTitle(title.c_str()); } void - freq_sink_f_impl::set_color(int which, const std::string &color) + freq_sink_f_impl::set_line_label(int which, const std::string &label) { - d_main_gui->setColor(which, color.c_str()); + d_main_gui->setLineLabel(which, label.c_str()); + } + + void + freq_sink_f_impl::set_line_color(int which, const std::string &color) + { + d_main_gui->setLineColor(which, color.c_str()); } void @@ -236,6 +242,12 @@ namespace gr { } void + freq_sink_f_impl::reset() + { + d_index = 0; + } + + void freq_sink_f_impl::fft(float *data_out, const float *data_in, int size) { // float to complex conversion @@ -267,7 +279,7 @@ namespace gr { gruel::scoped_lock lock(d_mutex); filter::firdes::win_type newwintype; - newwintype = d_main_gui->GetFFTWindowType(); + newwintype = d_main_gui->getFFTWindowType(); if(d_wintype != newwintype) { d_wintype = newwintype; buildwindow(); @@ -288,8 +300,8 @@ namespace gr { { gruel::scoped_lock lock(d_mutex); - int newfftsize = d_main_gui->GetFFTSize(); - d_fftavg = d_main_gui->GetFFTAverage(); + int newfftsize = d_main_gui->getFFTSize(); + d_fftavg = d_main_gui->getFFTAverage(); if(newfftsize != d_fftsize) { // Resize residbuf and replace data diff --git a/gr-qtgui/lib/freq_sink_f_impl.h b/gr-qtgui/lib/freq_sink_f_impl.h index a358953629..ffb2c4bf59 100644 --- a/gr-qtgui/lib/freq_sink_f_impl.h +++ b/gr-qtgui/lib/freq_sink_f_impl.h @@ -88,17 +88,20 @@ namespace gr { float fft_average() const; void set_frequency_range(const double centerfreq, const double bandwidth); - void set_fft_power_db(double min, double max); + void set_y_axis(double min, double max); void set_update_time(double t); - void set_title(int which, const std::string &title); - void set_color(int which, const std::string &color); + void set_title(const std::string &title); + void set_line_label(int which, const std::string &label); + void set_line_color(int which, const std::string &color); void set_line_width(int which, int width); void set_line_style(int which, Qt::PenStyle style); void set_line_marker(int which, QwtSymbol::Style marker); void set_size(int width, int height); + void reset(); + int work(int noutput_items, gr_vector_const_void_star &input_items, gr_vector_void_star &output_items); diff --git a/gr-qtgui/lib/freqdisplayform.cc b/gr-qtgui/lib/freqdisplayform.cc index 6f12fe5090..410bb4a048 100644 --- a/gr-qtgui/lib/freqdisplayform.cc +++ b/gr-qtgui/lib/freqdisplayform.cc @@ -47,11 +47,11 @@ FreqDisplayForm::FreqDisplayForm(int nplots, QWidget* parent) _menu->addMenu(avgmenu); _menu->addMenu(winmenu); connect(sizemenu, SIGNAL(whichTrigger(int)), - this, SLOT(SetFFTSize(const int))); + this, SLOT(setFFTSize(const int))); connect(avgmenu, SIGNAL(whichTrigger(float)), - this, SLOT(SetFFTAverage(const float))); + this, SLOT(setFFTAverage(const float))); connect(winmenu, SIGNAL(whichTrigger(gr::filter::firdes::win_type)), - this, SLOT(SetFFTWindowType(const gr::filter::firdes::win_type))); + this, SLOT(setFFTWindowType(const gr::filter::firdes::win_type))); Reset(); @@ -93,44 +93,44 @@ FreqDisplayForm::customEvent( QEvent * e) } int -FreqDisplayForm::GetFFTSize() const +FreqDisplayForm::getFFTSize() const { return _fftsize; } float -FreqDisplayForm::GetFFTAverage() const +FreqDisplayForm::getFFTAverage() const { return _fftavg; } gr::filter::firdes::win_type -FreqDisplayForm::GetFFTWindowType() const +FreqDisplayForm::getFFTWindowType() const { return _fftwintype; } void -FreqDisplayForm::SetFFTSize(const int newsize) +FreqDisplayForm::setFFTSize(const int newsize) { _fftsize = newsize; } void -FreqDisplayForm::SetFFTAverage(const float newavg) +FreqDisplayForm::setFFTAverage(const float newavg) { _fftavg = newavg; getPlot()->replot(); } void -FreqDisplayForm::SetFFTWindowType(const gr::filter::firdes::win_type newwin) +FreqDisplayForm::setFFTWindowType(const gr::filter::firdes::win_type newwin) { _fftwintype = newwin; } void -FreqDisplayForm::SetFrequencyRange(const double newCenterFrequency, +FreqDisplayForm::setFrequencyRange(const double newCenterFrequency, const double newStartFrequency, const double newStopFrequency) { @@ -156,7 +156,7 @@ FreqDisplayForm::SetFrequencyRange(const double newCenterFrequency, } void -FreqDisplayForm::SetFrequencyAxis(double min, double max) +FreqDisplayForm::setYaxis(double min, double max) { - getPlot()->set_yaxis(min, max); + getPlot()->setYaxis(min, max); } diff --git a/gr-qtgui/lib/freqdisplayform.h b/gr-qtgui/lib/freqdisplayform.h index ffce317c4f..4a7fc7d2e5 100644 --- a/gr-qtgui/lib/freqdisplayform.h +++ b/gr-qtgui/lib/freqdisplayform.h @@ -41,21 +41,21 @@ class FreqDisplayForm : public DisplayForm FrequencyDisplayPlot* getPlot(); - int GetFFTSize() const; - float GetFFTAverage() const; - gr::filter::firdes::win_type GetFFTWindowType() const; + int getFFTSize() const; + float getFFTAverage() const; + gr::filter::firdes::win_type getFFTWindowType() const; public slots: void customEvent(QEvent *e); - void SetFFTSize(const int); - void SetFFTAverage(const float); - void SetFFTWindowType(const gr::filter::firdes::win_type); + void setFFTSize(const int); + void setFFTAverage(const float); + void setFFTWindowType(const gr::filter::firdes::win_type); - void SetFrequencyRange(const double newCenterFrequency, + void setFrequencyRange(const double newCenterFrequency, const double newStartFrequency, const double newStopFrequency); - void SetFrequencyAxis(double min, double max); + void setYaxis(double min, double max); private slots: void newData(const QEvent *updateEvent); diff --git a/gr-qtgui/lib/spectrumdisplayform.cc b/gr-qtgui/lib/spectrumdisplayform.cc index 6de6caa1b1..93853cead1 100644 --- a/gr-qtgui/lib/spectrumdisplayform.cc +++ b/gr-qtgui/lib/spectrumdisplayform.cc @@ -43,8 +43,8 @@ SpectrumDisplayForm::SpectrumDisplayForm(QWidget* parent) _averagedValues = new double[_numRealDataPoints]; _historyVector = new std::vector<double*>; - _timeDomainDisplayPlot->setTitle(0, "real"); - _timeDomainDisplayPlot->setTitle(1, "imag"); + _timeDomainDisplayPlot->setLineLabel(0, "real"); + _timeDomainDisplayPlot->setLineLabel(1, "imag"); AvgLineEdit->setRange(0, 500); // Set range of Average box value from 0 to 500 MinHoldCheckBox_toggled( false ); @@ -729,7 +729,7 @@ SpectrumDisplayForm::SetConstellationPenSize(int size) void SpectrumDisplayForm::SetFrequencyAxis(double min, double max) { - _frequencyDisplayPlot->set_yaxis(min, max); + _frequencyDisplayPlot->setYaxis(min, max); } void diff --git a/gr-qtgui/lib/time_sink_c_impl.cc b/gr-qtgui/lib/time_sink_c_impl.cc index 83ab76eb6e..c8efb63721 100644 --- a/gr-qtgui/lib/time_sink_c_impl.cc +++ b/gr-qtgui/lib/time_sink_c_impl.cc @@ -34,23 +34,23 @@ namespace gr { namespace qtgui { time_sink_c::sptr - time_sink_c::make(int size, double bw, + time_sink_c::make(int size, double samp_rate, const std::string &name, int nconnections, QWidget *parent) { return gnuradio::get_initial_sptr - (new time_sink_c_impl(size, bw, name, nconnections, parent)); + (new time_sink_c_impl(size, samp_rate, name, nconnections, parent)); } - time_sink_c_impl::time_sink_c_impl(int size, double bw, + time_sink_c_impl::time_sink_c_impl(int size, double samp_rate, const std::string &name, int nconnections, QWidget *parent) : gr_sync_block("time_sink_c", gr_make_io_signature(nconnections, nconnections, sizeof(gr_complex)), gr_make_io_signature(0, 0, 0)), - d_size(size), d_bandwidth(bw), d_name(name), + d_size(size), d_samp_rate(samp_rate), d_name(name), d_nconnections(2*nconnections), d_parent(parent) { d_main_gui = NULL; @@ -91,7 +91,8 @@ namespace gr { } d_main_gui = new TimeDisplayForm(d_nconnections, d_parent); - d_main_gui->SetNPoints(d_size); + d_main_gui->setNPoints(d_size); + d_main_gui->setSampleRate(d_samp_rate); // initialize update time to 10 times a second set_update_time(0.1); @@ -119,9 +120,9 @@ namespace gr { } void - time_sink_c_impl::set_time_domain_axis(double min, double max) + time_sink_c_impl::set_y_axis(double min, double max) { - d_main_gui->setTimeDomainAxis(min, max); + d_main_gui->setYaxis(min, max); } void @@ -134,15 +135,21 @@ namespace gr { } void - time_sink_c_impl::set_title(int which, const std::string &title) + time_sink_c_impl::set_title(const std::string &title) { - d_main_gui->setTitle(which, title.c_str()); + d_main_gui->setTitle(title.c_str()); } void - time_sink_c_impl::set_color(int which, const std::string &color) + time_sink_c_impl::set_line_label(int which, const std::string &label) { - d_main_gui->setColor(which, color.c_str()); + d_main_gui->setLineLabel(which, label.c_str()); + } + + void + time_sink_c_impl::set_line_color(int which, const std::string &color) + { + d_main_gui->setLineColor(which, color.c_str()); } void @@ -188,18 +195,38 @@ namespace gr { d_size = newsize; d_index = 0; - d_main_gui->SetNPoints(d_size); + d_main_gui->setNPoints(d_size); } } void + time_sink_c_impl::set_samp_rate(const double samp_rate) + { + gruel::scoped_lock lock(d_mutex); + d_samp_rate = samp_rate; + d_main_gui->setSampleRate(d_samp_rate); + } + + void time_sink_c_impl::npoints_resize() { - int newsize = d_main_gui->GetNPoints(); + int newsize = d_main_gui->getNPoints(); set_nsamps(newsize); } int + time_sink_c_impl::nsamps() const + { + return d_size; + } + + void + time_sink_c_impl::reset() + { + d_index = 0; + } + + int time_sink_c_impl::work(int noutput_items, gr_vector_const_void_star &input_items, gr_vector_void_star &output_items) diff --git a/gr-qtgui/lib/time_sink_c_impl.h b/gr-qtgui/lib/time_sink_c_impl.h index 0cace14890..66980dd79e 100644 --- a/gr-qtgui/lib/time_sink_c_impl.h +++ b/gr-qtgui/lib/time_sink_c_impl.h @@ -39,7 +39,7 @@ namespace gr { gruel::mutex d_mutex; int d_size; - double d_bandwidth; + double d_samp_rate; std::string d_name; int d_nconnections; @@ -55,7 +55,7 @@ namespace gr { void npoints_resize(); public: - time_sink_c_impl(int size, double bw, + time_sink_c_impl(int size, double samp_rate, const std::string &name, int nconnections, QWidget *parent=NULL); @@ -65,17 +65,23 @@ namespace gr { QWidget* qwidget(); PyObject* pyqwidget(); - void set_time_domain_axis(double min, double max); + void set_y_axis(double min, double max); void set_update_time(double t); - void set_title(int which, const std::string &title); - void set_color(int which, const std::string &color); + void set_title(const std::string &title); + void set_line_label(int which, const std::string &label); + void set_line_color(int which, const std::string &color); void set_line_width(int which, int width); void set_line_style(int which, Qt::PenStyle style); void set_line_marker(int which, QwtSymbol::Style marker); void set_nsamps(const int size); + void set_samp_rate(const double samp_rate); void set_size(int width, int height); + int nsamps() const; + + void reset(); + int work(int noutput_items, gr_vector_const_void_star &input_items, gr_vector_void_star &output_items); diff --git a/gr-qtgui/lib/time_sink_f_impl.cc b/gr-qtgui/lib/time_sink_f_impl.cc index 4b965b648c..562da3ef86 100644 --- a/gr-qtgui/lib/time_sink_f_impl.cc +++ b/gr-qtgui/lib/time_sink_f_impl.cc @@ -34,23 +34,23 @@ namespace gr { namespace qtgui { time_sink_f::sptr - time_sink_f::make(int size, double bw, + time_sink_f::make(int size, double samp_rate, const std::string &name, int nconnections, QWidget *parent) { return gnuradio::get_initial_sptr - (new time_sink_f_impl(size, bw, name, nconnections, parent)); + (new time_sink_f_impl(size, samp_rate, name, nconnections, parent)); } - time_sink_f_impl::time_sink_f_impl(int size, double bw, + time_sink_f_impl::time_sink_f_impl(int size, double samp_rate, const std::string &name, int nconnections, QWidget *parent) : gr_sync_block("time_sink_f", gr_make_io_signature(nconnections, nconnections, sizeof(float)), gr_make_io_signature(0, 0, 0)), - d_size(size), d_bandwidth(bw), d_name(name), + d_size(size), d_samp_rate(samp_rate), d_name(name), d_nconnections(nconnections), d_parent(parent) { d_main_gui = NULL; @@ -91,7 +91,8 @@ namespace gr { } d_main_gui = new TimeDisplayForm(d_nconnections, d_parent); - d_main_gui->SetNPoints(d_size); + d_main_gui->setNPoints(d_size); + d_main_gui->setSampleRate(d_samp_rate); // initialize update time to 10 times a second set_update_time(0.1); @@ -119,9 +120,9 @@ namespace gr { } void - time_sink_f_impl::set_time_domain_axis(double min, double max) + time_sink_f_impl::set_y_axis(double min, double max) { - d_main_gui->setTimeDomainAxis(min, max); + d_main_gui->setYaxis(min, max); } void @@ -134,15 +135,21 @@ namespace gr { } void - time_sink_f_impl::set_title(int which, const std::string &title) + time_sink_f_impl::set_title(const std::string &title) { - d_main_gui->setTitle(which, title.c_str()); + d_main_gui->setTitle(title.c_str()); } void - time_sink_f_impl::set_color(int which, const std::string &color) + time_sink_f_impl::set_line_label(int which, const std::string &label) { - d_main_gui->setColor(which, color.c_str()); + d_main_gui->setLineLabel(which, label.c_str()); + } + + void + time_sink_f_impl::set_line_color(int which, const std::string &color) + { + d_main_gui->setLineColor(which, color.c_str()); } void @@ -188,17 +195,37 @@ namespace gr { d_size = newsize; d_index = 0; - d_main_gui->SetNPoints(d_size); + d_main_gui->setNPoints(d_size); } } void + time_sink_f_impl::set_samp_rate(const double samp_rate) + { + gruel::scoped_lock lock(d_mutex); + d_samp_rate = samp_rate; + d_main_gui->setSampleRate(d_samp_rate); + } + + int + time_sink_f_impl::nsamps() const + { + return d_size; + } + + void time_sink_f_impl::npoints_resize() { - int newsize = d_main_gui->GetNPoints(); + int newsize = d_main_gui->getNPoints(); set_nsamps(newsize); } + void + time_sink_f_impl::reset() + { + d_index = 0; + } + int time_sink_f_impl::work(int noutput_items, gr_vector_const_void_star &input_items, diff --git a/gr-qtgui/lib/time_sink_f_impl.h b/gr-qtgui/lib/time_sink_f_impl.h index 69c07fbdab..dd1dd6f699 100644 --- a/gr-qtgui/lib/time_sink_f_impl.h +++ b/gr-qtgui/lib/time_sink_f_impl.h @@ -39,7 +39,7 @@ namespace gr { gruel::mutex d_mutex; int d_size; - double d_bandwidth; + double d_samp_rate; std::string d_name; int d_nconnections; @@ -55,7 +55,7 @@ namespace gr { void npoints_resize(); public: - time_sink_f_impl(int size, double bw, + time_sink_f_impl(int size, double samp_rate, const std::string &name, int nconnections, QWidget *parent=NULL); @@ -65,17 +65,23 @@ namespace gr { QWidget* qwidget(); PyObject* pyqwidget(); - void set_time_domain_axis(double min, double max); + void set_y_axis(double min, double max); void set_update_time(double t); - void set_title(int which, const std::string &title); - void set_color(int which, const std::string &color); + void set_title(const std::string &title); + void set_line_label(int which, const std::string &label); + void set_line_color(int which, const std::string &color); void set_line_width(int which, int width); void set_line_style(int which, Qt::PenStyle style); void set_line_marker(int which, QwtSymbol::Style marker); void set_nsamps(const int newsize); + void set_samp_rate(const double samp_rate); void set_size(int width, int height); + int nsamps() const; + + void reset(); + int work(int noutput_items, gr_vector_const_void_star &input_items, gr_vector_void_star &output_items); diff --git a/gr-qtgui/lib/timedisplayform.cc b/gr-qtgui/lib/timedisplayform.cc index 3d94d20094..e3c7f8a60b 100644 --- a/gr-qtgui/lib/timedisplayform.cc +++ b/gr-qtgui/lib/timedisplayform.cc @@ -39,7 +39,7 @@ TimeDisplayForm::TimeDisplayForm(int nplots, QWidget* parent) NPointsMenu *nptsmenu = new NPointsMenu(this); _menu->addAction(nptsmenu); connect(nptsmenu, SIGNAL(whichTrigger(int)), - this, SLOT(SetNPoints(const int))); + this, SLOT(setNPoints(const int))); Reset(); @@ -82,41 +82,36 @@ TimeDisplayForm::customEvent(QEvent * 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; - - getPlot()->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::setTimeDomainAxis(double min, double max) +TimeDisplayForm::setYaxis(double min, double max) { getPlot()->setYaxis(min, max); } int -TimeDisplayForm::GetNPoints() const +TimeDisplayForm::getNPoints() const { return d_npoints; } void -TimeDisplayForm::SetNPoints(const int npoints) +TimeDisplayForm::setNPoints(const int npoints) { d_npoints = npoints; } diff --git a/gr-qtgui/lib/timedisplayform.h b/gr-qtgui/lib/timedisplayform.h index 806fc4053f..df8803c145 100644 --- a/gr-qtgui/lib/timedisplayform.h +++ b/gr-qtgui/lib/timedisplayform.h @@ -40,16 +40,14 @@ class TimeDisplayForm : public DisplayForm TimeDomainDisplayPlot* getPlot(); - int GetNPoints() const; + int getNPoints() const; public slots: void customEvent(QEvent * e); - void setFrequencyRange(const double newCenterFrequency, - const double newStartFrequency, - const double newStopFrequency); - void setTimeDomainAxis(double min, double max); - void SetNPoints(const int); + void setSampleRate(const double samprate); + void setYaxis(double min, double max); + void setNPoints(const int); private slots: void newData(const QEvent*); diff --git a/gr-qtgui/lib/waterfall_sink_c_impl.cc b/gr-qtgui/lib/waterfall_sink_c_impl.cc index 0611d37974..7659394e77 100644 --- a/gr-qtgui/lib/waterfall_sink_c_impl.cc +++ b/gr-qtgui/lib/waterfall_sink_c_impl.cc @@ -191,13 +191,19 @@ namespace gr { void waterfall_sink_c_impl::set_title(const std::string &title) { - d_main_gui->setTitle(0, title.c_str()); + d_main_gui->setTitle(title.c_str()); } void - waterfall_sink_c_impl::set_color(const std::string &color) + waterfall_sink_c_impl::set_line_label(const std::string &label) { - d_main_gui->setColor(0, color.c_str()); + d_main_gui->setLineLabel(0, label.c_str()); + } + + void + waterfall_sink_c_impl::set_line_color(const std::string &color) + { + d_main_gui->setLineColor(0, color.c_str()); } void diff --git a/gr-qtgui/lib/waterfall_sink_c_impl.h b/gr-qtgui/lib/waterfall_sink_c_impl.h index b51b1e66eb..ea9ae9736b 100644 --- a/gr-qtgui/lib/waterfall_sink_c_impl.h +++ b/gr-qtgui/lib/waterfall_sink_c_impl.h @@ -88,7 +88,8 @@ namespace gr { void set_update_time(double t); void set_title(const std::string &title); - void set_color(const std::string &color); + void set_line_label(const std::string &label); + void set_line_color(const std::string &color); void set_line_width(int width); void set_line_style(Qt::PenStyle style); void set_line_marker(QwtSymbol::Style marker); diff --git a/gr-qtgui/lib/waterfall_sink_f_impl.cc b/gr-qtgui/lib/waterfall_sink_f_impl.cc index 3fdb2b795a..0e8a4dd3da 100644 --- a/gr-qtgui/lib/waterfall_sink_f_impl.cc +++ b/gr-qtgui/lib/waterfall_sink_f_impl.cc @@ -191,13 +191,19 @@ namespace gr { void waterfall_sink_f_impl::set_title(const std::string &title) { - d_main_gui->setTitle(0, title.c_str()); + d_main_gui->setTitle(title.c_str()); } void - waterfall_sink_f_impl::set_color(const std::string &color) + waterfall_sink_f_impl::set_line_label(const std::string &label) { - d_main_gui->setColor(0, color.c_str()); + d_main_gui->setLineLabel(0, label.c_str()); + } + + void + waterfall_sink_f_impl::set_line_color(const std::string &color) + { + d_main_gui->setLineColor(0, color.c_str()); } void diff --git a/gr-qtgui/lib/waterfall_sink_f_impl.h b/gr-qtgui/lib/waterfall_sink_f_impl.h index 684e1dfb03..f0c4badb60 100644 --- a/gr-qtgui/lib/waterfall_sink_f_impl.h +++ b/gr-qtgui/lib/waterfall_sink_f_impl.h @@ -89,7 +89,8 @@ namespace gr { void set_update_time(double t); void set_title(const std::string &title); - void set_color(const std::string &color); + void set_line_label(const std::string &label); + void set_line_color(const std::string &color); void set_line_width(int width); void set_line_style(Qt::PenStyle style); void set_line_marker(QwtSymbol::Style marker); |