X-Git-Url: https://sigrok.org/gitweb/?p=pulseview.git;a=blobdiff_plain;f=pv%2Fmainwindow.cpp;h=165d3a705db17551fcc1070da6a559c1daea2577;hp=7a7a1b12baddf2ee85acdf65ee2cd64b3db09e86;hb=d528d3d185ca3bb9a40ec7af0299a83c0d2b76e0;hpb=6fd0b63971f179a28c2c558055da760c2c44231a diff --git a/pv/mainwindow.cpp b/pv/mainwindow.cpp index 7a7a1b12..165d3a70 100644 --- a/pv/mainwindow.cpp +++ b/pv/mainwindow.cpp @@ -22,9 +22,6 @@ #include #endif -#include -#include - #include #include @@ -35,6 +32,7 @@ #include #include #include +#include #include #include #include @@ -61,8 +59,8 @@ #include #include -using boost::shared_ptr; using std::list; +using std::shared_ptr; namespace pv { @@ -70,6 +68,9 @@ namespace view { class SelectableItem; } +const char *MainWindow::SettingOpenDirectory = "MainWindow/OpenDirectory"; +const char *MainWindow::SettingSaveDirectory = "MainWindow/SaveDirectory"; + MainWindow::MainWindow(DeviceManager &device_manager, const char *open_file_name, QWidget *parent) : @@ -123,6 +124,7 @@ void MainWindow::setup_ui() "MainWindow", "&Open...", 0, QApplication::UnicodeUTF8)); action_open->setIcon(QIcon::fromTheme("document-open", QIcon(":/icons/document-open.png"))); + action_open->setShortcut(QKeySequence(Qt::CTRL + Qt::Key_O)); action_open->setObjectName(QString::fromUtf8("actionOpen")); menu_file->addAction(action_open); @@ -131,6 +133,7 @@ void MainWindow::setup_ui() "MainWindow", "&Save As...", 0, QApplication::UnicodeUTF8)); action_save_as->setIcon(QIcon::fromTheme("document-save-as", QIcon(":/icons/document-save-as.png"))); + action_save_as->setShortcut(QKeySequence(Qt::CTRL + Qt::Key_S)); action_save_as->setObjectName(QString::fromUtf8("actionSaveAs")); menu_file->addAction(action_save_as); @@ -253,10 +256,12 @@ void MainWindow::setup_ui() // Setup the toolbar QToolBar *const toolbar = new QToolBar(tr("Main Toolbar"), this); toolbar->addAction(action_open); + toolbar->addAction(action_save_as); toolbar->addSeparator(); toolbar->addAction(action_view_zoom_in); toolbar->addAction(action_view_zoom_out); toolbar->addAction(action_view_zoom_fit); + toolbar->addAction(action_view_zoom_one_to_one); addToolBar(toolbar); // Setup the sampling bar @@ -299,11 +304,9 @@ void MainWindow::update_device_list() if (std::find(devices.begin(), devices.end(), selected_device) == devices.end()) devices.push_back(selected_device); + assert(selected_device); - _sampling_bar->set_device_list(devices); - - if (selected_device) - _sampling_bar->set_selected_device(selected_device); + _sampling_bar->set_device_list(devices, selected_device); } void MainWindow::load_file(QString file_name) @@ -323,8 +326,8 @@ void MainWindow::load_file(QString file_name) update_device_list(); - _session.start_capture(boost::bind(&MainWindow::session_error, this, - errorMessage, infoMessage)); + _session.start_capture([&, errorMessage, infoMessage](QString) { + session_error(errorMessage, infoMessage); }); } void MainWindow::show_session_error( @@ -340,13 +343,21 @@ void MainWindow::show_session_error( void MainWindow::on_actionOpen_triggered() { + QSettings settings; + const QString dir = settings.value(SettingOpenDirectory).toString(); + // Show the dialog const QString file_name = QFileDialog::getOpenFileName( - this, tr("Open File"), "", tr( + this, tr("Open File"), dir, tr( "Sigrok Sessions (*.sr);;" "All Files (*.*)")); - if (!file_name.isEmpty()) + + if (!file_name.isEmpty()) { load_file(file_name); + + const QString abs_path = QFileInfo(file_name).absolutePath(); + settings.setValue(SettingOpenDirectory, abs_path); + } } void MainWindow::on_actionSaveAs_triggered() @@ -356,13 +367,19 @@ void MainWindow::on_actionSaveAs_triggered() // Stop any currently running capture session _session.stop_capture(); + QSettings settings; + const QString dir = settings.value(SettingSaveDirectory).toString(); + // Show the dialog const QString file_name = QFileDialog::getSaveFileName( - this, tr("Save File"), "", tr("Sigrok Sessions (*.sr)")); + this, tr("Save File"), dir, tr("Sigrok Sessions (*.sr)")); if (file_name.isEmpty()) return; + const QString abs_path = QFileInfo(file_name).absolutePath(); + settings.setValue(SettingSaveDirectory, abs_path); + StoreProgress *dlg = new StoreProgress(file_name, _session, this); dlg->run(); } @@ -438,9 +455,8 @@ void MainWindow::run_stop() { switch(_session.get_capture_state()) { case SigSession::Stopped: - _session.start_capture( - boost::bind(&MainWindow::session_error, this, - QString("Capture failed"), _1)); + _session.start_capture([&](QString message) { + session_error("Capture failed", message); }); break; case SigSession::AwaitingTrigger: