Source code for glue_jupyter.common.state_widgets.layer_image
from ipywidgets import (Checkbox, FloatSlider, ColorPicker, VBox, Dropdown,
FloatText)
from glue.config import colormaps
from glue.utils import color2hex
from ...link import link
from ...widgets import LinkedDropdown
__all__ = ['ImageLayerStateWidget', 'ImageSubsetLayerStateWidget']
[docs]class ImageLayerStateWidget(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_attribute = LinkedDropdown(self.state, 'attribute', label='attribute')
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_contrast = FloatSlider(min=0, max=4, step=0.01, value=self.state.contrast,
description='contrast')
link((self.state, 'contrast'), (self.widget_contrast, 'value'))
self.widget_bias = FloatSlider(min=0, max=1, step=0.01, value=self.state.bias,
description='bias')
link((self.state, 'bias'), (self.widget_bias, 'value'))
self.widget_stretch = LinkedDropdown(self.state, 'stretch', label='stretch')
self.widget_percentile = LinkedDropdown(self.state, 'percentile', ui_name='limits',
label='percentile')
self.widget_v_min = FloatText(description='min', value=self.state.v_min)
link((self.state, 'v_min'), (self.widget_v_min, 'value'))
self.widget_v_max = FloatText(description='max', value=self.state.v_max)
link((self.state, 'v_max'), (self.widget_v_max, 'value'))
self.widget_color = ColorPicker(description='color')
link((self.state, 'color'), (self.widget_color, 'value'), color2hex)
self.widget_colormap = Dropdown(options=colormaps.members, description='colormap')
link((self.state, 'cmap'), (self.widget_colormap, 'value'))
super().__init__()
self.state.viewer_state.add_callback('color_mode', self.setup_widgets)
self.setup_widgets()
[docs] def setup_widgets(self, *args):
children = [self.widget_visible, self.widget_opacity]
children.append(self.widget_attribute)
children.append(self.widget_contrast)
children.append(self.widget_bias)
children.append(self.widget_stretch)
children.append(self.widget_percentile)
children.append(self.widget_v_min)
children.append(self.widget_v_max)
if self.state.viewer_state.color_mode == 'Colormaps':
children.append(self.widget_colormap)
else:
children.append(self.widget_color)
self.children = children
[docs]class ImageSubsetLayerStateWidget(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 = ColorPicker(description='color')
link((self.state, 'color'), (self.widget_color, 'value'), color2hex)
super().__init__([self.widget_visible, self.widget_opacity, self.widget_color])