-- | Copyright  : Will Thompson, Iñaki García Etxebarria and Jonas Platte
-- License    : LGPL-2.1
-- Maintainer : Iñaki García Etxebarria

#if (MIN_VERSION_haskell_gi_overloading(1,0,0) && !defined(__HADDOCK_VERSION__))
#define ENABLE_OVERLOADING
#endif

module GI.Wnck.Flags
    ( 

 -- * Flags
-- ** WindowActions #flag:WindowActions#

    WindowActions(..)                       ,


-- ** WindowMoveResizeMask #flag:WindowMoveResizeMask#

    WindowMoveResizeMask(..)                ,


-- ** WindowState #flag:WindowState#

    WindowState(..)                         ,




    ) where

import Data.GI.Base.ShortPrelude
import qualified Data.GI.Base.ShortPrelude as SP
import qualified Data.GI.Base.Overloading as O
import qualified Prelude as P

import qualified Data.GI.Base.Attributes as GI.Attributes
import qualified Data.GI.Base.ManagedPtr as B.ManagedPtr
import qualified Data.GI.Base.GClosure as B.GClosure
import qualified Data.GI.Base.GError as B.GError
import qualified Data.GI.Base.GVariant as B.GVariant
import qualified Data.GI.Base.GValue as B.GValue
import qualified Data.GI.Base.GParamSpec as B.GParamSpec
import qualified Data.GI.Base.CallStack as B.CallStack
import qualified Data.GI.Base.Properties as B.Properties
import qualified Data.GI.Base.Signals as B.Signals
import qualified Data.Text as T
import qualified Data.ByteString.Char8 as B
import qualified Data.Map as Map
import qualified Foreign.Ptr as FP
import qualified GHC.OverloadedLabels as OL


-- Flags WindowState
-- | Type used as a bitmask to describe the state of a t'GI.Wnck.Objects.Window.Window'.
data WindowState = 
      WindowStateMinimized
    -- ^ the window is minimized.
    | WindowStateMaximizedHorizontally
    -- ^ the window is horizontically
    -- maximized.
    | WindowStateMaximizedVertically
    -- ^ the window is vertically maximized.
    | WindowStateShaded
    -- ^ the window is shaded.
    | WindowStateSkipPager
    -- ^ the window should not be included on pagers.
    | WindowStateSkipTasklist
    -- ^ the window should not be included on
    -- tasklists.
    | WindowStateSticky
    -- ^ the window is sticky (see
    -- 'GI.Wnck.Objects.Window.windowIsSticky').
    | WindowStateHidden
    -- ^ the window is not visible on its t'GI.Wnck.Objects.Workspace.Workspace'
    -- and viewport (when minimized, for example).
    | WindowStateFullscreen
    -- ^ the window is fullscreen.
    | WindowStateDemandsAttention
    -- ^ the window needs attention (because
    -- the window requested activation but the window manager refused it, for
    -- example).
    | WindowStateUrgent
    -- ^ the window requires a response from the user.
    | WindowStateAbove
    -- ^ the window is above other windows (see
    -- 'GI.Wnck.Objects.Window.windowMakeAbove').
    | WindowStateBelow
    -- ^ the window is below other windows (see
    -- 'GI.Wnck.Objects.Window.windowMakeBelow').
    | AnotherWindowState Int
    -- ^ Catch-all for unknown values
    deriving (Int -> WindowState -> ShowS
[WindowState] -> ShowS
WindowState -> String
(Int -> WindowState -> ShowS)
-> (WindowState -> String)
-> ([WindowState] -> ShowS)
-> Show WindowState
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [WindowState] -> ShowS
$cshowList :: [WindowState] -> ShowS
show :: WindowState -> String
$cshow :: WindowState -> String
showsPrec :: Int -> WindowState -> ShowS
$cshowsPrec :: Int -> WindowState -> ShowS
Show, WindowState -> WindowState -> Bool
(WindowState -> WindowState -> Bool)
-> (WindowState -> WindowState -> Bool) -> Eq WindowState
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: WindowState -> WindowState -> Bool
$c/= :: WindowState -> WindowState -> Bool
== :: WindowState -> WindowState -> Bool
$c== :: WindowState -> WindowState -> Bool
Eq)

instance P.Enum WindowState where
    fromEnum :: WindowState -> Int
fromEnum WindowStateMinimized = 1
    fromEnum WindowStateMaximizedHorizontally = 2
    fromEnum WindowStateMaximizedVertically = 4
    fromEnum WindowStateShaded = 8
    fromEnum WindowStateSkipPager = 16
    fromEnum WindowStateSkipTasklist = 32
    fromEnum WindowStateSticky = 64
    fromEnum WindowStateHidden = 128
    fromEnum WindowStateFullscreen = 256
    fromEnum WindowStateDemandsAttention = 512
    fromEnum WindowStateUrgent = 1024
    fromEnum WindowStateAbove = 2048
    fromEnum WindowStateBelow = 4096
    fromEnum (AnotherWindowState k :: Int
k) = Int
k

    toEnum :: Int -> WindowState
toEnum 1 = WindowState
WindowStateMinimized
    toEnum 2 = WindowState
WindowStateMaximizedHorizontally
    toEnum 4 = WindowState
WindowStateMaximizedVertically
    toEnum 8 = WindowState
WindowStateShaded
    toEnum 16 = WindowState
WindowStateSkipPager
    toEnum 32 = WindowState
WindowStateSkipTasklist
    toEnum 64 = WindowState
WindowStateSticky
    toEnum 128 = WindowState
WindowStateHidden
    toEnum 256 = WindowState
WindowStateFullscreen
    toEnum 512 = WindowState
WindowStateDemandsAttention
    toEnum 1024 = WindowState
WindowStateUrgent
    toEnum 2048 = WindowState
WindowStateAbove
    toEnum 4096 = WindowState
WindowStateBelow
    toEnum k :: Int
k = Int -> WindowState
AnotherWindowState Int
k

instance P.Ord WindowState where
    compare :: WindowState -> WindowState -> Ordering
compare a :: WindowState
a b :: WindowState
b = Int -> Int -> Ordering
forall a. Ord a => a -> a -> Ordering
P.compare (WindowState -> Int
forall a. Enum a => a -> Int
P.fromEnum WindowState
a) (WindowState -> Int
forall a. Enum a => a -> Int
P.fromEnum WindowState
b)

foreign import ccall "wnck_window_state_get_type" c_wnck_window_state_get_type :: 
    IO GType

instance BoxedFlags WindowState where
    boxedFlagsType :: Proxy WindowState -> IO GType
boxedFlagsType _ = IO GType
c_wnck_window_state_get_type

instance IsGFlag WindowState

-- Flags WindowMoveResizeMask
-- | Flag used as a bitmask when changing the geometry of a t'GI.Wnck.Objects.Window.Window'. This
-- indicates which part of the geometry should be changed.
-- 
-- /Since: 2.16/
data WindowMoveResizeMask = 
      WindowMoveResizeMaskX
    -- ^ X coordinate of the window should be changed.
    | WindowMoveResizeMaskY
    -- ^ Y coordinate of the window should be changed.
    | WindowMoveResizeMaskWidth
    -- ^ width of the window should be changed.
    | WindowMoveResizeMaskHeight
    -- ^ height of the window should be changed.
    | AnotherWindowMoveResizeMask Int
    -- ^ Catch-all for unknown values
    deriving (Int -> WindowMoveResizeMask -> ShowS
[WindowMoveResizeMask] -> ShowS
WindowMoveResizeMask -> String
(Int -> WindowMoveResizeMask -> ShowS)
-> (WindowMoveResizeMask -> String)
-> ([WindowMoveResizeMask] -> ShowS)
-> Show WindowMoveResizeMask
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [WindowMoveResizeMask] -> ShowS
$cshowList :: [WindowMoveResizeMask] -> ShowS
show :: WindowMoveResizeMask -> String
$cshow :: WindowMoveResizeMask -> String
showsPrec :: Int -> WindowMoveResizeMask -> ShowS
$cshowsPrec :: Int -> WindowMoveResizeMask -> ShowS
Show, WindowMoveResizeMask -> WindowMoveResizeMask -> Bool
(WindowMoveResizeMask -> WindowMoveResizeMask -> Bool)
-> (WindowMoveResizeMask -> WindowMoveResizeMask -> Bool)
-> Eq WindowMoveResizeMask
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: WindowMoveResizeMask -> WindowMoveResizeMask -> Bool
$c/= :: WindowMoveResizeMask -> WindowMoveResizeMask -> Bool
== :: WindowMoveResizeMask -> WindowMoveResizeMask -> Bool
$c== :: WindowMoveResizeMask -> WindowMoveResizeMask -> Bool
Eq)

instance P.Enum WindowMoveResizeMask where
    fromEnum :: WindowMoveResizeMask -> Int
fromEnum WindowMoveResizeMaskX = 1
    fromEnum WindowMoveResizeMaskY = 2
    fromEnum WindowMoveResizeMaskWidth = 4
    fromEnum WindowMoveResizeMaskHeight = 8
    fromEnum (AnotherWindowMoveResizeMask k :: Int
k) = Int
k

    toEnum :: Int -> WindowMoveResizeMask
toEnum 1 = WindowMoveResizeMask
WindowMoveResizeMaskX
    toEnum 2 = WindowMoveResizeMask
WindowMoveResizeMaskY
    toEnum 4 = WindowMoveResizeMask
WindowMoveResizeMaskWidth
    toEnum 8 = WindowMoveResizeMask
WindowMoveResizeMaskHeight
    toEnum k :: Int
k = Int -> WindowMoveResizeMask
AnotherWindowMoveResizeMask Int
k

instance P.Ord WindowMoveResizeMask where
    compare :: WindowMoveResizeMask -> WindowMoveResizeMask -> Ordering
compare a :: WindowMoveResizeMask
a b :: WindowMoveResizeMask
b = Int -> Int -> Ordering
forall a. Ord a => a -> a -> Ordering
P.compare (WindowMoveResizeMask -> Int
forall a. Enum a => a -> Int
P.fromEnum WindowMoveResizeMask
a) (WindowMoveResizeMask -> Int
forall a. Enum a => a -> Int
P.fromEnum WindowMoveResizeMask
b)

foreign import ccall "wnck_window_move_resize_mask_get_type" c_wnck_window_move_resize_mask_get_type :: 
    IO GType

instance BoxedFlags WindowMoveResizeMask where
    boxedFlagsType :: Proxy WindowMoveResizeMask -> IO GType
boxedFlagsType _ = IO GType
c_wnck_window_move_resize_mask_get_type

instance IsGFlag WindowMoveResizeMask

-- Flags WindowActions
-- | Type used as a bitmask to describe the actions that can be done for a
-- t'GI.Wnck.Objects.Window.Window'.
data WindowActions = 
      WindowActionsMove
    -- ^ the window may be moved around the screen.
    | WindowActionsResize
    -- ^ the window may be resized.
    | WindowActionsShade
    -- ^ the window may be shaded.
    | WindowActionsStick
    -- ^ the window may be sticked.
    | WindowActionsMaximizeHorizontally
    -- ^ the window may be maximized
    -- horizontally.
    | WindowActionsMaximizeVertically
    -- ^ the window may be maximized
    -- vertically.
    | WindowActionsChangeWorkspace
    -- ^ the window may be moved between
    -- workspaces, or (un)pinned.
    | WindowActionsClose
    -- ^ the window may be closed.
    | WindowActionsUnmaximizeHorizontally
    -- ^ the window may be unmaximized
    -- horizontally.
    | WindowActionsUnmaximizeVertically
    -- ^ the window may be maximized
    -- vertically.
    | WindowActionsUnshade
    -- ^ the window may be unshaded.
    | WindowActionsUnstick
    -- ^ the window may be unsticked.
    | WindowActionsMinimize
    -- ^ the window may be minimized.
    | WindowActionsUnminimize
    -- ^ the window may be unminimized.
    | WindowActionsMaximize
    -- ^ the window may be maximized.
    | WindowActionsUnmaximize
    -- ^ the window may be unmaximized.
    | WindowActionsFullscreen
    -- ^ the window may be brought to fullscreen.
    | WindowActionsAbove
    -- ^ the window may be made above other windows.
    | WindowActionsBelow
    -- ^ the window may be made below other windows.
    | AnotherWindowActions Int
    -- ^ Catch-all for unknown values
    deriving (Int -> WindowActions -> ShowS
[WindowActions] -> ShowS
WindowActions -> String
(Int -> WindowActions -> ShowS)
-> (WindowActions -> String)
-> ([WindowActions] -> ShowS)
-> Show WindowActions
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [WindowActions] -> ShowS
$cshowList :: [WindowActions] -> ShowS
show :: WindowActions -> String
$cshow :: WindowActions -> String
showsPrec :: Int -> WindowActions -> ShowS
$cshowsPrec :: Int -> WindowActions -> ShowS
Show, WindowActions -> WindowActions -> Bool
(WindowActions -> WindowActions -> Bool)
-> (WindowActions -> WindowActions -> Bool) -> Eq WindowActions
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: WindowActions -> WindowActions -> Bool
$c/= :: WindowActions -> WindowActions -> Bool
== :: WindowActions -> WindowActions -> Bool
$c== :: WindowActions -> WindowActions -> Bool
Eq)

instance P.Enum WindowActions where
    fromEnum :: WindowActions -> Int
fromEnum WindowActionsMove = 1
    fromEnum WindowActionsResize = 2
    fromEnum WindowActionsShade = 4
    fromEnum WindowActionsStick = 8
    fromEnum WindowActionsMaximizeHorizontally = 16
    fromEnum WindowActionsMaximizeVertically = 32
    fromEnum WindowActionsChangeWorkspace = 64
    fromEnum WindowActionsClose = 128
    fromEnum WindowActionsUnmaximizeHorizontally = 256
    fromEnum WindowActionsUnmaximizeVertically = 512
    fromEnum WindowActionsUnshade = 1024
    fromEnum WindowActionsUnstick = 2048
    fromEnum WindowActionsMinimize = 4096
    fromEnum WindowActionsUnminimize = 8192
    fromEnum WindowActionsMaximize = 16384
    fromEnum WindowActionsUnmaximize = 32768
    fromEnum WindowActionsFullscreen = 65536
    fromEnum WindowActionsAbove = 131072
    fromEnum WindowActionsBelow = 262144
    fromEnum (AnotherWindowActions k :: Int
k) = Int
k

    toEnum :: Int -> WindowActions
toEnum 1 = WindowActions
WindowActionsMove
    toEnum 2 = WindowActions
WindowActionsResize
    toEnum 4 = WindowActions
WindowActionsShade
    toEnum 8 = WindowActions
WindowActionsStick
    toEnum 16 = WindowActions
WindowActionsMaximizeHorizontally
    toEnum 32 = WindowActions
WindowActionsMaximizeVertically
    toEnum 64 = WindowActions
WindowActionsChangeWorkspace
    toEnum 128 = WindowActions
WindowActionsClose
    toEnum 256 = WindowActions
WindowActionsUnmaximizeHorizontally
    toEnum 512 = WindowActions
WindowActionsUnmaximizeVertically
    toEnum 1024 = WindowActions
WindowActionsUnshade
    toEnum 2048 = WindowActions
WindowActionsUnstick
    toEnum 4096 = WindowActions
WindowActionsMinimize
    toEnum 8192 = WindowActions
WindowActionsUnminimize
    toEnum 16384 = WindowActions
WindowActionsMaximize
    toEnum 32768 = WindowActions
WindowActionsUnmaximize
    toEnum 65536 = WindowActions
WindowActionsFullscreen
    toEnum 131072 = WindowActions
WindowActionsAbove
    toEnum 262144 = WindowActions
WindowActionsBelow
    toEnum k :: Int
k = Int -> WindowActions
AnotherWindowActions Int
k

instance P.Ord WindowActions where
    compare :: WindowActions -> WindowActions -> Ordering
compare a :: WindowActions
a b :: WindowActions
b = Int -> Int -> Ordering
forall a. Ord a => a -> a -> Ordering
P.compare (WindowActions -> Int
forall a. Enum a => a -> Int
P.fromEnum WindowActions
a) (WindowActions -> Int
forall a. Enum a => a -> Int
P.fromEnum WindowActions
b)

foreign import ccall "wnck_window_actions_get_type" c_wnck_window_actions_get_type :: 
    IO GType

instance BoxedFlags WindowActions where
    boxedFlagsType :: Proxy WindowActions -> IO GType
boxedFlagsType _ = IO GType
c_wnck_window_actions_get_type

instance IsGFlag WindowActions