X-Git-Url: https://sigrok.org/gitweb/?a=blobdiff_plain;f=pv%2Ftoolbars%2Fmainbar.cpp;h=8c0b06391db310f8e1dad603cf38ad7de6c81864;hb=03cc651d78a85308107e0ef3e5e514503d7c723c;hp=30cff789a3436abdd1216f94d25e4abca6668bc1;hpb=2ad82c2e40b6865481733913a2c32735602f63c4;p=pulseview.git diff --git a/pv/toolbars/mainbar.cpp b/pv/toolbars/mainbar.cpp index 30cff789..8c0b0639 100644 --- a/pv/toolbars/mainbar.cpp +++ b/pv/toolbars/mainbar.cpp @@ -145,6 +145,8 @@ MainBar::MainBar(Session &session, MainWindow &main_window) : QMenu *const menu_view = new QMenu; menu_view->setTitle(tr("&View")); menu_view->addAction(main_window.action_view_sticky_scrolling()); + menu_view->addSeparator(); + menu_view->addAction(main_window.action_view_coloured_bg()); QMenu *const menu_help = new QMenu; menu_help->setTitle(tr("&Help")); @@ -269,22 +271,9 @@ void MainBar::update_sample_rate_selector() const shared_ptr sr_dev = device->device(); - try { - keys = sr_dev->config_keys(ConfigKey::DEVICE_OPTIONS); - } catch (Error) {} - - const auto iter = keys.find(ConfigKey::SAMPLERATE); - if (iter != keys.end() && - (*iter).second.find(sigrok::LIST) != (*iter).second.end()) { - try { - gvar_dict = sr_dev->config_list(ConfigKey::SAMPLERATE); - } catch (const sigrok::Error &e) { - // Failed to enunmerate samplerate - (void)e; - } - } - - if (!gvar_dict.gobj()) { + if (sr_dev->config_check(ConfigKey::SAMPLERATE, Capability::LIST)) { + gvar_dict = sr_dev->config_list(ConfigKey::SAMPLERATE); + } else { sample_rate_.show_none(); updating_sample_rate_ = false; return; @@ -379,20 +368,11 @@ void MainBar::update_sample_count_selector() if (sample_count == 0) sample_count = DefaultSampleCount; - const auto keys = sr_dev->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()) { - try { - auto gvar = - sr_dev->config_list(ConfigKey::LIMIT_SAMPLES); - if (gvar.gobj()) - g_variant_get(gvar.gobj(), "(tt)", - &min_sample_count, &max_sample_count); - } catch (const sigrok::Error &e) { - // Failed to query sample limit - (void)e; - } + if (sr_dev->config_check(ConfigKey::LIMIT_SAMPLES, Capability::LIST)) { + auto gvar = sr_dev->config_list(ConfigKey::LIMIT_SAMPLES); + if (gvar.gobj()) + g_variant_get(gvar.gobj(), "(tt)", + &min_sample_count, &max_sample_count); } min_sample_count = min(max(min_sample_count, MinSampleCount), @@ -401,14 +381,14 @@ void MainBar::update_sample_count_selector() sample_count_.show_125_list( min_sample_count, max_sample_count); - try { + if (sr_dev->config_check(ConfigKey::LIMIT_SAMPLES, Capability::GET)) { auto gvar = sr_dev->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); @@ -449,27 +429,14 @@ void MainBar::update_device_config_widgets() // Update supported options. sample_count_supported_ = false; - try { - for (auto entry : sr_dev->config_keys(ConfigKey::DEVICE_OPTIONS)) { - auto key = entry.first; - auto capabilities = entry.second; - switch (key->id()) { - case SR_CONF_LIMIT_SAMPLES: - if (capabilities.count(Capability::SET)) - sample_count_supported_ = true; - break; - case SR_CONF_LIMIT_FRAMES: - if (capabilities.count(Capability::SET)) { - sr_dev->config_set(ConfigKey::LIMIT_FRAMES, - Glib::Variant::create(1)); - on_config_changed(); - } - break; - default: - break; - } - } - } catch (Error error) {} + if (sr_dev->config_check(ConfigKey::LIMIT_SAMPLES, Capability::SET)) + sample_count_supported_ = true; + + if (sr_dev->config_check(ConfigKey::LIMIT_FRAMES, Capability::SET)) { + sr_dev->config_set(ConfigKey::LIMIT_FRAMES, + Glib::Variant::create(1)); + on_config_changed(); + } // Add notification of reconfigure events disconnect(this, SLOT(on_config_changed()));