]> sigrok.org Git - pulseview.git/blobdiff - pv/mainwindow.cpp
Session: Don't process packets without sample data
[pulseview.git] / pv / mainwindow.cpp
index 91e38729167d98135b8d9755ecdc315042820217..19caab32e2d8d63265758eee8b0bc0b28d2168ed 100644 (file)
@@ -30,6 +30,7 @@
 #include <QAction>
 #include <QApplication>
 #include <QCloseEvent>
+#include <QDebug>
 #include <QDockWidget>
 #include <QHBoxLayout>
 #include <QMessageBox>
 
 #include <libsigrokcxx/libsigrokcxx.hpp>
 
-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>("util::Timestamp");
        qRegisterMetaType<uint64_t>("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,6 +86,8 @@ MainWindow::MainWindow(DeviceManager &device_manager, QWidget *parent) :
 
 MainWindow::~MainWindow()
 {
+       GlobalSettings::remove_change_handler(this);
+
        while (!sessions_.empty())
                remove_session(sessions_.front());
 }
@@ -400,6 +391,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"));
@@ -560,6 +563,8 @@ bool MainWindow::restoreState(const QByteArray &state, int version)
 
 void MainWindow::session_error(const QString text, const QString info_text)
 {
+       qDebug().noquote() << "Notifying user of session error:" << info_text;
+
        QMetaObject::invokeMethod(this, "show_session_error",
                Qt::QueuedConnection, Q_ARG(QString, text),
                Q_ARG(QString, info_text));