Skip to content

Commit bacae2f

Browse files
committed
add custom event listener
From model to controller.
1 parent e14e7d0 commit bacae2f

File tree

2 files changed

+17
-1
lines changed

2 files changed

+17
-1
lines changed

src/navigate/controller/controller.py

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -195,6 +195,7 @@ def __init__(
195195
self.view = view(root)
196196

197197
# Sub Gui Controllers
198+
self.event_listeners = {}
198199
#: AcquireBarController: Acquire Bar Sub-Controller.
199200
self.acquire_bar_controller = AcquireBarController(self.view.acqbar, self)
200201

@@ -1295,9 +1296,22 @@ def update_event(self):
12951296
elif event == "display_camera_parameters":
12961297
self.camera_setting_controller.update_camera_parameters_silent(*value)
12971298

1299+
elif event in self.event_listeners.keys():
1300+
try:
1301+
self.event_listeners[event](value)
1302+
except Exception:
1303+
print(f"*** unhandled event: {event}, {value}")
1304+
12981305
def add_acquisition_mode(self, name, acquisition_obj):
12991306
if name in self.plugin_acquisition_modes:
13001307
print(f"*** plugin acquisition mode {name} exists, can't add another one!")
13011308
return
13021309
self.plugin_acquisition_modes[name] = acquisition_obj(name)
13031310
self.acquire_bar_controller.add_mode(name)
1311+
1312+
def register_event_listener(self, event_name, event_handler):
1313+
self.event_listeners[event_name] = event_handler
1314+
1315+
def register_event_listeners(self, events):
1316+
for event_name, event_handler in events.items():
1317+
self.register_event_listener(event_name, event_handler)

src/navigate/controller/sub_controllers/plugins.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -217,12 +217,13 @@ def build_tab_window(self, plugin_name, frame, controller):
217217
frame: object
218218
navigate frame object
219219
controller: object
220-
navigate controller
220+
Controller Class
221221
"""
222222
try:
223223
plugin_frame = frame(self.view.settings)
224224
self.view.settings.add(plugin_frame, text=plugin_name, sticky=tk.NSEW)
225225
plugin_controller = controller(plugin_frame, self.parent_controller)
226+
self.parent_controller.register_event_listeners(getattr(plugin_controller, "custom_events", {}))
226227
controller_name = (
227228
"__plugin" + "_".join(plugin_name.lower().split()) + "_controller"
228229
)
@@ -272,6 +273,7 @@ def func(*args, **kwargs):
272273
plugin_frame.grid(row=0, column=0, sticky=tk.NSEW, padx=10, pady=10)
273274

274275
plugin_controller = controller(plugin_frame, self.parent_controller)
276+
self.parent_controller.register_event_listeners(getattr(plugin_controller, "custom_events", {}))
275277

276278
plugin_controller.popup = popup
277279
popup.deiconify()

0 commit comments

Comments
 (0)