| 1071 | } |
| 1072 | |
| 1073 | void 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 | |
| 1121 | void QmitkMultiLabelTreeModel::OnGroupAdded(GroupIndexType groupIndex) |
| 1122 | { |
no test coverage detected