X-Git-Url: https://sigrok.org/gitweb/?a=blobdiff_plain;f=pv%2Fmainwindow.cpp;h=4de010af7a97282a37eeba8c18d177e7317ad838;hb=07f82b73077f28b68f86bb3f0fefd8384fa78aed;hp=317f3c9a701383793d869f5fda7e6a8aee42eea4;hpb=819f4c25391a9c74d3d2f528d462142d5c4aad4d;p=pulseview.git diff --git a/pv/mainwindow.cpp b/pv/mainwindow.cpp index 317f3c9a..4de010af 100644 --- a/pv/mainwindow.cpp +++ b/pv/mainwindow.cpp @@ -41,6 +41,7 @@ #include "devicemanager.h" #include "dialogs/about.h" #include "dialogs/connect.h" +#include "dialogs/storeprogress.h" #include "toolbars/samplingbar.h" #include "view/logicsignal.h" #include "view/view.h" @@ -120,6 +121,14 @@ void MainWindow::setup_ui() action_open->setObjectName(QString::fromUtf8("actionOpen")); menu_file->addAction(action_open); + QAction *const action_save_as = new QAction(this); + action_save_as->setText(QApplication::translate( + "MainWindow", "&Save As...", 0, QApplication::UnicodeUTF8)); + action_save_as->setIcon(QIcon::fromTheme("document-save-as", + QIcon(":/icons/document-save-as.png"))); + action_save_as->setObjectName(QString::fromUtf8("actionSaveAs")); + menu_file->addAction(action_save_as); + menu_file->addSeparator(); QAction *const action_connect = new QAction(this); @@ -317,17 +326,33 @@ void MainWindow::show_session_error( void MainWindow::on_actionOpen_triggered() { - // Enumerate the file formats - QString filters(tr("Sigrok Sessions (*.sr)")); - filters.append(tr(";;All Files (*.*)")); - // Show the dialog const QString file_name = QFileDialog::getOpenFileName( - this, tr("Open File"), "", filters); + this, tr("Open File"), "", tr( + "Sigrok Sessions (*.sr);;" + "All Files (*.*)")); if (!file_name.isEmpty()) load_file(file_name); } +void MainWindow::on_actionSaveAs_triggered() +{ + using pv::dialogs::StoreProgress; + + // Stop any currently running capture session + _session.stop_capture(); + + // Show the dialog + const QString file_name = QFileDialog::getSaveFileName( + this, tr("Save File"), "", tr("Sigrok Sessions (*.sr)")); + + if (file_name.isEmpty()) + return; + + StoreProgress *dlg = new StoreProgress(file_name, _session, this); + dlg->run(); +} + void MainWindow::on_actionConnect_triggered() { // Stop any currently running capture session @@ -399,8 +424,8 @@ void MainWindow::run_stop() { switch(_session.get_capture_state()) { case SigSession::Stopped: - _session.start_capture(_sampling_bar->get_record_length(), - boost::bind(&MainWindow::session_error, this, + _session.start_capture( + boost::bind(&MainWindow::session_error, this, QString("Capture failed"), _1)); break;