X-Git-Url: https://sigrok.org/gitweb/?p=pulseview.git;a=blobdiff_plain;f=pv%2Fmainwindow.cpp;h=c08576caff7a7bb18beaf5af10d32c81df0322a9;hp=91e38729167d98135b8d9755ecdc315042820217;hb=5e685656d6686eb66a39450d1b324f6382fc60c5;hpb=7ea2a4ff0765fdad34b84e4b4631d6f3f5588714 diff --git a/pv/mainwindow.cpp b/pv/mainwindow.cpp index 91e38729..c08576ca 100644 --- a/pv/mainwindow.cpp +++ b/pv/mainwindow.cpp @@ -30,6 +30,7 @@ #include #include #include +#include #include #include #include @@ -50,10 +51,8 @@ #include -using std::bind; using std::dynamic_pointer_cast; using std::make_shared; -using std::placeholders::_1; using std::shared_ptr; using std::string; @@ -79,17 +78,7 @@ MainWindow::MainWindow(DeviceManager &device_manager, QWidget *parent) : qRegisterMetaType("util::Timestamp"); qRegisterMetaType("uint64_t"); - GlobalSettings::register_change_handler(GlobalSettings::Key_View_ColouredBG, - bind(&MainWindow::on_settingViewColouredBg_changed, this, _1)); - - GlobalSettings::register_change_handler(GlobalSettings::Key_View_ShowSamplingPoints, - bind(&MainWindow::on_settingViewShowSamplingPoints_changed, this, _1)); - - GlobalSettings::register_change_handler(GlobalSettings::Key_View_ShowAnalogMinorGrid, - bind(&MainWindow::on_settingViewShowAnalogMinorGrid_changed, this, _1)); - - GlobalSettings settings; - settings.set_defaults_where_needed(); + GlobalSettings::add_change_handler(this); setup_ui(); restore_ui_settings(); @@ -97,10 +86,24 @@ MainWindow::MainWindow(DeviceManager &device_manager, QWidget *parent) : MainWindow::~MainWindow() { + GlobalSettings::remove_change_handler(this); + while (!sessions_.empty()) remove_session(sessions_.front()); } +void MainWindow::show_session_error(const QString text, const QString info_text) +{ + qDebug().noquote() << "Notifying user of session error:" << info_text; + + QMessageBox msg; + msg.setText(text); + msg.setInformativeText(info_text); + msg.setStandardButtons(QMessageBox::Ok); + msg.setIcon(QMessageBox::Warning); + msg.exec(); +} + shared_ptr MainWindow::get_active_view() const { // If there's only one view, use it... @@ -400,6 +403,18 @@ void MainWindow::restore_sessions() } } +void MainWindow::on_setting_changed(const QString &key, const QVariant &value) +{ + if (key == GlobalSettings::Key_View_ColouredBG) + on_settingViewColouredBg_changed(value); + + if (key == GlobalSettings::Key_View_ShowSamplingPoints) + on_settingViewShowSamplingPoints_changed(value); + + if (key == GlobalSettings::Key_View_ShowAnalogMinorGrid) + on_settingViewShowAnalogMinorGrid_changed(value); +} + void MainWindow::setup_ui() { setObjectName(QString::fromUtf8("MainWindow")); @@ -558,23 +573,6 @@ bool MainWindow::restoreState(const QByteArray &state, int version) return false; } -void MainWindow::session_error(const QString text, const QString info_text) -{ - QMetaObject::invokeMethod(this, "show_session_error", - Qt::QueuedConnection, Q_ARG(QString, text), - Q_ARG(QString, info_text)); -} - -void MainWindow::show_session_error(const QString text, const QString info_text) -{ - QMessageBox msg(this); - msg.setText(text); - msg.setInformativeText(info_text); - msg.setStandardButtons(QMessageBox::Ok); - msg.setIcon(QMessageBox::Warning); - msg.exec(); -} - void MainWindow::on_add_view(const QString &title, views::ViewType type, Session *session) { @@ -636,7 +634,7 @@ void MainWindow::on_run_stop_clicked() switch (session->get_capture_state()) { case Session::Stopped: session->start_capture([&](QString message) { - session_error("Capture failed", message); }); + show_session_error("Capture failed", message); }); break; case Session::AwaitingTrigger: case Session::Running: