Replaced boost::bind with C++11 lambdas
[pulseview.git] / pv / mainwindow.cpp
index 2a74d5b292a40f8ac6ecaf42ba1dbdc791eef7a5..145d7d997db6cfe089d1fc18b4bafd3874e9e22c 100644 (file)
@@ -22,9 +22,6 @@
 #include <libsigrokdecode/libsigrokdecode.h>
 #endif
 
-#include <boost/bind.hpp>
-#include <boost/foreach.hpp>
-
 #include <algorithm>
 #include <iterator>
 
@@ -61,8 +58,8 @@
 #include <glib.h>
 #include <libsigrok/libsigrok.h>
 
-using boost::shared_ptr;
 using std::list;
+using std::shared_ptr;
 
 namespace pv {
 
@@ -123,6 +120,7 @@ void MainWindow::setup_ui()
                "MainWindow", "&Open...", 0, QApplication::UnicodeUTF8));
        action_open->setIcon(QIcon::fromTheme("document-open",
                QIcon(":/icons/document-open.png")));
+       action_open->setShortcut(QKeySequence(Qt::CTRL + Qt::Key_O));
        action_open->setObjectName(QString::fromUtf8("actionOpen"));
        menu_file->addAction(action_open);
 
@@ -131,6 +129,7 @@ void MainWindow::setup_ui()
                "MainWindow", "&Save As...", 0, QApplication::UnicodeUTF8));
        action_save_as->setIcon(QIcon::fromTheme("document-save-as",
                QIcon(":/icons/document-save-as.png")));
+       action_save_as->setShortcut(QKeySequence(Qt::CTRL + Qt::Key_S));
        action_save_as->setObjectName(QString::fromUtf8("actionSaveAs"));
        menu_file->addAction(action_save_as);
 
@@ -220,7 +219,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*)),
@@ -253,10 +252,12 @@ void MainWindow::setup_ui()
        // Setup the toolbar
        QToolBar *const toolbar = new QToolBar(tr("Main Toolbar"), this);
        toolbar->addAction(action_open);
+       toolbar->addAction(action_save_as);
        toolbar->addSeparator();
        toolbar->addAction(action_view_zoom_in);
        toolbar->addAction(action_view_zoom_out);
        toolbar->addAction(action_view_zoom_fit);
+       toolbar->addAction(action_view_zoom_one_to_one);
        addToolBar(toolbar);
 
        // Setup the sampling bar
@@ -296,10 +297,12 @@ void MainWindow::update_device_list()
        std::copy(_device_manager.devices().begin(),
                _device_manager.devices().end(), std::back_inserter(devices));
 
-       _sampling_bar->set_device_list(devices);
+       if (std::find(devices.begin(), devices.end(), selected_device) ==
+               devices.end())
+               devices.push_back(selected_device);
+       assert(selected_device);
 
-       if (selected_device)
-               _sampling_bar->set_selected_device(selected_device);
+       _sampling_bar->set_device_list(devices, selected_device);
 }
 
 void MainWindow::load_file(QString file_name)
@@ -312,10 +315,15 @@ void MainWindow::load_file(QString file_name)
                _session.set_file(file_name.toStdString());
        } catch(QString e) {
                show_session_error(tr("Failed to load ") + file_name, e);
+               _session.set_default_device();
+               update_device_list();
+               return;
        }
 
-       _session.start_capture(boost::bind(&MainWindow::session_error, this,
-               errorMessage, infoMessage));
+       update_device_list();
+
+       _session.start_capture([&, errorMessage, infoMessage](QString) {
+               session_error(errorMessage, infoMessage); });
 }
 
 void MainWindow::show_session_error(
@@ -429,9 +437,8 @@ void MainWindow::run_stop()
 {
        switch(_session.get_capture_state()) {
        case SigSession::Stopped:
-               _session.start_capture(
-                               boost::bind(&MainWindow::session_error, this,
-                               QString("Capture failed"), _1));
+               _session.start_capture([&](QString message) {
+                       session_error("Capture failed", message); });
                break;
 
        case SigSession::AwaitingTrigger: