{-# LANGUAGE ConstraintKinds #-}
{-# LANGUAGE DeriveGeneric #-}
{-# LANGUAGE ExistentialQuantification #-}
{-# LANGUAGE FlexibleContexts #-}
{-# LANGUAGE FlexibleInstances #-}
{-# LANGUAGE MultiParamTypeClasses #-}
{-# LANGUAGE Strict #-}
module Monomer.Main.Types where
import Control.Applicative ((<|>))
import Control.Concurrent.Async
import Control.Concurrent.STM.TChan
import Control.Monad.Catch
import Control.Monad.State
import Data.Default
import Data.Map (Map)
import Data.Text (Text)
import Data.Typeable (Typeable)
import Data.Sequence (Seq)
import GHC.Generics
import qualified Data.Map as M
import qualified SDL
import qualified SDL.Raw.Types as SDLR
import Monomer.Common
import Monomer.Core.Combinators
import Monomer.Core.StyleTypes
import Monomer.Core.ThemeTypes
import Monomer.Core.WidgetTypes
import Monomer.Event.Types
import Monomer.Graphics.Types
import Data.ByteString (ByteString)
type MonomerM s e m = (Eq s, MonadState (MonomerCtx s e) m, MonadCatch m, MonadIO m)
data RenderMsg s e
= MsgInit (WidgetEnv s e) (WidgetNode s e)
| MsgRender (WidgetEnv s e) (WidgetNode s e)
| MsgResize Size
| MsgRemoveImage Text
| forall i . MsgRunInRender (TChan i) (IO i)
data RenderSetupResult
= RenderSetupSingle
| RenderSetupMulti
| RenderSetupMakeCurrentFailed String
deriving (RenderSetupResult -> RenderSetupResult -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: RenderSetupResult -> RenderSetupResult -> Bool
$c/= :: RenderSetupResult -> RenderSetupResult -> Bool
== :: RenderSetupResult -> RenderSetupResult -> Bool
$c== :: RenderSetupResult -> RenderSetupResult -> Bool
Eq, Int -> RenderSetupResult -> ShowS
[RenderSetupResult] -> ShowS
RenderSetupResult -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [RenderSetupResult] -> ShowS
$cshowList :: [RenderSetupResult] -> ShowS
show :: RenderSetupResult -> String
$cshow :: RenderSetupResult -> String
showsPrec :: Int -> RenderSetupResult -> ShowS
$cshowsPrec :: Int -> RenderSetupResult -> ShowS
Show)
data RenderSchedule = RenderSchedule {
RenderSchedule -> WidgetId
_rsWidgetId :: WidgetId,
:: Millisecond,
RenderSchedule -> Millisecond
_rsMs :: Millisecond,
RenderSchedule -> Maybe Int
_rsRepeat :: Maybe Int
} deriving (RenderSchedule -> RenderSchedule -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: RenderSchedule -> RenderSchedule -> Bool
$c/= :: RenderSchedule -> RenderSchedule -> Bool
== :: RenderSchedule -> RenderSchedule -> Bool
$c== :: RenderSchedule -> RenderSchedule -> Bool
Eq, Int -> RenderSchedule -> ShowS
[RenderSchedule] -> ShowS
RenderSchedule -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [RenderSchedule] -> ShowS
$cshowList :: [RenderSchedule] -> ShowS
show :: RenderSchedule -> String
$cshow :: RenderSchedule -> String
showsPrec :: Int -> RenderSchedule -> ShowS
$cshowsPrec :: Int -> RenderSchedule -> ShowS
Show, forall x. Rep RenderSchedule x -> RenderSchedule
forall x. RenderSchedule -> Rep RenderSchedule x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep RenderSchedule x -> RenderSchedule
$cfrom :: forall x. RenderSchedule -> Rep RenderSchedule x
Generic)
data DragAction = DragAction {
DragAction -> WidgetId
_dgaWidgetId :: WidgetId,
DragAction -> WidgetDragMsg
_dgaDragData :: WidgetDragMsg
} deriving (DragAction -> DragAction -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: DragAction -> DragAction -> Bool
$c/= :: DragAction -> DragAction -> Bool
== :: DragAction -> DragAction -> Bool
$c== :: DragAction -> DragAction -> Bool
Eq, Int -> DragAction -> ShowS
[DragAction] -> ShowS
DragAction -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [DragAction] -> ShowS
$cshowList :: [DragAction] -> ShowS
show :: DragAction -> String
$cshow :: DragAction -> String
showsPrec :: Int -> DragAction -> ShowS
$cshowsPrec :: Int -> DragAction -> ShowS
Show)
data WidgetTask
= forall i . Typeable i => WidgetTask WidgetId (Async i)
| forall i . Typeable i => WidgetProducer WidgetId (TChan i) (Async ())
data MonomerCtx s e = MonomerCtx {
forall s e. MonomerCtx s e -> s
_mcMainModel :: s,
forall s e. MonomerCtx s e -> Window
_mcWindow :: ~SDL.Window,
forall s e. MonomerCtx s e -> Size
_mcWindowSize :: Size,
forall s e. MonomerCtx s e -> Double
_mcDpr :: Double,
forall s e. MonomerCtx s e -> Double
_mcEpr :: Double,
forall s e.
MonomerCtx s e -> Either Renderer (TChan (RenderMsg s e))
_mcRenderMethod :: Either Renderer (TChan (RenderMsg s e)),
forall s e. MonomerCtx s e -> InputStatus
_mcInputStatus :: InputStatus,
forall s e. MonomerCtx s e -> [(WidgetId, CursorIcon)]
_mcCursorStack :: [(WidgetId, CursorIcon)],
forall s e. MonomerCtx s e -> WidgetId
_mcFocusedWidgetId :: WidgetId,
forall s e. MonomerCtx s e -> Maybe WidgetId
_mcHoveredWidgetId :: Maybe WidgetId,
forall s e. MonomerCtx s e -> Maybe WidgetId
_mcOverlayWidgetId :: Maybe WidgetId,
forall s e. MonomerCtx s e -> Maybe DragAction
_mcDragAction :: Maybe DragAction,
forall s e. MonomerCtx s e -> Maybe (Path, Point)
_mcMainBtnPress :: Maybe (Path, Point),
forall s e. MonomerCtx s e -> Seq WidgetTask
_mcWidgetTasks :: Seq WidgetTask,
forall s e. MonomerCtx s e -> Map WidgetId Path
_mcWidgetPaths :: Map WidgetId Path,
forall s e. MonomerCtx s e -> Map CursorIcon Cursor
_mcCursorIcons :: Map CursorIcon SDLR.Cursor,
forall s e. MonomerCtx s e -> Bool
_mcLeaveEnterPair :: Bool,
forall s e. MonomerCtx s e -> Seq WidgetId
_mcResizeRequests :: Seq WidgetId,
forall s e. MonomerCtx s e -> Bool
_mcRenderRequested :: Bool,
forall s e. MonomerCtx s e -> Map WidgetId RenderSchedule
_mcRenderSchedule :: Map WidgetId RenderSchedule,
forall s e. MonomerCtx s e -> Bool
_mcExitApplication :: Bool
}
data MainWindowState
= MainWindowNormal (Int, Int)
| MainWindowMaximized
| MainWindowFullScreen
deriving (MainWindowState -> MainWindowState -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: MainWindowState -> MainWindowState -> Bool
$c/= :: MainWindowState -> MainWindowState -> Bool
== :: MainWindowState -> MainWindowState -> Bool
$c== :: MainWindowState -> MainWindowState -> Bool
Eq, Int -> MainWindowState -> ShowS
[MainWindowState] -> ShowS
MainWindowState -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [MainWindowState] -> ShowS
$cshowList :: [MainWindowState] -> ShowS
show :: MainWindowState -> String
$cshow :: MainWindowState -> String
showsPrec :: Int -> MainWindowState -> ShowS
$cshowsPrec :: Int -> MainWindowState -> ShowS
Show)
data AppConfig e = AppConfig {
forall e. AppConfig e -> Maybe MainWindowState
_apcWindowState :: Maybe MainWindowState,
forall e. AppConfig e -> Maybe Text
_apcWindowTitle :: Maybe Text,
forall e. AppConfig e -> Maybe Bool
_apcWindowResizable :: Maybe Bool,
forall e. AppConfig e -> Maybe Bool
_apcWindowBorder :: Maybe Bool,
forall e. AppConfig e -> Maybe Text
_apcWindowIcon :: Maybe Text,
forall e. AppConfig e -> Maybe Bool
_apcUseRenderThread :: Maybe Bool,
forall e. AppConfig e -> Maybe Int
_apcMaxFps :: Maybe Int,
forall e. AppConfig e -> Maybe Double
_apcScaleFactor :: Maybe Double,
forall e. AppConfig e -> Maybe Bool
_apcDisableAutoScale :: Maybe Bool,
forall e. AppConfig e -> [FontDef]
_apcFonts :: [FontDef],
forall e. AppConfig e -> Maybe Theme
_apcTheme :: Maybe Theme,
forall e. AppConfig e -> [e]
_apcInitEvent :: [e],
forall e. AppConfig e -> [e]
_apcDisposeEvent :: [e],
forall e. AppConfig e -> [e]
_apcExitEvent :: [e],
forall e. AppConfig e -> [Rect -> e]
_apcResizeEvent :: [Rect -> e],
forall e. AppConfig e -> Maybe Button
_apcMainButton :: Maybe Button,
forall e. AppConfig e -> Maybe Button
_apcContextButton :: Maybe Button,
forall e. AppConfig e -> Maybe Bool
_apcInvertWheelX :: Maybe Bool,
forall e. AppConfig e -> Maybe Bool
_apcInvertWheelY :: Maybe Bool,
forall e. AppConfig e -> Maybe Bool
_apcDisableCompositing :: Maybe Bool,
forall e. AppConfig e -> Maybe Bool
_apcDisableScreensaver :: Maybe Bool
}
instance Default (AppConfig e) where
def :: AppConfig e
def = AppConfig {
_apcWindowState :: Maybe MainWindowState
_apcWindowState = forall a. Maybe a
Nothing,
_apcWindowTitle :: Maybe Text
_apcWindowTitle = forall a. Maybe a
Nothing,
_apcWindowResizable :: Maybe Bool
_apcWindowResizable = forall a. Maybe a
Nothing,
_apcWindowBorder :: Maybe Bool
_apcWindowBorder = forall a. Maybe a
Nothing,
_apcWindowIcon :: Maybe Text
_apcWindowIcon = forall a. Maybe a
Nothing,
_apcUseRenderThread :: Maybe Bool
_apcUseRenderThread = forall a. Maybe a
Nothing,
_apcMaxFps :: Maybe Int
_apcMaxFps = forall a. Maybe a
Nothing,
_apcScaleFactor :: Maybe Double
_apcScaleFactor = forall a. Maybe a
Nothing,
_apcDisableAutoScale :: Maybe Bool
_apcDisableAutoScale = forall a. Maybe a
Nothing,
_apcFonts :: [FontDef]
_apcFonts = [],
_apcTheme :: Maybe Theme
_apcTheme = forall a. Maybe a
Nothing,
_apcInitEvent :: [e]
_apcInitEvent = [],
_apcDisposeEvent :: [e]
_apcDisposeEvent = [],
_apcExitEvent :: [e]
_apcExitEvent = [],
_apcResizeEvent :: [Rect -> e]
_apcResizeEvent = [],
_apcMainButton :: Maybe Button
_apcMainButton = forall a. Maybe a
Nothing,
_apcContextButton :: Maybe Button
_apcContextButton = forall a. Maybe a
Nothing,
_apcInvertWheelX :: Maybe Bool
_apcInvertWheelX = forall a. Maybe a
Nothing,
_apcInvertWheelY :: Maybe Bool
_apcInvertWheelY = forall a. Maybe a
Nothing,
_apcDisableCompositing :: Maybe Bool
_apcDisableCompositing = forall a. Maybe a
Nothing,
_apcDisableScreensaver :: Maybe Bool
_apcDisableScreensaver = forall a. Maybe a
Nothing
}
instance Semigroup (AppConfig e) where
<> :: AppConfig e -> AppConfig e -> AppConfig e
(<>) AppConfig e
a1 AppConfig e
a2 = AppConfig {
_apcWindowState :: Maybe MainWindowState
_apcWindowState = forall e. AppConfig e -> Maybe MainWindowState
_apcWindowState AppConfig e
a2 forall (f :: * -> *) a. Alternative f => f a -> f a -> f a
<|> forall e. AppConfig e -> Maybe MainWindowState
_apcWindowState AppConfig e
a1,
_apcWindowTitle :: Maybe Text
_apcWindowTitle = forall e. AppConfig e -> Maybe Text
_apcWindowTitle AppConfig e
a2 forall (f :: * -> *) a. Alternative f => f a -> f a -> f a
<|> forall e. AppConfig e -> Maybe Text
_apcWindowTitle AppConfig e
a1,
_apcWindowResizable :: Maybe Bool
_apcWindowResizable = forall e. AppConfig e -> Maybe Bool
_apcWindowResizable AppConfig e
a2 forall (f :: * -> *) a. Alternative f => f a -> f a -> f a
<|> forall e. AppConfig e -> Maybe Bool
_apcWindowResizable AppConfig e
a1,
_apcWindowBorder :: Maybe Bool
_apcWindowBorder = forall e. AppConfig e -> Maybe Bool
_apcWindowBorder AppConfig e
a2 forall (f :: * -> *) a. Alternative f => f a -> f a -> f a
<|> forall e. AppConfig e -> Maybe Bool
_apcWindowBorder AppConfig e
a1,
_apcWindowIcon :: Maybe Text
_apcWindowIcon = forall e. AppConfig e -> Maybe Text
_apcWindowIcon AppConfig e
a2 forall (f :: * -> *) a. Alternative f => f a -> f a -> f a
<|> forall e. AppConfig e -> Maybe Text
_apcWindowIcon AppConfig e
a1,
_apcUseRenderThread :: Maybe Bool
_apcUseRenderThread = forall e. AppConfig e -> Maybe Bool
_apcUseRenderThread AppConfig e
a2 forall (f :: * -> *) a. Alternative f => f a -> f a -> f a
<|> forall e. AppConfig e -> Maybe Bool
_apcUseRenderThread AppConfig e
a1,
_apcMaxFps :: Maybe Int
_apcMaxFps = forall e. AppConfig e -> Maybe Int
_apcMaxFps AppConfig e
a2 forall (f :: * -> *) a. Alternative f => f a -> f a -> f a
<|> forall e. AppConfig e -> Maybe Int
_apcMaxFps AppConfig e
a1,
_apcScaleFactor :: Maybe Double
_apcScaleFactor = forall e. AppConfig e -> Maybe Double
_apcScaleFactor AppConfig e
a2 forall (f :: * -> *) a. Alternative f => f a -> f a -> f a
<|> forall e. AppConfig e -> Maybe Double
_apcScaleFactor AppConfig e
a1,
_apcDisableAutoScale :: Maybe Bool
_apcDisableAutoScale = forall e. AppConfig e -> Maybe Bool
_apcDisableAutoScale AppConfig e
a2 forall (f :: * -> *) a. Alternative f => f a -> f a -> f a
<|> forall e. AppConfig e -> Maybe Bool
_apcDisableAutoScale AppConfig e
a1,
_apcFonts :: [FontDef]
_apcFonts = forall e. AppConfig e -> [FontDef]
_apcFonts AppConfig e
a1 forall a. [a] -> [a] -> [a]
++ forall e. AppConfig e -> [FontDef]
_apcFonts AppConfig e
a2,
_apcTheme :: Maybe Theme
_apcTheme = forall e. AppConfig e -> Maybe Theme
_apcTheme AppConfig e
a2 forall (f :: * -> *) a. Alternative f => f a -> f a -> f a
<|> forall e. AppConfig e -> Maybe Theme
_apcTheme AppConfig e
a1,
_apcInitEvent :: [e]
_apcInitEvent = forall e. AppConfig e -> [e]
_apcInitEvent AppConfig e
a1 forall a. [a] -> [a] -> [a]
++ forall e. AppConfig e -> [e]
_apcInitEvent AppConfig e
a2,
_apcDisposeEvent :: [e]
_apcDisposeEvent = forall e. AppConfig e -> [e]
_apcDisposeEvent AppConfig e
a1 forall a. [a] -> [a] -> [a]
++ forall e. AppConfig e -> [e]
_apcDisposeEvent AppConfig e
a2,
_apcExitEvent :: [e]
_apcExitEvent = forall e. AppConfig e -> [e]
_apcExitEvent AppConfig e
a1 forall a. [a] -> [a] -> [a]
++ forall e. AppConfig e -> [e]
_apcExitEvent AppConfig e
a2,
_apcResizeEvent :: [Rect -> e]
_apcResizeEvent = forall e. AppConfig e -> [Rect -> e]
_apcResizeEvent AppConfig e
a1 forall a. [a] -> [a] -> [a]
++ forall e. AppConfig e -> [Rect -> e]
_apcResizeEvent AppConfig e
a2,
_apcMainButton :: Maybe Button
_apcMainButton = forall e. AppConfig e -> Maybe Button
_apcMainButton AppConfig e
a2 forall (f :: * -> *) a. Alternative f => f a -> f a -> f a
<|> forall e. AppConfig e -> Maybe Button
_apcMainButton AppConfig e
a1,
_apcContextButton :: Maybe Button
_apcContextButton = forall e. AppConfig e -> Maybe Button
_apcContextButton AppConfig e
a2 forall (f :: * -> *) a. Alternative f => f a -> f a -> f a
<|> forall e. AppConfig e -> Maybe Button
_apcContextButton AppConfig e
a1,
_apcInvertWheelX :: Maybe Bool
_apcInvertWheelX = forall e. AppConfig e -> Maybe Bool
_apcInvertWheelX AppConfig e
a2 forall (f :: * -> *) a. Alternative f => f a -> f a -> f a
<|> forall e. AppConfig e -> Maybe Bool
_apcInvertWheelX AppConfig e
a1,
_apcInvertWheelY :: Maybe Bool
_apcInvertWheelY = forall e. AppConfig e -> Maybe Bool
_apcInvertWheelY AppConfig e
a2 forall (f :: * -> *) a. Alternative f => f a -> f a -> f a
<|> forall e. AppConfig e -> Maybe Bool
_apcInvertWheelY AppConfig e
a1,
_apcDisableCompositing :: Maybe Bool
_apcDisableCompositing = forall e. AppConfig e -> Maybe Bool
_apcDisableCompositing AppConfig e
a2 forall (f :: * -> *) a. Alternative f => f a -> f a -> f a
<|> forall e. AppConfig e -> Maybe Bool
_apcDisableCompositing AppConfig e
a1,
_apcDisableScreensaver :: Maybe Bool
_apcDisableScreensaver = forall e. AppConfig e -> Maybe Bool
_apcDisableScreensaver AppConfig e
a2 forall (f :: * -> *) a. Alternative f => f a -> f a -> f a
<|> forall e. AppConfig e -> Maybe Bool
_apcDisableScreensaver AppConfig e
a1
}
instance Monoid (AppConfig e) where
mempty :: AppConfig e
mempty = forall a. Default a => a
def
appWindowState :: MainWindowState -> AppConfig e
appWindowState :: forall e. MainWindowState -> AppConfig e
appWindowState MainWindowState
title = forall a. Default a => a
def {
_apcWindowState :: Maybe MainWindowState
_apcWindowState = forall a. a -> Maybe a
Just MainWindowState
title
}
appWindowTitle :: Text -> AppConfig e
appWindowTitle :: forall e. Text -> AppConfig e
appWindowTitle Text
title = forall a. Default a => a
def {
_apcWindowTitle :: Maybe Text
_apcWindowTitle = forall a. a -> Maybe a
Just Text
title
}
appWindowResizable :: Bool -> AppConfig e
appWindowResizable :: forall e. Bool -> AppConfig e
appWindowResizable Bool
resizable = forall a. Default a => a
def {
_apcWindowResizable :: Maybe Bool
_apcWindowResizable = forall a. a -> Maybe a
Just Bool
resizable
}
appWindowBorder :: Bool -> AppConfig e
appWindowBorder :: forall e. Bool -> AppConfig e
appWindowBorder Bool
border = forall a. Default a => a
def {
_apcWindowBorder :: Maybe Bool
_apcWindowBorder = forall a. a -> Maybe a
Just Bool
border
}
appWindowIcon :: Text -> AppConfig e
appWindowIcon :: forall e. Text -> AppConfig e
appWindowIcon Text
path = forall a. Default a => a
def {
_apcWindowIcon :: Maybe Text
_apcWindowIcon = forall a. a -> Maybe a
Just Text
path
}
{-# DEPRECATED appRenderOnMainThread
"Should no longer be needed. Check appRenderOnMainThread's Haddock page." #-}
appRenderOnMainThread :: AppConfig e
appRenderOnMainThread :: forall e. AppConfig e
appRenderOnMainThread = forall a. Default a => a
def {
_apcUseRenderThread :: Maybe Bool
_apcUseRenderThread = forall a. a -> Maybe a
Just Bool
False
}
appMaxFps :: Int -> AppConfig e
appMaxFps :: forall e. Int -> AppConfig e
appMaxFps Int
fps = forall a. Default a => a
def {
_apcMaxFps :: Maybe Int
_apcMaxFps = forall a. a -> Maybe a
Just Int
fps
}
appScaleFactor :: Double -> AppConfig e
appScaleFactor :: forall e. Double -> AppConfig e
appScaleFactor Double
factor = forall a. Default a => a
def {
_apcScaleFactor :: Maybe Double
_apcScaleFactor = forall a. a -> Maybe a
Just Double
factor
}
appDisableAutoScale :: Bool -> AppConfig e
appDisableAutoScale :: forall e. Bool -> AppConfig e
appDisableAutoScale Bool
disable = forall a. Default a => a
def {
_apcDisableAutoScale :: Maybe Bool
_apcDisableAutoScale = forall a. a -> Maybe a
Just Bool
disable
}
appFontDef :: Text -> Text -> AppConfig e
appFontDef :: forall e. Text -> Text -> AppConfig e
appFontDef Text
name Text
path = forall a. Default a => a
def {
_apcFonts :: [FontDef]
_apcFonts = [ Text -> Text -> FontDef
FontDefFile Text
name Text
path ]
}
appFontDefMem :: Text -> ByteString -> AppConfig e
appFontDefMem :: forall e. Text -> ByteString -> AppConfig e
appFontDefMem Text
name ByteString
bytes = forall a. Default a => a
def {
_apcFonts :: [FontDef]
_apcFonts = [ Text -> ByteString -> FontDef
FontDefMem Text
name ByteString
bytes ]
}
appTheme :: Theme -> AppConfig e
appTheme :: forall e. Theme -> AppConfig e
appTheme Theme
t = forall a. Default a => a
def {
_apcTheme :: Maybe Theme
_apcTheme = forall a. a -> Maybe a
Just Theme
t
}
appInitEvent :: e -> AppConfig e
appInitEvent :: forall e. e -> AppConfig e
appInitEvent e
evt = forall a. Default a => a
def {
_apcInitEvent :: [e]
_apcInitEvent = [e
evt]
}
appDisposeEvent :: e -> AppConfig e
appDisposeEvent :: forall e. e -> AppConfig e
appDisposeEvent e
evt = forall a. Default a => a
def {
_apcDisposeEvent :: [e]
_apcDisposeEvent = [e
evt]
}
appExitEvent :: e -> AppConfig e
appExitEvent :: forall e. e -> AppConfig e
appExitEvent e
evt = forall a. Default a => a
def {
_apcExitEvent :: [e]
_apcExitEvent = [e
evt]
}
appResizeEvent :: (Rect -> e) -> AppConfig e
appResizeEvent :: forall e. (Rect -> e) -> AppConfig e
appResizeEvent Rect -> e
evt = forall a. Default a => a
def {
_apcResizeEvent :: [Rect -> e]
_apcResizeEvent = [Rect -> e
evt]
}
appMainButton :: Button -> AppConfig e
appMainButton :: forall e. Button -> AppConfig e
appMainButton Button
btn = forall a. Default a => a
def {
_apcMainButton :: Maybe Button
_apcMainButton = forall a. a -> Maybe a
Just Button
btn
}
appContextButton :: Button -> AppConfig e
appContextButton :: forall e. Button -> AppConfig e
appContextButton Button
btn = forall a. Default a => a
def {
_apcContextButton :: Maybe Button
_apcContextButton = forall a. a -> Maybe a
Just Button
btn
}
appInvertWheelX :: Bool -> AppConfig e
appInvertWheelX :: forall e. Bool -> AppConfig e
appInvertWheelX Bool
invert = forall a. Default a => a
def {
_apcInvertWheelX :: Maybe Bool
_apcInvertWheelX = forall a. a -> Maybe a
Just Bool
invert
}
appInvertWheelY :: Bool -> AppConfig e
appInvertWheelY :: forall e. Bool -> AppConfig e
appInvertWheelY Bool
invert = forall a. Default a => a
def {
_apcInvertWheelY :: Maybe Bool
_apcInvertWheelY = forall a. a -> Maybe a
Just Bool
invert
}
appDisableCompositing :: Bool -> AppConfig e
appDisableCompositing :: forall e. Bool -> AppConfig e
appDisableCompositing Bool
disable = forall a. Default a => a
def {
_apcDisableCompositing :: Maybe Bool
_apcDisableCompositing = forall a. a -> Maybe a
Just Bool
disable
}
appDisableScreensaver :: Bool -> AppConfig e
appDisableScreensaver :: forall e. Bool -> AppConfig e
appDisableScreensaver Bool
disable = forall a. Default a => a
def {
_apcDisableScreensaver :: Maybe Bool
_apcDisableScreensaver = forall a. a -> Maybe a
Just Bool
disable
}