X-Git-Url: https://sigrok.org/gitweb/?p=pulseview.git;a=blobdiff_plain;f=pv%2Fmainwindow.cpp;h=a94871fa4ca2c6927f5dceb396957a33f6936e26;hp=2c48dfc618841e2fab74d33f42292c786587a42b;hb=362eea9688123140b0a8bce10e8e0575243ed5e4;hpb=51e77110d4316fd0106f8306f5e1f0523c5bf7d7 diff --git a/pv/mainwindow.cpp b/pv/mainwindow.cpp index 2c48dfc6..a94871fa 100644 --- a/pv/mainwindow.cpp +++ b/pv/mainwindow.cpp @@ -32,10 +32,10 @@ extern "C" { #include #include -#include "about.h" #include "mainwindow.h" #include "samplingbar.h" -#include "pv/view/view.h" +#include "dialogs/about.h" +#include "view/view.h" extern "C" { /* __STDC_FORMAT_MACROS is required for PRIu64 and friends (in C++). */ @@ -67,20 +67,38 @@ void MainWindow::setup_ui() QSize(), QIcon::Normal, QIcon::Off); setWindowIcon(icon); + // Setup the central widget + _central_widget = new QWidget(this); + _vertical_layout = new QVBoxLayout(_central_widget); + _vertical_layout->setSpacing(6); + _vertical_layout->setContentsMargins(0, 0, 0, 0); + setCentralWidget(_central_widget); + + _view = new pv::view::View(_session, this); + _vertical_layout->addWidget(_view); + // Setup the UI actions _action_about = new QAction(this); _action_about->setObjectName(QString::fromUtf8("actionAbout")); _action_view_zoom_in = new QAction(this); - _action_view_zoom_in->setIcon(QIcon::fromTheme("zoom-in")); + _action_view_zoom_in->setIcon(QIcon::fromTheme("zoom-in", + QIcon(":/icons/zoom-in.png"))); _action_view_zoom_in->setObjectName(QString::fromUtf8("actionViewZoomIn")); _action_view_zoom_out = new QAction(this); - _action_view_zoom_out->setIcon(QIcon::fromTheme("zoom-out")); + _action_view_zoom_out->setIcon(QIcon::fromTheme("zoom-out", + QIcon(":/icons/zoom-out.png"))); _action_view_zoom_out->setObjectName(QString::fromUtf8("actionViewZoomOut")); + _action_view_show_cursors = new QAction(this); + _action_view_show_cursors->setCheckable(true); + _action_view_show_cursors->setChecked(_view->cursors_shown()); + _action_view_show_cursors->setObjectName(QString::fromUtf8("actionViewShowCursors")); + _action_open = new QAction(this); - _action_open->setIcon(QIcon::fromTheme("document-open")); + _action_open->setIcon(QIcon::fromTheme("document-open", + QIcon(":/icons/document-open.png"))); _action_open->setObjectName(QString::fromUtf8("actionOpen")); // Setup the menu bar @@ -93,6 +111,8 @@ void MainWindow::setup_ui() _menu_view = new QMenu(_menu_bar); _menu_view->addAction(_action_view_zoom_in); _menu_view->addAction(_action_view_zoom_out); + _menu_view->addSeparator(); + _menu_view->addAction(_action_view_show_cursors); _menu_help = new QMenu(_menu_bar); _menu_help->addAction(_action_about); @@ -117,13 +137,6 @@ void MainWindow::setup_ui() SLOT(run_stop())); addToolBar(_sampling_bar); - // Setup the central widget - _central_widget = new QWidget(this); - _vertical_layout = new QVBoxLayout(_central_widget); - _vertical_layout->setSpacing(6); - _vertical_layout->setContentsMargins(0, 0, 0, 0); - setCentralWidget(_central_widget); - // Setup the status bar _status_bar = new QStatusBar(this); setStatusBar(_status_bar); @@ -134,14 +147,17 @@ void MainWindow::setup_ui() _action_open->setText(QApplication::translate("MainWindow", "&Open...", 0, QApplication::UnicodeUTF8)); _action_view_zoom_in->setText(QApplication::translate("MainWindow", "Zoom &In", 0, QApplication::UnicodeUTF8)); _action_view_zoom_out->setText(QApplication::translate("MainWindow", "Zoom &Out", 0, QApplication::UnicodeUTF8)); + _action_view_show_cursors->setText(QApplication::translate("MainWindow", "Show &Cursors", 0, QApplication::UnicodeUTF8)); _action_about->setText(QApplication::translate("MainWindow", "&About...", 0, QApplication::UnicodeUTF8)); _menu_file->setTitle(QApplication::translate("MainWindow", "&File", 0, QApplication::UnicodeUTF8)); _menu_view->setTitle(QApplication::translate("MainWindow", "&View", 0, QApplication::UnicodeUTF8)); _menu_help->setTitle(QApplication::translate("MainWindow", "&Help", 0, QApplication::UnicodeUTF8)); - _view = new pv::view::View(_session, this); - _vertical_layout->addWidget(_view); + // Setup _session events + connect(&_session, SIGNAL(capture_state_changed(int)), this, + SLOT(capture_state_changed(int))); + } void MainWindow::on_actionOpen_triggered() @@ -162,18 +178,37 @@ void MainWindow::on_actionViewZoomOut_triggered() _view->zoom(-1); } +void MainWindow::on_actionViewShowCursors_triggered() +{ + assert(_view); + _view->show_cursors(_action_view_show_cursors->isChecked()); +} + void MainWindow::on_actionAbout_triggered() { - About dlg(this); + dialogs::About dlg(this); dlg.exec(); } void MainWindow::run_stop() { - _session.start_capture( - _sampling_bar->get_selected_device(), - _sampling_bar->get_record_length(), - _sampling_bar->get_sample_rate()); + switch(_session.get_capture_state()) { + case SigSession::Stopped: + _session.start_capture( + _sampling_bar->get_selected_device(), + _sampling_bar->get_record_length(), + _sampling_bar->get_sample_rate()); + break; + + case SigSession::Running: + _session.stop_capture(); + break; + } +} + +void MainWindow::capture_state_changed(int state) +{ + _sampling_bar->set_sampling(state != SigSession::Stopped); } } // namespace pv