Skip to content

Commit efe8e98

Browse files
Merge pull request #960 from annie-xd-wang/fix-errors-in-displaying-with-multiple-cameras
Fix errors in displaying with multiple cameras
2 parents 1b7e2e9 + 266c010 commit efe8e98

File tree

2 files changed

+31
-7
lines changed

2 files changed

+31
-7
lines changed

src/navigate/controller/controller.py

Lines changed: 27 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -320,10 +320,9 @@ def update_buffer(self):
320320
self.img_height = img_height
321321

322322
# 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 = {}
327326

328327
def update_acquire_control(self):
329328
"""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):
11151114
if microscope_name not in self.additional_microscopes_configs:
11161115
temp.append(microscope_name)
11171116
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)
11201118

11211119
# show additional camera view popup
11221120
for microscope_name in self.additional_microscopes_configs:
@@ -1147,6 +1145,9 @@ def display_images(camera_view_controller, show_img_pipe, data_buffer):
11471145
microscope_name
11481146
]["data_buffer"]
11491147
popup_window.popup.bind("<Configure>", camera_view_controller.resize)
1148+
self.additional_microscopes[microscope_name][
1149+
"popup_window"
1150+
] = popup_window
11501151
self.additional_microscopes[microscope_name][
11511152
"camera_view_controller"
11521153
] = camera_view_controller
@@ -1182,6 +1183,26 @@ def display_images(camera_view_controller, show_img_pipe, data_buffer):
11821183
)
11831184
capture_img_thread.start()
11841185

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+
11851206
def move_stage(self, pos_dict):
11861207
"""Trigger the model to move the stage.
11871208

src/navigate/model/model.py

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1353,7 +1353,10 @@ def launch_virtual_microscope(self, microscope_name, microscope_config):
13531353

13541354
# connect virtual microscope with data_buffer
13551355
microscope.update_data_buffer(
1356-
self.img_width, self.img_height, data_buffer, self.number_of_frames
1356+
self.configuration["experiment"]["CameraParameters"]["x_pixels"],
1357+
self.configuration["experiment"]["CameraParameters"]["y_pixels"],
1358+
data_buffer,
1359+
self.number_of_frames
13571360
)
13581361

13591362
# add microscope to self.virtual_microscopes

0 commit comments

Comments
 (0)