Added filter width parameter. Added filter center right click option.

This commit is contained in:
Jordan Sherer 2019-12-23 12:31:14 -05:00
parent 8800befef8
commit 98760a6d42
4 changed files with 47 additions and 6 deletions

View File

@ -7541,7 +7541,9 @@ void MainWindow::on_actionJS8_triggered()
updateModeButtonText(); updateModeButtonText();
m_wideGraph->setSubMode(m_nSubMode); m_wideGraph->setSubMode(m_nSubMode);
#if JS8_ENFORCE_MINIMUM_FILTER_BANDWIDTH
m_wideGraph->setFilterMinimumBandwidth(computeBandwidthForSubmode(m_nSubMode) + 2*rxThreshold(m_nSubMode)); m_wideGraph->setFilterMinimumBandwidth(computeBandwidthForSubmode(m_nSubMode) + 2*rxThreshold(m_nSubMode));
#endif
bool bVHF=m_config.enable_VHF_features(); bool bVHF=m_config.enable_VHF_features();
enable_DXCC_entity (m_config.DXCC ()); enable_DXCC_entity (m_config.DXCC ());

View File

@ -85,6 +85,12 @@ WideGraph::WideGraph(QSettings * settings, QWidget *parent) :
ui->filterCheckBox->setChecked(true); ui->filterCheckBox->setChecked(true);
}); });
auto centerAction = menu->addAction(QString("Set Filter &Center to %1 Hz").arg(f));
connect(centerAction, &QAction::triggered, this, [this, f](){
ui->filterCenterSpinBox->setValue(f);
ui->filterCheckBox->setChecked(true);
});
auto maxAction = menu->addAction(QString("Set Filter Ma&ximum to %1 Hz").arg(f)); auto maxAction = menu->addAction(QString("Set Filter Ma&ximum to %1 Hz").arg(f));
connect(maxAction, &QAction::triggered, this, [this, f](){ connect(maxAction, &QAction::triggered, this, [this, f](){
ui->filterMaxSpinBox->setValue(f); ui->filterMaxSpinBox->setValue(f);
@ -397,10 +403,12 @@ void WideGraph::setFilter(int a, int b){
int low = std::min(a, b); int low = std::min(a, b);
int high = std::max(a, b); int high = std::max(a, b);
#if JS8_ENFORCE_MINIMUM_FILTER_BANDWIDTH
// ensure minimum filter width // ensure minimum filter width
if(high-low < m_filterMinWidth){ if(high-low < m_filterMinWidth){
high = low + m_filterMinWidth; high = low + m_filterMinWidth;
} }
#endif
int width = high - low; int width = high - low;
int center = low + width / 2; int center = low + width / 2;
@ -430,6 +438,12 @@ void WideGraph::setFilter(int a, int b){
} }
ui->filterCenterSpinBox->blockSignals(blocked); ui->filterCenterSpinBox->blockSignals(blocked);
blocked = ui->filterWidthSpinBox->blockSignals(true);
{
ui->filterWidthSpinBox->setValue(width);
}
ui->filterWidthSpinBox->blockSignals(blocked);
// update the wide plot UI // update the wide plot UI
ui->widePlot->setFilterCenter(center); ui->widePlot->setFilterCenter(center);
ui->widePlot->setFilterWidth(width); ui->widePlot->setFilterWidth(width);
@ -447,6 +461,7 @@ void WideGraph::setFilterEnabled(bool enabled){
ui->filterMinSpinBox->setEnabled(enabled); ui->filterMinSpinBox->setEnabled(enabled);
ui->filterMaxSpinBox->setEnabled(enabled); ui->filterMaxSpinBox->setEnabled(enabled);
ui->filterCenterSpinBox->setEnabled(enabled); ui->filterCenterSpinBox->setEnabled(enabled);
ui->filterWidthSpinBox->setEnabled(enabled);
// update the checkbox ui // update the checkbox ui
bool blocked = ui->filterCheckBox->blockSignals(true); bool blocked = ui->filterCheckBox->blockSignals(true);
@ -737,6 +752,10 @@ void WideGraph::on_filterCenterSpinBox_valueChanged(int n){
setFilter(m_filterMinimum + delta, m_filterMaximum + delta); setFilter(m_filterMinimum + delta, m_filterMaximum + delta);
} }
void WideGraph::on_filterWidthSpinBox_valueChanged(int n){
setFilter(m_filterCenter - n/2, m_filterCenter - n/2 + n);
}
void WideGraph::on_filterCheckBox_toggled(bool b){ void WideGraph::on_filterCheckBox_toggled(bool b){
setFilterEnabled(b); setFilterEnabled(b);
} }

View File

@ -100,6 +100,7 @@ private slots:
void on_filterMinSpinBox_valueChanged(int n); void on_filterMinSpinBox_valueChanged(int n);
void on_filterMaxSpinBox_valueChanged(int n); void on_filterMaxSpinBox_valueChanged(int n);
void on_filterCenterSpinBox_valueChanged(int n); void on_filterCenterSpinBox_valueChanged(int n);
void on_filterWidthSpinBox_valueChanged(int n);
void on_filterCheckBox_toggled(bool b); void on_filterCheckBox_toggled(bool b);
void on_filterOpacitySpinBox_valueChanged(int n); void on_filterOpacitySpinBox_valueChanged(int n);

View File

@ -172,9 +172,9 @@
<property name="geometry"> <property name="geometry">
<rect> <rect>
<x>0</x> <x>0</x>
<y>0</y> <y>-196</y>
<width>267</width> <width>267</width>
<height>370</height> <height>402</height>
</rect> </rect>
</property> </property>
<layout class="QVBoxLayout" name="verticalLayout_8"> <layout class="QVBoxLayout" name="verticalLayout_8">
@ -293,7 +293,7 @@
<number>5000</number> <number>5000</number>
</property> </property>
<property name="singleStep"> <property name="singleStep">
<number>10</number> <number>1</number>
</property> </property>
<property name="value"> <property name="value">
<number>500</number> <number>500</number>
@ -318,7 +318,7 @@
<number>5000</number> <number>5000</number>
</property> </property>
<property name="singleStep"> <property name="singleStep">
<number>10</number> <number>1</number>
</property> </property>
<property name="value"> <property name="value">
<number>2500</number> <number>2500</number>
@ -340,7 +340,26 @@
<number>5000</number> <number>5000</number>
</property> </property>
<property name="singleStep"> <property name="singleStep">
<number>10</number> <number>1</number>
</property>
<property name="value">
<number>1500</number>
</property>
</widget>
</item>
<item>
<widget class="QSpinBox" name="filterWidthSpinBox">
<property name="enabled">
<bool>false</bool>
</property>
<property name="suffix">
<string> Hz</string>
</property>
<property name="prefix">
<string>Width: </string>
</property>
<property name="maximum">
<number>5000</number>
</property> </property>
<property name="value"> <property name="value">
<number>1000</number> <number>1000</number>
@ -395,7 +414,7 @@
<property name="geometry"> <property name="geometry">
<rect> <rect>
<x>0</x> <x>0</x>
<y>-517</y> <y>0</y>
<width>267</width> <width>267</width>
<height>691</height> <height>691</height>
</rect> </rect>