#include <algorithm>
#include <iterator>
+#include <boost/algorithm/string/join.hpp>
+
#include <QAction>
#include <QApplication>
#include <QButtonGroup>
#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"
using std::map;
using std::shared_ptr;
using std::string;
+using std::vector;
+
+using boost::algorithm::join;
using sigrok::Device;
using sigrok::Error;
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();
return action_about_;
}
+#ifdef ENABLE_DECODE
QMenu* MainWindow::menu_decoder_add() const
{
return menu_decoders_add_;
}
+#endif
void MainWindow::run_stop()
{
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;
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();
}