Handles events raised by the debugger bridge
| 10 | |
| 11 | |
| 12 | class OpenImageDebuggerEvents(BridgeEventHandlerInterface): |
| 13 | """ |
| 14 | Handles events raised by the debugger bridge |
| 15 | """ |
| 16 | def __init__(self, window, debugger): |
| 17 | self._window = window |
| 18 | self._debugger = debugger |
| 19 | |
| 20 | def _set_symbol_complete_list(self): |
| 21 | """ |
| 22 | Retrieve the list of available symbols and provide it to the OID window |
| 23 | for autocompleting. |
| 24 | """ |
| 25 | observable_symbols = list(self._debugger.get_available_symbols()) |
| 26 | if self._window.is_ready(): |
| 27 | self._window.set_available_symbols(observable_symbols) |
| 28 | |
| 29 | def exit_handler(self): |
| 30 | self._window.terminate() |
| 31 | |
| 32 | def stop_handler(self): |
| 33 | """ |
| 34 | The debugger has stopped (e.g. a breakpoint was hit). We must list all |
| 35 | available buffers and pass it to the Open Image Debugger window. |
| 36 | """ |
| 37 | # Block until the window is up and running |
| 38 | if not self._window.is_ready(): |
| 39 | self._window.initialize_window() |
| 40 | while not self._window.is_ready(): |
| 41 | time.sleep(0.1) |
| 42 | |
| 43 | # Update buffers being visualized |
| 44 | observed_buffers = self._window.get_observed_buffers() |
| 45 | for buffer_name in observed_buffers: |
| 46 | self._window.plot_variable(buffer_name) |
| 47 | |
| 48 | # Set list of available symbols |
| 49 | self._set_symbol_complete_list() |
| 50 | |
| 51 | def plot_handler(self, variable_name): |
| 52 | """ |
| 53 | Command window to plot variable_name if user requests from debugger log |
| 54 | """ |
| 55 | self._window.plot_variable(variable_name) |