Source code for jdaviz.configs.cubeviz.plugins.tools

import time
import os

from glue.config import viewer_tool
from glue.viewers.common.tool import CheckableTool

from jdaviz.core.events import SliceSelectWavelengthMessage, SliceToolStateMessage

__all__ = ['SelectSlice']

ICON_DIR = os.path.join(os.path.dirname(__file__), '..', '..', '..', 'data', 'icons')


[docs]@viewer_tool class SelectSlice(CheckableTool): icon = os.path.join(ICON_DIR, 'slice.svg') tool_id = 'jdaviz:selectslice' action_text = 'Select cube slice (spectral axis)' tool_tip = 'Select cube slice (spectral axis)' def __init__(self, viewer, **kwargs): self._time_last = 0 super().__init__(viewer, **kwargs)
[docs] def activate(self): self.viewer.add_event_callback(self.on_mouse_event, events=['dragmove', 'click']) msg = SliceToolStateMessage({'active': True}, sender=self) self.viewer.session.hub.broadcast(msg)
[docs] def deactivate(self): self.viewer.remove_event_callback(self.on_mouse_event) msg = SliceToolStateMessage({'active': False}, sender=self) self.viewer.session.hub.broadcast(msg)
[docs] def on_mouse_event(self, data): if (time.time() - self._time_last) <= 0.2: # throttle to 200ms return msg = SliceSelectWavelengthMessage(wavelength=data['domain']['x'], sender=self) self.viewer.session.hub.broadcast(msg) self._time_last = time.time()