* @brief Replaces the dataset at @p groupId/@p datasetId. */
| 3259 | * @brief Replaces the dataset at @p groupId/@p datasetId. |
| 3260 | */ |
| 3261 | void DataModel::ProjectModel::updateDataset(const int groupId, |
| 3262 | const int datasetId, |
| 3263 | const DataModel::Dataset& dataset, |
| 3264 | const bool rebuildTree) |
| 3265 | { |
| 3266 | if (groupId < 0 || static_cast<size_t>(groupId) >= m_groups.size()) |
| 3267 | return; |
| 3268 | |
| 3269 | if (datasetId < 0 || static_cast<size_t>(datasetId) >= m_groups[groupId].datasets.size()) |
| 3270 | return; |
| 3271 | |
| 3272 | DataModel::Dataset resolved = dataset; |
| 3273 | if (resolved.transformLanguage < 0 && !resolved.transformCode.isEmpty()) { |
| 3274 | for (const auto& src : m_sources) |
| 3275 | if (src.sourceId == resolved.sourceId) { |
| 3276 | resolved.transformLanguage = src.frameParserLanguage == SerialStudio::Native |
| 3277 | ? static_cast<int>(SerialStudio::Lua) |
| 3278 | : src.frameParserLanguage; |
| 3279 | break; |
| 3280 | } |
| 3281 | |
| 3282 | if (resolved.transformLanguage < 0) |
| 3283 | resolved.transformLanguage = 0; |
| 3284 | } |
| 3285 | |
| 3286 | m_groups[groupId].datasets[datasetId] = resolved; |
| 3287 | m_selectedDataset = resolved; |
| 3288 | |
| 3289 | if (rebuildTree) |
| 3290 | Q_EMIT groupsChanged(); |
| 3291 | |
| 3292 | m_runtimeDirty = true; |
| 3293 | setModified(true); |
| 3294 | scheduleAutoSave(); |
| 3295 | } |
| 3296 | |
| 3297 | /** |
| 3298 | * @brief Enables or disables a group; a disabled group is excluded from frame building while the |
no test coverage detected