518 lines
		
	
	
		
			15 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
		
		
			
		
	
	
			518 lines
		
	
	
		
			15 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
|   | #include "widegraph.h" | ||
|  | 
 | ||
|  | #include <algorithm> | ||
|  | #include <QApplication> | ||
|  | #include <QSettings> | ||
|  | #include "ui_widegraph.h" | ||
|  | #include "commons.h" | ||
|  | #include "Configuration.hpp" | ||
|  | #include "MessageBox.hpp" | ||
|  | #include "SettingsGroup.hpp" | ||
|  | #include "moc_widegraph.cpp" | ||
|  | 
 | ||
|  | namespace | ||
|  | { | ||
|  |   auto user_defined = QObject::tr ("User Defined"); | ||
|  |   float swide[MAX_SCREENSIZE]; | ||
|  | } | ||
|  | 
 | ||
|  | WideGraph::WideGraph(QSettings * settings, QWidget *parent) : | ||
|  |   QDialog(parent), | ||
|  |   ui(new Ui::WideGraph), | ||
|  |   m_settings (settings), | ||
|  |   m_palettes_path {":/Palettes"}, | ||
|  |   m_ntr0 {0}, | ||
|  |   m_lockTxFreq {false}, | ||
|  |   m_bHaveTransmitted {false}, | ||
|  |   m_n {0} | ||
|  | { | ||
|  |   ui->setupUi(this); | ||
|  | 
 | ||
|  |   setWindowTitle (QApplication::applicationName () + " - " + tr ("Wide Graph")); | ||
|  |   setWindowFlags (Qt::WindowCloseButtonHint | Qt::WindowMinimizeButtonHint); | ||
|  |   setMaximumWidth (MAX_SCREENSIZE); | ||
|  |   setMaximumHeight (880); | ||
|  | 
 | ||
|  |   ui->widePlot->setCursor(Qt::CrossCursor); | ||
|  |   ui->widePlot->setMaximumHeight(800); | ||
|  |   ui->widePlot->setCurrent(false); | ||
|  | 
 | ||
|  |   connect(ui->widePlot, SIGNAL(freezeDecode1(int)),this, | ||
|  |           SLOT(wideFreezeDecode(int))); | ||
|  | 
 | ||
|  |   connect(ui->widePlot, SIGNAL(setFreq1(int,int)),this, | ||
|  |           SLOT(setFreq2(int,int))); | ||
|  | 
 | ||
|  |   { | ||
|  |     //Restore user's settings | ||
|  |     SettingsGroup g {m_settings, "WideGraph"}; | ||
|  |     restoreGeometry (m_settings->value ("geometry", saveGeometry ()).toByteArray ()); | ||
|  |     ui->widePlot->setPlotZero(m_settings->value("PlotZero", 0).toInt()); | ||
|  |     ui->widePlot->setPlotGain(m_settings->value("PlotGain", 0).toInt()); | ||
|  |     ui->widePlot->setPlot2dGain(m_settings->value("Plot2dGain", 0).toInt()); | ||
|  |     ui->widePlot->setPlot2dZero(m_settings->value("Plot2dZero", 0).toInt()); | ||
|  |     ui->zeroSlider->setValue(ui->widePlot->plotZero()); | ||
|  |     ui->gainSlider->setValue(ui->widePlot->plotGain()); | ||
|  |     ui->gain2dSlider->setValue(ui->widePlot->plot2dGain()); | ||
|  |     ui->zero2dSlider->setValue(ui->widePlot->plot2dZero()); | ||
|  |     int n = m_settings->value("BinsPerPixel",2).toInt(); | ||
|  |     m_bFlatten=m_settings->value("Flatten",true).toBool(); | ||
|  |     m_bRef=m_settings->value("UseRef",false).toBool(); | ||
|  |     ui->cbFlatten->setChecked(m_bFlatten); | ||
|  |     ui->widePlot->setFlatten(m_bFlatten,m_bRef); | ||
|  |     ui->cbRef->setChecked(m_bRef); | ||
|  |     ui->widePlot->setBreadth(m_settings->value("PlotWidth",1000).toInt()); | ||
|  |     ui->bppSpinBox->setValue(n); | ||
|  |     m_nsmo=m_settings->value("SmoothYellow",1).toInt(); | ||
|  |     ui->smoSpinBox->setValue(m_nsmo); | ||
|  |     m_Percent2DScreen=m_settings->value("Percent2D",30).toInt(); | ||
|  |     ui->sbPercent2dPlot->setValue(m_Percent2DScreen); | ||
|  |     m_waterfallAvg = m_settings->value("WaterfallAvg",5).toInt(); | ||
|  |     ui->waterfallAvgSpinBox->setValue(m_waterfallAvg); | ||
|  |     ui->widePlot->setWaterfallAvg(m_waterfallAvg); | ||
|  |     ui->widePlot->setCurrent(m_settings->value("Current",false).toBool()); | ||
|  |     ui->widePlot->setCumulative(m_settings->value("Cumulative",true).toBool()); | ||
|  |     ui->widePlot->setLinearAvg(m_settings->value("LinearAvg",false).toBool()); | ||
|  |     ui->widePlot->setReference(m_settings->value("Reference",false).toBool()); | ||
|  |     if(ui->widePlot->current()) ui->spec2dComboBox->setCurrentIndex(0); | ||
|  |     if(ui->widePlot->cumulative()) ui->spec2dComboBox->setCurrentIndex(1); | ||
|  |     if(ui->widePlot->linearAvg()) ui->spec2dComboBox->setCurrentIndex(2); | ||
|  |     if(ui->widePlot->Reference()) ui->spec2dComboBox->setCurrentIndex(3); | ||
|  |     int nbpp=m_settings->value("BinsPerPixel",2).toInt(); | ||
|  |     ui->widePlot->setBinsPerPixel(nbpp); | ||
|  |     ui->widePlot->setStartFreq(m_settings->value("StartFreq",0).toInt()); | ||
|  |     ui->fStartSpinBox->setValue(ui->widePlot->startFreq()); | ||
|  |     m_waterfallPalette=m_settings->value("WaterfallPalette","Default").toString(); | ||
|  |     m_userPalette = WFPalette {m_settings->value("UserPalette").value<WFPalette::Colours> ()}; | ||
|  |     int m_fMin = m_settings->value ("Fmin", 2500).toInt (); | ||
|  |     ui->fSplitSpinBox->setValue (m_fMin); | ||
|  |     setRxRange (); | ||
|  |     ui->controls_widget->setVisible(!m_settings->value("HideControls", false).toBool ()); | ||
|  |   } | ||
|  | 
 | ||
|  |   saveSettings ();		// update config with defaults | ||
|  | 
 | ||
|  |   int index=0; | ||
|  |   for (QString const& file: | ||
|  |          m_palettes_path.entryList(QDir::NoDotAndDotDot | | ||
|  |                                    QDir::System | QDir::Hidden | | ||
|  |                                    QDir::AllDirs | QDir::Files, | ||
|  |                                    QDir::DirsFirst)) { | ||
|  |     QString t=file.mid(0,file.length()-4); | ||
|  |     ui->paletteComboBox->addItem(t); | ||
|  |     if(t==m_waterfallPalette) ui->paletteComboBox->setCurrentIndex(index); | ||
|  |     index++; | ||
|  |   } | ||
|  |   ui->paletteComboBox->addItem (user_defined); | ||
|  |   if (user_defined == m_waterfallPalette) ui->paletteComboBox->setCurrentIndex(index); | ||
|  |   readPalette (); | ||
|  | } | ||
|  | 
 | ||
|  | WideGraph::~WideGraph () | ||
|  | { | ||
|  | } | ||
|  | 
 | ||
|  | void WideGraph::closeEvent (QCloseEvent * e) | ||
|  | { | ||
|  |   saveSettings (); | ||
|  |   QDialog::closeEvent (e); | ||
|  | } | ||
|  | 
 | ||
|  | void WideGraph::saveSettings()                                           //saveSettings | ||
|  | { | ||
|  |   SettingsGroup g {m_settings, "WideGraph"}; | ||
|  |   m_settings->setValue ("geometry", saveGeometry ()); | ||
|  |   m_settings->setValue ("PlotZero", ui->widePlot->plotZero()); | ||
|  |   m_settings->setValue ("PlotGain", ui->widePlot->plotGain()); | ||
|  |   m_settings->setValue ("Plot2dGain", ui->widePlot->plot2dGain()); | ||
|  |   m_settings->setValue ("Plot2dZero", ui->widePlot->plot2dZero()); | ||
|  |   m_settings->setValue ("PlotWidth", ui->widePlot->plotWidth ()); | ||
|  |   m_settings->setValue ("BinsPerPixel", ui->bppSpinBox->value ()); | ||
|  |   m_settings->setValue ("SmoothYellow", ui->smoSpinBox->value ()); | ||
|  |   m_settings->setValue ("Percent2D",m_Percent2DScreen); | ||
|  |   m_settings->setValue ("WaterfallAvg", ui->waterfallAvgSpinBox->value ()); | ||
|  |   m_settings->setValue ("Current", ui->widePlot->current()); | ||
|  |   m_settings->setValue ("Cumulative", ui->widePlot->cumulative()); | ||
|  |   m_settings->setValue ("LinearAvg", ui->widePlot->linearAvg()); | ||
|  |   m_settings->setValue ("Reference", ui->widePlot->Reference()); | ||
|  |   m_settings->setValue ("BinsPerPixel", ui->widePlot->binsPerPixel ()); | ||
|  |   m_settings->setValue ("StartFreq", ui->widePlot->startFreq ()); | ||
|  |   m_settings->setValue ("WaterfallPalette", m_waterfallPalette); | ||
|  |   m_settings->setValue ("UserPalette", QVariant::fromValue (m_userPalette.colours ())); | ||
|  |   m_settings->setValue("Flatten",m_bFlatten); | ||
|  |   m_settings->setValue("UseRef",m_bRef); | ||
|  |   m_settings->setValue ("HideControls", ui->controls_widget->isHidden ()); | ||
|  | } | ||
|  | 
 | ||
|  | void WideGraph::drawRed(int ia, int ib) | ||
|  | { | ||
|  |   ui->widePlot->drawRed(ia,ib,swide); | ||
|  | } | ||
|  | 
 | ||
|  | void WideGraph::dataSink2(float s[], float df3, int ihsym, int ndiskdata)  //dataSink2 | ||
|  | { | ||
|  |   static float splot[NSMAX]; | ||
|  |   int nbpp = ui->widePlot->binsPerPixel(); | ||
|  | 
 | ||
|  | //Average spectra over specified number, m_waterfallAvg | ||
|  |   if (m_n==0) { | ||
|  |     for (int i=0; i<NSMAX; i++) | ||
|  |       splot[i]=s[i]; | ||
|  |   } else { | ||
|  |     for (int i=0; i<NSMAX; i++) | ||
|  |       splot[i] += s[i]; | ||
|  |   } | ||
|  |   m_n++; | ||
|  | 
 | ||
|  |   if (m_n>=m_waterfallAvg) { | ||
|  |     for (int i=0; i<NSMAX; i++) | ||
|  |         splot[i] /= m_n;        //Normalize the average | ||
|  |     m_n=0; | ||
|  |     int i=int(ui->widePlot->startFreq()/df3 + 0.5); | ||
|  |     int jz=5000.0/(nbpp*df3); | ||
|  | 		if(jz>MAX_SCREENSIZE) jz=MAX_SCREENSIZE; | ||
|  |     for (int j=0; j<jz; j++) { | ||
|  |       float ss=0; | ||
|  |       for (int k=0; k<nbpp; k++) { | ||
|  |         if(splot[i]>ss) ss=splot[i]; | ||
|  |         i++; | ||
|  |       } | ||
|  |       swide[j]=nbpp*ss; | ||
|  |     } | ||
|  | 
 | ||
|  | // Time according to this computer | ||
|  |     qint64 ms = QDateTime::currentMSecsSinceEpoch() % 86400000; | ||
|  |     int ntr = (ms/1000) % m_TRperiod; | ||
|  |     if((ndiskdata && ihsym <= m_waterfallAvg) || (!ndiskdata && ntr<m_ntr0)) { | ||
|  |       float flagValue=1.0e30; | ||
|  |       if(m_bHaveTransmitted) flagValue=2.0e30; | ||
|  |       for (int i=0; i<2048; i++) { | ||
|  |         swide[i] = flagValue; | ||
|  |       } | ||
|  |       m_bHaveTransmitted=false; | ||
|  |     } | ||
|  |     m_ntr0=ntr; | ||
|  |     ui->widePlot->draw(swide,true,false); | ||
|  |   } | ||
|  | } | ||
|  | 
 | ||
|  | void WideGraph::on_bppSpinBox_valueChanged(int n)                            //bpp | ||
|  | { | ||
|  |   ui->widePlot->setBinsPerPixel(n); | ||
|  | } | ||
|  | 
 | ||
|  | void WideGraph::on_waterfallAvgSpinBox_valueChanged(int n)                  //Navg | ||
|  | { | ||
|  |   m_waterfallAvg = n; | ||
|  |   ui->widePlot->setWaterfallAvg(n); | ||
|  | } | ||
|  | 
 | ||
|  | void WideGraph::keyPressEvent(QKeyEvent *e)                                 //F11, F12 | ||
|  | {   | ||
|  |   switch(e->key()) | ||
|  |   { | ||
|  |   int n; | ||
|  |   case Qt::Key_F11: | ||
|  |     n=11; | ||
|  |     if(e->modifiers() & Qt::ControlModifier) n+=100; | ||
|  |     emit f11f12(n); | ||
|  |     break; | ||
|  |   case Qt::Key_F12: | ||
|  |     n=12; | ||
|  |     if(e->modifiers() & Qt::ControlModifier) n+=100; | ||
|  |     emit f11f12(n); | ||
|  |     break; | ||
|  |   case Qt::Key_M: | ||
|  |     if(e->modifiers() & Qt::ControlModifier) { | ||
|  |       ui->controls_widget->setVisible(!ui->controls_widget->isVisible()); | ||
|  |     } | ||
|  |     break; | ||
|  |   default: | ||
|  |     QDialog::keyPressEvent (e); | ||
|  |   } | ||
|  | } | ||
|  | 
 | ||
|  | void WideGraph::setRxFreq(int n)                                           //setRxFreq | ||
|  | { | ||
|  |   ui->widePlot->setRxFreq(n); | ||
|  |   ui->widePlot->draw(swide,false,false); | ||
|  |   if(m_lockTxFreq) setTxFreq(n); | ||
|  | } | ||
|  | 
 | ||
|  | int WideGraph::rxFreq()                                                   //rxFreq | ||
|  | { | ||
|  |   return ui->widePlot->rxFreq(); | ||
|  | } | ||
|  | 
 | ||
|  | int WideGraph::nStartFreq()                                             //nStartFreq | ||
|  | { | ||
|  |   return ui->widePlot->startFreq(); | ||
|  | } | ||
|  | 
 | ||
|  | void WideGraph::wideFreezeDecode(int n)                              //wideFreezeDecode | ||
|  | { | ||
|  |   emit freezeDecode2(n); | ||
|  | } | ||
|  | 
 | ||
|  | void WideGraph::setRxRange () | ||
|  | { | ||
|  |   ui->widePlot->setRxRange (Fmin ()); | ||
|  |   ui->widePlot->DrawOverlay(); | ||
|  |   ui->widePlot->update(); | ||
|  | } | ||
|  | 
 | ||
|  | int WideGraph::Fmin()                                              //Fmin | ||
|  | { | ||
|  |   return "60m" == m_rxBand ? 0 : m_fMin; | ||
|  | } | ||
|  | 
 | ||
|  | int WideGraph::Fmax()                                              //Fmax | ||
|  | { | ||
|  |   return std::max (5000, ui->widePlot->Fmax()); | ||
|  | } | ||
|  | 
 | ||
|  | int WideGraph::fSpan() | ||
|  | { | ||
|  |   return ui->widePlot->fSpan (); | ||
|  | } | ||
|  | 
 | ||
|  | void WideGraph::setPeriod(int ntrperiod, int nsps)                  //SetPeriod | ||
|  | { | ||
|  |   m_TRperiod=ntrperiod; | ||
|  |   m_nsps=nsps; | ||
|  |   ui->widePlot->setNsps(ntrperiod, nsps); | ||
|  | } | ||
|  | 
 | ||
|  | void WideGraph::setTxFreq(int n)                                   //setTxFreq | ||
|  | { | ||
|  |   emit setXIT2(n); | ||
|  |   ui->widePlot->setTxFreq(n); | ||
|  | } | ||
|  | 
 | ||
|  | void WideGraph::setMode(QString mode)                              //setMode | ||
|  | { | ||
|  |   m_mode=mode; | ||
|  |   ui->fSplitSpinBox->setEnabled(m_mode=="JT9+JT65"); | ||
|  |   ui->widePlot->setMode(mode); | ||
|  |   ui->widePlot->DrawOverlay(); | ||
|  |   ui->widePlot->update(); | ||
|  | } | ||
|  | 
 | ||
|  | void WideGraph::setSubMode(int n)                                  //setSubMode | ||
|  | { | ||
|  |   m_nSubMode=n; | ||
|  |   ui->widePlot->setSubMode(n); | ||
|  |   ui->widePlot->DrawOverlay(); | ||
|  |   ui->widePlot->update(); | ||
|  | } | ||
|  | void WideGraph::setModeTx(QString modeTx)                          //setModeTx | ||
|  | { | ||
|  |   m_modeTx=modeTx; | ||
|  |   ui->widePlot->setModeTx(modeTx); | ||
|  |   ui->widePlot->DrawOverlay(); | ||
|  |   ui->widePlot->update(); | ||
|  | } | ||
|  | 
 | ||
|  |                                                         //Current-Cumulative-Yellow | ||
|  | void WideGraph::on_spec2dComboBox_currentIndexChanged(const QString &arg1) | ||
|  | { | ||
|  |   ui->widePlot->setCurrent(false); | ||
|  |   ui->widePlot->setCumulative(false); | ||
|  |   ui->widePlot->setLinearAvg(false); | ||
|  |   ui->widePlot->setReference(false); | ||
|  |   ui->smoSpinBox->setEnabled(false); | ||
|  |   if(arg1=="Current") ui->widePlot->setCurrent(true); | ||
|  |   if(arg1=="Cumulative") ui->widePlot->setCumulative(true); | ||
|  |   if(arg1=="Linear Avg") { | ||
|  |     ui->widePlot->setLinearAvg(true); | ||
|  |     ui->smoSpinBox->setEnabled(true); | ||
|  |   } | ||
|  |   if(arg1=="Reference") { | ||
|  |     ui->widePlot->setReference(true); | ||
|  |   } | ||
|  |   if(ui->widePlot->m_bScaleOK) ui->widePlot->draw(swide,false,false); | ||
|  | } | ||
|  | 
 | ||
|  | void WideGraph::on_fSplitSpinBox_valueChanged(int n)              //fSplit | ||
|  | { | ||
|  |   if (m_rxBand != "60m") m_fMin=n; | ||
|  |   setRxRange (); | ||
|  | } | ||
|  | 
 | ||
|  | void WideGraph::setLockTxFreq(bool b)                             //LockTxFreq | ||
|  | { | ||
|  |   m_lockTxFreq=b; | ||
|  |   ui->widePlot->setLockTxFreq(b); | ||
|  | } | ||
|  | 
 | ||
|  | void WideGraph::setFreq2(int rxFreq, int txFreq)                  //setFreq2 | ||
|  | { | ||
|  |   emit setFreq3(rxFreq,txFreq); | ||
|  | } | ||
|  | 
 | ||
|  | void WideGraph::setDialFreq(double d)                             //setDialFreq | ||
|  | { | ||
|  |   ui->widePlot->setDialFreq(d); | ||
|  | } | ||
|  | 
 | ||
|  | void WideGraph::setRxBand (QString const& band) | ||
|  | { | ||
|  |   m_rxBand = band; | ||
|  |   if ("60m" == m_rxBand) | ||
|  |     { | ||
|  |       ui->fSplitSpinBox->setEnabled (false); | ||
|  |       ui->fSplitSpinBox->setValue (0); | ||
|  |     } | ||
|  |   else | ||
|  |     { | ||
|  |       ui->fSplitSpinBox->setValue (m_fMin); | ||
|  |       ui->fSplitSpinBox->setEnabled (true); | ||
|  |     } | ||
|  |   ui->widePlot->setRxBand(band); | ||
|  |   setRxRange (); | ||
|  | } | ||
|  | 
 | ||
|  | 
 | ||
|  | void WideGraph::on_fStartSpinBox_valueChanged(int n)             //fStart | ||
|  | { | ||
|  |   ui->widePlot->setStartFreq(n); | ||
|  | } | ||
|  | 
 | ||
|  | void WideGraph::readPalette ()                                   //readPalette | ||
|  | { | ||
|  |   try | ||
|  |     { | ||
|  |       if (user_defined == m_waterfallPalette) | ||
|  |         { | ||
|  |           ui->widePlot->setColours (WFPalette {m_userPalette}.interpolate ()); | ||
|  |         } | ||
|  |       else | ||
|  |         { | ||
|  |           ui->widePlot->setColours (WFPalette {m_palettes_path.absoluteFilePath (m_waterfallPalette + ".pal")}.interpolate()); | ||
|  |         } | ||
|  |     } | ||
|  |   catch (std::exception const& e) | ||
|  |     { | ||
|  |       MessageBox::warning_message (this, tr ("Read Palette"), e.what ()); | ||
|  |     } | ||
|  | } | ||
|  | 
 | ||
|  | void WideGraph::on_paletteComboBox_activated (QString const& palette)    //palette selector | ||
|  | { | ||
|  |   m_waterfallPalette = palette; | ||
|  |   readPalette(); | ||
|  | } | ||
|  | 
 | ||
|  | void WideGraph::on_cbFlatten_toggled(bool b)                          //Flatten On/Off | ||
|  | { | ||
|  |   m_bFlatten=b; | ||
|  |   if(m_bRef and m_bFlatten) { | ||
|  |     m_bRef=false; | ||
|  |     ui->cbRef->setChecked(false); | ||
|  |   } | ||
|  |   ui->widePlot->setFlatten(m_bFlatten,m_bRef); | ||
|  | } | ||
|  | 
 | ||
|  | void WideGraph::on_cbRef_toggled(bool b) | ||
|  | { | ||
|  |   m_bRef=b; | ||
|  |   if(m_bRef and m_bFlatten) { | ||
|  |     m_bFlatten=false; | ||
|  |     ui->cbFlatten->setChecked(false); | ||
|  |   } | ||
|  |   ui->widePlot->setFlatten(m_bFlatten,m_bRef); | ||
|  | } | ||
|  | 
 | ||
|  | void WideGraph::on_adjust_palette_push_button_clicked (bool)   //Adjust Palette | ||
|  | { | ||
|  |   try | ||
|  |     { | ||
|  |       if (m_userPalette.design ()) | ||
|  |         { | ||
|  |           m_waterfallPalette = user_defined; | ||
|  |           ui->paletteComboBox->setCurrentText (m_waterfallPalette); | ||
|  |           readPalette (); | ||
|  |         } | ||
|  |     } | ||
|  |   catch (std::exception const& e) | ||
|  |     { | ||
|  |       MessageBox::warning_message (this, tr ("Read Palette"), e.what ()); | ||
|  |     } | ||
|  | } | ||
|  | 
 | ||
|  | bool WideGraph::flatten()                                              //Flatten | ||
|  | { | ||
|  |   return m_bFlatten; | ||
|  | } | ||
|  | 
 | ||
|  | bool WideGraph::useRef()                                              //Flatten | ||
|  | { | ||
|  |   return m_bRef; | ||
|  | } | ||
|  | 
 | ||
|  | void WideGraph::on_gainSlider_valueChanged(int value)                 //Gain | ||
|  | { | ||
|  |   ui->widePlot->setPlotGain(value); | ||
|  | } | ||
|  | 
 | ||
|  | void WideGraph::on_zeroSlider_valueChanged(int value)                 //Zero | ||
|  | { | ||
|  |   ui->widePlot->setPlotZero(value); | ||
|  | } | ||
|  | 
 | ||
|  | void WideGraph::on_gain2dSlider_valueChanged(int value)               //Gain2 | ||
|  | { | ||
|  |   ui->widePlot->setPlot2dGain(value); | ||
|  |   if(ui->widePlot->m_bScaleOK) { | ||
|  |     ui->widePlot->draw(swide,false,false); | ||
|  |     if(m_mode=="QRA64") ui->widePlot->draw(swide,false,true); | ||
|  |   } | ||
|  | } | ||
|  | 
 | ||
|  | void WideGraph::on_zero2dSlider_valueChanged(int value)               //Zero2 | ||
|  | { | ||
|  |   ui->widePlot->setPlot2dZero(value); | ||
|  |   if(ui->widePlot->m_bScaleOK) { | ||
|  |     ui->widePlot->draw(swide,false,false); | ||
|  |     if(m_mode=="QRA64") ui->widePlot->draw(swide,false,true); | ||
|  |   } | ||
|  | } | ||
|  | 
 | ||
|  | void WideGraph::setTol(int n)                                         //setTol | ||
|  | { | ||
|  |   ui->widePlot->setTol(n); | ||
|  |   ui->widePlot->DrawOverlay(); | ||
|  |   ui->widePlot->update(); | ||
|  | } | ||
|  | 
 | ||
|  | void WideGraph::on_smoSpinBox_valueChanged(int n) | ||
|  | { | ||
|  |   m_nsmo=n; | ||
|  | } | ||
|  | 
 | ||
|  | int WideGraph::smoothYellow() | ||
|  | { | ||
|  |   return m_nsmo; | ||
|  | } | ||
|  | 
 | ||
|  | void WideGraph::setWSPRtransmitted() | ||
|  | { | ||
|  |   m_bHaveTransmitted=true; | ||
|  | } | ||
|  | 
 | ||
|  | void WideGraph::setVHF(bool bVHF) | ||
|  | { | ||
|  |   ui->widePlot->setVHF(bVHF); | ||
|  | } | ||
|  | 
 | ||
|  | void WideGraph::on_sbPercent2dPlot_valueChanged(int n) | ||
|  | { | ||
|  |   m_Percent2DScreen=n; | ||
|  |   ui->widePlot->SetPercent2DScreen(n); | ||
|  | } | ||
|  | 
 | ||
|  | void WideGraph::setRedFile(QString fRed) | ||
|  | { | ||
|  |   ui->widePlot->setRedFile(fRed); | ||
|  | } |