-- | Copyright  : Will Thompson and Iñaki García Etxebarria
-- 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.BasicTypes as B.Types
import qualified Data.GI.Base.ManagedPtr as B.ManagedPtr
import qualified Data.GI.Base.GArray as B.GArray
import qualified Data.GI.Base.GClosure as B.GClosure
import qualified Data.GI.Base.GError as B.GError
import qualified Data.GI.Base.GHashTable as B.GHT
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 Control.Monad.IO.Class as MIO
import qualified Data.Coerce as Coerce
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
import qualified GHC.Records as R


-- 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
$cshowsPrec :: Int -> WindowState -> ShowS
showsPrec :: Int -> WindowState -> ShowS
$cshow :: WindowState -> String
show :: WindowState -> String
$cshowList :: [WindowState] -> ShowS
showList :: [WindowState] -> ShowS
Show, WindowState -> WindowState -> Bool
(WindowState -> WindowState -> Bool)
-> (WindowState -> WindowState -> Bool) -> Eq WindowState
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: WindowState -> WindowState -> Bool
== :: WindowState -> WindowState -> Bool
$c/= :: WindowState -> WindowState -> Bool
/= :: WindowState -> WindowState -> Bool
Eq)

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

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

instance P.Ord WindowState where
    compare :: WindowState -> WindowState -> Ordering
compare WindowState
a 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)

type instance O.ParentTypes WindowState = '[]
instance O.HasParentTypes WindowState

foreign import ccall "wnck_window_state_get_type" c_wnck_window_state_get_type :: 
    IO GType

instance B.Types.TypedObject WindowState where
    glibType :: IO GType
glibType = IO GType
c_wnck_window_state_get_type

instance B.Types.BoxedFlags WindowState

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
$cshowsPrec :: Int -> WindowMoveResizeMask -> ShowS
showsPrec :: Int -> WindowMoveResizeMask -> ShowS
$cshow :: WindowMoveResizeMask -> String
show :: WindowMoveResizeMask -> String
$cshowList :: [WindowMoveResizeMask] -> ShowS
showList :: [WindowMoveResizeMask] -> ShowS
Show, WindowMoveResizeMask -> WindowMoveResizeMask -> Bool
(WindowMoveResizeMask -> WindowMoveResizeMask -> Bool)
-> (WindowMoveResizeMask -> WindowMoveResizeMask -> Bool)
-> Eq WindowMoveResizeMask
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: WindowMoveResizeMask -> WindowMoveResizeMask -> Bool
== :: WindowMoveResizeMask -> WindowMoveResizeMask -> Bool
$c/= :: WindowMoveResizeMask -> WindowMoveResizeMask -> Bool
/= :: WindowMoveResizeMask -> WindowMoveResizeMask -> Bool
Eq)

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

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

instance P.Ord WindowMoveResizeMask where
    compare :: WindowMoveResizeMask -> WindowMoveResizeMask -> Ordering
compare WindowMoveResizeMask
a 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)

type instance O.ParentTypes WindowMoveResizeMask = '[]
instance O.HasParentTypes WindowMoveResizeMask

foreign import ccall "wnck_window_move_resize_mask_get_type" c_wnck_window_move_resize_mask_get_type :: 
    IO GType

instance B.Types.TypedObject WindowMoveResizeMask where
    glibType :: IO GType
glibType = IO GType
c_wnck_window_move_resize_mask_get_type

instance B.Types.BoxedFlags WindowMoveResizeMask

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
$cshowsPrec :: Int -> WindowActions -> ShowS
showsPrec :: Int -> WindowActions -> ShowS
$cshow :: WindowActions -> String
show :: WindowActions -> String
$cshowList :: [WindowActions] -> ShowS
showList :: [WindowActions] -> ShowS
Show, WindowActions -> WindowActions -> Bool
(WindowActions -> WindowActions -> Bool)
-> (WindowActions -> WindowActions -> Bool) -> Eq WindowActions
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: WindowActions -> WindowActions -> Bool
== :: WindowActions -> WindowActions -> Bool
$c/= :: WindowActions -> WindowActions -> Bool
/= :: WindowActions -> WindowActions -> Bool
Eq)

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

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

instance P.Ord WindowActions where
    compare :: WindowActions -> WindowActions -> Ordering
compare WindowActions
a 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)

type instance O.ParentTypes WindowActions = '[]
instance O.HasParentTypes WindowActions

foreign import ccall "wnck_window_actions_get_type" c_wnck_window_actions_get_type :: 
    IO GType

instance B.Types.TypedObject WindowActions where
    glibType :: IO GType
glibType = IO GType
c_wnck_window_actions_get_type

instance B.Types.BoxedFlags WindowActions

instance IsGFlag WindowActions