MCPcopy Create free account
hub / github.com/Serial-Studio/Serial-Studio / openTransformEditorFor

Method openTransformEditorFor

app/src/DataModel/ProjectEditor.cpp:1126–1186  ·  view source on GitHub ↗

* @brief Opens the transform editor for an explicit (groupId, datasetId) -- no selection change. */

Source from the content-addressed store, hash-verified

1124 * @brief Opens the transform editor for an explicit (groupId, datasetId) -- no selection change.
1125 */
1126void DataModel::ProjectEditor::openTransformEditorFor(int groupId, int datasetId)
1127{
1128 auto& pm = DataModel::ProjectModel::instance();
1129 const auto& groups = pm.groups();
1130
1131 if (groupId < 0 || static_cast<size_t>(groupId) >= groups.size())
1132 return;
1133
1134 if (datasetId < 0 || static_cast<size_t>(datasetId) >= groups[groupId].datasets.size())
1135 return;
1136
1137 const auto& dataset = groups[groupId].datasets[datasetId];
1138
1139 int lang = dataset.transformLanguage;
1140 if (lang < 0 || dataset.transformCode.isEmpty()) {
1141 for (const auto& src : pm.sources())
1142 if (src.sourceId == dataset.sourceId) {
1143 lang = src.frameParserLanguage;
1144 break;
1145 }
1146 }
1147
1148 if (!m_transformEditor) {
1149 m_transformEditor = new DatasetTransformEditor(nullptr);
1150
1151 connect(m_transformEditor,
1152 &DatasetTransformEditor::transformApplied,
1153 this,
1154 [this](const QString& code, int lang, int gId, int dId) {
1155 auto& pm = DataModel::ProjectModel::instance();
1156 auto& groups = pm.groups();
1157 if (gId < 0 || static_cast<size_t>(gId) >= groups.size())
1158 return;
1159
1160 if (dId < 0 || static_cast<size_t>(dId) >= groups[gId].datasets.size())
1161 return;
1162
1163 auto dataset = groups[gId].datasets[dId];
1164 dataset.transformCode = code;
1165 dataset.transformLanguage = code.isEmpty() ? -1 : lang;
1166 pm.updateDataset(gId, dId, dataset, false);
1167
1168 if (m_selectedDataset.groupId == gId && m_selectedDataset.datasetId == dId) {
1169 m_selectedDataset.transformCode = code;
1170 m_selectedDataset.transformLanguage = dataset.transformLanguage;
1171 }
1172
1173 for (auto it = m_datasetItems.begin(); it != m_datasetItems.end(); ++it) {
1174 if (it.value().groupId == gId && it.value().datasetId == dId) {
1175 it.value().transformCode = code;
1176 it.value().transformLanguage = dataset.transformLanguage;
1177 break;
1178 }
1179 }
1180
1181 DataModel::FrameBuilder::instance().syncFromProjectModel();
1182 });
1183 }

Callers

nothing calls this directly

Calls 7

isEmptyMethod · 0.80
updateDatasetMethod · 0.80
beginMethod · 0.80
syncFromProjectModelMethod · 0.80
sizeMethod · 0.45
valueMethod · 0.45
displayDialogMethod · 0.45

Tested by

no test coverage detected