Source code for jdaviz.configs.imviz.plugins.compass.compass

from traitlets import Unicode, List, observe

from jdaviz.core.events import (ViewerAddedMessage, ViewerRemovedMessage,
                                AddDataMessage, RemoveDataMessage)
from jdaviz.core.registries import tray_registry
from jdaviz.core.template_mixin import TemplateMixin

__all__ = ['Compass']


[docs]@tray_registry('imviz-compass', label="Imviz Compass") class Compass(TemplateMixin): template_file = __file__, "compass.vue" viewer_items = List([]).tag(sync=True) selected_viewer = Unicode("").tag(sync=True) data_label = Unicode("").tag(sync=True) img_data = Unicode("").tag(sync=True) def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) self.hub.subscribe(self, ViewerAddedMessage, handler=self._on_viewers_changed) self.hub.subscribe(self, ViewerRemovedMessage, handler=self._on_viewers_changed) self.hub.subscribe(self, AddDataMessage, handler=self._on_viewer_data_changed) self.hub.subscribe(self, RemoveDataMessage, handler=self._on_viewer_data_changed) self._on_viewers_changed() # Populate it on start-up def _on_viewers_changed(self, msg=None): self.viewer_items = self.app.get_viewer_ids() # Selected viewer was removed but Imviz always has a default viewer to fall back on. if self.selected_viewer not in self.viewer_items: self.selected_viewer = f'{self.app.config}-0' def _on_viewer_data_changed(self, msg=None): if self.selected_viewer: viewer = self.app.get_viewer_by_id(self.selected_viewer) viewer.on_limits_change() # Force redraw @observe("selected_viewer") def _compass_with_new_viewer(self, *args, **kwargs): # There can be only one! for vid, viewer in self.app._viewer_store.items(): if vid == self.selected_viewer: viewer.compass = self viewer.on_limits_change() # Force redraw else: viewer.compass = None
[docs] def clear_compass(self): """Clear the content of the plugin.""" self.data_label = '' self.img_data = ''
[docs] def draw_compass(self, data_label, img_data): """Draw compass in the plugin. Input is rendered buffer from Matplotlib. """ self.data_label = data_label self.img_data = img_data