module Graphics.XHB.Ewmh.Values where
import Data.Typeable (Typeable)
import Data.Binary.Get (getWord32host)
import Data.Binary.Put (putWord32host)
import Graphics.XHB (SimpleEnum(..))
import Graphics.XHB.Ewmh.Serialize
data Gravity = WinGravity
| NorthWest
| North
| NorthEast
| West
| Center
| East
| SouthWest
| South
| SouthEast
| Static
deriving (Enum, Eq, Ord, Read, Show, Typeable)
instance SimpleEnum Gravity where
toValue v = case v of
WinGravity -> 0
NorthWest -> 1
North -> 2
NorthEast -> 3
West -> 4
Center -> 5
East -> 6
SouthWest -> 7
South -> 8
SouthEast -> 9
Static -> 10
fromValue v = case v of
0 -> WinGravity
1 -> NorthWest
2 -> North
3 -> NorthEast
4 -> West
5 -> Center
6 -> East
7 -> SouthWest
8 -> South
9 -> SouthEast
10 -> Static
_ -> error "Gravity: no such value"
data SourceIndication = SourceNone
| SourceApplication
| SourcePager
deriving (Enum, Eq, Ord, Read, Show, Typeable)
instance SimpleEnum SourceIndication where
toValue v = case v of
SourceNone -> 0
SourceApplication -> 1
SourcePager -> 2
fromValue v = case v of
0 -> SourceNone
1 -> SourceApplication
2 -> SourcePager
_ -> error "SourceIndication: no such value"
data NET_DESKTOP_LAYOUT_ORIENTATION = NET_WM_ORIENTATION_HORZ
| NET_WM_ORIENTATION_VERT
deriving (Enum, Eq, Ord, Read, Show, Typeable)
instance Serialize NET_DESKTOP_LAYOUT_ORIENTATION where
serialize = putWord32host . toValue
deserialize = fmap fromValue getWord32host
instance SimpleEnum NET_DESKTOP_LAYOUT_ORIENTATION where
toValue v = case v of
NET_WM_ORIENTATION_HORZ -> 0
NET_WM_ORIENTATION_VERT -> 1
fromValue v = case v of
0 -> NET_WM_ORIENTATION_HORZ
1 -> NET_WM_ORIENTATION_VERT
_ -> error "NET_DESKTOP_LAYOUT_ORIENTATION: no such value"
data NET_DESKTOP_LAYOUT_STARTING_CORNER = NET_WM_TOPLEFT
| NET_WM_TOPRIGHT
| NET_WM_BOTTOMRIGHT
| NET_WM_BOTTOMLEFT
deriving (Enum, Eq, Ord, Read, Show, Typeable)
instance Serialize NET_DESKTOP_LAYOUT_STARTING_CORNER where
serialize = putWord32host . toValue
deserialize = fmap fromValue getWord32host
instance SimpleEnum NET_DESKTOP_LAYOUT_STARTING_CORNER where
toValue v = case v of
NET_WM_TOPLEFT -> 0
NET_WM_TOPRIGHT -> 1
NET_WM_BOTTOMRIGHT -> 2
NET_WM_BOTTOMLEFT -> 3
fromValue v = case v of
0 -> NET_WM_TOPLEFT
1 -> NET_WM_TOPRIGHT
2 -> NET_WM_BOTTOMRIGHT
3 -> NET_WM_BOTTOMLEFT
_ -> error "NET_DESKTOP_LAYOUT_STARTING_CORNER: no such value"
data NET_WM_MOVERESIZE_DIRECTION = NET_WM_MOVERESIZE_SIZE_TOPLEFT
| NET_WM_MOVERESIZE_SIZE_TOP
| NET_WM_MOVERESIZE_SIZE_TOPRIGHT
| NET_WM_MOVERESIZE_SIZE_RIGHT
| NET_WM_MOVERESIZE_SIZE_BOTTOMRIGHT
| NET_WM_MOVERESIZE_SIZE_BOTTOM
| NET_WM_MOVERESIZE_SIZE_BOTTOMLEFT
| NET_WM_MOVERESIZE_SIZE_LEFT
| NET_WM_MOVERESIZE_MOVE
| NET_WM_MOVERESIZE_SIZE_KEYBOARD
| NET_WM_MOVERESIZE_MOVE_KEYBOARD
| NET_WM_MOVERESIZE_CANCEL
deriving (Enum, Eq, Ord, Read, Show, Typeable)
instance SimpleEnum NET_WM_MOVERESIZE_DIRECTION where
toValue v = case v of
NET_WM_MOVERESIZE_SIZE_TOPLEFT -> 0
NET_WM_MOVERESIZE_SIZE_TOP -> 1
NET_WM_MOVERESIZE_SIZE_TOPRIGHT -> 2
NET_WM_MOVERESIZE_SIZE_RIGHT -> 3
NET_WM_MOVERESIZE_SIZE_BOTTOMRIGHT -> 4
NET_WM_MOVERESIZE_SIZE_BOTTOM -> 5
NET_WM_MOVERESIZE_SIZE_BOTTOMLEFT -> 6
NET_WM_MOVERESIZE_SIZE_LEFT -> 7
NET_WM_MOVERESIZE_MOVE -> 8
NET_WM_MOVERESIZE_SIZE_KEYBOARD -> 9
NET_WM_MOVERESIZE_MOVE_KEYBOARD -> 10
NET_WM_MOVERESIZE_CANCEL -> 11
fromValue v = case v of
0 -> NET_WM_MOVERESIZE_SIZE_TOPLEFT
1 -> NET_WM_MOVERESIZE_SIZE_TOP
2 -> NET_WM_MOVERESIZE_SIZE_TOPRIGHT
3 -> NET_WM_MOVERESIZE_SIZE_RIGHT
4 -> NET_WM_MOVERESIZE_SIZE_BOTTOMRIGHT
5 -> NET_WM_MOVERESIZE_SIZE_BOTTOM
6 -> NET_WM_MOVERESIZE_SIZE_BOTTOMLEFT
7 -> NET_WM_MOVERESIZE_SIZE_LEFT
8 -> NET_WM_MOVERESIZE_MOVE
9 -> NET_WM_MOVERESIZE_SIZE_KEYBOARD
10 -> NET_WM_MOVERESIZE_MOVE_KEYBOARD
11 -> NET_WM_MOVERESIZE_CANCEL
_ -> error "NET_WM_MOVERESIZE_DIRECTION: no such value"
data NET_WM_STATE_ACTION = NET_WM_STATE_REMOVE
| NET_WM_STATE_ADD
| NET_WM_STATE_TOGGLE
deriving (Enum, Eq, Ord, Read, Show, Typeable)
instance SimpleEnum NET_WM_STATE_ACTION where
toValue v = case v of
NET_WM_STATE_REMOVE -> 0
NET_WM_STATE_ADD -> 1
NET_WM_STATE_TOGGLE -> 2
fromValue v = case v of
0 -> NET_WM_STATE_REMOVE
1 -> NET_WM_STATE_ADD
2 -> NET_WM_STATE_TOGGLE
_ -> error "NET_WM_STATE_ACTION: no such value"