X-Git-Url: http://sigrok.org/gitweb/?a=blobdiff_plain;f=pv%2Ftoolbars%2Fmainbar.cpp;h=adecf6ac978b7f6f8c652af80b3a0e7c6ebe5a84;hb=0aff286e72c0fb99e2dfeed565a8f5470b2296f0;hp=50a90643d71f406919172827350318a8517b5056;hpb=079d39ea735015597a65390e4c5cacc7d272f78c;p=pulseview.git diff --git a/pv/toolbars/mainbar.cpp b/pv/toolbars/mainbar.cpp index 50a90643..adecf6ac 100644 --- a/pv/toolbars/mainbar.cpp +++ b/pv/toolbars/mainbar.cpp @@ -36,8 +36,9 @@ #include #include #include +#include -#include +#include using std::back_inserter; using std::copy; @@ -85,6 +86,22 @@ MainBar::MainBar(Session &session, MainWindow &main_window) : setMovable(false); setFloatable(false); + setContextMenuPolicy(Qt::PreventContextMenu); + + // Save button + QToolButton *const save_button = new QToolButton(this); + + widgets::ExportMenu *export_menu = new widgets::ExportMenu(this, + session.device_manager().context(), + main_window.action_save_as()); + connect(export_menu, + SIGNAL(format_selected(std::shared_ptr)), + &main_window_, + SLOT(export_file(std::shared_ptr))); + + save_button->setMenu(export_menu); + save_button->setDefaultAction(main_window.action_save_as()); + save_button->setPopupMode(QToolButton::MenuButtonPopup); // Device selector menu connect(&device_selector_, SIGNAL(device_selected()), @@ -117,7 +134,7 @@ MainBar::MainBar(Session &session, MainWindow &main_window) : // Setup the toolbar addAction(main_window.action_open()); - addAction(main_window.action_save_as()); + addWidget(save_button); addSeparator(); addAction(main_window.action_view_zoom_in()); addAction(main_window.action_view_zoom_out()); @@ -214,8 +231,6 @@ void MainBar::update_sample_rate_selector() const auto iter = keys.find(ConfigKey::SAMPLERATE); if (iter != keys.end() && (*iter).second.find(sigrok::LIST) != (*iter).second.end()) { - const auto keys = device->config_keys( - ConfigKey::DEVICE_OPTIONS); try { gvar_dict = device->config_list(ConfigKey::SAMPLERATE); } catch(const sigrok::Error &e) { @@ -224,7 +239,7 @@ void MainBar::update_sample_rate_selector() } } - if (!gvar_dict) { + if (!gvar_dict.gobj()) { sample_rate_.show_none(); updating_sample_rate_ = false; return; @@ -327,7 +342,7 @@ void MainBar::update_sample_count_selector() try { auto gvar = device->config_list(ConfigKey::LIMIT_SAMPLES); - if (gvar) + if (gvar.gobj()) g_variant_get(gvar.gobj(), "(tt)", &min_sample_count, &max_sample_count); } catch(const sigrok::Error &e) {