@@ -320,10 +320,9 @@ def update_buffer(self):
320
320
self .img_height = img_height
321
321
322
322
# virtual microscopes
323
- for microscope_name in self .additional_microscopes :
324
- self .model .destroy_virtual_microscope (microscope_name )
325
- # TODO: destroy the popup window
326
- self .additional_microscopes .pop (microscope_name )
323
+ for microscope_name in list (self .additional_microscopes .keys ()):
324
+ self .destroy_virtual_microscope (microscope_name )
325
+ self .additional_microscopes = {}
327
326
328
327
def update_acquire_control (self ):
329
328
"""Update the acquire control based on the current experiment parameters."""
@@ -1115,8 +1114,7 @@ def display_images(camera_view_controller, show_img_pipe, data_buffer):
1115
1114
if microscope_name not in self .additional_microscopes_configs :
1116
1115
temp .append (microscope_name )
1117
1116
for microscope_name in temp :
1118
- del self .additional_microscopes [microscope_name ]
1119
- self .model .destroy_virtual_microscope (microscope_name )
1117
+ self .destroy_virtual_microscope (microscope_name )
1120
1118
1121
1119
# show additional camera view popup
1122
1120
for microscope_name in self .additional_microscopes_configs :
@@ -1147,6 +1145,9 @@ def display_images(camera_view_controller, show_img_pipe, data_buffer):
1147
1145
microscope_name
1148
1146
]["data_buffer" ]
1149
1147
popup_window .popup .bind ("<Configure>" , camera_view_controller .resize )
1148
+ self .additional_microscopes [microscope_name ][
1149
+ "popup_window"
1150
+ ] = popup_window
1150
1151
self .additional_microscopes [microscope_name ][
1151
1152
"camera_view_controller"
1152
1153
] = camera_view_controller
@@ -1182,6 +1183,26 @@ def display_images(camera_view_controller, show_img_pipe, data_buffer):
1182
1183
)
1183
1184
capture_img_thread .start ()
1184
1185
1186
+ def destroy_virtual_microscope (self , microscope_name ):
1187
+ """Destroy virtual microscopes.
1188
+
1189
+ Parameters
1190
+ ----------
1191
+ microscope_name : str
1192
+ The microscope name
1193
+ """
1194
+ if microscope_name not in self .additional_microscopes :
1195
+ return
1196
+ del self .additional_microscopes [microscope_name ]["data_buffer" ]
1197
+ self .model .destroy_virtual_microscope (microscope_name )
1198
+ # release pipe
1199
+ self .model .release_pipe (f"{ microscope_name } _show_img_pipe" )
1200
+ del self .additional_microscopes [microscope_name ]["show_img_pipe" ]
1201
+ # destroy the popup window
1202
+ self .additional_microscopes [microscope_name ]["popup_window" ].popup .dismiss ()
1203
+ self .additional_microscopes [microscope_name ]["camera_view_controller" ] = None
1204
+ del self .additional_microscopes [microscope_name ]
1205
+
1185
1206
def move_stage (self , pos_dict ):
1186
1207
"""Trigger the model to move the stage.
1187
1208
0 commit comments