X-Git-Url: https://sigrok.org/gitweb/?p=pulseview.git;a=blobdiff_plain;f=pv%2Ftoolbars%2Fsamplingbar.cpp;h=2002dd237b4f88ce3dd5edb012ae6a1ee81b6c01;hp=4a69265258f3e3b83678a6a0e3ef026401e49daf;hb=4e7f5ba834f5bafd9fb5c7a6edb30748b2f93c59;hpb=3e7636f9f0037ea4b616a35c6bec4f003f37bc8a diff --git a/pv/toolbars/samplingbar.cpp b/pv/toolbars/samplingbar.cpp index 4a692652..2002dd23 100644 --- a/pv/toolbars/samplingbar.cpp +++ b/pv/toolbars/samplingbar.cpp @@ -30,6 +30,7 @@ #include "samplingbar.hpp" #include +#include #include #include #include @@ -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()