+void MainWindow::session_error(
+ const QString text, const QString info_text)
+{
+ QMetaObject::invokeMethod(this, "show_session_error",
+ Qt::QueuedConnection, Q_ARG(QString, text),
+ Q_ARG(QString, info_text));
+}
+
+void MainWindow::update_device_list(struct sr_dev_inst *selected_device)
+{
+ assert(_sampling_bar);
+
+ const list<sr_dev_inst*> &devices = _device_manager.devices();
+ _sampling_bar->set_device_list(devices);
+
+ if (!selected_device && !devices.empty()) {
+ // Fall back to the first device in the list.
+ selected_device = devices.front();
+
+ // Try and find the demo device and select that by default
+ BOOST_FOREACH (struct sr_dev_inst *sdi, devices)
+ if (strcmp(sdi->driver->name, "demo") == 0) {
+ selected_device = sdi;
+ }
+ }
+
+ if (selected_device) {
+ _sampling_bar->set_selected_device(selected_device);
+ _session.set_device(selected_device);
+ }
+}
+
+void MainWindow::load_file(QString file_name)
+{
+ const QString errorMessage(
+ QString("Failed to load file %1").arg(file_name));
+ const QString infoMessage;
+ _session.load_file(file_name.toStdString(),
+ boost::bind(&MainWindow::session_error, this,
+ errorMessage, infoMessage));
+}
+
+void MainWindow::show_session_error(
+ const QString text, const QString info_text)
+{
+ QMessageBox msg(this);
+ msg.setText(text);
+ msg.setInformativeText(info_text);
+ msg.setStandardButtons(QMessageBox::Ok);
+ msg.setIcon(QMessageBox::Warning);
+ msg.exec();
+}
+
+gint MainWindow::decoder_name_cmp(gconstpointer a, gconstpointer b)
+{
+ return strcmp(((const srd_decoder*)a)->name,
+ ((const srd_decoder*)b)->name);
+}
+
+void MainWindow::setup_add_decoders(QMenu *parent)
+{
+ GSList *l = g_slist_sort(g_slist_copy(
+ (GSList*)srd_decoder_list()), decoder_name_cmp);
+ while ((l = l->next)) {
+ QAction *const action = parent->addAction(QString(
+ ((srd_decoder*)l->data)->name));
+ action->setData(qVariantFromValue(l->data));
+ _decoders_add_mapper.setMapping(action, action);
+ connect(action, SIGNAL(triggered()),
+ &_decoders_add_mapper, SLOT(map()));
+ }
+ g_slist_free(l);
+}
+