11from imjoy import api
2+ from typing import List
23
3- from typing import Optional
4-
5- from .integrations import _detect_render_type , _set_viewer_image
4+ from . _type_aliases import Gaussians , Style , Image , Point_Sets
5+ from . _initialization_params import init_params_dict
6+ from .integrations import _detect_render_type , _set_viewer_image , _set_viewer_point_sets
67from .render_types import RenderType
78
89__all__ = [
@@ -20,40 +21,44 @@ def __init__(self, ui_collapsed=True, rotate=False, **add_data_kwargs):
2021 self ._init_viewer_kwargs = dict (ui_collapsed = ui_collapsed , rotate = rotate )
2122 self ._init_viewer_kwargs .update (** add_data_kwargs )
2223
24+ def _get_input_data (self ):
25+ input_options = ['data' , 'image' , 'point_sets' ]
26+ for option in input_options :
27+ data = self ._init_viewer_kwargs .get (option , None )
28+ if data is not None :
29+ break
30+ return data , option
31+
2332 async def setup (self ):
2433 """ImJoy plugin setup function."""
2534 global _viewer_count
26- try :
27- from google .colab import output
28- running_in_colab = True
29- except ModuleNotFoundError :
30- running_in_colab = False
31- if running_in_colab :
32- itk_viewer = await api .showDialog (
33- name = f'itkwidgets viewer { _viewer_count } ' ,
34- type = 'itk-vtk-viewer' ,
35- src = 'https://kitware.github.io/itk-vtk-viewer/app' ,
36- )
37- else :
38- itk_viewer = await api .createWindow (
39- name = f'itkwidgets viewer { _viewer_count } ' ,
40- type = 'itk-vtk-viewer' ,
41- # src='http://localhost:8082',
42- src = 'https://kitware.github.io/itk-vtk-viewer/app' ,
43- )
35+ itk_viewer = await api .createWindow (
36+ name = f'itkwidgets viewer { _viewer_count } ' ,
37+ type = 'itk-vtk-viewer' ,
38+ src = 'https://kitware.github.io/itk-vtk-viewer/app' ,
39+ fullscreen = True ,
40+ )
4441 _viewer_count += 1
4542
46- data = self ._init_viewer_kwargs . get ( 'data' , None )
43+ data , input_type = self ._get_input_data ( )
4744 if data is not None :
48- render_type = _detect_render_type (data )
45+ render_type = _detect_render_type (data , input_type )
4946 if render_type is RenderType .IMAGE :
5047 await _set_viewer_image (itk_viewer , data )
48+ elif render_type is RenderType .POINT_SET :
49+ await _set_viewer_point_sets (itk_viewer , data )
5150
52- itk_viewer .setUICollapsed (self ._init_viewer_kwargs ['ui_collapsed' ])
53- itk_viewer .setRotateEnabled (self ._init_viewer_kwargs ['rotate' ])
51+ self .set_default_ui_values (itk_viewer )
5452
5553 self .itk_viewer = itk_viewer
5654
55+ def set_default_ui_values (self , itk_viewer ):
56+ settings = init_params_dict (itk_viewer )
57+ for key , value in self ._init_viewer_kwargs .items ():
58+ if key in settings .keys ():
59+ settings [key ](value )
60+
61+
5762class Viewer :
5863 """Pythonic Viewer class."""
5964
@@ -62,18 +67,100 @@ def __init__(self, ui_collapsed=True, rotate=False, **add_data_kwargs):
6267 self .viewer_rpc = ViewerRPC (ui_collapsed = ui_collapsed , rotate = rotate , ** add_data_kwargs )
6368 api .export (self .viewer_rpc )
6469
70+ def set_annotations_enabled (self , enabled : bool ):
71+ self .viewer_rpc .itk_viewer .setAnnotationsEnabled (enabled )
72+
73+ def set_axes_enabled (self , enabled : bool ):
74+ self .viewer_rpc .itk_viewer .setAxesEnabled (enabled )
75+
76+ def set_background_color (self , bgColor : List [float ]):
77+ self .viewer_rpc .itk_viewer .setBackgroundColor (bgColor )
78+
79+ def set_image (self , image : Image ):
80+ self .viewer_rpc .itk_viewer .setImage (image )
81+
82+ def set_image_blend_mode (self , mode : str ):
83+ self .viewer_rpc .itk_viewer .setImageBlendMode (mode )
84+
85+ def set_image_color_map (self , colorMap : str ):
86+ self .viewer_rpc .itk_viewer .setImageColorMap (colorMap )
87+
88+ def set_image_color_range (self , range : List [float ]):
89+ self .viewer_rpc .itk_viewer .setImageColorRange (range )
90+
91+ def set_image_color_range_bounds (self , range : List [float ]):
92+ self .viewer_rpc .itk_viewer .setImageColorRangeBounds (range )
93+
94+ def set_image_component_visibility (self , visibility : bool ):
95+ self .viewer_rpc .itk_viewer .setImageComponentVisibility (visibility )
96+
97+ def set_image_gradient_opacity (self , opacity : float ):
98+ self .viewer_rpc .itk_viewer .setImageGradientOpacity (opacity )
99+
100+ def set_image_gradient_opacity_scale (self , min : float ):
101+ self .viewer_rpc .itk_viewer .setImageGradientOpacityScale (min )
102+
103+ def set_image_interpolation_enabled (self , enabled : bool ):
104+ self .viewer_rpc .itk_viewer .setImageInterpolationEnabled (enabled )
105+
106+ def set_image_piecewise_function_gaussians (self , gaussians : Gaussians ):
107+ self .viewer_rpc .itk_viewer .setImagePiecewiseFunctionGaussians (gaussians )
108+
109+ def set_image_shadow_enabled (self , enabled : bool ):
110+ self .viewer_rpc .itk_viewer .setImageShadowEnabled (enabled )
111+
112+ def set_image_volume_sample_distance (self , distance : float ):
113+ self .viewer_rpc .itk_viewer .setImageVolumeSampleDistance (distance )
114+
115+ def set_label_image_blend (self , blend : float ):
116+ self .viewer_rpc .itk_viewer .setLabelImageBlend (blend )
117+
118+ def set_label_image_label_names (self , names : List [str ]):
119+ self .viewer_rpc .itk_viewer .setLabelImageLabelNames (names )
120+
121+ def set_label_image_lookup_table (self , lookupTable : str ):
122+ self .viewer_rpc .itk_viewer .setLabelImageLookupTable (lookupTable )
123+
124+ def set_label_image_weights (self , weights : float ):
125+ self .viewer_rpc .itk_viewer .setLabelImageWeights (weights )
126+
127+ def select_layer (self , name : str ):
128+ self .viewer_rpc .itk_viewer .selectLayer (name )
129+
130+ def set_layer_visibility (self , visible : bool ):
131+ self .viewer_rpc .itk_viewer .setLayerVisibility (visible )
132+
133+ def set_point_sets (self , pointSets : Point_Sets ):
134+ self .viewer_rpc .itk_viewer .setPointSets (pointSets )
135+
136+ def set_rendering_view_container_style (self , containerStyle : Style ):
137+ self .viewer_rpc .itk_viewer .setRenderingViewContainerStyle (
138+ containerStyle
139+ )
140+
141+ def set_rotate (self , enabled : bool ):
142+ self .viewer_rpc .itk_viewer .setRotateEnabled (enabled )
143+
65144 def set_ui_collapsed (self , collapsed : bool ):
66145 self .viewer_rpc .itk_viewer .setUICollapsed (collapsed )
67146
68- def set_rotate (self , rotate : bool ):
69- self .viewer_rpc .itk_viewer .setRotateEnabled ( rotate )
147+ def set_units (self , units : str ):
148+ self .viewer_rpc .itk_viewer .setUnits ( units )
70149
71- def set_image_gradient_opacity (self , opacity :float ):
72- self .viewer_rpc .itk_viewer .setImageGradientOpacity (opacity )
150+ def set_view_mode (self , mode : str ):
151+ self .viewer_rpc .itk_viewer .setViewMode (mode )
152+
153+ def set_x_slice (self , position : float ):
154+ self .viewer_rpc .itk_viewer .setXSlice (position )
155+
156+ def set_y_slice (self , position : float ):
157+ self .viewer_rpc .itk_viewer .setYSlice (position )
73158
159+ def set_z_slice (self , position : float ):
160+ self .viewer_rpc .itk_viewer .setZSlice (position )
74161
75162def view (data = None , ** kwargs ):
76163 """View the data provided and return the resulting Viewer object."""
77164 viewer = Viewer (data = data , ** kwargs )
78165
79- return viewer
166+ return viewer
0 commit comments