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 | 36 | def __init__(self, connection=None): |
| 37 | 37 | if connection is not None: |
| 38 | 38 | assert self._hasmethod(connection, 'update_coil_pose') |
| 39 | + self.__bind_events() | |
| 39 | 40 | |
| 40 | 41 | self.connection = connection |
| 41 | 42 | |
| 42 | 43 | def _hasmethod(self, obj, name): |
| 43 | 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 | 61 | def update_coil_pose(self, position, orientation): |
| 46 | 62 | if self.connection is not None: |
| 47 | 63 | self.connection.update_coil_pose( | ... | ... |