Commit ed898334474abd00a2cbba040d09c0646b571148
Committed by
GitHub
1 parent
3f9f34c4
Exists in
master
ADD: Send 'Set cross focal point' msgs using NeuronavigationApi (#420)
Showing
1 changed file
with
16 additions
and
0 deletions
Show diff stats
invesalius/net/neuronavigation_api.py
@@ -36,12 +36,28 @@ class NeuronavigationApi(metaclass=Singleton): | @@ -36,12 +36,28 @@ class NeuronavigationApi(metaclass=Singleton): | ||
36 | def __init__(self, connection=None): | 36 | def __init__(self, connection=None): |
37 | if connection is not None: | 37 | if connection is not None: |
38 | assert self._hasmethod(connection, 'update_coil_pose') | 38 | assert self._hasmethod(connection, 'update_coil_pose') |
39 | + self.__bind_events() | ||
39 | 40 | ||
40 | self.connection = connection | 41 | self.connection = connection |
41 | 42 | ||
42 | def _hasmethod(self, obj, name): | 43 | def _hasmethod(self, obj, name): |
43 | return hasattr(obj, name) and callable(getattr(obj, name)) | 44 | return hasattr(obj, name) and callable(getattr(obj, name)) |
44 | 45 | ||
46 | + def __bind_events(self): | ||
47 | + Publisher.subscribe(self.update_focus, 'Set cross focal point') | ||
48 | + | ||
49 | + # TODO: Not the cleanest API; for an example of a better API, see update_coil_pose | ||
50 | + # below, for which position and orientation are sent separately. Changing this | ||
51 | + # would require changing 'Set cross focal point' publishers and subscribers | ||
52 | + # throughout the code. | ||
53 | + # | ||
54 | + def update_focus(self, position): | ||
55 | + if self.connection is not None: | ||
56 | + self.connection.update_focus( | ||
57 | + position=position[:3], | ||
58 | + orientation=position[3:], | ||
59 | + ) | ||
60 | + | ||
45 | def update_coil_pose(self, position, orientation): | 61 | def update_coil_pose(self, position, orientation): |
46 | if self.connection is not None: | 62 | if self.connection is not None: |
47 | self.connection.update_coil_pose( | 63 | self.connection.update_coil_pose( |