]> sigrok.org Git - pulseview.git/blobdiff - pv/toolbars/samplingbar.cpp
SamplingBar: Added reference to MainWindow for run_stop
[pulseview.git] / pv / toolbars / samplingbar.cpp
index 4a69265258f3e3b83678a6a0e3ef026401e49daf..2002dd237b4f88ce3dd5edb012ae6a1ee81b6c01 100644 (file)
@@ -30,6 +30,7 @@
 #include "samplingbar.hpp"
 
 #include <pv/devicemanager.hpp>
+#include <pv/mainwindow.hpp>
 #include <pv/popups/deviceoptions.hpp>
 #include <pv/popups/channels.hpp>
 #include <pv/util.hpp>
@@ -55,9 +56,10 @@ const uint64_t SamplingBar::MinSampleCount = 100ULL;
 const uint64_t SamplingBar::MaxSampleCount = 1000000000000ULL;
 const uint64_t SamplingBar::DefaultSampleCount = 1000000;
 
-SamplingBar::SamplingBar(SigSession &session, QWidget *parent) :
-       QToolBar("Sampling Bar", parent),
+SamplingBar::SamplingBar(SigSession &session, MainWindow &main_window) :
+       QToolBar("Sampling Bar", &main_window),
        session_(session),
+       main_window_(main_window),
        device_selector_(this),
        updating_device_selector_(false),
        configure_button_(this),
@@ -177,9 +179,12 @@ void SamplingBar::update_sample_rate_selector()
        assert(!updating_sample_rate_);
        updating_sample_rate_ = true;
 
-       try {
+       const auto keys = device->config_keys(ConfigKey::DEVICE_OPTIONS);
+       const auto iter = keys.find(ConfigKey::SAMPLERATE);
+       if (iter != keys.end() &&
+               (*iter).second.find(sigrok::LIST) != (*iter).second.end()) {
                gvar_dict = device->config_list(ConfigKey::SAMPLERATE);
-       } catch (Error error) {
+       } else {
                sample_rate_.show_none();
                updating_sample_rate_ = false;
                return;
@@ -275,11 +280,14 @@ void SamplingBar::update_sample_count_selector()
        if (sample_count == 0)
                sample_count = DefaultSampleCount;
 
-       try {
+       const auto keys = device->config_keys(ConfigKey::DEVICE_OPTIONS);
+       const auto iter = keys.find(ConfigKey::LIMIT_SAMPLES);
+       if (iter != keys.end() &&
+               (*iter).second.find(sigrok::LIST) != (*iter).second.end()) {
                auto gvar = device->config_list(ConfigKey::LIMIT_SAMPLES);
                g_variant_get(gvar.gobj(), "(tt)",
                        &min_sample_count, &max_sample_count);
-       } catch (Error error) {}
+       }
 
        min_sample_count = min(max(min_sample_count, MinSampleCount),
                max_sample_count);
@@ -443,7 +451,7 @@ void SamplingBar::on_run_stop()
 {
        commit_sample_count();
        commit_sample_rate();   
-       run_stop();
+       main_window_.run_stop();
 }
 
 void SamplingBar::on_config_changed()