mirror of
https://github.com/IHaskell/IHaskell.git
synced 2025-04-16 11:26:08 +00:00
Update widgets for the latest ipywidgets. Most widgets work
This commit is contained in:
parent
0b889810f8
commit
43b0f3870e
@ -3,8 +3,6 @@ module IHaskell.Display.Widgets (module X) where
|
||||
import IHaskell.Display.Widgets.Button as X
|
||||
|
||||
import IHaskell.Display.Widgets.Box.Box as X
|
||||
import IHaskell.Display.Widgets.Box.Proxy as X
|
||||
import IHaskell.Display.Widgets.Box.PlaceProxy as X
|
||||
import IHaskell.Display.Widgets.Box.FlexBox as X
|
||||
import IHaskell.Display.Widgets.Box.SelectionContainer.Accordion as X
|
||||
import IHaskell.Display.Widgets.Box.SelectionContainer.Tab as X
|
||||
@ -36,7 +34,7 @@ import IHaskell.Display.Widgets.Selection.ToggleButtons as X
|
||||
import IHaskell.Display.Widgets.Selection.SelectMultiple as X
|
||||
|
||||
import IHaskell.Display.Widgets.String.HTML as X
|
||||
import IHaskell.Display.Widgets.String.Latex as X
|
||||
import IHaskell.Display.Widgets.String.Label as X
|
||||
import IHaskell.Display.Widgets.String.Text as X
|
||||
import IHaskell.Display.Widgets.String.TextArea as X
|
||||
|
||||
|
@ -33,7 +33,7 @@ mkCheckBox = do
|
||||
-- Default properties, with a random uuid
|
||||
uuid <- U.random
|
||||
|
||||
let widgetState = WidgetState $ defaultBoolWidget "CheckboxView"
|
||||
let widgetState = WidgetState $ defaultBoolWidget "CheckboxView" "CheckboxModel"
|
||||
|
||||
stateIO <- newIORef widgetState
|
||||
|
||||
|
@ -34,7 +34,7 @@ mkToggleButton = do
|
||||
-- Default properties, with a random uuid
|
||||
uuid <- U.random
|
||||
|
||||
let boolState = defaultBoolWidget "ToggleButtonView"
|
||||
let boolState = defaultBoolWidget "ToggleButtonView" "ToggleButtonModel"
|
||||
toggleState = (Tooltip =:: "")
|
||||
:& (Icon =:: "")
|
||||
:& (ButtonStyle =:: DefaultButton)
|
||||
|
@ -32,7 +32,7 @@ mkValidWidget = do
|
||||
-- Default properties, with a random uuid
|
||||
uuid <- U.random
|
||||
|
||||
let boolState = defaultBoolWidget "ValidView"
|
||||
let boolState = defaultBoolWidget "ValidView" "ValidModel"
|
||||
validState = (ReadOutMsg =:: "") :& RNil
|
||||
widgetState = WidgetState $ boolState <+> validState
|
||||
|
||||
|
@ -30,7 +30,7 @@ mkBox = do
|
||||
-- Default properties, with a random uuid
|
||||
uuid <- U.random
|
||||
|
||||
let widgetState = WidgetState $ defaultBoxWidget "BoxView"
|
||||
let widgetState = WidgetState $ defaultBoxWidget "BoxView" "BoxModel"
|
||||
|
||||
stateIO <- newIORef widgetState
|
||||
|
||||
|
@ -32,7 +32,7 @@ mkFlexBox = do
|
||||
-- Default properties, with a random uuid
|
||||
uuid <- U.random
|
||||
|
||||
let boxAttrs = defaultBoxWidget "FlexBoxView"
|
||||
let boxAttrs = defaultBoxWidget "FlexBoxView" "FlexBoxModel"
|
||||
flxAttrs = (Orientation =:: HorizontalOrientation)
|
||||
:& (Flex =:: 0)
|
||||
:& (Pack =:: StartLocation)
|
||||
|
@ -1,57 +0,0 @@
|
||||
{-# LANGUAGE FlexibleInstances #-}
|
||||
{-# LANGUAGE OverloadedStrings #-}
|
||||
{-# LANGUAGE DataKinds #-}
|
||||
{-# LANGUAGE TypeSynonymInstances #-}
|
||||
|
||||
module IHaskell.Display.Widgets.Box.PlaceProxy (
|
||||
-- * The PlaceProxy widget
|
||||
PlaceProxy,
|
||||
-- * Constructor
|
||||
mkPlaceProxy) where
|
||||
|
||||
-- To keep `cabal repl` happy when running from the ihaskell repo
|
||||
import Prelude
|
||||
|
||||
import Data.Aeson
|
||||
import Data.IORef (newIORef)
|
||||
import Data.Vinyl (Rec(..), (<+>))
|
||||
import Data.Vinyl.Lens (rput)
|
||||
|
||||
import IHaskell.Display
|
||||
import IHaskell.Eval.Widgets
|
||||
import IHaskell.IPython.Message.UUID as U
|
||||
|
||||
import IHaskell.Display.Widgets.Types
|
||||
import IHaskell.Display.Widgets.Common
|
||||
|
||||
-- | A 'Box' represents a Box widget from IPython.html.widgets.
|
||||
type PlaceProxy = IPythonWidget PlaceProxyType
|
||||
|
||||
-- | Create a new box
|
||||
mkPlaceProxy :: IO PlaceProxy
|
||||
mkPlaceProxy = do
|
||||
-- Default properties, with a random uuid
|
||||
uuid <- U.random
|
||||
|
||||
let widgetClassState = defaultWidget "PlaceProxyView"
|
||||
baseState = rput (ModelName =:: "ProxyModel") widgetClassState
|
||||
proxyState = (Child =:: Nothing) :& (Selector =:: "") :& RNil
|
||||
widgetState = WidgetState $ baseState <+> proxyState
|
||||
|
||||
stateIO <- newIORef widgetState
|
||||
|
||||
let widget = IPythonWidget uuid stateIO
|
||||
|
||||
-- Open a comm for this widget, and store it in the kernel state
|
||||
widgetSendOpen widget $ toJSON widgetState
|
||||
|
||||
-- Return the widget
|
||||
return widget
|
||||
|
||||
instance IHaskellDisplay PlaceProxy where
|
||||
display b = do
|
||||
widgetSendView b
|
||||
return $ Display []
|
||||
|
||||
instance IHaskellWidget PlaceProxy where
|
||||
getCommUUID = uuid
|
@ -1,57 +0,0 @@
|
||||
{-# LANGUAGE FlexibleInstances #-}
|
||||
{-# LANGUAGE OverloadedStrings #-}
|
||||
{-# LANGUAGE DataKinds #-}
|
||||
{-# LANGUAGE TypeSynonymInstances #-}
|
||||
|
||||
module IHaskell.Display.Widgets.Box.Proxy (
|
||||
-- * The Proxy widget
|
||||
ProxyWidget,
|
||||
-- * Constructor
|
||||
mkProxyWidget) where
|
||||
|
||||
-- To keep `cabal repl` happy when running from the ihaskell repo
|
||||
import Prelude
|
||||
|
||||
import Data.Aeson
|
||||
import Data.IORef (newIORef)
|
||||
import Data.Vinyl (Rec(..), (<+>))
|
||||
import Data.Vinyl.Lens (rput)
|
||||
|
||||
import IHaskell.Display
|
||||
import IHaskell.Eval.Widgets
|
||||
import IHaskell.IPython.Message.UUID as U
|
||||
|
||||
import IHaskell.Display.Widgets.Types
|
||||
import IHaskell.Display.Widgets.Common
|
||||
|
||||
-- | A 'Box' represents a Box widget from IPython.html.widgets.
|
||||
type ProxyWidget = IPythonWidget ProxyType
|
||||
|
||||
-- | Create a new box
|
||||
mkProxyWidget :: IO ProxyWidget
|
||||
mkProxyWidget = do
|
||||
-- Default properties, with a random uuid
|
||||
uuid <- U.random
|
||||
|
||||
let widgetClassState = defaultWidget "ProxyView"
|
||||
baseState = rput (ModelName =:: "ProxyModel") widgetClassState
|
||||
proxyState = (Child =:: Nothing) :& RNil
|
||||
widgetState = WidgetState $ baseState <+> proxyState
|
||||
|
||||
stateIO <- newIORef widgetState
|
||||
|
||||
let proxy = IPythonWidget uuid stateIO
|
||||
|
||||
-- Open a comm for this widget, and store it in the kernel state
|
||||
widgetSendOpen proxy $ toJSON widgetState
|
||||
|
||||
-- Return the widget
|
||||
return proxy
|
||||
|
||||
instance IHaskellDisplay ProxyWidget where
|
||||
display b = do
|
||||
widgetSendView b
|
||||
return $ Display []
|
||||
|
||||
instance IHaskellWidget ProxyWidget where
|
||||
getCommUUID = uuid
|
@ -34,7 +34,7 @@ mkAccordion = do
|
||||
-- Default properties, with a random uuid
|
||||
uuid <- U.random
|
||||
|
||||
let widgetState = WidgetState $ defaultSelectionContainerWidget "AccordionView"
|
||||
let widgetState = WidgetState $ defaultSelectionContainerWidget "AccordionView" "AccordionModel"
|
||||
|
||||
stateIO <- newIORef widgetState
|
||||
|
||||
|
@ -34,7 +34,7 @@ mkTabWidget = do
|
||||
-- Default properties, with a random uuid
|
||||
uuid <- U.random
|
||||
|
||||
let widgetState = WidgetState $ defaultSelectionContainerWidget "TabView"
|
||||
let widgetState = WidgetState $ defaultSelectionContainerWidget "TabView" "TabModel"
|
||||
|
||||
stateIO <- newIORef widgetState
|
||||
|
||||
|
@ -35,7 +35,7 @@ mkButton = do
|
||||
-- Default properties, with a random uuid
|
||||
uuid <- U.random
|
||||
|
||||
let dom = defaultDOMWidget "ButtonView"
|
||||
let dom = defaultDOMWidget "ButtonView" "ButtonModel"
|
||||
but = (Description =:: "")
|
||||
:& (Tooltip =:: "")
|
||||
:& (Disabled =:: False)
|
||||
|
@ -35,7 +35,7 @@ mkBoundedFloatText = do
|
||||
-- Default properties, with a random uuid
|
||||
uuid <- U.random
|
||||
|
||||
let widgetState = WidgetState $ defaultBoundedFloatWidget "FloatTextView"
|
||||
let widgetState = WidgetState $ defaultBoundedFloatWidget "FloatTextView" "FloatTextModel"
|
||||
|
||||
stateIO <- newIORef widgetState
|
||||
|
||||
|
@ -32,7 +32,7 @@ mkFloatProgress = do
|
||||
-- Default properties, with a random uuid
|
||||
uuid <- U.random
|
||||
|
||||
let boundedFloatAttrs = defaultBoundedFloatWidget "ProgressView"
|
||||
let boundedFloatAttrs = defaultBoundedFloatWidget "ProgressView" "ProgressModel"
|
||||
progressAttrs = (Orientation =:: HorizontalOrientation)
|
||||
:& (BarStyle =:: DefaultBar)
|
||||
:& RNil
|
||||
|
@ -35,7 +35,7 @@ mkFloatSlider = do
|
||||
-- Default properties, with a random uuid
|
||||
uuid <- U.random
|
||||
|
||||
let boundedFloatAttrs = defaultBoundedFloatWidget "FloatSliderView"
|
||||
let boundedFloatAttrs = defaultBoundedFloatWidget "FloatSliderView" "FloatSliderModel"
|
||||
sliderAttrs = (Orientation =:: HorizontalOrientation)
|
||||
:& (ShowRange =:: False)
|
||||
:& (ReadOut =:: True)
|
||||
|
@ -37,7 +37,7 @@ mkFloatRangeSlider = do
|
||||
-- Default properties, with a random uuid
|
||||
uuid <- U.random
|
||||
|
||||
let boundedFloatAttrs = defaultBoundedFloatRangeWidget "FloatSliderView"
|
||||
let boundedFloatAttrs = defaultBoundedFloatRangeWidget "FloatSliderView" "FloatSliderModel"
|
||||
sliderAttrs = (Orientation =:: HorizontalOrientation)
|
||||
:& (ShowRange =:: True)
|
||||
:& (ReadOut =:: True)
|
||||
|
@ -34,7 +34,7 @@ mkFloatText = do
|
||||
-- Default properties, with a random uuid
|
||||
uuid <- U.random
|
||||
|
||||
let widgetState = WidgetState $ defaultFloatWidget "FloatTextView"
|
||||
let widgetState = WidgetState $ defaultFloatWidget "FloatTextView" "FloatTextModel"
|
||||
|
||||
stateIO <- newIORef widgetState
|
||||
|
||||
|
@ -33,7 +33,7 @@ mkImageWidget = do
|
||||
-- Default properties, with a random uuid
|
||||
uuid <- U.random
|
||||
|
||||
let dom = defaultDOMWidget "ImageView"
|
||||
let dom = defaultDOMWidget "ImageView" "ImageModel"
|
||||
img = (ImageFormat =:: PNG)
|
||||
:& (Width =:+ 0)
|
||||
:& (Height =:+ 0)
|
||||
|
@ -34,7 +34,7 @@ mkBoundedIntText = do
|
||||
-- Default properties, with a random uuid
|
||||
uuid <- U.random
|
||||
|
||||
let widgetState = WidgetState $ defaultBoundedIntWidget "IntTextView"
|
||||
let widgetState = WidgetState $ defaultBoundedIntWidget "IntTextView" "IntTextModel"
|
||||
|
||||
stateIO <- newIORef widgetState
|
||||
|
||||
|
@ -32,7 +32,7 @@ mkIntProgress = do
|
||||
-- Default properties, with a random uuid
|
||||
uuid <- U.random
|
||||
|
||||
let boundedIntAttrs = defaultBoundedIntWidget "ProgressView"
|
||||
let boundedIntAttrs = defaultBoundedIntWidget "ProgressView" "ProgressModel"
|
||||
progressAttrs = (Orientation =:: HorizontalOrientation)
|
||||
:& (BarStyle =:: DefaultBar)
|
||||
:& RNil
|
||||
|
@ -35,7 +35,7 @@ mkIntSlider = do
|
||||
-- Default properties, with a random uuid
|
||||
uuid <- U.random
|
||||
|
||||
let boundedIntAttrs = defaultBoundedIntWidget "IntSliderView"
|
||||
let boundedIntAttrs = defaultBoundedIntWidget "IntSliderView" "IntSliderModel"
|
||||
sliderAttrs = (Orientation =:: HorizontalOrientation)
|
||||
:& (ShowRange =:: False)
|
||||
:& (ReadOut =:: True)
|
||||
|
@ -36,7 +36,7 @@ mkIntRangeSlider = do
|
||||
-- Default properties, with a random uuid
|
||||
uuid <- U.random
|
||||
|
||||
let boundedIntAttrs = defaultBoundedIntRangeWidget "IntSliderView"
|
||||
let boundedIntAttrs = defaultBoundedIntRangeWidget "IntSliderView" "IntSliderModel"
|
||||
sliderAttrs = (Orientation =:: HorizontalOrientation)
|
||||
:& (ShowRange =:: True)
|
||||
:& (ReadOut =:: True)
|
||||
|
@ -34,7 +34,7 @@ mkIntText = do
|
||||
-- Default properties, with a random uuid
|
||||
uuid <- U.random
|
||||
|
||||
let widgetState = WidgetState $ defaultIntWidget "IntTextView"
|
||||
let widgetState = WidgetState $ defaultIntWidget "IntTextView" "IntTextModel"
|
||||
|
||||
stateIO <- newIORef widgetState
|
||||
|
||||
|
@ -5,6 +5,7 @@
|
||||
{-# LANGUAGE FlexibleContexts #-}
|
||||
{-# LANGUAGE ConstraintKinds #-}
|
||||
{-# LANGUAGE UndecidableInstances #-}
|
||||
{-# LANGUAGE UndecidableSuperClasses #-}
|
||||
{-# LANGUAGE PolyKinds #-}
|
||||
|
||||
module IHaskell.Display.Widgets.Interactive (interactive, uncurryHList, Rec(..), Argument(..)) where
|
||||
|
@ -36,7 +36,7 @@ mkOutputWidget = do
|
||||
-- Default properties, with a random uuid
|
||||
uuid <- U.random
|
||||
|
||||
let widgetState = WidgetState $ defaultDOMWidget "OutputView"
|
||||
let widgetState = WidgetState $ defaultDOMWidget "OutputView" "OutputModel"
|
||||
|
||||
stateIO <- newIORef widgetState
|
||||
|
||||
|
@ -34,7 +34,7 @@ mkDropdown :: IO Dropdown
|
||||
mkDropdown = do
|
||||
-- Default properties, with a random uuid
|
||||
uuid <- U.random
|
||||
let selectionAttrs = defaultSelectionWidget "DropdownView"
|
||||
let selectionAttrs = defaultSelectionWidget "DropdownView" "DropdownModel"
|
||||
dropdownAttrs = (ButtonStyle =:: DefaultButton) :& RNil
|
||||
widgetState = WidgetState $ selectionAttrs <+> dropdownAttrs
|
||||
|
||||
|
@ -33,7 +33,7 @@ mkRadioButtons :: IO RadioButtons
|
||||
mkRadioButtons = do
|
||||
-- Default properties, with a random uuid
|
||||
uuid <- U.random
|
||||
let widgetState = WidgetState $ defaultSelectionWidget "RadioButtonsView"
|
||||
let widgetState = WidgetState $ defaultSelectionWidget "RadioButtonsView" "RadioButtonsModel"
|
||||
|
||||
stateIO <- newIORef widgetState
|
||||
|
||||
|
@ -34,7 +34,7 @@ mkSelect :: IO Select
|
||||
mkSelect = do
|
||||
-- Default properties, with a random uuid
|
||||
uuid <- U.random
|
||||
let widgetState = WidgetState $ defaultSelectionWidget "SelectView"
|
||||
let widgetState = WidgetState $ defaultSelectionWidget "SelectView" "SelectModel"
|
||||
|
||||
stateIO <- newIORef widgetState
|
||||
|
||||
|
@ -34,7 +34,7 @@ mkSelectMultiple :: IO SelectMultiple
|
||||
mkSelectMultiple = do
|
||||
-- Default properties, with a random uuid
|
||||
uuid <- U.random
|
||||
let widgetState = WidgetState $ defaultMultipleSelectionWidget "SelectMultipleView"
|
||||
let widgetState = WidgetState $ defaultMultipleSelectionWidget "SelectMultipleView" "SelectMultipleModel"
|
||||
|
||||
stateIO <- newIORef widgetState
|
||||
|
||||
|
@ -34,7 +34,7 @@ mkToggleButtons :: IO ToggleButtons
|
||||
mkToggleButtons = do
|
||||
-- Default properties, with a random uuid
|
||||
uuid <- U.random
|
||||
let selectionAttrs = defaultSelectionWidget "ToggleButtonsView"
|
||||
let selectionAttrs = defaultSelectionWidget "ToggleButtonsView" "ToggleButtonsModel"
|
||||
toggleButtonsAttrs = (Tooltips =:: [])
|
||||
:& (Icons =:: [])
|
||||
:& (ButtonStyle =:: DefaultButton)
|
||||
|
@ -29,7 +29,7 @@ mkHTMLWidget :: IO HTMLWidget
|
||||
mkHTMLWidget = do
|
||||
-- Default properties, with a random uuid
|
||||
uuid <- U.random
|
||||
let widgetState = WidgetState $ defaultStringWidget "HTMLView"
|
||||
let widgetState = WidgetState $ defaultStringWidget "HTMLView" "HTMLModel"
|
||||
|
||||
stateIO <- newIORef widgetState
|
||||
|
||||
|
@ -3,11 +3,11 @@
|
||||
{-# LANGUAGE DataKinds #-}
|
||||
{-# LANGUAGE TypeSynonymInstances #-}
|
||||
|
||||
module IHaskell.Display.Widgets.String.Latex (
|
||||
-- * The Latex Widget
|
||||
LatexWidget,
|
||||
module IHaskell.Display.Widgets.String.Label (
|
||||
-- * The Label Widget
|
||||
LabelWidget,
|
||||
-- * Constructor
|
||||
mkLatexWidget) where
|
||||
mkLabelWidget) where
|
||||
|
||||
-- To keep `cabal repl` happy when running from the ihaskell repo
|
||||
import Prelude
|
||||
@ -21,15 +21,15 @@ import IHaskell.IPython.Message.UUID as U
|
||||
|
||||
import IHaskell.Display.Widgets.Types
|
||||
|
||||
-- | A 'LatexWidget' represents a Latex widget from IPython.html.widgets.
|
||||
type LatexWidget = IPythonWidget LatexType
|
||||
-- | A 'LabelWidget' represents a Label widget from IPython.html.widgets.
|
||||
type LabelWidget = IPythonWidget LabelType
|
||||
|
||||
-- | Create a new Latex widget
|
||||
mkLatexWidget :: IO LatexWidget
|
||||
mkLatexWidget = do
|
||||
-- | Create a new Label widget
|
||||
mkLabelWidget :: IO LabelWidget
|
||||
mkLabelWidget = do
|
||||
-- Default properties, with a random uuid
|
||||
uuid <- U.random
|
||||
let widgetState = WidgetState $ defaultStringWidget "LatexView"
|
||||
let widgetState = WidgetState $ defaultStringWidget "LabelView" "LabelModel"
|
||||
|
||||
stateIO <- newIORef widgetState
|
||||
|
||||
@ -41,10 +41,10 @@ mkLatexWidget = do
|
||||
-- Return the widget
|
||||
return widget
|
||||
|
||||
instance IHaskellDisplay LatexWidget where
|
||||
instance IHaskellDisplay LabelWidget where
|
||||
display b = do
|
||||
widgetSendView b
|
||||
return $ Display []
|
||||
|
||||
instance IHaskellWidget LatexWidget where
|
||||
instance IHaskellWidget LabelWidget where
|
||||
getCommUUID = uuid
|
@ -33,7 +33,7 @@ mkTextWidget :: IO TextWidget
|
||||
mkTextWidget = do
|
||||
-- Default properties, with a random uuid
|
||||
uuid <- U.random
|
||||
let strWidget = defaultStringWidget "TextView"
|
||||
let strWidget = defaultStringWidget "TextView" "TextModel"
|
||||
txtWidget = (SubmitHandler =:: return ()) :& (ChangeHandler =:: return ()) :& RNil
|
||||
widgetState = WidgetState $ strWidget <+> txtWidget
|
||||
|
||||
|
@ -33,7 +33,7 @@ mkTextArea :: IO TextArea
|
||||
mkTextArea = do
|
||||
-- Default properties, with a random uuid
|
||||
uuid <- U.random
|
||||
let strAttrs = defaultStringWidget "TextareaView"
|
||||
let strAttrs = defaultStringWidget "TextareaView" "TextareaModel"
|
||||
wgtAttrs = (ChangeHandler =:: return ()) :& RNil
|
||||
widgetState = WidgetState $ strAttrs <+> wgtAttrs
|
||||
|
||||
|
@ -241,7 +241,7 @@ data WidgetType = ButtonType
|
||||
| ImageType
|
||||
| OutputType
|
||||
| HTMLType
|
||||
| LatexType
|
||||
| LabelType
|
||||
| TextType
|
||||
| TextAreaType
|
||||
| CheckBoxType
|
||||
@ -263,8 +263,6 @@ data WidgetType = ButtonType
|
||||
| FloatProgressType
|
||||
| FloatRangeSliderType
|
||||
| BoxType
|
||||
| ProxyType
|
||||
| PlaceProxyType
|
||||
| FlexBoxType
|
||||
| AccordionType
|
||||
| TabType
|
||||
@ -280,7 +278,7 @@ type family WidgetFields (w :: WidgetType) :: [Field] where
|
||||
DOMWidgetClass :++ '[S.ImageFormat, S.Width, S.Height, S.B64Value]
|
||||
WidgetFields OutputType = DOMWidgetClass
|
||||
WidgetFields HTMLType = StringClass
|
||||
WidgetFields LatexType = StringClass
|
||||
WidgetFields LabelType = StringClass
|
||||
WidgetFields TextType =
|
||||
StringClass :++ '[S.SubmitHandler, S.ChangeHandler]
|
||||
WidgetFields TextAreaType = StringClass :++ '[S.ChangeHandler]
|
||||
@ -315,9 +313,6 @@ type family WidgetFields (w :: WidgetType) :: [Field] where
|
||||
BoundedFloatRangeClass :++
|
||||
'[S.Orientation, S.ShowRange, S.ReadOut, S.SliderColor]
|
||||
WidgetFields BoxType = BoxClass
|
||||
WidgetFields ProxyType = WidgetClass :++ '[S.Child]
|
||||
WidgetFields PlaceProxyType =
|
||||
WidgetFields ProxyType :++ '[S.Selector]
|
||||
WidgetFields FlexBoxType =
|
||||
BoxClass :++ '[S.Orientation, S.Flex, S.Pack, S.Align]
|
||||
WidgetFields AccordionType = SelectionContainerClass
|
||||
@ -619,23 +614,23 @@ s =:+ val = Attr
|
||||
(reflect s)
|
||||
|
||||
-- | Get a field from a singleton Adapted from: http://stackoverflow.com/a/28033250/2388535
|
||||
reflect :: forall (f :: Field). (SingI f, SingKind ('KProxy :: KProxy Field)) => Sing f -> Field
|
||||
reflect :: forall (f :: Field). (SingI f) => Sing f -> Field
|
||||
reflect = fromSing
|
||||
|
||||
-- | A record representing an object of the Widget class from IPython
|
||||
defaultWidget :: FieldType S.ViewName -> Rec Attr WidgetClass
|
||||
defaultWidget viewName = (ViewModule =:: "")
|
||||
:& (ViewName =:: viewName)
|
||||
:& (ModelModule =:: "")
|
||||
:& (ModelName =:: "WidgetModel")
|
||||
:& (MsgThrottle =:+ 3)
|
||||
:& (Version =:: 0)
|
||||
:& (DisplayHandler =:: return ())
|
||||
:& RNil
|
||||
defaultWidget :: FieldType S.ViewName -> FieldType S.ModelName -> Rec Attr WidgetClass
|
||||
defaultWidget viewName modelName = (ViewModule =:: "jupyter-js-widgets")
|
||||
:& (ViewName =:: viewName)
|
||||
:& (ModelModule =:: "jupyter-js-widgets")
|
||||
:& (ModelName =:: modelName)
|
||||
:& (MsgThrottle =:+ 3)
|
||||
:& (Version =:: 0)
|
||||
:& (DisplayHandler =:: return ())
|
||||
:& RNil
|
||||
|
||||
-- | A record representing an object of the DOMWidget class from IPython
|
||||
defaultDOMWidget :: FieldType S.ViewName -> Rec Attr DOMWidgetClass
|
||||
defaultDOMWidget viewName = defaultWidget viewName <+> domAttrs
|
||||
defaultDOMWidget :: FieldType S.ViewName -> FieldType S.ModelName -> Rec Attr DOMWidgetClass
|
||||
defaultDOMWidget viewName modelName = defaultWidget viewName modelName <+> domAttrs
|
||||
where
|
||||
domAttrs = (Visible =:: True)
|
||||
:& (CSS =:: [])
|
||||
@ -657,8 +652,8 @@ defaultDOMWidget viewName = defaultWidget viewName <+> domAttrs
|
||||
:& RNil
|
||||
|
||||
-- | A record representing a widget of the _String class from IPython
|
||||
defaultStringWidget :: FieldType S.ViewName -> Rec Attr StringClass
|
||||
defaultStringWidget viewName = defaultDOMWidget viewName <+> strAttrs
|
||||
defaultStringWidget :: FieldType S.ViewName -> FieldType S.ModelName -> Rec Attr StringClass
|
||||
defaultStringWidget viewName modelName = defaultDOMWidget viewName modelName <+> strAttrs
|
||||
where
|
||||
strAttrs = (StringValue =:: "")
|
||||
:& (Disabled =:: False)
|
||||
@ -667,8 +662,8 @@ defaultStringWidget viewName = defaultDOMWidget viewName <+> strAttrs
|
||||
:& RNil
|
||||
|
||||
-- | A record representing a widget of the _Bool class from IPython
|
||||
defaultBoolWidget :: FieldType S.ViewName -> Rec Attr BoolClass
|
||||
defaultBoolWidget viewName = defaultDOMWidget viewName <+> boolAttrs
|
||||
defaultBoolWidget :: FieldType S.ViewName -> FieldType S.ModelName -> Rec Attr BoolClass
|
||||
defaultBoolWidget viewName modelName = defaultDOMWidget viewName modelName <+> boolAttrs
|
||||
where
|
||||
boolAttrs = (BoolValue =:: False)
|
||||
:& (Disabled =:: False)
|
||||
@ -677,8 +672,8 @@ defaultBoolWidget viewName = defaultDOMWidget viewName <+> boolAttrs
|
||||
:& RNil
|
||||
|
||||
-- | A record representing a widget of the _Selection class from IPython
|
||||
defaultSelectionWidget :: FieldType S.ViewName -> Rec Attr SelectionClass
|
||||
defaultSelectionWidget viewName = defaultDOMWidget viewName <+> selectionAttrs
|
||||
defaultSelectionWidget :: FieldType S.ViewName -> FieldType S.ModelName -> Rec Attr SelectionClass
|
||||
defaultSelectionWidget viewName modelName = defaultDOMWidget viewName modelName <+> selectionAttrs
|
||||
where
|
||||
selectionAttrs = (Options =:: OptionLabels [])
|
||||
:& (SelectedValue =:: "")
|
||||
@ -689,8 +684,8 @@ defaultSelectionWidget viewName = defaultDOMWidget viewName <+> selectionAttrs
|
||||
:& RNil
|
||||
|
||||
-- | A record representing a widget of the _MultipleSelection class from IPython
|
||||
defaultMultipleSelectionWidget :: FieldType S.ViewName -> Rec Attr MultipleSelectionClass
|
||||
defaultMultipleSelectionWidget viewName = defaultDOMWidget viewName <+> mulSelAttrs
|
||||
defaultMultipleSelectionWidget :: FieldType S.ViewName -> FieldType S.ModelName -> Rec Attr MultipleSelectionClass
|
||||
defaultMultipleSelectionWidget viewName modelName = defaultDOMWidget viewName modelName <+> mulSelAttrs
|
||||
where
|
||||
mulSelAttrs = (Options =:: OptionLabels [])
|
||||
:& (SelectedValues =:: [])
|
||||
@ -701,8 +696,8 @@ defaultMultipleSelectionWidget viewName = defaultDOMWidget viewName <+> mulSelAt
|
||||
:& RNil
|
||||
|
||||
-- | A record representing a widget of the _Int class from IPython
|
||||
defaultIntWidget :: FieldType S.ViewName -> Rec Attr IntClass
|
||||
defaultIntWidget viewName = defaultDOMWidget viewName <+> intAttrs
|
||||
defaultIntWidget :: FieldType S.ViewName -> FieldType S.ModelName -> Rec Attr IntClass
|
||||
defaultIntWidget viewName modelName = defaultDOMWidget viewName modelName <+> intAttrs
|
||||
where
|
||||
intAttrs = (IntValue =:: 0)
|
||||
:& (Disabled =:: False)
|
||||
@ -711,8 +706,8 @@ defaultIntWidget viewName = defaultDOMWidget viewName <+> intAttrs
|
||||
:& RNil
|
||||
|
||||
-- | A record representing a widget of the _BoundedInt class from IPython
|
||||
defaultBoundedIntWidget :: FieldType S.ViewName -> Rec Attr BoundedIntClass
|
||||
defaultBoundedIntWidget viewName = defaultIntWidget viewName <+> boundedIntAttrs
|
||||
defaultBoundedIntWidget :: FieldType S.ViewName -> FieldType S.ModelName -> Rec Attr BoundedIntClass
|
||||
defaultBoundedIntWidget viewName modelName = defaultIntWidget viewName modelName <+> boundedIntAttrs
|
||||
where
|
||||
boundedIntAttrs = (StepInt =:: 1)
|
||||
:& (MinInt =:: 0)
|
||||
@ -720,8 +715,8 @@ defaultBoundedIntWidget viewName = defaultIntWidget viewName <+> boundedIntAttrs
|
||||
:& RNil
|
||||
|
||||
-- | A record representing a widget of the _BoundedInt class from IPython
|
||||
defaultIntRangeWidget :: FieldType S.ViewName -> Rec Attr IntRangeClass
|
||||
defaultIntRangeWidget viewName = defaultIntWidget viewName <+> rangeAttrs
|
||||
defaultIntRangeWidget :: FieldType S.ViewName -> FieldType S.ModelName -> Rec Attr IntRangeClass
|
||||
defaultIntRangeWidget viewName modelName = defaultIntWidget viewName modelName <+> rangeAttrs
|
||||
where
|
||||
rangeAttrs = (IntPairValue =:: (25, 75))
|
||||
:& (LowerInt =:: 0)
|
||||
@ -729,8 +724,8 @@ defaultIntRangeWidget viewName = defaultIntWidget viewName <+> rangeAttrs
|
||||
:& RNil
|
||||
|
||||
-- | A record representing a widget of the _BoundedIntRange class from IPython
|
||||
defaultBoundedIntRangeWidget :: FieldType S.ViewName -> Rec Attr BoundedIntRangeClass
|
||||
defaultBoundedIntRangeWidget viewName = defaultIntRangeWidget viewName <+> boundedIntRangeAttrs
|
||||
defaultBoundedIntRangeWidget :: FieldType S.ViewName -> FieldType S.ModelName -> Rec Attr BoundedIntRangeClass
|
||||
defaultBoundedIntRangeWidget viewName modelName = defaultIntRangeWidget viewName modelName <+> boundedIntRangeAttrs
|
||||
where
|
||||
boundedIntRangeAttrs = (StepInt =:+ 1)
|
||||
:& (MinInt =:: 0)
|
||||
@ -738,8 +733,8 @@ defaultBoundedIntRangeWidget viewName = defaultIntRangeWidget viewName <+> bound
|
||||
:& RNil
|
||||
|
||||
-- | A record representing a widget of the _Float class from IPython
|
||||
defaultFloatWidget :: FieldType S.ViewName -> Rec Attr FloatClass
|
||||
defaultFloatWidget viewName = defaultDOMWidget viewName <+> intAttrs
|
||||
defaultFloatWidget :: FieldType S.ViewName -> FieldType S.ModelName -> Rec Attr FloatClass
|
||||
defaultFloatWidget viewName modelName = defaultDOMWidget viewName modelName <+> intAttrs
|
||||
where
|
||||
intAttrs = (FloatValue =:: 0)
|
||||
:& (Disabled =:: False)
|
||||
@ -748,8 +743,8 @@ defaultFloatWidget viewName = defaultDOMWidget viewName <+> intAttrs
|
||||
:& RNil
|
||||
|
||||
-- | A record representing a widget of the _BoundedFloat class from IPython
|
||||
defaultBoundedFloatWidget :: FieldType S.ViewName -> Rec Attr BoundedFloatClass
|
||||
defaultBoundedFloatWidget viewName = defaultFloatWidget viewName <+> boundedFloatAttrs
|
||||
defaultBoundedFloatWidget :: FieldType S.ViewName -> FieldType S.ModelName -> Rec Attr BoundedFloatClass
|
||||
defaultBoundedFloatWidget viewName modelName = defaultFloatWidget viewName modelName <+> boundedFloatAttrs
|
||||
where
|
||||
boundedFloatAttrs = (StepFloat =:+ 1)
|
||||
:& (MinFloat =:: 0)
|
||||
@ -757,8 +752,8 @@ defaultBoundedFloatWidget viewName = defaultFloatWidget viewName <+> boundedFloa
|
||||
:& RNil
|
||||
|
||||
-- | A record representing a widget of the _BoundedFloat class from IPython
|
||||
defaultFloatRangeWidget :: FieldType S.ViewName -> Rec Attr FloatRangeClass
|
||||
defaultFloatRangeWidget viewName = defaultFloatWidget viewName <+> rangeAttrs
|
||||
defaultFloatRangeWidget :: FieldType S.ViewName -> FieldType S.ModelName -> Rec Attr FloatRangeClass
|
||||
defaultFloatRangeWidget viewName modelName = defaultFloatWidget viewName modelName <+> rangeAttrs
|
||||
where
|
||||
rangeAttrs = (FloatPairValue =:: (25, 75))
|
||||
:& (LowerFloat =:: 0)
|
||||
@ -766,8 +761,8 @@ defaultFloatRangeWidget viewName = defaultFloatWidget viewName <+> rangeAttrs
|
||||
:& RNil
|
||||
|
||||
-- | A record representing a widget of the _BoundedFloatRange class from IPython
|
||||
defaultBoundedFloatRangeWidget :: FieldType S.ViewName -> Rec Attr BoundedFloatRangeClass
|
||||
defaultBoundedFloatRangeWidget viewName = defaultFloatRangeWidget viewName <+> boundedFloatRangeAttrs
|
||||
defaultBoundedFloatRangeWidget :: FieldType S.ViewName -> FieldType S.ModelName -> Rec Attr BoundedFloatRangeClass
|
||||
defaultBoundedFloatRangeWidget viewName modelName = defaultFloatRangeWidget viewName modelName <+> boundedFloatRangeAttrs
|
||||
where
|
||||
boundedFloatRangeAttrs = (StepFloat =:+ 1)
|
||||
:& (MinFloat =:: 0)
|
||||
@ -775,20 +770,18 @@ defaultBoundedFloatRangeWidget viewName = defaultFloatRangeWidget viewName <+> b
|
||||
:& RNil
|
||||
|
||||
-- | A record representing a widget of the _Box class from IPython
|
||||
defaultBoxWidget :: FieldType S.ViewName -> Rec Attr BoxClass
|
||||
defaultBoxWidget viewName = domAttrs <+> boxAttrs
|
||||
defaultBoxWidget :: FieldType S.ViewName -> FieldType S.ModelName -> Rec Attr BoxClass
|
||||
defaultBoxWidget viewName modelName = defaultDOMWidget viewName modelName <+> intAttrs
|
||||
where
|
||||
defaultDOM = defaultDOMWidget viewName
|
||||
domAttrs = rput (ModelName =:: "BoxModel") defaultDOM
|
||||
boxAttrs = (Children =:: [])
|
||||
intAttrs = (Children =:: [])
|
||||
:& (OverflowX =:: DefaultOverflow)
|
||||
:& (OverflowY =:: DefaultOverflow)
|
||||
:& (BoxStyle =:: DefaultBox)
|
||||
:& RNil
|
||||
|
||||
-- | A record representing a widget of the _SelectionContainer class from IPython
|
||||
defaultSelectionContainerWidget :: FieldType S.ViewName -> Rec Attr SelectionContainerClass
|
||||
defaultSelectionContainerWidget viewName = defaultBoxWidget viewName <+> selAttrs
|
||||
defaultSelectionContainerWidget :: FieldType S.ViewName -> FieldType S.ModelName -> Rec Attr SelectionContainerClass
|
||||
defaultSelectionContainerWidget viewName modelName = defaultBoxWidget viewName modelName <+> selAttrs
|
||||
where
|
||||
selAttrs = (Titles =:: [])
|
||||
:& (SelectedIndex =:: 0)
|
||||
|
Loading…
x
Reference in New Issue
Block a user