MCPcopy Create free account
hub / github.com/MITK/MITK / CheckDataStorage

Method CheckDataStorage

Modules/SegmentationUI/src/QmitkSegmentationTaskListWidget.cpp:269–340  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

267}
268
269void QmitkSegmentationTaskListWidget::CheckDataStorage(const mitk::DataNode* removedNode)
270{
271 QString warning;
272
273 if (nullptr == m_DataStorage)
274 {
275 warning = QStringLiteral(
276 "<h3>Developer warning</h3><p>Call <code>SetDataStorage()</code> to fully initialize "
277 "this instance of <code>QmitkSegmentationTaskListWidget</code>.</p>");
278 }
279 else
280 {
281 auto isTaskList = mitk::TNodePredicateDataType<mitk::SegmentationTaskList>::New();
282 auto taskListNodes = GetSubset(m_DataStorage, isTaskList, removedNode);
283
284 if (taskListNodes->empty())
285 {
286 warning = QStringLiteral(
287 "<h3>No segmentation task list found</h3><p>Load a segmentation task list to use "
288 "this plugin.</p>");
289 }
290 else if (taskListNodes->Size() > 1)
291 {
292 warning = QStringLiteral(
293 "<h3>More than one segmentation task list found</h3><p>Unload everything but a "
294 "single segmentation task list to use this plugin.</p>");
295 }
296 else
297 {
298 const auto* taskListNode = (*taskListNodes)[0].GetPointer();
299
300 auto isTaskListNode = mitk::NodePredicateFunction::New([taskListNode](const mitk::DataNode* node) {
301 return node == taskListNode;
302 });
303
304 auto isChildOfTaskListNode = mitk::NodePredicateFunction::New([this, isTaskListNode](const mitk::DataNode* node) {
305 return !m_DataStorage->GetSources(node, isTaskListNode, false)->empty();
306 });
307
308 auto isHelperObject = mitk::NodePredicateProperty::New("helper object");
309 auto isUndesiredNode = mitk::NodePredicateNot::New(mitk::NodePredicateOr::New(
310 isTaskListNode,
311 isChildOfTaskListNode,
312 isHelperObject));
313
314 auto unreleatedData = GetSubset(m_DataStorage, isUndesiredNode, removedNode);
315
316 if (!unreleatedData->empty())
317 {
318 warning = QStringLiteral(
319 "<h3>Unrelated data found</h3><p>Unload everything but a single segmentation task "
320 "list to use this plugin.</p><p>Unreleated data:<ul>");
321
322 for (auto node : *unreleatedData)
323 {
324 warning += "<li>" + node->GetName();
325
326 if (auto data = node->GetData(); data != nullptr)

Callers 7

SetDataStorageMethod · 0.95
UnloadTasksMethod · 0.95
NodeAddedMethod · 0.80
NodeRemovedMethod · 0.80
NodeAddedMethod · 0.80
NodeRemovedMethod · 0.80

Calls 11

GetSubsetFunction · 0.85
GetPointerMethod · 0.80
GetSourcesMethod · 0.80
NewFunction · 0.50
QStringClass · 0.50
emptyMethod · 0.45
SizeMethod · 0.45
GetNameMethod · 0.45
GetDataMethod · 0.45
GetNameOfClassMethod · 0.45
setTextMethod · 0.45

Tested by

no test coverage detected