X-Git-Url: https://sigrok.org/gitweb/?p=pulseview.git;a=blobdiff_plain;f=pv%2Ftoolbars%2Fmainbar.cpp;h=adecf6ac978b7f6f8c652af80b3a0e7c6ebe5a84;hp=67cfa4c64d2dbdad9d221614c5da868d4a1a56b8;hb=0aff286e72c0fb99e2dfeed565a8f5470b2296f0;hpb=fe3a1c218407f6b8a0d7ac7c454593809212ea9e diff --git a/pv/toolbars/mainbar.cpp b/pv/toolbars/mainbar.cpp index 67cfa4c6..adecf6ac 100644 --- a/pv/toolbars/mainbar.cpp +++ b/pv/toolbars/mainbar.cpp @@ -36,6 +36,7 @@ #include #include #include +#include #include @@ -87,6 +88,21 @@ MainBar::MainBar(Session &session, MainWindow &main_window) : 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()), this, SLOT(on_device_selected())); @@ -118,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()); @@ -215,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) { @@ -225,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; @@ -328,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) {