X-Git-Url: https://sigrok.org/gitweb/?p=pulseview.git;a=blobdiff_plain;f=pv%2Fview%2Flogicsignal.cpp;h=6eb68db381357835fe8fc3feb1d0ff2fb95697a3;hp=5d3ac102164375ae9aae4c5b30284ee89853eb8e;hb=d55923a65aa672f65f9fe2c30ddbe46beddcaa3a;hpb=99af6802961b0a5ec7ec7d3ff2215c8eb6925ca3 diff --git a/pv/view/logicsignal.cpp b/pv/view/logicsignal.cpp index 5d3ac102..6eb68db3 100644 --- a/pv/view/logicsignal.cpp +++ b/pv/view/logicsignal.cpp @@ -51,6 +51,7 @@ using std::vector; using sigrok::Channel; using sigrok::ConfigKey; +using sigrok::Capability; using sigrok::Error; using sigrok::Trigger; using sigrok::TriggerStage; @@ -125,10 +126,6 @@ LogicSignal::LogicSignal( trigger_match_ = match->type(); } -LogicSignal::~LogicSignal() -{ -} - shared_ptr LogicSignal::data() const { return data_; @@ -332,22 +329,26 @@ void LogicSignal::init_trigger_actions(QWidget *parent) const vector LogicSignal::get_trigger_types() const { const auto sr_dev = device_->device(); - const auto keys = sr_dev->config_keys(ConfigKey::DEVICE_OPTIONS); - const auto iter = keys.find(ConfigKey::TRIGGER_MATCH); - if (iter != keys.end() && - (*iter).second.find(sigrok::LIST) != (*iter).second.end()) { - try { - const Glib::VariantContainerBase gvar = - sr_dev->config_list(ConfigKey::TRIGGER_MATCH); - return Glib::VariantBase::cast_dynamic< - Glib::Variant>>(gvar).get(); - } catch (Error e) { - // Failed to enumerate triggers - (void)e; + if (sr_dev->config_check(ConfigKey::TRIGGER_MATCH, Capability::LIST)) { + const Glib::VariantContainerBase gvar = + sr_dev->config_list(ConfigKey::TRIGGER_MATCH); + + vector ttypes; + + for (unsigned int i = 0; i < gvar.get_n_children(); i++) { + Glib::VariantBase tmp_vb; + gvar.get_child(tmp_vb, i); + + Glib::Variant tmp_v = + Glib::VariantBase::cast_dynamic< Glib::Variant >(tmp_vb); + + ttypes.push_back(tmp_v.get()); } - } - return vector(); + return ttypes; + } else { + return vector(); + } } QAction* LogicSignal::action_from_trigger_type(const TriggerMatchType *type) @@ -460,24 +461,22 @@ void LogicSignal::modify_trigger() const QIcon* LogicSignal::get_icon(const char *path) { - const QIcon *icon = icon_cache_.take(path); - if (!icon) { - icon = new QIcon(path); + if (!icon_cache_.contains(path)) { + const QIcon *icon = new QIcon(path); icon_cache_.insert(path, icon); } - return icon; + return icon_cache_.take(path); } const QPixmap* LogicSignal::get_pixmap(const char *path) { - const QPixmap *pixmap = pixmap_cache_.take(path); - if (!pixmap) { - pixmap = new QPixmap(path); + if (!pixmap_cache_.contains(path)) { + const QPixmap *pixmap = new QPixmap(path); pixmap_cache_.insert(path, pixmap); } - return pixmap; + return pixmap_cache_.take(path); } void LogicSignal::on_trigger()