{- |
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.WebKit.Objects.DOMBarProp
    ( 

-- * Exported types
    DOMBarProp(..)                          ,
    IsDOMBarProp                            ,
    toDOMBarProp                            ,
    noDOMBarProp                            ,


 -- * Methods
-- ** getVisible #method:getVisible#
    DOMBarPropGetVisibleMethodInfo          ,
    dOMBarPropGetVisible                    ,




 -- * Properties
-- ** visible #attr:visible#
    DOMBarPropVisiblePropertyInfo           ,
    dOMBarPropVisible                       ,
    getDOMBarPropVisible                    ,




    ) 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
import {-# SOURCE #-} qualified GI.WebKit.Objects.DOMObject as WebKit.DOMObject

newtype DOMBarProp = DOMBarProp (ManagedPtr DOMBarProp)
foreign import ccall "webkit_dom_bar_prop_get_type"
    c_webkit_dom_bar_prop_get_type :: IO GType

instance GObject DOMBarProp where
    gobjectType _ = c_webkit_dom_bar_prop_get_type
    

class GObject o => IsDOMBarProp o
#if MIN_VERSION_base(4,9,0)
instance {-# OVERLAPPABLE #-} (GObject a, O.UnknownAncestorError DOMBarProp a) =>
    IsDOMBarProp a
#endif
instance IsDOMBarProp DOMBarProp
instance WebKit.DOMObject.IsDOMObject DOMBarProp
instance GObject.Object.IsObject DOMBarProp

toDOMBarProp :: IsDOMBarProp o => o -> IO DOMBarProp
toDOMBarProp = unsafeCastTo DOMBarProp

noDOMBarProp :: Maybe DOMBarProp
noDOMBarProp = Nothing

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

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

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

-- VVV Prop "visible"
   -- Type: TBasicType TBoolean
   -- Flags: [PropertyReadable]
   -- Nullable: (Just False,Nothing)

getDOMBarPropVisible :: (MonadIO m, IsDOMBarProp o) => o -> m Bool
getDOMBarPropVisible obj = liftIO $ getObjectPropertyBool obj "visible"

data DOMBarPropVisiblePropertyInfo
instance AttrInfo DOMBarPropVisiblePropertyInfo where
    type AttrAllowedOps DOMBarPropVisiblePropertyInfo = '[ 'AttrGet]
    type AttrSetTypeConstraint DOMBarPropVisiblePropertyInfo = (~) ()
    type AttrBaseTypeConstraint DOMBarPropVisiblePropertyInfo = IsDOMBarProp
    type AttrGetType DOMBarPropVisiblePropertyInfo = Bool
    type AttrLabel DOMBarPropVisiblePropertyInfo = "visible"
    type AttrOrigin DOMBarPropVisiblePropertyInfo = DOMBarProp
    attrGet _ = getDOMBarPropVisible
    attrSet _ = undefined
    attrConstruct _ = undefined
    attrClear _ = undefined

instance O.HasAttributeList DOMBarProp
type instance O.AttributeList DOMBarProp = DOMBarPropAttributeList
type DOMBarPropAttributeList = ('[ '("coreObject", WebKit.DOMObject.DOMObjectCoreObjectPropertyInfo), '("visible", DOMBarPropVisiblePropertyInfo)] :: [(Symbol, *)])

dOMBarPropVisible :: AttrLabelProxy "visible"
dOMBarPropVisible = AttrLabelProxy

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

-- method DOMBarProp::get_visible
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "self", argType = TInterface (Name {namespace = "WebKit", name = "DOMBarProp"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "A #WebKitDOMBarProp", 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_dom_bar_prop_get_visible" webkit_dom_bar_prop_get_visible :: 
    Ptr DOMBarProp ->                       -- self : TInterface (Name {namespace = "WebKit", name = "DOMBarProp"})
    IO CInt

{- |
/No description available in the introspection data./
-}
dOMBarPropGetVisible ::
    (B.CallStack.HasCallStack, MonadIO m, IsDOMBarProp a) =>
    a
    {- ^ /@self@/: A 'GI.WebKit.Objects.DOMBarProp.DOMBarProp' -}
    -> m Bool
    {- ^ __Returns:__ A 'Bool' -}
dOMBarPropGetVisible self = liftIO $ do
    self' <- unsafeManagedPtrCastPtr self
    result <- webkit_dom_bar_prop_get_visible self'
    let result' = (/= 0) result
    touchManagedPtr self
    return result'

data DOMBarPropGetVisibleMethodInfo
instance (signature ~ (m Bool), MonadIO m, IsDOMBarProp a) => O.MethodInfo DOMBarPropGetVisibleMethodInfo a signature where
    overloadedMethod _ = dOMBarPropGetVisible