X-Git-Url: http://git.code-monkey.de/?a=blobdiff_plain;f=pv%2Ftoolbars%2Fmainbar.cpp;h=8c2be4686b29075711e1c1a5926855518f8aed8f;hb=ed43ef2e59baab85aa0381b08db101b7800e5c64;hp=68f36ba367a7720eabd367d20e68f2bcfa2297c5;hpb=da30ecb7e72bd2547e524258efa5ec642988b70b;p=pulseview.git diff --git a/pv/toolbars/mainbar.cpp b/pv/toolbars/mainbar.cpp index 68f36ba..8c2be46 100644 --- a/pv/toolbars/mainbar.cpp +++ b/pv/toolbars/mainbar.cpp @@ -38,6 +38,7 @@ #include #include #include +#include #include @@ -54,6 +55,7 @@ using std::vector; using sigrok::Capability; using sigrok::ConfigKey; using sigrok::Error; +using sigrok::InputFormat; namespace pv { namespace toolbars { @@ -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)), + &main_window_, + SLOT(import_file(std::shared_ptr))); + + 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()); @@ -216,6 +233,7 @@ void MainBar::update_sample_rate_selector() GVariant *gvar_list; const uint64_t *elements = NULL; gsize num_elements; + map< const ConfigKey*, std::set > keys; if (updating_sample_rate_) return; @@ -229,7 +247,11 @@ void MainBar::update_sample_rate_selector() updating_sample_rate_ = true; const shared_ptr sr_dev = device->device(); - const auto keys = sr_dev->config_keys(ConfigKey::DEVICE_OPTIONS); + + try { + keys = sr_dev->config_keys(ConfigKey::DEVICE_OPTIONS); + } catch (Error) {} + const auto iter = keys.find(ConfigKey::SAMPLERATE); if (iter != keys.end() && (*iter).second.find(sigrok::LIST) != (*iter).second.end()) {