summaryrefslogtreecommitdiff
path: root/gr-qtgui/lib/freqdisplayform.cc
diff options
context:
space:
mode:
Diffstat (limited to 'gr-qtgui/lib/freqdisplayform.cc')
-rw-r--r--gr-qtgui/lib/freqdisplayform.cc58
1 files changed, 55 insertions, 3 deletions
diff --git a/gr-qtgui/lib/freqdisplayform.cc b/gr-qtgui/lib/freqdisplayform.cc
index 16576b387b..e9968df0b2 100644
--- a/gr-qtgui/lib/freqdisplayform.cc
+++ b/gr-qtgui/lib/freqdisplayform.cc
@@ -1,6 +1,6 @@
/* -*- c++ -*- */
/*
- * Copyright 2012 Free Software Foundation, Inc.
+ * Copyright 2012,2014 Free Software Foundation, Inc.
*
* This file is part of GNU Radio
*
@@ -39,6 +39,8 @@ FreqDisplayForm::FreqDisplayForm(int nplots, QWidget* parent)
d_num_real_data_points = 1024;
d_fftsize = 1024;
d_fftavg = 1.0;
+ d_clicked = false;
+ d_clicked_freq = 0;
d_sizemenu = new FFTSizeMenu(this);
d_avgmenu = new FFTAverageMenu(this);
@@ -53,6 +55,15 @@ FreqDisplayForm::FreqDisplayForm(int nplots, QWidget* parent)
connect(d_winmenu, SIGNAL(whichTrigger(gr::filter::firdes::win_type)),
this, SLOT(setFFTWindowType(const gr::filter::firdes::win_type)));
+ d_clearmax_act = new QAction("Clear Max", this);
+ d_menu->addAction(d_clearmax_act);
+ connect(d_clearmax_act, SIGNAL(triggered()),
+ this, SLOT(clearMaxHold()));
+ d_clearmin_act = new QAction("Clear Min", this);
+ d_menu->addAction(d_clearmin_act);
+ connect(d_clearmin_act, SIGNAL(triggered()),
+ this, SLOT(clearMinHold()));
+
Reset();
connect(d_display_plot, SIGNAL(plotPointSelected(const QPointF)),
@@ -90,6 +101,10 @@ FreqDisplayForm::customEvent( QEvent * e)
if(e->type() == FreqUpdateEvent::Type()) {
newData(e);
}
+ else if(e->type() == SpectrumFrequencyRangeEventType) {
+ SetFreqEvent *fevent = (SetFreqEvent*)e;
+ setFrequencyRange(fevent->getCenterFrequency(), fevent->getBandwidth());
+ }
}
int
@@ -147,14 +162,14 @@ FreqDisplayForm::setFrequencyRange(const double centerfreq,
std::string strunits[4] = {"Hz", "kHz", "MHz", "GHz"};
double units10 = floor(log10(bandwidth));
double units3 = std::max(floor(units10 / 3.0), 0.0);
- double units = pow(10, (units10-fmod(units10, 3.0)));
+ d_units = pow(10, (units10-fmod(units10, 3.0)));
int iunit = static_cast<int>(units3);
d_center_freq = centerfreq;
d_samp_rate = bandwidth;
getPlot()->setFrequencyRange(centerfreq, bandwidth,
- units, strunits[iunit]);
+ d_units, strunits[iunit]);
}
void
@@ -177,3 +192,40 @@ FreqDisplayForm::autoScale(bool en)
getPlot()->setAutoScale(d_autoscale_state);
getPlot()->replot();
}
+
+void
+FreqDisplayForm::clearMaxHold()
+{
+ getPlot()->clearMaxData();
+}
+
+void
+FreqDisplayForm::clearMinHold()
+{
+ getPlot()->clearMinData();
+}
+
+void
+FreqDisplayForm::onPlotPointSelected(const QPointF p)
+{
+ d_clicked = true;
+ d_clicked_freq = d_units*p.x();
+}
+
+bool
+FreqDisplayForm::checkClicked()
+{
+ if(d_clicked) {
+ d_clicked = false;
+ return true;
+ }
+ else {
+ return false;
+ }
+}
+
+float
+FreqDisplayForm::getClickedFreq() const
+{
+ return d_clicked_freq;
+}