diff options
Diffstat (limited to 'gr-qtgui/src/lib')
-rw-r--r-- | gr-qtgui/src/lib/ConstellationDisplayPlot.cc | 22 | ||||
-rw-r--r-- | gr-qtgui/src/lib/ConstellationDisplayPlot.h | 9 | ||||
-rw-r--r-- | gr-qtgui/src/lib/FrequencyDisplayPlot.cc | 8 | ||||
-rw-r--r-- | gr-qtgui/src/lib/FrequencyDisplayPlot.h | 2 | ||||
-rw-r--r-- | gr-qtgui/src/lib/TimeDomainDisplayPlot.cc | 13 | ||||
-rw-r--r-- | gr-qtgui/src/lib/TimeDomainDisplayPlot.h | 3 | ||||
-rw-r--r-- | gr-qtgui/src/lib/Waterfall3DDisplayPlot.cc | 91 | ||||
-rw-r--r-- | gr-qtgui/src/lib/Waterfall3DDisplayPlot.h | 29 | ||||
-rw-r--r-- | gr-qtgui/src/lib/WaterfallDisplayPlot.cc | 149 | ||||
-rw-r--r-- | gr-qtgui/src/lib/WaterfallDisplayPlot.h | 3 | ||||
-rw-r--r-- | gr-qtgui/src/lib/spectrumdisplayform.cc | bin | 30549 -> 27246 bytes | |||
-rw-r--r-- | gr-qtgui/src/lib/spectrumdisplayform.h | 2 | ||||
-rw-r--r-- | gr-qtgui/src/lib/spectrumdisplayform.ui | 1388 |
13 files changed, 972 insertions, 747 deletions
diff --git a/gr-qtgui/src/lib/ConstellationDisplayPlot.cc b/gr-qtgui/src/lib/ConstellationDisplayPlot.cc index 10355f9f0..792096ded 100644 --- a/gr-qtgui/src/lib/ConstellationDisplayPlot.cc +++ b/gr-qtgui/src/lib/ConstellationDisplayPlot.cc @@ -32,7 +32,9 @@ protected: } }; -ConstellationDisplayPlot::ConstellationDisplayPlot(QWidget* parent):QwtPlot(parent){ +ConstellationDisplayPlot::ConstellationDisplayPlot(QWidget* parent) + : QwtPlot(parent) +{ timespec_reset(&_lastReplot); resize(parent->width(), parent->height()); @@ -106,7 +108,8 @@ ConstellationDisplayPlot::ConstellationDisplayPlot(QWidget* parent):QwtPlot(pare this, SLOT( LegendEntryChecked(QwtPlotItem *, bool ) )); } -ConstellationDisplayPlot::~ConstellationDisplayPlot(){ +ConstellationDisplayPlot::~ConstellationDisplayPlot() +{ delete[] _realDataPoints; delete[] _imagDataPoints; @@ -149,7 +152,16 @@ void ConstellationDisplayPlot::replot(){ } } -void ConstellationDisplayPlot::PlotNewData(const double* realDataPoints, const double* imagDataPoints, const int64_t numDataPoints){ +void +ConstellationDisplayPlot::resizeSlot( QSize *s ) +{ + resize(s->width(), s->height()); +} + +void ConstellationDisplayPlot::PlotNewData(const double* realDataPoints, + const double* imagDataPoints, + const int64_t numDataPoints) +{ if(numDataPoints > 0){ if(numDataPoints != _numPoints){ @@ -177,7 +189,9 @@ void ConstellationDisplayPlot::PlotNewData(const double* realDataPoints, const d } } -void ConstellationDisplayPlot::LegendEntryChecked(QwtPlotItem* plotItem, bool on){ +void +ConstellationDisplayPlot::LegendEntryChecked(QwtPlotItem* plotItem, bool on) +{ plotItem->setVisible(!on); } diff --git a/gr-qtgui/src/lib/ConstellationDisplayPlot.h b/gr-qtgui/src/lib/ConstellationDisplayPlot.h index 612cd2b39..1b73e7cc6 100644 --- a/gr-qtgui/src/lib/ConstellationDisplayPlot.h +++ b/gr-qtgui/src/lib/ConstellationDisplayPlot.h @@ -14,14 +14,16 @@ #include <highResTimeFunctions.h> #include <qwt_symbol.h> -class ConstellationDisplayPlot:public QwtPlot{ +class ConstellationDisplayPlot : public QwtPlot +{ Q_OBJECT public: ConstellationDisplayPlot(QWidget*); virtual ~ConstellationDisplayPlot(); - void PlotNewData(const double* realDataPoints, const double* imagDataPoints, + void PlotNewData(const double* realDataPoints, + const double* imagDataPoints, const int64_t numDataPoints); virtual void replot(); @@ -31,6 +33,9 @@ public: void set_axis(double xmin, double xmax, double ymin, double ymax); +public slots: + void resizeSlot( QSize *s ); + protected slots: void LegendEntryChecked(QwtPlotItem *plotItem, bool on); diff --git a/gr-qtgui/src/lib/FrequencyDisplayPlot.cc b/gr-qtgui/src/lib/FrequencyDisplayPlot.cc index e299157f5..7deff8543 100644 --- a/gr-qtgui/src/lib/FrequencyDisplayPlot.cc +++ b/gr-qtgui/src/lib/FrequencyDisplayPlot.cc @@ -93,7 +93,7 @@ FrequencyDisplayPlot::FrequencyDisplayPlot(QWidget* parent) timespec_reset(&_lastReplot); resize(parent->width(), parent->height()); - + _displayIntervalTime = (1.0/10.0); // 1/10 of a second between updates _useCenterFrequencyFlag = false; @@ -314,6 +314,12 @@ FrequencyDisplayPlot::replot() _displayIntervalTime = differenceTime; } } + +void +FrequencyDisplayPlot::resizeSlot( QSize *s ) +{ + resize(s->width(), s->height()); +} void FrequencyDisplayPlot::PlotNewData(const double* dataPoints, const int64_t numDataPoints, diff --git a/gr-qtgui/src/lib/FrequencyDisplayPlot.h b/gr-qtgui/src/lib/FrequencyDisplayPlot.h index 5e8282962..785efe694 100644 --- a/gr-qtgui/src/lib/FrequencyDisplayPlot.h +++ b/gr-qtgui/src/lib/FrequencyDisplayPlot.h @@ -43,12 +43,14 @@ public: void set_yaxis(double min, double max); public slots: + void resizeSlot( QSize *e ); void SetLowerIntensityLevel(const double); void SetUpperIntensityLevel(const double); protected: private: + void _resetXAxisPoints(); double _startFrequency; diff --git a/gr-qtgui/src/lib/TimeDomainDisplayPlot.cc b/gr-qtgui/src/lib/TimeDomainDisplayPlot.cc index 6d8ef6ee4..cb18b4418 100644 --- a/gr-qtgui/src/lib/TimeDomainDisplayPlot.cc +++ b/gr-qtgui/src/lib/TimeDomainDisplayPlot.cc @@ -141,8 +141,8 @@ TimeDomainDisplayPlot::set_xaxis(double min, double max) } -void TimeDomainDisplayPlot::replot(){ - +void TimeDomainDisplayPlot::replot() +{ const timespec startTime = get_highres_clock(); QwtPlot::replot(); @@ -156,9 +156,16 @@ void TimeDomainDisplayPlot::replot(){ } } +void +TimeDomainDisplayPlot::resizeSlot( QSize *s ) +{ + resize(s->width(), s->height()); +} + void TimeDomainDisplayPlot::PlotNewData(const double* realDataPoints, const double* imagDataPoints, - const int64_t numDataPoints){ + const int64_t numDataPoints) +{ if(numDataPoints > 0){ if(numDataPoints != _numPoints){ diff --git a/gr-qtgui/src/lib/TimeDomainDisplayPlot.h b/gr-qtgui/src/lib/TimeDomainDisplayPlot.h index 56d44539d..8d98abac6 100644 --- a/gr-qtgui/src/lib/TimeDomainDisplayPlot.h +++ b/gr-qtgui/src/lib/TimeDomainDisplayPlot.h @@ -30,6 +30,9 @@ public: void set_yaxis(double min, double max); void set_xaxis(double min, double max); +public slots: + void resizeSlot( QSize *s ); + protected slots: void LegendEntryChecked(QwtPlotItem *plotItem, bool on); diff --git a/gr-qtgui/src/lib/Waterfall3DDisplayPlot.cc b/gr-qtgui/src/lib/Waterfall3DDisplayPlot.cc index 1b6650613..f676cb4af 100644 --- a/gr-qtgui/src/lib/Waterfall3DDisplayPlot.cc +++ b/gr-qtgui/src/lib/Waterfall3DDisplayPlot.cc @@ -15,15 +15,21 @@ Waterfall3DColorMap::~Waterfall3DColorMap(){ } -Qwt3D::RGBA Waterfall3DColorMap::operator()(double, double, double z)const{ +Qwt3D::RGBA +Waterfall3DColorMap::operator()(double, double, double z) const +{ return Qwt3D::RGBA(Qwt3D::Qt2GL(color(_interval, z))); } -void Waterfall3DColorMap::SetInterval(const double minValue, const double maxValue){ +void +Waterfall3DColorMap::SetInterval(const double minValue, const double maxValue) +{ _interval.setInterval(minValue, maxValue); } -Qwt3D::ColorVector& Waterfall3DColorMap::createVector(Qwt3D::ColorVector& vec) { +Qwt3D::ColorVector& +Waterfall3DColorMap::createVector(Qwt3D::ColorVector& vec) +{ // Generate 100 interval values and then return those Qwt3D::ColorVector colorVec; for(unsigned int number = 0; number < 100; number++){ @@ -41,7 +47,8 @@ const int Waterfall3DDisplayPlot::INTENSITY_COLOR_MAP_TYPE_BLACK_HOT; const int Waterfall3DDisplayPlot::INTENSITY_COLOR_MAP_TYPE_INCANDESCENT; const int Waterfall3DDisplayPlot::INTENSITY_COLOR_MAP_TYPE_USER_DEFINED; -Waterfall3DDisplayPlot::Waterfall3DDisplayPlot(QWidget* parent):Qwt3D::SurfacePlot(parent){ +Waterfall3DDisplayPlot::Waterfall3DDisplayPlot(QWidget* parent):Qwt3D::SurfacePlot(parent) +{ _startFrequency = 0; _stopFrequency = 4000; @@ -76,11 +83,14 @@ Waterfall3DDisplayPlot::Waterfall3DDisplayPlot(QWidget* parent):Qwt3D::SurfacePl enableMouse(true); } -Waterfall3DDisplayPlot::~Waterfall3DDisplayPlot(){ +Waterfall3DDisplayPlot::~Waterfall3DDisplayPlot() +{ delete _waterfallData; } -void Waterfall3DDisplayPlot::Init(){ +void +Waterfall3DDisplayPlot::Init() +{ if(!_initialized && initializedGL()){ resize(parentWidget()->width(), parentWidget()->height()); @@ -97,7 +107,9 @@ void Waterfall3DDisplayPlot::Init(){ } } -void Waterfall3DDisplayPlot::Reset(){ +void +Waterfall3DDisplayPlot::Reset() +{ _waterfallData->ResizeData(_startFrequency, _stopFrequency, _numPoints); _waterfallData->Reset(); @@ -116,7 +128,8 @@ Waterfall3DDisplayPlot::SetFrequencyRange(const double constStartFreq, const double constStopFreq, const double constCenterFreq, const bool useCenterFrequencyFlag, - const double units, const std::string &strunits) + const double units, + const std::string &strunits) { double startFreq = constStartFreq / units; double stopFreq = constStopFreq / units; @@ -138,8 +151,10 @@ Waterfall3DDisplayPlot::SetFrequencyRange(const double constStartFreq, } } -bool Waterfall3DDisplayPlot::loadFromData(double** data, unsigned int columns, unsigned int rows - ,double minx, double maxx, double miny, double maxy){ +bool +Waterfall3DDisplayPlot::loadFromData(double** data, unsigned int columns, unsigned int rows + ,double minx, double maxx, double miny, double maxy) +{ Qwt3D::GridData* gridPtr = (Qwt3D::GridData*)actualData_p; @@ -196,15 +211,25 @@ bool Waterfall3DDisplayPlot::loadFromData(double** data, unsigned int columns, u return true; } -double Waterfall3DDisplayPlot::GetStartFrequency()const{ +double +Waterfall3DDisplayPlot::GetStartFrequency() const +{ return _startFrequency; } -double Waterfall3DDisplayPlot::GetStopFrequency()const{ +double +Waterfall3DDisplayPlot::GetStopFrequency() const +{ return _stopFrequency; } -void Waterfall3DDisplayPlot::PlotNewData(const double* dataPoints, const int64_t numDataPoints, const double timePerFFT, const timespec timestamp, const int droppedFrames){ +void +Waterfall3DDisplayPlot::PlotNewData(const double* dataPoints, + const int64_t numDataPoints, + const double timePerFFT, + const timespec timestamp, + const int droppedFrames) +{ if(numDataPoints > 0){ if(numDataPoints != _numPoints){ _numPoints = numDataPoints; @@ -238,7 +263,10 @@ void Waterfall3DDisplayPlot::PlotNewData(const double* dataPoints, const int64_t } } -void Waterfall3DDisplayPlot::SetIntensityRange(const double minIntensity, const double maxIntensity){ +void +Waterfall3DDisplayPlot::SetIntensityRange(const double minIntensity, + const double maxIntensity) +{ _waterfallData->SetFloorValue(minIntensity); _waterfallData->setMinZ(0); _waterfallData->setMaxZ(maxIntensity-minIntensity); @@ -248,11 +276,14 @@ void Waterfall3DDisplayPlot::SetIntensityRange(const double minIntensity, const emit UpdatedLowerIntensityLevel(minIntensity); emit UpdatedUpperIntensityLevel(maxIntensity); - SetIntensityColorMapType(_intensityColorMapType, _userDefinedLowIntensityColor, _userDefinedLowIntensityColor, true); + SetIntensityColorMapType(_intensityColorMapType, + _userDefinedLowIntensityColor, + _userDefinedLowIntensityColor, true); } -void Waterfall3DDisplayPlot::replot(){ - +void +Waterfall3DDisplayPlot::replot() +{ if(!_initialized){ Init(); } @@ -283,11 +314,25 @@ void Waterfall3DDisplayPlot::replot(){ } } -int Waterfall3DDisplayPlot::GetIntensityColorMapType()const{ +void +Waterfall3DDisplayPlot::resizeSlot( QSize *s ) +{ + resize(s->width(), s->height()); +} + +int +Waterfall3DDisplayPlot::GetIntensityColorMapType() const +{ return _intensityColorMapType; } -void Waterfall3DDisplayPlot::SetIntensityColorMapType(const int newType, const QColor lowColor, const QColor highColor, const bool forceFlag, const bool noReplotFlag){ +void +Waterfall3DDisplayPlot::SetIntensityColorMapType(const int newType, + const QColor lowColor, + const QColor highColor, + const bool forceFlag, + const bool noReplotFlag) +{ if(((_intensityColorMapType != newType) || forceFlag) || ((newType == INTENSITY_COLOR_MAP_TYPE_USER_DEFINED) && (lowColor.isValid() && highColor.isValid()))){ @@ -350,11 +395,15 @@ void Waterfall3DDisplayPlot::SetIntensityColorMapType(const int newType, const Q } } -const QColor Waterfall3DDisplayPlot::GetUserDefinedLowIntensityColor()const{ +const QColor +Waterfall3DDisplayPlot::GetUserDefinedLowIntensityColor() const +{ return _userDefinedLowIntensityColor; } -const QColor Waterfall3DDisplayPlot::GetUserDefinedHighIntensityColor()const{ +const QColor +Waterfall3DDisplayPlot::GetUserDefinedHighIntensityColor() const +{ return _userDefinedHighIntensityColor; } diff --git a/gr-qtgui/src/lib/Waterfall3DDisplayPlot.h b/gr-qtgui/src/lib/Waterfall3DDisplayPlot.h index f46f260e3..272bdf697 100644 --- a/gr-qtgui/src/lib/Waterfall3DDisplayPlot.h +++ b/gr-qtgui/src/lib/Waterfall3DDisplayPlot.h @@ -10,7 +10,8 @@ #include <qwt3d_color.h> #include <qwt_color_map.h> -class Waterfall3DColorMap:public Qwt3D::Color, public QwtLinearColorMap{ +class Waterfall3DColorMap: public Qwt3D::Color, public QwtLinearColorMap +{ public: Waterfall3DColorMap(); virtual ~Waterfall3DColorMap(); @@ -75,12 +76,14 @@ class Waterfall3DDisplayPlot:public Qwt3D::SurfacePlot{ virtual QString ticLabel(unsigned int idx) const{ if (idx<majors_p.size()) { - const timespec markerTime = timespec_add(_plot->_dataTimestamp, -(_plot->_timePerFFT) * majors_p[idx]); + const timespec markerTime = timespec_add(_plot->_dataTimestamp, + -(_plot->_timePerFFT) * majors_p[idx]); struct tm timeTm; gmtime_r(&markerTime.tv_sec, &timeTm); char* timeBuffer = new char[128]; - snprintf(timeBuffer, 128, "%02d:%02d:%02d.%03ld", timeTm.tm_hour, timeTm.tm_min, timeTm.tm_sec, (markerTime.tv_nsec / 1000000)); + snprintf(timeBuffer, 128, "%02d:%02d:%02d.%03ld", timeTm.tm_hour, + timeTm.tm_min, timeTm.tm_sec, (markerTime.tv_nsec / 1000000)); QString returnBuffer(timeBuffer); delete[] timeBuffer; return returnBuffer; @@ -100,10 +103,14 @@ class Waterfall3DDisplayPlot:public Qwt3D::SurfacePlot{ double _centerFrequency; bool _useCenterFrequencyFlag; public: - FrequencyScale(bool useCenterFrequencyFlag, double centerFrequency):_centerFrequency(centerFrequency),_useCenterFrequencyFlag(useCenterFrequencyFlag){} + FrequencyScale(bool useCenterFrequencyFlag, double centerFrequency) + : _centerFrequency(centerFrequency),_useCenterFrequencyFlag(useCenterFrequencyFlag) + {} + virtual ~FrequencyScale(){} - virtual QString ticLabel(unsigned int idx) const{ + virtual QString ticLabel(unsigned int idx) const + { if (idx<majors_p.size()) { if(!_useCenterFrequencyFlag){ @@ -137,14 +144,18 @@ public: double GetStartFrequency()const; double GetStopFrequency()const; - void PlotNewData(const double* dataPoints, const int64_t numDataPoints, const double timePerFFT, const timespec timestamp, const int droppedFrames); + void PlotNewData(const double* dataPoints, const int64_t numDataPoints, + const double timePerFFT, const timespec timestamp, + const int droppedFrames); void SetIntensityRange(const double minIntensity, const double maxIntensity); virtual void replot(void); int GetIntensityColorMapType()const; - void SetIntensityColorMapType( const int, const QColor, const QColor, const bool forceFlag = false, const bool noReplotFlag = false ); + void SetIntensityColorMapType( const int, const QColor, + const QColor, const bool forceFlag = false, + const bool noReplotFlag = false ); const QColor GetUserDefinedLowIntensityColor()const; const QColor GetUserDefinedHighIntensityColor()const; @@ -154,6 +165,10 @@ public: static const int INTENSITY_COLOR_MAP_TYPE_INCANDESCENT = 3; static const int INTENSITY_COLOR_MAP_TYPE_USER_DEFINED = 4; +public slots: + void resizeSlot( QSize *s ); + + signals: void UpdatedLowerIntensityLevel(const double); void UpdatedUpperIntensityLevel(const double); diff --git a/gr-qtgui/src/lib/WaterfallDisplayPlot.cc b/gr-qtgui/src/lib/WaterfallDisplayPlot.cc index ad167f097..f6d0cc0ba 100644 --- a/gr-qtgui/src/lib/WaterfallDisplayPlot.cc +++ b/gr-qtgui/src/lib/WaterfallDisplayPlot.cc @@ -15,28 +15,33 @@ class FreqOffsetAndPrecisionClass { public: - FreqOffsetAndPrecisionClass(const int freqPrecision){ + FreqOffsetAndPrecisionClass(const int freqPrecision) + { _frequencyPrecision = freqPrecision; _centerFrequency = 0; } - virtual ~FreqOffsetAndPrecisionClass(){ - + virtual ~FreqOffsetAndPrecisionClass() + { } - virtual unsigned int GetFrequencyPrecision()const{ + virtual unsigned int GetFrequencyPrecision() const + { return _frequencyPrecision; } - virtual void SetFrequencyPrecision(const unsigned int newPrecision){ + virtual void SetFrequencyPrecision(const unsigned int newPrecision) + { _frequencyPrecision = newPrecision; } - virtual double GetCenterFrequency()const{ + virtual double GetCenterFrequency() const + { return _centerFrequency; } - virtual void SetCenterFrequency(const double newFreq){ + virtual void SetCenterFrequency(const double newFreq) + { _centerFrequency = newFreq; } @@ -50,19 +55,23 @@ private: class WaterfallFreqDisplayScaleDraw: public QwtScaleDraw, public FreqOffsetAndPrecisionClass{ public: - WaterfallFreqDisplayScaleDraw(const unsigned int precision):QwtScaleDraw(), FreqOffsetAndPrecisionClass(precision){ - + WaterfallFreqDisplayScaleDraw(const unsigned int precision) + : QwtScaleDraw(), FreqOffsetAndPrecisionClass(precision) + { } - virtual ~WaterfallFreqDisplayScaleDraw(){ - + virtual ~WaterfallFreqDisplayScaleDraw() + { } - QwtText label(double value)const{ - return QString("%1").arg((value + GetCenterFrequency()) / ((GetFrequencyPrecision() == 0) ? 1.0 : 1000.0), 0, 'f', GetFrequencyPrecision()); + QwtText label(double value) const + { + return QString("%1").arg((value + GetCenterFrequency()) / ((GetFrequencyPrecision() == 0) ? 1.0 : 1000.0), + 0, 'f', GetFrequencyPrecision()); } - virtual void initiateUpdate(){ + virtual void initiateUpdate() + { invalidateCache(); } @@ -75,29 +84,33 @@ private: class TimeScaleData { public: - TimeScaleData(){ + TimeScaleData() + { timespec_reset(&_zeroTime); _secondsPerLine = 1.0; - } - virtual ~TimeScaleData(){ - + virtual ~TimeScaleData() + { } - virtual timespec GetZeroTime()const{ + virtual timespec GetZeroTime() const + { return _zeroTime; } - virtual void SetZeroTime(const timespec newTime){ + virtual void SetZeroTime(const timespec newTime) + { _zeroTime = newTime; } - virtual void SetSecondsPerLine(const double newTime){ + virtual void SetSecondsPerLine(const double newTime) + { _secondsPerLine = newTime; } - virtual double GetSecondsPerLine()const{ + virtual double GetSecondsPerLine() const + { return _secondsPerLine; } @@ -113,27 +126,32 @@ private: class QwtTimeScaleDraw: public QwtScaleDraw, public TimeScaleData { public: - QwtTimeScaleDraw():QwtScaleDraw(),TimeScaleData(){ - + QwtTimeScaleDraw():QwtScaleDraw(),TimeScaleData() + { } - virtual ~QwtTimeScaleDraw(){ - + virtual ~QwtTimeScaleDraw() + { } - virtual QwtText label(double value)const{ + virtual QwtText label(double value) const + { QwtText returnLabel(""); timespec lineTime = timespec_add(GetZeroTime(), (-value) * GetSecondsPerLine()); struct tm timeTm; gmtime_r(&lineTime.tv_sec, &timeTm); - returnLabel = (QString("").sprintf("%04d/%02d/%02d\n%02d:%02d:%02d.%03ld", timeTm.tm_year+1900, timeTm.tm_mon+1, timeTm.tm_mday, timeTm.tm_hour, timeTm.tm_min, timeTm.tm_sec, lineTime.tv_nsec/1000000)); - + returnLabel = (QString("").sprintf("%04d/%02d/%02d\n%02d:%02d:%02d.%03ld", + timeTm.tm_year+1900, timeTm.tm_mon+1, + timeTm.tm_mday, timeTm.tm_hour, timeTm.tm_min, + timeTm.tm_sec, lineTime.tv_nsec/1000000)); return returnLabel; } - virtual void initiateUpdate(){ - // Do this in one call rather than when zeroTime and secondsPerLine updates is to prevent the display from being updated too often... + virtual void initiateUpdate() + { + // Do this in one call rather than when zeroTime and secondsPerLine + // updates is to prevent the display from being updated too often... invalidateCache(); } @@ -146,16 +164,19 @@ private: class WaterfallZoomer: public QwtPlotZoomer, public TimeScaleData, public FreqOffsetAndPrecisionClass { public: - WaterfallZoomer(QwtPlotCanvas* canvas, const unsigned int freqPrecision):QwtPlotZoomer(canvas), TimeScaleData(), FreqOffsetAndPrecisionClass(freqPrecision) + WaterfallZoomer(QwtPlotCanvas* canvas, const unsigned int freqPrecision) + : QwtPlotZoomer(canvas), TimeScaleData(), + FreqOffsetAndPrecisionClass(freqPrecision) { setTrackerMode(QwtPicker::AlwaysOn); } - virtual ~WaterfallZoomer(){ - + virtual ~WaterfallZoomer() + { } - virtual void updateTrackerText(){ + virtual void updateTrackerText() + { updateDisplay(); } @@ -167,7 +188,10 @@ protected: timespec lineTime = timespec_add(GetZeroTime(), (-p.y()) * GetSecondsPerLine()); struct tm timeTm; gmtime_r(&lineTime.tv_sec, &timeTm); - yLabel = (QString("").sprintf("%04d/%02d/%02d %02d:%02d:%02d.%03ld", timeTm.tm_year+1900, timeTm.tm_mon+1, timeTm.tm_mday, timeTm.tm_hour, timeTm.tm_min, timeTm.tm_sec, lineTime.tv_nsec/1000000)); + yLabel = (QString("").sprintf("%04d/%02d/%02d %02d:%02d:%02d.%03ld", + timeTm.tm_year+1900, timeTm.tm_mon+1, + timeTm.tm_mday, timeTm.tm_hour, timeTm.tm_min, + timeTm.tm_sec, lineTime.tv_nsec/1000000)); QwtText t(QString("%1 %2, %3").arg((p.x() + GetCenterFrequency()) / ((GetFrequencyPrecision() == 0) ? 1.0 : 1000.0), 0, 'f', GetFrequencyPrecision()).arg( (GetFrequencyPrecision() == 0) ? "Hz" : "kHz").arg(yLabel)); @@ -312,15 +336,25 @@ WaterfallDisplayPlot::SetFrequencyRange(const double constStartFreq, } -double WaterfallDisplayPlot::GetStartFrequency()const{ +double +WaterfallDisplayPlot::GetStartFrequency() const +{ return _startFrequency; } -double WaterfallDisplayPlot::GetStopFrequency()const{ +double +WaterfallDisplayPlot::GetStopFrequency() const +{ return _stopFrequency; } -void WaterfallDisplayPlot::PlotNewData(const double* dataPoints, const int64_t numDataPoints, const double timePerFFT, const timespec timestamp, const int droppedFrames){ +void +WaterfallDisplayPlot::PlotNewData(const double* dataPoints, + const int64_t numDataPoints, + const double timePerFFT, + const timespec timestamp, + const int droppedFrames) +{ if(numDataPoints > 0){ if(numDataPoints != _numPoints){ _numPoints = numDataPoints; @@ -363,7 +397,10 @@ void WaterfallDisplayPlot::PlotNewData(const double* dataPoints, const int64_t n } } -void WaterfallDisplayPlot::SetIntensityRange(const double minIntensity, const double maxIntensity){ +void +WaterfallDisplayPlot::SetIntensityRange(const double minIntensity, + const double maxIntensity) +{ _waterfallData->setRange(QwtDoubleInterval(minIntensity, maxIntensity)); emit UpdatedLowerIntensityLevel(minIntensity); @@ -372,7 +409,9 @@ void WaterfallDisplayPlot::SetIntensityRange(const double minIntensity, const do _UpdateIntensityRangeDisplay(); } -void WaterfallDisplayPlot::replot(){ +void +WaterfallDisplayPlot::replot() +{ const timespec startTime = get_highres_clock(); QwtTimeScaleDraw* timeScale = (QwtTimeScaleDraw*)axisScaleDraw(QwtPlot::yLeft); @@ -406,11 +445,23 @@ void WaterfallDisplayPlot::replot(){ } } -int WaterfallDisplayPlot::GetIntensityColorMapType()const{ +void +WaterfallDisplayPlot::resizeSlot( QSize *s ) +{ + resize(s->width(), s->height()); +} + +int +WaterfallDisplayPlot::GetIntensityColorMapType() const +{ return _intensityColorMapType; } -void WaterfallDisplayPlot::SetIntensityColorMapType(const int newType, const QColor lowColor, const QColor highColor){ +void +WaterfallDisplayPlot::SetIntensityColorMapType(const int newType, + const QColor lowColor, + const QColor highColor) +{ if((_intensityColorMapType != newType) || ((newType == INTENSITY_COLOR_MAP_TYPE_USER_DEFINED) && (lowColor.isValid() && highColor.isValid()))){ @@ -458,15 +509,21 @@ void WaterfallDisplayPlot::SetIntensityColorMapType(const int newType, const QCo } } -const QColor WaterfallDisplayPlot::GetUserDefinedLowIntensityColor()const{ +const QColor +WaterfallDisplayPlot::GetUserDefinedLowIntensityColor() const +{ return _userDefinedLowIntensityColor; } -const QColor WaterfallDisplayPlot::GetUserDefinedHighIntensityColor()const{ +const QColor +WaterfallDisplayPlot::GetUserDefinedHighIntensityColor() const +{ return _userDefinedHighIntensityColor; } -void WaterfallDisplayPlot::_UpdateIntensityRangeDisplay(){ +void +WaterfallDisplayPlot::_UpdateIntensityRangeDisplay() +{ QwtScaleWidget *rightAxis = axisWidget(QwtPlot::yRight); rightAxis->setTitle("Intensity (dB)"); rightAxis->setColorBarEnabled(true); diff --git a/gr-qtgui/src/lib/WaterfallDisplayPlot.h b/gr-qtgui/src/lib/WaterfallDisplayPlot.h index fbbb69a5b..bb87fb09f 100644 --- a/gr-qtgui/src/lib/WaterfallDisplayPlot.h +++ b/gr-qtgui/src/lib/WaterfallDisplayPlot.h @@ -45,6 +45,9 @@ public: static const int INTENSITY_COLOR_MAP_TYPE_INCANDESCENT = 3; static const int INTENSITY_COLOR_MAP_TYPE_USER_DEFINED = 4; +public slots: + void resizeSlot( QSize *s ); + signals: void UpdatedLowerIntensityLevel(const double); void UpdatedUpperIntensityLevel(const double); diff --git a/gr-qtgui/src/lib/spectrumdisplayform.cc b/gr-qtgui/src/lib/spectrumdisplayform.cc Binary files differindex 36097d975..6d4329e44 100644 --- a/gr-qtgui/src/lib/spectrumdisplayform.cc +++ b/gr-qtgui/src/lib/spectrumdisplayform.cc diff --git a/gr-qtgui/src/lib/spectrumdisplayform.h b/gr-qtgui/src/lib/spectrumdisplayform.h index dbbf2567e..51ca365e4 100644 --- a/gr-qtgui/src/lib/spectrumdisplayform.h +++ b/gr-qtgui/src/lib/spectrumdisplayform.h @@ -36,7 +36,7 @@ class SpectrumDisplayForm : public QWidget, public Ui::SpectrumDisplayForm public slots: void resizeEvent( QResizeEvent * e ); void customEvent( QEvent * e ); - void AvgLineEdit_textChanged( const QString & valueString ); + void AvgLineEdit_valueChanged( int valueString ); void MaxHoldCheckBox_toggled( bool newState ); void MinHoldCheckBox_toggled( bool newState ); void MinHoldResetBtn_clicked(); diff --git a/gr-qtgui/src/lib/spectrumdisplayform.ui b/gr-qtgui/src/lib/spectrumdisplayform.ui index 9324f150b..1458488a0 100644 --- a/gr-qtgui/src/lib/spectrumdisplayform.ui +++ b/gr-qtgui/src/lib/spectrumdisplayform.ui @@ -5,687 +5,758 @@ <rect> <x>0</x> <y>0</y> - <width>633</width> - <height>436</height> + <width>657</width> + <height>536</height> </rect> </property> <property name="windowTitle" > <string>Spectrum Display</string> </property> - <widget class="QCheckBox" name="UseRFFrequenciesCheckBox" > - <property name="geometry" > - <rect> - <x>10</x> - <y>385</y> - <width>180</width> - <height>20</height> - </rect> - </property> - <property name="text" > - <string>Display RF Frequencies</string> - </property> - </widget> - <widget class="QComboBox" name="WindowComboBox" > - <property name="geometry" > - <rect> - <x>105</x> - <y>410</y> - <width>170</width> - <height>20</height> - </rect> - </property> - <property name="font" > - <font> - <pointsize>9</pointsize> - </font> - </property> - <item> - <property name="text" > - <string>Hamming</string> - </property> - </item> - <item> - <property name="text" > - <string>Hann</string> - </property> - </item> - <item> - <property name="text" > - <string>Blackman</string> - </property> - </item> - <item> - <property name="text" > - <string>Rectangular</string> - </property> - </item> - <item> - <property name="text" > - <string>Kaiser</string> - </property> - </item> - <item> - <property name="text" > - <string>Blackman-harris</string> - </property> - </item> - </widget> - <widget class="QLabel" name="WindowLbl" > - <property name="geometry" > - <rect> - <x>10</x> - <y>410</y> - <width>90</width> - <height>17</height> - </rect> - </property> - <property name="text" > - <string>Window:</string> - </property> - <property name="alignment" > - <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set> - </property> - <property name="wordWrap" > - <bool>false</bool> - </property> - </widget> - <widget class="QLabel" name="FFTSizeLabel" > - <property name="geometry" > - <rect> - <x>405</x> - <y>385</y> - <width>116</width> - <height>20</height> - </rect> - </property> - <property name="text" > - <string>FFT Size:</string> - </property> - <property name="alignment" > - <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set> - </property> - <property name="wordWrap" > - <bool>false</bool> - </property> - </widget> - <widget class="QComboBox" name="FFTSizeComboBox" > - <property name="geometry" > - <rect> - <x>525</x> - <y>385</y> - <width>100</width> - <height>20</height> - </rect> - </property> - <item> - <property name="text" > - <string>1024</string> - </property> - </item> - <item> - <property name="text" > - <string>2048</string> - </property> - </item> - <item> - <property name="text" > - <string>4096</string> - </property> - </item> - <item> - <property name="text" > - <string>8192</string> - </property> - </item> - <item> - <property name="text" > - <string>16384</string> - </property> - </item> - <item> - <property name="text" > - <string>32768</string> - </property> - </item> - </widget> - <widget class="QTabWidget" name="SpectrumTypeTab" > - <property name="geometry" > - <rect> - <x>0</x> - <y>0</y> - <width>630</width> - <height>380</height> - </rect> - </property> - <property name="currentIndex" > - <number>0</number> - </property> - <widget class="QWidget" name="FrequencyPage" > - <attribute name="title" > - <string>Frequency Display</string> - </attribute> - <widget class="QLineEdit" name="PowerLineEdit" > - <property name="geometry" > - <rect> - <x>480</x> - <y>320</y> - <width>60</width> - <height>20</height> - </rect> - </property> - <property name="text" > - <string>1</string> - </property> - </widget> - <widget class="QCheckBox" name="MinHoldCheckBox" > - <property name="geometry" > - <rect> - <x>10</x> - <y>325</y> - <width>95</width> - <height>20</height> - </rect> - </property> - <property name="text" > - <string>Min Hold</string> - </property> - <property name="checked" > - <bool>false</bool> - </property> - </widget> - <widget class="QLabel" name="AvgLabel" > - <property name="geometry" > - <rect> - <x>545</x> - <y>300</y> - <width>72</width> - <height>20</height> - </rect> - </property> - <property name="text" > - <string>Average</string> - </property> - <property name="alignment" > - <set>Qt::AlignCenter</set> - </property> - <property name="wordWrap" > - <bool>false</bool> - </property> - </widget> - <widget class="QPushButton" name="MinHoldResetBtn" > - <property name="geometry" > - <rect> - <x>105</x> - <y>325</y> - <width>61</width> - <height>20</height> - </rect> - </property> - <property name="text" > - <string>Reset</string> - </property> - </widget> - <widget class="QLineEdit" name="AvgLineEdit" > - <property name="geometry" > - <rect> - <x>550</x> - <y>320</y> - <width>60</width> - <height>20</height> - </rect> - </property> - <property name="text" > - <string>0</string> - </property> - </widget> - <widget class="QLabel" name="PowerLabel" > - <property name="geometry" > - <rect> - <x>475</x> - <y>300</y> - <width>72</width> - <height>20</height> - </rect> - </property> - <property name="text" > - <string>Power</string> - </property> - <property name="alignment" > - <set>Qt::AlignCenter</set> - </property> - <property name="wordWrap" > - <bool>false</bool> - </property> - </widget> - <widget class="QPushButton" name="MaxHoldResetBtn" > - <property name="geometry" > - <rect> - <x>105</x> - <y>300</y> - <width>61</width> - <height>20</height> - </rect> - </property> - <property name="text" > - <string>Reset</string> - </property> - </widget> - <widget class="QCheckBox" name="MaxHoldCheckBox" > - <property name="geometry" > - <rect> - <x>10</x> - <y>300</y> - <width>95</width> - <height>20</height> - </rect> - </property> - <property name="text" > - <string>Max Hold</string> - </property> - <property name="checked" > - <bool>false</bool> - </property> - </widget> - <widget class="QFrame" name="FrequencyPlotDisplayFrame" > - <property name="geometry" > - <rect> - <x>5</x> - <y>5</y> - <width>620</width> - <height>290</height> - </rect> - </property> - <property name="frameShape" > - <enum>QFrame::NoFrame</enum> - </property> - <property name="frameShadow" > - <enum>QFrame::Plain</enum> - </property> - </widget> - </widget> - <widget class="QWidget" name="WaterfallPage" > - <attribute name="title" > - <string>Waterfall Display</string> - </attribute> - <widget class="QLabel" name="textLabel1" > - <property name="geometry" > - <rect> - <x>5</x> - <y>0</y> - <width>85</width> - <height>21</height> - </rect> - </property> - <property name="text" > - <string><font size="-2">Intensity Display:</font></string> - </property> - <property name="wordWrap" > - <bool>false</bool> - </property> - </widget> - <widget class="QComboBox" name="WaterfallIntensityComboBox" > - <property name="geometry" > - <rect> - <x>90</x> - <y>0</y> - <width>121</width> - <height>25</height> - </rect> + <layout class="QGridLayout" name="gridLayout" > + <item row="1" column="3" > + <widget class="QComboBox" name="FFTSizeComboBox" > + <property name="sizePolicy" > + <sizepolicy vsizetype="Fixed" hsizetype="Fixed" > + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + <property name="maximumSize" > + <size> + <width>120</width> + <height>16777215</height> + </size> </property> <item> <property name="text" > - <string>Color</string> + <string>1024</string> </property> </item> <item> <property name="text" > - <string>White Hot</string> + <string>2048</string> </property> </item> <item> <property name="text" > - <string>Black Hot</string> + <string>4096</string> </property> </item> <item> <property name="text" > - <string>Incandescent</string> + <string>8192</string> </property> </item> <item> <property name="text" > - <string>User Defined</string> + <string>16384</string> + </property> + </item> + <item> + <property name="text" > + <string>32768</string> </property> </item> </widget> - <widget class="QwtWheel" name="WaterfallMaximumIntensityWheel" > - <property name="geometry" > - <rect> - <x>215</x> - <y>0</y> - <width>335</width> - <height>24</height> - </rect> - </property> - <property name="mouseTracking" > - <bool>true</bool> - </property> - <property name="focusPolicy" > - <enum>Qt::WheelFocus</enum> - </property> - <property name="valid" > - <bool>true</bool> - </property> - <property name="totalAngle" > - <double>200.000000000000000</double> - </property> - <property name="viewAngle" > - <double>20.000000000000000</double> - </property> - <property name="mass" > - <double>0.000000000000000</double> - </property> - </widget> - <widget class="QLabel" name="WaterfallMaximumIntensityLabel" > - <property name="geometry" > - <rect> - <x>563</x> - <y>3</y> - <width>55</width> - <height>21</height> - </rect> - </property> - <property name="text" > - <string>100 dB</string> - </property> - <property name="wordWrap" > - <bool>false</bool> - </property> - </widget> - <widget class="QFrame" name="WaterfallPlotDisplayFrame" > - <property name="geometry" > - <rect> - <x>5</x> - <y>30</y> - <width>615</width> - <height>295</height> - </rect> - </property> - <property name="frameShape" > - <enum>QFrame::NoFrame</enum> - </property> - <property name="frameShadow" > - <enum>QFrame::Plain</enum> - </property> - </widget> - <widget class="QwtWheel" name="WaterfallMinimumIntensityWheel" > - <property name="geometry" > - <rect> - <x>215</x> - <y>325</y> - <width>335</width> - <height>24</height> - </rect> - </property> - <property name="valid" > - <bool>true</bool> - </property> - <property name="totalAngle" > - <double>200.000000000000000</double> - </property> - <property name="viewAngle" > - <double>20.000000000000000</double> - </property> - <property name="mass" > - <double>0.000000000000000</double> - </property> - </widget> - <widget class="QLabel" name="WaterfallMinimumIntensityLabel" > - <property name="geometry" > - <rect> - <x>565</x> - <y>325</y> - <width>55</width> - <height>20</height> - </rect> - </property> - <property name="text" > - <string>-100 dB</string> - </property> - <property name="wordWrap" > - <bool>false</bool> - </property> - </widget> - <widget class="QPushButton" name="WaterfallAutoScaleBtn" > - <property name="geometry" > - <rect> - <x>0</x> - <y>325</y> - <width>135</width> - <height>21</height> - </rect> - </property> - <property name="toolTip" > - <string>Scales the Intensity to the current data extremes.</string> - </property> - <property name="text" > - <string>Auto Scale</string> - </property> - </widget> - </widget> - <widget class="QWidget" name="Waterfall3DPage" > - <attribute name="title" > - <string>3D Waterfall Display</string> - </attribute> - <widget class="QLabel" name="textLabel1_2" > - <property name="geometry" > - <rect> - <x>5</x> - <y>0</y> - <width>85</width> - <height>21</height> - </rect> - </property> + </item> + <item row="1" column="2" > + <widget class="QLabel" name="FFTSizeLabel" > <property name="text" > - <string><font size="-2">Intensity Display:</font></string> + <string>FFT Size:</string> </property> - <property name="wordWrap" > - <bool>false</bool> - </property> - </widget> - <widget class="QLabel" name="Waterfall3DMaximumIntensityLabel" > - <property name="geometry" > - <rect> - <x>563</x> - <y>3</y> - <width>55</width> - <height>21</height> - </rect> - </property> - <property name="text" > - <string>100 dB</string> + <property name="alignment" > + <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set> </property> <property name="wordWrap" > <bool>false</bool> </property> </widget> - <widget class="QPushButton" name="Waterfall3DAutoScaleBtn" > - <property name="geometry" > - <rect> - <x>0</x> - <y>325</y> - <width>135</width> - <height>21</height> - </rect> - </property> - <property name="toolTip" > - <string>Scales the Intensity to the current data extremes.</string> - </property> - <property name="text" > - <string>Auto Scale</string> - </property> - </widget> - <widget class="QwtWheel" name="Waterfall3DMinimumIntensityWheel" > - <property name="geometry" > - <rect> - <x>215</x> - <y>325</y> - <width>335</width> - <height>24</height> - </rect> - </property> - <property name="valid" > - <bool>true</bool> - </property> - <property name="totalAngle" > - <double>200.000000000000000</double> - </property> - <property name="viewAngle" > - <double>20.000000000000000</double> - </property> - <property name="mass" > - <double>0.000000000000000</double> - </property> - </widget> - <widget class="QLabel" name="Waterfall3DMinimumIntensityLabel" > - <property name="geometry" > - <rect> - <x>565</x> - <y>325</y> - <width>55</width> - <height>20</height> - </rect> - </property> + </item> + <item row="1" column="0" > + <widget class="QCheckBox" name="UseRFFrequenciesCheckBox" > <property name="text" > - <string>-100 dB</string> - </property> - <property name="wordWrap" > - <bool>false</bool> + <string>Display RF Frequencies</string> </property> </widget> - <widget class="QFrame" name="Waterfall3DPlotDisplayFrame" > - <property name="geometry" > - <rect> - <x>5</x> - <y>30</y> - <width>615</width> - <height>295</height> - </rect> - </property> - <property name="frameShape" > - <enum>QFrame::NoFrame</enum> - </property> - <property name="frameShadow" > - <enum>QFrame::Plain</enum> - </property> - </widget> - <widget class="QComboBox" name="Waterfall3DIntensityComboBox" > - <property name="geometry" > - <rect> - <x>90</x> - <y>0</y> - <width>121</width> - <height>25</height> - </rect> - </property> - <item> - <property name="text" > - <string>Color</string> - </property> - </item> - <item> - <property name="text" > - <string>White Hot</string> - </property> - </item> - <item> - <property name="text" > - <string>Black Hot</string> - </property> - </item> + </item> + <item row="3" column="0" > + <layout class="QHBoxLayout" name="horizontalLayout" > <item> - <property name="text" > - <string>Incandescent</string> - </property> + <widget class="QLabel" name="WindowLbl" > + <property name="sizePolicy" > + <sizepolicy vsizetype="Fixed" hsizetype="Fixed" > + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + <property name="text" > + <string>Window:</string> + </property> + <property name="alignment" > + <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set> + </property> + <property name="wordWrap" > + <bool>false</bool> + </property> + </widget> </item> <item> - <property name="text" > - <string>User Defined</string> - </property> + <widget class="QComboBox" name="WindowComboBox" > + <property name="sizePolicy" > + <sizepolicy vsizetype="Fixed" hsizetype="Fixed" > + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + <property name="minimumSize" > + <size> + <width>120</width> + <height>0</height> + </size> + </property> + <property name="maximumSize" > + <size> + <width>120</width> + <height>16777215</height> + </size> + </property> + <property name="font" > + <font> + <pointsize>9</pointsize> + </font> + </property> + <item> + <property name="text" > + <string>Hamming</string> + </property> + </item> + <item> + <property name="text" > + <string>Hann</string> + </property> + </item> + <item> + <property name="text" > + <string>Blackman</string> + </property> + </item> + <item> + <property name="text" > + <string>Rectangular</string> + </property> + </item> + <item> + <property name="text" > + <string>Kaiser</string> + </property> + </item> + <item> + <property name="text" > + <string>Blackman-harris</string> + </property> + </item> + </widget> </item> + </layout> + </item> + <item row="0" column="0" colspan="4" > + <widget class="QTabWidget" name="SpectrumTypeTab" > + <property name="currentIndex" > + <number>0</number> + </property> + <widget class="QWidget" name="FrequencyPage" > + <attribute name="title" > + <string>Frequency Display</string> + </attribute> + <layout class="QVBoxLayout" name="verticalLayout" > + <item> + <layout class="QVBoxLayout" name="verticalLayout_2" > + <item> + <widget class="QFrame" name="FrequencyPlotDisplayFrame" > + <property name="sizePolicy" > + <sizepolicy vsizetype="Preferred" hsizetype="Preferred" > + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + <property name="minimumSize" > + <size> + <width>615</width> + <height>332</height> + </size> + </property> + <property name="sizeIncrement" > + <size> + <width>1</width> + <height>1</height> + </size> + </property> + <property name="frameShape" > + <enum>QFrame::NoFrame</enum> + </property> + <property name="frameShadow" > + <enum>QFrame::Plain</enum> + </property> + </widget> + </item> + <item> + <layout class="QGridLayout" name="gridLayout_2" > + <item row="1" column="0" > + <widget class="QCheckBox" name="MaxHoldCheckBox" > + <property name="text" > + <string>Max Hold</string> + </property> + <property name="checked" > + <bool>false</bool> + </property> + </widget> + </item> + <item row="2" column="0" > + <widget class="QCheckBox" name="MinHoldCheckBox" > + <property name="text" > + <string>Min Hold</string> + </property> + <property name="checked" > + <bool>false</bool> + </property> + </widget> + </item> + <item row="1" column="3" > + <widget class="QLabel" name="PowerLabel" > + <property name="minimumSize" > + <size> + <width>50</width> + <height>0</height> + </size> + </property> + <property name="maximumSize" > + <size> + <width>50</width> + <height>16777215</height> + </size> + </property> + <property name="text" > + <string>Power</string> + </property> + <property name="alignment" > + <set>Qt::AlignCenter</set> + </property> + <property name="wordWrap" > + <bool>false</bool> + </property> + </widget> + </item> + <item row="1" column="1" > + <widget class="QPushButton" name="MaxHoldResetBtn" > + <property name="sizePolicy" > + <sizepolicy vsizetype="Fixed" hsizetype="Fixed" > + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + <property name="minimumSize" > + <size> + <width>25</width> + <height>0</height> + </size> + </property> + <property name="text" > + <string>Reset</string> + </property> + </widget> + </item> + <item row="1" column="4" > + <widget class="QLabel" name="AvgLabel" > + <property name="sizePolicy" > + <sizepolicy vsizetype="Fixed" hsizetype="Fixed" > + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + <property name="minimumSize" > + <size> + <width>62</width> + <height>0</height> + </size> + </property> + <property name="text" > + <string>Average</string> + </property> + <property name="alignment" > + <set>Qt::AlignCenter</set> + </property> + <property name="wordWrap" > + <bool>false</bool> + </property> + </widget> + </item> + <item row="2" column="1" > + <widget class="QPushButton" name="MinHoldResetBtn" > + <property name="text" > + <string>Reset</string> + </property> + </widget> + </item> + <item row="2" column="4" > + <widget class="QSpinBox" name="AvgLineEdit" /> + </item> + <item row="2" column="3" > + <widget class="QLineEdit" name="PowerLineEdit" > + <property name="sizePolicy" > + <sizepolicy vsizetype="Fixed" hsizetype="Fixed" > + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + <property name="minimumSize" > + <size> + <width>50</width> + <height>0</height> + </size> + </property> + <property name="maximumSize" > + <size> + <width>50</width> + <height>16777215</height> + </size> + </property> + <property name="text" > + <string>1</string> + </property> + </widget> + </item> + <item row="1" column="2" > + <spacer name="horizontalSpacer_2" > + <property name="orientation" > + <enum>Qt::Horizontal</enum> + </property> + <property name="sizeHint" stdset="0" > + <size> + <width>325</width> + <height>20</height> + </size> + </property> + </spacer> + </item> + </layout> + </item> + </layout> + </item> + </layout> + </widget> + <widget class="QWidget" name="WaterfallPage" > + <attribute name="title" > + <string>Waterfall Display</string> + </attribute> + <layout class="QGridLayout" name="gridLayout_3" > + <item row="0" column="0" > + <widget class="QLabel" name="textLabel1" > + <property name="maximumSize" > + <size> + <width>100</width> + <height>16777215</height> + </size> + </property> + <property name="text" > + <string>Intensity Display:</string> + </property> + <property name="wordWrap" > + <bool>false</bool> + </property> + </widget> + </item> + <item row="0" column="2" > + <widget class="QwtWheel" name="WaterfallMaximumIntensityWheel" > + <property name="minimumSize" > + <size> + <width>200</width> + <height>0</height> + </size> + </property> + <property name="mouseTracking" > + <bool>true</bool> + </property> + <property name="focusPolicy" > + <enum>Qt::WheelFocus</enum> + </property> + <property name="valid" > + <bool>true</bool> + </property> + <property name="totalAngle" > + <double>200.000000000000000</double> + </property> + <property name="viewAngle" > + <double>20.000000000000000</double> + </property> + <property name="mass" > + <double>0.000000000000000</double> + </property> + </widget> + </item> + <item row="0" column="3" > + <widget class="QLabel" name="WaterfallMaximumIntensityLabel" > + <property name="maximumSize" > + <size> + <width>100</width> + <height>16777215</height> + </size> + </property> + <property name="text" > + <string>100 dB</string> + </property> + <property name="wordWrap" > + <bool>false</bool> + </property> + </widget> + </item> + <item row="1" column="0" colspan="4" > + <widget class="QFrame" name="WaterfallPlotDisplayFrame" > + <property name="minimumSize" > + <size> + <width>617</width> + <height>338</height> + </size> + </property> + <property name="frameShape" > + <enum>QFrame::NoFrame</enum> + </property> + <property name="frameShadow" > + <enum>QFrame::Plain</enum> + </property> + </widget> + </item> + <item row="2" column="2" > + <widget class="QwtWheel" name="WaterfallMinimumIntensityWheel" > + <property name="minimumSize" > + <size> + <width>200</width> + <height>0</height> + </size> + </property> + <property name="valid" > + <bool>true</bool> + </property> + <property name="totalAngle" > + <double>200.000000000000000</double> + </property> + <property name="viewAngle" > + <double>20.000000000000000</double> + </property> + <property name="mass" > + <double>0.000000000000000</double> + </property> + </widget> + </item> + <item row="2" column="3" > + <widget class="QLabel" name="WaterfallMinimumIntensityLabel" > + <property name="maximumSize" > + <size> + <width>100</width> + <height>16777215</height> + </size> + </property> + <property name="text" > + <string>-100 dB</string> + </property> + <property name="wordWrap" > + <bool>false</bool> + </property> + </widget> + </item> + <item row="2" column="0" colspan="2" > + <widget class="QPushButton" name="WaterfallAutoScaleBtn" > + <property name="maximumSize" > + <size> + <width>80</width> + <height>16777215</height> + </size> + </property> + <property name="toolTip" > + <string>Scales the Intensity to the current data extremes.</string> + </property> + <property name="text" > + <string>Auto Scale</string> + </property> + </widget> + </item> + <item row="0" column="1" > + <widget class="QComboBox" name="WaterfallIntensityComboBox" > + <property name="maximumSize" > + <size> + <width>100</width> + <height>16777215</height> + </size> + </property> + <item> + <property name="text" > + <string>Color</string> + </property> + </item> + <item> + <property name="text" > + <string>White Hot</string> + </property> + </item> + <item> + <property name="text" > + <string>Black Hot</string> + </property> + </item> + <item> + <property name="text" > + <string>Incandescent</string> + </property> + </item> + <item> + <property name="text" > + <string>User Defined</string> + </property> + </item> + </widget> + </item> + </layout> + <zorder>textLabel1</zorder> + <zorder>WaterfallMaximumIntensityWheel</zorder> + <zorder>WaterfallMaximumIntensityLabel</zorder> + <zorder>WaterfallPlotDisplayFrame</zorder> + <zorder>WaterfallMinimumIntensityWheel</zorder> + <zorder>WaterfallMinimumIntensityLabel</zorder> + <zorder>WaterfallAutoScaleBtn</zorder> + <zorder>WaterfallIntensityComboBox</zorder> + </widget> + <widget class="QWidget" name="Waterfall3DPage" > + <attribute name="title" > + <string>3D Waterfall Display</string> + </attribute> + <layout class="QGridLayout" name="gridLayout_6" > + <item row="0" column="0" > + <widget class="QLabel" name="textLabel1_2" > + <property name="minimumSize" > + <size> + <width>0</width> + <height>0</height> + </size> + </property> + <property name="maximumSize" > + <size> + <width>100</width> + <height>16777215</height> + </size> + </property> + <property name="text" > + <string>Intensity Display:</string> + </property> + <property name="wordWrap" > + <bool>false</bool> + </property> + </widget> + </item> + <item row="0" column="1" > + <widget class="QComboBox" name="Waterfall3DIntensityComboBox" > + <property name="maximumSize" > + <size> + <width>100</width> + <height>16777215</height> + </size> + </property> + <item> + <property name="text" > + <string>Color</string> + </property> + </item> + <item> + <property name="text" > + <string>White Hot</string> + </property> + </item> + <item> + <property name="text" > + <string>Black Hot</string> + </property> + </item> + <item> + <property name="text" > + <string>Incandescent</string> + </property> + </item> + <item> + <property name="text" > + <string>User Defined</string> + </property> + </item> + </widget> + </item> + <item row="0" column="2" > + <widget class="QwtWheel" name="Waterfall3DMaximumIntensityWheel" > + <property name="minimumSize" > + <size> + <width>200</width> + <height>0</height> + </size> + </property> + <property name="mouseTracking" > + <bool>true</bool> + </property> + <property name="focusPolicy" > + <enum>Qt::WheelFocus</enum> + </property> + <property name="valid" > + <bool>true</bool> + </property> + <property name="totalAngle" > + <double>200.000000000000000</double> + </property> + <property name="viewAngle" > + <double>20.000000000000000</double> + </property> + <property name="mass" > + <double>0.000000000000000</double> + </property> + </widget> + </item> + <item row="0" column="3" > + <widget class="QLabel" name="Waterfall3DMaximumIntensityLabel" > + <property name="maximumSize" > + <size> + <width>100</width> + <height>16777215</height> + </size> + </property> + <property name="text" > + <string>100 dB</string> + </property> + <property name="wordWrap" > + <bool>false</bool> + </property> + </widget> + </item> + <item row="1" column="0" colspan="4" > + <widget class="QFrame" name="Waterfall3DPlotDisplayFrame" > + <property name="frameShape" > + <enum>QFrame::NoFrame</enum> + </property> + <property name="frameShadow" > + <enum>QFrame::Plain</enum> + </property> + </widget> + </item> + <item row="2" column="0" colspan="2" > + <widget class="QPushButton" name="Waterfall3DAutoScaleBtn" > + <property name="minimumSize" > + <size> + <width>0</width> + <height>0</height> + </size> + </property> + <property name="maximumSize" > + <size> + <width>80</width> + <height>16777215</height> + </size> + </property> + <property name="sizeIncrement" > + <size> + <width>0</width> + <height>0</height> + </size> + </property> + <property name="toolTip" > + <string>Scales the Intensity to the current data extremes.</string> + </property> + <property name="text" > + <string>Auto Scale</string> + </property> + </widget> + </item> + <item row="2" column="2" > + <widget class="QwtWheel" name="Waterfall3DMinimumIntensityWheel" > + <property name="minimumSize" > + <size> + <width>200</width> + <height>0</height> + </size> + </property> + <property name="valid" > + <bool>true</bool> + </property> + <property name="totalAngle" > + <double>200.000000000000000</double> + </property> + <property name="viewAngle" > + <double>20.000000000000000</double> + </property> + <property name="mass" > + <double>0.000000000000000</double> + </property> + </widget> + </item> + <item row="2" column="3" > + <widget class="QLabel" name="Waterfall3DMinimumIntensityLabel" > + <property name="maximumSize" > + <size> + <width>100</width> + <height>16777215</height> + </size> + </property> + <property name="text" > + <string>-100 dB</string> + </property> + <property name="wordWrap" > + <bool>false</bool> + </property> + </widget> + </item> + </layout> + </widget> + <widget class="QWidget" name="TimeDomainPage" > + <attribute name="title" > + <string>Time Domain Display</string> + </attribute> + <layout class="QGridLayout" name="gridLayout_4" > + <item row="0" column="0" > + <widget class="QFrame" name="TimeDomainDisplayFrame" > + <property name="minimumSize" > + <size> + <width>617</width> + <height>404</height> + </size> + </property> + <property name="frameShape" > + <enum>QFrame::NoFrame</enum> + </property> + <property name="frameShadow" > + <enum>QFrame::Plain</enum> + </property> + </widget> + </item> + </layout> + </widget> + <widget class="QWidget" name="ConstellationPage" > + <attribute name="title" > + <string>Constellation Display</string> + </attribute> + <layout class="QGridLayout" name="gridLayout_5" > + <item row="0" column="0" > + <widget class="QFrame" name="ConstellationDisplayFrame" > + <property name="minimumSize" > + <size> + <width>617</width> + <height>406</height> + </size> + </property> + <property name="frameShape" > + <enum>QFrame::StyledPanel</enum> + </property> + <property name="frameShadow" > + <enum>QFrame::Raised</enum> + </property> + </widget> + </item> + </layout> + </widget> </widget> - <widget class="QwtWheel" name="Waterfall3DMaximumIntensityWheel" > - <property name="geometry" > - <rect> - <x>215</x> - <y>0</y> - <width>335</width> - <height>24</height> - </rect> - </property> - <property name="mouseTracking" > - <bool>true</bool> - </property> - <property name="focusPolicy" > - <enum>Qt::WheelFocus</enum> - </property> - <property name="valid" > - <bool>true</bool> - </property> - <property name="totalAngle" > - <double>200.000000000000000</double> - </property> - <property name="viewAngle" > - <double>20.000000000000000</double> - </property> - <property name="mass" > - <double>0.000000000000000</double> - </property> - </widget> - </widget> - <widget class="QWidget" name="TimeDomainPage" > - <attribute name="title" > - <string>Time Domain Display</string> - </attribute> - <widget class="QFrame" name="TimeDomainDisplayFrame" > - <property name="geometry" > - <rect> - <x>5</x> - <y>5</y> - <width>620</width> - <height>340</height> - </rect> - </property> - <property name="frameShape" > - <enum>QFrame::NoFrame</enum> - </property> - <property name="frameShadow" > - <enum>QFrame::Plain</enum> - </property> - </widget> - </widget> - <widget class="QWidget" name="ConstellationPage" > - <attribute name="title" > - <string>Constellation Display</string> - </attribute> - <widget class="QFrame" name="ConstellationDisplayFrame" > - <property name="geometry" > - <rect> - <x>5</x> - <y>5</y> - <width>620</width> - <height>340</height> - </rect> - </property> - <property name="frameShape" > - <enum>QFrame::StyledPanel</enum> - </property> - <property name="frameShadow" > - <enum>QFrame::Raised</enum> - </property> - </widget> - </widget> - </widget> + </item> + </layout> </widget> <layoutdefault spacing="6" margin="11" /> <pixmapfunction>qPixmapFromMimeSource</pixmapfunction> @@ -698,14 +769,7 @@ </customwidgets> <tabstops> <tabstop>SpectrumTypeTab</tabstop> - <tabstop>MaxHoldCheckBox</tabstop> - <tabstop>MaxHoldResetBtn</tabstop> - <tabstop>MinHoldCheckBox</tabstop> - <tabstop>MinHoldResetBtn</tabstop> - <tabstop>PowerLineEdit</tabstop> - <tabstop>AvgLineEdit</tabstop> <tabstop>UseRFFrequenciesCheckBox</tabstop> - <tabstop>WindowComboBox</tabstop> <tabstop>FFTSizeComboBox</tabstop> <tabstop>WaterfallMaximumIntensityWheel</tabstop> <tabstop>WaterfallMinimumIntensityWheel</tabstop> @@ -787,22 +851,6 @@ </hints> </connection> <connection> - <sender>AvgLineEdit</sender> - <signal>textChanged(QString)</signal> - <receiver>SpectrumDisplayForm</receiver> - <slot>AvgLineEdit_textChanged(QString)</slot> - <hints> - <hint type="sourcelabel" > - <x>552</x> - <y>344</y> - </hint> - <hint type="destinationlabel" > - <x>20</x> - <y>20</y> - </hint> - </hints> - </connection> - <connection> <sender>PowerLineEdit</sender> <signal>textChanged(QString)</signal> <receiver>SpectrumDisplayForm</receiver> @@ -1010,5 +1058,21 @@ </hint> </hints> </connection> + <connection> + <sender>AvgLineEdit</sender> + <signal>valueChanged(int)</signal> + <receiver>SpectrumDisplayForm</receiver> + <slot>AvgLineEdit_valueChanged(int)</slot> + <hints> + <hint type="sourcelabel" > + <x>604</x> + <y>421</y> + </hint> + <hint type="destinationlabel" > + <x>328</x> + <y>260</y> + </hint> + </hints> + </connection> </connections> </ui> |