Replaced NULL with nullptr
[pulseview.git] / pv / toolbars / mainbar.cpp
index 9c5049dd8aa92d291e9c8b0e5b1e92b823685262..5518e98b6a9ce6466515c4e14558f0656cdcb2e1 100644 (file)
@@ -38,6 +38,7 @@
 #include <pv/popups/channels.hpp>
 #include <pv/util.hpp>
 #include <pv/widgets/exportmenu.hpp>
+#include <pv/widgets/importmenu.hpp>
 
 #include <libsigrokcxx/libsigrokcxx.hpp>
 
@@ -54,6 +55,7 @@ using std::vector;
 using sigrok::Capability;
 using sigrok::ConfigKey;
 using sigrok::Error;
+using sigrok::InputFormat;
 
 namespace pv {
 namespace toolbars {
@@ -69,7 +71,7 @@ MainBar::MainBar(Session &session, MainWindow &main_window) :
        device_selector_(this, session.device_manager(),
                main_window.action_connect()),
        configure_button_(this),
-       configure_button_action_(NULL),
+       configure_button_action_(nullptr),
        channels_button_(this),
        sample_count_(" samples", this),
        sample_rate_("Hz", this),
@@ -88,6 +90,21 @@ MainBar::MainBar(Session &session, MainWindow &main_window) :
        setFloatable(false);
        setContextMenuPolicy(Qt::PreventContextMenu);
 
+       // Open button
+       QToolButton *const open_button = new QToolButton(this);
+
+       widgets::ImportMenu *import_menu = new widgets::ImportMenu(this,
+               session.device_manager().context(),
+               main_window.action_open());
+       connect(import_menu,
+               SIGNAL(format_selected(std::shared_ptr<sigrok::InputFormat>)),
+               &main_window_,
+               SLOT(import_file(std::shared_ptr<sigrok::InputFormat>)));
+
+       open_button->setMenu(import_menu);
+       open_button->setDefaultAction(main_window.action_open());
+       open_button->setPopupMode(QToolButton::MenuButtonPopup);
+
        // Save button
        QToolButton *const save_button = new QToolButton(this);
 
@@ -133,7 +150,7 @@ MainBar::MainBar(Session &session, MainWindow &main_window) :
                QIcon(":/icons/menu.svg")));
 
        // Setup the toolbar
-       addAction(main_window.action_open());
+       addWidget(open_button);
        addWidget(save_button);
        addSeparator();
        addAction(main_window.action_view_zoom_in());
@@ -214,7 +231,7 @@ void MainBar::update_sample_rate_selector()
 {
        Glib::VariantContainerBase gvar_dict;
        GVariant *gvar_list;
-       const uint64_t *elements = NULL;
+       const uint64_t *elements = nullptr;
        gsize num_elements;
        map< const ConfigKey*, std::set<Capability> > keys;