{-# Language TemplateHaskell, OverloadedLists #-}
module Client.Image.Palette
(
Palette(..)
, palNicks
, palSelf
, palSelfHighlight
, palTime
, palMeta
, palSigil
, palLabel
, palLatency
, palWindowName
, palError
, palTextBox
, palActivity
, palMention
, palCommand
, palCommandReady
, palCommandRequired
, palCommandOptional
, palCommandRemaining
, defaultPalette
) where
import Control.Lens
import Data.Vector (Vector)
import Graphics.Vty.Attributes
data Palette = Palette
{ _palNicks :: Vector Attr
, _palSelf :: Attr
, _palSelfHighlight :: Maybe Attr
, _palTime :: Attr
, _palMeta :: Attr
, _palSigil :: Attr
, _palLabel :: Attr
, _palLatency :: Attr
, _palWindowName :: Attr
, _palError :: Attr
, _palTextBox :: Attr
, _palActivity :: Attr
, _palMention :: Attr
, _palCommand :: Attr
, _palCommandReady :: Attr
, _palCommandRequired :: Attr
, _palCommandOptional :: Attr
, _palCommandRemaining :: Attr
}
deriving Show
makeLenses ''Palette
-- | Default UI colors that look nice in my dark solarized color scheme
defaultPalette :: Palette
defaultPalette = Palette
{ _palNicks = defaultNickColorPalette
, _palSelf = withForeColor defAttr red
, _palSelfHighlight = Nothing
, _palTime = withForeColor defAttr brightBlack
, _palMeta = withForeColor defAttr brightBlack
, _palSigil = withForeColor defAttr cyan
, _palLabel = withForeColor defAttr green
, _palLatency = withForeColor defAttr yellow
, _palWindowName = withForeColor defAttr cyan
, _palError = withForeColor defAttr red
, _palTextBox = withForeColor defAttr brightBlack
, _palActivity = withForeColor defAttr green
, _palMention = withForeColor defAttr red
, _palCommand = withForeColor defAttr yellow
, _palCommandReady = withForeColor defAttr green
, _palCommandRequired = withStyle defAttr reverseVideo
, _palCommandOptional = withStyle defAttr reverseVideo
, _palCommandRemaining = withStyle defAttr reverseVideo
}
-- | Default nick highlighting colors that look nice in my dark solarized
-- color scheme.
defaultNickColorPalette :: Vector Attr
defaultNickColorPalette =
withForeColor defAttr <$>
[cyan, magenta, green, yellow, blue,
brightCyan, brightMagenta, brightGreen, brightBlue]