+
+ _form_layout.addRow(new QLabel("<h3>Probes</h3>", &_form));
+
+ // Add the mandatory probes
+ for(probe = decoder->probes; probe; probe = probe->next) {
+ const struct srd_probe *const p =
+ (struct srd_probe *)probe->data;
+ QComboBox *const combo = create_probe_selector(
+ &_form, p->name);
+ _form_layout.addRow(tr("<b>%1</b> (%2) *")
+ .arg(p->name).arg(p->desc), combo);
+
+ _probe_selector_map[p] = combo;
+ }
+
+ // Add the optional probes
+ for(probe = decoder->opt_probes; probe; probe = probe->next) {
+ const struct srd_probe *const p =
+ (struct srd_probe *)probe->data;
+ QComboBox *const combo = create_probe_selector(
+ &_form, p->name);
+ _form_layout.addRow(tr("<b>%1</b> (%2)")
+ .arg(p->name).arg(p->desc), combo);
+
+ _probe_selector_map[p] = combo;
+ }
+}
+
+QComboBox* Decoder::create_probe_selector(
+ QWidget *parent, const char *name)
+{
+ QComboBox *selector = new QComboBox(parent);
+
+ selector->addItem("-", qVariantFromValue(-1));
+ selector->setCurrentIndex(0);
+
+ for(size_t i = 0; i < _sigs.size(); i++) {
+ const shared_ptr<view::Signal> s(_sigs[i]);
+ assert(s);
+
+ if (s->enabled()) {
+ selector->addItem(s->get_name(), qVariantFromValue(i));
+ if(s->get_name().toLower().contains(
+ QString(name).toLower()))
+ selector->setCurrentIndex(i + 1);
+ }
+ }
+
+ return selector;