X-Git-Url: http://git.code-monkey.de/?a=blobdiff_plain;f=pv%2Fmainwindow.cpp;h=49152a26fe68088565a1ee0068ae235ff597ef8c;hb=e79171dc88959745ce0bf483dc25e86b28f253ed;hp=c30720be182de05ec02e319c093e6221b507affd;hpb=998b89fd858e0dfc09c97cc4e3de718643f0017b;p=pulseview.git diff --git a/pv/mainwindow.cpp b/pv/mainwindow.cpp index c30720b..49152a2 100644 --- a/pv/mainwindow.cpp +++ b/pv/mainwindow.cpp @@ -27,6 +27,8 @@ #include #include +#include + #include #include #include @@ -45,6 +47,7 @@ #include "devicemanager.hpp" #include "dialogs/about.hpp" #include "dialogs/connect.hpp" +#include "dialogs/inputoutputoptions.hpp" #include "dialogs/storeprogress.hpp" #include "toolbars/mainbar.hpp" #include "view/logicsignal.hpp" @@ -65,6 +68,9 @@ using std::list; using std::map; using std::shared_ptr; using std::string; +using std::vector; + +using boost::algorithm::join; using sigrok::Device; using sigrok::Error; @@ -95,8 +101,10 @@ MainWindow::MainWindow(DeviceManager &device_manager, action_view_zoom_fit_(new QAction(this)), action_view_zoom_one_to_one_(new QAction(this)), action_view_show_cursors_(new QAction(this)), - action_about_(new QAction(this)), - menu_decoders_add_(new pv::widgets::DecoderMenu(this, true)) + action_about_(new QAction(this)) +#ifdef ENABLE_DECODE + , menu_decoders_add_(new pv::widgets::DecoderMenu(this, true)) +#endif /* ENABLE_DECODE */ { setup_ui(); restore_ui_settings(); @@ -158,10 +166,12 @@ QAction* MainWindow::action_about() const return action_about_; } +#ifdef ENABLE_DECODE QMenu* MainWindow::menu_decoder_add() const { return menu_decoders_add_; } +#endif /* ENABLE_DECODE */ void MainWindow::run_stop() { @@ -202,10 +212,21 @@ void MainWindow::export_file(shared_ptr format) QSettings settings; const QString dir = settings.value(SettingSaveDirectory).toString(); - // Show the dialog + // Construct the filter + const vector exts = format->extensions(); + QString filter = tr("%1 files ").arg( + QString::fromStdString(format->description())); + + if (exts.empty()) + filter += "(*.*)"; + else + filter += QString("(*.%1);;%2 (*.*)").arg( + QString::fromStdString(join(exts, ", *."))).arg( + tr("All Files")); + + // Show the file dialog const QString file_name = QFileDialog::getSaveFileName( - this, tr("Save File"), dir, tr("%1 files (*.*)").arg( - QString::fromStdString(format->description()))); + this, tr("Save File"), dir, filter); if (file_name.isEmpty()) return; @@ -213,7 +234,19 @@ void MainWindow::export_file(shared_ptr format) const QString abs_path = QFileInfo(file_name).absolutePath(); settings.setValue(SettingSaveDirectory, abs_path); - StoreProgress *dlg = new StoreProgress(file_name, format, + // Show the options dialog + map options; + if (!format->options().empty()) { + dialogs::InputOutputOptions dlg( + tr("Export %1").arg(QString::fromStdString( + format->description())), + format->options(), this); + if (!dlg.exec()) + return; + options = dlg.options(); + } + + StoreProgress *dlg = new StoreProgress(file_name, format, options, session_, this); dlg->run(); }