diff options
Diffstat (limited to 'gr-qtgui/lib/constellationdisplayform.cc')
-rw-r--r-- | gr-qtgui/lib/constellationdisplayform.cc | 138 |
1 files changed, 134 insertions, 4 deletions
diff --git a/gr-qtgui/lib/constellationdisplayform.cc b/gr-qtgui/lib/constellationdisplayform.cc index d0424b0511..1325beccae 100644 --- a/gr-qtgui/lib/constellationdisplayform.cc +++ b/gr-qtgui/lib/constellationdisplayform.cc @@ -1,6 +1,6 @@ /* -*- c++ -*- */ /* - * Copyright 2012 Free Software Foundation, Inc. + * Copyright 2012,2014 Free Software Foundation, Inc. * * This file is part of GNU Radio * @@ -36,11 +36,48 @@ ConstellationDisplayForm::ConstellationDisplayForm(int nplots, QWidget* parent) d_layout->addWidget(d_display_plot, 0, 0); setLayout(d_layout); - NPointsMenu *nptsmenu = new NPointsMenu(this); - d_menu->addAction(nptsmenu); - connect(nptsmenu, SIGNAL(whichTrigger(int)), + d_nptsmenu = new NPointsMenu(this); + d_menu->addAction(d_nptsmenu); + connect(d_nptsmenu, SIGNAL(whichTrigger(int)), this, SLOT(setNPoints(const int))); + // Set up the trigger menu + d_triggermenu = new QMenu("Trigger", this); + d_tr_mode_menu = new TriggerModeMenu(this); + d_tr_slope_menu = new TriggerSlopeMenu(this); + d_tr_level_act = new PopupMenu("Level", this); + d_tr_channel_menu = new TriggerChannelMenu(nplots, this); + d_tr_tag_key_act = new PopupMenu("Tag Key", this); + d_triggermenu->addMenu(d_tr_mode_menu); + d_triggermenu->addMenu(d_tr_slope_menu); + d_triggermenu->addAction(d_tr_level_act); + d_triggermenu->addMenu(d_tr_channel_menu); + d_triggermenu->addAction(d_tr_tag_key_act); + d_menu->addMenu(d_triggermenu); + + setTriggerMode(gr::qtgui::TRIG_MODE_FREE); + connect(d_tr_mode_menu, SIGNAL(whichTrigger(gr::qtgui::trigger_mode)), + this, SLOT(setTriggerMode(gr::qtgui::trigger_mode))); + // updates trigger state by calling set level or set tag key. + connect(d_tr_mode_menu, SIGNAL(whichTrigger(gr::qtgui::trigger_mode)), + this, SLOT(updateTrigger(gr::qtgui::trigger_mode))); + + setTriggerSlope(gr::qtgui::TRIG_SLOPE_POS); + connect(d_tr_slope_menu, SIGNAL(whichTrigger(gr::qtgui::trigger_slope)), + this, SLOT(setTriggerSlope(gr::qtgui::trigger_slope))); + + setTriggerLevel(0); + connect(d_tr_level_act, SIGNAL(whichTrigger(QString)), + this, SLOT(setTriggerLevel(QString))); + + setTriggerChannel(0); + connect(d_tr_channel_menu, SIGNAL(whichTrigger(int)), + this, SLOT(setTriggerChannel(int))); + + setTriggerTagKey(std::string("")); + connect(d_tr_tag_key_act, SIGNAL(whichTrigger(QString)), + this, SLOT(setTriggerTagKey(QString))); + Reset(); connect(d_display_plot, SIGNAL(plotPointSelected(const QPointF)), @@ -120,3 +157,96 @@ void ConstellationDisplayForm::setSampleRate(const QString &samprate) { } + +/******************************************************************** + * TRIGGER METHODS + *******************************************************************/ + +void +ConstellationDisplayForm::setTriggerMode(gr::qtgui::trigger_mode mode) +{ + d_trig_mode = mode; + d_tr_mode_menu->getAction(mode)->setChecked(true); +} + +void +ConstellationDisplayForm::updateTrigger(gr::qtgui::trigger_mode mode) +{ + // If auto or normal mode, popup trigger level box to set + if((d_trig_mode == gr::qtgui::TRIG_MODE_AUTO) || (d_trig_mode == gr::qtgui::TRIG_MODE_NORM)) + d_tr_level_act->activate(QAction::Trigger); + + // if tag mode, popup tag key box to set + if(d_trig_mode == gr::qtgui::TRIG_MODE_TAG) + d_tr_tag_key_act->activate(QAction::Trigger); +} + +gr::qtgui::trigger_mode +ConstellationDisplayForm::getTriggerMode() const +{ + return d_trig_mode; +} + +void +ConstellationDisplayForm::setTriggerSlope(gr::qtgui::trigger_slope slope) +{ + d_trig_slope = slope; + d_tr_slope_menu->getAction(slope)->setChecked(true); +} + +gr::qtgui::trigger_slope +ConstellationDisplayForm::getTriggerSlope() const +{ + return d_trig_slope; +} + +void +ConstellationDisplayForm::setTriggerLevel(QString s) +{ + d_trig_level = s.toFloat(); +} + +void +ConstellationDisplayForm::setTriggerLevel(float level) +{ + d_trig_level = level; + d_tr_level_act->setText(QString().setNum(d_trig_level)); +} + +float +ConstellationDisplayForm::getTriggerLevel() const +{ + return d_trig_level; +} + +void +ConstellationDisplayForm::setTriggerChannel(int channel) +{ + d_trig_channel = channel; + d_tr_channel_menu->getAction(d_trig_channel)->setChecked(true); +} + +int +ConstellationDisplayForm::getTriggerChannel() const +{ + return d_trig_channel; +} + +void +ConstellationDisplayForm::setTriggerTagKey(QString s) +{ + d_trig_tag_key = s.toStdString(); +} + +void +ConstellationDisplayForm::setTriggerTagKey(const std::string &key) +{ + d_trig_tag_key = key; + d_tr_tag_key_act->setText(QString().fromStdString(d_trig_tag_key)); +} + +std::string +ConstellationDisplayForm::getTriggerTagKey() const +{ + return d_trig_tag_key; +} |