@@ -894,11 +894,13 @@ def on_insert(self, event):
894
894
# been added and the body part names are different from the existing ones,
895
895
# then we update store's metadata and menus.
896
896
if layer .metadata .get ("project" , "" ) and self ._stores :
897
+ new_metadata = layer .metadata .copy ()
898
+
897
899
keypoints_menu = self ._menus [0 ].menus ["label" ]
898
900
current_keypoint_set = set (
899
901
keypoints_menu .itemText (i ) for i in range (keypoints_menu .count ())
900
902
)
901
- new_keypoint_set = set (layer . metadata ["header" ].bodyparts )
903
+ new_keypoint_set = set (new_metadata ["header" ].bodyparts )
902
904
diff = new_keypoint_set .difference (current_keypoint_set )
903
905
if diff :
904
906
answer = QMessageBox .question (
@@ -909,28 +911,29 @@ def on_insert(self, event):
909
911
910
912
self .viewer .status = f"New keypoint{ 's' if len (diff ) > 1 else '' } { ', ' .join (diff )} found."
911
913
for _layer , store in self ._stores .items ():
912
- _layer .metadata ["header" ] = layer . metadata ["header" ]
914
+ _layer .metadata ["header" ] = new_metadata ["header" ]
913
915
store .layer = _layer
914
916
915
917
for menu in self ._menus :
916
918
menu ._map_individuals_to_bodyparts ()
917
919
menu ._update_items ()
918
920
921
+ # Remove the unnecessary layer newly added
922
+ QTimer .singleShot (10 , self .viewer .layers .pop )
923
+
919
924
# Always update the colormap to reflect the one in the config.yaml file
920
925
for _layer , store in self ._stores .items ():
921
- _layer .metadata ["face_color_cycles" ] = layer . metadata [
926
+ _layer .metadata ["face_color_cycles" ] = new_metadata [
922
927
"face_color_cycles"
923
928
]
924
929
_layer .face_color = "label"
925
- _layer .face_color_cycle = layer . metadata ["face_color_cycles" ][
930
+ _layer .face_color_cycle = new_metadata ["face_color_cycles" ][
926
931
"label"
927
932
]
928
933
_layer .events .face_color ()
929
934
store .layer = _layer
930
935
self ._update_color_scheme ()
931
936
932
- # Remove the unnecessary layer newly added
933
- QTimer .singleShot (10 , self .viewer .layers .pop )
934
937
return
935
938
936
939
store = keypoints .KeypointStore (self .viewer , layer )
@@ -1108,6 +1111,7 @@ def __init__(
1108
1111
self .setLayout (layout1 )
1109
1112
1110
1113
def _map_individuals_to_bodyparts (self ):
1114
+ self .id2label .clear () # Empty dict so entries are ordered as in the config
1111
1115
for keypoint in self .store ._keypoints :
1112
1116
label = keypoint .label
1113
1117
id_ = keypoint .id
@@ -1412,4 +1416,5 @@ def reset(self):
1412
1416
self .scheme_dict = {}
1413
1417
for i in reversed (range (self ._layout .count ())):
1414
1418
w = self ._layout .itemAt (i ).widget ()
1419
+ w .setParent (None )
1415
1420
self ._layout .removeWidget (w )
0 commit comments