2018-02-08 21:28:33 -05:00
|
|
|
// -*- Mode: C++ -*-
|
|
|
|
#ifndef WIDEGRAPH_H
|
|
|
|
#define WIDEGRAPH_H
|
|
|
|
|
2020-04-27 16:35:37 -04:00
|
|
|
|
|
|
|
#include <random>
|
|
|
|
#include <iterator>
|
|
|
|
#include <iostream>
|
|
|
|
|
2018-02-08 21:28:33 -05:00
|
|
|
#include <QDialog>
|
|
|
|
#include <QScopedPointer>
|
|
|
|
#include <QDir>
|
|
|
|
#include <QHash>
|
2020-04-27 16:35:37 -04:00
|
|
|
#include <QTimer>
|
|
|
|
#include <QMutex>
|
|
|
|
#include <QMutexLocker>
|
2018-02-08 21:28:33 -05:00
|
|
|
#include <QVariant>
|
|
|
|
#include "WFPalette.hpp"
|
|
|
|
|
|
|
|
#define MAX_SCREENSIZE 2048
|
|
|
|
|
|
|
|
namespace Ui {
|
|
|
|
class WideGraph;
|
|
|
|
}
|
|
|
|
|
|
|
|
class QSettings;
|
|
|
|
class Configuration;
|
|
|
|
|
|
|
|
class WideGraph : public QDialog
|
|
|
|
{
|
|
|
|
Q_OBJECT
|
|
|
|
|
|
|
|
public:
|
|
|
|
explicit WideGraph(QSettings *, QWidget *parent = 0);
|
|
|
|
~WideGraph ();
|
|
|
|
|
|
|
|
void dataSink2(float s[], float df3, int ihsym, int ndiskdata);
|
|
|
|
void setRxFreq(int n);
|
|
|
|
int rxFreq();
|
2018-09-11 13:35:29 -04:00
|
|
|
int centerFreq();
|
2018-02-08 21:28:33 -05:00
|
|
|
int nStartFreq();
|
|
|
|
int Fmin();
|
|
|
|
int Fmax();
|
2019-12-16 21:28:45 -05:00
|
|
|
int filterMinimum();
|
|
|
|
int filterMaximum();
|
2019-12-16 13:59:10 -05:00
|
|
|
bool filterEnabled();
|
2019-12-26 15:11:32 -05:00
|
|
|
void setFilterCenter(int n);
|
2019-12-16 21:28:45 -05:00
|
|
|
void setFilter(int a, int b);
|
|
|
|
void setFilterMinimumBandwidth(int width);
|
2019-12-16 13:42:44 -05:00
|
|
|
void setFilterEnabled(bool enabled);
|
2019-12-19 10:06:37 -05:00
|
|
|
void setFilterOpacityPercent(int n);
|
2018-02-08 21:28:33 -05:00
|
|
|
int fSpan();
|
|
|
|
void saveSettings();
|
|
|
|
void setFsample(int n);
|
|
|
|
void setPeriod(int ntrperiod, int nsps);
|
|
|
|
void setTxFreq(int n);
|
|
|
|
void setMode(QString mode);
|
|
|
|
void setSubMode(int n);
|
|
|
|
void setModeTx(QString modeTx);
|
|
|
|
bool flatten();
|
|
|
|
bool useRef();
|
|
|
|
void setTol(int n);
|
|
|
|
int smoothYellow();
|
|
|
|
void setRxBand (QString const& band);
|
|
|
|
void setWSPRtransmitted();
|
2020-05-10 20:13:20 -04:00
|
|
|
void drawDecodeLine(const QColor &color, int ia, int ib);
|
|
|
|
void drawHorizontalLine(const QColor &color, int x, int width);
|
2018-02-08 21:28:33 -05:00
|
|
|
void setVHF(bool bVHF);
|
|
|
|
void setRedFile(QString fRed);
|
2018-11-04 22:37:14 -05:00
|
|
|
void setTurbo(bool turbo);
|
2020-05-11 09:27:04 -04:00
|
|
|
bool shouldDisplayDecodeAttempts();
|
2020-05-17 14:21:38 -04:00
|
|
|
bool shouldAutoSyncSubmode(int submode);
|
|
|
|
bool isAutoSyncEnabled();
|
2020-05-11 10:49:29 -04:00
|
|
|
QVector<QColor> const& colors();
|
2018-02-08 21:28:33 -05:00
|
|
|
|
|
|
|
signals:
|
|
|
|
void freezeDecode2(int n);
|
|
|
|
void f11f12(int n);
|
|
|
|
void setXIT2(int n);
|
|
|
|
void setFreq3(int rxFreq, int txFreq);
|
2018-09-09 17:18:07 -04:00
|
|
|
void qsy(int hzDelta);
|
2020-05-13 21:15:21 -04:00
|
|
|
void drifted(int prev, int cur);
|
2018-02-08 21:28:33 -05:00
|
|
|
|
|
|
|
public slots:
|
|
|
|
void wideFreezeDecode(int n);
|
|
|
|
void setFreq2(int rxFreq, int txFreq);
|
|
|
|
void setDialFreq(double d);
|
2020-05-16 15:01:03 -04:00
|
|
|
void setTimeControlsVisible(bool visible);
|
|
|
|
bool timeControlsVisible();
|
2018-09-01 18:26:10 -04:00
|
|
|
void setControlsVisible(bool visible);
|
|
|
|
bool controlsVisible();
|
2019-12-17 10:39:18 -05:00
|
|
|
void setDrift(int n);
|
2020-05-13 21:15:21 -04:00
|
|
|
int drift();
|
2019-12-17 12:43:19 -05:00
|
|
|
void setQSYEnabled(bool enabled);
|
2020-04-27 16:35:37 -04:00
|
|
|
void setPaused(bool paused){ m_paused = paused; }
|
2020-05-16 11:57:27 -04:00
|
|
|
void notifyDriftedSignalsDecoded(int signalsDecoded);
|
2018-02-08 21:28:33 -05:00
|
|
|
|
|
|
|
protected:
|
|
|
|
void keyPressEvent (QKeyEvent *e) override;
|
|
|
|
void closeEvent (QCloseEvent *) override;
|
|
|
|
|
|
|
|
private slots:
|
2020-04-27 16:35:37 -04:00
|
|
|
void draw();
|
|
|
|
void drawSwide();
|
|
|
|
|
2018-09-09 17:18:07 -04:00
|
|
|
void on_qsyPushButton_clicked();
|
2018-08-07 09:31:18 -04:00
|
|
|
void on_offsetSpinBox_valueChanged(int n);
|
2018-02-08 21:28:33 -05:00
|
|
|
void on_waterfallAvgSpinBox_valueChanged(int arg1);
|
|
|
|
void on_bppSpinBox_valueChanged(int arg1);
|
|
|
|
void on_spec2dComboBox_currentIndexChanged(const QString &arg1);
|
|
|
|
void on_fStartSpinBox_valueChanged(int n);
|
|
|
|
void on_paletteComboBox_activated(const QString &palette);
|
|
|
|
void on_cbFlatten_toggled(bool b);
|
|
|
|
void on_cbRef_toggled(bool b);
|
|
|
|
void on_cbControls_toggled(bool b);
|
|
|
|
void on_adjust_palette_push_button_clicked (bool);
|
|
|
|
void on_gainSlider_valueChanged(int value);
|
|
|
|
void on_zeroSlider_valueChanged(int value);
|
|
|
|
void on_gain2dSlider_valueChanged(int value);
|
|
|
|
void on_zero2dSlider_valueChanged(int value);
|
|
|
|
void on_smoSpinBox_valueChanged(int n);
|
|
|
|
void on_sbPercent2dPlot_valueChanged(int n);
|
2019-12-16 21:28:45 -05:00
|
|
|
void on_filterMinSpinBox_valueChanged(int n);
|
2019-12-23 08:18:14 -05:00
|
|
|
void on_filterCenterSpinBox_valueChanged(int n);
|
2019-12-23 12:31:14 -05:00
|
|
|
void on_filterWidthSpinBox_valueChanged(int n);
|
2019-12-27 14:22:58 -05:00
|
|
|
void on_filterCenterSyncButton_clicked();
|
2019-12-16 13:42:44 -05:00
|
|
|
void on_filterCheckBox_toggled(bool b);
|
2019-12-19 10:06:37 -05:00
|
|
|
void on_filterOpacitySpinBox_valueChanged(int n);
|
2018-02-08 21:28:33 -05:00
|
|
|
|
2020-05-15 21:36:16 -04:00
|
|
|
void on_autoDriftButton_toggled(bool checked);
|
2019-12-17 10:39:18 -05:00
|
|
|
void on_driftSpinBox_valueChanged(int n);
|
|
|
|
void on_driftSyncButton_clicked();
|
|
|
|
void on_driftSyncEndButton_clicked();
|
|
|
|
void on_driftSyncMinuteButton_clicked();
|
|
|
|
void on_driftSyncResetButton_clicked();
|
|
|
|
|
|
|
|
|
2018-02-08 21:28:33 -05:00
|
|
|
private:
|
2018-03-05 14:49:51 -05:00
|
|
|
void readPalette ();
|
|
|
|
void setRxRange ();
|
|
|
|
void replot();
|
2018-02-08 21:28:33 -05:00
|
|
|
|
|
|
|
QScopedPointer<Ui::WideGraph> ui;
|
|
|
|
|
|
|
|
QSettings * m_settings;
|
|
|
|
QDir m_palettes_path;
|
|
|
|
WFPalette m_userPalette;
|
2018-03-05 14:49:51 -05:00
|
|
|
QHash<QString, QVariant> m_fMinPerBand;
|
2018-02-08 21:28:33 -05:00
|
|
|
|
2019-12-16 13:42:44 -05:00
|
|
|
bool m_filterEnabled;
|
|
|
|
|
2019-12-16 21:28:45 -05:00
|
|
|
qint32 m_filterMinWidth;
|
|
|
|
qint32 m_filterMinimum;
|
|
|
|
qint32 m_filterMaximum;
|
2019-12-23 08:18:14 -05:00
|
|
|
qint32 m_filterCenter;
|
2018-02-08 21:28:33 -05:00
|
|
|
qint32 m_waterfallAvg;
|
|
|
|
qint32 m_TRperiod;
|
|
|
|
qint32 m_nsps;
|
|
|
|
qint32 m_ntr0;
|
|
|
|
qint32 m_fMax;
|
|
|
|
qint32 m_nSubMode;
|
|
|
|
qint32 m_nsmo;
|
2018-03-05 14:49:51 -05:00
|
|
|
qint32 m_Percent2DScreen;
|
|
|
|
qint32 m_jz=MAX_SCREENSIZE;
|
|
|
|
qint32 m_n;
|
|
|
|
|
2020-04-27 16:35:37 -04:00
|
|
|
bool m_paused;
|
2018-02-08 21:28:33 -05:00
|
|
|
bool m_bFlatten;
|
|
|
|
bool m_bRef;
|
|
|
|
bool m_bHaveTransmitted; //Set true at end of a WSPR transmission
|
2018-03-05 14:49:51 -05:00
|
|
|
|
2020-05-16 11:57:27 -04:00
|
|
|
QTimer m_autoSyncTimer;
|
|
|
|
int m_autoSyncTimeLeft;
|
2020-05-17 14:21:38 -04:00
|
|
|
int m_autoSyncDecodesLeft;
|
2020-05-16 11:57:27 -04:00
|
|
|
|
2020-04-27 16:35:37 -04:00
|
|
|
QTimer m_drawTimer;
|
|
|
|
QMutex m_drawLock;
|
|
|
|
|
2018-03-05 14:49:51 -05:00
|
|
|
QString m_rxBand;
|
2018-02-08 21:28:33 -05:00
|
|
|
QString m_mode;
|
|
|
|
QString m_modeTx;
|
2018-03-05 14:49:51 -05:00
|
|
|
QString m_waterfallPalette;
|
2020-04-27 16:35:37 -04:00
|
|
|
|
|
|
|
std::default_random_engine m_gen;
|
|
|
|
std::normal_distribution<double> m_dist;
|
2018-02-08 21:28:33 -05:00
|
|
|
};
|
|
|
|
|
|
|
|
#endif // WIDEGRAPH_H
|