#ifndef GUI_CLASS__H #define GUI_CLASS__H #include #include #include #include #include #include #include #include #include #include #include #include #include #include class myWindow; // forward reference class indicator; //////////////////////////////////////// class myPlot : public QwtPlot { public: std::vector curve; QwtPlotGrid grid; int divsPerUnit; int need_replot; myPlot(const QString); // the following could be a slot, but doesn't need to be void setReading(const int, const double, const double, const double, const double); int assign_curve(); void flush(); }; //////////////////////////////////////// class scaleBoxer : public QDoubleSpinBox { public: indicator* parent; virtual void stepBy(int); scaleBoxer(indicator* parent); }; //////////////////////////////////////// class indicator : public QWidget { Q_OBJECT; // Note: Q_SLOTS is #defined to be nothing. // Slots are handlers for inbound signals. public Q_SLOTS: void setIndication(const double, const double, const double, const double); public: QGroupBox* group; QGridLayout* layout; QLabel* rpLabel; QDoubleSpinBox* rpBox; QLabel* ipLabel; QDoubleSpinBox* ipBox; QLabel* magLabel; QDoubleSpinBox* magBox; QLabel* phaseLabel; QDoubleSpinBox* phaseBox; QLabel* scaleLabel; scaleBoxer* scaleBox; myPlot* plot; int plotcur; // which "curve" to use within the plot int locker; indicator(myPlot* plot, int locker = 0); void setDecim(const double newval); }; //////////////////////////////////////// class blockOfIndicators : public QWidget { public: QGroupBox* group; QVBoxLayout* layout; blockOfIndicators(myWindow*, myPlot*); }; //////////////////////////////////////// class rslt_panel : public QWidget { public: myWindow* topWin; QGroupBox* group; QHBoxLayout* layout; blockOfIndicators* block; myPlot* plot; rslt_panel(myWindow*); }; //////////////////////////////////////// class entrails_grouper : public QWidget { Q_OBJECT public Q_SLOTS: void VoChanged(double); void ViChanged(double); void rateChanged(double); void timeShiftChanged(double); void phaseShiftChanged(double); void tweakButtonClicked(); public: myWindow* topwin; QGroupBox* group; QVBoxLayout* layout; QLabel* VoCalLabel; QDoubleSpinBox* VoCalBox; QLabel* ViCalLabel; QDoubleSpinBox* ViCalBox; QLabel* rateLabel; QDoubleSpinBox* rateBox; // goal rate QLabel* actRateLabel; QDoubleSpinBox* actRateBox; // actual rate QLabel* pcmLabel; QDoubleSpinBox* pcmBox; QLabel* timeShiftLabel; QDoubleSpinBox* timeShiftBox; // loopback time delay QLabel* phaseShiftLabel; QDoubleSpinBox* phaseShiftBox; // loopback phase lag QPushButton* tweakButton; static const int tweakSize = 10; std::valarray tweakFreq; std::valarray tweakPhase; unsigned int tweakPtr; unsigned int howmany; entrails_grouper(myWindow*); }; //////////////////////////////////////// class refOut_grouper : public QWidget { Q_OBJECT public Q_SLOTS: void freqChanged(double); void ampChanged(double); public: myWindow* topwin; QGroupBox* group; QVBoxLayout* layout; QLabel* freqLabel; QDoubleSpinBox* freqBox; // goal frequency QLabel* actFreqLabel; QDoubleSpinBox* actFreqBox; // actual frequency QLabel* dBLabel; QDoubleSpinBox* dBBox; // amplitude in dB QLabel* VLabel; QDoubleSpinBox* VBox; // amplitude in V refOut_grouper(myWindow*); }; //////////////////////////////////////// class ctrl_column : public QWidget { Q_OBJECT; public: QGroupBox* group; QVBoxLayout* layout; refOut_grouper* refOutGroup; entrails_grouper* entrailsGroup; ctrl_column(myWindow* _parent); // hack // something trivial we can instantiate, to persuade the compiler to // instantiate (emit) "vtables" for everything in this file: ctrl_column(int){}; }; ////////////////////////////////////// class timer : public QWidget{ public: timer(QWidget *parent = 0); void timerEvent(QTimerEvent *event); }; //////////////////////////////////////// class myWindow : public QWidget { Q_OBJECT public: myWindow(); QHBoxLayout* topLayout; QDoubleSpinBox* updRateBox; QLabel* updRateLabel; static const int numRsltPanels = 1; ctrl_column* ctrlCol; rslt_panel* rsltPanel[numRsltPanels]; std::vector ndc8r; timer* frameTimer; void actualFreqs(); public slots: void flush(); }; #endif /* GUI_CLASS__H */