diff options
Diffstat (limited to 'gr-qtgui/lib/timecontrolpanel.cc')
-rw-r--r-- | gr-qtgui/lib/timecontrolpanel.cc | 183 |
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)); +} |