]> sigrok.org Git - pulseview.git/blobdiff - pv/views/trace/cursorpair.cpp
TabularDecView: Allow return/enter press and don't change scale
[pulseview.git] / pv / views / trace / cursorpair.cpp
index bd6814c5c8f1a86258d2dcda6eb4d4af5b922450..7d7d8e4d6477d2e9efbd2a5b84f1bd3f52ec9d79 100644 (file)
@@ -58,6 +58,8 @@ CursorPair::CursorPair(View &view) :
                GlobalSettings::Key_View_CursorShowFrequency).value<bool>();
        show_interval_ = settings.value(
                GlobalSettings::Key_View_CursorShowInterval).value<bool>();
+       show_samples_ = settings.value(
+               GlobalSettings::Key_View_CursorShowSamples).value<bool>();
 
        connect(&view_, SIGNAL(hover_point_changed(const QWidget*, QPoint)),
                this, SLOT(on_hover_point_changed(const QWidget*, QPoint)));
@@ -123,26 +125,40 @@ QMenu *CursorPair::create_header_context_menu(QWidget *parent)
 {
        QMenu *menu = new QMenu(parent);
 
-       QAction *displayIntervalAction = new QAction(tr("Display interval"));
+       QAction *displayIntervalAction = new QAction(tr("Display interval"), this);
        displayIntervalAction->setCheckable(true);
        displayIntervalAction->setChecked(show_interval_);
        menu->addAction(displayIntervalAction);
 
-       connect(displayIntervalAction, &QAction::toggled, [=]{
-               GlobalSettings settings;
-               settings.setValue(GlobalSettings::Key_View_CursorShowInterval,
-                       !settings.value(GlobalSettings::Key_View_CursorShowInterval).value<bool>());
+       connect(displayIntervalAction, &QAction::toggled, displayIntervalAction,
+               [=]{
+                       GlobalSettings settings;
+                       settings.setValue(GlobalSettings::Key_View_CursorShowInterval,
+                               !settings.value(GlobalSettings::Key_View_CursorShowInterval).value<bool>());
                });
 
-       QAction *displayFrequencyAction = new QAction(tr("Display frequency"));
+       QAction *displayFrequencyAction = new QAction(tr("Display frequency"), this);
        displayFrequencyAction->setCheckable(true);
        displayFrequencyAction->setChecked(show_frequency_);
        menu->addAction(displayFrequencyAction);
 
-       connect(displayFrequencyAction, &QAction::toggled, [=]{
-               GlobalSettings settings;
-               settings.setValue(GlobalSettings::Key_View_CursorShowFrequency,
-                       !settings.value(GlobalSettings::Key_View_CursorShowFrequency).value<bool>());
+       connect(displayFrequencyAction, &QAction::toggled, displayFrequencyAction,
+               [=]{
+                       GlobalSettings settings;
+                       settings.setValue(GlobalSettings::Key_View_CursorShowFrequency,
+                               !settings.value(GlobalSettings::Key_View_CursorShowFrequency).value<bool>());
+               });
+
+       QAction *displaySamplesAction = new QAction(tr("Display samples"), this);
+       displaySamplesAction->setCheckable(true);
+       displaySamplesAction->setChecked(show_samples_);
+       menu->addAction(displaySamplesAction);
+
+       connect(displaySamplesAction, &QAction::toggled, displaySamplesAction,
+               [=]{
+                       GlobalSettings settings;
+                       settings.setValue(GlobalSettings::Key_View_CursorShowSamples,
+                               !settings.value(GlobalSettings::Key_View_CursorShowSamples).value<bool>());
                });
 
        return menu;
@@ -283,6 +299,9 @@ void CursorPair::on_setting_changed(const QString &key, const QVariant &value)
 
        if (key == GlobalSettings::Key_View_CursorShowInterval)
                show_interval_ = value.value<bool>();
+
+       if (key == GlobalSettings::Key_View_CursorShowSamples)
+               show_samples_ = value.value<bool>();
 }
 
 void CursorPair::on_hover_point_changed(const QWidget* widget, const QPoint& hp)
@@ -329,6 +348,15 @@ QString CursorPair::format_string_sub(int time_precision, int freq_precision, bo
                                s = QString("%1").arg(time);
                        items++;
                }
+
+               if (show_samples_) {
+                       const QString samples = QString::number(
+                               (diff * view_.session().get_samplerate()).convert_to<uint64_t>());
+                       if (items > 0)
+                               s = QString("%1 / %2").arg(s, samples);
+                       else
+                               s = QString("%1").arg(samples);
+               }
        } else
                // In this case, we return the number of samples, really
                s = time;