packages feed

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)