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

Method OnLabelRemoved

Modules/SegmentationUI/src/QmitkMultiLabelTreeModel.cpp:1073–1119  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1071}
1072
1073void QmitkMultiLabelTreeModel::OnLabelRemoved(LabelValueType labelValue)
1074{
1075 if (labelValue == mitk::MultiLabelSegmentation::UNLABELED_VALUE) return;
1076 auto instanceItem = GetInstanceItem(labelValue, this->m_RootItem.get());
1077
1078 if (nullptr == instanceItem)
1079 mitkThrow() << "Internal invalid state. QmitkMultiLabelTreeModel received a LabelRemoved signal for a label that is not represented in the model. Invalid label: " << labelValue;
1080
1081 const auto nextItem = ClosestLabelInstanceIndex(instanceItem);
1082 if (nullptr != nextItem)
1083 {
1084 m_NearestLabelValueToLastChange = nextItem->GetLabelValue();
1085 }
1086 else
1087 {
1088 m_NearestLabelValueToLastChange = mitk::MultiLabelSegmentation::UNLABELED_VALUE;
1089 }
1090
1091 auto labelItem = instanceItem->ParentItem();
1092
1093 m_ModelUpdateOngoing = true;
1094 if (labelItem->m_childItems.size() > 2)
1095 {
1096 auto labelIndex = GetIndexByItem(labelItem, this);
1097 this->beginRemoveRows(labelIndex, instanceItem->Row(), instanceItem->Row());
1098 labelItem->RemoveChild(instanceItem->Row());
1099 this->endRemoveRows();
1100 }
1101 else if (labelItem->m_childItems.size() == 2)
1102 { //After removal only one label is left -> the whole label node is about to be changed (no instances are shown any more).
1103 auto labelIndex = GetIndexByItem(labelItem, this);
1104 this->beginRemoveRows(labelIndex, instanceItem->Row(), instanceItem->Row());
1105 labelItem->RemoveChild(instanceItem->Row());
1106 this->endRemoveRows();
1107 emit dataChanged(labelIndex, labelIndex);
1108 }
1109 else
1110 { //was the only instance of the label, therefor also remove the label node from the tree.
1111 auto groupItem = labelItem->ParentItem();
1112 auto groupIndex = GetIndexByItem(groupItem, this);
1113 this->beginRemoveRows(groupIndex, labelItem->Row(), labelItem->Row());
1114 groupItem->RemoveChild(labelItem->Row());
1115 this->endRemoveRows();
1116 }
1117 m_ModelUpdateOngoing = false;
1118 emit modelChanged();
1119}
1120
1121void QmitkMultiLabelTreeModel::OnGroupAdded(GroupIndexType groupIndex)
1122{

Callers 2

ITKEventHandlerMethod · 0.95
OnLabelModifiedMethod · 0.95

Calls 7

GetInstanceItemFunction · 0.85
GetIndexByItemFunction · 0.85
ParentItemMethod · 0.80
RowMethod · 0.80
GetLabelValueMethod · 0.45
sizeMethod · 0.45
RemoveChildMethod · 0.45

Tested by

no test coverage detected