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

/No description available in the introspection data./
-}

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

module GI.WebKit2.Structs.OptionMenuItem
    (

-- * Exported types
    OptionMenuItem(..)                      ,
    noOptionMenuItem                        ,


 -- * Methods
-- ** copy #method:copy#

#if ENABLE_OVERLOADING
    OptionMenuItemCopyMethodInfo            ,
#endif
    optionMenuItemCopy                      ,


-- ** free #method:free#

#if ENABLE_OVERLOADING
    OptionMenuItemFreeMethodInfo            ,
#endif
    optionMenuItemFree                      ,


-- ** getLabel #method:getLabel#

#if ENABLE_OVERLOADING
    OptionMenuItemGetLabelMethodInfo        ,
#endif
    optionMenuItemGetLabel                  ,


-- ** getTooltip #method:getTooltip#

#if ENABLE_OVERLOADING
    OptionMenuItemGetTooltipMethodInfo      ,
#endif
    optionMenuItemGetTooltip                ,


-- ** isEnabled #method:isEnabled#

#if ENABLE_OVERLOADING
    OptionMenuItemIsEnabledMethodInfo       ,
#endif
    optionMenuItemIsEnabled                 ,


-- ** isGroupChild #method:isGroupChild#

#if ENABLE_OVERLOADING
    OptionMenuItemIsGroupChildMethodInfo    ,
#endif
    optionMenuItemIsGroupChild              ,


-- ** isGroupLabel #method:isGroupLabel#

#if ENABLE_OVERLOADING
    OptionMenuItemIsGroupLabelMethodInfo    ,
#endif
    optionMenuItemIsGroupLabel              ,


-- ** isSelected #method:isSelected#

#if ENABLE_OVERLOADING
    OptionMenuItemIsSelectedMethodInfo      ,
#endif
    optionMenuItemIsSelected                ,




    ) where

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

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


-- | Memory-managed wrapper type.
newtype OptionMenuItem = OptionMenuItem (ManagedPtr OptionMenuItem)
foreign import ccall "webkit_option_menu_item_get_type" c_webkit_option_menu_item_get_type ::
    IO GType

instance BoxedObject OptionMenuItem where
    boxedType _ = c_webkit_option_menu_item_get_type

-- | A convenience alias for `Nothing` :: `Maybe` `OptionMenuItem`.
noOptionMenuItem :: Maybe OptionMenuItem
noOptionMenuItem = Nothing


#if ENABLE_OVERLOADING
instance O.HasAttributeList OptionMenuItem
type instance O.AttributeList OptionMenuItem = OptionMenuItemAttributeList
type OptionMenuItemAttributeList = ('[ ] :: [(Symbol, *)])
#endif

-- method OptionMenuItem::copy
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "item", argType = TInterface (Name {namespace = "WebKit2", name = "OptionMenuItem"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #WebKitOptionMenuItem", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Just (TInterface (Name {namespace = "WebKit2", name = "OptionMenuItem"}))
-- throws : False
-- Skip return : False

foreign import ccall "webkit_option_menu_item_copy" webkit_option_menu_item_copy ::
    Ptr OptionMenuItem ->                   -- item : TInterface (Name {namespace = "WebKit2", name = "OptionMenuItem"})
    IO (Ptr OptionMenuItem)

{- |
Make a copy of the 'GI.WebKit2.Structs.OptionMenuItem.OptionMenuItem'.

/Since: 2.18/
-}
optionMenuItemCopy ::
    (B.CallStack.HasCallStack, MonadIO m) =>
    OptionMenuItem
    {- ^ /@item@/: a 'GI.WebKit2.Structs.OptionMenuItem.OptionMenuItem' -}
    -> m OptionMenuItem
    {- ^ __Returns:__ A copy of passed in 'GI.WebKit2.Structs.OptionMenuItem.OptionMenuItem' -}
optionMenuItemCopy item = liftIO $ do
    item' <- unsafeManagedPtrGetPtr item
    result <- webkit_option_menu_item_copy item'
    checkUnexpectedReturnNULL "optionMenuItemCopy" result
    result' <- (wrapBoxed OptionMenuItem) result
    touchManagedPtr item
    return result'

#if ENABLE_OVERLOADING
data OptionMenuItemCopyMethodInfo
instance (signature ~ (m OptionMenuItem), MonadIO m) => O.MethodInfo OptionMenuItemCopyMethodInfo OptionMenuItem signature where
    overloadedMethod _ = optionMenuItemCopy

#endif

-- method OptionMenuItem::free
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "item", argType = TInterface (Name {namespace = "WebKit2", name = "OptionMenuItem"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "A #WebKitOptionMenuItem", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Nothing
-- throws : False
-- Skip return : False

foreign import ccall "webkit_option_menu_item_free" webkit_option_menu_item_free ::
    Ptr OptionMenuItem ->                   -- item : TInterface (Name {namespace = "WebKit2", name = "OptionMenuItem"})
    IO ()

{- |
Free the 'GI.WebKit2.Structs.OptionMenuItem.OptionMenuItem'.

/Since: 2.18/
-}
optionMenuItemFree ::
    (B.CallStack.HasCallStack, MonadIO m) =>
    OptionMenuItem
    {- ^ /@item@/: A 'GI.WebKit2.Structs.OptionMenuItem.OptionMenuItem' -}
    -> m ()
optionMenuItemFree item = liftIO $ do
    item' <- unsafeManagedPtrGetPtr item
    webkit_option_menu_item_free item'
    touchManagedPtr item
    return ()

#if ENABLE_OVERLOADING
data OptionMenuItemFreeMethodInfo
instance (signature ~ (m ()), MonadIO m) => O.MethodInfo OptionMenuItemFreeMethodInfo OptionMenuItem signature where
    overloadedMethod _ = optionMenuItemFree

#endif

-- method OptionMenuItem::get_label
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "item", argType = TInterface (Name {namespace = "WebKit2", name = "OptionMenuItem"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #WebKitOptionMenuItem", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Just (TBasicType TUTF8)
-- throws : False
-- Skip return : False

foreign import ccall "webkit_option_menu_item_get_label" webkit_option_menu_item_get_label ::
    Ptr OptionMenuItem ->                   -- item : TInterface (Name {namespace = "WebKit2", name = "OptionMenuItem"})
    IO CString

{- |
Get the label of a 'GI.WebKit2.Structs.OptionMenuItem.OptionMenuItem'.

/Since: 2.18/
-}
optionMenuItemGetLabel ::
    (B.CallStack.HasCallStack, MonadIO m) =>
    OptionMenuItem
    {- ^ /@item@/: a 'GI.WebKit2.Structs.OptionMenuItem.OptionMenuItem' -}
    -> m T.Text
    {- ^ __Returns:__ The label of /@item@/. -}
optionMenuItemGetLabel item = liftIO $ do
    item' <- unsafeManagedPtrGetPtr item
    result <- webkit_option_menu_item_get_label item'
    checkUnexpectedReturnNULL "optionMenuItemGetLabel" result
    result' <- cstringToText result
    touchManagedPtr item
    return result'

#if ENABLE_OVERLOADING
data OptionMenuItemGetLabelMethodInfo
instance (signature ~ (m T.Text), MonadIO m) => O.MethodInfo OptionMenuItemGetLabelMethodInfo OptionMenuItem signature where
    overloadedMethod _ = optionMenuItemGetLabel

#endif

-- method OptionMenuItem::get_tooltip
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "item", argType = TInterface (Name {namespace = "WebKit2", name = "OptionMenuItem"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #WebKitOptionMenuItem", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Just (TBasicType TUTF8)
-- throws : False
-- Skip return : False

foreign import ccall "webkit_option_menu_item_get_tooltip" webkit_option_menu_item_get_tooltip ::
    Ptr OptionMenuItem ->                   -- item : TInterface (Name {namespace = "WebKit2", name = "OptionMenuItem"})
    IO CString

{- |
Get the tooltip of a 'GI.WebKit2.Structs.OptionMenuItem.OptionMenuItem'.

/Since: 2.18/
-}
optionMenuItemGetTooltip ::
    (B.CallStack.HasCallStack, MonadIO m) =>
    OptionMenuItem
    {- ^ /@item@/: a 'GI.WebKit2.Structs.OptionMenuItem.OptionMenuItem' -}
    -> m (Maybe T.Text)
    {- ^ __Returns:__ The tooltip of /@item@/, or 'Nothing'. -}
optionMenuItemGetTooltip item = liftIO $ do
    item' <- unsafeManagedPtrGetPtr item
    result <- webkit_option_menu_item_get_tooltip item'
    maybeResult <- convertIfNonNull result $ \result' -> do
        result'' <- cstringToText result'
        return result''
    touchManagedPtr item
    return maybeResult

#if ENABLE_OVERLOADING
data OptionMenuItemGetTooltipMethodInfo
instance (signature ~ (m (Maybe T.Text)), MonadIO m) => O.MethodInfo OptionMenuItemGetTooltipMethodInfo OptionMenuItem signature where
    overloadedMethod _ = optionMenuItemGetTooltip

#endif

-- method OptionMenuItem::is_enabled
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "item", argType = TInterface (Name {namespace = "WebKit2", name = "OptionMenuItem"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #WebKitOptionMenuItem", 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_option_menu_item_is_enabled" webkit_option_menu_item_is_enabled ::
    Ptr OptionMenuItem ->                   -- item : TInterface (Name {namespace = "WebKit2", name = "OptionMenuItem"})
    IO CInt

{- |
Whether a 'GI.WebKit2.Structs.OptionMenuItem.OptionMenuItem' is enabled.

/Since: 2.18/
-}
optionMenuItemIsEnabled ::
    (B.CallStack.HasCallStack, MonadIO m) =>
    OptionMenuItem
    {- ^ /@item@/: a 'GI.WebKit2.Structs.OptionMenuItem.OptionMenuItem' -}
    -> m Bool
    {- ^ __Returns:__ 'True' if the /@item@/ is enabled or 'False' otherwise. -}
optionMenuItemIsEnabled item = liftIO $ do
    item' <- unsafeManagedPtrGetPtr item
    result <- webkit_option_menu_item_is_enabled item'
    let result' = (/= 0) result
    touchManagedPtr item
    return result'

#if ENABLE_OVERLOADING
data OptionMenuItemIsEnabledMethodInfo
instance (signature ~ (m Bool), MonadIO m) => O.MethodInfo OptionMenuItemIsEnabledMethodInfo OptionMenuItem signature where
    overloadedMethod _ = optionMenuItemIsEnabled

#endif

-- method OptionMenuItem::is_group_child
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "item", argType = TInterface (Name {namespace = "WebKit2", name = "OptionMenuItem"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #WebKitOptionMenuItem", 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_option_menu_item_is_group_child" webkit_option_menu_item_is_group_child ::
    Ptr OptionMenuItem ->                   -- item : TInterface (Name {namespace = "WebKit2", name = "OptionMenuItem"})
    IO CInt

{- |
Whether a 'GI.WebKit2.Structs.OptionMenuItem.OptionMenuItem' is a group child.

/Since: 2.18/
-}
optionMenuItemIsGroupChild ::
    (B.CallStack.HasCallStack, MonadIO m) =>
    OptionMenuItem
    {- ^ /@item@/: a 'GI.WebKit2.Structs.OptionMenuItem.OptionMenuItem' -}
    -> m Bool
    {- ^ __Returns:__ 'True' if the /@item@/ is a group child or 'False' otherwise. -}
optionMenuItemIsGroupChild item = liftIO $ do
    item' <- unsafeManagedPtrGetPtr item
    result <- webkit_option_menu_item_is_group_child item'
    let result' = (/= 0) result
    touchManagedPtr item
    return result'

#if ENABLE_OVERLOADING
data OptionMenuItemIsGroupChildMethodInfo
instance (signature ~ (m Bool), MonadIO m) => O.MethodInfo OptionMenuItemIsGroupChildMethodInfo OptionMenuItem signature where
    overloadedMethod _ = optionMenuItemIsGroupChild

#endif

-- method OptionMenuItem::is_group_label
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "item", argType = TInterface (Name {namespace = "WebKit2", name = "OptionMenuItem"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #WebKitOptionMenuItem", 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_option_menu_item_is_group_label" webkit_option_menu_item_is_group_label ::
    Ptr OptionMenuItem ->                   -- item : TInterface (Name {namespace = "WebKit2", name = "OptionMenuItem"})
    IO CInt

{- |
Whether a 'GI.WebKit2.Structs.OptionMenuItem.OptionMenuItem' is a group label.

/Since: 2.18/
-}
optionMenuItemIsGroupLabel ::
    (B.CallStack.HasCallStack, MonadIO m) =>
    OptionMenuItem
    {- ^ /@item@/: a 'GI.WebKit2.Structs.OptionMenuItem.OptionMenuItem' -}
    -> m Bool
    {- ^ __Returns:__ 'True' if the /@item@/ is a group label or 'False' otherwise. -}
optionMenuItemIsGroupLabel item = liftIO $ do
    item' <- unsafeManagedPtrGetPtr item
    result <- webkit_option_menu_item_is_group_label item'
    let result' = (/= 0) result
    touchManagedPtr item
    return result'

#if ENABLE_OVERLOADING
data OptionMenuItemIsGroupLabelMethodInfo
instance (signature ~ (m Bool), MonadIO m) => O.MethodInfo OptionMenuItemIsGroupLabelMethodInfo OptionMenuItem signature where
    overloadedMethod _ = optionMenuItemIsGroupLabel

#endif

-- method OptionMenuItem::is_selected
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "item", argType = TInterface (Name {namespace = "WebKit2", name = "OptionMenuItem"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #WebKitOptionMenuItem", 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_option_menu_item_is_selected" webkit_option_menu_item_is_selected ::
    Ptr OptionMenuItem ->                   -- item : TInterface (Name {namespace = "WebKit2", name = "OptionMenuItem"})
    IO CInt

{- |
Whether a 'GI.WebKit2.Structs.OptionMenuItem.OptionMenuItem' is the currently selected one.

/Since: 2.18/
-}
optionMenuItemIsSelected ::
    (B.CallStack.HasCallStack, MonadIO m) =>
    OptionMenuItem
    {- ^ /@item@/: a 'GI.WebKit2.Structs.OptionMenuItem.OptionMenuItem' -}
    -> m Bool
    {- ^ __Returns:__ 'True' if the /@item@/ is selected or 'False' otherwise. -}
optionMenuItemIsSelected item = liftIO $ do
    item' <- unsafeManagedPtrGetPtr item
    result <- webkit_option_menu_item_is_selected item'
    let result' = (/= 0) result
    touchManagedPtr item
    return result'

#if ENABLE_OVERLOADING
data OptionMenuItemIsSelectedMethodInfo
instance (signature ~ (m Bool), MonadIO m) => O.MethodInfo OptionMenuItemIsSelectedMethodInfo OptionMenuItem signature where
    overloadedMethod _ = optionMenuItemIsSelected

#endif

#if ENABLE_OVERLOADING
type family ResolveOptionMenuItemMethod (t :: Symbol) (o :: *) :: * where
    ResolveOptionMenuItemMethod "copy" o = OptionMenuItemCopyMethodInfo
    ResolveOptionMenuItemMethod "free" o = OptionMenuItemFreeMethodInfo
    ResolveOptionMenuItemMethod "isEnabled" o = OptionMenuItemIsEnabledMethodInfo
    ResolveOptionMenuItemMethod "isGroupChild" o = OptionMenuItemIsGroupChildMethodInfo
    ResolveOptionMenuItemMethod "isGroupLabel" o = OptionMenuItemIsGroupLabelMethodInfo
    ResolveOptionMenuItemMethod "isSelected" o = OptionMenuItemIsSelectedMethodInfo
    ResolveOptionMenuItemMethod "getLabel" o = OptionMenuItemGetLabelMethodInfo
    ResolveOptionMenuItemMethod "getTooltip" o = OptionMenuItemGetTooltipMethodInfo
    ResolveOptionMenuItemMethod l o = O.MethodResolutionFailed l o

instance (info ~ ResolveOptionMenuItemMethod t OptionMenuItem, O.MethodInfo info OptionMenuItem p) => OL.IsLabel t (OptionMenuItem -> p) where
#if MIN_VERSION_base(4,10,0)
    fromLabel = O.overloadedMethod (O.MethodProxy :: O.MethodProxy info)
#else
    fromLabel _ = O.overloadedMethod (O.MethodProxy :: O.MethodProxy info)
#endif

#endif