monomer-1.1.0.0: examples/generative/GenerativeTypes.hs
{-|
Module : GenerativeTypes
Copyright : (c) 2018 Francisco Vallarino
License : BSD-3-Clause (see the LICENSE file)
Maintainer : fjvallarino@gmail.com
Stability : experimental
Portability : non-portable
Types for the 'Generative' example.
-}
{-# LANGUAGE ScopedTypeVariables #-}
{-# LANGUAGE TemplateHaskell #-}
module GenerativeTypes where
import Control.Lens.TH
import Data.Default
import Data.Text (Text)
import Monomer
import Widgets.CirclesGrid
import Widgets.BoxesPalette
data GenerativeType
= CirclesGrid
| BoxesPalette
deriving (Eq, Show, Enum)
data GenerativeModel = GenerativeModel {
_activeGen :: GenerativeType,
_showCfg :: Bool,
_circlesCfg :: CirclesGridCfg,
_boxesCfg :: BoxesPaletteCfg
} deriving (Eq, Show)
data GenerativeEvt
= GenerativeInit
deriving (Eq, Show)
makeLenses ''GenerativeType
makeLenses ''GenerativeModel
genTypes :: [GenerativeType]
genTypes = enumFrom (toEnum 0)