]> sigrok.org Git - pulseview.git/blobdiff - pv/mainwindow.cpp
Drop unneeded /* ENABLE_DECODE */ comments.
[pulseview.git] / pv / mainwindow.cpp
index c30720be182de05ec02e319c093e6221b507affd..f907f09cce33f118b0c830dbc0ee564f50a76501 100644 (file)
@@ -27,6 +27,8 @@
 #include <algorithm>
 #include <iterator>
 
+#include <boost/algorithm/string/join.hpp>
+
 #include <QAction>
 #include <QApplication>
 #include <QButtonGroup>
@@ -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
 {
        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
 
 void MainWindow::run_stop()
 {
@@ -202,10 +212,21 @@ void MainWindow::export_file(shared_ptr<OutputFormat> format)
        QSettings settings;
        const QString dir = settings.value(SettingSaveDirectory).toString();
 
-       // Show the dialog
+       // Construct the filter
+       const vector<string> 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<OutputFormat> 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<string, Glib::VariantBase> 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();
 }