Source code for glue_jupyter.ipyvolume.scatter.layer_style_widget
from ipywidgets import Checkbox, VBox, ToggleButtons
from glue_jupyter.widgets import Color, Size
from ...link import link, dlink
from ...widgets import LinkedDropdown
__all__ = ['Scatter3DLayerStateWidget']
[docs]class Scatter3DLayerStateWidget(VBox):
def __init__(self, layer_state):
self.state = layer_state
self.widget_visible = Checkbox(description='visible', value=self.state.visible)
link((self.state, 'visible'), (self.widget_visible, 'value'))
self.widget_marker = ToggleButtons(options=['sphere', 'box', 'diamond'])
link((self.state, 'geo'), (self.widget_marker, 'value'))
self.widget_size = Size(state=self.state)
self.widget_color = Color(state=self.state)
# vector/quivers
self.widget_vector = Checkbox(description='show vectors', value=self.state.vector_visible)
self.widget_vector_x = LinkedDropdown(self.state, 'vx_att', label='vx')
self.widget_vector_y = LinkedDropdown(self.state, 'vy_att', label='vy')
self.widget_vector_z = LinkedDropdown(self.state, 'vz_att', label='vz')
link((self.state, 'vector_visible'), (self.widget_vector, 'value'))
dlink((self.widget_vector, 'value'), (self.widget_vector_x.layout, 'display'),
lambda value: None if value else 'none')
dlink((self.widget_vector, 'value'), (self.widget_vector_y.layout, 'display'),
lambda value: None if value else 'none')
dlink((self.widget_vector, 'value'), (self.widget_vector_z.layout, 'display'),
lambda value: None if value else 'none')
link((self.state, 'vector_visible'), (self.widget_vector, 'value'))
super().__init__([self.widget_visible, self.widget_marker,
self.widget_size, self.widget_color,
self.widget_vector, self.widget_vector_x,
self.widget_vector_y, self.widget_vector_z])