@ -13,8 +13,8 @@
# Imports
#-----------------------------------------------------------------------------
from IPython . html . widgets import ( Widget , String Widget,
Float RangeWidget, IntRangeWidget , BoolWidget , Selectio nWidget,
from IPython . html . widgets import ( Widget , TextBox Widget,
Float SliderWidget, IntSliderWidget , CheckBoxWidget , Dropdow nWidget,
ContainerWidget )
from IPython . display import display , clear_output
from IPython . utils . py3compat import string_types , unicode_type
@ -41,38 +41,38 @@ def _min_max_value(o):
def _widget_abbrev ( o ) :
if isinstance ( o , string_types ) :
return String Widget( value = unicode_type ( o ) )
return TextBox Widget( value = unicode_type ( o ) )
elif isinstance ( o , dict ) :
values = [ unicode_type ( k ) for k in o ]
w = Selectio nWidget( value = values [ 0 ] , values = values )
w = Dropdow nWidget( value = values [ 0 ] , values = values )
w . actual_values = o
return w
# Special case float and int == 0.0
# get_range(value):
elif isinstance ( o , bool ) :
return Bool Widget( value = o )
return CheckBox Widget( value = o )
elif isinstance ( o , float ) :
return Float Range Widget( value = o , min = - o , max = 3.0 * o )
return Float Slider Widget( value = o , min = - o , max = 3.0 * o )
elif isinstance ( o , int ) :
return Int Range Widget( value = o , min = - o , max = 3 * o )
return Int Slider Widget( value = o , min = - o , max = 3 * o )
if isinstance ( o , ( list , tuple ) ) :
if _matches ( o , ( int , int ) ) :
min , max , value = _min_max_value ( o )
return Int Range Widget( value = int ( value ) , min = min , max = max )
return Int Slider Widget( value = int ( value ) , min = min , max = max )
elif _matches ( o , ( int , int , int ) ) :
min , max , value = _min_max_value ( o )
return Int Range Widget( value = int ( value ) , min = min , max = max , step = o [ 2 ] )
return Int Slider Widget( value = int ( value ) , min = min , max = max , step = o [ 2 ] )
elif _matches ( o , ( float , float ) ) :
min , max , value = _min_max_value ( o )
return Float Range Widget( value = value , min = min , max = max )
return Float Slider Widget( value = value , min = min , max = max )
elif _matches ( o , ( float , float , float ) ) :
min , max , value = _min_max_value ( o )
return Float Range Widget( value = value , min = min , max = max , step = o [ 2 ] )
return Float Slider Widget( value = value , min = min , max = max , step = o [ 2 ] )
elif _matches ( o , ( float , float , int ) ) :
min , max , value = _min_max_value ( o )
return Float Range Widget( value = value , min = min , max = max , step = float ( o [ 2 ] ) )
return Float Slider Widget( value = value , min = min , max = max , step = float ( o [ 2 ] ) )
elif all ( isinstance ( x , string_types ) for x in o ) :
return Selectio nWidget( value = unicode_type ( o [ 0 ] ) ,
return Dropdow nWidget( value = unicode_type ( o [ 0 ] ) ,
values = [ unicode_type ( k ) for k in o ] )
@ -93,9 +93,9 @@ def interactive(f, **kwargs):
if widget is None :
raise ValueError ( " Object cannot be transformed to a Widget " )
widgets . append ( ( key , widget ) )
widget . parent = container
widgets . sort ( key = lambda e : e [ 1 ] . __class__ . __name__ )
container . children = [ e [ 1 ] for e in widgets ]
# Build the callback
def call_f ( name , old , new ) :
actual_kwargs = { }