X-Git-Url: http://git.code-monkey.de/?a=blobdiff_plain;f=pv%2Fmainwindow.cpp;h=fcc929e988c12d8f1755be8b436c1b348b77447f;hb=f69ec72d3cead13847045ca9cdf15d503f69e370;hp=0b2805b18e44a1ee0908b2715476d62466faf58e;hpb=19adbc2c342b190161ec1223377a3619974b91f7;p=pulseview.git diff --git a/pv/mainwindow.cpp b/pv/mainwindow.cpp index 0b2805b..fcc929e 100644 --- a/pv/mainwindow.cpp +++ b/pv/mainwindow.cpp @@ -25,6 +25,9 @@ #include #include +#include +#include + #include #include #include @@ -39,7 +42,7 @@ #include "mainwindow.h" #include "devicemanager.h" -#include "devinst.h" +#include "device/device.h" #include "dialogs/about.h" #include "dialogs/connect.h" #include "dialogs/storeprogress.h" @@ -217,7 +220,7 @@ void MainWindow::setup_ui() "MainWindow", "&Decoders", 0, QApplication::UnicodeUTF8)); pv::widgets::DecoderMenu *const menu_decoders_add = - new pv::widgets::DecoderMenu(menu_decoders); + new pv::widgets::DecoderMenu(menu_decoders, true); menu_decoders_add->setTitle(QApplication::translate( "MainWindow", "&Add", 0, QApplication::UnicodeUTF8)); connect(menu_decoders_add, SIGNAL(decoder_selected(srd_decoder*)), @@ -284,29 +287,23 @@ void MainWindow::session_error( Q_ARG(QString, info_text)); } -void MainWindow::update_device_list(shared_ptr selected_device) +void MainWindow::update_device_list() { assert(_sampling_bar); - const list< shared_ptr > &devices = _device_manager.devices(); - _sampling_bar->set_device_list(devices); + shared_ptr selected_device = _session.get_device(); + list< shared_ptr > devices; + std::copy(_device_manager.devices().begin(), + _device_manager.devices().end(), std::back_inserter(devices)); - if (!selected_device && !devices.empty()) { - // Fall back to the first device in the list. - selected_device = devices.front(); + if (std::find(devices.begin(), devices.end(), selected_device) == + devices.end()) + devices.push_back(selected_device); - // Try and find the demo device and select that by default - BOOST_FOREACH (shared_ptr dev_inst, devices) - if (strcmp(dev_inst->dev_inst()->driver->name, - "demo") == 0) { - selected_device = dev_inst; - } - } + _sampling_bar->set_device_list(devices); - if (selected_device) { + if (selected_device) _sampling_bar->set_selected_device(selected_device); - _session.set_device(selected_device); - } } void MainWindow::load_file(QString file_name) @@ -314,9 +311,17 @@ 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)); + + try { + _session.set_file(file_name.toStdString()); + } catch(QString e) { + show_session_error(tr("Failed to load ") + file_name, e); + } + + update_device_list(); + + _session.start_capture(boost::bind(&MainWindow::session_error, this, + errorMessage, infoMessage)); } void MainWindow::show_session_error( @@ -368,10 +373,10 @@ void MainWindow::on_actionConnect_triggered() // If the user selected a device, select it in the device list. Select the // current device otherwise. - shared_ptr dev_inst = dlg.exec() ? - dlg.get_selected_device() : _session.get_device(); + if (dlg.exec()) + _session.set_device(dlg.get_selected_device()); - update_device_list(dev_inst); + update_device_list(); } void MainWindow::on_actionQuit_triggered()