summaryrefslogtreecommitdiff
path: root/gr-qtgui/lib/timecontrolpanel.cc
diff options
context:
space:
mode:
Diffstat (limited to 'gr-qtgui/lib/timecontrolpanel.cc')
-rw-r--r--gr-qtgui/lib/timecontrolpanel.cc183
1 files changed, 183 insertions, 0 deletions
diff --git a/gr-qtgui/lib/timecontrolpanel.cc b/gr-qtgui/lib/timecontrolpanel.cc
new file mode 100644
index 0000000000..ab96a41a9d
--- /dev/null
+++ b/gr-qtgui/lib/timecontrolpanel.cc
@@ -0,0 +1,183 @@
+/* -*- c++ -*- */
+/*
+ * Copyright 2015 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.
+ */
+
+#include <gnuradio/qtgui/timecontrolpanel.h>
+
+TimeControlPanel::TimeControlPanel(TimeDisplayForm *form)
+ : QVBoxLayout(),
+ d_parent(form)
+{
+ // Set up the box for axes items
+ d_axes_box = new QGroupBox("Axes");
+ d_axes_layout = new QVBoxLayout;
+ d_autorange_check = new QCheckBox("Autorange");
+ d_grid_check = new QCheckBox("Grid");
+
+ d_yoff_layout = new QHBoxLayout;
+ d_yoff_label = new QLabel("Y Offset:");
+ d_yoff_plus = new QPushButton("+");
+ d_yoff_minus = new QPushButton("-");
+ d_yoff_plus->setMaximumWidth(30);
+ d_yoff_minus->setMaximumWidth(30);
+ d_yoff_layout->addWidget(d_yoff_label);
+ d_yoff_layout->addWidget(d_yoff_plus);
+ d_yoff_layout->addWidget(d_yoff_minus);
+
+ d_yrange_layout = new QHBoxLayout;
+ d_yrange_label = new QLabel("Y Range:");
+ d_yrange_plus = new QPushButton("+");
+ d_yrange_minus = new QPushButton("-");
+ d_yrange_plus->setMaximumWidth(30);
+ d_yrange_minus->setMaximumWidth(30);
+ d_yrange_layout->addWidget(d_yrange_label);
+ d_yrange_layout->addWidget(d_yrange_plus);
+ d_yrange_layout->addWidget(d_yrange_minus);
+
+ d_xmax_layout = new QHBoxLayout;
+ d_xmax_label = new QLabel("X Max:");
+ d_xmax_plus = new QPushButton("+");
+ d_xmax_minus = new QPushButton("-");
+ d_xmax_plus->setMaximumWidth(30);
+ d_xmax_minus->setMaximumWidth(30);
+ d_xmax_layout->addWidget(d_xmax_label);
+ d_xmax_layout->addWidget(d_xmax_plus);
+ d_xmax_layout->addWidget(d_xmax_minus);
+
+
+ // Set up the box for trigger items
+ d_trigger_box = new QGroupBox("Trigger");
+ d_trigger_layout = new QVBoxLayout;
+ d_trigger_mode_combo = new QComboBox();
+ d_trigger_mode_combo->addItem("Free");
+ d_trigger_mode_combo->addItem("Auto");
+ d_trigger_mode_combo->addItem("Normal");
+ d_trigger_mode_combo->addItem("Tag");
+
+ d_trigger_slope_combo = new QComboBox();
+ d_trigger_slope_combo->addItem("Positive");
+ d_trigger_slope_combo->addItem("Negative");
+
+ d_trigger_level_layout = new QHBoxLayout;
+ d_trigger_level_label = new QLabel("Level:");
+ d_trigger_level_plus = new QPushButton("+");
+ d_trigger_level_minus = new QPushButton("-");
+ d_trigger_level_plus->setMaximumWidth(30);
+ d_trigger_level_minus->setMaximumWidth(30);
+ d_trigger_level_layout->addWidget(d_trigger_level_label);
+ d_trigger_level_layout->addWidget(d_trigger_level_plus);
+ d_trigger_level_layout->addWidget(d_trigger_level_minus);
+
+ d_trigger_delay_layout = new QHBoxLayout;
+ d_trigger_delay_label = new QLabel("Delay:");
+ d_trigger_delay_plus = new QPushButton("+");
+ d_trigger_delay_minus = new QPushButton("-");
+ d_trigger_delay_plus->setMaximumWidth(30);
+ d_trigger_delay_minus->setMaximumWidth(30);
+ d_trigger_delay_layout->addWidget(d_trigger_delay_label);
+ d_trigger_delay_layout->addWidget(d_trigger_delay_plus);
+ d_trigger_delay_layout->addWidget(d_trigger_delay_minus);
+
+
+ // Set up the boxes into the layout
+ d_axes_layout->addWidget(d_autorange_check);
+ d_axes_layout->addWidget(d_grid_check);
+ d_axes_layout->addLayout(d_yoff_layout);
+ d_axes_layout->addLayout(d_yrange_layout);
+ d_axes_layout->addLayout(d_xmax_layout);
+ d_axes_box->setLayout(d_axes_layout);
+
+ d_trigger_layout->addWidget(d_trigger_mode_combo);
+ d_trigger_layout->addWidget(d_trigger_slope_combo);
+ d_trigger_layout->addLayout(d_trigger_level_layout);
+ d_trigger_layout->addLayout(d_trigger_delay_layout);
+ d_trigger_box->setLayout(d_trigger_layout);
+
+ addWidget(d_axes_box);
+ addWidget(d_trigger_box);
+ addItem(new QSpacerItem(0, 0, QSizePolicy::Minimum,
+ QSizePolicy::Expanding));
+
+ connect(d_autorange_check, SIGNAL(clicked(bool)),
+ d_parent, SLOT(autoScale(bool)));
+ connect(d_grid_check, SIGNAL(clicked(bool)),
+ d_parent, SLOT(setGrid(bool)));
+ connect(d_yoff_plus, SIGNAL(pressed(void)),
+ d_parent, SLOT(notifyYAxisPlus(void)));
+ connect(d_yoff_minus, SIGNAL(pressed(void)),
+ d_parent, SLOT(notifyYAxisMinus(void)));
+
+ connect(d_yrange_plus, SIGNAL(pressed(void)),
+ d_parent, SLOT(notifyYRangePlus(void)));
+ connect(d_yrange_minus, SIGNAL(pressed(void)),
+ d_parent, SLOT(notifyYRangeMinus(void)));
+
+ connect(d_xmax_plus, SIGNAL(pressed(void)),
+ d_parent, SLOT(notifyXAxisPlus(void)));
+ connect(d_xmax_minus, SIGNAL(pressed(void)),
+ d_parent, SLOT(notifyXAxisMinus(void)));
+ connect(d_trigger_mode_combo, SIGNAL(currentIndexChanged(const QString&)),
+ d_parent, SLOT(notifyTriggerMode(const QString&)));
+ connect(d_trigger_slope_combo, SIGNAL(currentIndexChanged(const QString&)),
+ d_parent, SLOT(notifyTriggerSlope(const QString&)));
+ connect(d_trigger_level_plus, SIGNAL(pressed(void)),
+ d_parent, SLOT(notifyTriggerLevelPlus()));
+ connect(d_trigger_level_minus, SIGNAL(pressed(void)),
+ d_parent, SLOT(notifyTriggerLevelMinus()));
+ connect(d_trigger_delay_plus, SIGNAL(pressed(void)),
+ d_parent, SLOT(notifyTriggerDelayPlus()));
+ connect(d_trigger_delay_minus, SIGNAL(pressed(void)),
+ d_parent, SLOT(notifyTriggerDelayMinus()));
+}
+
+TimeControlPanel::~TimeControlPanel()
+{
+ removeWidget(d_axes_box);
+ removeWidget(d_trigger_box);
+ delete d_axes_box;
+ delete d_trigger_box;
+
+ // All other children of the boxes are automatically deleted.
+}
+
+void
+TimeControlPanel::toggleAutoScale(bool en)
+{
+ d_autorange_check->setChecked(en);
+}
+
+void
+TimeControlPanel::toggleGrid(bool en)
+{
+ d_grid_check->setChecked(en);
+}
+
+void
+TimeControlPanel::toggleTriggerMode(gr::qtgui::trigger_mode mode)
+{
+ d_trigger_mode_combo->setCurrentIndex(static_cast<int>(mode));
+}
+
+void
+TimeControlPanel::toggleTriggerSlope(gr::qtgui::trigger_slope slope)
+{
+ d_trigger_slope_combo->setCurrentIndex(static_cast<int>(slope));
+}