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

The content of a 'GI.WebKit.Objects.WebView.WebView' can request to change certain
properties of a 'GI.WebKit.Objects.WebView.WebView'. This can include the x, y position
of the window, the width and height but also if a toolbar,
scrollbar, statusbar, locationbar should be visible to the user,
the request to show the 'GI.WebKit.Objects.WebView.WebView' fullscreen.

In the normal case one will use @/webkit_web_view_get_window_features/@
to get the 'GI.WebKit.Objects.WebWindowFeatures.WebWindowFeatures' and then monitor the property
changes. Be aware that the 'GI.WebKit.Objects.WebWindowFeatures.WebWindowFeatures' might change
before 'GI.WebKit.Objects.WebView.WebView'::@/web-view-ready/@ signal is emitted.
To be safe listen to the notify::window-features signal of the 'GI.WebKit.Objects.WebView.WebView'
and reconnect the signals whenever the 'GI.WebKit.Objects.WebWindowFeatures.WebWindowFeatures' of
a 'GI.WebKit.Objects.WebView.WebView' changes.

\<informalexample>\<programlisting>
\/\<!-- -->* Get the current WebKitWebWindowFeatures *\<!-- -->\/
WebKitWebWindowFeatures *features = webkit_web_view_get_window_features (my_webview);

\/\<!-- -->* Connect to the property changes *\<!-- -->\/
g_signal_connect (G_OBJECT(features), \"notify::menubar-visible\", G_CALLBACK(make_menu_bar_visible), NULL);
g_signal_connect (G_OBJECT(features), \"notify::statusbar-visible\", G_CALLBACK(make_status_bar_visible), NULL);

\<\/programlisting>\<\/informalexample>
-}

module GI.WebKit.Objects.WebWindowFeatures
    ( 

-- * Exported types
    WebWindowFeatures(..)                   ,
    IsWebWindowFeatures                     ,
    toWebWindowFeatures                     ,
    noWebWindowFeatures                     ,


 -- * Methods
-- ** equal #method:equal#
    WebWindowFeaturesEqualMethodInfo        ,
    webWindowFeaturesEqual                  ,


-- ** new #method:new#
    webWindowFeaturesNew                    ,




 -- * Properties
-- ** fullscreen #attr:fullscreen#
    WebWindowFeaturesFullscreenPropertyInfo ,
    constructWebWindowFeaturesFullscreen    ,
    getWebWindowFeaturesFullscreen          ,
    setWebWindowFeaturesFullscreen          ,
    webWindowFeaturesFullscreen             ,


-- ** height #attr:height#
    WebWindowFeaturesHeightPropertyInfo     ,
    constructWebWindowFeaturesHeight        ,
    getWebWindowFeaturesHeight              ,
    setWebWindowFeaturesHeight              ,
    webWindowFeaturesHeight                 ,


-- ** locationbarVisible #attr:locationbarVisible#
    WebWindowFeaturesLocationbarVisiblePropertyInfo,
    constructWebWindowFeaturesLocationbarVisible,
    getWebWindowFeaturesLocationbarVisible  ,
    setWebWindowFeaturesLocationbarVisible  ,
    webWindowFeaturesLocationbarVisible     ,


-- ** menubarVisible #attr:menubarVisible#
    WebWindowFeaturesMenubarVisiblePropertyInfo,
    constructWebWindowFeaturesMenubarVisible,
    getWebWindowFeaturesMenubarVisible      ,
    setWebWindowFeaturesMenubarVisible      ,
    webWindowFeaturesMenubarVisible         ,


-- ** scrollbarVisible #attr:scrollbarVisible#
    WebWindowFeaturesScrollbarVisiblePropertyInfo,
    constructWebWindowFeaturesScrollbarVisible,
    getWebWindowFeaturesScrollbarVisible    ,
    setWebWindowFeaturesScrollbarVisible    ,
    webWindowFeaturesScrollbarVisible       ,


-- ** statusbarVisible #attr:statusbarVisible#
    WebWindowFeaturesStatusbarVisiblePropertyInfo,
    constructWebWindowFeaturesStatusbarVisible,
    getWebWindowFeaturesStatusbarVisible    ,
    setWebWindowFeaturesStatusbarVisible    ,
    webWindowFeaturesStatusbarVisible       ,


-- ** toolbarVisible #attr:toolbarVisible#
    WebWindowFeaturesToolbarVisiblePropertyInfo,
    constructWebWindowFeaturesToolbarVisible,
    getWebWindowFeaturesToolbarVisible      ,
    setWebWindowFeaturesToolbarVisible      ,
    webWindowFeaturesToolbarVisible         ,


-- ** width #attr:width#
    WebWindowFeaturesWidthPropertyInfo      ,
    constructWebWindowFeaturesWidth         ,
    getWebWindowFeaturesWidth               ,
    setWebWindowFeaturesWidth               ,
    webWindowFeaturesWidth                  ,


-- ** x #attr:x#
    WebWindowFeaturesXPropertyInfo          ,
    constructWebWindowFeaturesX             ,
    getWebWindowFeaturesX                   ,
    setWebWindowFeaturesX                   ,
    webWindowFeaturesX                      ,


-- ** y #attr:y#
    WebWindowFeaturesYPropertyInfo          ,
    constructWebWindowFeaturesY             ,
    getWebWindowFeaturesY                   ,
    setWebWindowFeaturesY                   ,
    webWindowFeaturesY                      ,




    ) where

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

import qualified Data.GI.Base.Attributes as GI.Attributes
import qualified Data.GI.Base.ManagedPtr as B.ManagedPtr
import qualified Data.GI.Base.GError as B.GError
import qualified Data.GI.Base.GVariant as B.GVariant
import qualified Data.GI.Base.GParamSpec as B.GParamSpec
import qualified Data.GI.Base.CallStack as B.CallStack
import qualified Data.Text as T
import qualified Data.ByteString.Char8 as B
import qualified Data.Map as Map
import qualified Foreign.Ptr as FP

import qualified GI.GObject.Objects.Object as GObject.Object

newtype WebWindowFeatures = WebWindowFeatures (ManagedPtr WebWindowFeatures)
foreign import ccall "webkit_web_window_features_get_type"
    c_webkit_web_window_features_get_type :: IO GType

instance GObject WebWindowFeatures where
    gobjectType _ = c_webkit_web_window_features_get_type
    

class GObject o => IsWebWindowFeatures o
#if MIN_VERSION_base(4,9,0)
instance {-# OVERLAPPABLE #-} (GObject a, O.UnknownAncestorError WebWindowFeatures a) =>
    IsWebWindowFeatures a
#endif
instance IsWebWindowFeatures WebWindowFeatures
instance GObject.Object.IsObject WebWindowFeatures

toWebWindowFeatures :: IsWebWindowFeatures o => o -> IO WebWindowFeatures
toWebWindowFeatures = unsafeCastTo WebWindowFeatures

noWebWindowFeatures :: Maybe WebWindowFeatures
noWebWindowFeatures = Nothing

type family ResolveWebWindowFeaturesMethod (t :: Symbol) (o :: *) :: * where
    ResolveWebWindowFeaturesMethod "bindProperty" o = GObject.Object.ObjectBindPropertyMethodInfo
    ResolveWebWindowFeaturesMethod "bindPropertyFull" o = GObject.Object.ObjectBindPropertyFullMethodInfo
    ResolveWebWindowFeaturesMethod "equal" o = WebWindowFeaturesEqualMethodInfo
    ResolveWebWindowFeaturesMethod "forceFloating" o = GObject.Object.ObjectForceFloatingMethodInfo
    ResolveWebWindowFeaturesMethod "freezeNotify" o = GObject.Object.ObjectFreezeNotifyMethodInfo
    ResolveWebWindowFeaturesMethod "isFloating" o = GObject.Object.ObjectIsFloatingMethodInfo
    ResolveWebWindowFeaturesMethod "notify" o = GObject.Object.ObjectNotifyMethodInfo
    ResolveWebWindowFeaturesMethod "notifyByPspec" o = GObject.Object.ObjectNotifyByPspecMethodInfo
    ResolveWebWindowFeaturesMethod "ref" o = GObject.Object.ObjectRefMethodInfo
    ResolveWebWindowFeaturesMethod "refSink" o = GObject.Object.ObjectRefSinkMethodInfo
    ResolveWebWindowFeaturesMethod "replaceData" o = GObject.Object.ObjectReplaceDataMethodInfo
    ResolveWebWindowFeaturesMethod "replaceQdata" o = GObject.Object.ObjectReplaceQdataMethodInfo
    ResolveWebWindowFeaturesMethod "runDispose" o = GObject.Object.ObjectRunDisposeMethodInfo
    ResolveWebWindowFeaturesMethod "stealData" o = GObject.Object.ObjectStealDataMethodInfo
    ResolveWebWindowFeaturesMethod "stealQdata" o = GObject.Object.ObjectStealQdataMethodInfo
    ResolveWebWindowFeaturesMethod "thawNotify" o = GObject.Object.ObjectThawNotifyMethodInfo
    ResolveWebWindowFeaturesMethod "unref" o = GObject.Object.ObjectUnrefMethodInfo
    ResolveWebWindowFeaturesMethod "watchClosure" o = GObject.Object.ObjectWatchClosureMethodInfo
    ResolveWebWindowFeaturesMethod "getData" o = GObject.Object.ObjectGetDataMethodInfo
    ResolveWebWindowFeaturesMethod "getProperty" o = GObject.Object.ObjectGetPropertyMethodInfo
    ResolveWebWindowFeaturesMethod "getQdata" o = GObject.Object.ObjectGetQdataMethodInfo
    ResolveWebWindowFeaturesMethod "setData" o = GObject.Object.ObjectSetDataMethodInfo
    ResolveWebWindowFeaturesMethod "setProperty" o = GObject.Object.ObjectSetPropertyMethodInfo
    ResolveWebWindowFeaturesMethod l o = O.MethodResolutionFailed l o

instance (info ~ ResolveWebWindowFeaturesMethod t WebWindowFeatures, O.MethodInfo info WebWindowFeatures p) => O.IsLabelProxy t (WebWindowFeatures -> p) where
    fromLabelProxy _ = O.overloadedMethod (O.MethodProxy :: O.MethodProxy info)

#if MIN_VERSION_base(4,9,0)
instance (info ~ ResolveWebWindowFeaturesMethod t WebWindowFeatures, O.MethodInfo info WebWindowFeatures p) => O.IsLabel t (WebWindowFeatures -> p) where
    fromLabel _ = O.overloadedMethod (O.MethodProxy :: O.MethodProxy info)
#endif

-- VVV Prop "fullscreen"
   -- Type: TBasicType TBoolean
   -- Flags: [PropertyReadable,PropertyWritable,PropertyConstruct]
   -- Nullable: (Nothing,Nothing)

getWebWindowFeaturesFullscreen :: (MonadIO m, IsWebWindowFeatures o) => o -> m Bool
getWebWindowFeaturesFullscreen obj = liftIO $ getObjectPropertyBool obj "fullscreen"

setWebWindowFeaturesFullscreen :: (MonadIO m, IsWebWindowFeatures o) => o -> Bool -> m ()
setWebWindowFeaturesFullscreen obj val = liftIO $ setObjectPropertyBool obj "fullscreen" val

constructWebWindowFeaturesFullscreen :: (IsWebWindowFeatures o) => Bool -> IO (GValueConstruct o)
constructWebWindowFeaturesFullscreen val = constructObjectPropertyBool "fullscreen" val

data WebWindowFeaturesFullscreenPropertyInfo
instance AttrInfo WebWindowFeaturesFullscreenPropertyInfo where
    type AttrAllowedOps WebWindowFeaturesFullscreenPropertyInfo = '[ 'AttrSet, 'AttrConstruct, 'AttrGet]
    type AttrSetTypeConstraint WebWindowFeaturesFullscreenPropertyInfo = (~) Bool
    type AttrBaseTypeConstraint WebWindowFeaturesFullscreenPropertyInfo = IsWebWindowFeatures
    type AttrGetType WebWindowFeaturesFullscreenPropertyInfo = Bool
    type AttrLabel WebWindowFeaturesFullscreenPropertyInfo = "fullscreen"
    type AttrOrigin WebWindowFeaturesFullscreenPropertyInfo = WebWindowFeatures
    attrGet _ = getWebWindowFeaturesFullscreen
    attrSet _ = setWebWindowFeaturesFullscreen
    attrConstruct _ = constructWebWindowFeaturesFullscreen
    attrClear _ = undefined

-- VVV Prop "height"
   -- Type: TBasicType TInt
   -- Flags: [PropertyReadable,PropertyWritable,PropertyConstruct]
   -- Nullable: (Nothing,Nothing)

getWebWindowFeaturesHeight :: (MonadIO m, IsWebWindowFeatures o) => o -> m Int32
getWebWindowFeaturesHeight obj = liftIO $ getObjectPropertyInt32 obj "height"

setWebWindowFeaturesHeight :: (MonadIO m, IsWebWindowFeatures o) => o -> Int32 -> m ()
setWebWindowFeaturesHeight obj val = liftIO $ setObjectPropertyInt32 obj "height" val

constructWebWindowFeaturesHeight :: (IsWebWindowFeatures o) => Int32 -> IO (GValueConstruct o)
constructWebWindowFeaturesHeight val = constructObjectPropertyInt32 "height" val

data WebWindowFeaturesHeightPropertyInfo
instance AttrInfo WebWindowFeaturesHeightPropertyInfo where
    type AttrAllowedOps WebWindowFeaturesHeightPropertyInfo = '[ 'AttrSet, 'AttrConstruct, 'AttrGet]
    type AttrSetTypeConstraint WebWindowFeaturesHeightPropertyInfo = (~) Int32
    type AttrBaseTypeConstraint WebWindowFeaturesHeightPropertyInfo = IsWebWindowFeatures
    type AttrGetType WebWindowFeaturesHeightPropertyInfo = Int32
    type AttrLabel WebWindowFeaturesHeightPropertyInfo = "height"
    type AttrOrigin WebWindowFeaturesHeightPropertyInfo = WebWindowFeatures
    attrGet _ = getWebWindowFeaturesHeight
    attrSet _ = setWebWindowFeaturesHeight
    attrConstruct _ = constructWebWindowFeaturesHeight
    attrClear _ = undefined

-- VVV Prop "locationbar-visible"
   -- Type: TBasicType TBoolean
   -- Flags: [PropertyReadable,PropertyWritable,PropertyConstruct]
   -- Nullable: (Nothing,Nothing)

getWebWindowFeaturesLocationbarVisible :: (MonadIO m, IsWebWindowFeatures o) => o -> m Bool
getWebWindowFeaturesLocationbarVisible obj = liftIO $ getObjectPropertyBool obj "locationbar-visible"

setWebWindowFeaturesLocationbarVisible :: (MonadIO m, IsWebWindowFeatures o) => o -> Bool -> m ()
setWebWindowFeaturesLocationbarVisible obj val = liftIO $ setObjectPropertyBool obj "locationbar-visible" val

constructWebWindowFeaturesLocationbarVisible :: (IsWebWindowFeatures o) => Bool -> IO (GValueConstruct o)
constructWebWindowFeaturesLocationbarVisible val = constructObjectPropertyBool "locationbar-visible" val

data WebWindowFeaturesLocationbarVisiblePropertyInfo
instance AttrInfo WebWindowFeaturesLocationbarVisiblePropertyInfo where
    type AttrAllowedOps WebWindowFeaturesLocationbarVisiblePropertyInfo = '[ 'AttrSet, 'AttrConstruct, 'AttrGet]
    type AttrSetTypeConstraint WebWindowFeaturesLocationbarVisiblePropertyInfo = (~) Bool
    type AttrBaseTypeConstraint WebWindowFeaturesLocationbarVisiblePropertyInfo = IsWebWindowFeatures
    type AttrGetType WebWindowFeaturesLocationbarVisiblePropertyInfo = Bool
    type AttrLabel WebWindowFeaturesLocationbarVisiblePropertyInfo = "locationbar-visible"
    type AttrOrigin WebWindowFeaturesLocationbarVisiblePropertyInfo = WebWindowFeatures
    attrGet _ = getWebWindowFeaturesLocationbarVisible
    attrSet _ = setWebWindowFeaturesLocationbarVisible
    attrConstruct _ = constructWebWindowFeaturesLocationbarVisible
    attrClear _ = undefined

-- VVV Prop "menubar-visible"
   -- Type: TBasicType TBoolean
   -- Flags: [PropertyReadable,PropertyWritable,PropertyConstruct]
   -- Nullable: (Nothing,Nothing)

getWebWindowFeaturesMenubarVisible :: (MonadIO m, IsWebWindowFeatures o) => o -> m Bool
getWebWindowFeaturesMenubarVisible obj = liftIO $ getObjectPropertyBool obj "menubar-visible"

setWebWindowFeaturesMenubarVisible :: (MonadIO m, IsWebWindowFeatures o) => o -> Bool -> m ()
setWebWindowFeaturesMenubarVisible obj val = liftIO $ setObjectPropertyBool obj "menubar-visible" val

constructWebWindowFeaturesMenubarVisible :: (IsWebWindowFeatures o) => Bool -> IO (GValueConstruct o)
constructWebWindowFeaturesMenubarVisible val = constructObjectPropertyBool "menubar-visible" val

data WebWindowFeaturesMenubarVisiblePropertyInfo
instance AttrInfo WebWindowFeaturesMenubarVisiblePropertyInfo where
    type AttrAllowedOps WebWindowFeaturesMenubarVisiblePropertyInfo = '[ 'AttrSet, 'AttrConstruct, 'AttrGet]
    type AttrSetTypeConstraint WebWindowFeaturesMenubarVisiblePropertyInfo = (~) Bool
    type AttrBaseTypeConstraint WebWindowFeaturesMenubarVisiblePropertyInfo = IsWebWindowFeatures
    type AttrGetType WebWindowFeaturesMenubarVisiblePropertyInfo = Bool
    type AttrLabel WebWindowFeaturesMenubarVisiblePropertyInfo = "menubar-visible"
    type AttrOrigin WebWindowFeaturesMenubarVisiblePropertyInfo = WebWindowFeatures
    attrGet _ = getWebWindowFeaturesMenubarVisible
    attrSet _ = setWebWindowFeaturesMenubarVisible
    attrConstruct _ = constructWebWindowFeaturesMenubarVisible
    attrClear _ = undefined

-- VVV Prop "scrollbar-visible"
   -- Type: TBasicType TBoolean
   -- Flags: [PropertyReadable,PropertyWritable,PropertyConstruct]
   -- Nullable: (Nothing,Nothing)

getWebWindowFeaturesScrollbarVisible :: (MonadIO m, IsWebWindowFeatures o) => o -> m Bool
getWebWindowFeaturesScrollbarVisible obj = liftIO $ getObjectPropertyBool obj "scrollbar-visible"

setWebWindowFeaturesScrollbarVisible :: (MonadIO m, IsWebWindowFeatures o) => o -> Bool -> m ()
setWebWindowFeaturesScrollbarVisible obj val = liftIO $ setObjectPropertyBool obj "scrollbar-visible" val

constructWebWindowFeaturesScrollbarVisible :: (IsWebWindowFeatures o) => Bool -> IO (GValueConstruct o)
constructWebWindowFeaturesScrollbarVisible val = constructObjectPropertyBool "scrollbar-visible" val

data WebWindowFeaturesScrollbarVisiblePropertyInfo
instance AttrInfo WebWindowFeaturesScrollbarVisiblePropertyInfo where
    type AttrAllowedOps WebWindowFeaturesScrollbarVisiblePropertyInfo = '[ 'AttrSet, 'AttrConstruct, 'AttrGet]
    type AttrSetTypeConstraint WebWindowFeaturesScrollbarVisiblePropertyInfo = (~) Bool
    type AttrBaseTypeConstraint WebWindowFeaturesScrollbarVisiblePropertyInfo = IsWebWindowFeatures
    type AttrGetType WebWindowFeaturesScrollbarVisiblePropertyInfo = Bool
    type AttrLabel WebWindowFeaturesScrollbarVisiblePropertyInfo = "scrollbar-visible"
    type AttrOrigin WebWindowFeaturesScrollbarVisiblePropertyInfo = WebWindowFeatures
    attrGet _ = getWebWindowFeaturesScrollbarVisible
    attrSet _ = setWebWindowFeaturesScrollbarVisible
    attrConstruct _ = constructWebWindowFeaturesScrollbarVisible
    attrClear _ = undefined

-- VVV Prop "statusbar-visible"
   -- Type: TBasicType TBoolean
   -- Flags: [PropertyReadable,PropertyWritable,PropertyConstruct]
   -- Nullable: (Nothing,Nothing)

getWebWindowFeaturesStatusbarVisible :: (MonadIO m, IsWebWindowFeatures o) => o -> m Bool
getWebWindowFeaturesStatusbarVisible obj = liftIO $ getObjectPropertyBool obj "statusbar-visible"

setWebWindowFeaturesStatusbarVisible :: (MonadIO m, IsWebWindowFeatures o) => o -> Bool -> m ()
setWebWindowFeaturesStatusbarVisible obj val = liftIO $ setObjectPropertyBool obj "statusbar-visible" val

constructWebWindowFeaturesStatusbarVisible :: (IsWebWindowFeatures o) => Bool -> IO (GValueConstruct o)
constructWebWindowFeaturesStatusbarVisible val = constructObjectPropertyBool "statusbar-visible" val

data WebWindowFeaturesStatusbarVisiblePropertyInfo
instance AttrInfo WebWindowFeaturesStatusbarVisiblePropertyInfo where
    type AttrAllowedOps WebWindowFeaturesStatusbarVisiblePropertyInfo = '[ 'AttrSet, 'AttrConstruct, 'AttrGet]
    type AttrSetTypeConstraint WebWindowFeaturesStatusbarVisiblePropertyInfo = (~) Bool
    type AttrBaseTypeConstraint WebWindowFeaturesStatusbarVisiblePropertyInfo = IsWebWindowFeatures
    type AttrGetType WebWindowFeaturesStatusbarVisiblePropertyInfo = Bool
    type AttrLabel WebWindowFeaturesStatusbarVisiblePropertyInfo = "statusbar-visible"
    type AttrOrigin WebWindowFeaturesStatusbarVisiblePropertyInfo = WebWindowFeatures
    attrGet _ = getWebWindowFeaturesStatusbarVisible
    attrSet _ = setWebWindowFeaturesStatusbarVisible
    attrConstruct _ = constructWebWindowFeaturesStatusbarVisible
    attrClear _ = undefined

-- VVV Prop "toolbar-visible"
   -- Type: TBasicType TBoolean
   -- Flags: [PropertyReadable,PropertyWritable,PropertyConstruct]
   -- Nullable: (Nothing,Nothing)

getWebWindowFeaturesToolbarVisible :: (MonadIO m, IsWebWindowFeatures o) => o -> m Bool
getWebWindowFeaturesToolbarVisible obj = liftIO $ getObjectPropertyBool obj "toolbar-visible"

setWebWindowFeaturesToolbarVisible :: (MonadIO m, IsWebWindowFeatures o) => o -> Bool -> m ()
setWebWindowFeaturesToolbarVisible obj val = liftIO $ setObjectPropertyBool obj "toolbar-visible" val

constructWebWindowFeaturesToolbarVisible :: (IsWebWindowFeatures o) => Bool -> IO (GValueConstruct o)
constructWebWindowFeaturesToolbarVisible val = constructObjectPropertyBool "toolbar-visible" val

data WebWindowFeaturesToolbarVisiblePropertyInfo
instance AttrInfo WebWindowFeaturesToolbarVisiblePropertyInfo where
    type AttrAllowedOps WebWindowFeaturesToolbarVisiblePropertyInfo = '[ 'AttrSet, 'AttrConstruct, 'AttrGet]
    type AttrSetTypeConstraint WebWindowFeaturesToolbarVisiblePropertyInfo = (~) Bool
    type AttrBaseTypeConstraint WebWindowFeaturesToolbarVisiblePropertyInfo = IsWebWindowFeatures
    type AttrGetType WebWindowFeaturesToolbarVisiblePropertyInfo = Bool
    type AttrLabel WebWindowFeaturesToolbarVisiblePropertyInfo = "toolbar-visible"
    type AttrOrigin WebWindowFeaturesToolbarVisiblePropertyInfo = WebWindowFeatures
    attrGet _ = getWebWindowFeaturesToolbarVisible
    attrSet _ = setWebWindowFeaturesToolbarVisible
    attrConstruct _ = constructWebWindowFeaturesToolbarVisible
    attrClear _ = undefined

-- VVV Prop "width"
   -- Type: TBasicType TInt
   -- Flags: [PropertyReadable,PropertyWritable,PropertyConstruct]
   -- Nullable: (Nothing,Nothing)

getWebWindowFeaturesWidth :: (MonadIO m, IsWebWindowFeatures o) => o -> m Int32
getWebWindowFeaturesWidth obj = liftIO $ getObjectPropertyInt32 obj "width"

setWebWindowFeaturesWidth :: (MonadIO m, IsWebWindowFeatures o) => o -> Int32 -> m ()
setWebWindowFeaturesWidth obj val = liftIO $ setObjectPropertyInt32 obj "width" val

constructWebWindowFeaturesWidth :: (IsWebWindowFeatures o) => Int32 -> IO (GValueConstruct o)
constructWebWindowFeaturesWidth val = constructObjectPropertyInt32 "width" val

data WebWindowFeaturesWidthPropertyInfo
instance AttrInfo WebWindowFeaturesWidthPropertyInfo where
    type AttrAllowedOps WebWindowFeaturesWidthPropertyInfo = '[ 'AttrSet, 'AttrConstruct, 'AttrGet]
    type AttrSetTypeConstraint WebWindowFeaturesWidthPropertyInfo = (~) Int32
    type AttrBaseTypeConstraint WebWindowFeaturesWidthPropertyInfo = IsWebWindowFeatures
    type AttrGetType WebWindowFeaturesWidthPropertyInfo = Int32
    type AttrLabel WebWindowFeaturesWidthPropertyInfo = "width"
    type AttrOrigin WebWindowFeaturesWidthPropertyInfo = WebWindowFeatures
    attrGet _ = getWebWindowFeaturesWidth
    attrSet _ = setWebWindowFeaturesWidth
    attrConstruct _ = constructWebWindowFeaturesWidth
    attrClear _ = undefined

-- VVV Prop "x"
   -- Type: TBasicType TInt
   -- Flags: [PropertyReadable,PropertyWritable,PropertyConstruct]
   -- Nullable: (Nothing,Nothing)

getWebWindowFeaturesX :: (MonadIO m, IsWebWindowFeatures o) => o -> m Int32
getWebWindowFeaturesX obj = liftIO $ getObjectPropertyInt32 obj "x"

setWebWindowFeaturesX :: (MonadIO m, IsWebWindowFeatures o) => o -> Int32 -> m ()
setWebWindowFeaturesX obj val = liftIO $ setObjectPropertyInt32 obj "x" val

constructWebWindowFeaturesX :: (IsWebWindowFeatures o) => Int32 -> IO (GValueConstruct o)
constructWebWindowFeaturesX val = constructObjectPropertyInt32 "x" val

data WebWindowFeaturesXPropertyInfo
instance AttrInfo WebWindowFeaturesXPropertyInfo where
    type AttrAllowedOps WebWindowFeaturesXPropertyInfo = '[ 'AttrSet, 'AttrConstruct, 'AttrGet]
    type AttrSetTypeConstraint WebWindowFeaturesXPropertyInfo = (~) Int32
    type AttrBaseTypeConstraint WebWindowFeaturesXPropertyInfo = IsWebWindowFeatures
    type AttrGetType WebWindowFeaturesXPropertyInfo = Int32
    type AttrLabel WebWindowFeaturesXPropertyInfo = "x"
    type AttrOrigin WebWindowFeaturesXPropertyInfo = WebWindowFeatures
    attrGet _ = getWebWindowFeaturesX
    attrSet _ = setWebWindowFeaturesX
    attrConstruct _ = constructWebWindowFeaturesX
    attrClear _ = undefined

-- VVV Prop "y"
   -- Type: TBasicType TInt
   -- Flags: [PropertyReadable,PropertyWritable,PropertyConstruct]
   -- Nullable: (Nothing,Nothing)

getWebWindowFeaturesY :: (MonadIO m, IsWebWindowFeatures o) => o -> m Int32
getWebWindowFeaturesY obj = liftIO $ getObjectPropertyInt32 obj "y"

setWebWindowFeaturesY :: (MonadIO m, IsWebWindowFeatures o) => o -> Int32 -> m ()
setWebWindowFeaturesY obj val = liftIO $ setObjectPropertyInt32 obj "y" val

constructWebWindowFeaturesY :: (IsWebWindowFeatures o) => Int32 -> IO (GValueConstruct o)
constructWebWindowFeaturesY val = constructObjectPropertyInt32 "y" val

data WebWindowFeaturesYPropertyInfo
instance AttrInfo WebWindowFeaturesYPropertyInfo where
    type AttrAllowedOps WebWindowFeaturesYPropertyInfo = '[ 'AttrSet, 'AttrConstruct, 'AttrGet]
    type AttrSetTypeConstraint WebWindowFeaturesYPropertyInfo = (~) Int32
    type AttrBaseTypeConstraint WebWindowFeaturesYPropertyInfo = IsWebWindowFeatures
    type AttrGetType WebWindowFeaturesYPropertyInfo = Int32
    type AttrLabel WebWindowFeaturesYPropertyInfo = "y"
    type AttrOrigin WebWindowFeaturesYPropertyInfo = WebWindowFeatures
    attrGet _ = getWebWindowFeaturesY
    attrSet _ = setWebWindowFeaturesY
    attrConstruct _ = constructWebWindowFeaturesY
    attrClear _ = undefined

instance O.HasAttributeList WebWindowFeatures
type instance O.AttributeList WebWindowFeatures = WebWindowFeaturesAttributeList
type WebWindowFeaturesAttributeList = ('[ '("fullscreen", WebWindowFeaturesFullscreenPropertyInfo), '("height", WebWindowFeaturesHeightPropertyInfo), '("locationbarVisible", WebWindowFeaturesLocationbarVisiblePropertyInfo), '("menubarVisible", WebWindowFeaturesMenubarVisiblePropertyInfo), '("scrollbarVisible", WebWindowFeaturesScrollbarVisiblePropertyInfo), '("statusbarVisible", WebWindowFeaturesStatusbarVisiblePropertyInfo), '("toolbarVisible", WebWindowFeaturesToolbarVisiblePropertyInfo), '("width", WebWindowFeaturesWidthPropertyInfo), '("x", WebWindowFeaturesXPropertyInfo), '("y", WebWindowFeaturesYPropertyInfo)] :: [(Symbol, *)])

webWindowFeaturesFullscreen :: AttrLabelProxy "fullscreen"
webWindowFeaturesFullscreen = AttrLabelProxy

webWindowFeaturesHeight :: AttrLabelProxy "height"
webWindowFeaturesHeight = AttrLabelProxy

webWindowFeaturesLocationbarVisible :: AttrLabelProxy "locationbarVisible"
webWindowFeaturesLocationbarVisible = AttrLabelProxy

webWindowFeaturesMenubarVisible :: AttrLabelProxy "menubarVisible"
webWindowFeaturesMenubarVisible = AttrLabelProxy

webWindowFeaturesScrollbarVisible :: AttrLabelProxy "scrollbarVisible"
webWindowFeaturesScrollbarVisible = AttrLabelProxy

webWindowFeaturesStatusbarVisible :: AttrLabelProxy "statusbarVisible"
webWindowFeaturesStatusbarVisible = AttrLabelProxy

webWindowFeaturesToolbarVisible :: AttrLabelProxy "toolbarVisible"
webWindowFeaturesToolbarVisible = AttrLabelProxy

webWindowFeaturesWidth :: AttrLabelProxy "width"
webWindowFeaturesWidth = AttrLabelProxy

webWindowFeaturesX :: AttrLabelProxy "x"
webWindowFeaturesX = AttrLabelProxy

webWindowFeaturesY :: AttrLabelProxy "y"
webWindowFeaturesY = AttrLabelProxy

type instance O.SignalList WebWindowFeatures = WebWindowFeaturesSignalList
type WebWindowFeaturesSignalList = ('[ '("notify", GObject.Object.ObjectNotifySignalInfo)] :: [(Symbol, *)])

-- method WebWindowFeatures::new
-- method type : Constructor
-- Args : []
-- Lengths : []
-- returnType : Just (TInterface (Name {namespace = "WebKit", name = "WebWindowFeatures"}))
-- throws : False
-- Skip return : False

foreign import ccall "webkit_web_window_features_new" webkit_web_window_features_new :: 
    IO (Ptr WebWindowFeatures)

{- |
Creates a new 'GI.WebKit.Objects.WebWindowFeatures.WebWindowFeatures' instance with default values. It must
be manually attached to a WebView.

@since 1.0.3
-}
webWindowFeaturesNew ::
    (B.CallStack.HasCallStack, MonadIO m) =>
    m WebWindowFeatures
    {- ^ __Returns:__ a new 'GI.WebKit.Objects.WebWindowFeatures.WebWindowFeatures' instance -}
webWindowFeaturesNew  = liftIO $ do
    result <- webkit_web_window_features_new
    checkUnexpectedReturnNULL "webWindowFeaturesNew" result
    result' <- (wrapObject WebWindowFeatures) result
    return result'

-- method WebWindowFeatures::equal
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "features1", argType = TInterface (Name {namespace = "WebKit", name = "WebWindowFeatures"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #WebKitWebWindowFeatures instance", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "features2", argType = TInterface (Name {namespace = "WebKit", name = "WebWindowFeatures"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "another #WebKitWebWindowFeatures instance", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Just (TBasicType TBoolean)
-- throws : False
-- Skip return : False

foreign import ccall "webkit_web_window_features_equal" webkit_web_window_features_equal :: 
    Ptr WebWindowFeatures ->                -- features1 : TInterface (Name {namespace = "WebKit", name = "WebWindowFeatures"})
    Ptr WebWindowFeatures ->                -- features2 : TInterface (Name {namespace = "WebKit", name = "WebWindowFeatures"})
    IO CInt

{- |
Decides if a 'GI.WebKit.Objects.WebWindowFeatures.WebWindowFeatures' instance equals another, as
in has the same values.

@since 1.0.3
-}
webWindowFeaturesEqual ::
    (B.CallStack.HasCallStack, MonadIO m, IsWebWindowFeatures a, IsWebWindowFeatures b) =>
    a
    {- ^ /@features1@/: a 'GI.WebKit.Objects.WebWindowFeatures.WebWindowFeatures' instance -}
    -> b
    {- ^ /@features2@/: another 'GI.WebKit.Objects.WebWindowFeatures.WebWindowFeatures' instance -}
    -> m Bool
    {- ^ __Returns:__ 'True' if the instances have the same values, 'False'
otherwise -}
webWindowFeaturesEqual features1 features2 = liftIO $ do
    features1' <- unsafeManagedPtrCastPtr features1
    features2' <- unsafeManagedPtrCastPtr features2
    result <- webkit_web_window_features_equal features1' features2'
    let result' = (/= 0) result
    touchManagedPtr features1
    touchManagedPtr features2
    return result'

data WebWindowFeaturesEqualMethodInfo
instance (signature ~ (b -> m Bool), MonadIO m, IsWebWindowFeatures a, IsWebWindowFeatures b) => O.MethodInfo WebWindowFeaturesEqualMethodInfo a signature where
    overloadedMethod _ = webWindowFeaturesEqual