{- |
Copyright  : Will Thompson, Iñaki García Etxebarria and Jonas Platte
License    : LGPL-2.1
Maintainer : Iñaki García Etxebarria (garetxe@gmail.com)
-}

module GI.Gtk.Objects.Window
    ( 

-- * Exported types
    Window(..)                              ,
    WindowK                                 ,
    toWindow                                ,
    noWindow                                ,


 -- * Methods
-- ** windowActivateDefault
    windowActivateDefault                   ,


-- ** windowActivateFocus
    windowActivateFocus                     ,


-- ** windowActivateKey
    windowActivateKey                       ,


-- ** windowAddAccelGroup
    windowAddAccelGroup                     ,


-- ** windowAddMnemonic
    windowAddMnemonic                       ,


-- ** windowBeginMoveDrag
    windowBeginMoveDrag                     ,


-- ** windowBeginResizeDrag
    windowBeginResizeDrag                   ,


-- ** windowClose
    windowClose                             ,


-- ** windowDeiconify
    windowDeiconify                         ,


-- ** windowFullscreen
    windowFullscreen                        ,


-- ** windowGetAcceptFocus
    windowGetAcceptFocus                    ,


-- ** windowGetApplication
    windowGetApplication                    ,


-- ** windowGetAttachedTo
    windowGetAttachedTo                     ,


-- ** windowGetDecorated
    windowGetDecorated                      ,


-- ** windowGetDefaultIconList
    windowGetDefaultIconList                ,


-- ** windowGetDefaultIconName
    windowGetDefaultIconName                ,


-- ** windowGetDefaultSize
    windowGetDefaultSize                    ,


-- ** windowGetDefaultWidget
    windowGetDefaultWidget                  ,


-- ** windowGetDeletable
    windowGetDeletable                      ,


-- ** windowGetDestroyWithParent
    windowGetDestroyWithParent              ,


-- ** windowGetFocus
    windowGetFocus                          ,


-- ** windowGetFocusOnMap
    windowGetFocusOnMap                     ,


-- ** windowGetFocusVisible
    windowGetFocusVisible                   ,


-- ** windowGetGravity
    windowGetGravity                        ,


-- ** windowGetGroup
    windowGetGroup                          ,


-- ** windowGetHasResizeGrip
    windowGetHasResizeGrip                  ,


-- ** windowGetHideTitlebarWhenMaximized
    windowGetHideTitlebarWhenMaximized      ,


-- ** windowGetIcon
    windowGetIcon                           ,


-- ** windowGetIconList
    windowGetIconList                       ,


-- ** windowGetIconName
    windowGetIconName                       ,


-- ** windowGetMnemonicModifier
    windowGetMnemonicModifier               ,


-- ** windowGetMnemonicsVisible
    windowGetMnemonicsVisible               ,


-- ** windowGetModal
    windowGetModal                          ,


-- ** windowGetOpacity
    windowGetOpacity                        ,


-- ** windowGetPosition
    windowGetPosition                       ,


-- ** windowGetResizable
    windowGetResizable                      ,


-- ** windowGetResizeGripArea
    windowGetResizeGripArea                 ,


-- ** windowGetRole
    windowGetRole                           ,


-- ** windowGetScreen
    windowGetScreen                         ,


-- ** windowGetSize
    windowGetSize                           ,


-- ** windowGetSkipPagerHint
    windowGetSkipPagerHint                  ,


-- ** windowGetSkipTaskbarHint
    windowGetSkipTaskbarHint                ,


-- ** windowGetTitle
    windowGetTitle                          ,


-- ** windowGetTitlebar
    windowGetTitlebar                       ,


-- ** windowGetTransientFor
    windowGetTransientFor                   ,


-- ** windowGetTypeHint
    windowGetTypeHint                       ,


-- ** windowGetUrgencyHint
    windowGetUrgencyHint                    ,


-- ** windowGetWindowType
    windowGetWindowType                     ,


-- ** windowHasGroup
    windowHasGroup                          ,


-- ** windowHasToplevelFocus
    windowHasToplevelFocus                  ,


-- ** windowIconify
    windowIconify                           ,


-- ** windowIsActive
    windowIsActive                          ,


-- ** windowIsMaximized
    windowIsMaximized                       ,


-- ** windowListToplevels
    windowListToplevels                     ,


-- ** windowMaximize
    windowMaximize                          ,


-- ** windowMnemonicActivate
    windowMnemonicActivate                  ,


-- ** windowMove
    windowMove                              ,


-- ** windowNew
    windowNew                               ,


-- ** windowParseGeometry
    windowParseGeometry                     ,


-- ** windowPresent
    windowPresent                           ,


-- ** windowPresentWithTime
    windowPresentWithTime                   ,


-- ** windowPropagateKeyEvent
    windowPropagateKeyEvent                 ,


-- ** windowRemoveAccelGroup
    windowRemoveAccelGroup                  ,


-- ** windowRemoveMnemonic
    windowRemoveMnemonic                    ,


-- ** windowReshowWithInitialSize
    windowReshowWithInitialSize             ,


-- ** windowResize
    windowResize                            ,


-- ** windowResizeGripIsVisible
    windowResizeGripIsVisible               ,


-- ** windowResizeToGeometry
    windowResizeToGeometry                  ,


-- ** windowSetAcceptFocus
    windowSetAcceptFocus                    ,


-- ** windowSetApplication
    windowSetApplication                    ,


-- ** windowSetAttachedTo
    windowSetAttachedTo                     ,


-- ** windowSetAutoStartupNotification
    windowSetAutoStartupNotification        ,


-- ** windowSetDecorated
    windowSetDecorated                      ,


-- ** windowSetDefault
    windowSetDefault                        ,


-- ** windowSetDefaultGeometry
    windowSetDefaultGeometry                ,


-- ** windowSetDefaultIcon
    windowSetDefaultIcon                    ,


-- ** windowSetDefaultIconFromFile
    windowSetDefaultIconFromFile            ,


-- ** windowSetDefaultIconList
    windowSetDefaultIconList                ,


-- ** windowSetDefaultIconName
    windowSetDefaultIconName                ,


-- ** windowSetDefaultSize
    windowSetDefaultSize                    ,


-- ** windowSetDeletable
    windowSetDeletable                      ,


-- ** windowSetDestroyWithParent
    windowSetDestroyWithParent              ,


-- ** windowSetFocus
    windowSetFocus                          ,


-- ** windowSetFocusOnMap
    windowSetFocusOnMap                     ,


-- ** windowSetFocusVisible
    windowSetFocusVisible                   ,


-- ** windowSetGeometryHints
    windowSetGeometryHints                  ,


-- ** windowSetGravity
    windowSetGravity                        ,


-- ** windowSetHasResizeGrip
    windowSetHasResizeGrip                  ,


-- ** windowSetHasUserRefCount
    windowSetHasUserRefCount                ,


-- ** windowSetHideTitlebarWhenMaximized
    windowSetHideTitlebarWhenMaximized      ,


-- ** windowSetIcon
    windowSetIcon                           ,


-- ** windowSetIconFromFile
    windowSetIconFromFile                   ,


-- ** windowSetIconList
    windowSetIconList                       ,


-- ** windowSetIconName
    windowSetIconName                       ,


-- ** windowSetInteractiveDebugging
    windowSetInteractiveDebugging           ,


-- ** windowSetKeepAbove
    windowSetKeepAbove                      ,


-- ** windowSetKeepBelow
    windowSetKeepBelow                      ,


-- ** windowSetMnemonicModifier
    windowSetMnemonicModifier               ,


-- ** windowSetMnemonicsVisible
    windowSetMnemonicsVisible               ,


-- ** windowSetModal
    windowSetModal                          ,


-- ** windowSetOpacity
    windowSetOpacity                        ,


-- ** windowSetPosition
    windowSetPosition                       ,


-- ** windowSetResizable
    windowSetResizable                      ,


-- ** windowSetRole
    windowSetRole                           ,


-- ** windowSetScreen
    windowSetScreen                         ,


-- ** windowSetSkipPagerHint
    windowSetSkipPagerHint                  ,


-- ** windowSetSkipTaskbarHint
    windowSetSkipTaskbarHint                ,


-- ** windowSetStartupId
    windowSetStartupId                      ,


-- ** windowSetTitle
    windowSetTitle                          ,


-- ** windowSetTitlebar
    windowSetTitlebar                       ,


-- ** windowSetTransientFor
    windowSetTransientFor                   ,


-- ** windowSetTypeHint
    windowSetTypeHint                       ,


-- ** windowSetUrgencyHint
    windowSetUrgencyHint                    ,


-- ** windowSetWmclass
    windowSetWmclass                        ,


-- ** windowStick
    windowStick                             ,


-- ** windowUnfullscreen
    windowUnfullscreen                      ,


-- ** windowUnmaximize
    windowUnmaximize                        ,


-- ** windowUnstick
    windowUnstick                           ,




 -- * Properties
-- ** AcceptFocus
    WindowAcceptFocusPropertyInfo           ,
    constructWindowAcceptFocus              ,
    getWindowAcceptFocus                    ,
    setWindowAcceptFocus                    ,


-- ** Application
    WindowApplicationPropertyInfo           ,
    constructWindowApplication              ,
    getWindowApplication                    ,
    setWindowApplication                    ,


-- ** AttachedTo
    WindowAttachedToPropertyInfo            ,
    constructWindowAttachedTo               ,
    getWindowAttachedTo                     ,
    setWindowAttachedTo                     ,


-- ** Decorated
    WindowDecoratedPropertyInfo             ,
    constructWindowDecorated                ,
    getWindowDecorated                      ,
    setWindowDecorated                      ,


-- ** DefaultHeight
    WindowDefaultHeightPropertyInfo         ,
    constructWindowDefaultHeight            ,
    getWindowDefaultHeight                  ,
    setWindowDefaultHeight                  ,


-- ** DefaultWidth
    WindowDefaultWidthPropertyInfo          ,
    constructWindowDefaultWidth             ,
    getWindowDefaultWidth                   ,
    setWindowDefaultWidth                   ,


-- ** Deletable
    WindowDeletablePropertyInfo             ,
    constructWindowDeletable                ,
    getWindowDeletable                      ,
    setWindowDeletable                      ,


-- ** DestroyWithParent
    WindowDestroyWithParentPropertyInfo     ,
    constructWindowDestroyWithParent        ,
    getWindowDestroyWithParent              ,
    setWindowDestroyWithParent              ,


-- ** FocusOnMap
    WindowFocusOnMapPropertyInfo            ,
    constructWindowFocusOnMap               ,
    getWindowFocusOnMap                     ,
    setWindowFocusOnMap                     ,


-- ** FocusVisible
    WindowFocusVisiblePropertyInfo          ,
    constructWindowFocusVisible             ,
    getWindowFocusVisible                   ,
    setWindowFocusVisible                   ,


-- ** Gravity
    WindowGravityPropertyInfo               ,
    constructWindowGravity                  ,
    getWindowGravity                        ,
    setWindowGravity                        ,


-- ** HasResizeGrip
    WindowHasResizeGripPropertyInfo         ,
    constructWindowHasResizeGrip            ,
    getWindowHasResizeGrip                  ,
    setWindowHasResizeGrip                  ,


-- ** HasToplevelFocus
    WindowHasToplevelFocusPropertyInfo      ,
    getWindowHasToplevelFocus               ,


-- ** HideTitlebarWhenMaximized
    WindowHideTitlebarWhenMaximizedPropertyInfo,
    constructWindowHideTitlebarWhenMaximized,
    getWindowHideTitlebarWhenMaximized      ,
    setWindowHideTitlebarWhenMaximized      ,


-- ** Icon
    WindowIconPropertyInfo                  ,
    constructWindowIcon                     ,
    getWindowIcon                           ,
    setWindowIcon                           ,


-- ** IconName
    WindowIconNamePropertyInfo              ,
    constructWindowIconName                 ,
    getWindowIconName                       ,
    setWindowIconName                       ,


-- ** IsActive
    WindowIsActivePropertyInfo              ,
    getWindowIsActive                       ,


-- ** IsMaximized
    WindowIsMaximizedPropertyInfo           ,
    getWindowIsMaximized                    ,


-- ** MnemonicsVisible
    WindowMnemonicsVisiblePropertyInfo      ,
    constructWindowMnemonicsVisible         ,
    getWindowMnemonicsVisible               ,
    setWindowMnemonicsVisible               ,


-- ** Modal
    WindowModalPropertyInfo                 ,
    constructWindowModal                    ,
    getWindowModal                          ,
    setWindowModal                          ,


-- ** Resizable
    WindowResizablePropertyInfo             ,
    constructWindowResizable                ,
    getWindowResizable                      ,
    setWindowResizable                      ,


-- ** ResizeGripVisible
    WindowResizeGripVisiblePropertyInfo     ,
    getWindowResizeGripVisible              ,


-- ** Role
    WindowRolePropertyInfo                  ,
    constructWindowRole                     ,
    getWindowRole                           ,
    setWindowRole                           ,


-- ** Screen
    WindowScreenPropertyInfo                ,
    constructWindowScreen                   ,
    getWindowScreen                         ,
    setWindowScreen                         ,


-- ** SkipPagerHint
    WindowSkipPagerHintPropertyInfo         ,
    constructWindowSkipPagerHint            ,
    getWindowSkipPagerHint                  ,
    setWindowSkipPagerHint                  ,


-- ** SkipTaskbarHint
    WindowSkipTaskbarHintPropertyInfo       ,
    constructWindowSkipTaskbarHint          ,
    getWindowSkipTaskbarHint                ,
    setWindowSkipTaskbarHint                ,


-- ** StartupId
    WindowStartupIdPropertyInfo             ,
    constructWindowStartupId                ,
    setWindowStartupId                      ,


-- ** Title
    WindowTitlePropertyInfo                 ,
    constructWindowTitle                    ,
    getWindowTitle                          ,
    setWindowTitle                          ,


-- ** TransientFor
    WindowTransientForPropertyInfo          ,
    constructWindowTransientFor             ,
    getWindowTransientFor                   ,
    setWindowTransientFor                   ,


-- ** Type
    WindowTypePropertyInfo                  ,
    constructWindowType                     ,
    getWindowType                           ,


-- ** TypeHint
    WindowTypeHintPropertyInfo              ,
    constructWindowTypeHint                 ,
    getWindowTypeHint                       ,
    setWindowTypeHint                       ,


-- ** UrgencyHint
    WindowUrgencyHintPropertyInfo           ,
    constructWindowUrgencyHint              ,
    getWindowUrgencyHint                    ,
    setWindowUrgencyHint                    ,


-- ** WindowPosition
    WindowWindowPositionPropertyInfo        ,
    constructWindowWindowPosition           ,
    getWindowWindowPosition                 ,
    setWindowWindowPosition                 ,




 -- * Signals
-- ** ActivateDefault
    WindowActivateDefaultCallback           ,
    WindowActivateDefaultCallbackC          ,
    WindowActivateDefaultSignalInfo         ,
    afterWindowActivateDefault              ,
    mkWindowActivateDefaultCallback         ,
    noWindowActivateDefaultCallback         ,
    onWindowActivateDefault                 ,
    windowActivateDefaultCallbackWrapper    ,
    windowActivateDefaultClosure            ,


-- ** ActivateFocus
    WindowActivateFocusCallback             ,
    WindowActivateFocusCallbackC            ,
    WindowActivateFocusSignalInfo           ,
    afterWindowActivateFocus                ,
    mkWindowActivateFocusCallback           ,
    noWindowActivateFocusCallback           ,
    onWindowActivateFocus                   ,
    windowActivateFocusCallbackWrapper      ,
    windowActivateFocusClosure              ,


-- ** EnableDebugging
    WindowEnableDebuggingCallback           ,
    WindowEnableDebuggingCallbackC          ,
    WindowEnableDebuggingSignalInfo         ,
    afterWindowEnableDebugging              ,
    mkWindowEnableDebuggingCallback         ,
    noWindowEnableDebuggingCallback         ,
    onWindowEnableDebugging                 ,
    windowEnableDebuggingCallbackWrapper    ,
    windowEnableDebuggingClosure            ,


-- ** KeysChanged
    WindowKeysChangedCallback               ,
    WindowKeysChangedCallbackC              ,
    WindowKeysChangedSignalInfo             ,
    afterWindowKeysChanged                  ,
    mkWindowKeysChangedCallback             ,
    noWindowKeysChangedCallback             ,
    onWindowKeysChanged                     ,
    windowKeysChangedCallbackWrapper        ,
    windowKeysChangedClosure                ,


-- ** SetFocus
    WindowSetFocusCallback                  ,
    WindowSetFocusCallbackC                 ,
    WindowSetFocusSignalInfo                ,
    afterWindowSetFocus                     ,
    mkWindowSetFocusCallback                ,
    noWindowSetFocusCallback                ,
    onWindowSetFocus                        ,
    windowSetFocusCallbackWrapper           ,
    windowSetFocusClosure                   ,




    ) where

import Prelude ()
import Data.GI.Base.ShortPrelude

import qualified Data.Text as T
import qualified Data.ByteString.Char8 as B
import qualified Data.Map as Map

import GI.Gtk.Types
import GI.Gtk.Callbacks
import qualified GI.Atk as Atk
import qualified GI.GObject as GObject
import qualified GI.Gdk as Gdk
import qualified GI.GdkPixbuf as GdkPixbuf
import qualified GI.Cairo as Cairo

newtype Window = Window (ForeignPtr Window)
foreign import ccall "gtk_window_get_type"
    c_gtk_window_get_type :: IO GType

type instance ParentTypes Window = WindowParentTypes
type WindowParentTypes = '[Bin, Container, Widget, GObject.Object, Atk.ImplementorIface, Buildable]

instance GObject Window where
    gobjectIsInitiallyUnowned _ = True
    gobjectType _ = c_gtk_window_get_type
    

class GObject o => WindowK o
instance (GObject o, IsDescendantOf Window o) => WindowK o

toWindow :: WindowK o => o -> IO Window
toWindow = unsafeCastTo Window

noWindow :: Maybe Window
noWindow = Nothing

-- signal Window::activate-default
type WindowActivateDefaultCallback =
    IO ()

noWindowActivateDefaultCallback :: Maybe WindowActivateDefaultCallback
noWindowActivateDefaultCallback = Nothing

type WindowActivateDefaultCallbackC =
    Ptr () ->                               -- object
    Ptr () ->                               -- user_data
    IO ()

foreign import ccall "wrapper"
    mkWindowActivateDefaultCallback :: WindowActivateDefaultCallbackC -> IO (FunPtr WindowActivateDefaultCallbackC)

windowActivateDefaultClosure :: WindowActivateDefaultCallback -> IO Closure
windowActivateDefaultClosure cb = newCClosure =<< mkWindowActivateDefaultCallback wrapped
    where wrapped = windowActivateDefaultCallbackWrapper cb

windowActivateDefaultCallbackWrapper ::
    WindowActivateDefaultCallback ->
    Ptr () ->
    Ptr () ->
    IO ()
windowActivateDefaultCallbackWrapper _cb _ _ = do
    _cb 

onWindowActivateDefault :: (GObject a, MonadIO m) => a -> WindowActivateDefaultCallback -> m SignalHandlerId
onWindowActivateDefault obj cb = liftIO $ connectWindowActivateDefault obj cb SignalConnectBefore
afterWindowActivateDefault :: (GObject a, MonadIO m) => a -> WindowActivateDefaultCallback -> m SignalHandlerId
afterWindowActivateDefault obj cb = connectWindowActivateDefault obj cb SignalConnectAfter

connectWindowActivateDefault :: (GObject a, MonadIO m) =>
                                a -> WindowActivateDefaultCallback -> SignalConnectMode -> m SignalHandlerId
connectWindowActivateDefault obj cb after = liftIO $ do
    cb' <- mkWindowActivateDefaultCallback (windowActivateDefaultCallbackWrapper cb)
    connectSignalFunPtr obj "activate-default" cb' after

-- signal Window::activate-focus
type WindowActivateFocusCallback =
    IO ()

noWindowActivateFocusCallback :: Maybe WindowActivateFocusCallback
noWindowActivateFocusCallback = Nothing

type WindowActivateFocusCallbackC =
    Ptr () ->                               -- object
    Ptr () ->                               -- user_data
    IO ()

foreign import ccall "wrapper"
    mkWindowActivateFocusCallback :: WindowActivateFocusCallbackC -> IO (FunPtr WindowActivateFocusCallbackC)

windowActivateFocusClosure :: WindowActivateFocusCallback -> IO Closure
windowActivateFocusClosure cb = newCClosure =<< mkWindowActivateFocusCallback wrapped
    where wrapped = windowActivateFocusCallbackWrapper cb

windowActivateFocusCallbackWrapper ::
    WindowActivateFocusCallback ->
    Ptr () ->
    Ptr () ->
    IO ()
windowActivateFocusCallbackWrapper _cb _ _ = do
    _cb 

onWindowActivateFocus :: (GObject a, MonadIO m) => a -> WindowActivateFocusCallback -> m SignalHandlerId
onWindowActivateFocus obj cb = liftIO $ connectWindowActivateFocus obj cb SignalConnectBefore
afterWindowActivateFocus :: (GObject a, MonadIO m) => a -> WindowActivateFocusCallback -> m SignalHandlerId
afterWindowActivateFocus obj cb = connectWindowActivateFocus obj cb SignalConnectAfter

connectWindowActivateFocus :: (GObject a, MonadIO m) =>
                              a -> WindowActivateFocusCallback -> SignalConnectMode -> m SignalHandlerId
connectWindowActivateFocus obj cb after = liftIO $ do
    cb' <- mkWindowActivateFocusCallback (windowActivateFocusCallbackWrapper cb)
    connectSignalFunPtr obj "activate-focus" cb' after

-- signal Window::enable-debugging
type WindowEnableDebuggingCallback =
    Bool ->
    IO Bool

noWindowEnableDebuggingCallback :: Maybe WindowEnableDebuggingCallback
noWindowEnableDebuggingCallback = Nothing

type WindowEnableDebuggingCallbackC =
    Ptr () ->                               -- object
    CInt ->
    Ptr () ->                               -- user_data
    IO CInt

foreign import ccall "wrapper"
    mkWindowEnableDebuggingCallback :: WindowEnableDebuggingCallbackC -> IO (FunPtr WindowEnableDebuggingCallbackC)

windowEnableDebuggingClosure :: WindowEnableDebuggingCallback -> IO Closure
windowEnableDebuggingClosure cb = newCClosure =<< mkWindowEnableDebuggingCallback wrapped
    where wrapped = windowEnableDebuggingCallbackWrapper cb

windowEnableDebuggingCallbackWrapper ::
    WindowEnableDebuggingCallback ->
    Ptr () ->
    CInt ->
    Ptr () ->
    IO CInt
windowEnableDebuggingCallbackWrapper _cb _ toggle _ = do
    let toggle' = (/= 0) toggle
    result <- _cb  toggle'
    let result' = (fromIntegral . fromEnum) result
    return result'

onWindowEnableDebugging :: (GObject a, MonadIO m) => a -> WindowEnableDebuggingCallback -> m SignalHandlerId
onWindowEnableDebugging obj cb = liftIO $ connectWindowEnableDebugging obj cb SignalConnectBefore
afterWindowEnableDebugging :: (GObject a, MonadIO m) => a -> WindowEnableDebuggingCallback -> m SignalHandlerId
afterWindowEnableDebugging obj cb = connectWindowEnableDebugging obj cb SignalConnectAfter

connectWindowEnableDebugging :: (GObject a, MonadIO m) =>
                                a -> WindowEnableDebuggingCallback -> SignalConnectMode -> m SignalHandlerId
connectWindowEnableDebugging obj cb after = liftIO $ do
    cb' <- mkWindowEnableDebuggingCallback (windowEnableDebuggingCallbackWrapper cb)
    connectSignalFunPtr obj "enable-debugging" cb' after

-- signal Window::keys-changed
type WindowKeysChangedCallback =
    IO ()

noWindowKeysChangedCallback :: Maybe WindowKeysChangedCallback
noWindowKeysChangedCallback = Nothing

type WindowKeysChangedCallbackC =
    Ptr () ->                               -- object
    Ptr () ->                               -- user_data
    IO ()

foreign import ccall "wrapper"
    mkWindowKeysChangedCallback :: WindowKeysChangedCallbackC -> IO (FunPtr WindowKeysChangedCallbackC)

windowKeysChangedClosure :: WindowKeysChangedCallback -> IO Closure
windowKeysChangedClosure cb = newCClosure =<< mkWindowKeysChangedCallback wrapped
    where wrapped = windowKeysChangedCallbackWrapper cb

windowKeysChangedCallbackWrapper ::
    WindowKeysChangedCallback ->
    Ptr () ->
    Ptr () ->
    IO ()
windowKeysChangedCallbackWrapper _cb _ _ = do
    _cb 

onWindowKeysChanged :: (GObject a, MonadIO m) => a -> WindowKeysChangedCallback -> m SignalHandlerId
onWindowKeysChanged obj cb = liftIO $ connectWindowKeysChanged obj cb SignalConnectBefore
afterWindowKeysChanged :: (GObject a, MonadIO m) => a -> WindowKeysChangedCallback -> m SignalHandlerId
afterWindowKeysChanged obj cb = connectWindowKeysChanged obj cb SignalConnectAfter

connectWindowKeysChanged :: (GObject a, MonadIO m) =>
                            a -> WindowKeysChangedCallback -> SignalConnectMode -> m SignalHandlerId
connectWindowKeysChanged obj cb after = liftIO $ do
    cb' <- mkWindowKeysChangedCallback (windowKeysChangedCallbackWrapper cb)
    connectSignalFunPtr obj "keys-changed" cb' after

-- signal Window::set-focus
type WindowSetFocusCallback =
    Widget ->
    IO ()

noWindowSetFocusCallback :: Maybe WindowSetFocusCallback
noWindowSetFocusCallback = Nothing

type WindowSetFocusCallbackC =
    Ptr () ->                               -- object
    Ptr Widget ->
    Ptr () ->                               -- user_data
    IO ()

foreign import ccall "wrapper"
    mkWindowSetFocusCallback :: WindowSetFocusCallbackC -> IO (FunPtr WindowSetFocusCallbackC)

windowSetFocusClosure :: WindowSetFocusCallback -> IO Closure
windowSetFocusClosure cb = newCClosure =<< mkWindowSetFocusCallback wrapped
    where wrapped = windowSetFocusCallbackWrapper cb

windowSetFocusCallbackWrapper ::
    WindowSetFocusCallback ->
    Ptr () ->
    Ptr Widget ->
    Ptr () ->
    IO ()
windowSetFocusCallbackWrapper _cb _ object _ = do
    object' <- (newObject Widget) object
    _cb  object'

onWindowSetFocus :: (GObject a, MonadIO m) => a -> WindowSetFocusCallback -> m SignalHandlerId
onWindowSetFocus obj cb = liftIO $ connectWindowSetFocus obj cb SignalConnectBefore
afterWindowSetFocus :: (GObject a, MonadIO m) => a -> WindowSetFocusCallback -> m SignalHandlerId
afterWindowSetFocus obj cb = connectWindowSetFocus obj cb SignalConnectAfter

connectWindowSetFocus :: (GObject a, MonadIO m) =>
                         a -> WindowSetFocusCallback -> SignalConnectMode -> m SignalHandlerId
connectWindowSetFocus obj cb after = liftIO $ do
    cb' <- mkWindowSetFocusCallback (windowSetFocusCallbackWrapper cb)
    connectSignalFunPtr obj "set-focus" cb' after

-- VVV Prop "accept-focus"
   -- Type: TBasicType TBoolean
   -- Flags: [PropertyReadable,PropertyWritable]

getWindowAcceptFocus :: (MonadIO m, WindowK o) => o -> m Bool
getWindowAcceptFocus obj = liftIO $ getObjectPropertyBool obj "accept-focus"

setWindowAcceptFocus :: (MonadIO m, WindowK o) => o -> Bool -> m ()
setWindowAcceptFocus obj val = liftIO $ setObjectPropertyBool obj "accept-focus" val

constructWindowAcceptFocus :: Bool -> IO ([Char], GValue)
constructWindowAcceptFocus val = constructObjectPropertyBool "accept-focus" val

data WindowAcceptFocusPropertyInfo
instance AttrInfo WindowAcceptFocusPropertyInfo where
    type AttrAllowedOps WindowAcceptFocusPropertyInfo = '[ 'AttrSet, 'AttrConstruct, 'AttrGet]
    type AttrSetTypeConstraint WindowAcceptFocusPropertyInfo = (~) Bool
    type AttrBaseTypeConstraint WindowAcceptFocusPropertyInfo = WindowK
    type AttrGetType WindowAcceptFocusPropertyInfo = Bool
    type AttrLabel WindowAcceptFocusPropertyInfo = "Window::accept-focus"
    attrGet _ = getWindowAcceptFocus
    attrSet _ = setWindowAcceptFocus
    attrConstruct _ = constructWindowAcceptFocus

-- VVV Prop "application"
   -- Type: TInterface "Gtk" "Application"
   -- Flags: [PropertyReadable,PropertyWritable]

getWindowApplication :: (MonadIO m, WindowK o) => o -> m Application
getWindowApplication obj = liftIO $ getObjectPropertyObject obj "application" Application

setWindowApplication :: (MonadIO m, WindowK o, ApplicationK a) => o -> a -> m ()
setWindowApplication obj val = liftIO $ setObjectPropertyObject obj "application" val

constructWindowApplication :: (ApplicationK a) => a -> IO ([Char], GValue)
constructWindowApplication val = constructObjectPropertyObject "application" val

data WindowApplicationPropertyInfo
instance AttrInfo WindowApplicationPropertyInfo where
    type AttrAllowedOps WindowApplicationPropertyInfo = '[ 'AttrSet, 'AttrConstruct, 'AttrGet]
    type AttrSetTypeConstraint WindowApplicationPropertyInfo = ApplicationK
    type AttrBaseTypeConstraint WindowApplicationPropertyInfo = WindowK
    type AttrGetType WindowApplicationPropertyInfo = Application
    type AttrLabel WindowApplicationPropertyInfo = "Window::application"
    attrGet _ = getWindowApplication
    attrSet _ = setWindowApplication
    attrConstruct _ = constructWindowApplication

-- VVV Prop "attached-to"
   -- Type: TInterface "Gtk" "Widget"
   -- Flags: [PropertyReadable,PropertyWritable,PropertyConstruct]

getWindowAttachedTo :: (MonadIO m, WindowK o) => o -> m Widget
getWindowAttachedTo obj = liftIO $ getObjectPropertyObject obj "attached-to" Widget

setWindowAttachedTo :: (MonadIO m, WindowK o, WidgetK a) => o -> a -> m ()
setWindowAttachedTo obj val = liftIO $ setObjectPropertyObject obj "attached-to" val

constructWindowAttachedTo :: (WidgetK a) => a -> IO ([Char], GValue)
constructWindowAttachedTo val = constructObjectPropertyObject "attached-to" val

data WindowAttachedToPropertyInfo
instance AttrInfo WindowAttachedToPropertyInfo where
    type AttrAllowedOps WindowAttachedToPropertyInfo = '[ 'AttrSet, 'AttrConstruct, 'AttrGet]
    type AttrSetTypeConstraint WindowAttachedToPropertyInfo = WidgetK
    type AttrBaseTypeConstraint WindowAttachedToPropertyInfo = WindowK
    type AttrGetType WindowAttachedToPropertyInfo = Widget
    type AttrLabel WindowAttachedToPropertyInfo = "Window::attached-to"
    attrGet _ = getWindowAttachedTo
    attrSet _ = setWindowAttachedTo
    attrConstruct _ = constructWindowAttachedTo

-- VVV Prop "decorated"
   -- Type: TBasicType TBoolean
   -- Flags: [PropertyReadable,PropertyWritable]

getWindowDecorated :: (MonadIO m, WindowK o) => o -> m Bool
getWindowDecorated obj = liftIO $ getObjectPropertyBool obj "decorated"

setWindowDecorated :: (MonadIO m, WindowK o) => o -> Bool -> m ()
setWindowDecorated obj val = liftIO $ setObjectPropertyBool obj "decorated" val

constructWindowDecorated :: Bool -> IO ([Char], GValue)
constructWindowDecorated val = constructObjectPropertyBool "decorated" val

data WindowDecoratedPropertyInfo
instance AttrInfo WindowDecoratedPropertyInfo where
    type AttrAllowedOps WindowDecoratedPropertyInfo = '[ 'AttrSet, 'AttrConstruct, 'AttrGet]
    type AttrSetTypeConstraint WindowDecoratedPropertyInfo = (~) Bool
    type AttrBaseTypeConstraint WindowDecoratedPropertyInfo = WindowK
    type AttrGetType WindowDecoratedPropertyInfo = Bool
    type AttrLabel WindowDecoratedPropertyInfo = "Window::decorated"
    attrGet _ = getWindowDecorated
    attrSet _ = setWindowDecorated
    attrConstruct _ = constructWindowDecorated

-- VVV Prop "default-height"
   -- Type: TBasicType TInt32
   -- Flags: [PropertyReadable,PropertyWritable]

getWindowDefaultHeight :: (MonadIO m, WindowK o) => o -> m Int32
getWindowDefaultHeight obj = liftIO $ getObjectPropertyCInt obj "default-height"

setWindowDefaultHeight :: (MonadIO m, WindowK o) => o -> Int32 -> m ()
setWindowDefaultHeight obj val = liftIO $ setObjectPropertyCInt obj "default-height" val

constructWindowDefaultHeight :: Int32 -> IO ([Char], GValue)
constructWindowDefaultHeight val = constructObjectPropertyCInt "default-height" val

data WindowDefaultHeightPropertyInfo
instance AttrInfo WindowDefaultHeightPropertyInfo where
    type AttrAllowedOps WindowDefaultHeightPropertyInfo = '[ 'AttrSet, 'AttrConstruct, 'AttrGet]
    type AttrSetTypeConstraint WindowDefaultHeightPropertyInfo = (~) Int32
    type AttrBaseTypeConstraint WindowDefaultHeightPropertyInfo = WindowK
    type AttrGetType WindowDefaultHeightPropertyInfo = Int32
    type AttrLabel WindowDefaultHeightPropertyInfo = "Window::default-height"
    attrGet _ = getWindowDefaultHeight
    attrSet _ = setWindowDefaultHeight
    attrConstruct _ = constructWindowDefaultHeight

-- VVV Prop "default-width"
   -- Type: TBasicType TInt32
   -- Flags: [PropertyReadable,PropertyWritable]

getWindowDefaultWidth :: (MonadIO m, WindowK o) => o -> m Int32
getWindowDefaultWidth obj = liftIO $ getObjectPropertyCInt obj "default-width"

setWindowDefaultWidth :: (MonadIO m, WindowK o) => o -> Int32 -> m ()
setWindowDefaultWidth obj val = liftIO $ setObjectPropertyCInt obj "default-width" val

constructWindowDefaultWidth :: Int32 -> IO ([Char], GValue)
constructWindowDefaultWidth val = constructObjectPropertyCInt "default-width" val

data WindowDefaultWidthPropertyInfo
instance AttrInfo WindowDefaultWidthPropertyInfo where
    type AttrAllowedOps WindowDefaultWidthPropertyInfo = '[ 'AttrSet, 'AttrConstruct, 'AttrGet]
    type AttrSetTypeConstraint WindowDefaultWidthPropertyInfo = (~) Int32
    type AttrBaseTypeConstraint WindowDefaultWidthPropertyInfo = WindowK
    type AttrGetType WindowDefaultWidthPropertyInfo = Int32
    type AttrLabel WindowDefaultWidthPropertyInfo = "Window::default-width"
    attrGet _ = getWindowDefaultWidth
    attrSet _ = setWindowDefaultWidth
    attrConstruct _ = constructWindowDefaultWidth

-- VVV Prop "deletable"
   -- Type: TBasicType TBoolean
   -- Flags: [PropertyReadable,PropertyWritable]

getWindowDeletable :: (MonadIO m, WindowK o) => o -> m Bool
getWindowDeletable obj = liftIO $ getObjectPropertyBool obj "deletable"

setWindowDeletable :: (MonadIO m, WindowK o) => o -> Bool -> m ()
setWindowDeletable obj val = liftIO $ setObjectPropertyBool obj "deletable" val

constructWindowDeletable :: Bool -> IO ([Char], GValue)
constructWindowDeletable val = constructObjectPropertyBool "deletable" val

data WindowDeletablePropertyInfo
instance AttrInfo WindowDeletablePropertyInfo where
    type AttrAllowedOps WindowDeletablePropertyInfo = '[ 'AttrSet, 'AttrConstruct, 'AttrGet]
    type AttrSetTypeConstraint WindowDeletablePropertyInfo = (~) Bool
    type AttrBaseTypeConstraint WindowDeletablePropertyInfo = WindowK
    type AttrGetType WindowDeletablePropertyInfo = Bool
    type AttrLabel WindowDeletablePropertyInfo = "Window::deletable"
    attrGet _ = getWindowDeletable
    attrSet _ = setWindowDeletable
    attrConstruct _ = constructWindowDeletable

-- VVV Prop "destroy-with-parent"
   -- Type: TBasicType TBoolean
   -- Flags: [PropertyReadable,PropertyWritable]

getWindowDestroyWithParent :: (MonadIO m, WindowK o) => o -> m Bool
getWindowDestroyWithParent obj = liftIO $ getObjectPropertyBool obj "destroy-with-parent"

setWindowDestroyWithParent :: (MonadIO m, WindowK o) => o -> Bool -> m ()
setWindowDestroyWithParent obj val = liftIO $ setObjectPropertyBool obj "destroy-with-parent" val

constructWindowDestroyWithParent :: Bool -> IO ([Char], GValue)
constructWindowDestroyWithParent val = constructObjectPropertyBool "destroy-with-parent" val

data WindowDestroyWithParentPropertyInfo
instance AttrInfo WindowDestroyWithParentPropertyInfo where
    type AttrAllowedOps WindowDestroyWithParentPropertyInfo = '[ 'AttrSet, 'AttrConstruct, 'AttrGet]
    type AttrSetTypeConstraint WindowDestroyWithParentPropertyInfo = (~) Bool
    type AttrBaseTypeConstraint WindowDestroyWithParentPropertyInfo = WindowK
    type AttrGetType WindowDestroyWithParentPropertyInfo = Bool
    type AttrLabel WindowDestroyWithParentPropertyInfo = "Window::destroy-with-parent"
    attrGet _ = getWindowDestroyWithParent
    attrSet _ = setWindowDestroyWithParent
    attrConstruct _ = constructWindowDestroyWithParent

-- VVV Prop "focus-on-map"
   -- Type: TBasicType TBoolean
   -- Flags: [PropertyReadable,PropertyWritable]

getWindowFocusOnMap :: (MonadIO m, WindowK o) => o -> m Bool
getWindowFocusOnMap obj = liftIO $ getObjectPropertyBool obj "focus-on-map"

setWindowFocusOnMap :: (MonadIO m, WindowK o) => o -> Bool -> m ()
setWindowFocusOnMap obj val = liftIO $ setObjectPropertyBool obj "focus-on-map" val

constructWindowFocusOnMap :: Bool -> IO ([Char], GValue)
constructWindowFocusOnMap val = constructObjectPropertyBool "focus-on-map" val

data WindowFocusOnMapPropertyInfo
instance AttrInfo WindowFocusOnMapPropertyInfo where
    type AttrAllowedOps WindowFocusOnMapPropertyInfo = '[ 'AttrSet, 'AttrConstruct, 'AttrGet]
    type AttrSetTypeConstraint WindowFocusOnMapPropertyInfo = (~) Bool
    type AttrBaseTypeConstraint WindowFocusOnMapPropertyInfo = WindowK
    type AttrGetType WindowFocusOnMapPropertyInfo = Bool
    type AttrLabel WindowFocusOnMapPropertyInfo = "Window::focus-on-map"
    attrGet _ = getWindowFocusOnMap
    attrSet _ = setWindowFocusOnMap
    attrConstruct _ = constructWindowFocusOnMap

-- VVV Prop "focus-visible"
   -- Type: TBasicType TBoolean
   -- Flags: [PropertyReadable,PropertyWritable]

getWindowFocusVisible :: (MonadIO m, WindowK o) => o -> m Bool
getWindowFocusVisible obj = liftIO $ getObjectPropertyBool obj "focus-visible"

setWindowFocusVisible :: (MonadIO m, WindowK o) => o -> Bool -> m ()
setWindowFocusVisible obj val = liftIO $ setObjectPropertyBool obj "focus-visible" val

constructWindowFocusVisible :: Bool -> IO ([Char], GValue)
constructWindowFocusVisible val = constructObjectPropertyBool "focus-visible" val

data WindowFocusVisiblePropertyInfo
instance AttrInfo WindowFocusVisiblePropertyInfo where
    type AttrAllowedOps WindowFocusVisiblePropertyInfo = '[ 'AttrSet, 'AttrConstruct, 'AttrGet]
    type AttrSetTypeConstraint WindowFocusVisiblePropertyInfo = (~) Bool
    type AttrBaseTypeConstraint WindowFocusVisiblePropertyInfo = WindowK
    type AttrGetType WindowFocusVisiblePropertyInfo = Bool
    type AttrLabel WindowFocusVisiblePropertyInfo = "Window::focus-visible"
    attrGet _ = getWindowFocusVisible
    attrSet _ = setWindowFocusVisible
    attrConstruct _ = constructWindowFocusVisible

-- VVV Prop "gravity"
   -- Type: TInterface "Gdk" "Gravity"
   -- Flags: [PropertyReadable,PropertyWritable]

getWindowGravity :: (MonadIO m, WindowK o) => o -> m Gdk.Gravity
getWindowGravity obj = liftIO $ getObjectPropertyEnum obj "gravity"

setWindowGravity :: (MonadIO m, WindowK o) => o -> Gdk.Gravity -> m ()
setWindowGravity obj val = liftIO $ setObjectPropertyEnum obj "gravity" val

constructWindowGravity :: Gdk.Gravity -> IO ([Char], GValue)
constructWindowGravity val = constructObjectPropertyEnum "gravity" val

data WindowGravityPropertyInfo
instance AttrInfo WindowGravityPropertyInfo where
    type AttrAllowedOps WindowGravityPropertyInfo = '[ 'AttrSet, 'AttrConstruct, 'AttrGet]
    type AttrSetTypeConstraint WindowGravityPropertyInfo = (~) Gdk.Gravity
    type AttrBaseTypeConstraint WindowGravityPropertyInfo = WindowK
    type AttrGetType WindowGravityPropertyInfo = Gdk.Gravity
    type AttrLabel WindowGravityPropertyInfo = "Window::gravity"
    attrGet _ = getWindowGravity
    attrSet _ = setWindowGravity
    attrConstruct _ = constructWindowGravity

-- VVV Prop "has-resize-grip"
   -- Type: TBasicType TBoolean
   -- Flags: [PropertyReadable,PropertyWritable]

getWindowHasResizeGrip :: (MonadIO m, WindowK o) => o -> m Bool
getWindowHasResizeGrip obj = liftIO $ getObjectPropertyBool obj "has-resize-grip"

setWindowHasResizeGrip :: (MonadIO m, WindowK o) => o -> Bool -> m ()
setWindowHasResizeGrip obj val = liftIO $ setObjectPropertyBool obj "has-resize-grip" val

constructWindowHasResizeGrip :: Bool -> IO ([Char], GValue)
constructWindowHasResizeGrip val = constructObjectPropertyBool "has-resize-grip" val

data WindowHasResizeGripPropertyInfo
instance AttrInfo WindowHasResizeGripPropertyInfo where
    type AttrAllowedOps WindowHasResizeGripPropertyInfo = '[ 'AttrSet, 'AttrConstruct, 'AttrGet]
    type AttrSetTypeConstraint WindowHasResizeGripPropertyInfo = (~) Bool
    type AttrBaseTypeConstraint WindowHasResizeGripPropertyInfo = WindowK
    type AttrGetType WindowHasResizeGripPropertyInfo = Bool
    type AttrLabel WindowHasResizeGripPropertyInfo = "Window::has-resize-grip"
    attrGet _ = getWindowHasResizeGrip
    attrSet _ = setWindowHasResizeGrip
    attrConstruct _ = constructWindowHasResizeGrip

-- VVV Prop "has-toplevel-focus"
   -- Type: TBasicType TBoolean
   -- Flags: [PropertyReadable]

getWindowHasToplevelFocus :: (MonadIO m, WindowK o) => o -> m Bool
getWindowHasToplevelFocus obj = liftIO $ getObjectPropertyBool obj "has-toplevel-focus"

data WindowHasToplevelFocusPropertyInfo
instance AttrInfo WindowHasToplevelFocusPropertyInfo where
    type AttrAllowedOps WindowHasToplevelFocusPropertyInfo = '[ 'AttrGet]
    type AttrSetTypeConstraint WindowHasToplevelFocusPropertyInfo = (~) ()
    type AttrBaseTypeConstraint WindowHasToplevelFocusPropertyInfo = WindowK
    type AttrGetType WindowHasToplevelFocusPropertyInfo = Bool
    type AttrLabel WindowHasToplevelFocusPropertyInfo = "Window::has-toplevel-focus"
    attrGet _ = getWindowHasToplevelFocus
    attrSet _ = undefined
    attrConstruct _ = undefined

-- VVV Prop "hide-titlebar-when-maximized"
   -- Type: TBasicType TBoolean
   -- Flags: [PropertyReadable,PropertyWritable]

getWindowHideTitlebarWhenMaximized :: (MonadIO m, WindowK o) => o -> m Bool
getWindowHideTitlebarWhenMaximized obj = liftIO $ getObjectPropertyBool obj "hide-titlebar-when-maximized"

setWindowHideTitlebarWhenMaximized :: (MonadIO m, WindowK o) => o -> Bool -> m ()
setWindowHideTitlebarWhenMaximized obj val = liftIO $ setObjectPropertyBool obj "hide-titlebar-when-maximized" val

constructWindowHideTitlebarWhenMaximized :: Bool -> IO ([Char], GValue)
constructWindowHideTitlebarWhenMaximized val = constructObjectPropertyBool "hide-titlebar-when-maximized" val

data WindowHideTitlebarWhenMaximizedPropertyInfo
instance AttrInfo WindowHideTitlebarWhenMaximizedPropertyInfo where
    type AttrAllowedOps WindowHideTitlebarWhenMaximizedPropertyInfo = '[ 'AttrSet, 'AttrConstruct, 'AttrGet]
    type AttrSetTypeConstraint WindowHideTitlebarWhenMaximizedPropertyInfo = (~) Bool
    type AttrBaseTypeConstraint WindowHideTitlebarWhenMaximizedPropertyInfo = WindowK
    type AttrGetType WindowHideTitlebarWhenMaximizedPropertyInfo = Bool
    type AttrLabel WindowHideTitlebarWhenMaximizedPropertyInfo = "Window::hide-titlebar-when-maximized"
    attrGet _ = getWindowHideTitlebarWhenMaximized
    attrSet _ = setWindowHideTitlebarWhenMaximized
    attrConstruct _ = constructWindowHideTitlebarWhenMaximized

-- VVV Prop "icon"
   -- Type: TInterface "GdkPixbuf" "Pixbuf"
   -- Flags: [PropertyReadable,PropertyWritable]

getWindowIcon :: (MonadIO m, WindowK o) => o -> m GdkPixbuf.Pixbuf
getWindowIcon obj = liftIO $ getObjectPropertyObject obj "icon" GdkPixbuf.Pixbuf

setWindowIcon :: (MonadIO m, WindowK o, GdkPixbuf.PixbufK a) => o -> a -> m ()
setWindowIcon obj val = liftIO $ setObjectPropertyObject obj "icon" val

constructWindowIcon :: (GdkPixbuf.PixbufK a) => a -> IO ([Char], GValue)
constructWindowIcon val = constructObjectPropertyObject "icon" val

data WindowIconPropertyInfo
instance AttrInfo WindowIconPropertyInfo where
    type AttrAllowedOps WindowIconPropertyInfo = '[ 'AttrSet, 'AttrConstruct, 'AttrGet]
    type AttrSetTypeConstraint WindowIconPropertyInfo = GdkPixbuf.PixbufK
    type AttrBaseTypeConstraint WindowIconPropertyInfo = WindowK
    type AttrGetType WindowIconPropertyInfo = GdkPixbuf.Pixbuf
    type AttrLabel WindowIconPropertyInfo = "Window::icon"
    attrGet _ = getWindowIcon
    attrSet _ = setWindowIcon
    attrConstruct _ = constructWindowIcon

-- VVV Prop "icon-name"
   -- Type: TBasicType TUTF8
   -- Flags: [PropertyReadable,PropertyWritable]

getWindowIconName :: (MonadIO m, WindowK o) => o -> m T.Text
getWindowIconName obj = liftIO $ getObjectPropertyString obj "icon-name"

setWindowIconName :: (MonadIO m, WindowK o) => o -> T.Text -> m ()
setWindowIconName obj val = liftIO $ setObjectPropertyString obj "icon-name" val

constructWindowIconName :: T.Text -> IO ([Char], GValue)
constructWindowIconName val = constructObjectPropertyString "icon-name" val

data WindowIconNamePropertyInfo
instance AttrInfo WindowIconNamePropertyInfo where
    type AttrAllowedOps WindowIconNamePropertyInfo = '[ 'AttrSet, 'AttrConstruct, 'AttrGet]
    type AttrSetTypeConstraint WindowIconNamePropertyInfo = (~) T.Text
    type AttrBaseTypeConstraint WindowIconNamePropertyInfo = WindowK
    type AttrGetType WindowIconNamePropertyInfo = T.Text
    type AttrLabel WindowIconNamePropertyInfo = "Window::icon-name"
    attrGet _ = getWindowIconName
    attrSet _ = setWindowIconName
    attrConstruct _ = constructWindowIconName

-- VVV Prop "is-active"
   -- Type: TBasicType TBoolean
   -- Flags: [PropertyReadable]

getWindowIsActive :: (MonadIO m, WindowK o) => o -> m Bool
getWindowIsActive obj = liftIO $ getObjectPropertyBool obj "is-active"

data WindowIsActivePropertyInfo
instance AttrInfo WindowIsActivePropertyInfo where
    type AttrAllowedOps WindowIsActivePropertyInfo = '[ 'AttrGet]
    type AttrSetTypeConstraint WindowIsActivePropertyInfo = (~) ()
    type AttrBaseTypeConstraint WindowIsActivePropertyInfo = WindowK
    type AttrGetType WindowIsActivePropertyInfo = Bool
    type AttrLabel WindowIsActivePropertyInfo = "Window::is-active"
    attrGet _ = getWindowIsActive
    attrSet _ = undefined
    attrConstruct _ = undefined

-- VVV Prop "is-maximized"
   -- Type: TBasicType TBoolean
   -- Flags: [PropertyReadable]

getWindowIsMaximized :: (MonadIO m, WindowK o) => o -> m Bool
getWindowIsMaximized obj = liftIO $ getObjectPropertyBool obj "is-maximized"

data WindowIsMaximizedPropertyInfo
instance AttrInfo WindowIsMaximizedPropertyInfo where
    type AttrAllowedOps WindowIsMaximizedPropertyInfo = '[ 'AttrGet]
    type AttrSetTypeConstraint WindowIsMaximizedPropertyInfo = (~) ()
    type AttrBaseTypeConstraint WindowIsMaximizedPropertyInfo = WindowK
    type AttrGetType WindowIsMaximizedPropertyInfo = Bool
    type AttrLabel WindowIsMaximizedPropertyInfo = "Window::is-maximized"
    attrGet _ = getWindowIsMaximized
    attrSet _ = undefined
    attrConstruct _ = undefined

-- VVV Prop "mnemonics-visible"
   -- Type: TBasicType TBoolean
   -- Flags: [PropertyReadable,PropertyWritable]

getWindowMnemonicsVisible :: (MonadIO m, WindowK o) => o -> m Bool
getWindowMnemonicsVisible obj = liftIO $ getObjectPropertyBool obj "mnemonics-visible"

setWindowMnemonicsVisible :: (MonadIO m, WindowK o) => o -> Bool -> m ()
setWindowMnemonicsVisible obj val = liftIO $ setObjectPropertyBool obj "mnemonics-visible" val

constructWindowMnemonicsVisible :: Bool -> IO ([Char], GValue)
constructWindowMnemonicsVisible val = constructObjectPropertyBool "mnemonics-visible" val

data WindowMnemonicsVisiblePropertyInfo
instance AttrInfo WindowMnemonicsVisiblePropertyInfo where
    type AttrAllowedOps WindowMnemonicsVisiblePropertyInfo = '[ 'AttrSet, 'AttrConstruct, 'AttrGet]
    type AttrSetTypeConstraint WindowMnemonicsVisiblePropertyInfo = (~) Bool
    type AttrBaseTypeConstraint WindowMnemonicsVisiblePropertyInfo = WindowK
    type AttrGetType WindowMnemonicsVisiblePropertyInfo = Bool
    type AttrLabel WindowMnemonicsVisiblePropertyInfo = "Window::mnemonics-visible"
    attrGet _ = getWindowMnemonicsVisible
    attrSet _ = setWindowMnemonicsVisible
    attrConstruct _ = constructWindowMnemonicsVisible

-- VVV Prop "modal"
   -- Type: TBasicType TBoolean
   -- Flags: [PropertyReadable,PropertyWritable]

getWindowModal :: (MonadIO m, WindowK o) => o -> m Bool
getWindowModal obj = liftIO $ getObjectPropertyBool obj "modal"

setWindowModal :: (MonadIO m, WindowK o) => o -> Bool -> m ()
setWindowModal obj val = liftIO $ setObjectPropertyBool obj "modal" val

constructWindowModal :: Bool -> IO ([Char], GValue)
constructWindowModal val = constructObjectPropertyBool "modal" val

data WindowModalPropertyInfo
instance AttrInfo WindowModalPropertyInfo where
    type AttrAllowedOps WindowModalPropertyInfo = '[ 'AttrSet, 'AttrConstruct, 'AttrGet]
    type AttrSetTypeConstraint WindowModalPropertyInfo = (~) Bool
    type AttrBaseTypeConstraint WindowModalPropertyInfo = WindowK
    type AttrGetType WindowModalPropertyInfo = Bool
    type AttrLabel WindowModalPropertyInfo = "Window::modal"
    attrGet _ = getWindowModal
    attrSet _ = setWindowModal
    attrConstruct _ = constructWindowModal

-- VVV Prop "resizable"
   -- Type: TBasicType TBoolean
   -- Flags: [PropertyReadable,PropertyWritable]

getWindowResizable :: (MonadIO m, WindowK o) => o -> m Bool
getWindowResizable obj = liftIO $ getObjectPropertyBool obj "resizable"

setWindowResizable :: (MonadIO m, WindowK o) => o -> Bool -> m ()
setWindowResizable obj val = liftIO $ setObjectPropertyBool obj "resizable" val

constructWindowResizable :: Bool -> IO ([Char], GValue)
constructWindowResizable val = constructObjectPropertyBool "resizable" val

data WindowResizablePropertyInfo
instance AttrInfo WindowResizablePropertyInfo where
    type AttrAllowedOps WindowResizablePropertyInfo = '[ 'AttrSet, 'AttrConstruct, 'AttrGet]
    type AttrSetTypeConstraint WindowResizablePropertyInfo = (~) Bool
    type AttrBaseTypeConstraint WindowResizablePropertyInfo = WindowK
    type AttrGetType WindowResizablePropertyInfo = Bool
    type AttrLabel WindowResizablePropertyInfo = "Window::resizable"
    attrGet _ = getWindowResizable
    attrSet _ = setWindowResizable
    attrConstruct _ = constructWindowResizable

-- VVV Prop "resize-grip-visible"
   -- Type: TBasicType TBoolean
   -- Flags: [PropertyReadable]

getWindowResizeGripVisible :: (MonadIO m, WindowK o) => o -> m Bool
getWindowResizeGripVisible obj = liftIO $ getObjectPropertyBool obj "resize-grip-visible"

data WindowResizeGripVisiblePropertyInfo
instance AttrInfo WindowResizeGripVisiblePropertyInfo where
    type AttrAllowedOps WindowResizeGripVisiblePropertyInfo = '[ 'AttrGet]
    type AttrSetTypeConstraint WindowResizeGripVisiblePropertyInfo = (~) ()
    type AttrBaseTypeConstraint WindowResizeGripVisiblePropertyInfo = WindowK
    type AttrGetType WindowResizeGripVisiblePropertyInfo = Bool
    type AttrLabel WindowResizeGripVisiblePropertyInfo = "Window::resize-grip-visible"
    attrGet _ = getWindowResizeGripVisible
    attrSet _ = undefined
    attrConstruct _ = undefined

-- VVV Prop "role"
   -- Type: TBasicType TUTF8
   -- Flags: [PropertyReadable,PropertyWritable]

getWindowRole :: (MonadIO m, WindowK o) => o -> m T.Text
getWindowRole obj = liftIO $ getObjectPropertyString obj "role"

setWindowRole :: (MonadIO m, WindowK o) => o -> T.Text -> m ()
setWindowRole obj val = liftIO $ setObjectPropertyString obj "role" val

constructWindowRole :: T.Text -> IO ([Char], GValue)
constructWindowRole val = constructObjectPropertyString "role" val

data WindowRolePropertyInfo
instance AttrInfo WindowRolePropertyInfo where
    type AttrAllowedOps WindowRolePropertyInfo = '[ 'AttrSet, 'AttrConstruct, 'AttrGet]
    type AttrSetTypeConstraint WindowRolePropertyInfo = (~) T.Text
    type AttrBaseTypeConstraint WindowRolePropertyInfo = WindowK
    type AttrGetType WindowRolePropertyInfo = T.Text
    type AttrLabel WindowRolePropertyInfo = "Window::role"
    attrGet _ = getWindowRole
    attrSet _ = setWindowRole
    attrConstruct _ = constructWindowRole

-- VVV Prop "screen"
   -- Type: TInterface "Gdk" "Screen"
   -- Flags: [PropertyReadable,PropertyWritable]

getWindowScreen :: (MonadIO m, WindowK o) => o -> m Gdk.Screen
getWindowScreen obj = liftIO $ getObjectPropertyObject obj "screen" Gdk.Screen

setWindowScreen :: (MonadIO m, WindowK o, Gdk.ScreenK a) => o -> a -> m ()
setWindowScreen obj val = liftIO $ setObjectPropertyObject obj "screen" val

constructWindowScreen :: (Gdk.ScreenK a) => a -> IO ([Char], GValue)
constructWindowScreen val = constructObjectPropertyObject "screen" val

data WindowScreenPropertyInfo
instance AttrInfo WindowScreenPropertyInfo where
    type AttrAllowedOps WindowScreenPropertyInfo = '[ 'AttrSet, 'AttrConstruct, 'AttrGet]
    type AttrSetTypeConstraint WindowScreenPropertyInfo = Gdk.ScreenK
    type AttrBaseTypeConstraint WindowScreenPropertyInfo = WindowK
    type AttrGetType WindowScreenPropertyInfo = Gdk.Screen
    type AttrLabel WindowScreenPropertyInfo = "Window::screen"
    attrGet _ = getWindowScreen
    attrSet _ = setWindowScreen
    attrConstruct _ = constructWindowScreen

-- VVV Prop "skip-pager-hint"
   -- Type: TBasicType TBoolean
   -- Flags: [PropertyReadable,PropertyWritable]

getWindowSkipPagerHint :: (MonadIO m, WindowK o) => o -> m Bool
getWindowSkipPagerHint obj = liftIO $ getObjectPropertyBool obj "skip-pager-hint"

setWindowSkipPagerHint :: (MonadIO m, WindowK o) => o -> Bool -> m ()
setWindowSkipPagerHint obj val = liftIO $ setObjectPropertyBool obj "skip-pager-hint" val

constructWindowSkipPagerHint :: Bool -> IO ([Char], GValue)
constructWindowSkipPagerHint val = constructObjectPropertyBool "skip-pager-hint" val

data WindowSkipPagerHintPropertyInfo
instance AttrInfo WindowSkipPagerHintPropertyInfo where
    type AttrAllowedOps WindowSkipPagerHintPropertyInfo = '[ 'AttrSet, 'AttrConstruct, 'AttrGet]
    type AttrSetTypeConstraint WindowSkipPagerHintPropertyInfo = (~) Bool
    type AttrBaseTypeConstraint WindowSkipPagerHintPropertyInfo = WindowK
    type AttrGetType WindowSkipPagerHintPropertyInfo = Bool
    type AttrLabel WindowSkipPagerHintPropertyInfo = "Window::skip-pager-hint"
    attrGet _ = getWindowSkipPagerHint
    attrSet _ = setWindowSkipPagerHint
    attrConstruct _ = constructWindowSkipPagerHint

-- VVV Prop "skip-taskbar-hint"
   -- Type: TBasicType TBoolean
   -- Flags: [PropertyReadable,PropertyWritable]

getWindowSkipTaskbarHint :: (MonadIO m, WindowK o) => o -> m Bool
getWindowSkipTaskbarHint obj = liftIO $ getObjectPropertyBool obj "skip-taskbar-hint"

setWindowSkipTaskbarHint :: (MonadIO m, WindowK o) => o -> Bool -> m ()
setWindowSkipTaskbarHint obj val = liftIO $ setObjectPropertyBool obj "skip-taskbar-hint" val

constructWindowSkipTaskbarHint :: Bool -> IO ([Char], GValue)
constructWindowSkipTaskbarHint val = constructObjectPropertyBool "skip-taskbar-hint" val

data WindowSkipTaskbarHintPropertyInfo
instance AttrInfo WindowSkipTaskbarHintPropertyInfo where
    type AttrAllowedOps WindowSkipTaskbarHintPropertyInfo = '[ 'AttrSet, 'AttrConstruct, 'AttrGet]
    type AttrSetTypeConstraint WindowSkipTaskbarHintPropertyInfo = (~) Bool
    type AttrBaseTypeConstraint WindowSkipTaskbarHintPropertyInfo = WindowK
    type AttrGetType WindowSkipTaskbarHintPropertyInfo = Bool
    type AttrLabel WindowSkipTaskbarHintPropertyInfo = "Window::skip-taskbar-hint"
    attrGet _ = getWindowSkipTaskbarHint
    attrSet _ = setWindowSkipTaskbarHint
    attrConstruct _ = constructWindowSkipTaskbarHint

-- VVV Prop "startup-id"
   -- Type: TBasicType TUTF8
   -- Flags: [PropertyWritable]

setWindowStartupId :: (MonadIO m, WindowK o) => o -> T.Text -> m ()
setWindowStartupId obj val = liftIO $ setObjectPropertyString obj "startup-id" val

constructWindowStartupId :: T.Text -> IO ([Char], GValue)
constructWindowStartupId val = constructObjectPropertyString "startup-id" val

data WindowStartupIdPropertyInfo
instance AttrInfo WindowStartupIdPropertyInfo where
    type AttrAllowedOps WindowStartupIdPropertyInfo = '[ 'AttrSet, 'AttrConstruct]
    type AttrSetTypeConstraint WindowStartupIdPropertyInfo = (~) T.Text
    type AttrBaseTypeConstraint WindowStartupIdPropertyInfo = WindowK
    type AttrGetType WindowStartupIdPropertyInfo = ()
    type AttrLabel WindowStartupIdPropertyInfo = "Window::startup-id"
    attrGet _ = undefined
    attrSet _ = setWindowStartupId
    attrConstruct _ = constructWindowStartupId

-- VVV Prop "title"
   -- Type: TBasicType TUTF8
   -- Flags: [PropertyReadable,PropertyWritable]

getWindowTitle :: (MonadIO m, WindowK o) => o -> m T.Text
getWindowTitle obj = liftIO $ getObjectPropertyString obj "title"

setWindowTitle :: (MonadIO m, WindowK o) => o -> T.Text -> m ()
setWindowTitle obj val = liftIO $ setObjectPropertyString obj "title" val

constructWindowTitle :: T.Text -> IO ([Char], GValue)
constructWindowTitle val = constructObjectPropertyString "title" val

data WindowTitlePropertyInfo
instance AttrInfo WindowTitlePropertyInfo where
    type AttrAllowedOps WindowTitlePropertyInfo = '[ 'AttrSet, 'AttrConstruct, 'AttrGet]
    type AttrSetTypeConstraint WindowTitlePropertyInfo = (~) T.Text
    type AttrBaseTypeConstraint WindowTitlePropertyInfo = WindowK
    type AttrGetType WindowTitlePropertyInfo = T.Text
    type AttrLabel WindowTitlePropertyInfo = "Window::title"
    attrGet _ = getWindowTitle
    attrSet _ = setWindowTitle
    attrConstruct _ = constructWindowTitle

-- VVV Prop "transient-for"
   -- Type: TInterface "Gtk" "Window"
   -- Flags: [PropertyReadable,PropertyWritable,PropertyConstruct]

getWindowTransientFor :: (MonadIO m, WindowK o) => o -> m Window
getWindowTransientFor obj = liftIO $ getObjectPropertyObject obj "transient-for" Window

setWindowTransientFor :: (MonadIO m, WindowK o, WindowK a) => o -> a -> m ()
setWindowTransientFor obj val = liftIO $ setObjectPropertyObject obj "transient-for" val

constructWindowTransientFor :: (WindowK a) => a -> IO ([Char], GValue)
constructWindowTransientFor val = constructObjectPropertyObject "transient-for" val

data WindowTransientForPropertyInfo
instance AttrInfo WindowTransientForPropertyInfo where
    type AttrAllowedOps WindowTransientForPropertyInfo = '[ 'AttrSet, 'AttrConstruct, 'AttrGet]
    type AttrSetTypeConstraint WindowTransientForPropertyInfo = WindowK
    type AttrBaseTypeConstraint WindowTransientForPropertyInfo = WindowK
    type AttrGetType WindowTransientForPropertyInfo = Window
    type AttrLabel WindowTransientForPropertyInfo = "Window::transient-for"
    attrGet _ = getWindowTransientFor
    attrSet _ = setWindowTransientFor
    attrConstruct _ = constructWindowTransientFor

-- VVV Prop "type"
   -- Type: TInterface "Gtk" "WindowType"
   -- Flags: [PropertyReadable,PropertyWritable,PropertyConstructOnly]

getWindowType :: (MonadIO m, WindowK o) => o -> m WindowType
getWindowType obj = liftIO $ getObjectPropertyEnum obj "type"

constructWindowType :: WindowType -> IO ([Char], GValue)
constructWindowType val = constructObjectPropertyEnum "type" val

data WindowTypePropertyInfo
instance AttrInfo WindowTypePropertyInfo where
    type AttrAllowedOps WindowTypePropertyInfo = '[ 'AttrConstruct, 'AttrGet]
    type AttrSetTypeConstraint WindowTypePropertyInfo = (~) WindowType
    type AttrBaseTypeConstraint WindowTypePropertyInfo = WindowK
    type AttrGetType WindowTypePropertyInfo = WindowType
    type AttrLabel WindowTypePropertyInfo = "Window::type"
    attrGet _ = getWindowType
    attrSet _ = undefined
    attrConstruct _ = constructWindowType

-- VVV Prop "type-hint"
   -- Type: TInterface "Gdk" "WindowTypeHint"
   -- Flags: [PropertyReadable,PropertyWritable]

getWindowTypeHint :: (MonadIO m, WindowK o) => o -> m Gdk.WindowTypeHint
getWindowTypeHint obj = liftIO $ getObjectPropertyEnum obj "type-hint"

setWindowTypeHint :: (MonadIO m, WindowK o) => o -> Gdk.WindowTypeHint -> m ()
setWindowTypeHint obj val = liftIO $ setObjectPropertyEnum obj "type-hint" val

constructWindowTypeHint :: Gdk.WindowTypeHint -> IO ([Char], GValue)
constructWindowTypeHint val = constructObjectPropertyEnum "type-hint" val

data WindowTypeHintPropertyInfo
instance AttrInfo WindowTypeHintPropertyInfo where
    type AttrAllowedOps WindowTypeHintPropertyInfo = '[ 'AttrSet, 'AttrConstruct, 'AttrGet]
    type AttrSetTypeConstraint WindowTypeHintPropertyInfo = (~) Gdk.WindowTypeHint
    type AttrBaseTypeConstraint WindowTypeHintPropertyInfo = WindowK
    type AttrGetType WindowTypeHintPropertyInfo = Gdk.WindowTypeHint
    type AttrLabel WindowTypeHintPropertyInfo = "Window::type-hint"
    attrGet _ = getWindowTypeHint
    attrSet _ = setWindowTypeHint
    attrConstruct _ = constructWindowTypeHint

-- VVV Prop "urgency-hint"
   -- Type: TBasicType TBoolean
   -- Flags: [PropertyReadable,PropertyWritable]

getWindowUrgencyHint :: (MonadIO m, WindowK o) => o -> m Bool
getWindowUrgencyHint obj = liftIO $ getObjectPropertyBool obj "urgency-hint"

setWindowUrgencyHint :: (MonadIO m, WindowK o) => o -> Bool -> m ()
setWindowUrgencyHint obj val = liftIO $ setObjectPropertyBool obj "urgency-hint" val

constructWindowUrgencyHint :: Bool -> IO ([Char], GValue)
constructWindowUrgencyHint val = constructObjectPropertyBool "urgency-hint" val

data WindowUrgencyHintPropertyInfo
instance AttrInfo WindowUrgencyHintPropertyInfo where
    type AttrAllowedOps WindowUrgencyHintPropertyInfo = '[ 'AttrSet, 'AttrConstruct, 'AttrGet]
    type AttrSetTypeConstraint WindowUrgencyHintPropertyInfo = (~) Bool
    type AttrBaseTypeConstraint WindowUrgencyHintPropertyInfo = WindowK
    type AttrGetType WindowUrgencyHintPropertyInfo = Bool
    type AttrLabel WindowUrgencyHintPropertyInfo = "Window::urgency-hint"
    attrGet _ = getWindowUrgencyHint
    attrSet _ = setWindowUrgencyHint
    attrConstruct _ = constructWindowUrgencyHint

-- VVV Prop "window-position"
   -- Type: TInterface "Gtk" "WindowPosition"
   -- Flags: [PropertyReadable,PropertyWritable]

getWindowWindowPosition :: (MonadIO m, WindowK o) => o -> m WindowPosition
getWindowWindowPosition obj = liftIO $ getObjectPropertyEnum obj "window-position"

setWindowWindowPosition :: (MonadIO m, WindowK o) => o -> WindowPosition -> m ()
setWindowWindowPosition obj val = liftIO $ setObjectPropertyEnum obj "window-position" val

constructWindowWindowPosition :: WindowPosition -> IO ([Char], GValue)
constructWindowWindowPosition val = constructObjectPropertyEnum "window-position" val

data WindowWindowPositionPropertyInfo
instance AttrInfo WindowWindowPositionPropertyInfo where
    type AttrAllowedOps WindowWindowPositionPropertyInfo = '[ 'AttrSet, 'AttrConstruct, 'AttrGet]
    type AttrSetTypeConstraint WindowWindowPositionPropertyInfo = (~) WindowPosition
    type AttrBaseTypeConstraint WindowWindowPositionPropertyInfo = WindowK
    type AttrGetType WindowWindowPositionPropertyInfo = WindowPosition
    type AttrLabel WindowWindowPositionPropertyInfo = "Window::window-position"
    attrGet _ = getWindowWindowPosition
    attrSet _ = setWindowWindowPosition
    attrConstruct _ = constructWindowWindowPosition

type instance AttributeList Window = WindowAttributeList
type WindowAttributeList = ('[ '("accept-focus", WindowAcceptFocusPropertyInfo), '("app-paintable", WidgetAppPaintablePropertyInfo), '("application", WindowApplicationPropertyInfo), '("attached-to", WindowAttachedToPropertyInfo), '("border-width", ContainerBorderWidthPropertyInfo), '("can-default", WidgetCanDefaultPropertyInfo), '("can-focus", WidgetCanFocusPropertyInfo), '("child", ContainerChildPropertyInfo), '("composite-child", WidgetCompositeChildPropertyInfo), '("decorated", WindowDecoratedPropertyInfo), '("default-height", WindowDefaultHeightPropertyInfo), '("default-width", WindowDefaultWidthPropertyInfo), '("deletable", WindowDeletablePropertyInfo), '("destroy-with-parent", WindowDestroyWithParentPropertyInfo), '("double-buffered", WidgetDoubleBufferedPropertyInfo), '("events", WidgetEventsPropertyInfo), '("expand", WidgetExpandPropertyInfo), '("focus-on-map", WindowFocusOnMapPropertyInfo), '("focus-visible", WindowFocusVisiblePropertyInfo), '("gravity", WindowGravityPropertyInfo), '("halign", WidgetHalignPropertyInfo), '("has-default", WidgetHasDefaultPropertyInfo), '("has-focus", WidgetHasFocusPropertyInfo), '("has-resize-grip", WindowHasResizeGripPropertyInfo), '("has-tooltip", WidgetHasTooltipPropertyInfo), '("has-toplevel-focus", WindowHasToplevelFocusPropertyInfo), '("height-request", WidgetHeightRequestPropertyInfo), '("hexpand", WidgetHexpandPropertyInfo), '("hexpand-set", WidgetHexpandSetPropertyInfo), '("hide-titlebar-when-maximized", WindowHideTitlebarWhenMaximizedPropertyInfo), '("icon", WindowIconPropertyInfo), '("icon-name", WindowIconNamePropertyInfo), '("is-active", WindowIsActivePropertyInfo), '("is-focus", WidgetIsFocusPropertyInfo), '("is-maximized", WindowIsMaximizedPropertyInfo), '("margin", WidgetMarginPropertyInfo), '("margin-bottom", WidgetMarginBottomPropertyInfo), '("margin-end", WidgetMarginEndPropertyInfo), '("margin-left", WidgetMarginLeftPropertyInfo), '("margin-right", WidgetMarginRightPropertyInfo), '("margin-start", WidgetMarginStartPropertyInfo), '("margin-top", WidgetMarginTopPropertyInfo), '("mnemonics-visible", WindowMnemonicsVisiblePropertyInfo), '("modal", WindowModalPropertyInfo), '("name", WidgetNamePropertyInfo), '("no-show-all", WidgetNoShowAllPropertyInfo), '("opacity", WidgetOpacityPropertyInfo), '("parent", WidgetParentPropertyInfo), '("receives-default", WidgetReceivesDefaultPropertyInfo), '("resizable", WindowResizablePropertyInfo), '("resize-grip-visible", WindowResizeGripVisiblePropertyInfo), '("resize-mode", ContainerResizeModePropertyInfo), '("role", WindowRolePropertyInfo), '("scale-factor", WidgetScaleFactorPropertyInfo), '("screen", WindowScreenPropertyInfo), '("sensitive", WidgetSensitivePropertyInfo), '("skip-pager-hint", WindowSkipPagerHintPropertyInfo), '("skip-taskbar-hint", WindowSkipTaskbarHintPropertyInfo), '("startup-id", WindowStartupIdPropertyInfo), '("style", WidgetStylePropertyInfo), '("title", WindowTitlePropertyInfo), '("tooltip-markup", WidgetTooltipMarkupPropertyInfo), '("tooltip-text", WidgetTooltipTextPropertyInfo), '("transient-for", WindowTransientForPropertyInfo), '("type", WindowTypePropertyInfo), '("type-hint", WindowTypeHintPropertyInfo), '("urgency-hint", WindowUrgencyHintPropertyInfo), '("valign", WidgetValignPropertyInfo), '("vexpand", WidgetVexpandPropertyInfo), '("vexpand-set", WidgetVexpandSetPropertyInfo), '("visible", WidgetVisiblePropertyInfo), '("width-request", WidgetWidthRequestPropertyInfo), '("window", WidgetWindowPropertyInfo), '("window-position", WindowWindowPositionPropertyInfo)] :: [(Symbol, *)])

data WindowActivateDefaultSignalInfo
instance SignalInfo WindowActivateDefaultSignalInfo where
    type HaskellCallbackType WindowActivateDefaultSignalInfo = WindowActivateDefaultCallback
    connectSignal _ = connectWindowActivateDefault

data WindowActivateFocusSignalInfo
instance SignalInfo WindowActivateFocusSignalInfo where
    type HaskellCallbackType WindowActivateFocusSignalInfo = WindowActivateFocusCallback
    connectSignal _ = connectWindowActivateFocus

data WindowEnableDebuggingSignalInfo
instance SignalInfo WindowEnableDebuggingSignalInfo where
    type HaskellCallbackType WindowEnableDebuggingSignalInfo = WindowEnableDebuggingCallback
    connectSignal _ = connectWindowEnableDebugging

data WindowKeysChangedSignalInfo
instance SignalInfo WindowKeysChangedSignalInfo where
    type HaskellCallbackType WindowKeysChangedSignalInfo = WindowKeysChangedCallback
    connectSignal _ = connectWindowKeysChanged

data WindowSetFocusSignalInfo
instance SignalInfo WindowSetFocusSignalInfo where
    type HaskellCallbackType WindowSetFocusSignalInfo = WindowSetFocusCallback
    connectSignal _ = connectWindowSetFocus

type instance SignalList Window = WindowSignalList
type WindowSignalList = ('[ '("accel-closures-changed", WidgetAccelClosuresChangedSignalInfo), '("activate-default", WindowActivateDefaultSignalInfo), '("activate-focus", WindowActivateFocusSignalInfo), '("add", ContainerAddSignalInfo), '("button-press-event", WidgetButtonPressEventSignalInfo), '("button-release-event", WidgetButtonReleaseEventSignalInfo), '("can-activate-accel", WidgetCanActivateAccelSignalInfo), '("check-resize", ContainerCheckResizeSignalInfo), '("child-notify", WidgetChildNotifySignalInfo), '("composited-changed", WidgetCompositedChangedSignalInfo), '("configure-event", WidgetConfigureEventSignalInfo), '("damage-event", WidgetDamageEventSignalInfo), '("delete-event", WidgetDeleteEventSignalInfo), '("destroy", WidgetDestroySignalInfo), '("destroy-event", WidgetDestroyEventSignalInfo), '("direction-changed", WidgetDirectionChangedSignalInfo), '("drag-begin", WidgetDragBeginSignalInfo), '("drag-data-delete", WidgetDragDataDeleteSignalInfo), '("drag-data-get", WidgetDragDataGetSignalInfo), '("drag-data-received", WidgetDragDataReceivedSignalInfo), '("drag-drop", WidgetDragDropSignalInfo), '("drag-end", WidgetDragEndSignalInfo), '("drag-failed", WidgetDragFailedSignalInfo), '("drag-leave", WidgetDragLeaveSignalInfo), '("drag-motion", WidgetDragMotionSignalInfo), '("draw", WidgetDrawSignalInfo), '("enable-debugging", WindowEnableDebuggingSignalInfo), '("enter-notify-event", WidgetEnterNotifyEventSignalInfo), '("event", WidgetEventSignalInfo), '("event-after", WidgetEventAfterSignalInfo), '("focus", WidgetFocusSignalInfo), '("focus-in-event", WidgetFocusInEventSignalInfo), '("focus-out-event", WidgetFocusOutEventSignalInfo), '("grab-broken-event", WidgetGrabBrokenEventSignalInfo), '("grab-focus", WidgetGrabFocusSignalInfo), '("grab-notify", WidgetGrabNotifySignalInfo), '("hide", WidgetHideSignalInfo), '("hierarchy-changed", WidgetHierarchyChangedSignalInfo), '("key-press-event", WidgetKeyPressEventSignalInfo), '("key-release-event", WidgetKeyReleaseEventSignalInfo), '("keynav-failed", WidgetKeynavFailedSignalInfo), '("keys-changed", WindowKeysChangedSignalInfo), '("leave-notify-event", WidgetLeaveNotifyEventSignalInfo), '("map", WidgetMapSignalInfo), '("map-event", WidgetMapEventSignalInfo), '("mnemonic-activate", WidgetMnemonicActivateSignalInfo), '("motion-notify-event", WidgetMotionNotifyEventSignalInfo), '("move-focus", WidgetMoveFocusSignalInfo), '("notify", GObject.ObjectNotifySignalInfo), '("parent-set", WidgetParentSetSignalInfo), '("popup-menu", WidgetPopupMenuSignalInfo), '("property-notify-event", WidgetPropertyNotifyEventSignalInfo), '("proximity-in-event", WidgetProximityInEventSignalInfo), '("proximity-out-event", WidgetProximityOutEventSignalInfo), '("query-tooltip", WidgetQueryTooltipSignalInfo), '("realize", WidgetRealizeSignalInfo), '("remove", ContainerRemoveSignalInfo), '("screen-changed", WidgetScreenChangedSignalInfo), '("scroll-event", WidgetScrollEventSignalInfo), '("selection-clear-event", WidgetSelectionClearEventSignalInfo), '("selection-get", WidgetSelectionGetSignalInfo), '("selection-notify-event", WidgetSelectionNotifyEventSignalInfo), '("selection-received", WidgetSelectionReceivedSignalInfo), '("selection-request-event", WidgetSelectionRequestEventSignalInfo), '("set-focus", WindowSetFocusSignalInfo), '("set-focus-child", ContainerSetFocusChildSignalInfo), '("show", WidgetShowSignalInfo), '("show-help", WidgetShowHelpSignalInfo), '("size-allocate", WidgetSizeAllocateSignalInfo), '("state-changed", WidgetStateChangedSignalInfo), '("state-flags-changed", WidgetStateFlagsChangedSignalInfo), '("style-set", WidgetStyleSetSignalInfo), '("style-updated", WidgetStyleUpdatedSignalInfo), '("touch-event", WidgetTouchEventSignalInfo), '("unmap", WidgetUnmapSignalInfo), '("unmap-event", WidgetUnmapEventSignalInfo), '("unrealize", WidgetUnrealizeSignalInfo), '("visibility-notify-event", WidgetVisibilityNotifyEventSignalInfo), '("window-state-event", WidgetWindowStateEventSignalInfo), '("notify::[property]", GObjectNotifySignalInfo)] :: [(Symbol, *)])

-- method Window::new
-- method type : Constructor
-- Args : [Arg {argName = "type", argType = TInterface "Gtk" "WindowType", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "type", argType = TInterface "Gtk" "WindowType", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TInterface "Gtk" "Window"
-- throws : False
-- Skip return : False

foreign import ccall "gtk_window_new" gtk_window_new :: 
    CUInt ->                                -- type : TInterface "Gtk" "WindowType"
    IO (Ptr Window)


windowNew ::
    (MonadIO m) =>
    WindowType ->                           -- type
    m Window
windowNew type_ = liftIO $ do
    let type_' = (fromIntegral . fromEnum) type_
    result <- gtk_window_new type_'
    checkUnexpectedReturnNULL "gtk_window_new" result
    result' <- (newObject Window) result
    return result'

-- method Window::activate_default
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TBoolean
-- throws : False
-- Skip return : False

foreign import ccall "gtk_window_activate_default" gtk_window_activate_default :: 
    Ptr Window ->                           -- _obj : TInterface "Gtk" "Window"
    IO CInt


windowActivateDefault ::
    (MonadIO m, WindowK a) =>
    a ->                                    -- _obj
    m Bool
windowActivateDefault _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    result <- gtk_window_activate_default _obj'
    let result' = (/= 0) result
    touchManagedPtr _obj
    return result'

-- method Window::activate_focus
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TBoolean
-- throws : False
-- Skip return : False

foreign import ccall "gtk_window_activate_focus" gtk_window_activate_focus :: 
    Ptr Window ->                           -- _obj : TInterface "Gtk" "Window"
    IO CInt


windowActivateFocus ::
    (MonadIO m, WindowK a) =>
    a ->                                    -- _obj
    m Bool
windowActivateFocus _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    result <- gtk_window_activate_focus _obj'
    let result' = (/= 0) result
    touchManagedPtr _obj
    return result'

-- method Window::activate_key
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "event", argType = TInterface "Gdk" "EventKey", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "event", argType = TInterface "Gdk" "EventKey", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TBoolean
-- throws : False
-- Skip return : False

foreign import ccall "gtk_window_activate_key" gtk_window_activate_key :: 
    Ptr Window ->                           -- _obj : TInterface "Gtk" "Window"
    Ptr Gdk.EventKey ->                     -- event : TInterface "Gdk" "EventKey"
    IO CInt


windowActivateKey ::
    (MonadIO m, WindowK a) =>
    a ->                                    -- _obj
    Gdk.EventKey ->                         -- event
    m Bool
windowActivateKey _obj event = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    let event' = unsafeManagedPtrGetPtr event
    result <- gtk_window_activate_key _obj' event'
    let result' = (/= 0) result
    touchManagedPtr _obj
    touchManagedPtr event
    return result'

-- method Window::add_accel_group
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "accel_group", argType = TInterface "Gtk" "AccelGroup", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "accel_group", argType = TInterface "Gtk" "AccelGroup", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gtk_window_add_accel_group" gtk_window_add_accel_group :: 
    Ptr Window ->                           -- _obj : TInterface "Gtk" "Window"
    Ptr AccelGroup ->                       -- accel_group : TInterface "Gtk" "AccelGroup"
    IO ()


windowAddAccelGroup ::
    (MonadIO m, WindowK a, AccelGroupK b) =>
    a ->                                    -- _obj
    b ->                                    -- accel_group
    m ()
windowAddAccelGroup _obj accel_group = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    let accel_group' = unsafeManagedPtrCastPtr accel_group
    gtk_window_add_accel_group _obj' accel_group'
    touchManagedPtr _obj
    touchManagedPtr accel_group
    return ()

-- method Window::add_mnemonic
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "keyval", argType = TBasicType TUInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "target", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "keyval", argType = TBasicType TUInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "target", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gtk_window_add_mnemonic" gtk_window_add_mnemonic :: 
    Ptr Window ->                           -- _obj : TInterface "Gtk" "Window"
    Word32 ->                               -- keyval : TBasicType TUInt32
    Ptr Widget ->                           -- target : TInterface "Gtk" "Widget"
    IO ()


windowAddMnemonic ::
    (MonadIO m, WindowK a, WidgetK b) =>
    a ->                                    -- _obj
    Word32 ->                               -- keyval
    b ->                                    -- target
    m ()
windowAddMnemonic _obj keyval target = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    let target' = unsafeManagedPtrCastPtr target
    gtk_window_add_mnemonic _obj' keyval target'
    touchManagedPtr _obj
    touchManagedPtr target
    return ()

-- method Window::begin_move_drag
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "button", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "root_x", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "root_y", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "timestamp", argType = TBasicType TUInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "button", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "root_x", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "root_y", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "timestamp", argType = TBasicType TUInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gtk_window_begin_move_drag" gtk_window_begin_move_drag :: 
    Ptr Window ->                           -- _obj : TInterface "Gtk" "Window"
    Int32 ->                                -- button : TBasicType TInt32
    Int32 ->                                -- root_x : TBasicType TInt32
    Int32 ->                                -- root_y : TBasicType TInt32
    Word32 ->                               -- timestamp : TBasicType TUInt32
    IO ()


windowBeginMoveDrag ::
    (MonadIO m, WindowK a) =>
    a ->                                    -- _obj
    Int32 ->                                -- button
    Int32 ->                                -- root_x
    Int32 ->                                -- root_y
    Word32 ->                               -- timestamp
    m ()
windowBeginMoveDrag _obj button root_x root_y timestamp = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    gtk_window_begin_move_drag _obj' button root_x root_y timestamp
    touchManagedPtr _obj
    return ()

-- method Window::begin_resize_drag
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "edge", argType = TInterface "Gdk" "WindowEdge", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "button", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "root_x", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "root_y", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "timestamp", argType = TBasicType TUInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "edge", argType = TInterface "Gdk" "WindowEdge", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "button", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "root_x", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "root_y", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "timestamp", argType = TBasicType TUInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gtk_window_begin_resize_drag" gtk_window_begin_resize_drag :: 
    Ptr Window ->                           -- _obj : TInterface "Gtk" "Window"
    CUInt ->                                -- edge : TInterface "Gdk" "WindowEdge"
    Int32 ->                                -- button : TBasicType TInt32
    Int32 ->                                -- root_x : TBasicType TInt32
    Int32 ->                                -- root_y : TBasicType TInt32
    Word32 ->                               -- timestamp : TBasicType TUInt32
    IO ()


windowBeginResizeDrag ::
    (MonadIO m, WindowK a) =>
    a ->                                    -- _obj
    Gdk.WindowEdge ->                       -- edge
    Int32 ->                                -- button
    Int32 ->                                -- root_x
    Int32 ->                                -- root_y
    Word32 ->                               -- timestamp
    m ()
windowBeginResizeDrag _obj edge button root_x root_y timestamp = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    let edge' = (fromIntegral . fromEnum) edge
    gtk_window_begin_resize_drag _obj' edge' button root_x root_y timestamp
    touchManagedPtr _obj
    return ()

-- method Window::close
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gtk_window_close" gtk_window_close :: 
    Ptr Window ->                           -- _obj : TInterface "Gtk" "Window"
    IO ()


windowClose ::
    (MonadIO m, WindowK a) =>
    a ->                                    -- _obj
    m ()
windowClose _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    gtk_window_close _obj'
    touchManagedPtr _obj
    return ()

-- method Window::deiconify
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gtk_window_deiconify" gtk_window_deiconify :: 
    Ptr Window ->                           -- _obj : TInterface "Gtk" "Window"
    IO ()


windowDeiconify ::
    (MonadIO m, WindowK a) =>
    a ->                                    -- _obj
    m ()
windowDeiconify _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    gtk_window_deiconify _obj'
    touchManagedPtr _obj
    return ()

-- method Window::fullscreen
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gtk_window_fullscreen" gtk_window_fullscreen :: 
    Ptr Window ->                           -- _obj : TInterface "Gtk" "Window"
    IO ()


windowFullscreen ::
    (MonadIO m, WindowK a) =>
    a ->                                    -- _obj
    m ()
windowFullscreen _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    gtk_window_fullscreen _obj'
    touchManagedPtr _obj
    return ()

-- method Window::get_accept_focus
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TBoolean
-- throws : False
-- Skip return : False

foreign import ccall "gtk_window_get_accept_focus" gtk_window_get_accept_focus :: 
    Ptr Window ->                           -- _obj : TInterface "Gtk" "Window"
    IO CInt


windowGetAcceptFocus ::
    (MonadIO m, WindowK a) =>
    a ->                                    -- _obj
    m Bool
windowGetAcceptFocus _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    result <- gtk_window_get_accept_focus _obj'
    let result' = (/= 0) result
    touchManagedPtr _obj
    return result'

-- method Window::get_application
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TInterface "Gtk" "Application"
-- throws : False
-- Skip return : False

foreign import ccall "gtk_window_get_application" gtk_window_get_application :: 
    Ptr Window ->                           -- _obj : TInterface "Gtk" "Window"
    IO (Ptr Application)


windowGetApplication ::
    (MonadIO m, WindowK a) =>
    a ->                                    -- _obj
    m Application
windowGetApplication _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    result <- gtk_window_get_application _obj'
    checkUnexpectedReturnNULL "gtk_window_get_application" result
    result' <- (newObject Application) result
    touchManagedPtr _obj
    return result'

-- method Window::get_attached_to
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TInterface "Gtk" "Widget"
-- throws : False
-- Skip return : False

foreign import ccall "gtk_window_get_attached_to" gtk_window_get_attached_to :: 
    Ptr Window ->                           -- _obj : TInterface "Gtk" "Window"
    IO (Ptr Widget)


windowGetAttachedTo ::
    (MonadIO m, WindowK a) =>
    a ->                                    -- _obj
    m Widget
windowGetAttachedTo _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    result <- gtk_window_get_attached_to _obj'
    checkUnexpectedReturnNULL "gtk_window_get_attached_to" result
    result' <- (newObject Widget) result
    touchManagedPtr _obj
    return result'

-- method Window::get_decorated
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TBoolean
-- throws : False
-- Skip return : False

foreign import ccall "gtk_window_get_decorated" gtk_window_get_decorated :: 
    Ptr Window ->                           -- _obj : TInterface "Gtk" "Window"
    IO CInt


windowGetDecorated ::
    (MonadIO m, WindowK a) =>
    a ->                                    -- _obj
    m Bool
windowGetDecorated _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    result <- gtk_window_get_decorated _obj'
    let result' = (/= 0) result
    touchManagedPtr _obj
    return result'

-- method Window::get_default_size
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "width", argType = TBasicType TInt32, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferEverything},Arg {argName = "height", argType = TBasicType TInt32, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferEverything}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gtk_window_get_default_size" gtk_window_get_default_size :: 
    Ptr Window ->                           -- _obj : TInterface "Gtk" "Window"
    Ptr Int32 ->                            -- width : TBasicType TInt32
    Ptr Int32 ->                            -- height : TBasicType TInt32
    IO ()


windowGetDefaultSize ::
    (MonadIO m, WindowK a) =>
    a ->                                    -- _obj
    m (Int32,Int32)
windowGetDefaultSize _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    width <- allocMem :: IO (Ptr Int32)
    height <- allocMem :: IO (Ptr Int32)
    gtk_window_get_default_size _obj' width height
    width' <- peek width
    height' <- peek height
    touchManagedPtr _obj
    freeMem width
    freeMem height
    return (width', height')

-- method Window::get_default_widget
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TInterface "Gtk" "Widget"
-- throws : False
-- Skip return : False

foreign import ccall "gtk_window_get_default_widget" gtk_window_get_default_widget :: 
    Ptr Window ->                           -- _obj : TInterface "Gtk" "Window"
    IO (Ptr Widget)


windowGetDefaultWidget ::
    (MonadIO m, WindowK a) =>
    a ->                                    -- _obj
    m Widget
windowGetDefaultWidget _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    result <- gtk_window_get_default_widget _obj'
    checkUnexpectedReturnNULL "gtk_window_get_default_widget" result
    result' <- (newObject Widget) result
    touchManagedPtr _obj
    return result'

-- method Window::get_deletable
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TBoolean
-- throws : False
-- Skip return : False

foreign import ccall "gtk_window_get_deletable" gtk_window_get_deletable :: 
    Ptr Window ->                           -- _obj : TInterface "Gtk" "Window"
    IO CInt


windowGetDeletable ::
    (MonadIO m, WindowK a) =>
    a ->                                    -- _obj
    m Bool
windowGetDeletable _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    result <- gtk_window_get_deletable _obj'
    let result' = (/= 0) result
    touchManagedPtr _obj
    return result'

-- method Window::get_destroy_with_parent
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TBoolean
-- throws : False
-- Skip return : False

foreign import ccall "gtk_window_get_destroy_with_parent" gtk_window_get_destroy_with_parent :: 
    Ptr Window ->                           -- _obj : TInterface "Gtk" "Window"
    IO CInt


windowGetDestroyWithParent ::
    (MonadIO m, WindowK a) =>
    a ->                                    -- _obj
    m Bool
windowGetDestroyWithParent _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    result <- gtk_window_get_destroy_with_parent _obj'
    let result' = (/= 0) result
    touchManagedPtr _obj
    return result'

-- method Window::get_focus
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TInterface "Gtk" "Widget"
-- throws : False
-- Skip return : False

foreign import ccall "gtk_window_get_focus" gtk_window_get_focus :: 
    Ptr Window ->                           -- _obj : TInterface "Gtk" "Window"
    IO (Ptr Widget)


windowGetFocus ::
    (MonadIO m, WindowK a) =>
    a ->                                    -- _obj
    m Widget
windowGetFocus _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    result <- gtk_window_get_focus _obj'
    checkUnexpectedReturnNULL "gtk_window_get_focus" result
    result' <- (newObject Widget) result
    touchManagedPtr _obj
    return result'

-- method Window::get_focus_on_map
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TBoolean
-- throws : False
-- Skip return : False

foreign import ccall "gtk_window_get_focus_on_map" gtk_window_get_focus_on_map :: 
    Ptr Window ->                           -- _obj : TInterface "Gtk" "Window"
    IO CInt


windowGetFocusOnMap ::
    (MonadIO m, WindowK a) =>
    a ->                                    -- _obj
    m Bool
windowGetFocusOnMap _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    result <- gtk_window_get_focus_on_map _obj'
    let result' = (/= 0) result
    touchManagedPtr _obj
    return result'

-- method Window::get_focus_visible
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TBoolean
-- throws : False
-- Skip return : False

foreign import ccall "gtk_window_get_focus_visible" gtk_window_get_focus_visible :: 
    Ptr Window ->                           -- _obj : TInterface "Gtk" "Window"
    IO CInt


windowGetFocusVisible ::
    (MonadIO m, WindowK a) =>
    a ->                                    -- _obj
    m Bool
windowGetFocusVisible _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    result <- gtk_window_get_focus_visible _obj'
    let result' = (/= 0) result
    touchManagedPtr _obj
    return result'

-- method Window::get_gravity
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TInterface "Gdk" "Gravity"
-- throws : False
-- Skip return : False

foreign import ccall "gtk_window_get_gravity" gtk_window_get_gravity :: 
    Ptr Window ->                           -- _obj : TInterface "Gtk" "Window"
    IO CUInt


windowGetGravity ::
    (MonadIO m, WindowK a) =>
    a ->                                    -- _obj
    m Gdk.Gravity
windowGetGravity _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    result <- gtk_window_get_gravity _obj'
    let result' = (toEnum . fromIntegral) result
    touchManagedPtr _obj
    return result'

-- method Window::get_group
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TInterface "Gtk" "WindowGroup"
-- throws : False
-- Skip return : False

foreign import ccall "gtk_window_get_group" gtk_window_get_group :: 
    Ptr Window ->                           -- _obj : TInterface "Gtk" "Window"
    IO (Ptr WindowGroup)


windowGetGroup ::
    (MonadIO m, WindowK a) =>
    a ->                                    -- _obj
    m WindowGroup
windowGetGroup _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    result <- gtk_window_get_group _obj'
    checkUnexpectedReturnNULL "gtk_window_get_group" result
    result' <- (newObject WindowGroup) result
    touchManagedPtr _obj
    return result'

-- method Window::get_has_resize_grip
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TBoolean
-- throws : False
-- Skip return : False

foreign import ccall "gtk_window_get_has_resize_grip" gtk_window_get_has_resize_grip :: 
    Ptr Window ->                           -- _obj : TInterface "Gtk" "Window"
    IO CInt

{-# DEPRECATED windowGetHasResizeGrip ["(Since version 3.14)","Resize grips have been removed."]#-}
windowGetHasResizeGrip ::
    (MonadIO m, WindowK a) =>
    a ->                                    -- _obj
    m Bool
windowGetHasResizeGrip _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    result <- gtk_window_get_has_resize_grip _obj'
    let result' = (/= 0) result
    touchManagedPtr _obj
    return result'

-- method Window::get_hide_titlebar_when_maximized
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TBoolean
-- throws : False
-- Skip return : False

foreign import ccall "gtk_window_get_hide_titlebar_when_maximized" gtk_window_get_hide_titlebar_when_maximized :: 
    Ptr Window ->                           -- _obj : TInterface "Gtk" "Window"
    IO CInt


windowGetHideTitlebarWhenMaximized ::
    (MonadIO m, WindowK a) =>
    a ->                                    -- _obj
    m Bool
windowGetHideTitlebarWhenMaximized _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    result <- gtk_window_get_hide_titlebar_when_maximized _obj'
    let result' = (/= 0) result
    touchManagedPtr _obj
    return result'

-- method Window::get_icon
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TInterface "GdkPixbuf" "Pixbuf"
-- throws : False
-- Skip return : False

foreign import ccall "gtk_window_get_icon" gtk_window_get_icon :: 
    Ptr Window ->                           -- _obj : TInterface "Gtk" "Window"
    IO (Ptr GdkPixbuf.Pixbuf)


windowGetIcon ::
    (MonadIO m, WindowK a) =>
    a ->                                    -- _obj
    m GdkPixbuf.Pixbuf
windowGetIcon _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    result <- gtk_window_get_icon _obj'
    checkUnexpectedReturnNULL "gtk_window_get_icon" result
    result' <- (newObject GdkPixbuf.Pixbuf) result
    touchManagedPtr _obj
    return result'

-- method Window::get_icon_list
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TGList (TInterface "GdkPixbuf" "Pixbuf")
-- throws : False
-- Skip return : False

foreign import ccall "gtk_window_get_icon_list" gtk_window_get_icon_list :: 
    Ptr Window ->                           -- _obj : TInterface "Gtk" "Window"
    IO (Ptr (GList (Ptr GdkPixbuf.Pixbuf)))


windowGetIconList ::
    (MonadIO m, WindowK a) =>
    a ->                                    -- _obj
    m [GdkPixbuf.Pixbuf]
windowGetIconList _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    result <- gtk_window_get_icon_list _obj'
    checkUnexpectedReturnNULL "gtk_window_get_icon_list" result
    result' <- unpackGList result
    result'' <- mapM (newObject GdkPixbuf.Pixbuf) result'
    g_list_free result
    touchManagedPtr _obj
    return result''

-- method Window::get_icon_name
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TUTF8
-- throws : False
-- Skip return : False

foreign import ccall "gtk_window_get_icon_name" gtk_window_get_icon_name :: 
    Ptr Window ->                           -- _obj : TInterface "Gtk" "Window"
    IO CString


windowGetIconName ::
    (MonadIO m, WindowK a) =>
    a ->                                    -- _obj
    m T.Text
windowGetIconName _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    result <- gtk_window_get_icon_name _obj'
    checkUnexpectedReturnNULL "gtk_window_get_icon_name" result
    result' <- cstringToText result
    touchManagedPtr _obj
    return result'

-- method Window::get_mnemonic_modifier
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TInterface "Gdk" "ModifierType"
-- throws : False
-- Skip return : False

foreign import ccall "gtk_window_get_mnemonic_modifier" gtk_window_get_mnemonic_modifier :: 
    Ptr Window ->                           -- _obj : TInterface "Gtk" "Window"
    IO CUInt


windowGetMnemonicModifier ::
    (MonadIO m, WindowK a) =>
    a ->                                    -- _obj
    m [Gdk.ModifierType]
windowGetMnemonicModifier _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    result <- gtk_window_get_mnemonic_modifier _obj'
    let result' = wordToGFlags result
    touchManagedPtr _obj
    return result'

-- method Window::get_mnemonics_visible
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TBoolean
-- throws : False
-- Skip return : False

foreign import ccall "gtk_window_get_mnemonics_visible" gtk_window_get_mnemonics_visible :: 
    Ptr Window ->                           -- _obj : TInterface "Gtk" "Window"
    IO CInt


windowGetMnemonicsVisible ::
    (MonadIO m, WindowK a) =>
    a ->                                    -- _obj
    m Bool
windowGetMnemonicsVisible _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    result <- gtk_window_get_mnemonics_visible _obj'
    let result' = (/= 0) result
    touchManagedPtr _obj
    return result'

-- method Window::get_modal
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TBoolean
-- throws : False
-- Skip return : False

foreign import ccall "gtk_window_get_modal" gtk_window_get_modal :: 
    Ptr Window ->                           -- _obj : TInterface "Gtk" "Window"
    IO CInt


windowGetModal ::
    (MonadIO m, WindowK a) =>
    a ->                                    -- _obj
    m Bool
windowGetModal _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    result <- gtk_window_get_modal _obj'
    let result' = (/= 0) result
    touchManagedPtr _obj
    return result'

-- method Window::get_opacity
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TDouble
-- throws : False
-- Skip return : False

foreign import ccall "gtk_window_get_opacity" gtk_window_get_opacity :: 
    Ptr Window ->                           -- _obj : TInterface "Gtk" "Window"
    IO CDouble

{-# DEPRECATED windowGetOpacity ["(Since version 3.8)","Use gtk_widget_get_opacity instead."]#-}
windowGetOpacity ::
    (MonadIO m, WindowK a) =>
    a ->                                    -- _obj
    m Double
windowGetOpacity _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    result <- gtk_window_get_opacity _obj'
    let result' = realToFrac result
    touchManagedPtr _obj
    return result'

-- method Window::get_position
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "root_x", argType = TBasicType TInt32, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferEverything},Arg {argName = "root_y", argType = TBasicType TInt32, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferEverything}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gtk_window_get_position" gtk_window_get_position :: 
    Ptr Window ->                           -- _obj : TInterface "Gtk" "Window"
    Ptr Int32 ->                            -- root_x : TBasicType TInt32
    Ptr Int32 ->                            -- root_y : TBasicType TInt32
    IO ()


windowGetPosition ::
    (MonadIO m, WindowK a) =>
    a ->                                    -- _obj
    m (Int32,Int32)
windowGetPosition _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    root_x <- allocMem :: IO (Ptr Int32)
    root_y <- allocMem :: IO (Ptr Int32)
    gtk_window_get_position _obj' root_x root_y
    root_x' <- peek root_x
    root_y' <- peek root_y
    touchManagedPtr _obj
    freeMem root_x
    freeMem root_y
    return (root_x', root_y')

-- method Window::get_resizable
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TBoolean
-- throws : False
-- Skip return : False

foreign import ccall "gtk_window_get_resizable" gtk_window_get_resizable :: 
    Ptr Window ->                           -- _obj : TInterface "Gtk" "Window"
    IO CInt


windowGetResizable ::
    (MonadIO m, WindowK a) =>
    a ->                                    -- _obj
    m Bool
windowGetResizable _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    result <- gtk_window_get_resizable _obj'
    let result' = (/= 0) result
    touchManagedPtr _obj
    return result'

-- method Window::get_resize_grip_area
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "rect", argType = TInterface "cairo" "RectangleInt", direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TBoolean
-- throws : False
-- Skip return : False

foreign import ccall "gtk_window_get_resize_grip_area" gtk_window_get_resize_grip_area :: 
    Ptr Window ->                           -- _obj : TInterface "Gtk" "Window"
    Ptr Cairo.RectangleInt ->               -- rect : TInterface "cairo" "RectangleInt"
    IO CInt

{-# DEPRECATED windowGetResizeGripArea ["(Since version 3.14)","Resize grips have been removed."]#-}
windowGetResizeGripArea ::
    (MonadIO m, WindowK a) =>
    a ->                                    -- _obj
    m (Bool,Cairo.RectangleInt)
windowGetResizeGripArea _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    rect <- callocBoxedBytes 16 :: IO (Ptr Cairo.RectangleInt)
    result <- gtk_window_get_resize_grip_area _obj' rect
    let result' = (/= 0) result
    rect' <- (wrapBoxed Cairo.RectangleInt) rect
    touchManagedPtr _obj
    return (result', rect')

-- method Window::get_role
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TUTF8
-- throws : False
-- Skip return : False

foreign import ccall "gtk_window_get_role" gtk_window_get_role :: 
    Ptr Window ->                           -- _obj : TInterface "Gtk" "Window"
    IO CString


windowGetRole ::
    (MonadIO m, WindowK a) =>
    a ->                                    -- _obj
    m T.Text
windowGetRole _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    result <- gtk_window_get_role _obj'
    checkUnexpectedReturnNULL "gtk_window_get_role" result
    result' <- cstringToText result
    touchManagedPtr _obj
    return result'

-- method Window::get_screen
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TInterface "Gdk" "Screen"
-- throws : False
-- Skip return : False

foreign import ccall "gtk_window_get_screen" gtk_window_get_screen :: 
    Ptr Window ->                           -- _obj : TInterface "Gtk" "Window"
    IO (Ptr Gdk.Screen)


windowGetScreen ::
    (MonadIO m, WindowK a) =>
    a ->                                    -- _obj
    m Gdk.Screen
windowGetScreen _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    result <- gtk_window_get_screen _obj'
    checkUnexpectedReturnNULL "gtk_window_get_screen" result
    result' <- (newObject Gdk.Screen) result
    touchManagedPtr _obj
    return result'

-- method Window::get_size
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "width", argType = TBasicType TInt32, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferEverything},Arg {argName = "height", argType = TBasicType TInt32, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferEverything}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gtk_window_get_size" gtk_window_get_size :: 
    Ptr Window ->                           -- _obj : TInterface "Gtk" "Window"
    Ptr Int32 ->                            -- width : TBasicType TInt32
    Ptr Int32 ->                            -- height : TBasicType TInt32
    IO ()


windowGetSize ::
    (MonadIO m, WindowK a) =>
    a ->                                    -- _obj
    m (Int32,Int32)
windowGetSize _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    width <- allocMem :: IO (Ptr Int32)
    height <- allocMem :: IO (Ptr Int32)
    gtk_window_get_size _obj' width height
    width' <- peek width
    height' <- peek height
    touchManagedPtr _obj
    freeMem width
    freeMem height
    return (width', height')

-- method Window::get_skip_pager_hint
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TBoolean
-- throws : False
-- Skip return : False

foreign import ccall "gtk_window_get_skip_pager_hint" gtk_window_get_skip_pager_hint :: 
    Ptr Window ->                           -- _obj : TInterface "Gtk" "Window"
    IO CInt


windowGetSkipPagerHint ::
    (MonadIO m, WindowK a) =>
    a ->                                    -- _obj
    m Bool
windowGetSkipPagerHint _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    result <- gtk_window_get_skip_pager_hint _obj'
    let result' = (/= 0) result
    touchManagedPtr _obj
    return result'

-- method Window::get_skip_taskbar_hint
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TBoolean
-- throws : False
-- Skip return : False

foreign import ccall "gtk_window_get_skip_taskbar_hint" gtk_window_get_skip_taskbar_hint :: 
    Ptr Window ->                           -- _obj : TInterface "Gtk" "Window"
    IO CInt


windowGetSkipTaskbarHint ::
    (MonadIO m, WindowK a) =>
    a ->                                    -- _obj
    m Bool
windowGetSkipTaskbarHint _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    result <- gtk_window_get_skip_taskbar_hint _obj'
    let result' = (/= 0) result
    touchManagedPtr _obj
    return result'

-- method Window::get_title
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TUTF8
-- throws : False
-- Skip return : False

foreign import ccall "gtk_window_get_title" gtk_window_get_title :: 
    Ptr Window ->                           -- _obj : TInterface "Gtk" "Window"
    IO CString


windowGetTitle ::
    (MonadIO m, WindowK a) =>
    a ->                                    -- _obj
    m T.Text
windowGetTitle _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    result <- gtk_window_get_title _obj'
    checkUnexpectedReturnNULL "gtk_window_get_title" result
    result' <- cstringToText result
    touchManagedPtr _obj
    return result'

-- method Window::get_titlebar
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TInterface "Gtk" "Widget"
-- throws : False
-- Skip return : False

foreign import ccall "gtk_window_get_titlebar" gtk_window_get_titlebar :: 
    Ptr Window ->                           -- _obj : TInterface "Gtk" "Window"
    IO (Ptr Widget)


windowGetTitlebar ::
    (MonadIO m, WindowK a) =>
    a ->                                    -- _obj
    m Widget
windowGetTitlebar _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    result <- gtk_window_get_titlebar _obj'
    checkUnexpectedReturnNULL "gtk_window_get_titlebar" result
    result' <- (newObject Widget) result
    touchManagedPtr _obj
    return result'

-- method Window::get_transient_for
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TInterface "Gtk" "Window"
-- throws : False
-- Skip return : False

foreign import ccall "gtk_window_get_transient_for" gtk_window_get_transient_for :: 
    Ptr Window ->                           -- _obj : TInterface "Gtk" "Window"
    IO (Ptr Window)


windowGetTransientFor ::
    (MonadIO m, WindowK a) =>
    a ->                                    -- _obj
    m Window
windowGetTransientFor _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    result <- gtk_window_get_transient_for _obj'
    checkUnexpectedReturnNULL "gtk_window_get_transient_for" result
    result' <- (newObject Window) result
    touchManagedPtr _obj
    return result'

-- method Window::get_type_hint
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TInterface "Gdk" "WindowTypeHint"
-- throws : False
-- Skip return : False

foreign import ccall "gtk_window_get_type_hint" gtk_window_get_type_hint :: 
    Ptr Window ->                           -- _obj : TInterface "Gtk" "Window"
    IO CUInt


windowGetTypeHint ::
    (MonadIO m, WindowK a) =>
    a ->                                    -- _obj
    m Gdk.WindowTypeHint
windowGetTypeHint _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    result <- gtk_window_get_type_hint _obj'
    let result' = (toEnum . fromIntegral) result
    touchManagedPtr _obj
    return result'

-- method Window::get_urgency_hint
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TBoolean
-- throws : False
-- Skip return : False

foreign import ccall "gtk_window_get_urgency_hint" gtk_window_get_urgency_hint :: 
    Ptr Window ->                           -- _obj : TInterface "Gtk" "Window"
    IO CInt


windowGetUrgencyHint ::
    (MonadIO m, WindowK a) =>
    a ->                                    -- _obj
    m Bool
windowGetUrgencyHint _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    result <- gtk_window_get_urgency_hint _obj'
    let result' = (/= 0) result
    touchManagedPtr _obj
    return result'

-- method Window::get_window_type
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TInterface "Gtk" "WindowType"
-- throws : False
-- Skip return : False

foreign import ccall "gtk_window_get_window_type" gtk_window_get_window_type :: 
    Ptr Window ->                           -- _obj : TInterface "Gtk" "Window"
    IO CUInt


windowGetWindowType ::
    (MonadIO m, WindowK a) =>
    a ->                                    -- _obj
    m WindowType
windowGetWindowType _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    result <- gtk_window_get_window_type _obj'
    let result' = (toEnum . fromIntegral) result
    touchManagedPtr _obj
    return result'

-- method Window::has_group
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TBoolean
-- throws : False
-- Skip return : False

foreign import ccall "gtk_window_has_group" gtk_window_has_group :: 
    Ptr Window ->                           -- _obj : TInterface "Gtk" "Window"
    IO CInt


windowHasGroup ::
    (MonadIO m, WindowK a) =>
    a ->                                    -- _obj
    m Bool
windowHasGroup _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    result <- gtk_window_has_group _obj'
    let result' = (/= 0) result
    touchManagedPtr _obj
    return result'

-- method Window::has_toplevel_focus
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TBoolean
-- throws : False
-- Skip return : False

foreign import ccall "gtk_window_has_toplevel_focus" gtk_window_has_toplevel_focus :: 
    Ptr Window ->                           -- _obj : TInterface "Gtk" "Window"
    IO CInt


windowHasToplevelFocus ::
    (MonadIO m, WindowK a) =>
    a ->                                    -- _obj
    m Bool
windowHasToplevelFocus _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    result <- gtk_window_has_toplevel_focus _obj'
    let result' = (/= 0) result
    touchManagedPtr _obj
    return result'

-- method Window::iconify
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gtk_window_iconify" gtk_window_iconify :: 
    Ptr Window ->                           -- _obj : TInterface "Gtk" "Window"
    IO ()


windowIconify ::
    (MonadIO m, WindowK a) =>
    a ->                                    -- _obj
    m ()
windowIconify _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    gtk_window_iconify _obj'
    touchManagedPtr _obj
    return ()

-- method Window::is_active
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TBoolean
-- throws : False
-- Skip return : False

foreign import ccall "gtk_window_is_active" gtk_window_is_active :: 
    Ptr Window ->                           -- _obj : TInterface "Gtk" "Window"
    IO CInt


windowIsActive ::
    (MonadIO m, WindowK a) =>
    a ->                                    -- _obj
    m Bool
windowIsActive _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    result <- gtk_window_is_active _obj'
    let result' = (/= 0) result
    touchManagedPtr _obj
    return result'

-- method Window::is_maximized
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TBoolean
-- throws : False
-- Skip return : False

foreign import ccall "gtk_window_is_maximized" gtk_window_is_maximized :: 
    Ptr Window ->                           -- _obj : TInterface "Gtk" "Window"
    IO CInt


windowIsMaximized ::
    (MonadIO m, WindowK a) =>
    a ->                                    -- _obj
    m Bool
windowIsMaximized _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    result <- gtk_window_is_maximized _obj'
    let result' = (/= 0) result
    touchManagedPtr _obj
    return result'

-- method Window::maximize
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gtk_window_maximize" gtk_window_maximize :: 
    Ptr Window ->                           -- _obj : TInterface "Gtk" "Window"
    IO ()


windowMaximize ::
    (MonadIO m, WindowK a) =>
    a ->                                    -- _obj
    m ()
windowMaximize _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    gtk_window_maximize _obj'
    touchManagedPtr _obj
    return ()

-- method Window::mnemonic_activate
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "keyval", argType = TBasicType TUInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "modifier", argType = TInterface "Gdk" "ModifierType", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "keyval", argType = TBasicType TUInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "modifier", argType = TInterface "Gdk" "ModifierType", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TBoolean
-- throws : False
-- Skip return : False

foreign import ccall "gtk_window_mnemonic_activate" gtk_window_mnemonic_activate :: 
    Ptr Window ->                           -- _obj : TInterface "Gtk" "Window"
    Word32 ->                               -- keyval : TBasicType TUInt32
    CUInt ->                                -- modifier : TInterface "Gdk" "ModifierType"
    IO CInt


windowMnemonicActivate ::
    (MonadIO m, WindowK a) =>
    a ->                                    -- _obj
    Word32 ->                               -- keyval
    [Gdk.ModifierType] ->                   -- modifier
    m Bool
windowMnemonicActivate _obj keyval modifier = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    let modifier' = gflagsToWord modifier
    result <- gtk_window_mnemonic_activate _obj' keyval modifier'
    let result' = (/= 0) result
    touchManagedPtr _obj
    return result'

-- method Window::move
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "x", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "y", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "x", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "y", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gtk_window_move" gtk_window_move :: 
    Ptr Window ->                           -- _obj : TInterface "Gtk" "Window"
    Int32 ->                                -- x : TBasicType TInt32
    Int32 ->                                -- y : TBasicType TInt32
    IO ()


windowMove ::
    (MonadIO m, WindowK a) =>
    a ->                                    -- _obj
    Int32 ->                                -- x
    Int32 ->                                -- y
    m ()
windowMove _obj x y = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    gtk_window_move _obj' x y
    touchManagedPtr _obj
    return ()

-- method Window::parse_geometry
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "geometry", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "geometry", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TBoolean
-- throws : False
-- Skip return : False

foreign import ccall "gtk_window_parse_geometry" gtk_window_parse_geometry :: 
    Ptr Window ->                           -- _obj : TInterface "Gtk" "Window"
    CString ->                              -- geometry : TBasicType TUTF8
    IO CInt


windowParseGeometry ::
    (MonadIO m, WindowK a) =>
    a ->                                    -- _obj
    T.Text ->                               -- geometry
    m Bool
windowParseGeometry _obj geometry = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    geometry' <- textToCString geometry
    result <- gtk_window_parse_geometry _obj' geometry'
    let result' = (/= 0) result
    touchManagedPtr _obj
    freeMem geometry'
    return result'

-- method Window::present
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gtk_window_present" gtk_window_present :: 
    Ptr Window ->                           -- _obj : TInterface "Gtk" "Window"
    IO ()


windowPresent ::
    (MonadIO m, WindowK a) =>
    a ->                                    -- _obj
    m ()
windowPresent _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    gtk_window_present _obj'
    touchManagedPtr _obj
    return ()

-- method Window::present_with_time
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "timestamp", argType = TBasicType TUInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "timestamp", argType = TBasicType TUInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gtk_window_present_with_time" gtk_window_present_with_time :: 
    Ptr Window ->                           -- _obj : TInterface "Gtk" "Window"
    Word32 ->                               -- timestamp : TBasicType TUInt32
    IO ()


windowPresentWithTime ::
    (MonadIO m, WindowK a) =>
    a ->                                    -- _obj
    Word32 ->                               -- timestamp
    m ()
windowPresentWithTime _obj timestamp = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    gtk_window_present_with_time _obj' timestamp
    touchManagedPtr _obj
    return ()

-- method Window::propagate_key_event
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "event", argType = TInterface "Gdk" "EventKey", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "event", argType = TInterface "Gdk" "EventKey", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TBoolean
-- throws : False
-- Skip return : False

foreign import ccall "gtk_window_propagate_key_event" gtk_window_propagate_key_event :: 
    Ptr Window ->                           -- _obj : TInterface "Gtk" "Window"
    Ptr Gdk.EventKey ->                     -- event : TInterface "Gdk" "EventKey"
    IO CInt


windowPropagateKeyEvent ::
    (MonadIO m, WindowK a) =>
    a ->                                    -- _obj
    Gdk.EventKey ->                         -- event
    m Bool
windowPropagateKeyEvent _obj event = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    let event' = unsafeManagedPtrGetPtr event
    result <- gtk_window_propagate_key_event _obj' event'
    let result' = (/= 0) result
    touchManagedPtr _obj
    touchManagedPtr event
    return result'

-- method Window::remove_accel_group
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "accel_group", argType = TInterface "Gtk" "AccelGroup", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "accel_group", argType = TInterface "Gtk" "AccelGroup", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gtk_window_remove_accel_group" gtk_window_remove_accel_group :: 
    Ptr Window ->                           -- _obj : TInterface "Gtk" "Window"
    Ptr AccelGroup ->                       -- accel_group : TInterface "Gtk" "AccelGroup"
    IO ()


windowRemoveAccelGroup ::
    (MonadIO m, WindowK a, AccelGroupK b) =>
    a ->                                    -- _obj
    b ->                                    -- accel_group
    m ()
windowRemoveAccelGroup _obj accel_group = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    let accel_group' = unsafeManagedPtrCastPtr accel_group
    gtk_window_remove_accel_group _obj' accel_group'
    touchManagedPtr _obj
    touchManagedPtr accel_group
    return ()

-- method Window::remove_mnemonic
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "keyval", argType = TBasicType TUInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "target", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "keyval", argType = TBasicType TUInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "target", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gtk_window_remove_mnemonic" gtk_window_remove_mnemonic :: 
    Ptr Window ->                           -- _obj : TInterface "Gtk" "Window"
    Word32 ->                               -- keyval : TBasicType TUInt32
    Ptr Widget ->                           -- target : TInterface "Gtk" "Widget"
    IO ()


windowRemoveMnemonic ::
    (MonadIO m, WindowK a, WidgetK b) =>
    a ->                                    -- _obj
    Word32 ->                               -- keyval
    b ->                                    -- target
    m ()
windowRemoveMnemonic _obj keyval target = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    let target' = unsafeManagedPtrCastPtr target
    gtk_window_remove_mnemonic _obj' keyval target'
    touchManagedPtr _obj
    touchManagedPtr target
    return ()

-- method Window::reshow_with_initial_size
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gtk_window_reshow_with_initial_size" gtk_window_reshow_with_initial_size :: 
    Ptr Window ->                           -- _obj : TInterface "Gtk" "Window"
    IO ()

{-# DEPRECATED windowReshowWithInitialSize ["(Since version 3.10)","GUI builders can call gtk_widget_hide(),","  gtk_widget_unrealize() and then gtk_widget_show() on @window","  themselves, if they still need this functionality."]#-}
windowReshowWithInitialSize ::
    (MonadIO m, WindowK a) =>
    a ->                                    -- _obj
    m ()
windowReshowWithInitialSize _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    gtk_window_reshow_with_initial_size _obj'
    touchManagedPtr _obj
    return ()

-- method Window::resize
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "width", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "height", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "width", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "height", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gtk_window_resize" gtk_window_resize :: 
    Ptr Window ->                           -- _obj : TInterface "Gtk" "Window"
    Int32 ->                                -- width : TBasicType TInt32
    Int32 ->                                -- height : TBasicType TInt32
    IO ()


windowResize ::
    (MonadIO m, WindowK a) =>
    a ->                                    -- _obj
    Int32 ->                                -- width
    Int32 ->                                -- height
    m ()
windowResize _obj width height = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    gtk_window_resize _obj' width height
    touchManagedPtr _obj
    return ()

-- method Window::resize_grip_is_visible
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TBoolean
-- throws : False
-- Skip return : False

foreign import ccall "gtk_window_resize_grip_is_visible" gtk_window_resize_grip_is_visible :: 
    Ptr Window ->                           -- _obj : TInterface "Gtk" "Window"
    IO CInt

{-# DEPRECATED windowResizeGripIsVisible ["(Since version 3.14)","Resize grips have been removed."]#-}
windowResizeGripIsVisible ::
    (MonadIO m, WindowK a) =>
    a ->                                    -- _obj
    m Bool
windowResizeGripIsVisible _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    result <- gtk_window_resize_grip_is_visible _obj'
    let result' = (/= 0) result
    touchManagedPtr _obj
    return result'

-- method Window::resize_to_geometry
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "width", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "height", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "width", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "height", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gtk_window_resize_to_geometry" gtk_window_resize_to_geometry :: 
    Ptr Window ->                           -- _obj : TInterface "Gtk" "Window"
    Int32 ->                                -- width : TBasicType TInt32
    Int32 ->                                -- height : TBasicType TInt32
    IO ()


windowResizeToGeometry ::
    (MonadIO m, WindowK a) =>
    a ->                                    -- _obj
    Int32 ->                                -- width
    Int32 ->                                -- height
    m ()
windowResizeToGeometry _obj width height = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    gtk_window_resize_to_geometry _obj' width height
    touchManagedPtr _obj
    return ()

-- method Window::set_accept_focus
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "setting", argType = TBasicType TBoolean, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "setting", argType = TBasicType TBoolean, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gtk_window_set_accept_focus" gtk_window_set_accept_focus :: 
    Ptr Window ->                           -- _obj : TInterface "Gtk" "Window"
    CInt ->                                 -- setting : TBasicType TBoolean
    IO ()


windowSetAcceptFocus ::
    (MonadIO m, WindowK a) =>
    a ->                                    -- _obj
    Bool ->                                 -- setting
    m ()
windowSetAcceptFocus _obj setting = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    let setting' = (fromIntegral . fromEnum) setting
    gtk_window_set_accept_focus _obj' setting'
    touchManagedPtr _obj
    return ()

-- method Window::set_application
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "application", argType = TInterface "Gtk" "Application", direction = DirectionIn, mayBeNull = True, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "application", argType = TInterface "Gtk" "Application", direction = DirectionIn, mayBeNull = True, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gtk_window_set_application" gtk_window_set_application :: 
    Ptr Window ->                           -- _obj : TInterface "Gtk" "Window"
    Ptr Application ->                      -- application : TInterface "Gtk" "Application"
    IO ()


windowSetApplication ::
    (MonadIO m, WindowK a, ApplicationK b) =>
    a ->                                    -- _obj
    Maybe (b) ->                            -- application
    m ()
windowSetApplication _obj application = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    maybeApplication <- case application of
        Nothing -> return nullPtr
        Just jApplication -> do
            let jApplication' = unsafeManagedPtrCastPtr jApplication
            return jApplication'
    gtk_window_set_application _obj' maybeApplication
    touchManagedPtr _obj
    whenJust application touchManagedPtr
    return ()

-- method Window::set_attached_to
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "attach_widget", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = True, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "attach_widget", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = True, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gtk_window_set_attached_to" gtk_window_set_attached_to :: 
    Ptr Window ->                           -- _obj : TInterface "Gtk" "Window"
    Ptr Widget ->                           -- attach_widget : TInterface "Gtk" "Widget"
    IO ()


windowSetAttachedTo ::
    (MonadIO m, WindowK a, WidgetK b) =>
    a ->                                    -- _obj
    Maybe (b) ->                            -- attach_widget
    m ()
windowSetAttachedTo _obj attach_widget = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    maybeAttach_widget <- case attach_widget of
        Nothing -> return nullPtr
        Just jAttach_widget -> do
            let jAttach_widget' = unsafeManagedPtrCastPtr jAttach_widget
            return jAttach_widget'
    gtk_window_set_attached_to _obj' maybeAttach_widget
    touchManagedPtr _obj
    whenJust attach_widget touchManagedPtr
    return ()

-- method Window::set_decorated
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "setting", argType = TBasicType TBoolean, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "setting", argType = TBasicType TBoolean, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gtk_window_set_decorated" gtk_window_set_decorated :: 
    Ptr Window ->                           -- _obj : TInterface "Gtk" "Window"
    CInt ->                                 -- setting : TBasicType TBoolean
    IO ()


windowSetDecorated ::
    (MonadIO m, WindowK a) =>
    a ->                                    -- _obj
    Bool ->                                 -- setting
    m ()
windowSetDecorated _obj setting = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    let setting' = (fromIntegral . fromEnum) setting
    gtk_window_set_decorated _obj' setting'
    touchManagedPtr _obj
    return ()

-- method Window::set_default
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "default_widget", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = True, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "default_widget", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = True, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gtk_window_set_default" gtk_window_set_default :: 
    Ptr Window ->                           -- _obj : TInterface "Gtk" "Window"
    Ptr Widget ->                           -- default_widget : TInterface "Gtk" "Widget"
    IO ()


windowSetDefault ::
    (MonadIO m, WindowK a, WidgetK b) =>
    a ->                                    -- _obj
    Maybe (b) ->                            -- default_widget
    m ()
windowSetDefault _obj default_widget = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    maybeDefault_widget <- case default_widget of
        Nothing -> return nullPtr
        Just jDefault_widget -> do
            let jDefault_widget' = unsafeManagedPtrCastPtr jDefault_widget
            return jDefault_widget'
    gtk_window_set_default _obj' maybeDefault_widget
    touchManagedPtr _obj
    whenJust default_widget touchManagedPtr
    return ()

-- method Window::set_default_geometry
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "width", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "height", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "width", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "height", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gtk_window_set_default_geometry" gtk_window_set_default_geometry :: 
    Ptr Window ->                           -- _obj : TInterface "Gtk" "Window"
    Int32 ->                                -- width : TBasicType TInt32
    Int32 ->                                -- height : TBasicType TInt32
    IO ()


windowSetDefaultGeometry ::
    (MonadIO m, WindowK a) =>
    a ->                                    -- _obj
    Int32 ->                                -- width
    Int32 ->                                -- height
    m ()
windowSetDefaultGeometry _obj width height = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    gtk_window_set_default_geometry _obj' width height
    touchManagedPtr _obj
    return ()

-- method Window::set_default_size
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "width", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "height", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "width", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "height", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gtk_window_set_default_size" gtk_window_set_default_size :: 
    Ptr Window ->                           -- _obj : TInterface "Gtk" "Window"
    Int32 ->                                -- width : TBasicType TInt32
    Int32 ->                                -- height : TBasicType TInt32
    IO ()


windowSetDefaultSize ::
    (MonadIO m, WindowK a) =>
    a ->                                    -- _obj
    Int32 ->                                -- width
    Int32 ->                                -- height
    m ()
windowSetDefaultSize _obj width height = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    gtk_window_set_default_size _obj' width height
    touchManagedPtr _obj
    return ()

-- method Window::set_deletable
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "setting", argType = TBasicType TBoolean, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "setting", argType = TBasicType TBoolean, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gtk_window_set_deletable" gtk_window_set_deletable :: 
    Ptr Window ->                           -- _obj : TInterface "Gtk" "Window"
    CInt ->                                 -- setting : TBasicType TBoolean
    IO ()


windowSetDeletable ::
    (MonadIO m, WindowK a) =>
    a ->                                    -- _obj
    Bool ->                                 -- setting
    m ()
windowSetDeletable _obj setting = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    let setting' = (fromIntegral . fromEnum) setting
    gtk_window_set_deletable _obj' setting'
    touchManagedPtr _obj
    return ()

-- method Window::set_destroy_with_parent
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "setting", argType = TBasicType TBoolean, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "setting", argType = TBasicType TBoolean, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gtk_window_set_destroy_with_parent" gtk_window_set_destroy_with_parent :: 
    Ptr Window ->                           -- _obj : TInterface "Gtk" "Window"
    CInt ->                                 -- setting : TBasicType TBoolean
    IO ()


windowSetDestroyWithParent ::
    (MonadIO m, WindowK a) =>
    a ->                                    -- _obj
    Bool ->                                 -- setting
    m ()
windowSetDestroyWithParent _obj setting = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    let setting' = (fromIntegral . fromEnum) setting
    gtk_window_set_destroy_with_parent _obj' setting'
    touchManagedPtr _obj
    return ()

-- method Window::set_focus
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "focus", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = True, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "focus", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = True, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gtk_window_set_focus" gtk_window_set_focus :: 
    Ptr Window ->                           -- _obj : TInterface "Gtk" "Window"
    Ptr Widget ->                           -- focus : TInterface "Gtk" "Widget"
    IO ()


windowSetFocus ::
    (MonadIO m, WindowK a, WidgetK b) =>
    a ->                                    -- _obj
    Maybe (b) ->                            -- focus
    m ()
windowSetFocus _obj focus = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    maybeFocus <- case focus of
        Nothing -> return nullPtr
        Just jFocus -> do
            let jFocus' = unsafeManagedPtrCastPtr jFocus
            return jFocus'
    gtk_window_set_focus _obj' maybeFocus
    touchManagedPtr _obj
    whenJust focus touchManagedPtr
    return ()

-- method Window::set_focus_on_map
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "setting", argType = TBasicType TBoolean, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "setting", argType = TBasicType TBoolean, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gtk_window_set_focus_on_map" gtk_window_set_focus_on_map :: 
    Ptr Window ->                           -- _obj : TInterface "Gtk" "Window"
    CInt ->                                 -- setting : TBasicType TBoolean
    IO ()


windowSetFocusOnMap ::
    (MonadIO m, WindowK a) =>
    a ->                                    -- _obj
    Bool ->                                 -- setting
    m ()
windowSetFocusOnMap _obj setting = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    let setting' = (fromIntegral . fromEnum) setting
    gtk_window_set_focus_on_map _obj' setting'
    touchManagedPtr _obj
    return ()

-- method Window::set_focus_visible
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "setting", argType = TBasicType TBoolean, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "setting", argType = TBasicType TBoolean, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gtk_window_set_focus_visible" gtk_window_set_focus_visible :: 
    Ptr Window ->                           -- _obj : TInterface "Gtk" "Window"
    CInt ->                                 -- setting : TBasicType TBoolean
    IO ()


windowSetFocusVisible ::
    (MonadIO m, WindowK a) =>
    a ->                                    -- _obj
    Bool ->                                 -- setting
    m ()
windowSetFocusVisible _obj setting = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    let setting' = (fromIntegral . fromEnum) setting
    gtk_window_set_focus_visible _obj' setting'
    touchManagedPtr _obj
    return ()

-- method Window::set_geometry_hints
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "geometry_widget", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = True, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "geometry", argType = TInterface "Gdk" "Geometry", direction = DirectionIn, mayBeNull = True, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "geom_mask", argType = TInterface "Gdk" "WindowHints", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "geometry_widget", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = True, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "geometry", argType = TInterface "Gdk" "Geometry", direction = DirectionIn, mayBeNull = True, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "geom_mask", argType = TInterface "Gdk" "WindowHints", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gtk_window_set_geometry_hints" gtk_window_set_geometry_hints :: 
    Ptr Window ->                           -- _obj : TInterface "Gtk" "Window"
    Ptr Widget ->                           -- geometry_widget : TInterface "Gtk" "Widget"
    Ptr Gdk.Geometry ->                     -- geometry : TInterface "Gdk" "Geometry"
    CUInt ->                                -- geom_mask : TInterface "Gdk" "WindowHints"
    IO ()


windowSetGeometryHints ::
    (MonadIO m, WindowK a, WidgetK b) =>
    a ->                                    -- _obj
    Maybe (b) ->                            -- geometry_widget
    Maybe (Gdk.Geometry) ->                 -- geometry
    [Gdk.WindowHints] ->                    -- geom_mask
    m ()
windowSetGeometryHints _obj geometry_widget geometry geom_mask = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    maybeGeometry_widget <- case geometry_widget of
        Nothing -> return nullPtr
        Just jGeometry_widget -> do
            let jGeometry_widget' = unsafeManagedPtrCastPtr jGeometry_widget
            return jGeometry_widget'
    maybeGeometry <- case geometry of
        Nothing -> return nullPtr
        Just jGeometry -> do
            let jGeometry' = unsafeManagedPtrGetPtr jGeometry
            return jGeometry'
    let geom_mask' = gflagsToWord geom_mask
    gtk_window_set_geometry_hints _obj' maybeGeometry_widget maybeGeometry geom_mask'
    touchManagedPtr _obj
    whenJust geometry_widget touchManagedPtr
    whenJust geometry touchManagedPtr
    return ()

-- method Window::set_gravity
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "gravity", argType = TInterface "Gdk" "Gravity", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "gravity", argType = TInterface "Gdk" "Gravity", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gtk_window_set_gravity" gtk_window_set_gravity :: 
    Ptr Window ->                           -- _obj : TInterface "Gtk" "Window"
    CUInt ->                                -- gravity : TInterface "Gdk" "Gravity"
    IO ()


windowSetGravity ::
    (MonadIO m, WindowK a) =>
    a ->                                    -- _obj
    Gdk.Gravity ->                          -- gravity
    m ()
windowSetGravity _obj gravity = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    let gravity' = (fromIntegral . fromEnum) gravity
    gtk_window_set_gravity _obj' gravity'
    touchManagedPtr _obj
    return ()

-- method Window::set_has_resize_grip
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "value", argType = TBasicType TBoolean, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "value", argType = TBasicType TBoolean, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gtk_window_set_has_resize_grip" gtk_window_set_has_resize_grip :: 
    Ptr Window ->                           -- _obj : TInterface "Gtk" "Window"
    CInt ->                                 -- value : TBasicType TBoolean
    IO ()

{-# DEPRECATED windowSetHasResizeGrip ["(Since version 3.14)","Resize grips have been removed."]#-}
windowSetHasResizeGrip ::
    (MonadIO m, WindowK a) =>
    a ->                                    -- _obj
    Bool ->                                 -- value
    m ()
windowSetHasResizeGrip _obj value = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    let value' = (fromIntegral . fromEnum) value
    gtk_window_set_has_resize_grip _obj' value'
    touchManagedPtr _obj
    return ()

-- method Window::set_has_user_ref_count
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "setting", argType = TBasicType TBoolean, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "setting", argType = TBasicType TBoolean, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gtk_window_set_has_user_ref_count" gtk_window_set_has_user_ref_count :: 
    Ptr Window ->                           -- _obj : TInterface "Gtk" "Window"
    CInt ->                                 -- setting : TBasicType TBoolean
    IO ()


windowSetHasUserRefCount ::
    (MonadIO m, WindowK a) =>
    a ->                                    -- _obj
    Bool ->                                 -- setting
    m ()
windowSetHasUserRefCount _obj setting = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    let setting' = (fromIntegral . fromEnum) setting
    gtk_window_set_has_user_ref_count _obj' setting'
    touchManagedPtr _obj
    return ()

-- method Window::set_hide_titlebar_when_maximized
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "setting", argType = TBasicType TBoolean, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "setting", argType = TBasicType TBoolean, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gtk_window_set_hide_titlebar_when_maximized" gtk_window_set_hide_titlebar_when_maximized :: 
    Ptr Window ->                           -- _obj : TInterface "Gtk" "Window"
    CInt ->                                 -- setting : TBasicType TBoolean
    IO ()


windowSetHideTitlebarWhenMaximized ::
    (MonadIO m, WindowK a) =>
    a ->                                    -- _obj
    Bool ->                                 -- setting
    m ()
windowSetHideTitlebarWhenMaximized _obj setting = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    let setting' = (fromIntegral . fromEnum) setting
    gtk_window_set_hide_titlebar_when_maximized _obj' setting'
    touchManagedPtr _obj
    return ()

-- method Window::set_icon
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "icon", argType = TInterface "GdkPixbuf" "Pixbuf", direction = DirectionIn, mayBeNull = True, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "icon", argType = TInterface "GdkPixbuf" "Pixbuf", direction = DirectionIn, mayBeNull = True, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gtk_window_set_icon" gtk_window_set_icon :: 
    Ptr Window ->                           -- _obj : TInterface "Gtk" "Window"
    Ptr GdkPixbuf.Pixbuf ->                 -- icon : TInterface "GdkPixbuf" "Pixbuf"
    IO ()


windowSetIcon ::
    (MonadIO m, WindowK a, GdkPixbuf.PixbufK b) =>
    a ->                                    -- _obj
    Maybe (b) ->                            -- icon
    m ()
windowSetIcon _obj icon = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    maybeIcon <- case icon of
        Nothing -> return nullPtr
        Just jIcon -> do
            let jIcon' = unsafeManagedPtrCastPtr jIcon
            return jIcon'
    gtk_window_set_icon _obj' maybeIcon
    touchManagedPtr _obj
    whenJust icon touchManagedPtr
    return ()

-- method Window::set_icon_from_file
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "filename", argType = TBasicType TFileName, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "filename", argType = TBasicType TFileName, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TBoolean
-- throws : True
-- Skip return : False

foreign import ccall "gtk_window_set_icon_from_file" gtk_window_set_icon_from_file :: 
    Ptr Window ->                           -- _obj : TInterface "Gtk" "Window"
    CString ->                              -- filename : TBasicType TFileName
    Ptr (Ptr GError) ->                     -- error
    IO CInt


windowSetIconFromFile ::
    (MonadIO m, WindowK a) =>
    a ->                                    -- _obj
    [Char] ->                               -- filename
    m ()
windowSetIconFromFile _obj filename = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    filename' <- stringToCString filename
    onException (do
        _ <- propagateGError $ gtk_window_set_icon_from_file _obj' filename'
        touchManagedPtr _obj
        freeMem filename'
        return ()
     ) (do
        freeMem filename'
     )

-- method Window::set_icon_list
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "list", argType = TGList (TInterface "GdkPixbuf" "Pixbuf"), direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "list", argType = TGList (TInterface "GdkPixbuf" "Pixbuf"), direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gtk_window_set_icon_list" gtk_window_set_icon_list :: 
    Ptr Window ->                           -- _obj : TInterface "Gtk" "Window"
    Ptr (GList (Ptr GdkPixbuf.Pixbuf)) ->   -- list : TGList (TInterface "GdkPixbuf" "Pixbuf")
    IO ()


windowSetIconList ::
    (MonadIO m, WindowK a, GdkPixbuf.PixbufK b) =>
    a ->                                    -- _obj
    [b] ->                                  -- list
    m ()
windowSetIconList _obj list = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    let list' = map unsafeManagedPtrCastPtr list
    list'' <- packGList list'
    gtk_window_set_icon_list _obj' list''
    touchManagedPtr _obj
    mapM_ touchManagedPtr list
    g_list_free list''
    return ()

-- method Window::set_icon_name
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "name", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = True, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "name", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = True, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gtk_window_set_icon_name" gtk_window_set_icon_name :: 
    Ptr Window ->                           -- _obj : TInterface "Gtk" "Window"
    CString ->                              -- name : TBasicType TUTF8
    IO ()


windowSetIconName ::
    (MonadIO m, WindowK a) =>
    a ->                                    -- _obj
    Maybe (T.Text) ->                       -- name
    m ()
windowSetIconName _obj name = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    maybeName <- case name of
        Nothing -> return nullPtr
        Just jName -> do
            jName' <- textToCString jName
            return jName'
    gtk_window_set_icon_name _obj' maybeName
    touchManagedPtr _obj
    freeMem maybeName
    return ()

-- method Window::set_keep_above
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "setting", argType = TBasicType TBoolean, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "setting", argType = TBasicType TBoolean, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gtk_window_set_keep_above" gtk_window_set_keep_above :: 
    Ptr Window ->                           -- _obj : TInterface "Gtk" "Window"
    CInt ->                                 -- setting : TBasicType TBoolean
    IO ()


windowSetKeepAbove ::
    (MonadIO m, WindowK a) =>
    a ->                                    -- _obj
    Bool ->                                 -- setting
    m ()
windowSetKeepAbove _obj setting = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    let setting' = (fromIntegral . fromEnum) setting
    gtk_window_set_keep_above _obj' setting'
    touchManagedPtr _obj
    return ()

-- method Window::set_keep_below
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "setting", argType = TBasicType TBoolean, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "setting", argType = TBasicType TBoolean, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gtk_window_set_keep_below" gtk_window_set_keep_below :: 
    Ptr Window ->                           -- _obj : TInterface "Gtk" "Window"
    CInt ->                                 -- setting : TBasicType TBoolean
    IO ()


windowSetKeepBelow ::
    (MonadIO m, WindowK a) =>
    a ->                                    -- _obj
    Bool ->                                 -- setting
    m ()
windowSetKeepBelow _obj setting = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    let setting' = (fromIntegral . fromEnum) setting
    gtk_window_set_keep_below _obj' setting'
    touchManagedPtr _obj
    return ()

-- method Window::set_mnemonic_modifier
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "modifier", argType = TInterface "Gdk" "ModifierType", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "modifier", argType = TInterface "Gdk" "ModifierType", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gtk_window_set_mnemonic_modifier" gtk_window_set_mnemonic_modifier :: 
    Ptr Window ->                           -- _obj : TInterface "Gtk" "Window"
    CUInt ->                                -- modifier : TInterface "Gdk" "ModifierType"
    IO ()


windowSetMnemonicModifier ::
    (MonadIO m, WindowK a) =>
    a ->                                    -- _obj
    [Gdk.ModifierType] ->                   -- modifier
    m ()
windowSetMnemonicModifier _obj modifier = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    let modifier' = gflagsToWord modifier
    gtk_window_set_mnemonic_modifier _obj' modifier'
    touchManagedPtr _obj
    return ()

-- method Window::set_mnemonics_visible
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "setting", argType = TBasicType TBoolean, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "setting", argType = TBasicType TBoolean, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gtk_window_set_mnemonics_visible" gtk_window_set_mnemonics_visible :: 
    Ptr Window ->                           -- _obj : TInterface "Gtk" "Window"
    CInt ->                                 -- setting : TBasicType TBoolean
    IO ()


windowSetMnemonicsVisible ::
    (MonadIO m, WindowK a) =>
    a ->                                    -- _obj
    Bool ->                                 -- setting
    m ()
windowSetMnemonicsVisible _obj setting = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    let setting' = (fromIntegral . fromEnum) setting
    gtk_window_set_mnemonics_visible _obj' setting'
    touchManagedPtr _obj
    return ()

-- method Window::set_modal
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "modal", argType = TBasicType TBoolean, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "modal", argType = TBasicType TBoolean, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gtk_window_set_modal" gtk_window_set_modal :: 
    Ptr Window ->                           -- _obj : TInterface "Gtk" "Window"
    CInt ->                                 -- modal : TBasicType TBoolean
    IO ()


windowSetModal ::
    (MonadIO m, WindowK a) =>
    a ->                                    -- _obj
    Bool ->                                 -- modal
    m ()
windowSetModal _obj modal = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    let modal' = (fromIntegral . fromEnum) modal
    gtk_window_set_modal _obj' modal'
    touchManagedPtr _obj
    return ()

-- method Window::set_opacity
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "opacity", argType = TBasicType TDouble, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "opacity", argType = TBasicType TDouble, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gtk_window_set_opacity" gtk_window_set_opacity :: 
    Ptr Window ->                           -- _obj : TInterface "Gtk" "Window"
    CDouble ->                              -- opacity : TBasicType TDouble
    IO ()

{-# DEPRECATED windowSetOpacity ["(Since version 3.8)","Use gtk_widget_set_opacity instead."]#-}
windowSetOpacity ::
    (MonadIO m, WindowK a) =>
    a ->                                    -- _obj
    Double ->                               -- opacity
    m ()
windowSetOpacity _obj opacity = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    let opacity' = realToFrac opacity
    gtk_window_set_opacity _obj' opacity'
    touchManagedPtr _obj
    return ()

-- method Window::set_position
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "position", argType = TInterface "Gtk" "WindowPosition", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "position", argType = TInterface "Gtk" "WindowPosition", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gtk_window_set_position" gtk_window_set_position :: 
    Ptr Window ->                           -- _obj : TInterface "Gtk" "Window"
    CUInt ->                                -- position : TInterface "Gtk" "WindowPosition"
    IO ()


windowSetPosition ::
    (MonadIO m, WindowK a) =>
    a ->                                    -- _obj
    WindowPosition ->                       -- position
    m ()
windowSetPosition _obj position = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    let position' = (fromIntegral . fromEnum) position
    gtk_window_set_position _obj' position'
    touchManagedPtr _obj
    return ()

-- method Window::set_resizable
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "resizable", argType = TBasicType TBoolean, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "resizable", argType = TBasicType TBoolean, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gtk_window_set_resizable" gtk_window_set_resizable :: 
    Ptr Window ->                           -- _obj : TInterface "Gtk" "Window"
    CInt ->                                 -- resizable : TBasicType TBoolean
    IO ()


windowSetResizable ::
    (MonadIO m, WindowK a) =>
    a ->                                    -- _obj
    Bool ->                                 -- resizable
    m ()
windowSetResizable _obj resizable = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    let resizable' = (fromIntegral . fromEnum) resizable
    gtk_window_set_resizable _obj' resizable'
    touchManagedPtr _obj
    return ()

-- method Window::set_role
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "role", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "role", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gtk_window_set_role" gtk_window_set_role :: 
    Ptr Window ->                           -- _obj : TInterface "Gtk" "Window"
    CString ->                              -- role : TBasicType TUTF8
    IO ()


windowSetRole ::
    (MonadIO m, WindowK a) =>
    a ->                                    -- _obj
    T.Text ->                               -- role
    m ()
windowSetRole _obj role = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    role' <- textToCString role
    gtk_window_set_role _obj' role'
    touchManagedPtr _obj
    freeMem role'
    return ()

-- method Window::set_screen
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "screen", argType = TInterface "Gdk" "Screen", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "screen", argType = TInterface "Gdk" "Screen", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gtk_window_set_screen" gtk_window_set_screen :: 
    Ptr Window ->                           -- _obj : TInterface "Gtk" "Window"
    Ptr Gdk.Screen ->                       -- screen : TInterface "Gdk" "Screen"
    IO ()


windowSetScreen ::
    (MonadIO m, WindowK a, Gdk.ScreenK b) =>
    a ->                                    -- _obj
    b ->                                    -- screen
    m ()
windowSetScreen _obj screen = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    let screen' = unsafeManagedPtrCastPtr screen
    gtk_window_set_screen _obj' screen'
    touchManagedPtr _obj
    touchManagedPtr screen
    return ()

-- method Window::set_skip_pager_hint
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "setting", argType = TBasicType TBoolean, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "setting", argType = TBasicType TBoolean, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gtk_window_set_skip_pager_hint" gtk_window_set_skip_pager_hint :: 
    Ptr Window ->                           -- _obj : TInterface "Gtk" "Window"
    CInt ->                                 -- setting : TBasicType TBoolean
    IO ()


windowSetSkipPagerHint ::
    (MonadIO m, WindowK a) =>
    a ->                                    -- _obj
    Bool ->                                 -- setting
    m ()
windowSetSkipPagerHint _obj setting = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    let setting' = (fromIntegral . fromEnum) setting
    gtk_window_set_skip_pager_hint _obj' setting'
    touchManagedPtr _obj
    return ()

-- method Window::set_skip_taskbar_hint
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "setting", argType = TBasicType TBoolean, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "setting", argType = TBasicType TBoolean, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gtk_window_set_skip_taskbar_hint" gtk_window_set_skip_taskbar_hint :: 
    Ptr Window ->                           -- _obj : TInterface "Gtk" "Window"
    CInt ->                                 -- setting : TBasicType TBoolean
    IO ()


windowSetSkipTaskbarHint ::
    (MonadIO m, WindowK a) =>
    a ->                                    -- _obj
    Bool ->                                 -- setting
    m ()
windowSetSkipTaskbarHint _obj setting = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    let setting' = (fromIntegral . fromEnum) setting
    gtk_window_set_skip_taskbar_hint _obj' setting'
    touchManagedPtr _obj
    return ()

-- method Window::set_startup_id
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "startup_id", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "startup_id", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gtk_window_set_startup_id" gtk_window_set_startup_id :: 
    Ptr Window ->                           -- _obj : TInterface "Gtk" "Window"
    CString ->                              -- startup_id : TBasicType TUTF8
    IO ()


windowSetStartupId ::
    (MonadIO m, WindowK a) =>
    a ->                                    -- _obj
    T.Text ->                               -- startup_id
    m ()
windowSetStartupId _obj startup_id = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    startup_id' <- textToCString startup_id
    gtk_window_set_startup_id _obj' startup_id'
    touchManagedPtr _obj
    freeMem startup_id'
    return ()

-- method Window::set_title
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "title", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "title", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gtk_window_set_title" gtk_window_set_title :: 
    Ptr Window ->                           -- _obj : TInterface "Gtk" "Window"
    CString ->                              -- title : TBasicType TUTF8
    IO ()


windowSetTitle ::
    (MonadIO m, WindowK a) =>
    a ->                                    -- _obj
    T.Text ->                               -- title
    m ()
windowSetTitle _obj title = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    title' <- textToCString title
    gtk_window_set_title _obj' title'
    touchManagedPtr _obj
    freeMem title'
    return ()

-- method Window::set_titlebar
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "titlebar", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = True, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "titlebar", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = True, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gtk_window_set_titlebar" gtk_window_set_titlebar :: 
    Ptr Window ->                           -- _obj : TInterface "Gtk" "Window"
    Ptr Widget ->                           -- titlebar : TInterface "Gtk" "Widget"
    IO ()


windowSetTitlebar ::
    (MonadIO m, WindowK a, WidgetK b) =>
    a ->                                    -- _obj
    Maybe (b) ->                            -- titlebar
    m ()
windowSetTitlebar _obj titlebar = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    maybeTitlebar <- case titlebar of
        Nothing -> return nullPtr
        Just jTitlebar -> do
            let jTitlebar' = unsafeManagedPtrCastPtr jTitlebar
            return jTitlebar'
    gtk_window_set_titlebar _obj' maybeTitlebar
    touchManagedPtr _obj
    whenJust titlebar touchManagedPtr
    return ()

-- method Window::set_transient_for
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "parent", argType = TInterface "Gtk" "Window", direction = DirectionIn, mayBeNull = True, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "parent", argType = TInterface "Gtk" "Window", direction = DirectionIn, mayBeNull = True, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gtk_window_set_transient_for" gtk_window_set_transient_for :: 
    Ptr Window ->                           -- _obj : TInterface "Gtk" "Window"
    Ptr Window ->                           -- parent : TInterface "Gtk" "Window"
    IO ()


windowSetTransientFor ::
    (MonadIO m, WindowK a, WindowK b) =>
    a ->                                    -- _obj
    Maybe (b) ->                            -- parent
    m ()
windowSetTransientFor _obj parent = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    maybeParent <- case parent of
        Nothing -> return nullPtr
        Just jParent -> do
            let jParent' = unsafeManagedPtrCastPtr jParent
            return jParent'
    gtk_window_set_transient_for _obj' maybeParent
    touchManagedPtr _obj
    whenJust parent touchManagedPtr
    return ()

-- method Window::set_type_hint
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "hint", argType = TInterface "Gdk" "WindowTypeHint", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "hint", argType = TInterface "Gdk" "WindowTypeHint", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gtk_window_set_type_hint" gtk_window_set_type_hint :: 
    Ptr Window ->                           -- _obj : TInterface "Gtk" "Window"
    CUInt ->                                -- hint : TInterface "Gdk" "WindowTypeHint"
    IO ()


windowSetTypeHint ::
    (MonadIO m, WindowK a) =>
    a ->                                    -- _obj
    Gdk.WindowTypeHint ->                   -- hint
    m ()
windowSetTypeHint _obj hint = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    let hint' = (fromIntegral . fromEnum) hint
    gtk_window_set_type_hint _obj' hint'
    touchManagedPtr _obj
    return ()

-- method Window::set_urgency_hint
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "setting", argType = TBasicType TBoolean, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "setting", argType = TBasicType TBoolean, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gtk_window_set_urgency_hint" gtk_window_set_urgency_hint :: 
    Ptr Window ->                           -- _obj : TInterface "Gtk" "Window"
    CInt ->                                 -- setting : TBasicType TBoolean
    IO ()


windowSetUrgencyHint ::
    (MonadIO m, WindowK a) =>
    a ->                                    -- _obj
    Bool ->                                 -- setting
    m ()
windowSetUrgencyHint _obj setting = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    let setting' = (fromIntegral . fromEnum) setting
    gtk_window_set_urgency_hint _obj' setting'
    touchManagedPtr _obj
    return ()

-- method Window::set_wmclass
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "wmclass_name", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "wmclass_class", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "wmclass_name", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "wmclass_class", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gtk_window_set_wmclass" gtk_window_set_wmclass :: 
    Ptr Window ->                           -- _obj : TInterface "Gtk" "Window"
    CString ->                              -- wmclass_name : TBasicType TUTF8
    CString ->                              -- wmclass_class : TBasicType TUTF8
    IO ()


windowSetWmclass ::
    (MonadIO m, WindowK a) =>
    a ->                                    -- _obj
    T.Text ->                               -- wmclass_name
    T.Text ->                               -- wmclass_class
    m ()
windowSetWmclass _obj wmclass_name wmclass_class = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    wmclass_name' <- textToCString wmclass_name
    wmclass_class' <- textToCString wmclass_class
    gtk_window_set_wmclass _obj' wmclass_name' wmclass_class'
    touchManagedPtr _obj
    freeMem wmclass_name'
    freeMem wmclass_class'
    return ()

-- method Window::stick
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gtk_window_stick" gtk_window_stick :: 
    Ptr Window ->                           -- _obj : TInterface "Gtk" "Window"
    IO ()


windowStick ::
    (MonadIO m, WindowK a) =>
    a ->                                    -- _obj
    m ()
windowStick _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    gtk_window_stick _obj'
    touchManagedPtr _obj
    return ()

-- method Window::unfullscreen
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gtk_window_unfullscreen" gtk_window_unfullscreen :: 
    Ptr Window ->                           -- _obj : TInterface "Gtk" "Window"
    IO ()


windowUnfullscreen ::
    (MonadIO m, WindowK a) =>
    a ->                                    -- _obj
    m ()
windowUnfullscreen _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    gtk_window_unfullscreen _obj'
    touchManagedPtr _obj
    return ()

-- method Window::unmaximize
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gtk_window_unmaximize" gtk_window_unmaximize :: 
    Ptr Window ->                           -- _obj : TInterface "Gtk" "Window"
    IO ()


windowUnmaximize ::
    (MonadIO m, WindowK a) =>
    a ->                                    -- _obj
    m ()
windowUnmaximize _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    gtk_window_unmaximize _obj'
    touchManagedPtr _obj
    return ()

-- method Window::unstick
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gtk_window_unstick" gtk_window_unstick :: 
    Ptr Window ->                           -- _obj : TInterface "Gtk" "Window"
    IO ()


windowUnstick ::
    (MonadIO m, WindowK a) =>
    a ->                                    -- _obj
    m ()
windowUnstick _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    gtk_window_unstick _obj'
    touchManagedPtr _obj
    return ()

-- method Window::get_default_icon_list
-- method type : MemberFunction
-- Args : []
-- Lengths : []
-- hInArgs : []
-- returnType : TGList (TInterface "GdkPixbuf" "Pixbuf")
-- throws : False
-- Skip return : False

foreign import ccall "gtk_window_get_default_icon_list" gtk_window_get_default_icon_list :: 
    IO (Ptr (GList (Ptr GdkPixbuf.Pixbuf)))


windowGetDefaultIconList ::
    (MonadIO m) =>
    m [GdkPixbuf.Pixbuf]
windowGetDefaultIconList  = liftIO $ do
    result <- gtk_window_get_default_icon_list
    checkUnexpectedReturnNULL "gtk_window_get_default_icon_list" result
    result' <- unpackGList result
    result'' <- mapM (newObject GdkPixbuf.Pixbuf) result'
    g_list_free result
    return result''

-- method Window::get_default_icon_name
-- method type : MemberFunction
-- Args : []
-- Lengths : []
-- hInArgs : []
-- returnType : TBasicType TUTF8
-- throws : False
-- Skip return : False

foreign import ccall "gtk_window_get_default_icon_name" gtk_window_get_default_icon_name :: 
    IO CString


windowGetDefaultIconName ::
    (MonadIO m) =>
    m T.Text
windowGetDefaultIconName  = liftIO $ do
    result <- gtk_window_get_default_icon_name
    checkUnexpectedReturnNULL "gtk_window_get_default_icon_name" result
    result' <- cstringToText result
    return result'

-- method Window::list_toplevels
-- method type : MemberFunction
-- Args : []
-- Lengths : []
-- hInArgs : []
-- returnType : TGList (TInterface "Gtk" "Widget")
-- throws : False
-- Skip return : False

foreign import ccall "gtk_window_list_toplevels" gtk_window_list_toplevels :: 
    IO (Ptr (GList (Ptr Widget)))


windowListToplevels ::
    (MonadIO m) =>
    m [Widget]
windowListToplevels  = liftIO $ do
    result <- gtk_window_list_toplevels
    checkUnexpectedReturnNULL "gtk_window_list_toplevels" result
    result' <- unpackGList result
    result'' <- mapM (newObject Widget) result'
    g_list_free result
    return result''

-- method Window::set_auto_startup_notification
-- method type : MemberFunction
-- Args : [Arg {argName = "setting", argType = TBasicType TBoolean, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "setting", argType = TBasicType TBoolean, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gtk_window_set_auto_startup_notification" gtk_window_set_auto_startup_notification :: 
    CInt ->                                 -- setting : TBasicType TBoolean
    IO ()


windowSetAutoStartupNotification ::
    (MonadIO m) =>
    Bool ->                                 -- setting
    m ()
windowSetAutoStartupNotification setting = liftIO $ do
    let setting' = (fromIntegral . fromEnum) setting
    gtk_window_set_auto_startup_notification setting'
    return ()

-- method Window::set_default_icon
-- method type : MemberFunction
-- Args : [Arg {argName = "icon", argType = TInterface "GdkPixbuf" "Pixbuf", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "icon", argType = TInterface "GdkPixbuf" "Pixbuf", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gtk_window_set_default_icon" gtk_window_set_default_icon :: 
    Ptr GdkPixbuf.Pixbuf ->                 -- icon : TInterface "GdkPixbuf" "Pixbuf"
    IO ()


windowSetDefaultIcon ::
    (MonadIO m, GdkPixbuf.PixbufK a) =>
    a ->                                    -- icon
    m ()
windowSetDefaultIcon icon = liftIO $ do
    let icon' = unsafeManagedPtrCastPtr icon
    gtk_window_set_default_icon icon'
    touchManagedPtr icon
    return ()

-- method Window::set_default_icon_from_file
-- method type : MemberFunction
-- Args : [Arg {argName = "filename", argType = TBasicType TFileName, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "filename", argType = TBasicType TFileName, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TBoolean
-- throws : True
-- Skip return : False

foreign import ccall "gtk_window_set_default_icon_from_file" gtk_window_set_default_icon_from_file :: 
    CString ->                              -- filename : TBasicType TFileName
    Ptr (Ptr GError) ->                     -- error
    IO CInt


windowSetDefaultIconFromFile ::
    (MonadIO m) =>
    [Char] ->                               -- filename
    m ()
windowSetDefaultIconFromFile filename = liftIO $ do
    filename' <- stringToCString filename
    onException (do
        _ <- propagateGError $ gtk_window_set_default_icon_from_file filename'
        freeMem filename'
        return ()
     ) (do
        freeMem filename'
     )

-- method Window::set_default_icon_list
-- method type : MemberFunction
-- Args : [Arg {argName = "list", argType = TGList (TInterface "GdkPixbuf" "Pixbuf"), direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferContainer}]
-- Lengths : []
-- hInArgs : [Arg {argName = "list", argType = TGList (TInterface "GdkPixbuf" "Pixbuf"), direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferContainer}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gtk_window_set_default_icon_list" gtk_window_set_default_icon_list :: 
    Ptr (GList (Ptr GdkPixbuf.Pixbuf)) ->   -- list : TGList (TInterface "GdkPixbuf" "Pixbuf")
    IO ()


windowSetDefaultIconList ::
    (MonadIO m, GdkPixbuf.PixbufK a) =>
    [a] ->                                  -- list
    m ()
windowSetDefaultIconList list = liftIO $ do
    let list' = map unsafeManagedPtrCastPtr list
    list'' <- packGList list'
    gtk_window_set_default_icon_list list''
    mapM_ touchManagedPtr list
    return ()

-- method Window::set_default_icon_name
-- method type : MemberFunction
-- Args : [Arg {argName = "name", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "name", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gtk_window_set_default_icon_name" gtk_window_set_default_icon_name :: 
    CString ->                              -- name : TBasicType TUTF8
    IO ()


windowSetDefaultIconName ::
    (MonadIO m) =>
    T.Text ->                               -- name
    m ()
windowSetDefaultIconName name = liftIO $ do
    name' <- textToCString name
    gtk_window_set_default_icon_name name'
    freeMem name'
    return ()

-- method Window::set_interactive_debugging
-- method type : MemberFunction
-- Args : [Arg {argName = "enable", argType = TBasicType TBoolean, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "enable", argType = TBasicType TBoolean, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gtk_window_set_interactive_debugging" gtk_window_set_interactive_debugging :: 
    CInt ->                                 -- enable : TBasicType TBoolean
    IO ()


windowSetInteractiveDebugging ::
    (MonadIO m) =>
    Bool ->                                 -- enable
    m ()
windowSetInteractiveDebugging enable = liftIO $ do
    let enable' = (fromIntegral . fromEnum) enable
    gtk_window_set_interactive_debugging enable'
    return ()