summaryrefslogtreecommitdiff
path: root/gr-qtgui/include/qtgui/form_menus.h
diff options
context:
space:
mode:
Diffstat (limited to 'gr-qtgui/include/qtgui/form_menus.h')
-rw-r--r--gr-qtgui/include/qtgui/form_menus.h1001
1 files changed, 1001 insertions, 0 deletions
diff --git a/gr-qtgui/include/qtgui/form_menus.h b/gr-qtgui/include/qtgui/form_menus.h
new file mode 100644
index 0000000000..7f5b8ae6e7
--- /dev/null
+++ b/gr-qtgui/include/qtgui/form_menus.h
@@ -0,0 +1,1001 @@
+/* -*- c++ -*- */
+/*
+ * Copyright 2012 Free Software Foundation, Inc.
+ *
+ * This file is part of GNU Radio
+ *
+ * GNU Radio is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3, or (at your option)
+ * any later version.
+ *
+ * GNU Radio is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with GNU Radio; see the file COPYING. If not, write to
+ * the Free Software Foundation, Inc., 51 Franklin Street,
+ * Boston, MA 02110-1301, USA.
+ */
+
+#ifndef FORM_MENUS_H
+#define FORM_MENUS_H
+
+#include <stdexcept>
+#include <vector>
+#include <QtGui/QtGui>
+#include <qwt_symbol.h>
+#include <filter/firdes.h>
+#include <qtgui/qtgui_types.h>
+
+class LineColorMenu: public QMenu
+{
+ Q_OBJECT
+
+public:
+ LineColorMenu(int which, QWidget *parent)
+ : QMenu("Line Color", parent), d_which(which)
+ {
+ d_act.push_back(new QAction("Blue", this));
+ d_act.push_back(new QAction("Red", this));
+ d_act.push_back(new QAction("Green", this));
+ d_act.push_back(new QAction("Black", this));
+ d_act.push_back(new QAction("Cyan", this));
+ d_act.push_back(new QAction("Magenta", this));
+ d_act.push_back(new QAction("Yellow", this));
+ d_act.push_back(new QAction("Gray", this));
+ d_act.push_back(new QAction("Dark Red", this));
+ d_act.push_back(new QAction("Dark Green", this));
+ d_act.push_back(new QAction("Dark Blue", this));
+ d_act.push_back(new QAction("Dark Gray", this));
+
+ connect(d_act[0], SIGNAL(triggered()), this, SLOT(getBlue()));
+ connect(d_act[1], SIGNAL(triggered()), this, SLOT(getRed()));
+ connect(d_act[2], SIGNAL(triggered()), this, SLOT(getGreen()));
+ connect(d_act[3], SIGNAL(triggered()), this, SLOT(getBlack()));
+ connect(d_act[4], SIGNAL(triggered()), this, SLOT(getCyan()));
+ connect(d_act[5], SIGNAL(triggered()), this, SLOT(getMagenta()));
+ connect(d_act[6], SIGNAL(triggered()), this, SLOT(getYellow()));
+ connect(d_act[7], SIGNAL(triggered()), this, SLOT(getGray()));
+ connect(d_act[8], SIGNAL(triggered()), this, SLOT(getDarkRed()));
+ connect(d_act[9], SIGNAL(triggered()), this, SLOT(getDarkGreen()));
+ connect(d_act[10], SIGNAL(triggered()), this, SLOT(getDarkBlue()));
+ connect(d_act[11], SIGNAL(triggered()), this, SLOT(getDarkGray()));
+
+ QListIterator<QAction*> i(d_act);
+ while(i.hasNext()) {
+ QAction *a = i.next();
+ addAction(a);
+ }
+ }
+
+ ~LineColorMenu()
+ {}
+
+ 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("LineColorMenu::getAction: which out of range.\n");
+ }
+
+signals:
+ void whichTrigger(int which, const QString &name);
+
+public slots:
+ void getBlue() { emit whichTrigger(d_which, "blue"); }
+ void getRed() { emit whichTrigger(d_which, "red"); }
+ void getGreen() { emit whichTrigger(d_which, "green"); }
+ void getBlack() { emit whichTrigger(d_which, "black"); }
+ void getCyan() { emit whichTrigger(d_which, "cyan"); }
+ void getMagenta() { emit whichTrigger(d_which, "magenta"); }
+ void getYellow() { emit whichTrigger(d_which, "yellow"); }
+ void getGray() { emit whichTrigger(d_which, "gray"); }
+ void getDarkRed() { emit whichTrigger(d_which, "darkred"); }
+ void getDarkGreen() { emit whichTrigger(d_which, "darkgreen"); }
+ void getDarkBlue() { emit whichTrigger(d_which, "darkblue"); }
+ void getDarkGray() { emit whichTrigger(d_which, "darkgray"); }
+
+private:
+ QList<QAction *> d_act;
+ int d_which;
+};
+
+
+/********************************************************************/
+
+
+class LineWidthMenu: public QMenu
+{
+ Q_OBJECT
+
+public:
+ LineWidthMenu(int which, QWidget *parent)
+ : QMenu("Line Width", parent), d_which(which)
+ {
+ d_act.push_back(new QAction("1", this));
+ d_act.push_back(new QAction("2", this));
+ d_act.push_back(new QAction("3", this));
+ d_act.push_back(new QAction("4", this));
+ d_act.push_back(new QAction("5", this));
+ d_act.push_back(new QAction("6", this));
+ d_act.push_back(new QAction("7", this));
+ d_act.push_back(new QAction("8", this));
+ d_act.push_back(new QAction("9", this));
+ d_act.push_back(new QAction("10", this));
+
+ connect(d_act[0], SIGNAL(triggered()), this, SLOT(getOne()));
+ connect(d_act[1], SIGNAL(triggered()), this, SLOT(getTwo()));
+ connect(d_act[2], SIGNAL(triggered()), this, SLOT(getThree()));
+ connect(d_act[3], SIGNAL(triggered()), this, SLOT(getFour()));
+ connect(d_act[4], SIGNAL(triggered()), this, SLOT(getFive()));
+ connect(d_act[5], SIGNAL(triggered()), this, SLOT(getSix()));
+ connect(d_act[6], SIGNAL(triggered()), this, SLOT(getSeven()));
+ connect(d_act[7], SIGNAL(triggered()), this, SLOT(getEight()));
+ connect(d_act[8], SIGNAL(triggered()), this, SLOT(getNine()));
+ connect(d_act[9], SIGNAL(triggered()), this, SLOT(getTen()));
+
+ QListIterator<QAction*> i(d_act);
+ while(i.hasNext()) {
+ QAction *a = i.next();
+ addAction(a);
+ }
+ }
+
+ ~LineWidthMenu()
+ {}
+
+ 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("LineWidthMenu::getAction: which out of range.\n");
+ }
+
+signals:
+ void whichTrigger(int which, int width);
+
+public slots:
+ void getOne() { emit whichTrigger(d_which, 1); }
+ void getTwo() { emit whichTrigger(d_which, 2); }
+ void getThree() { emit whichTrigger(d_which, 3); }
+ void getFour() { emit whichTrigger(d_which, 4); }
+ void getFive() { emit whichTrigger(d_which, 5); }
+ void getSix() { emit whichTrigger(d_which, 6); }
+ void getSeven() { emit whichTrigger(d_which, 7); }
+ void getEight() { emit whichTrigger(d_which, 8); }
+ void getNine() { emit whichTrigger(d_which, 9); }
+ void getTen() { emit whichTrigger(d_which, 10); }
+
+private:
+ QList<QAction *> d_act;
+ int d_which;
+};
+
+
+/********************************************************************/
+
+
+class LineStyleMenu: public QMenu
+{
+ Q_OBJECT
+
+public:
+ LineStyleMenu(int which, QWidget *parent)
+ : QMenu("Line Style", parent), d_which(which)
+ {
+ d_act.push_back(new QAction("None", this));
+ d_act.push_back(new QAction("Solid", this));
+ d_act.push_back(new QAction("Dash", this));
+ d_act.push_back(new QAction("Dots", this));
+ d_act.push_back(new QAction("Dash-Dot", this));
+ d_act.push_back(new QAction("Dash-Dot-Dot", this));
+
+ connect(d_act[0], SIGNAL(triggered()), this, SLOT(getNone()));
+ connect(d_act[1], SIGNAL(triggered()), this, SLOT(getSolid()));
+ connect(d_act[2], SIGNAL(triggered()), this, SLOT(getDash()));
+ connect(d_act[3], SIGNAL(triggered()), this, SLOT(getDots()));
+ connect(d_act[4], SIGNAL(triggered()), this, SLOT(getDashDot()));
+ connect(d_act[5], SIGNAL(triggered()), this, SLOT(getDashDotDot()));
+
+ QListIterator<QAction*> i(d_act);
+ while(i.hasNext()) {
+ QAction *a = i.next();
+ addAction(a);
+ }
+ }
+
+ ~LineStyleMenu()
+ {}
+
+ 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("LineStyleMenu::getAction: which out of range.\n");
+ }
+
+signals:
+ void whichTrigger(int which, Qt::PenStyle);
+
+public slots:
+ void getNone() { emit whichTrigger(d_which, Qt::NoPen); }
+ void getSolid() { emit whichTrigger(d_which, Qt::SolidLine); }
+ void getDash() { emit whichTrigger(d_which, Qt::DashLine); }
+ void getDots() { emit whichTrigger(d_which, Qt::DotLine); }
+ void getDashDot() { emit whichTrigger(d_which, Qt::DashDotLine); }
+ void getDashDotDot() { emit whichTrigger(d_which, Qt::DashDotDotLine); }
+
+private:
+ QList<QAction *> d_act;
+ int d_which;
+};
+
+
+/********************************************************************/
+
+
+class LineMarkerMenu: public QMenu
+{
+ Q_OBJECT
+
+public:
+ LineMarkerMenu(int which, QWidget *parent)
+ : QMenu("Line Marker", parent), d_which(which)
+ {
+ d_act.push_back(new QAction("None", this));
+ d_act.push_back(new QAction("Circle", this));
+ d_act.push_back(new QAction("Rectangle", this));
+ d_act.push_back(new QAction("Diamond", this));
+ d_act.push_back(new QAction("Triangle", this));
+ d_act.push_back(new QAction("Down Triangle", this));
+ d_act.push_back(new QAction("Left Triangle", this));
+ d_act.push_back(new QAction("Right Triangle", this));
+ d_act.push_back(new QAction("Cross", this));
+ d_act.push_back(new QAction("X-Cross", this));
+ d_act.push_back(new QAction("Horiz. Line", this));
+ d_act.push_back(new QAction("Vert. Line", this));
+ d_act.push_back(new QAction("Star 1", this));
+ d_act.push_back(new QAction("Star 2", this));
+ d_act.push_back(new QAction("Hexagon", this));
+
+ connect(d_act[0], SIGNAL(triggered()), this, SLOT(getNone()));
+ connect(d_act[1], SIGNAL(triggered()), this, SLOT(getCircle()));
+ connect(d_act[2], SIGNAL(triggered()), this, SLOT(getRect()));
+ connect(d_act[3], SIGNAL(triggered()), this, SLOT(getDiamond()));
+ connect(d_act[4], SIGNAL(triggered()), this, SLOT(getTriangle()));
+ connect(d_act[5], SIGNAL(triggered()), this, SLOT(getDTriangle()));
+ connect(d_act[6], SIGNAL(triggered()), this, SLOT(getLTriangle()));
+ connect(d_act[7], SIGNAL(triggered()), this, SLOT(getRTriangle()));
+ connect(d_act[8], SIGNAL(triggered()), this, SLOT(getCross()));
+ connect(d_act[9], SIGNAL(triggered()), this, SLOT(getXCross()));
+ connect(d_act[10], SIGNAL(triggered()), this, SLOT(getHLine()));
+ connect(d_act[11], SIGNAL(triggered()), this, SLOT(getVLine()));
+ connect(d_act[12], SIGNAL(triggered()), this, SLOT(getStar1()));
+ connect(d_act[13], SIGNAL(triggered()), this, SLOT(getStar2()));
+ connect(d_act[14], SIGNAL(triggered()), this, SLOT(getHexagon()));
+
+ QListIterator<QAction*> i(d_act);
+ while(i.hasNext()) {
+ QAction *a = i.next();
+ addAction(a);
+ }
+ }
+
+ ~LineMarkerMenu()
+ {}
+
+ 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("LineMarkerMenu::getAction: which out of range.\n");
+ }
+
+signals:
+ void whichTrigger(int which, QwtSymbol::Style);
+
+public slots:
+ void getNone() { emit whichTrigger(d_which, QwtSymbol::NoSymbol); }
+ void getCircle() { emit whichTrigger(d_which, QwtSymbol::Ellipse); }
+ void getRect() { emit whichTrigger(d_which, QwtSymbol::Rect); }
+ void getDiamond() { emit whichTrigger(d_which, QwtSymbol::Diamond); }
+ void getTriangle() { emit whichTrigger(d_which, QwtSymbol::Triangle); }
+ void getDTriangle() { emit whichTrigger(d_which, QwtSymbol::DTriangle); }
+ void getLTriangle() { emit whichTrigger(d_which, QwtSymbol::LTriangle); }
+ void getRTriangle() { emit whichTrigger(d_which, QwtSymbol::RTriangle); }
+ void getCross() { emit whichTrigger(d_which, QwtSymbol::Cross); }
+ void getXCross() { emit whichTrigger(d_which, QwtSymbol::XCross); }
+ void getHLine() { emit whichTrigger(d_which, QwtSymbol::HLine); }
+ void getVLine() { emit whichTrigger(d_which, QwtSymbol::VLine); }
+ void getStar1() { emit whichTrigger(d_which, QwtSymbol::Star1); }
+ void getStar2() { emit whichTrigger(d_which, QwtSymbol::Star2); }
+ void getHexagon() { emit whichTrigger(d_which, QwtSymbol::Hexagon); }
+
+private:
+ QList<QAction *> d_act;
+ int d_which;
+};
+
+
+/********************************************************************/
+
+
+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));
+ d_act.push_back(new QAction("Off", 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()));
+ connect(d_act[4], SIGNAL(triggered()), this, SLOT(getOff()));
+
+ 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); }
+ void getOff() { emit whichTrigger(d_which, 0); }
+
+private:
+ QList<QAction *> d_act;
+ int d_which;
+};
+
+
+/********************************************************************/
+
+
+class LineTitleAction: public QAction
+{
+ Q_OBJECT
+
+public:
+ LineTitleAction(int which, QWidget *parent)
+ : QAction("Line Title", parent), d_which(which)
+ {
+ d_diag = new QDialog(parent);
+ d_diag->setModal(true);
+
+ d_text = new QLineEdit();
+
+ QGridLayout *layout = new QGridLayout(d_diag);
+ QPushButton *btn_ok = new QPushButton(tr("OK"));
+ QPushButton *btn_cancel = new QPushButton(tr("Cancel"));
+
+ layout->addWidget(d_text, 0, 0, 1, 2);
+ layout->addWidget(btn_ok, 1, 0);
+ layout->addWidget(btn_cancel, 1, 1);
+
+ connect(btn_ok, SIGNAL(clicked()), this, SLOT(getText()));
+ connect(btn_cancel, SIGNAL(clicked()), d_diag, SLOT(close()));
+
+ connect(this, SIGNAL(triggered()), this, SLOT(getTextDiag()));
+ }
+
+ ~LineTitleAction()
+ {}
+
+signals:
+ void whichTrigger(int which, const QString &text);
+
+public slots:
+ void getTextDiag()
+ {
+ d_diag->exec();
+ }
+
+private slots:
+ void getText()
+ {
+ emit whichTrigger(d_which, d_text->text());
+ d_diag->accept();
+ }
+
+private:
+ int d_which;
+
+ QDialog *d_diag;
+ QLineEdit *d_text;
+};
+
+
+/********************************************************************/
+
+
+class OtherAction: public QAction
+{
+ Q_OBJECT
+
+public:
+ OtherAction(QWidget *parent)
+ : QAction("Other", parent)
+ {
+ d_diag = new QDialog(parent);
+ d_diag->setModal(true);
+
+ d_text = new QLineEdit();
+
+ QGridLayout *layout = new QGridLayout(d_diag);
+ QPushButton *btn_ok = new QPushButton(tr("OK"));
+ QPushButton *btn_cancel = new QPushButton(tr("Cancel"));
+
+ layout->addWidget(d_text, 0, 0, 1, 2);
+ layout->addWidget(btn_ok, 1, 0);
+ layout->addWidget(btn_cancel, 1, 1);
+
+ connect(btn_ok, SIGNAL(clicked()), this, SLOT(getText()));
+ connect(btn_cancel, SIGNAL(clicked()), d_diag, SLOT(close()));
+
+ connect(this, SIGNAL(triggered()), this, SLOT(getTextDiag()));
+ }
+
+ ~OtherAction()
+ {}
+
+signals:
+ void whichTrigger(const QString &text);
+
+public slots:
+ void getTextDiag()
+ {
+ d_diag->exec();
+ }
+
+private slots:
+ void getText()
+ {
+ emit whichTrigger(d_text->text());
+ d_diag->accept();
+ }
+
+private:
+ QDialog *d_diag;
+ QLineEdit *d_text;
+};
+
+/********************************************************************/
+
+
+class OtherDualAction: public QAction
+{
+ Q_OBJECT
+
+public:
+ OtherDualAction(QString label0, QString label1, QWidget *parent)
+ : QAction("Other", parent)
+ {
+ d_diag = new QDialog(parent);
+ d_diag->setModal(true);
+
+ d_text0 = new QLineEdit();
+ d_text1 = new QLineEdit();
+
+ QLabel *_label0 = new QLabel(label0);
+ QLabel *_label1 = new QLabel(label1);
+
+ QGridLayout *layout = new QGridLayout(d_diag);
+ QPushButton *btn_ok = new QPushButton(tr("OK"));
+ QPushButton *btn_cancel = new QPushButton(tr("Cancel"));
+
+ layout->addWidget(_label0, 0, 0, 1, 2);
+ layout->addWidget(_label1, 1, 0, 1, 2);
+
+ layout->addWidget(d_text0, 0, 1, 1, 2);
+ layout->addWidget(d_text1, 1, 1, 1, 2);
+ layout->addWidget(btn_ok, 2, 0);
+ layout->addWidget(btn_cancel, 2, 1);
+
+ connect(btn_ok, SIGNAL(clicked()), this, SLOT(getText()));
+ connect(btn_cancel, SIGNAL(clicked()), d_diag, SLOT(close()));
+
+ connect(this, SIGNAL(triggered()), this, SLOT(getTextDiag()));
+ }
+
+ ~OtherDualAction()
+ {}
+
+signals:
+ void whichTrigger(const QString &text0, const QString &text1);
+
+public slots:
+ void getTextDiag()
+ {
+ d_diag->exec();
+ }
+
+private slots:
+ void getText()
+ {
+ emit whichTrigger(d_text0->text(), d_text1->text());
+ d_diag->accept();
+ }
+
+private:
+ QDialog *d_diag;
+ QLineEdit *d_text0;
+ QLineEdit *d_text1;
+};
+
+
+/********************************************************************/
+
+
+class FFTSizeMenu: public QMenu
+{
+ Q_OBJECT
+
+public:
+ FFTSizeMenu(QWidget *parent)
+ : QMenu("FFT Size", parent)
+ {
+ d_act.push_back(new QAction("32", this));
+ d_act.push_back(new QAction("64", this));
+ d_act.push_back(new QAction("128", this));
+ d_act.push_back(new QAction("256", this));
+ d_act.push_back(new QAction("512", this));
+ d_act.push_back(new QAction("1024", this));
+ d_act.push_back(new QAction("2048", this));
+ d_act.push_back(new QAction("4096", this));
+ d_act.push_back(new QAction("8192", this));
+ d_act.push_back(new QAction("16384", this));
+ d_act.push_back(new QAction("32768", this));
+ d_act.push_back(new OtherAction(this));
+
+ connect(d_act[0], SIGNAL(triggered()), this, SLOT(get05()));
+ connect(d_act[1], SIGNAL(triggered()), this, SLOT(get06()));
+ connect(d_act[2], SIGNAL(triggered()), this, SLOT(get07()));
+ connect(d_act[3], SIGNAL(triggered()), this, SLOT(get08()));
+ connect(d_act[4], SIGNAL(triggered()), this, SLOT(get09()));
+ connect(d_act[5], SIGNAL(triggered()), this, SLOT(get10()));
+ connect(d_act[6], SIGNAL(triggered()), this, SLOT(get11()));
+ connect(d_act[7], SIGNAL(triggered()), this, SLOT(get12()));
+ connect(d_act[8], SIGNAL(triggered()), this, SLOT(get13()));
+ connect(d_act[9], SIGNAL(triggered()), this, SLOT(get14()));
+ connect(d_act[10], SIGNAL(triggered()), this, SLOT(get15()));
+ connect(d_act[11], SIGNAL(whichTrigger(const QString&)),
+ this, SLOT(getOther(const QString&)));
+
+ QListIterator<QAction*> i(d_act);
+ while(i.hasNext()) {
+ QAction *a = i.next();
+ addAction(a);
+ }
+ }
+
+ ~FFTSizeMenu()
+ {}
+
+ 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("FFTSizeMenu::getAction: which out of range.\n");
+ }
+
+ signals:
+ void whichTrigger(int size);
+
+ public slots:
+ void get05() { emit whichTrigger(32); }
+ void get06() { emit whichTrigger(64); }
+ void get07() { emit whichTrigger(128); }
+ void get08() { emit whichTrigger(256); }
+ void get09() { emit whichTrigger(512); }
+ void get10() { emit whichTrigger(1024); }
+ void get11() { emit whichTrigger(2048); }
+ void get12() { emit whichTrigger(4096); }
+ void get13() { emit whichTrigger(8192); }
+ void get14() { emit whichTrigger(16384); }
+ void get15() { emit whichTrigger(32768); }
+ void getOther(const QString &str)
+ {
+ int value = str.toInt();
+ emit whichTrigger(value);
+ }
+
+private:
+ QList<QAction *> d_act;
+ OtherAction *d_other;
+};
+
+
+/********************************************************************/
+
+
+class FFTAverageMenu: public QMenu
+{
+ Q_OBJECT
+
+public:
+ FFTAverageMenu(QWidget *parent)
+ : QMenu("FFT Average", parent)
+ {
+ d_act.push_back(new QAction("Off", this));
+ d_act.push_back(new QAction("High", this));
+ d_act.push_back(new QAction("Medium", this));
+ d_act.push_back(new QAction("Low", this));
+ d_act.push_back(new OtherAction(this));
+
+ connect(d_act[0], SIGNAL(triggered()), this, SLOT(getOff()));
+ connect(d_act[1], SIGNAL(triggered()), this, SLOT(getHigh()));
+ connect(d_act[2], SIGNAL(triggered()), this, SLOT(getMedium()));
+ connect(d_act[3], SIGNAL(triggered()), this, SLOT(getLow()));
+ connect(d_act[4], SIGNAL(whichTrigger(const QString&)),
+ this, SLOT(getOther(const QString&)));
+
+ QListIterator<QAction*> i(d_act);
+ while(i.hasNext()) {
+ QAction *a = i.next();
+ addAction(a);
+ }
+ }
+
+ ~FFTAverageMenu()
+ {}
+
+ 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("FFTSizeMenu::getAction: which out of range.\n");
+ }
+
+ signals:
+ void whichTrigger(float alpha);
+
+ public slots:
+ void getOff() { emit whichTrigger(1.0); }
+ void getHigh() { emit whichTrigger(0.05); }
+ void getMedium() { emit whichTrigger(0.1); }
+ void getLow() { emit whichTrigger(0.2); }
+ void getOther(const QString &str)
+ {
+ float value = str.toFloat();
+ emit whichTrigger(value);
+ }
+
+private:
+ QList<QAction *> d_act;
+ OtherAction *d_other;
+};
+
+
+/********************************************************************/
+
+
+class FFTWindowMenu: public QMenu
+{
+ Q_OBJECT
+
+public:
+ FFTWindowMenu(QWidget *parent)
+ : QMenu("FFT Window", parent)
+ {
+ d_act.push_back(new QAction("None", this));
+ d_act.push_back(new QAction("Hamming", this));
+ d_act.push_back(new QAction("Hann", this));
+ d_act.push_back(new QAction("Blackman", this));
+ d_act.push_back(new QAction("Blackman-harris", this));
+ d_act.push_back(new QAction("Rectangular", this));
+ d_act.push_back(new QAction("Kaiser", this));
+
+ connect(d_act[0], SIGNAL(triggered()), this, SLOT(getNone()));
+ connect(d_act[1], SIGNAL(triggered()), this, SLOT(getHamming()));
+ connect(d_act[2], SIGNAL(triggered()), this, SLOT(getHann()));
+ connect(d_act[3], SIGNAL(triggered()), this, SLOT(getBlackman()));
+ connect(d_act[4], SIGNAL(triggered()), this, SLOT(getBlackmanharris()));
+ connect(d_act[5], SIGNAL(triggered()), this, SLOT(getRectangular()));
+ connect(d_act[6], SIGNAL(triggered()), this, SLOT(getKaiser()));
+
+ QListIterator<QAction*> i(d_act);
+ while(i.hasNext()) {
+ QAction *a = i.next();
+ addAction(a);
+ }
+ }
+
+ ~FFTWindowMenu()
+ {}
+
+ 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("FFTWindowMenu::getAction: which out of range.\n");
+ }
+
+signals:
+ void whichTrigger(const gr::filter::firdes::win_type type);
+
+public slots:
+ void getNone() { emit whichTrigger(gr::filter::firdes::WIN_NONE); }
+ void getHamming() { emit whichTrigger(gr::filter::firdes::WIN_HAMMING); }
+ void getHann() { emit whichTrigger(gr::filter::firdes::WIN_HANN); }
+ void getBlackman() { emit whichTrigger(gr::filter::firdes::WIN_BLACKMAN); }
+ void getBlackmanharris() { emit whichTrigger(gr::filter::firdes::WIN_BLACKMAN_hARRIS); }
+ void getRectangular() { emit whichTrigger(gr::filter::firdes::WIN_RECTANGULAR); }
+ void getKaiser() { emit whichTrigger(gr::filter::firdes::WIN_KAISER); }
+
+private:
+ QList<QAction *> d_act;
+ int d_which;
+};
+
+
+/********************************************************************/
+
+
+class NPointsMenu: public QAction
+{
+ Q_OBJECT
+
+public:
+ NPointsMenu(QWidget *parent)
+ : QAction("Number of Points", parent)
+ {
+ d_diag = new QDialog(parent);
+ d_diag->setModal(true);
+
+ d_text = new QLineEdit();
+
+ QGridLayout *layout = new QGridLayout(d_diag);
+ QPushButton *btn_ok = new QPushButton(tr("OK"));
+ QPushButton *btn_cancel = new QPushButton(tr("Cancel"));
+
+ layout->addWidget(d_text, 0, 0, 1, 2);
+ layout->addWidget(btn_ok, 1, 0);
+ layout->addWidget(btn_cancel, 1, 1);
+
+ connect(btn_ok, SIGNAL(clicked()), this, SLOT(getText()));
+ connect(btn_cancel, SIGNAL(clicked()), d_diag, SLOT(close()));
+
+ connect(this, SIGNAL(triggered()), this, SLOT(getTextDiag()));
+ }
+
+ ~NPointsMenu()
+ {}
+
+signals:
+ void whichTrigger(const int npts);
+
+public slots:
+ void getTextDiag()
+ {
+ d_diag->show();
+ }
+
+private slots:
+ void getText()
+ {
+ emit whichTrigger(d_text->text().toInt());
+ d_diag->accept();
+ }
+
+private:
+ QDialog *d_diag;
+ QLineEdit *d_text;
+};
+
+
+/********************************************************************/
+
+
+class ColorMapMenu: public QMenu
+{
+ Q_OBJECT
+
+public:
+ ColorMapMenu(int which, QWidget *parent)
+ : QMenu("Color Map", parent), d_which(which)
+ {
+ d_act.push_back(new QAction("Multi-Color", this));
+ d_act.push_back(new QAction("White Hot", this));
+ d_act.push_back(new QAction("Black Hot", this));
+ d_act.push_back(new QAction("Incandescent", this));
+ d_act.push_back(new QAction("Other", this));
+ //d_act.push_back(new OtherDualAction("Min Intensity: ", "Max Intensity: ", this));
+
+ connect(d_act[0], SIGNAL(triggered()), this, SLOT(getMultiColor()));
+ connect(d_act[1], SIGNAL(triggered()), this, SLOT(getWhiteHot()));
+ connect(d_act[2], SIGNAL(triggered()), this, SLOT(getBlackHot()));
+ connect(d_act[3], SIGNAL(triggered()), this, SLOT(getIncandescent()));
+ connect(d_act[4], SIGNAL(triggered()), this, SLOT(getOther()));
+
+ QListIterator<QAction*> i(d_act);
+ while(i.hasNext()) {
+ QAction *a = i.next();
+ addAction(a);
+ }
+
+ d_max_value = QColor("white");
+ d_min_value = QColor("white");
+ }
+
+ ~ColorMapMenu()
+ {}
+
+ 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("ColorMapMenu::getAction: which out of range.\n");
+ }
+
+ signals:
+ void whichTrigger(int which, const int type,
+ const QColor &min_color=QColor(),
+ const QColor &max_color=QColor());
+
+ public slots:
+ void getMultiColor() { emit whichTrigger(d_which, INTENSITY_COLOR_MAP_TYPE_MULTI_COLOR); }
+ void getWhiteHot() { emit whichTrigger(d_which, INTENSITY_COLOR_MAP_TYPE_WHITE_HOT); }
+ void getBlackHot() { emit whichTrigger(d_which, INTENSITY_COLOR_MAP_TYPE_BLACK_HOT); }
+ void getIncandescent() { emit whichTrigger(d_which, INTENSITY_COLOR_MAP_TYPE_INCANDESCENT); }
+ //void getOther(d_which, const QString &min_str, const QString &max_str)
+ void getOther()
+ {
+ QMessageBox::information(this, "Set low and high intensities",
+ "In the next windows, select the low and then the high intensity colors.",
+ QMessageBox::Ok);
+ d_min_value = QColorDialog::getColor(d_min_value, this);
+ d_max_value = QColorDialog::getColor(d_max_value, this);
+
+ emit whichTrigger(d_which, INTENSITY_COLOR_MAP_TYPE_USER_DEFINED,
+ d_min_value, d_max_value);
+ }
+
+private:
+ QList<QAction *> d_act;
+ OtherDualAction *d_other;
+ QColor d_max_value, d_min_value;
+ int d_which;
+};
+
+
+/********************************************************************/
+
+
+class PopupMenu: public QAction
+{
+ Q_OBJECT
+
+public:
+ PopupMenu(QString desc, QWidget *parent)
+ : QAction(desc, parent)
+ {
+ d_diag = new QDialog(parent);
+ d_diag->setModal(true);
+
+ d_text = new QLineEdit();
+
+ QGridLayout *layout = new QGridLayout(d_diag);
+ QPushButton *btn_ok = new QPushButton(tr("OK"));
+ QPushButton *btn_cancel = new QPushButton(tr("Cancel"));
+
+ layout->addWidget(d_text, 0, 0, 1, 2);
+ layout->addWidget(btn_ok, 1, 0);
+ layout->addWidget(btn_cancel, 1, 1);
+
+ connect(btn_ok, SIGNAL(clicked()), this, SLOT(getText()));
+ connect(btn_cancel, SIGNAL(clicked()), d_diag, SLOT(close()));
+
+ connect(this, SIGNAL(triggered()), this, SLOT(getTextDiag()));
+ }
+
+ ~PopupMenu()
+ {}
+
+signals:
+ void whichTrigger(const QString data);
+
+public slots:
+ void getTextDiag()
+ {
+ d_diag->show();
+ }
+
+private slots:
+ void getText()
+ {
+ emit whichTrigger(d_text->text());
+ d_diag->accept();
+ }
+
+private:
+ QDialog *d_diag;
+ QLineEdit *d_text;
+};
+
+
+/********************************************************************/
+
+
+#endif /* FORM_MENUS_H */