From 0c79931741f5ca4d41a451f32582801943bd3b6a Mon Sep 17 00:00:00 2001 From: Yunus Bicer Date: Wed, 19 Feb 2025 16:10:35 -0500 Subject: [PATCH 1/5] saveConnectionSettings bug fix --- src/main_window.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/main_window.cpp b/src/main_window.cpp index 293db33d..d4fccec2 100644 --- a/src/main_window.cpp +++ b/src/main_window.cpp @@ -836,6 +836,8 @@ void MainWindow::saveSettings() this->saveDAQSettings(workspaceprefs); this->saveWidgetSettings(workspaceprefs); + + this->saveConnectionSettings(workspaceprefs); userprefs.endGroup(); // Workspaces } From 0fc8f494928b6b607b7d956daea3bebafd7e462c Mon Sep 17 00:00:00 2001 From: Yunus Bicer Date: Fri, 21 Feb 2025 13:42:57 -0500 Subject: [PATCH 2/5] block_cache pointer bug fix, widget ID bug fix --- src/main_window.cpp | 9 ++++----- src/main_window.hpp | 6 +++--- 2 files changed, 7 insertions(+), 8 deletions(-) diff --git a/src/main_window.cpp b/src/main_window.cpp index d4fccec2..919ba188 100644 --- a/src/main_window.cpp +++ b/src/main_window.cpp @@ -534,7 +534,7 @@ void MainWindow::saveDAQSettings(QSettings& userprefs) } void MainWindow::loadDAQSettings( - QSettings& userprefs, std::unordered_map block_cache) + QSettings& userprefs, std::unordered_map& block_cache) { userprefs.beginGroup("DAQs"); Event::Object get_devices_event(Event::Type::DAQ_DEVICE_QUERY_EVENT); @@ -664,9 +664,8 @@ void MainWindow::saveWidgetSettings(QSettings& userprefs) this->event_manager->postEvent(&loaded_plugins_query); const auto plugin_list = std::any_cast>( loaded_plugins_query.getParam("plugins")); - int widget_count = 0; for (const auto& entry : plugin_list) { - userprefs.beginGroup(QString::number(widget_count++)); + userprefs.beginGroup(QString::number(entry->getID())); userprefs.setValue("library", QString::fromStdString(entry->getLibrary())); userprefs.beginGroup("standardParams"); entry->saveParameterSettings(userprefs); @@ -680,7 +679,7 @@ void MainWindow::saveWidgetSettings(QSettings& userprefs) } void MainWindow::loadWidgetSettings( - QSettings& userprefs, std::unordered_map block_cache) + QSettings& userprefs, std::unordered_map& block_cache) { userprefs.beginGroup("Widgets"); QString plugin_name; @@ -734,7 +733,7 @@ void MainWindow::saveConnectionSettings(QSettings& userprefs) } void MainWindow::loadConnectionSettings( - QSettings& userprefs, std::unordered_map block_cache) + QSettings& userprefs, std::unordered_map& block_cache) { ///////////////////// Load connections ///////////////////////// RT::block_connection_t connection; diff --git a/src/main_window.hpp b/src/main_window.hpp index fc3fff5f..10f1ae69 100644 --- a/src/main_window.hpp +++ b/src/main_window.hpp @@ -178,13 +178,13 @@ private slots: inline void loadPeriodSettings(QSettings& userprefs); inline void saveDAQSettings(QSettings& userprefs); inline void loadDAQSettings( - QSettings& userprefs, std::unordered_map block_cache); + QSettings& userprefs, std::unordered_map& block_cache); inline void saveWidgetSettings(QSettings& userprefs); inline void loadWidgetSettings( - QSettings& userprefs, std::unordered_map block_cache); + QSettings& userprefs, std::unordered_map& block_cache); inline void saveConnectionSettings(QSettings& userprefs); inline void loadConnectionSettings( - QSettings& userprefs, std::unordered_map block_cache); + QSettings& userprefs, std::unordered_map& block_cache); Event::Manager* event_manager; QMdiArea* mdiArea = nullptr; QList subWindows; From 2834a55e0548279bd98aeca1f1dbdf363a2007b2 Mon Sep 17 00:00:00 2001 From: Yunus Bicer Date: Fri, 21 Feb 2025 16:06:15 -0500 Subject: [PATCH 3/5] skip 0 index for widgets save --- src/main_window.cpp | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/main_window.cpp b/src/main_window.cpp index 919ba188..ae0abe38 100644 --- a/src/main_window.cpp +++ b/src/main_window.cpp @@ -665,6 +665,14 @@ void MainWindow::saveWidgetSettings(QSettings& userprefs) const auto plugin_list = std::any_cast>( loaded_plugins_query.getParam("plugins")); for (const auto& entry : plugin_list) { + // entry->getID, 0 index occupied by a System Plugin + // block_cache[0] 0 index occupied by the Device + // connections from 0(device) to any plugin will crash. + // So skip the 0 index in widgets, don't save System Plugins + if (entry->getID() == 0) + { + continue; + } userprefs.beginGroup(QString::number(entry->getID())); userprefs.setValue("library", QString::fromStdString(entry->getLibrary())); userprefs.beginGroup("standardParams"); From ba292c3ef6628414584e4f683d375e9cce6ea367 Mon Sep 17 00:00:00 2001 From: Yunus Bicer Date: Mon, 24 Feb 2025 11:30:52 -0500 Subject: [PATCH 4/5] match order of << operator in QDataStream --- src/main_window.cpp | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/main_window.cpp b/src/main_window.cpp index ae0abe38..e0cea4e7 100644 --- a/src/main_window.cpp +++ b/src/main_window.cpp @@ -80,11 +80,11 @@ QDataStream& operator<<(QDataStream& out, const plugin_connection& conn) QDataStream& operator>>(QDataStream& in, plugin_connection& conn) { - in >> conn.dest_port; - in >> conn.dest_id; - in >> conn.src_port; + in >> conn.src_id; // Match order of << operator in >> conn.src_direction; - in >> conn.src_id; + in >> conn.src_port; + in >> conn.dest_id; + in >> conn.dest_port; return in; } @@ -725,7 +725,7 @@ void MainWindow::saveConnectionSettings(QSettings& userprefs) // themselves. Namely connections related to probes from oscilloscope and // recorders from the recorder plugin if (conn.dest->getName().find("Probe") != std::string::npos - || conn.dest->getName().find("Recording") != std::string::npos) + || conn.dest->getName().find("Recording") != std::string::npos) { continue; } @@ -760,7 +760,7 @@ void MainWindow::loadConnectionSettings( } connection.src = block_cache[id_connection.src_id]; connection.src_port_type = - static_cast(id_connection.src_direction); + static_cast(id_connection.src_direction); connection.src_port = id_connection.src_port; connection.dest = block_cache[id_connection.dest_id]; connection.dest_port = id_connection.dest_port; From 51be58111f25362436e303a512bc2fced59a21ee Mon Sep 17 00:00:00 2001 From: Yunus Bicer Date: Mon, 24 Feb 2025 11:39:28 -0500 Subject: [PATCH 5/5] formatting --- src/main_window.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main_window.cpp b/src/main_window.cpp index e0cea4e7..b518ab52 100644 --- a/src/main_window.cpp +++ b/src/main_window.cpp @@ -725,7 +725,7 @@ void MainWindow::saveConnectionSettings(QSettings& userprefs) // themselves. Namely connections related to probes from oscilloscope and // recorders from the recorder plugin if (conn.dest->getName().find("Probe") != std::string::npos - || conn.dest->getName().find("Recording") != std::string::npos) + || conn.dest->getName().find("Recording") != std::string::npos) { continue; } @@ -760,7 +760,7 @@ void MainWindow::loadConnectionSettings( } connection.src = block_cache[id_connection.src_id]; connection.src_port_type = - static_cast(id_connection.src_direction); + static_cast(id_connection.src_direction); connection.src_port = id_connection.src_port; connection.dest = block_cache[id_connection.dest_id]; connection.dest_port = id_connection.dest_port;