1 /* -*- c++ -*- */ 2 /* 3 * Copyright 2012 Free Software Foundation, Inc. 4 * 5 * This file is part of GNU Radio 6 * 7 * GNU Radio is free software; you can redistribute it and/or modify 8 * it under the terms of the GNU General Public License as published by 9 * the Free Software Foundation; either version 3, or (at your option) 10 * any later version. 11 * 12 * GNU Radio is distributed in the hope that it will be useful, 13 * but WITHOUT ANY WARRANTY; without even the implied warranty of 14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15 * GNU General Public License for more details. 16 * 17 * You should have received a copy of the GNU General Public License 18 * along with GNU Radio; see the file COPYING. If not, write to 19 * the Free Software Foundation, Inc., 51 Franklin Street, 20 * Boston, MA 02110-1301, USA. 21 */ 22 23 #ifndef DISPLAY_FORM_H 24 #define DISPLAY_FORM_H 25 26 #include <gnuradio/qtgui/api.h> 27 #include <gnuradio/qtgui/spectrumUpdateEvents.h> 28 #include <QtGui/QtGui> 29 #include <vector> 30 31 #include <qwt_plot_grid.h> 32 #include <qwt_plot_layout.h> 33 34 #include <gnuradio/qtgui/DisplayPlot.h> 35 #include <gnuradio/qtgui/form_menus.h> 36 37 /*! 38 * \brief Base class for setting up and managing QTGUI plot forms. 39 * \ingroup qtgui_blk 40 */ 41 class QTGUI_API DisplayForm : public QWidget 42 { 43 Q_OBJECT 44 45 public: 46 DisplayForm(int nplots = 1, QWidget* parent = 0); 47 ~DisplayForm(); 48 49 virtual DisplayPlot* getPlot() = 0; 50 void Reset(); 51 bool isClosed() const; 52 53 void enableMenu(bool en = true); 54 55 public slots: 56 void resizeEvent(QResizeEvent* e); 57 void mousePressEvent(QMouseEvent* e); 58 virtual void customEvent(QEvent* e) = 0; 59 60 void closeEvent(QCloseEvent* e); 61 62 void setUpdateTime(double t); 63 64 void setTitle(const QString& title); 65 void setLineLabel(unsigned int which, const QString& label); 66 void setLineColor(unsigned int which, const QString& color); 67 void setLineWidth(unsigned int which, unsigned int width); 68 void setLineStyle(unsigned int which, Qt::PenStyle style); 69 void setLineMarker(unsigned int which, QwtSymbol::Style style); 70 void setMarkerAlpha(unsigned int which, unsigned int alpha); 71 72 QString title(); 73 QString lineLabel(unsigned int which); 74 QString lineColor(unsigned int which); 75 int lineWidth(unsigned int which); 76 Qt::PenStyle lineStyle(unsigned int which); 77 QwtSymbol::Style lineMarker(unsigned int which); 78 int markerAlpha(unsigned int which); 79 80 virtual void setSampleRate(const QString& rate); 81 82 void setStop(bool on); 83 void setStop(); 84 85 void setGrid(bool on); 86 void setAxisLabels(bool en); 87 88 void saveFigure(); 89 90 void disableLegend(); 91 92 private slots: 93 virtual void newData(const QEvent*) = 0; 94 virtual void autoScale(bool) = 0; 95 void updateGuiTimer(); 96 97 virtual void onPlotPointSelected(const QPointF p); 98 99 signals: 100 void plotPointSelected(const QPointF p, int type); 101 void toggleGrid(bool en); 102 103 protected: 104 bool d_isclosed; 105 106 unsigned int d_nplots; 107 108 QGridLayout* d_layout; 109 DisplayPlot* d_display_plot; 110 bool d_system_specified_flag; 111 112 QwtPlotGrid* d_grid; 113 114 bool d_menu_on; 115 QMenu* d_menu; 116 117 QAction* d_stop_act; 118 bool d_stop_state; 119 QAction* d_grid_act; 120 bool d_grid_state; 121 QAction* d_axislabelsmenu; 122 bool d_axislabels; 123 124 QAction* d_autoscale_act; 125 bool d_autoscale_state; 126 127 QList<QMenu*> d_lines_menu; 128 QList<LineTitleAction*> d_line_title_act; 129 QList<LineColorMenu*> d_line_color_menu; 130 QList<LineWidthMenu*> d_line_width_menu; 131 QList<LineStyleMenu*> d_line_style_menu; 132 QList<LineMarkerMenu*> d_line_marker_menu; 133 QList<MarkerAlphaMenu*> d_marker_alpha_menu; 134 135 PopupMenu* d_samp_rate_act; 136 QAction* d_save_act; 137 138 double d_update_time; 139 }; 140 141 #endif /* DISPLAY_FORM_H */ 142