diff options
author | Tom Rondeau <trondeau@vt.edu> | 2012-10-03 22:27:23 -0400 |
---|---|---|
committer | Tom Rondeau <trondeau@vt.edu> | 2012-10-03 22:27:23 -0400 |
commit | 62ab0377d5ba26ac63f97c8e3802c7cd1a92f18c (patch) | |
tree | 8c147520279cc788d8c1c1317727024ef788c51a /gr-qtgui | |
parent | 48feecf3eaf2b16d0e211dcb5690aeb0f22d9c0d (diff) |
qtgui: adding menu option to qtgui sinks to set transparency (alpha) value on lines/markers.
Diffstat (limited to 'gr-qtgui')
-rw-r--r-- | gr-qtgui/lib/DisplayPlot.cc | 27 | ||||
-rw-r--r-- | gr-qtgui/lib/DisplayPlot.h | 1 | ||||
-rw-r--r-- | gr-qtgui/lib/displayform.cc | 14 | ||||
-rw-r--r-- | gr-qtgui/lib/displayform.h | 2 | ||||
-rw-r--r-- | gr-qtgui/lib/form_menus.h | 59 |
5 files changed, 103 insertions, 0 deletions
diff --git a/gr-qtgui/lib/DisplayPlot.cc b/gr-qtgui/lib/DisplayPlot.cc index 1199b6456e..ca3f7899be 100644 --- a/gr-qtgui/lib/DisplayPlot.cc +++ b/gr-qtgui/lib/DisplayPlot.cc @@ -186,6 +186,33 @@ DisplayPlot::setLineMarker(int which, QwtSymbol::Style marker) } void +DisplayPlot::setMarkerAlpha(int which, int alpha) +{ + // Get the pen color + QPen pen(_plot_curve[which]->pen()); + QColor color = pen.color(); + + // Set new alpha and update pen + color.setAlpha(alpha); + pen.setColor(color); + _plot_curve[which]->setPen(pen); + + // And set the new color for the markers +#if QWT_VERSION < 0x060000 + //_plot_curve[which]->setBrush(QBrush(QColor(color))); + _plot_curve[which]->setPen(pen); + + QwtSymbol sym = (QwtSymbol)_plot_curve[which]->symbol(); + setLineMarker(which, sym.style()); +#else + QwtSymbol *sym = (QwtSymbol*)_plot_curve[which]->symbol(); + sym->setColor(color); + sym->setPen(pen); + _plot_curve[which]->setSymbol(sym); +#endif +} + +void DisplayPlot::setStop(bool on) { _stop = on; diff --git a/gr-qtgui/lib/DisplayPlot.h b/gr-qtgui/lib/DisplayPlot.h index 975a92a18d..fc7c061123 100644 --- a/gr-qtgui/lib/DisplayPlot.h +++ b/gr-qtgui/lib/DisplayPlot.h @@ -64,6 +64,7 @@ public slots: void setLineWidth(int which, int width); void setLineStyle(int which, Qt::PenStyle style); void setLineMarker(int which, QwtSymbol::Style marker); + void setMarkerAlpha(int which, int alpha); void setStop(bool on); diff --git a/gr-qtgui/lib/displayform.cc b/gr-qtgui/lib/displayform.cc index 68e1a5c4fd..c011511b6f 100644 --- a/gr-qtgui/lib/displayform.cc +++ b/gr-qtgui/lib/displayform.cc @@ -55,6 +55,7 @@ DisplayForm::DisplayForm(int nplots, QWidget* parent) _line_width_menu.push_back(new LineWidthMenu(i, this)); _line_style_menu.push_back(new LineStyleMenu(i, this)); _line_marker_menu.push_back(new LineMarkerMenu(i, this)); + _marker_alpha_menu.push_back(new MarkerAlphaMenu(i, this)); connect(_line_title_act[i], SIGNAL(whichTrigger(int, const QString&)), this, SLOT(setTitle(int, const QString&))); @@ -78,6 +79,11 @@ DisplayForm::DisplayForm(int nplots, QWidget* parent) connect(_line_marker_menu[i], SIGNAL(whichTrigger(int, QwtSymbol::Style)), this, SLOT(setLineMarker(int, QwtSymbol::Style))); } + + for(int j = 0; j < _marker_alpha_menu[i]->getNumActions(); j++) { + connect(_marker_alpha_menu[i], SIGNAL(whichTrigger(int, int)), + this, SLOT(setMarkerAlpha(int, int))); + } _lines_menu.push_back(new QMenu(tr(""), this)); _lines_menu[i]->addAction(_line_title_act[i]); @@ -85,6 +91,7 @@ DisplayForm::DisplayForm(int nplots, QWidget* parent) _lines_menu[i]->addMenu(_line_width_menu[i]); _lines_menu[i]->addMenu(_line_style_menu[i]); _lines_menu[i]->addMenu(_line_marker_menu[i]); + _lines_menu[i]->addMenu(_marker_alpha_menu[i]); _menu->addMenu(_lines_menu[i]); } @@ -212,6 +219,13 @@ DisplayForm::setLineMarker(int which, QwtSymbol::Style marker) } void +DisplayForm::setMarkerAlpha(int which, int alpha) +{ + _displayPlot->setMarkerAlpha(which, alpha); + _displayPlot->replot(); +} + +void DisplayForm::setStop(bool on) { if(!on) { diff --git a/gr-qtgui/lib/displayform.h b/gr-qtgui/lib/displayform.h index 82b28c745d..c14b734d44 100644 --- a/gr-qtgui/lib/displayform.h +++ b/gr-qtgui/lib/displayform.h @@ -58,6 +58,7 @@ public slots: void setLineWidth(int which, int width); void setLineStyle(int which, Qt::PenStyle style); void setLineMarker(int which, QwtSymbol::Style style); + void setMarkerAlpha(int which, int alpha); void setStop(bool on); void setStop(); @@ -96,6 +97,7 @@ protected: QList<LineWidthMenu*> _line_width_menu; QList<LineStyleMenu*> _line_style_menu; QList<LineMarkerMenu*> _line_marker_menu; + QList<MarkerAlphaMenu*> _marker_alpha_menu; QTimer *d_displayTimer; double d_update_time; diff --git a/gr-qtgui/lib/form_menus.h b/gr-qtgui/lib/form_menus.h index 01695f2c46..c84ecbfb44 100644 --- a/gr-qtgui/lib/form_menus.h +++ b/gr-qtgui/lib/form_menus.h @@ -347,6 +347,65 @@ private: /********************************************************************/ +class MarkerAlphaMenu: public QMenu +{ + Q_OBJECT + +public: + MarkerAlphaMenu(int which, QWidget *parent) + : QMenu("Line Transparency", parent), d_which(which) + { + d_act.push_back(new QAction("None", this)); + d_act.push_back(new QAction("Low", this)); + d_act.push_back(new QAction("Medium", this)); + d_act.push_back(new QAction("High", this)); + + connect(d_act[0], SIGNAL(triggered()), this, SLOT(getNone())); + connect(d_act[1], SIGNAL(triggered()), this, SLOT(getLow())); + connect(d_act[2], SIGNAL(triggered()), this, SLOT(getMedium())); + connect(d_act[3], SIGNAL(triggered()), this, SLOT(getHigh())); + + QListIterator<QAction*> i(d_act); + while(i.hasNext()) { + QAction *a = i.next(); + addAction(a); + } + } + + ~MarkerAlphaMenu() + {} + + int getNumActions() const + { + return d_act.size(); + } + + QAction * getAction(int which) + { + if(which < d_act.size()) + return d_act[which]; + else + throw std::runtime_error("MarkerAlphaMenu::getAction: which out of range.\n"); + } + +signals: + void whichTrigger(int which, int); + +public slots: + void getNone() { emit whichTrigger(d_which, 255); } + void getLow() { emit whichTrigger(d_which, 200); } + void getMedium() { emit whichTrigger(d_which, 125); } + void getHigh() { emit whichTrigger(d_which, 50); } + +private: + QList<QAction *> d_act; + int d_which; +}; + + +/********************************************************************/ + + class LineTitleAction: public QAction { Q_OBJECT |