mirror of
https://github.com/saitohirga/WSJT-X.git
synced 2024-11-17 17:42:02 -05:00
b8e4517718
This include inverting the order of table view rows so the newest is at the top, without that the Qt MVC interactions when using a database table based model is too slow and complex to manage. The table views now have sort by column capability in the normal way (click column header to reverse sort order) for timely logging and non-disruption of Tx starts the log view should be sorted in descending time order and scrolled to the last row added. Without that Fox and contest logging will work but serious delays may be invoked that disrupt operation.
179 lines
4.2 KiB
C++
179 lines
4.2 KiB
C++
// -*- Mode: C++ -*-
|
|
///////////////////////////////////////////////////////////////////////////
|
|
// Some code in this file and accompanying files is based on work by
|
|
// Moe Wheatley, AE4Y, released under the "Simplified BSD License".
|
|
// For more details see the accompanying file LICENSE_WHEATLEY.TXT
|
|
///////////////////////////////////////////////////////////////////////////
|
|
|
|
#ifndef PLOTTER_H_
|
|
#define PLOTTER_H_
|
|
|
|
#include <QFrame>
|
|
#include <QSize>
|
|
#include <QImage>
|
|
#include <QVector>
|
|
#include <QColor>
|
|
|
|
#define VERT_DIVS 7 //specify grid screen divisions
|
|
#define HORZ_DIVS 20
|
|
|
|
extern bool g_single_decode;
|
|
|
|
class QAction;
|
|
|
|
class CPlotter : public QFrame
|
|
{
|
|
Q_OBJECT
|
|
|
|
public:
|
|
explicit CPlotter(QWidget *parent = 0);
|
|
~CPlotter();
|
|
|
|
QSize minimumSizeHint() const;
|
|
QSize sizeHint() const;
|
|
|
|
void draw(float swide[], bool bScroll, bool bRed); //Update the waterfall
|
|
void replot();
|
|
void SetRunningState(bool running);
|
|
void setPlotZero(int plotZero);
|
|
int plotZero();
|
|
void setPlotGain(int plotGain);
|
|
int plotGain();
|
|
int plot2dGain();
|
|
void setPlot2dGain(int n);
|
|
int plot2dZero();
|
|
void setPlot2dZero(int plot2dZero);
|
|
void setStartFreq(int f);
|
|
int startFreq();
|
|
int plotWidth();
|
|
void UpdateOverlay();
|
|
void setDataFromDisk(bool b);
|
|
void setRxRange(int fMin);
|
|
void setBinsPerPixel(int n);
|
|
int binsPerPixel();
|
|
void setWaterfallAvg(int n);
|
|
void setRxFreq(int n);
|
|
void DrawOverlay();
|
|
int rxFreq();
|
|
void setFsample(int n);
|
|
void setNsps(int ntrperiod, int nsps);
|
|
void setTxFreq(int n);
|
|
void setMode(QString mode);
|
|
void setSubMode(int n);
|
|
void setModeTx(QString modeTx);
|
|
void SetPercent2DScreen(int percent);
|
|
int Fmax();
|
|
void setDialFreq(double d);
|
|
void setCurrent(bool b) {m_bCurrent = b;}
|
|
bool current() const {return m_bCurrent;}
|
|
void setCumulative(bool b) {m_bCumulative = b;}
|
|
bool cumulative() const {return m_bCumulative;}
|
|
void setLinearAvg(bool b) {m_bLinearAvg = b;}
|
|
bool linearAvg() const {return m_bLinearAvg;}
|
|
void setBreadth(qint32 w) {m_w = w;}
|
|
qint32 breadth() const {return m_w;}
|
|
float fSpan() const {return m_fSpan;}
|
|
void setColours(QVector<QColor> const& cl);
|
|
void setFlatten(bool b1, bool b2);
|
|
void setTol(int n);
|
|
void setRxBand(QString band);
|
|
void setReference(bool b) {m_bReference = b;}
|
|
bool Reference() const {return m_bReference;}
|
|
void drawRed(int ia, int ib, float swide[]);
|
|
void setVHF(bool bVHF);
|
|
void setRedFile(QString fRed);
|
|
bool scaleOK () const {return m_bScaleOK;}
|
|
signals:
|
|
void freezeDecode1(int n);
|
|
void setFreq1(int rxFreq, int txFreq);
|
|
|
|
protected:
|
|
//re-implemented widget event handlers
|
|
void paintEvent(QPaintEvent *event) override;
|
|
void resizeEvent(QResizeEvent* event) override;
|
|
void mouseReleaseEvent (QMouseEvent * event) override;
|
|
void mouseDoubleClickEvent (QMouseEvent * event) override;
|
|
|
|
private:
|
|
|
|
void MakeFrequencyStrs();
|
|
int XfromFreq(float f);
|
|
float FreqfromX(int x);
|
|
|
|
QAction * m_set_freq_action;
|
|
|
|
bool m_bScaleOK;
|
|
bool m_bCurrent;
|
|
bool m_bCumulative;
|
|
bool m_bLinearAvg;
|
|
bool m_bReference;
|
|
bool m_bReference0;
|
|
bool m_bVHF;
|
|
|
|
float m_fSpan;
|
|
|
|
qint32 m_plotZero;
|
|
qint32 m_plotGain;
|
|
qint32 m_plot2dGain;
|
|
qint32 m_plot2dZero;
|
|
qint32 m_binsPerPixel;
|
|
qint32 m_waterfallAvg;
|
|
qint32 m_w;
|
|
qint32 m_Flatten;
|
|
qint32 m_nSubMode;
|
|
qint32 m_ia;
|
|
qint32 m_ib;
|
|
|
|
QPixmap m_WaterfallPixmap;
|
|
QPixmap m_2DPixmap;
|
|
QPixmap m_ScalePixmap;
|
|
QPixmap m_OverlayPixmap;
|
|
|
|
QSize m_Size;
|
|
QString m_Str;
|
|
QString m_HDivText[483];
|
|
QString m_mode;
|
|
QString m_modeTx;
|
|
QString m_rxBand;
|
|
QString m_redFile;
|
|
|
|
bool m_Running;
|
|
bool m_paintEventBusy;
|
|
bool m_dataFromDisk;
|
|
bool m_bReplot;
|
|
|
|
double m_fftBinWidth;
|
|
double m_dialFreq;
|
|
double m_xOffset;
|
|
|
|
float m_sum[2048];
|
|
|
|
qint32 m_dBStepSize;
|
|
qint32 m_FreqUnits;
|
|
qint32 m_hdivs;
|
|
qint32 m_line;
|
|
qint32 m_fSample;
|
|
qint32 m_xClick;
|
|
qint32 m_freqPerDiv;
|
|
qint32 m_nsps;
|
|
qint32 m_Percent2DScreen;
|
|
qint32 m_Percent2DScreen0;
|
|
qint32 m_h;
|
|
qint32 m_h1;
|
|
qint32 m_h2;
|
|
qint32 m_TRperiod;
|
|
qint32 m_rxFreq;
|
|
qint32 m_txFreq;
|
|
qint32 m_fMin;
|
|
qint32 m_fMax;
|
|
qint32 m_startFreq;
|
|
qint32 m_tol;
|
|
qint32 m_j;
|
|
|
|
char m_sutc[6];
|
|
};
|
|
|
|
extern QVector<QColor> g_ColorTbl;
|
|
|
|
#endif // PLOTTER_H
|