X-Git-Url: http://git.code-monkey.de/?a=blobdiff_plain;f=pv%2Ftoolbars%2Fsamplingbar.cpp;h=b5a2aee513c7a12026b94e7bd3720894fd9e735e;hb=f65cd27bdbf70644052dd43dac4bbe9403f4dfee;hp=13c57d6cbb8f342aa9c1a43f96ef92ec9bf85e1b;hpb=8dbbc7f0b9ea59d0f0d62225772f8a56eee125f5;p=pulseview.git diff --git a/pv/toolbars/samplingbar.cpp b/pv/toolbars/samplingbar.cpp index 13c57d6..b5a2aee 100644 --- a/pv/toolbars/samplingbar.cpp +++ b/pv/toolbars/samplingbar.cpp @@ -27,12 +27,13 @@ #include #include -#include "samplingbar.h" +#include "samplingbar.hpp" -#include -#include -#include -#include +#include +#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(Session &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), @@ -86,7 +88,7 @@ SamplingBar::SamplingBar(SigSession &session, QWidget *parent) : sample_count_.show_min_max_step(0, UINT64_MAX, 1); - set_capture_state(pv::SigSession::Stopped); + set_capture_state(pv::Session::Stopped); configure_button_.setIcon(QIcon::fromTheme("configure", QIcon(":/icons/configure.png"))); @@ -151,11 +153,11 @@ shared_ptr SamplingBar::get_selected_device() const return device_selector_.itemData(index).value>(); } -void SamplingBar::set_capture_state(pv::SigSession::capture_state state) +void SamplingBar::set_capture_state(pv::Session::capture_state state) { const QIcon *icons[] = {&icon_grey_, &icon_red_, &icon_green_}; run_stop_button_.setIcon(*icons[state]); - run_stop_button_.setText((state == pv::SigSession::Stopped) ? + run_stop_button_.setText((state == pv::Session::Stopped) ? tr("Run") : tr("Stop")); run_stop_button_.setShortcut(QKeySequence(Qt::Key_Space)); } @@ -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; @@ -261,40 +266,45 @@ void SamplingBar::update_sample_count_selector() assert(!updating_sample_count_); updating_sample_count_ = true; - if (sample_count_supported_) + if (!sample_count_supported_) { - uint64_t sample_count = sample_count_.value(); - uint64_t min_sample_count = 0; - uint64_t max_sample_count = MaxSampleCount; + sample_count_.show_none(); + updating_sample_count_ = false; + return; + } - if (sample_count == 0) - sample_count = DefaultSampleCount; + uint64_t sample_count = sample_count_.value(); + uint64_t min_sample_count = 0; + uint64_t max_sample_count = MaxSampleCount; - try { - auto gvar = device->config_list(ConfigKey::LIMIT_SAMPLES); - g_variant_get(gvar.gobj(), "(tt)", - &min_sample_count, &max_sample_count); - } catch (Error error) {} + if (sample_count == 0) + sample_count = DefaultSampleCount; - min_sample_count = min(max(min_sample_count, MinSampleCount), - max_sample_count); + 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); + } - sample_count_.show_125_list( - min_sample_count, max_sample_count); + min_sample_count = min(max(min_sample_count, MinSampleCount), + max_sample_count); - try { - auto gvar = device->config_get(ConfigKey::LIMIT_SAMPLES); - sample_count = g_variant_get_uint64(gvar.gobj()); - if (sample_count == 0) - sample_count = DefaultSampleCount; - sample_count = min(max(sample_count, MinSampleCount), - max_sample_count); - } catch (Error error) {} - - sample_count_.set_value(sample_count); - } - else - sample_count_.show_none(); + sample_count_.show_125_list( + min_sample_count, max_sample_count); + + try { + auto gvar = device->config_get(ConfigKey::LIMIT_SAMPLES); + sample_count = g_variant_get_uint64(gvar.gobj()); + if (sample_count == 0) + sample_count = DefaultSampleCount; + sample_count = min(max(sample_count, MinSampleCount), + max_sample_count); + } catch (Error error) {} + + sample_count_.set_value(sample_count); updating_sample_count_ = false; } @@ -422,7 +432,7 @@ void SamplingBar::on_device_selected() if (!device) return; - session_.set_device(device); + main_window_.select_device(device); update_device_config_widgets(); } @@ -441,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()