summaryrefslogtreecommitdiff
path: root/gr-qtgui
diff options
context:
space:
mode:
authorTom Rondeau <trondeau@vt.edu>2012-10-03 22:27:23 -0400
committerTom Rondeau <trondeau@vt.edu>2012-10-03 22:27:23 -0400
commit62ab0377d5ba26ac63f97c8e3802c7cd1a92f18c (patch)
tree8c147520279cc788d8c1c1317727024ef788c51a /gr-qtgui
parent48feecf3eaf2b16d0e211dcb5690aeb0f22d9c0d (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.cc27
-rw-r--r--gr-qtgui/lib/DisplayPlot.h1
-rw-r--r--gr-qtgui/lib/displayform.cc14
-rw-r--r--gr-qtgui/lib/displayform.h2
-rw-r--r--gr-qtgui/lib/form_menus.h59
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