mirror of
https://github.com/f4exb/sdrangel.git
synced 2026-05-16 14:23:00 -04:00
Added optional scrollbar to be able to scroll back through waterfall.
When scrolling is enabled:
Can adjust power scale for complete waterfall, not just future spectra.
Waterfall time axis can use local time or UTC.
Waterfall not lost when resizing window.
Can now zoom when device is stopped.
Added Min averaging type.
Added button to load spectrum from .csv file.
Add button to save spectrum/waterfall to .png or jpg.
Changed show all controls button to a combobox with choices of Min/Std/All (Minimum/Standard/All).
Changed some buttons in spectrum GUI from QPushButton to QToolButton so their size matches the others.
Fix spectrum from displaying a mixture of old and new spectrums (m_currentSpectrum was a pointer to SpectrumVis buffer).
Added M1 and M2 memories to allow display of reference spectra.
Added math operations to allow spectrum to be difference of current spectrum and either memory or a moving average.
Fixed measurement counts, so they are performed once per spectrum, not on displayed spectra.
Added spectrum mask measurement, to check when a spectrum exceeds mask held in M1 or M2.
Optionally display power/frequency under cursor in status line.
Optionally display peak power/frequency in status line.
Fix incorrect nyquist sample replication, when zoom used.
Fix cursor not changing from resize to pointer when moving over spectrum measurements window.
Add spectrum colour setting.
499 lines
13 KiB
XML
499 lines
13 KiB
XML
<?xml version="1.0" encoding="UTF-8"?>
|
|
<ui version="4.0">
|
|
<class>SpectrumMeasurementsDialog</class>
|
|
<widget class="QDialog" name="SpectrumMeasurementsDialog">
|
|
<property name="geometry">
|
|
<rect>
|
|
<x>0</x>
|
|
<y>0</y>
|
|
<width>400</width>
|
|
<height>315</height>
|
|
</rect>
|
|
</property>
|
|
<property name="minimumSize">
|
|
<size>
|
|
<width>400</width>
|
|
<height>250</height>
|
|
</size>
|
|
</property>
|
|
<property name="font">
|
|
<font>
|
|
<family>Liberation Sans</family>
|
|
<pointsize>9</pointsize>
|
|
</font>
|
|
</property>
|
|
<property name="windowTitle">
|
|
<string>Spectrum Measurements</string>
|
|
</property>
|
|
<layout class="QVBoxLayout" name="verticalLayout">
|
|
<item>
|
|
<layout class="QGridLayout" name="gridLayout">
|
|
<item row="0" column="1">
|
|
<widget class="QComboBox" name="measurement">
|
|
<property name="toolTip">
|
|
<string>Type of measurement</string>
|
|
</property>
|
|
<property name="currentIndex">
|
|
<number>0</number>
|
|
</property>
|
|
<item>
|
|
<property name="text">
|
|
<string>None</string>
|
|
</property>
|
|
</item>
|
|
<item>
|
|
<property name="text">
|
|
<string>Peaks</string>
|
|
</property>
|
|
</item>
|
|
<item>
|
|
<property name="text">
|
|
<string>Channel power</string>
|
|
</property>
|
|
</item>
|
|
<item>
|
|
<property name="text">
|
|
<string>Adjacent channel power</string>
|
|
</property>
|
|
</item>
|
|
<item>
|
|
<property name="text">
|
|
<string>Occupied bandwidth</string>
|
|
</property>
|
|
</item>
|
|
<item>
|
|
<property name="text">
|
|
<string>3dB bandwidth</string>
|
|
</property>
|
|
</item>
|
|
<item>
|
|
<property name="text">
|
|
<string>SNR</string>
|
|
</property>
|
|
</item>
|
|
<item>
|
|
<property name="text">
|
|
<string>Mask test</string>
|
|
</property>
|
|
</item>
|
|
</widget>
|
|
</item>
|
|
<item row="4" column="1">
|
|
<widget class="QSpinBox" name="peaks">
|
|
<property name="toolTip">
|
|
<string>Number of peaks to display</string>
|
|
</property>
|
|
<property name="minimum">
|
|
<number>1</number>
|
|
</property>
|
|
<property name="maximum">
|
|
<number>20</number>
|
|
</property>
|
|
</widget>
|
|
</item>
|
|
<item row="8" column="1">
|
|
<widget class="ValueDialZ" name="adjChBandwidth" native="true">
|
|
<property name="sizePolicy">
|
|
<sizepolicy hsizetype="Maximum" vsizetype="Maximum">
|
|
<horstretch>0</horstretch>
|
|
<verstretch>0</verstretch>
|
|
</sizepolicy>
|
|
</property>
|
|
<property name="minimumSize">
|
|
<size>
|
|
<width>32</width>
|
|
<height>16</height>
|
|
</size>
|
|
</property>
|
|
<property name="font">
|
|
<font>
|
|
<family>DejaVu Sans Mono</family>
|
|
<pointsize>12</pointsize>
|
|
</font>
|
|
</property>
|
|
<property name="cursor">
|
|
<cursorShape>PointingHandCursor</cursorShape>
|
|
</property>
|
|
<property name="focusPolicy">
|
|
<enum>Qt::FocusPolicy::StrongFocus</enum>
|
|
</property>
|
|
<property name="toolTip">
|
|
<string>Adjacent channel bandwidth (Hz)</string>
|
|
</property>
|
|
</widget>
|
|
</item>
|
|
<item row="3" column="0">
|
|
<widget class="QLabel" name="precisionLabel">
|
|
<property name="text">
|
|
<string>Results precision</string>
|
|
</property>
|
|
</widget>
|
|
</item>
|
|
<item row="9" column="0">
|
|
<widget class="QLabel" name="harmonicsLabel">
|
|
<property name="text">
|
|
<string>Harmonics</string>
|
|
</property>
|
|
<property name="margin">
|
|
<number>2</number>
|
|
</property>
|
|
</widget>
|
|
</item>
|
|
<item row="3" column="1">
|
|
<widget class="QSpinBox" name="precision">
|
|
<property name="toolTip">
|
|
<string>Precision of results (number of decimal places)</string>
|
|
</property>
|
|
<property name="maximum">
|
|
<number>9</number>
|
|
</property>
|
|
</widget>
|
|
</item>
|
|
<item row="10" column="1">
|
|
<layout class="QHBoxLayout" name="maskLayout">
|
|
<item>
|
|
<widget class="QToolButton" name="m1Mask">
|
|
<property name="toolTip">
|
|
<string>Use memory 2 as mask</string>
|
|
</property>
|
|
<property name="text">
|
|
<string>M1</string>
|
|
</property>
|
|
<property name="checkable">
|
|
<bool>true</bool>
|
|
</property>
|
|
</widget>
|
|
</item>
|
|
<item>
|
|
<widget class="QToolButton" name="m2Mask">
|
|
<property name="toolTip">
|
|
<string>Use memory 1 as mask</string>
|
|
</property>
|
|
<property name="text">
|
|
<string>M2</string>
|
|
</property>
|
|
<property name="checkable">
|
|
<bool>true</bool>
|
|
</property>
|
|
</widget>
|
|
</item>
|
|
<item>
|
|
<spacer name="horizontalSpacer">
|
|
<property name="orientation">
|
|
<enum>Qt::Orientation::Horizontal</enum>
|
|
</property>
|
|
<property name="sizeHint" stdset="0">
|
|
<size>
|
|
<width>40</width>
|
|
<height>20</height>
|
|
</size>
|
|
</property>
|
|
</spacer>
|
|
</item>
|
|
</layout>
|
|
</item>
|
|
<item row="9" column="1">
|
|
<widget class="QSpinBox" name="harmonics">
|
|
<property name="toolTip">
|
|
<string>Number of harmonics</string>
|
|
</property>
|
|
<property name="maximum">
|
|
<number>20</number>
|
|
</property>
|
|
</widget>
|
|
</item>
|
|
<item row="2" column="1">
|
|
<widget class="QCheckBox" name="highlight">
|
|
<property name="toolTip">
|
|
<string>Whether to highlight the measurements in the spectrum</string>
|
|
</property>
|
|
<property name="text">
|
|
<string/>
|
|
</property>
|
|
</widget>
|
|
</item>
|
|
<item row="2" column="0">
|
|
<widget class="QLabel" name="highlightLabel">
|
|
<property name="text">
|
|
<string>Highlight on spectrum</string>
|
|
</property>
|
|
</widget>
|
|
</item>
|
|
<item row="4" column="0">
|
|
<widget class="QLabel" name="peaksLabel">
|
|
<property name="text">
|
|
<string>Peaks</string>
|
|
</property>
|
|
</widget>
|
|
</item>
|
|
<item row="5" column="0">
|
|
<widget class="QLabel" name="centerFrequencyOffsetLabel">
|
|
<property name="text">
|
|
<string>Center frequency offset</string>
|
|
</property>
|
|
</widget>
|
|
</item>
|
|
<item row="5" column="1">
|
|
<widget class="ValueDialZ" name="centerFrequencyOffset" native="true">
|
|
<property name="sizePolicy">
|
|
<sizepolicy hsizetype="Maximum" vsizetype="Maximum">
|
|
<horstretch>0</horstretch>
|
|
<verstretch>0</verstretch>
|
|
</sizepolicy>
|
|
</property>
|
|
<property name="minimumSize">
|
|
<size>
|
|
<width>32</width>
|
|
<height>16</height>
|
|
</size>
|
|
</property>
|
|
<property name="font">
|
|
<font>
|
|
<family>DejaVu Sans Mono</family>
|
|
<pointsize>12</pointsize>
|
|
</font>
|
|
</property>
|
|
<property name="cursor">
|
|
<cursorShape>PointingHandCursor</cursorShape>
|
|
</property>
|
|
<property name="focusPolicy">
|
|
<enum>Qt::FocusPolicy::StrongFocus</enum>
|
|
</property>
|
|
<property name="toolTip">
|
|
<string>Center frequency offset (Hz)</string>
|
|
</property>
|
|
</widget>
|
|
</item>
|
|
<item row="6" column="0">
|
|
<widget class="QLabel" name="bandwidthLabel">
|
|
<property name="text">
|
|
<string>Channel bandwidth</string>
|
|
</property>
|
|
<property name="margin">
|
|
<number>2</number>
|
|
</property>
|
|
</widget>
|
|
</item>
|
|
<item row="6" column="1">
|
|
<widget class="ValueDialZ" name="bandwidth" native="true">
|
|
<property name="sizePolicy">
|
|
<sizepolicy hsizetype="Maximum" vsizetype="Maximum">
|
|
<horstretch>0</horstretch>
|
|
<verstretch>0</verstretch>
|
|
</sizepolicy>
|
|
</property>
|
|
<property name="minimumSize">
|
|
<size>
|
|
<width>32</width>
|
|
<height>16</height>
|
|
</size>
|
|
</property>
|
|
<property name="font">
|
|
<font>
|
|
<family>DejaVu Sans Mono</family>
|
|
<pointsize>12</pointsize>
|
|
</font>
|
|
</property>
|
|
<property name="cursor">
|
|
<cursorShape>PointingHandCursor</cursorShape>
|
|
</property>
|
|
<property name="focusPolicy">
|
|
<enum>Qt::FocusPolicy::StrongFocus</enum>
|
|
</property>
|
|
<property name="toolTip">
|
|
<string>Channel bandwidth (Hz)</string>
|
|
</property>
|
|
</widget>
|
|
</item>
|
|
<item row="7" column="0">
|
|
<widget class="QLabel" name="chSpacingLabel">
|
|
<property name="text">
|
|
<string>Channel spacing</string>
|
|
</property>
|
|
<property name="margin">
|
|
<number>2</number>
|
|
</property>
|
|
</widget>
|
|
</item>
|
|
<item row="0" column="0">
|
|
<widget class="QLabel" name="measurementLabel">
|
|
<property name="text">
|
|
<string>Measurement</string>
|
|
</property>
|
|
</widget>
|
|
</item>
|
|
<item row="1" column="1">
|
|
<widget class="QComboBox" name="position">
|
|
<property name="toolTip">
|
|
<string>Where to display the measurements result table</string>
|
|
</property>
|
|
<item>
|
|
<property name="text">
|
|
<string>Above spectrum</string>
|
|
</property>
|
|
</item>
|
|
<item>
|
|
<property name="text">
|
|
<string>Below spectrum</string>
|
|
</property>
|
|
</item>
|
|
<item>
|
|
<property name="text">
|
|
<string>Left of spectrum</string>
|
|
</property>
|
|
</item>
|
|
<item>
|
|
<property name="text">
|
|
<string>Right of spectrum</string>
|
|
</property>
|
|
</item>
|
|
</widget>
|
|
</item>
|
|
<item row="1" column="0">
|
|
<widget class="QLabel" name="positionLabel">
|
|
<property name="text">
|
|
<string>Display results table</string>
|
|
</property>
|
|
</widget>
|
|
</item>
|
|
<item row="7" column="1">
|
|
<widget class="ValueDialZ" name="chSpacing" native="true">
|
|
<property name="sizePolicy">
|
|
<sizepolicy hsizetype="Maximum" vsizetype="Maximum">
|
|
<horstretch>0</horstretch>
|
|
<verstretch>0</verstretch>
|
|
</sizepolicy>
|
|
</property>
|
|
<property name="minimumSize">
|
|
<size>
|
|
<width>32</width>
|
|
<height>16</height>
|
|
</size>
|
|
</property>
|
|
<property name="font">
|
|
<font>
|
|
<family>DejaVu Sans Mono</family>
|
|
<pointsize>12</pointsize>
|
|
</font>
|
|
</property>
|
|
<property name="cursor">
|
|
<cursorShape>PointingHandCursor</cursorShape>
|
|
</property>
|
|
<property name="focusPolicy">
|
|
<enum>Qt::FocusPolicy::StrongFocus</enum>
|
|
</property>
|
|
<property name="toolTip">
|
|
<string>Channel spacing (Hz)</string>
|
|
</property>
|
|
</widget>
|
|
</item>
|
|
<item row="10" column="0">
|
|
<widget class="QLabel" name="maskLabel">
|
|
<property name="text">
|
|
<string>Memories to use as masks</string>
|
|
</property>
|
|
</widget>
|
|
</item>
|
|
<item row="8" column="0">
|
|
<widget class="QLabel" name="adjChBandwidthLabel">
|
|
<property name="text">
|
|
<string>Adjacent channel bandwidth</string>
|
|
</property>
|
|
<property name="margin">
|
|
<number>2</number>
|
|
</property>
|
|
</widget>
|
|
</item>
|
|
</layout>
|
|
</item>
|
|
<item>
|
|
<spacer name="verticalSpacer">
|
|
<property name="orientation">
|
|
<enum>Qt::Orientation::Vertical</enum>
|
|
</property>
|
|
<property name="sizeHint" stdset="0">
|
|
<size>
|
|
<width>20</width>
|
|
<height>40</height>
|
|
</size>
|
|
</property>
|
|
</spacer>
|
|
</item>
|
|
<item>
|
|
<layout class="QHBoxLayout" name="horizontalLayout">
|
|
<item>
|
|
<widget class="QPushButton" name="resetMeasurements">
|
|
<property name="toolTip">
|
|
<string>Reset measurement results</string>
|
|
</property>
|
|
<property name="text">
|
|
<string>Reset</string>
|
|
</property>
|
|
</widget>
|
|
</item>
|
|
<item>
|
|
<widget class="QDialogButtonBox" name="buttonBox">
|
|
<property name="orientation">
|
|
<enum>Qt::Orientation::Horizontal</enum>
|
|
</property>
|
|
<property name="standardButtons">
|
|
<set>QDialogButtonBox::StandardButton::Close</set>
|
|
</property>
|
|
</widget>
|
|
</item>
|
|
</layout>
|
|
</item>
|
|
</layout>
|
|
</widget>
|
|
<customwidgets>
|
|
<customwidget>
|
|
<class>ValueDialZ</class>
|
|
<extends>QWidget</extends>
|
|
<header>gui/valuedialz.h</header>
|
|
<container>1</container>
|
|
</customwidget>
|
|
</customwidgets>
|
|
<tabstops>
|
|
<tabstop>measurement</tabstop>
|
|
<tabstop>position</tabstop>
|
|
<tabstop>peaks</tabstop>
|
|
<tabstop>harmonics</tabstop>
|
|
<tabstop>resetMeasurements</tabstop>
|
|
</tabstops>
|
|
<resources/>
|
|
<connections>
|
|
<connection>
|
|
<sender>buttonBox</sender>
|
|
<signal>accepted()</signal>
|
|
<receiver>SpectrumMeasurementsDialog</receiver>
|
|
<slot>accept()</slot>
|
|
<hints>
|
|
<hint type="sourcelabel">
|
|
<x>257</x>
|
|
<y>194</y>
|
|
</hint>
|
|
<hint type="destinationlabel">
|
|
<x>157</x>
|
|
<y>203</y>
|
|
</hint>
|
|
</hints>
|
|
</connection>
|
|
<connection>
|
|
<sender>buttonBox</sender>
|
|
<signal>rejected()</signal>
|
|
<receiver>SpectrumMeasurementsDialog</receiver>
|
|
<slot>reject()</slot>
|
|
<hints>
|
|
<hint type="sourcelabel">
|
|
<x>314</x>
|
|
<y>194</y>
|
|
</hint>
|
|
<hint type="destinationlabel">
|
|
<x>286</x>
|
|
<y>203</y>
|
|
</hint>
|
|
</hints>
|
|
</connection>
|
|
</connections>
|
|
</ui>
|