Skip to content

Commit 2f56afd

Browse files
Merge pull request #997 from annie-xd-wang/secondary-camera-popup-fix
the secondary camera popup stays the same
2 parents 578989d + 7caf33a commit 2f56afd

File tree

2 files changed

+36
-32
lines changed

2 files changed

+36
-32
lines changed

src/navigate/controller/controller.py

Lines changed: 35 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -1185,8 +1185,10 @@ def display_images(
11851185

11861186
# destroy all additional microscopes
11871187
for microscope_name in list(self.additional_microscopes.keys()):
1188-
self.destroy_virtual_microscope(microscope_name)
1189-
self.additional_microscopes = {}
1188+
destroy_window = False
1189+
if microscope_name not in self.additional_microscopes_configs:
1190+
destroy_window = True
1191+
self.destroy_virtual_microscope(microscope_name, destroy_window)
11901192

11911193
# show additional camera view popup
11921194
for microscope_name in self.additional_microscopes_configs:
@@ -1196,32 +1198,31 @@ def display_images(
11961198
self.additional_microscopes_configs[microscope_name],
11971199
)
11981200

1199-
self.additional_microscopes[microscope_name] = {
1200-
"show_img_pipe": show_img_pipe,
1201-
"data_buffer": data_buffer,
1202-
}
1203-
popup_window = CameraViewPopupWindow(self.view, microscope_name)
1204-
camera_view_controller = CameraViewController(
1205-
popup_window.camera_view, self
1206-
)
1207-
camera_view_controller.data_buffer = self.additional_microscopes[
1208-
microscope_name
1209-
]["data_buffer"]
1210-
camera_view_controller.microscope_name = microscope_name
1211-
popup_window.popup.bind("<Configure>", camera_view_controller.resize)
1212-
self.additional_microscopes[microscope_name]["popup_window"] = popup_window
1213-
self.additional_microscopes[microscope_name][
1214-
"camera_view_controller"
1215-
] = camera_view_controller
1216-
popup_window.popup.protocol(
1217-
"WM_DELETE_WINDOW",
1218-
combine_funcs(
1219-
popup_window.popup.dismiss,
1220-
lambda: self.additional_microscopes[microscope_name].pop(
1221-
"camera_view_controller"
1201+
if microscope_name not in self.additional_microscopes:
1202+
self.additional_microscopes[microscope_name] = {}
1203+
1204+
popup_window = CameraViewPopupWindow(self.view, microscope_name)
1205+
camera_view_controller = CameraViewController(
1206+
popup_window.camera_view, self
1207+
)
1208+
camera_view_controller.microscope_name = microscope_name
1209+
popup_window.popup.bind("<Configure>", camera_view_controller.resize)
1210+
self.additional_microscopes[microscope_name]["popup_window"] = popup_window
1211+
self.additional_microscopes[microscope_name][
1212+
"camera_view_controller"
1213+
] = camera_view_controller
1214+
popup_window.popup.protocol(
1215+
"WM_DELETE_WINDOW",
1216+
combine_funcs(
1217+
popup_window.popup.dismiss,
1218+
lambda: self.additional_microscopes[microscope_name].pop(
1219+
"camera_view_controller"
1220+
),
12221221
),
1223-
),
1224-
)
1222+
)
1223+
1224+
self.additional_microscopes[microscope_name]["show_img_pipe"] = show_img_pipe
1225+
self.additional_microscopes[microscope_name]["data_buffer"] = data_buffer
12251226

12261227
# start thread
12271228
capture_img_thread = threading.Thread(
@@ -1237,13 +1238,15 @@ def display_images(
12371238
)
12381239
capture_img_thread.start()
12391240

1240-
def destroy_virtual_microscope(self, microscope_name):
1241+
def destroy_virtual_microscope(self, microscope_name, destroy_window=True):
12411242
"""Destroy virtual microscopes.
12421243
12431244
Parameters
12441245
----------
12451246
microscope_name : str
12461247
The microscope name
1248+
destroy_window : bool
1249+
The flag to dismiss window.
12471250
"""
12481251
if microscope_name not in self.additional_microscopes:
12491252
return
@@ -1253,9 +1256,10 @@ def destroy_virtual_microscope(self, microscope_name):
12531256
self.model.release_pipe(f"{microscope_name}_show_img_pipe")
12541257
del self.additional_microscopes[microscope_name]["show_img_pipe"]
12551258
# destroy the popup window
1256-
self.additional_microscopes[microscope_name]["popup_window"].popup.dismiss()
1257-
self.additional_microscopes[microscope_name]["camera_view_controller"] = None
1258-
del self.additional_microscopes[microscope_name]
1259+
if destroy_window:
1260+
self.additional_microscopes[microscope_name]["popup_window"].popup.dismiss()
1261+
self.additional_microscopes[microscope_name]["camera_view_controller"] = None
1262+
del self.additional_microscopes[microscope_name]
12591263

12601264
def move_stage(self, pos_dict):
12611265
"""Trigger the model to move the stage.

src/navigate/controller/sub_controllers/microscope_popup.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -134,7 +134,7 @@ def clear_device_info(microscope_name):
134134
for k in self.microscope_info[microscope_name].keys():
135135
if (
136136
self.microscope_info[microscope_name][k]
137-
== self.microscope_info[microscope][k]
137+
== self.microscope_info[microscope].get(k, "")
138138
):
139139
self.variables[f"{microscope_name} {k}"].set("")
140140

0 commit comments

Comments
 (0)