New flexibility for defining and selecting the waterfall palette.

git-svn-id: svn+ssh://svn.code.sf.net/p/wsjt/wsjt/branches/wsjtx@3528 ab8295b8-cf94-4d9e-aec4-7959e3be5d79
This commit is contained in:
Joe Taylor 2013-08-07 14:49:45 +00:00
parent 68bc032830
commit 67be0a1032
8 changed files with 92 additions and 556 deletions

View File

@ -3,9 +3,8 @@
#include "ui_mainwindow.h"
#include <vector>
#include <QScopedPointer>
#include <QColorDialog>
#include "devsetup.h"
#include "plotter.h"
#include "about.h"
@ -58,16 +57,8 @@ MainWindow::MainWindow(QSharedMemory *shdmem, QString *thekey, \
m_modulator (TX_SAMPLE_RATE, NTMAX / 2, this)
{
ui->setupUi(this);
m_detector.open ();
on_EraseButton_clicked();
QActionGroup* paletteGroup = new QActionGroup(this);
ui->actionCuteSDR->setActionGroup(paletteGroup);
ui->actionLinrad->setActionGroup(paletteGroup);
ui->actionAFMHot->setActionGroup(paletteGroup);
ui->actionBlue->setActionGroup(paletteGroup);
ui->actionGray1->setActionGroup(paletteGroup);
QActionGroup* modeGroup = new QActionGroup(this);
ui->actionJT9_1->setActionGroup(modeGroup);
@ -345,12 +336,6 @@ MainWindow::MainWindow(QSharedMemory *shdmem, QString *thekey, \
}
f.close();
if(ui->actionLinrad->isChecked()) on_actionLinrad_triggered();
if(ui->actionCuteSDR->isChecked()) on_actionCuteSDR_triggered();
if(ui->actionAFMHot->isChecked()) on_actionAFMHot_triggered();
if(ui->actionBlue->isChecked()) on_actionBlue_triggered();
if(ui->actionGray1->isChecked()) on_actionGray1_triggered();
ui->decodedTextLabel->setFont(ui->decodedTextBrowser->font());
ui->decodedTextLabel2->setFont(ui->decodedTextBrowser2->font());
t="UTC dB DT Freq Message";
@ -419,11 +404,6 @@ void MainWindow::writeSettings()
settings.setValue("SaveDir",m_saveDir);
settings.setValue("SoundInName", m_audioInputDevice.deviceName ());
settings.setValue("SoundOutName", m_audioOutputDevice.deviceName ());
settings.setValue("PaletteCuteSDR",ui->actionCuteSDR->isChecked());
settings.setValue("PaletteLinrad",ui->actionLinrad->isChecked());
settings.setValue("PaletteAFMHot",ui->actionAFMHot->isChecked());
settings.setValue("PaletteBlue",ui->actionBlue->isChecked());
settings.setValue("PaletteGray1",ui->actionGray1->isChecked());
settings.setValue("Mode",m_mode);
settings.setValue("ModeTx",m_modeTx);
settings.setValue("SaveNone",ui->actionNone->isChecked());
@ -535,24 +515,13 @@ void MainWindow::readSettings()
QString savedName = settings.value("SoundOutName", "default").toString();
QList<QAudioDeviceInfo> audioOutputDevices (QAudioDeviceInfo::availableDevices (QAudio::AudioOutput)); // available audio output devices
for (QList<QAudioDeviceInfo>::const_iterator p = audioOutputDevices.begin (); p != audioOutputDevices.end (); ++p)
{
if (p->deviceName () == savedName)
{
m_audioOutputDevice = *p;
}
{
if (p->deviceName () == savedName) {
m_audioOutputDevice = *p;
}
}
}
ui->actionCuteSDR->setChecked(settings.value(
"PaletteCuteSDR",false).toBool());
ui->actionLinrad->setChecked(settings.value(
"PaletteLinrad",true).toBool());
ui->actionAFMHot->setChecked(settings.value(
"PaletteAFMHot",false).toBool());
ui->actionBlue->setChecked(settings.value(
"PaletteBlue",false).toBool());
ui->actionGray1->setChecked(settings.value(
"PaletteGray1",false).toBool());
m_mode=settings.value("Mode","JT9").toString();
m_modeTx=settings.value("ModeTx","JT9").toString();
if(m_modeTx=="JT9") ui->pbTxMode->setText("Tx JT9 @");
@ -584,7 +553,6 @@ void MainWindow::readSettings()
m_toRTTY=settings.value("toRTTY",false).toBool();
ui->actionConvert_JT9_x_to_RTTY->setChecked(m_toRTTY);
m_noSuffix=settings.value("NoSuffix",false).toBool();
ui->actionLog_JT9_without_submode->setChecked(m_noSuffix);
m_dBtoComments=settings.value("dBtoComments",false).toBool();
ui->actionLog_dB_reports_to_Comments->setChecked(m_dBtoComments);
m_rig=settings.value("Rig",214).toInt();
@ -644,12 +612,6 @@ void MainWindow::readSettings()
ui->cbPlus2kHz->setChecked(m_plus2kHz);
settings.endGroup();
if(!ui->actionLinrad->isChecked() and !ui->actionCuteSDR->isChecked()and
!ui->actionAFMHot->isChecked() and !ui->actionBlue->isChecked() and
!ui->actionGray1->isChecked()) {
on_actionLinrad_triggered();
ui->actionLinrad->setChecked(true);
}
if(m_ndepth==1) ui->actionQuickDecode->setChecked(true);
if(m_ndepth==2) ui->actionMediumDecode->setChecked(true);
if(m_ndepth==3) ui->actionDeepestDecode->setChecked(true);
@ -852,31 +814,6 @@ void MainWindow::on_monitorButton_clicked() //Monitor
m_diskData=false;
}
void MainWindow::on_actionLinrad_triggered() //Linrad palette
{
if(g_pWideGraph != NULL) g_pWideGraph->setPalette("Linrad");
}
void MainWindow::on_actionCuteSDR_triggered() //CuteSDR palette
{
if(g_pWideGraph != NULL) g_pWideGraph->setPalette("CuteSDR");
}
void MainWindow::on_actionAFMHot_triggered()
{
if(g_pWideGraph != NULL) g_pWideGraph->setPalette("AFMHot");
}
void MainWindow::on_actionBlue_triggered()
{
if(g_pWideGraph != NULL) g_pWideGraph->setPalette("Blue");
}
void MainWindow::on_actionGray1_triggered()
{
if(g_pWideGraph != NULL) g_pWideGraph->setPalette("Gray1");
}
void MainWindow::on_actionAbout_triggered() //Display "About"
{
CAboutDlg dlg(this,Program_Title_Version);
@ -2720,11 +2657,6 @@ void MainWindow::on_actionConvert_JT9_x_to_RTTY_triggered(bool checked)
m_toRTTY=checked;
}
void MainWindow::on_actionLog_JT9_without_submode_triggered(bool checked)
{
m_noSuffix=checked;
}
void MainWindow::on_actionLog_dB_reports_to_Comments_triggered(bool checked)
{
m_dBtoComments=checked;

View File

@ -74,8 +74,6 @@ private slots:
void on_actionExit_triggered();
void on_actionAbout_triggered();
void OnExit();
void on_actionLinrad_triggered();
void on_actionCuteSDR_triggered();
void on_autoButton_clicked();
void on_stopTxButton_clicked();
void on_stopButton_clicked();
@ -107,8 +105,6 @@ private slots:
void on_dxGridEntry_textChanged(const QString &arg1);
void on_genStdMsgsPushButton_clicked();
void on_logQSOButton_clicked();
void on_actionAFMHot_triggered();
void on_actionBlue_triggered();
void on_actionJT9_1_triggered();
void on_actionJT65_triggered();
void on_actionJT9_JT65_triggered();
@ -134,7 +130,6 @@ private slots:
void onPopup9();
void onPopup10();
void on_actionConvert_JT9_x_to_RTTY_triggered(bool checked);
void on_actionLog_JT9_without_submode_triggered(bool checked);
void on_actionLog_dB_reports_to_Comments_triggered(bool checked);
void startTx2();
void stopTx();
@ -171,8 +166,6 @@ private slots:
void on_actionTx2QSO_triggered(bool checked);
void on_cbPlus2kHz_toggled(bool checked);
void on_actionGray1_triggered();
private:
Ui::MainWindow *ui;

View File

@ -2274,19 +2274,8 @@ p, li { white-space: pre-wrap; }
<property name="title">
<string>View</string>
</property>
<widget class="QMenu" name="menuWaterfall_palette">
<property name="title">
<string>Waterfall palette</string>
</property>
<addaction name="actionLinrad"/>
<addaction name="actionCuteSDR"/>
<addaction name="actionAFMHot"/>
<addaction name="actionBlue"/>
<addaction name="actionGray1"/>
</widget>
<addaction name="actionWide_Waterfall"/>
<addaction name="separator"/>
<addaction name="menuWaterfall_palette"/>
</widget>
<widget class="QMenu" name="menuDecode">
<property name="title">
@ -2354,24 +2343,6 @@ p, li { white-space: pre-wrap; }
<string>Ctrl+F1</string>
</property>
</action>
<action name="actionAstro_Data">
<property name="text">
<string>Astro Data</string>
</property>
<property name="shortcut">
<string>Shift+F10</string>
</property>
</action>
<action name="actionBand_Map">
<property name="text">
<string>Band Map</string>
</property>
</action>
<action name="actionMessages">
<property name="text">
<string>Messages</string>
</property>
</action>
<action name="actionWide_Waterfall">
<property name="text">
<string>Waterfall</string>
@ -2403,54 +2374,6 @@ p, li { white-space: pre-wrap; }
<string>Delete all *.wav files in SaveDir</string>
</property>
</action>
<action name="actionErase_Band_Map_and_Messages">
<property name="text">
<string>Erase Band Map and Messages</string>
</property>
</action>
<action name="actionLinrad">
<property name="checkable">
<bool>true</bool>
</property>
<property name="checked">
<bool>true</bool>
</property>
<property name="text">
<string>Linrad</string>
</property>
</action>
<action name="actionCuteSDR">
<property name="checkable">
<bool>true</bool>
</property>
<property name="checked">
<bool>false</bool>
</property>
<property name="text">
<string>CuteSDR</string>
</property>
</action>
<action name="actionFind_Delta_Phi">
<property name="text">
<string>Find Delta Phi</string>
</property>
</action>
<action name="actionF4_sets_Tx6">
<property name="checkable">
<bool>true</bool>
</property>
<property name="text">
<string>F4 sets Tx6</string>
</property>
</action>
<action name="actionNo_shorthands_if_Tx1">
<property name="checkable">
<bool>true</bool>
</property>
<property name="text">
<string>No shorthand decodes if Tx1</string>
</property>
</action>
<action name="actionQuickDecode">
<property name="checkable">
<bool>true</bool>
@ -2481,57 +2404,6 @@ p, li { white-space: pre-wrap; }
<string>Save all</string>
</property>
</action>
<action name="action50">
<property name="checkable">
<bool>true</bool>
</property>
<property name="text">
<string>50</string>
</property>
</action>
<action name="action144">
<property name="checkable">
<bool>true</bool>
</property>
<property name="checked">
<bool>true</bool>
</property>
<property name="text">
<string>144</string>
</property>
</action>
<action name="action222">
<property name="checkable">
<bool>true</bool>
</property>
<property name="text">
<string>222</string>
</property>
</action>
<action name="action432">
<property name="checkable">
<bool>true</bool>
</property>
<property name="text">
<string>432</string>
</property>
</action>
<action name="action1296">
<property name="checkable">
<bool>true</bool>
</property>
<property name="text">
<string>1296</string>
</property>
</action>
<action name="action2304">
<property name="checkable">
<bool>true</bool>
</property>
<property name="text">
<string>2304</string>
</property>
</action>
<action name="actionOnline_Users_Guide">
<property name="text">
<string>Online User's Guide</string>
@ -2556,80 +2428,6 @@ p, li { white-space: pre-wrap; }
<string>F5</string>
</property>
</action>
<action name="actionAvailable_suffixes_and_add_on_prefixes">
<property name="text">
<string>Available suffixes and add-on-prefixes</string>
</property>
</action>
<action name="actionJT65A">
<property name="checkable">
<bool>true</bool>
</property>
<property name="text">
<string>JT65A</string>
</property>
</action>
<action name="actionJT65B">
<property name="checkable">
<bool>true</bool>
</property>
<property name="checked">
<bool>true</bool>
</property>
<property name="text">
<string>JT65B</string>
</property>
</action>
<action name="actionJT65C">
<property name="checkable">
<bool>true</bool>
</property>
<property name="text">
<string>JT65C</string>
</property>
</action>
<action name="actionI_Q_Calibration">
<property name="text">
<string>I/Q Calibration</string>
</property>
<property name="shortcut">
<string>F7</string>
</property>
</action>
<action name="actionAdjust_IQ_Calibration">
<property name="text">
<string>Adjust I/Q Calibration</string>
</property>
</action>
<action name="actionApply_IQ_Calibration">
<property name="checkable">
<bool>true</bool>
</property>
<property name="text">
<string>Apply I/Q Calibration</string>
</property>
</action>
<action name="actionAFMHot">
<property name="checkable">
<bool>true</bool>
</property>
<property name="text">
<string>AFMHot</string>
</property>
</action>
<action name="actionBlue">
<property name="checkable">
<bool>true</bool>
</property>
<property name="text">
<string>Blue</string>
</property>
</action>
<action name="actionFUNcube_Dongle">
<property name="text">
<string>FUNcube Dongle Settings</string>
</property>
</action>
<action name="actionJT9_1">
<property name="checkable">
<bool>true</bool>
@ -2641,58 +2439,6 @@ p, li { white-space: pre-wrap; }
<string>JT9</string>
</property>
</action>
<action name="actionJT9_2">
<property name="checkable">
<bool>true</bool>
</property>
<property name="text">
<string>JT9-2</string>
</property>
</action>
<action name="actionJT9_5">
<property name="checkable">
<bool>true</bool>
</property>
<property name="enabled">
<bool>false</bool>
</property>
<property name="text">
<string>JT9-5</string>
</property>
</action>
<action name="actionJT9_10">
<property name="checkable">
<bool>true</bool>
</property>
<property name="enabled">
<bool>false</bool>
</property>
<property name="text">
<string>JT9-10</string>
</property>
</action>
<action name="actionJT9_30">
<property name="checkable">
<bool>true</bool>
</property>
<property name="enabled">
<bool>false</bool>
</property>
<property name="text">
<string>JT9-30</string>
</property>
</action>
<action name="actionSave_synced">
<property name="checkable">
<bool>true</bool>
</property>
<property name="enabled">
<bool>false</bool>
</property>
<property name="text">
<string>Save synced</string>
</property>
</action>
<action name="actionSave_decoded">
<property name="checkable">
<bool>true</bool>
@ -2744,14 +2490,6 @@ p, li { white-space: pre-wrap; }
<string>Erase wsjtx_log.adi</string>
</property>
</action>
<action name="actionLog_JT9_without_submode">
<property name="checkable">
<bool>true</bool>
</property>
<property name="text">
<string>Log JT9 without submode</string>
</property>
</action>
<action name="actionConvert_JT9_x_to_RTTY">
<property name="checkable">
<bool>true</bool>
@ -2792,11 +2530,6 @@ p, li { white-space: pre-wrap; }
<string>Clear DX Call and Grid after logging</string>
</property>
</action>
<action name="actionDistance_in_miles">
<property name="text">
<string>Distance in miles</string>
</property>
</action>
<action name="actionDisplay_distance_in_miles">
<property name="checkable">
<bool>true</bool>

View File

@ -134,11 +134,7 @@ void CPlotter::draw(float swide[]) //draw()
m_line++;
if(m_line == 13) {
UTCstr();
if(m_palette=="Gray1") {
painter1.setPen(Qt::red);
} else {
painter1.setPen(Qt::white);
}
painter1.setPen(Qt::white);
painter1.drawText(5,10,m_sutc);
}
update(); //trigger a new paintEvent
@ -429,90 +425,6 @@ void CPlotter::setNSpan(int n) //setNSpan()
m_nSpan=n;
}
void CPlotter::setPalette(QString palette) //setPalette()
{
m_palette=palette;
if(palette=="Linrad") {
float twopi=6.2831853;
float r,g,b,phi,x;
for(int i=0; i<256; i++) {
r=0.0;
if(i>105 and i<=198) {
phi=(twopi/4.0) * (i-105.0)/(198.0-105.0);
r=sin(phi);
} else if(i>=198) {
r=1.0;
}
g=0.0;
if(i>35 and i<198) {
phi=(twopi/4.0) * (i-35.0)/(122.5-35.0);
g=0.625*sin(phi);
} else if(i>=198) {
x=(i-186.0);
g=-0.014 + 0.0144*x -0.00007*x*x +0.000002*x*x*x;
if(g>1.0) g=1.0;
}
b=0.0;
if(i<=117) {
phi=(twopi/2.0) * i/117.0;
b=0.4531*sin(phi);
} else if(i>186) {
x=(i-186.0);
b=-0.014 + 0.0144*x -0.00007*x*x +0.000002*x*x*x;
if(b>1.0) b=1.0;
}
m_ColorTbl[i].setRgb(int(255.0*r),int(255.0*g),int(255.0*b));
}
m_ColorTbl[255].setRgb(255,255,100);
return;
}
if(palette=="CuteSDR") {
for( int i=0; i<256; i++) {
if( (i<43) )
m_ColorTbl[i].setRgb( 0,0, 255*(i)/43);
if( (i>=43) && (i<87) )
m_ColorTbl[i].setRgb( 0, 255*(i-43)/43, 255 );
if( (i>=87) && (i<120) )
m_ColorTbl[i].setRgb( 0,255, 255-(255*(i-87)/32));
if( (i>=120) && (i<154) )
m_ColorTbl[i].setRgb( (255*(i-120)/33), 255, 0);
if( (i>=154) && (i<217) )
m_ColorTbl[i].setRgb( 255, 255 - (255*(i-154)/62), 0);
if( (i>=217) )
m_ColorTbl[i].setRgb( 255, 0, 128*(i-217)/38);
}
m_ColorTbl[255].setRgb(255,255,100);
return;
}
QFile f;
if(palette=="Blue") f.setFileName("blue.dat");
if(palette=="AFMHot") f.setFileName("afmhot.dat");
if(palette=="Gray1") f.setFileName("gray1.dat");
if(f.open(QIODevice::ReadOnly)) {
QTextStream in(&f);
int n,r,g,b;
float xr,xg,xb;
for(int i=0; i<256; i++) {
in >> n >> xr >> xg >> xb;
r=255.0*xr + 0.5;
g=255.0*xg + 0.5;
b=255.0*xb + 0.5;
m_ColorTbl[i].setRgb(r,g,b);
}
f.close();
} else {
QMessageBox msgBox0;
QString t="Error: Cannot find requested palette file.";
msgBox0.setText(t);
msgBox0.exec();
return;
}
}
double CPlotter::fGreen()
{
return m_fGreen;

View File

@ -61,7 +61,6 @@ public:
void setRxFreq(int n, bool bf);
void DrawOverlay();
int rxFreq();
void setPalette(QString palette);
void setFsample(int n);
void setNsps(int ntrperiod, int nsps);
void setTxFreq(int n);
@ -98,7 +97,6 @@ private:
QString m_HDivText[483];
QString m_mode;
QString m_modeTx;
QString m_palette;
bool m_Running;
bool m_paintEventBusy;

View File

@ -53,7 +53,11 @@ WideGraph::WideGraph(QWidget *parent) :
ui->slopeSpinBox->setValue(m_slope);
ui->widePlot->setStartFreq(settings.value("StartFreq",0).toInt());
ui->fStartSpinBox->setValue(ui->widePlot->startFreq());
m_waterfallPalette=settings.value("WaterfallPalette","default").toString();
ui->labPalette->setText(m_waterfallPalette.mid(0,1).toUpper() +
m_waterfallPalette.mid(1));
settings.endGroup();
readPalette("Palettes/" + m_waterfallPalette + ".pal");
}
WideGraph::~WideGraph()
@ -80,6 +84,7 @@ void WideGraph::saveSettings()
settings.setValue("BinsPerPixel",ui->widePlot->binsPerPixel());
settings.setValue("Slope",m_slope);
settings.setValue("StartFreq",ui->widePlot->startFreq());
settings.setValue("WaterfallPalette",m_waterfallPalette);
settings.endGroup();
}
@ -227,11 +232,6 @@ void WideGraph::setFmin(int n)
setRxRange(m_fMin);
}
void WideGraph::setPalette(QString palette)
{
ui->widePlot->setPalette(palette);
}
double WideGraph::fGreen()
{
return ui->widePlot->fGreen();
@ -319,3 +319,54 @@ void WideGraph::on_fStartSpinBox_valueChanged(int n)
{
ui->widePlot->setStartFreq(n);
}
void WideGraph::on_pbPalette_clicked()
{
QString fileName = QFileDialog::getOpenFileName(this, tr("Select Palette"),
"./Palettes", tr("Files (*.pal)"));
if(fileName!="") readPalette(fileName);
/*
QColor color = QColorDialog::getColor(Qt::yellow, this );
if(color.isValid()) {
qDebug( "ok" );
}
*/
}
void WideGraph::readPalette(QString fileName)
{
QFile f;
f.setFileName(fileName);
if(f.open(QIODevice::ReadOnly)) {
QTextStream in(&f);
int r[9],g[9],b[9];
QString t;
for(int i=0; i<9; i++) {
t=in.readLine();
r[i]=t.mid(0,3).toInt();
g[i]=t.mid(4,3).toInt();
b[i]=t.mid(8,3).toInt();
}
f.close();
for(int i=0; i<256; i++) {
int j0=i/32;
int j1=j0+1;
int k=i-32*j0;
int rr=r[j0] + int((k*(r[j1]-r[j0]))/31 + 0.5);
int gg=g[j0] + int((k*(g[j1]-g[j0]))/31 + 0.5);
int bb=b[j0] + int((k*(b[j1]-b[j0]))/31 + 0.5);
ui->widePlot->m_ColorTbl[i].setRgb(rr,gg,bb);
}
QFileInfo fileInfo(f);
t=fileInfo.fileName();
int n=t.length();
m_waterfallPalette=t.mid(0,n-4);
ui->labPalette->setText(m_waterfallPalette.mid(0,1).toUpper() +
m_waterfallPalette.mid(1));
} else {
QMessageBox msgBox0;
QString t="Error: Cannot find requested palette file " + fileName;
msgBox0.setText(t);
msgBox0.exec();
}
}

View File

@ -25,7 +25,6 @@ public:
void saveSettings();
void setRxRange(int fMin);
void setFmin(int n);
void setPalette(QString palette);
void setFsample(int n);
void setPeriod(int ntrperiod, int nsps);
void setTxFreq(int n);
@ -35,6 +34,7 @@ public:
void setLockTxFreq(bool b);
double getSlope();
double fGreen();
void readPalette(QString fileName);
qint32 m_rxFreq;
qint32 m_txFreq;
@ -62,6 +62,7 @@ private slots:
void on_fMinSpinBox_valueChanged(int n);
void on_slopeSpinBox_valueChanged(double d);
void on_fStartSpinBox_valueChanged(int n);
void on_pbPalette_clicked();
private:
double m_slope;
@ -79,6 +80,7 @@ private:
QString m_mode;
QString m_modeTx;
QString m_waterfallPalette;
Ui::WideGraph *ui;
};

View File

@ -7,7 +7,7 @@
<x>0</x>
<y>0</y>
<width>799</width>
<height>326</height>
<height>395</height>
</rect>
</property>
<property name="sizePolicy">
@ -51,24 +51,21 @@
</widget>
</item>
<item>
<layout class="QHBoxLayout" name="horizontalLayout_3">
<property name="spacing">
<number>0</number>
</property>
<item>
<spacer name="horizontalSpacer_4">
<layout class="QGridLayout" name="gridLayout">
<item row="0" column="0">
<spacer name="horizontalSpacer">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>20</width>
<width>40</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
<item>
<item row="0" column="1">
<widget class="QSpinBox" name="fStartSpinBox">
<property name="sizePolicy">
<sizepolicy hsizetype="Fixed" vsizetype="Fixed">
@ -96,23 +93,7 @@
</property>
</widget>
</item>
<item>
<spacer name="horizontalSpacer_5">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeType">
<enum>QSizePolicy::Minimum</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>8</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
<item>
<item row="0" column="2">
<widget class="QSpinBox" name="freqSpanSpinBox">
<property name="sizePolicy">
<sizepolicy hsizetype="Fixed" vsizetype="Fixed">
@ -155,23 +136,7 @@
</property>
</widget>
</item>
<item>
<spacer name="horizontalSpacer_6">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeType">
<enum>QSizePolicy::Minimum</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>8</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
<item>
<item row="0" column="3">
<widget class="QSpinBox" name="waterfallAvgSpinBox">
<property name="sizePolicy">
<sizepolicy hsizetype="Fixed" vsizetype="Fixed">
@ -205,23 +170,7 @@
</property>
</widget>
</item>
<item>
<spacer name="horizontalSpacer_2">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeType">
<enum>QSizePolicy::Minimum</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>8</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
<item>
<item row="0" column="4">
<widget class="QSpinBox" name="gainSpinBox">
<property name="minimumSize">
<size>
@ -249,23 +198,7 @@
</property>
</widget>
</item>
<item>
<spacer name="horizontalSpacer_7">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeType">
<enum>QSizePolicy::Minimum</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>8</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
<item>
<item row="0" column="5">
<widget class="QSpinBox" name="zeroSpinBox">
<property name="minimumSize">
<size>
@ -296,7 +229,7 @@
</property>
</widget>
</item>
<item>
<item row="0" column="6">
<widget class="QDoubleSpinBox" name="slopeSpinBox">
<property name="minimumSize">
<size>
@ -321,23 +254,20 @@
</property>
</widget>
</item>
<item>
<spacer name="horizontalSpacer">
<item row="0" column="7">
<spacer name="horizontalSpacer_2">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeType">
<enum>QSizePolicy::Minimum</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>8</width>
<width>40</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
<item>
<item row="1" column="2">
<widget class="QSpinBox" name="fMinSpinBox">
<property name="sizePolicy">
<sizepolicy hsizetype="Fixed" vsizetype="Fixed">
@ -374,23 +304,7 @@
</property>
</widget>
</item>
<item>
<spacer name="horizontalSpacer_8">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeType">
<enum>QSizePolicy::Minimum</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>8</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
<item>
<item row="1" column="3">
<widget class="QComboBox" name="spec2dComboBox">
<property name="toolTip">
<string>Select data for display curve</string>
@ -410,18 +324,19 @@
</item>
</widget>
</item>
<item>
<spacer name="horizontalSpacer_3">
<property name="orientation">
<enum>Qt::Horizontal</enum>
<item row="1" column="4">
<widget class="QPushButton" name="pbPalette">
<property name="text">
<string>Palette</string>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>20</width>
<height>20</height>
</size>
</widget>
</item>
<item row="1" column="5">
<widget class="QLabel" name="labPalette">
<property name="text">
<string>Linrad</string>
</property>
</spacer>
</widget>
</item>
</layout>
</item>