ihaskell-widgets 0.2.3.1 → 0.2.3.2
raw patch · 36 files changed
+137/−323 lines, 36 filesdep ~aesondep ~basenew-uploader
Dependency ranges changed: aeson, base
Files
- ihaskell-widgets.cabal +4/−7
- src/IHaskell/Display/Widgets.hs +1/−4
- src/IHaskell/Display/Widgets/Bool/CheckBox.hs +1/−1
- src/IHaskell/Display/Widgets/Bool/ToggleButton.hs +1/−1
- src/IHaskell/Display/Widgets/Bool/Valid.hs +1/−1
- src/IHaskell/Display/Widgets/Box/Box.hs +1/−1
- src/IHaskell/Display/Widgets/Box/FlexBox.hs +0/−59
- src/IHaskell/Display/Widgets/Box/PlaceProxy.hs +0/−57
- src/IHaskell/Display/Widgets/Box/Proxy.hs +0/−57
- src/IHaskell/Display/Widgets/Box/SelectionContainer/Accordion.hs +1/−1
- src/IHaskell/Display/Widgets/Box/SelectionContainer/Tab.hs +1/−1
- src/IHaskell/Display/Widgets/Button.hs +1/−1
- src/IHaskell/Display/Widgets/Float/BoundedFloat/BoundedFloatText.hs +1/−1
- src/IHaskell/Display/Widgets/Float/BoundedFloat/FloatProgress.hs +1/−1
- src/IHaskell/Display/Widgets/Float/BoundedFloat/FloatSlider.hs +1/−1
- src/IHaskell/Display/Widgets/Float/BoundedFloatRange/FloatRangeSlider.hs +1/−1
- src/IHaskell/Display/Widgets/Float/FloatText.hs +1/−1
- src/IHaskell/Display/Widgets/Image.hs +1/−1
- src/IHaskell/Display/Widgets/Int/BoundedInt/BoundedIntText.hs +1/−1
- src/IHaskell/Display/Widgets/Int/BoundedInt/IntProgress.hs +1/−1
- src/IHaskell/Display/Widgets/Int/BoundedInt/IntSlider.hs +1/−1
- src/IHaskell/Display/Widgets/Int/BoundedIntRange/IntRangeSlider.hs +1/−1
- src/IHaskell/Display/Widgets/Int/IntText.hs +1/−1
- src/IHaskell/Display/Widgets/Interactive.hs +10/−7
- src/IHaskell/Display/Widgets/Output.hs +1/−1
- src/IHaskell/Display/Widgets/Selection/Dropdown.hs +1/−1
- src/IHaskell/Display/Widgets/Selection/RadioButtons.hs +1/−1
- src/IHaskell/Display/Widgets/Selection/Select.hs +1/−1
- src/IHaskell/Display/Widgets/Selection/SelectMultiple.hs +1/−1
- src/IHaskell/Display/Widgets/Selection/ToggleButtons.hs +1/−1
- src/IHaskell/Display/Widgets/String/HTML.hs +1/−1
- src/IHaskell/Display/Widgets/String/Label.hs +50/−0
- src/IHaskell/Display/Widgets/String/Latex.hs +0/−50
- src/IHaskell/Display/Widgets/String/Text.hs +1/−1
- src/IHaskell/Display/Widgets/String/TextArea.hs +1/−1
- src/IHaskell/Display/Widgets/Types.hs +45/−55
ihaskell-widgets.cabal view
@@ -10,7 +10,7 @@ -- PVP summary: +-+------- breaking API changes -- | | +----- non-breaking API additions -- | | | +--- code changes with no API change-version: 0.2.3.1+version: 0.2.3.2 -- A short (one-line) description of the package. synopsis: IPython standard widgets for IHaskell.@@ -57,9 +57,6 @@ -- Modules included in this library but not exported. other-modules: IHaskell.Display.Widgets.Button IHaskell.Display.Widgets.Box.Box- IHaskell.Display.Widgets.Box.Proxy- IHaskell.Display.Widgets.Box.PlaceProxy- IHaskell.Display.Widgets.Box.FlexBox IHaskell.Display.Widgets.Box.SelectionContainer.Accordion IHaskell.Display.Widgets.Box.SelectionContainer.Tab IHaskell.Display.Widgets.Bool.CheckBox@@ -83,7 +80,7 @@ IHaskell.Display.Widgets.Selection.ToggleButtons IHaskell.Display.Widgets.Selection.SelectMultiple IHaskell.Display.Widgets.String.HTML- IHaskell.Display.Widgets.String.Latex+ IHaskell.Display.Widgets.String.Label IHaskell.Display.Widgets.String.Text IHaskell.Display.Widgets.String.TextArea @@ -96,8 +93,8 @@ -- Other library packages from which modules are imported. -- singletons 2.* require ghc 7.10.2- build-depends: aeson >=0.7 && < 0.12- , base >=4.7 && <4.9+ build-depends: aeson >=0.7+ , base >=4.7 && <5 , containers >= 0.5 , ipython-kernel >= 0.6.1.2 , text >= 0.11
src/IHaskell/Display/Widgets.hs view
@@ -3,9 +3,6 @@ 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 +33,7 @@ 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
src/IHaskell/Display/Widgets/Bool/CheckBox.hs view
@@ -33,7 +33,7 @@ -- Default properties, with a random uuid uuid <- U.random - let widgetState = WidgetState $ defaultBoolWidget "CheckboxView"+ let widgetState = WidgetState $ defaultBoolWidget "CheckboxView" "CheckboxModel" stateIO <- newIORef widgetState
src/IHaskell/Display/Widgets/Bool/ToggleButton.hs view
@@ -34,7 +34,7 @@ -- Default properties, with a random uuid uuid <- U.random - let boolState = defaultBoolWidget "ToggleButtonView"+ let boolState = defaultBoolWidget "ToggleButtonView" "ToggleButtonModel" toggleState = (Tooltip =:: "") :& (Icon =:: "") :& (ButtonStyle =:: DefaultButton)
src/IHaskell/Display/Widgets/Bool/Valid.hs view
@@ -32,7 +32,7 @@ -- 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
src/IHaskell/Display/Widgets/Box/Box.hs view
@@ -30,7 +30,7 @@ -- Default properties, with a random uuid uuid <- U.random - let widgetState = WidgetState $ defaultBoxWidget "BoxView"+ let widgetState = WidgetState $ defaultBoxWidget "BoxView" "BoxModel" stateIO <- newIORef widgetState
− src/IHaskell/Display/Widgets/Box/FlexBox.hs
@@ -1,59 +0,0 @@-{-# LANGUAGE FlexibleInstances #-}-{-# LANGUAGE OverloadedStrings #-}-{-# LANGUAGE DataKinds #-}-{-# LANGUAGE TypeSynonymInstances #-}--module IHaskell.Display.Widgets.Box.FlexBox (--- * The FlexBox widget-FlexBox, - -- * Constructor- mkFlexBox) 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 IHaskell.Display-import IHaskell.Eval.Widgets-import IHaskell.IPython.Message.UUID as U--import IHaskell.Display.Widgets.Types-import IHaskell.Display.Widgets.Common---- | A 'FlexBox' represents a FlexBox widget from IPython.html.widgets.-type FlexBox = IPythonWidget FlexBoxType---- | Create a new box-mkFlexBox :: IO FlexBox-mkFlexBox = do- -- Default properties, with a random uuid- uuid <- U.random-- let boxAttrs = defaultBoxWidget "FlexBoxView"- flxAttrs = (Orientation =:: HorizontalOrientation)- :& (Flex =:: 0)- :& (Pack =:: StartLocation)- :& (Align =:: StartLocation)- :& RNil- widgetState = WidgetState $ boxAttrs <+> flxAttrs-- stateIO <- newIORef widgetState-- let box = IPythonWidget uuid stateIO-- -- Open a comm for this widget, and store it in the kernel state- widgetSendOpen box $ toJSON widgetState-- -- Return the widget- return box--instance IHaskellDisplay FlexBox where- display b = do- widgetSendView b- return $ Display []--instance IHaskellWidget FlexBox where- getCommUUID = uuid
− src/IHaskell/Display/Widgets/Box/PlaceProxy.hs
@@ -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
− src/IHaskell/Display/Widgets/Box/Proxy.hs
@@ -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
src/IHaskell/Display/Widgets/Box/SelectionContainer/Accordion.hs view
@@ -34,7 +34,7 @@ -- Default properties, with a random uuid uuid <- U.random - let widgetState = WidgetState $ defaultSelectionContainerWidget "AccordionView"+ let widgetState = WidgetState $ defaultSelectionContainerWidget "AccordionView" "AccordionModel" stateIO <- newIORef widgetState
src/IHaskell/Display/Widgets/Box/SelectionContainer/Tab.hs view
@@ -34,7 +34,7 @@ -- Default properties, with a random uuid uuid <- U.random - let widgetState = WidgetState $ defaultSelectionContainerWidget "TabView"+ let widgetState = WidgetState $ defaultSelectionContainerWidget "TabView" "TabModel" stateIO <- newIORef widgetState
src/IHaskell/Display/Widgets/Button.hs view
@@ -35,7 +35,7 @@ -- Default properties, with a random uuid uuid <- U.random - let dom = defaultDOMWidget "ButtonView"+ let dom = defaultDOMWidget "ButtonView" "ButtonModel" but = (Description =:: "") :& (Tooltip =:: "") :& (Disabled =:: False)
src/IHaskell/Display/Widgets/Float/BoundedFloat/BoundedFloatText.hs view
@@ -35,7 +35,7 @@ -- Default properties, with a random uuid uuid <- U.random - let widgetState = WidgetState $ defaultBoundedFloatWidget "FloatTextView"+ let widgetState = WidgetState $ defaultBoundedFloatWidget "FloatTextView" "FloatTextModel" stateIO <- newIORef widgetState
src/IHaskell/Display/Widgets/Float/BoundedFloat/FloatProgress.hs view
@@ -32,7 +32,7 @@ -- Default properties, with a random uuid uuid <- U.random - let boundedFloatAttrs = defaultBoundedFloatWidget "ProgressView"+ let boundedFloatAttrs = defaultBoundedFloatWidget "ProgressView" "ProgressModel" progressAttrs = (Orientation =:: HorizontalOrientation) :& (BarStyle =:: DefaultBar) :& RNil
src/IHaskell/Display/Widgets/Float/BoundedFloat/FloatSlider.hs view
@@ -35,7 +35,7 @@ -- 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)
src/IHaskell/Display/Widgets/Float/BoundedFloatRange/FloatRangeSlider.hs view
@@ -37,7 +37,7 @@ -- 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)
src/IHaskell/Display/Widgets/Float/FloatText.hs view
@@ -34,7 +34,7 @@ -- Default properties, with a random uuid uuid <- U.random - let widgetState = WidgetState $ defaultFloatWidget "FloatTextView"+ let widgetState = WidgetState $ defaultFloatWidget "FloatTextView" "FloatTextModel" stateIO <- newIORef widgetState
src/IHaskell/Display/Widgets/Image.hs view
@@ -33,7 +33,7 @@ -- 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)
src/IHaskell/Display/Widgets/Int/BoundedInt/BoundedIntText.hs view
@@ -34,7 +34,7 @@ -- Default properties, with a random uuid uuid <- U.random - let widgetState = WidgetState $ defaultBoundedIntWidget "IntTextView"+ let widgetState = WidgetState $ defaultBoundedIntWidget "IntTextView" "IntTextModel" stateIO <- newIORef widgetState
src/IHaskell/Display/Widgets/Int/BoundedInt/IntProgress.hs view
@@ -32,7 +32,7 @@ -- Default properties, with a random uuid uuid <- U.random - let boundedIntAttrs = defaultBoundedIntWidget "ProgressView"+ let boundedIntAttrs = defaultBoundedIntWidget "ProgressView" "ProgressModel" progressAttrs = (Orientation =:: HorizontalOrientation) :& (BarStyle =:: DefaultBar) :& RNil
src/IHaskell/Display/Widgets/Int/BoundedInt/IntSlider.hs view
@@ -35,7 +35,7 @@ -- 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)
src/IHaskell/Display/Widgets/Int/BoundedIntRange/IntRangeSlider.hs view
@@ -36,7 +36,7 @@ -- 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)
src/IHaskell/Display/Widgets/Int/IntText.hs view
@@ -34,7 +34,7 @@ -- Default properties, with a random uuid uuid <- U.random - let widgetState = WidgetState $ defaultIntWidget "IntTextView"+ let widgetState = WidgetState $ defaultIntWidget "IntTextView" "IntTextModel" stateIO <- newIORef widgetState
src/IHaskell/Display/Widgets/Interactive.hs view
@@ -5,6 +5,7 @@ {-# LANGUAGE FlexibleContexts #-} {-# LANGUAGE ConstraintKinds #-} {-# LANGUAGE UndecidableInstances #-}+{-# LANGUAGE UndecidableSuperClasses #-} {-# LANGUAGE PolyKinds #-} module IHaskell.Display.Widgets.Interactive (interactive, uncurryHList, Rec(..), Argument(..)) where@@ -24,7 +25,7 @@ import IHaskell.Display.Widgets.Common import qualified IHaskell.Display.Widgets.Singletons as S (SField, Field(..)) -import IHaskell.Display.Widgets.Box.FlexBox+import IHaskell.Display.Widgets.Box.Box import IHaskell.Display.Widgets.Bool.CheckBox import IHaskell.Display.Widgets.String.Text import IHaskell.Display.Widgets.Int.BoundedInt.IntSlider@@ -119,23 +120,23 @@ mkConfs _ = WidgetConf wrapped :& mkConfs (Proxy :: Proxy ts) interactive :: (IHaskellDisplay r, MakeConfs ts)- => (HList ts -> r) -> Rec Argument ts -> IO FlexBox+ => (HList ts -> r) -> Rec Argument ts -> IO Box interactive func = let confs = mkConfs Proxy in liftToWidgets func confs -- | Transform a function (HList ts -> r) to one which: 1) Uses widgets to accept the arguments 2)--- Accepts initial values for the arguments 3) Creates a compound FlexBox widget with an embedded+-- Accepts initial values for the arguments 3) Creates a compound Box widget with an embedded -- OutputWidget for display liftToWidgets :: IHaskellDisplay r- => (HList ts -> r) -> Rec WidgetConf ts -> Rec Argument ts -> IO FlexBox+ => (HList ts -> r) -> Rec WidgetConf ts -> Rec Argument ts -> IO Box liftToWidgets func rc initvals = do let constructors = rmap extractConstructor rc getters = rmap extractGetter rc eventSetters = rmap extractEventSetter rc initializers = rmap extractInitializer rc - bx <- mkFlexBox+ bx <- mkBox out <- mkOutputWidget -- Create a list of widgets@@ -152,9 +153,11 @@ setInitialValues initializers widgets initvals -- applyValueSetters valueSetters widgets $ getList defvals setField out Width 500- setField bx Orientation VerticalOrientation+ -- TODO This can't be set right now since we switched FlexBox to a regular+ -- Box. This is a styling/layout parameter now but these haven't been implemented yet.+ -- setField bx Orientation VerticalOrientation - -- Set children for the FlexBox+ -- Set children for the Box let children = mkChildren widgets setField bx Children $ children ++ [ChildWidget out]
src/IHaskell/Display/Widgets/Output.hs view
@@ -36,7 +36,7 @@ -- Default properties, with a random uuid uuid <- U.random - let widgetState = WidgetState $ defaultDOMWidget "OutputView"+ let widgetState = WidgetState $ defaultDOMWidget "OutputView" "OutputModel" stateIO <- newIORef widgetState
src/IHaskell/Display/Widgets/Selection/Dropdown.hs view
@@ -34,7 +34,7 @@ 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
src/IHaskell/Display/Widgets/Selection/RadioButtons.hs view
@@ -33,7 +33,7 @@ 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
src/IHaskell/Display/Widgets/Selection/Select.hs view
@@ -34,7 +34,7 @@ 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
src/IHaskell/Display/Widgets/Selection/SelectMultiple.hs view
@@ -34,7 +34,7 @@ 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
src/IHaskell/Display/Widgets/Selection/ToggleButtons.hs view
@@ -34,7 +34,7 @@ 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)
src/IHaskell/Display/Widgets/String/HTML.hs view
@@ -29,7 +29,7 @@ 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
+ src/IHaskell/Display/Widgets/String/Label.hs view
@@ -0,0 +1,50 @@+{-# LANGUAGE FlexibleInstances #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE DataKinds #-}+{-# LANGUAGE TypeSynonymInstances #-}++module IHaskell.Display.Widgets.String.Label (+-- * The Label Widget+LabelWidget, + -- * Constructor+ mkLabelWidget) where++-- To keep `cabal repl` happy when running from the ihaskell repo+import Prelude++import Data.Aeson+import Data.IORef (newIORef)++import IHaskell.Display+import IHaskell.Eval.Widgets+import IHaskell.IPython.Message.UUID as U++import IHaskell.Display.Widgets.Types++-- | A 'LabelWidget' represents a Label widget from IPython.html.widgets.+type LabelWidget = IPythonWidget LabelType++-- | Create a new Label widget+mkLabelWidget :: IO LabelWidget+mkLabelWidget = do+ -- Default properties, with a random uuid+ uuid <- U.random+ let widgetState = WidgetState $ defaultStringWidget "LabelView" "LabelModel"++ 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 LabelWidget where+ display b = do+ widgetSendView b+ return $ Display []++instance IHaskellWidget LabelWidget where+ getCommUUID = uuid
− src/IHaskell/Display/Widgets/String/Latex.hs
@@ -1,50 +0,0 @@-{-# LANGUAGE FlexibleInstances #-}-{-# LANGUAGE OverloadedStrings #-}-{-# LANGUAGE DataKinds #-}-{-# LANGUAGE TypeSynonymInstances #-}--module IHaskell.Display.Widgets.String.Latex (--- * The Latex Widget-LatexWidget, - -- * Constructor- mkLatexWidget) where---- To keep `cabal repl` happy when running from the ihaskell repo-import Prelude--import Data.Aeson-import Data.IORef (newIORef)--import IHaskell.Display-import IHaskell.Eval.Widgets-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---- | Create a new Latex widget-mkLatexWidget :: IO LatexWidget-mkLatexWidget = do- -- Default properties, with a random uuid- uuid <- U.random- let widgetState = WidgetState $ defaultStringWidget "LatexView"-- 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 LatexWidget where- display b = do- widgetSendView b- return $ Display []--instance IHaskellWidget LatexWidget where- getCommUUID = uuid
src/IHaskell/Display/Widgets/String/Text.hs view
@@ -33,7 +33,7 @@ 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
src/IHaskell/Display/Widgets/String/TextArea.hs view
@@ -33,7 +33,7 @@ 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
src/IHaskell/Display/Widgets/Types.hs view
@@ -15,8 +15,6 @@ {-# LANGUAGE GADTs #-} {-# LANGUAGE AutoDeriveTypeable #-} -module IHaskell.Display.Widgets.Types where- -- | This module houses all the type-trickery needed to make widgets happen. -- -- All widgets have a corresponding 'WidgetType', and some fields/attributes/properties as defined@@ -61,6 +59,8 @@ -- -- Widgets are not able to do console input, the reason for that can be found in the messaging -- specification.+module IHaskell.Display.Widgets.Types where+ import Control.Monad (unless, join, when, void) import Control.Applicative ((<$>)) import qualified Control.Exception as Ex@@ -241,7 +241,7 @@ | ImageType | OutputType | HTMLType- | LatexType+ | LabelType | TextType | TextAreaType | CheckBoxType@@ -263,9 +263,6 @@ | FloatProgressType | FloatRangeSliderType | BoxType- | ProxyType- | PlaceProxyType- | FlexBoxType | AccordionType | TabType @@ -280,7 +277,7 @@ 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,11 +312,6 @@ 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 WidgetFields TabType = SelectionContainerClass @@ -619,23 +611,23 @@ (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 +649,8 @@ :& 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 +659,8 @@ :& 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 +669,8 @@ :& 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 +681,8 @@ :& 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 +693,8 @@ :& 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 +703,8 @@ :& 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 +712,8 @@ :& 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 +721,8 @@ :& 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 +730,8 @@ :& 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 +740,8 @@ :& 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 +749,8 @@ :& 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 +758,8 @@ :& 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 +767,18 @@ :& 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)