ihaskell-widgets-0.4.0.0: src/IHaskell/Display/Widgets/Singletons.hs
{-# LANGUAGE CPP #-}
{-# LANGUAGE DataKinds #-}
{-# LANGUAGE TypeFamilies #-}
{-# LANGUAGE PolyKinds #-}
{-# LANGUAGE GADTs #-}
{-# LANGUAGE UndecidableInstances #-}
{-# LANGUAGE TemplateHaskell #-}
{-# LANGUAGE QuasiQuotes #-}
{-# LANGUAGE ScopedTypeVariables #-}
{-# LANGUAGE StandaloneDeriving #-}
{-# LANGUAGE InstanceSigs #-}
{-# LANGUAGE EmptyCase #-}
{-# LANGUAGE CPP #-}
{-# LANGUAGE TypeApplications #-}
#if __GLASGOW_HASKELL__ >= 810
{-# LANGUAGE StandaloneKindSignatures #-}
#endif
{-# OPTIONS_GHC -fno-warn-missing-signatures #-}
module IHaskell.Display.Widgets.Singletons where
#if MIN_VERSION_singletons(3,0,0)
import Data.Singletons.Base.TH
import Data.Eq.Singletons
#elif MIN_VERSION_singletons(2,4,0)
import Data.Singletons.Prelude.Eq
import Data.Singletons.TH
#else
import Data.Singletons.Prelude.Eq
import Data.Singletons.Prelude.Ord
import Data.Singletons.TH
#endif
-- Widget properties
singletons
[d|
data Field = ViewModule
| ViewModuleVersion
| ViewName
| ModelModule
| ModelModuleVersion
| ModelName
| DisplayHandler
| DOMClasses
| Layout
| Width
| Height
| Description
| ClickHandler
| SubmitHandler
| Disabled
| StringValue
| Placeholder
| Tooltip
| Icon
| ButtonStyle
| BSValue
| ImageFormat
| BoolValue
| OptionsLabels
| Index
| OptionalIndex
| SelectionHandler
| Tooltips
| Icons
| Indices
| IntValue
| StepInt
| MaxInt
| MinInt
| IntPairValue
| LowerInt
| UpperInt
| FloatValue
| StepFloat
| MaxFloat
| MinFloat
| FloatPairValue
| LowerFloat
| UpperFloat
| Orientation
| BaseFloat
| ReadOut
| ReadOutFormat
| BarStyle
| ChangeHandler
| Children
| BoxStyle
| Titles
| SelectedIndex
| ReadOutMsg
| Indent
| ContinuousUpdate
| Rows
| AudioFormat
| VideoFormat
| AutoPlay
| Loop
| Controls
| Options
| EnsureOption
| Playing
| Repeat
| Interval
| ShowRepeat
| Concise
| DateValue
| Pressed
| Name
| Mapping
| Connected
| Timestamp
| Buttons
| Axes
| ButtonColor
| FontWeight
| DescriptionWidth
| BarColor
| HandleColor
| ButtonWidth
| Target
| Source
| MsgID
| Outputs
| Style
-- Now the ones for layout
-- Every layout property comes with an L before the name to avoid conflict
-- The patterns from Layout.Common remove that leading L
| LAlignContent
| LAlignItems
| LAlignSelf
| LBorder
| LBottom
| LDisplay
| LFlex
| LFlexFlow
| LGridArea
| LGridAutoColumns
| LGridAutoFlow
| LGridAutoRows
| LGridColumn
| LGridGap
| LGridRow
| LGridTemplateAreas
| LGridTemplateColumns
| LGridTemplateRows
| LHeight
| LJustifyContent
| LJustifyItems
| LLeft
| LMargin
| LMaxHeight
| LMaxWidth
| LMinHeight
| LMinWidth
| LOrder
| LOverflow
| LOverflowX
| LOverflowY
| LPadding
| LRight
| LTop
| LVisibility
| LWidth
deriving (Eq, Ord, Show)
|]
-- Attributes that aren't synced with the frontend give "" on toKey
promote
[d|
-- toKey :: Field -> String
toKey ViewModule = "_view_module"
toKey ViewModuleVersion = "_view_module_version"
toKey ViewName = "_view_name"
toKey ModelModule = "_model_module"
toKey ModelModuleVersion = "_model_module_version"
toKey ModelName = "_model_name"
toKey DisplayHandler = "" -- Not sent to the frontend
toKey DOMClasses = "_dom_classes"
toKey Width = "width"
toKey Height = "height"
toKey Description = "description"
toKey ClickHandler = "" -- Not sent to the frontend
toKey SubmitHandler = "" -- Not sent to the frontend
toKey Disabled = "disabled"
toKey StringValue = "value"
toKey Placeholder = "placeholder"
toKey Tooltip = "tooltip"
toKey Icon = "icon"
toKey ButtonStyle = "button_style"
toKey BSValue = "value"
toKey ImageFormat = "format"
toKey AudioFormat = "format"
toKey VideoFormat = "format"
toKey BoolValue = "value"
toKey Index = "index"
toKey OptionalIndex = "index"
toKey OptionsLabels = "_options_labels"
toKey SelectionHandler = "" -- Not sent to the frontend
toKey Tooltips = "tooltips"
toKey Icons = "icons"
toKey Indices = "index"
toKey IntValue = "value"
toKey StepInt = "step"
toKey MinInt = "min"
toKey MaxInt = "max"
toKey IntPairValue = "value"
toKey LowerInt = "min"
toKey UpperInt = "max"
toKey FloatValue = "value"
toKey StepFloat = "step"
toKey MinFloat = "min"
toKey MaxFloat = "max"
toKey FloatPairValue = "value"
toKey LowerFloat = "min"
toKey UpperFloat = "max"
toKey Orientation = "orientation"
toKey BaseFloat = "base"
toKey ReadOut = "readout"
toKey ReadOutFormat = "readout_format"
toKey BarStyle = "bar_style"
toKey ChangeHandler = "" -- Not sent to the frontend
toKey Children = "children"
toKey BoxStyle = "box_style"
toKey Titles = "_titles"
toKey SelectedIndex = "selected_index"
toKey ReadOutMsg = "readout"
toKey Indent = "indent"
toKey ContinuousUpdate = "continuous_update"
toKey Rows = "rows"
toKey AutoPlay = "autoplay"
toKey Loop = "loop"
toKey Controls = "controls"
toKey Options = "options"
toKey EnsureOption = "ensure_option"
toKey Playing = "playing"
toKey Repeat = "repeat"
toKey Interval = "interval"
toKey ShowRepeat = "show_repeat"
toKey Concise = "concise"
toKey DateValue = "value"
toKey Pressed = "pressed"
toKey Name = "name"
toKey Mapping = "mapping"
toKey Connected = "connected"
toKey Timestamp = "timestamp"
toKey Buttons = "buttons"
toKey Axes = "axes"
toKey Layout = "layout"
toKey ButtonColor = "button_color"
toKey FontWeight = "font_weight"
toKey DescriptionWidth = "description_width"
toKey BarColor = "bar_color"
toKey HandleColor = "handle_color"
toKey ButtonWidth = "button_width"
toKey Target = "target"
toKey Source = "source"
toKey MsgID = "msg_id"
toKey Outputs = "outputs"
toKey Style = "style"
toKey LAlignContent = "align_content"
toKey LAlignItems = "align_items"
toKey LAlignSelf = "align_self"
toKey LBorder = "border"
toKey LBottom = "bottom"
toKey LDisplay = "display"
toKey LFlex = "flex"
toKey LFlexFlow = "flex_flow"
toKey LGridArea = "grid_area"
toKey LGridAutoColumns = "grid_auto_columns"
toKey LGridAutoFlow = "grid_auto_flow"
toKey LGridAutoRows = "grid_auto_rows"
toKey LGridColumn = "grid_column"
toKey LGridGap = "grid_gap"
toKey LGridRow = "grid_row"
toKey LGridTemplateAreas = "grid_template_areas"
toKey LGridTemplateColumns = "grid_template_columns"
toKey LGridTemplateRows = "grid_template_rows"
toKey LHeight = "height"
toKey LJustifyContent = "justify_content"
toKey LJustifyItems = "justify_items"
toKey LLeft = "left"
toKey LMargin = "margin"
toKey LMaxHeight = "max_height"
toKey LMaxWidth = "max_width"
toKey LMinHeight = "min_height"
toKey LMinWidth = "min_width"
toKey LOrder = "order"
toKey LOverflow = "overflow"
toKey LOverflowX = "overflow_x"
toKey LOverflowY = "overflow_y"
toKey LPadding = "padding"
toKey LRight = "right"
toKey LTop = "top"
toKey LVisibility = "visibility"
toKey LWidth = "width"
-- hasKey :: Field -> Bool
hasKey x = toKey x /= ""
|]