Source code for glue_jupyter.common.state_widgets.layer_scatter
from ipywidgets import Checkbox, FloatSlider, VBox, IntSlider
from glue_jupyter.widgets import Color, Size
from ...link import link, dlink
from ...widgets import LinkedDropdown
__all__ = ['ScatterLayerStateWidget']
[docs]class ScatterLayerStateWidget(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_opacity = FloatSlider(min=0, max=1, step=0.01, value=self.state.alpha,
description='opacity')
link((self.state, 'alpha'), (self.widget_opacity, 'value'))
self.widget_color = Color(state=self.state)
self.widget_size = Size(state=self.state)
self.widget_vector = Checkbox(description='show vectors', value=self.state.vector_visible)
link((self.state, 'vector_visible'), (self.widget_vector, 'value'))
self.widget_vector_x = LinkedDropdown(self.state, 'vx_att', ui_name='vx',
label='vx attribute')
self.widget_vector_y = LinkedDropdown(self.state, 'vy_att', ui_name='vy',
label='vy attribute')
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')
# TODO: the following shouldn't be necessary ideally
if hasattr(self.state, 'bins'):
self.widget_bins = IntSlider(min=0, max=1024, value=self.state.bins,
description='bin count')
link((self.state, 'bins'), (self.widget_bins, 'value'))
super().__init__([self.widget_visible, self.widget_opacity,
self.widget_size, self.widget_color,
self.widget_vector, self.widget_vector_x,
self.widget_vector_y])