module Graphics.UI.Grapefruit.Backend.Container (
ContainerUIBackend (..),
Column (Column),
TextCellDisplay (TextCellDisplay),
ProgressCellDisplay (ProgressCellDisplay),
Availability (Never, AsNecessary, Always),
Elements (Elements),
Columns (Columns),
HasScrollbars (HasScrollbars),
Selection (Selection)
) where
import Data.Sequence as Seq
import Data.Set as Set
import Data.Fraction as Fraction
import Data.Colour.RGBSpace as RGBSpace
import Data.Record as Record
import Data.Record.Optionality as OptionalityRecord
import FRP.Grapefruit.Signal as Signal
import FRP.Grapefruit.Signal.Segmented as SSignal
import FRP.Grapefruit.Signal.Incremental as ISignal
import Graphics.UI.Grapefruit.Item as UIItem
import Graphics.UI.Grapefruit.Backend.Basic as BasicUIBackend
class (BasicUIBackend uiBackend) => ContainerUIBackend uiBackend where
listView :: Brick Widget
uiBackend
(X :& Req Elements ::: ISignal `Of` Seq el
:& Req Columns ::: ISignal `Of` Seq (Column uiBackend el)
:& Opt HasScrollbars ::: SSignal `Of` (Orientation -> Availability))
(X :& Selection ::: SSignal `Of` Seq el)
setView :: (Ord el) =>
Brick Widget
uiBackend
(X :& Req Elements ::: ISignal `Of` Set el
:& Req Columns ::: ISignal `Of` Seq (Column uiBackend el)
:& Opt HasScrollbars ::: SSignal `Of` (Orientation -> Availability))
(X :& Selection ::: SSignal `Of` Set el)
data Cell uiBackend :: * -> *
textCell :: Cell uiBackend TextCellDisplay
progressCell :: Cell uiBackend ProgressCellDisplay
data Column uiBackend el where
Column :: String -> (el -> display) -> Cell uiBackend display -> Column uiBackend el
data TextCellDisplay = TextCellDisplay String (RGB Fraction)
data ProgressCellDisplay = ProgressCellDisplay Fraction (Maybe String)
data Availability = Never | AsNecessary | Always
data Elements = Elements
data Columns = Columns
data HasScrollbars = HasScrollbars
data Selection = Selection