X-Git-Url: https://sigrok.org/gitweb/?a=blobdiff_plain;ds=inline;f=pv%2Fdialogs%2Fdecoder.cpp;h=88ccf76021f9acc7b7888695257cacc6f673c684;hb=4d3c4e342104dcba47c252e734dee441faaf2a9e;hp=292e4722c3928bdae995c1cd03030fa597059ba0;hpb=f5a2fb830f9fec4127a33b61edf6ba066132ae23;p=pulseview.git diff --git a/pv/dialogs/decoder.cpp b/pv/dialogs/decoder.cpp index 292e4722..88ccf760 100644 --- a/pv/dialogs/decoder.cpp +++ b/pv/dialogs/decoder.cpp @@ -22,8 +22,15 @@ extern "C" { #include } +#include + +#include + +#include + #include "decoder.h" +#include #include using namespace boost; @@ -33,10 +40,10 @@ namespace pv { namespace dialogs { Decoder::Decoder(QWidget *parent, const srd_decoder *decoder, - const vector< shared_ptr > &sigs) : + const vector< shared_ptr > &sigs, GHashTable *options) : QDialog(parent), - _decoder(decoder), _sigs(sigs), + _binding(decoder, options), _layout(this), _form(this), _form_layout(&_form), @@ -62,7 +69,7 @@ Decoder::Decoder(QWidget *parent, const srd_decoder *decoder, _layout.addWidget(&_form); _layout.addWidget(&_button_box); - _form_layout.addRow(new QLabel("

Probes

", &_form)); + _form_layout.addRow(new QLabel(tr("

Probes

"), &_form)); // Add the mandatory probes for(probe = decoder->probes; probe; probe = probe->next) { @@ -90,6 +97,19 @@ Decoder::Decoder(QWidget *parent, const srd_decoder *decoder, _form_layout.addRow(new QLabel( tr("* Required Probes"), &_form)); + + // Add the options + if (!_binding.properties().empty()) { + _form_layout.addRow(new QLabel(tr("

Options

"), + &_form)); + _binding.add_properties_to_form(&_form_layout); + } +} + +void Decoder::accept() +{ + QDialog::accept(); + _binding.commit(); } QComboBox* Decoder::create_probe_selector( @@ -115,5 +135,28 @@ QComboBox* Decoder::create_probe_selector( return selector; } +map > Decoder::get_probes() +{ + map > probe_map; + for(map::const_iterator i = + _probe_selector_map.begin(); + i != _probe_selector_map.end(); i++) + { + const QComboBox *const combo = (*i).second; + const int probe_index = + combo->itemData(combo->currentIndex()).value(); + if(probe_index >= 0) { + shared_ptr sig = _sigs[probe_index]; + if(dynamic_cast(sig.get())) + probe_map[(*i).first] = sig; + else + qDebug() << "Currently only logic signals " + "are supported for decoding"; + } + } + + return probe_map; +} + } // namespace dialogs } // namespace pv