]> sigrok.org Git - pulseview.git/blobdiff - pv/toolbars/mainbar.cpp
MainBar: Added add-decoder button
[pulseview.git] / pv / toolbars / mainbar.cpp
index 7a387b4b411d5ce6bc35baf78e9e14630046bcd6..82b5fab04dc097cdaebfcb2f62dc19ff34164a1b 100644 (file)
@@ -25,6 +25,7 @@
 #include <QAction>
 #include <QDebug>
 #include <QHelpEvent>
+#include <QMenu>
 #include <QToolTip>
 
 #include "mainbar.hpp"
@@ -73,10 +74,51 @@ MainBar::MainBar(Session &session, MainWindow &main_window) :
        icon_red_(":/icons/status-red.svg"),
        icon_green_(":/icons/status-green.svg"),
        icon_grey_(":/icons/status-grey.svg"),
-       run_stop_button_(this)
+       run_stop_button_(this),
+       menu_button_(this)
 {
        setObjectName(QString::fromUtf8("MainBar"));
 
+       setMovable(false);
+       setFloatable(false);
+
+       // Setup the decoder button
+#ifdef ENABLE_DECODE
+       QToolButton *add_decoder_button = new QToolButton(this);
+       add_decoder_button->setIcon(QIcon::fromTheme("add-decoder",
+               QIcon(":/icons/add-decoder.svg")));
+       add_decoder_button->setPopupMode(QToolButton::InstantPopup);
+       add_decoder_button->setMenu(main_window_.menu_decoder_add());
+#endif
+
+       // Setup the menu
+       QMenu *const menu = new QMenu(this);
+
+       QMenu *const menu_help = new QMenu;
+       menu_help->setTitle(tr("&Help"));
+       menu_help->addAction(main_window.action_about());
+
+       menu->addAction(menu_help->menuAction());
+       menu->addSeparator();
+       menu->addAction(main_window.action_quit());
+
+       menu_button_.setMenu(menu);
+       menu_button_.setPopupMode(QToolButton::InstantPopup);
+       menu_button_.setIcon(QIcon::fromTheme("menu",
+               QIcon(":/icons/menu.svg")));
+
+       // Setup the toolbar
+       addAction(main_window.action_open());
+       addAction(main_window.action_save_as());
+       addSeparator();
+       addAction(main_window.action_view_zoom_in());
+       addAction(main_window.action_view_zoom_out());
+       addAction(main_window.action_view_zoom_fit());
+       addAction(main_window.action_view_zoom_one_to_one());
+       addSeparator();
+       addAction(main_window.action_view_show_cursors());
+       addSeparator();
+
        connect(&run_stop_button_, SIGNAL(clicked()),
                this, SLOT(on_run_stop()));
        connect(&device_selector_, SIGNAL(currentIndexChanged (int)),
@@ -103,8 +145,17 @@ MainBar::MainBar(Session &session, MainWindow &main_window) :
        addWidget(&channels_button_);
        addWidget(&sample_count_);
        addWidget(&sample_rate_);
-
        addWidget(&run_stop_button_);
+#ifdef ENABLE_DECODE
+       addSeparator();
+       addWidget(add_decoder_button);
+#endif
+
+       QWidget *const spacer = new QWidget();
+       spacer->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);
+       addWidget(spacer);
+
+       addWidget(&menu_button_);
 
        sample_count_.installEventFilter(this);
        sample_rate_.installEventFilter(this);