{- |
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.WebKit2.Objects.ColorChooserRequest
    ( 

-- * Exported types
    ColorChooserRequest(..)                 ,
    IsColorChooserRequest                   ,
    toColorChooserRequest                   ,
    noColorChooserRequest                   ,


 -- * Methods
-- ** cancel #method:cancel#
    ColorChooserRequestCancelMethodInfo     ,
    colorChooserRequestCancel               ,


-- ** finish #method:finish#
    ColorChooserRequestFinishMethodInfo     ,
    colorChooserRequestFinish               ,


-- ** getElementRectangle #method:getElementRectangle#
    ColorChooserRequestGetElementRectangleMethodInfo,
    colorChooserRequestGetElementRectangle  ,


-- ** getRgba #method:getRgba#
    ColorChooserRequestGetRgbaMethodInfo    ,
    colorChooserRequestGetRgba              ,


-- ** setRgba #method:setRgba#
    ColorChooserRequestSetRgbaMethodInfo    ,
    colorChooserRequestSetRgba              ,




 -- * Properties
-- ** rgba #attr:rgba#
    ColorChooserRequestRgbaPropertyInfo     ,
    colorChooserRequestRgba                 ,
    constructColorChooserRequestRgba        ,
    getColorChooserRequestRgba              ,
    setColorChooserRequestRgba              ,




 -- * Signals
-- ** finished #signal:finished#
    C_ColorChooserRequestFinishedCallback   ,
    ColorChooserRequestFinishedCallback     ,
    ColorChooserRequestFinishedSignalInfo   ,
    afterColorChooserRequestFinished        ,
    genClosure_ColorChooserRequestFinished  ,
    mk_ColorChooserRequestFinishedCallback  ,
    noColorChooserRequestFinishedCallback   ,
    onColorChooserRequestFinished           ,
    wrap_ColorChooserRequestFinishedCallback,




    ) 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 qualified GI.Gdk.Structs.RGBA as Gdk.RGBA
import qualified GI.Gdk.Structs.Rectangle as Gdk.Rectangle

newtype ColorChooserRequest = ColorChooserRequest (ManagedPtr ColorChooserRequest)
foreign import ccall "webkit_color_chooser_request_get_type"
    c_webkit_color_chooser_request_get_type :: IO GType

instance GObject ColorChooserRequest where
    gobjectType _ = c_webkit_color_chooser_request_get_type
    

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

toColorChooserRequest :: IsColorChooserRequest o => o -> IO ColorChooserRequest
toColorChooserRequest = unsafeCastTo ColorChooserRequest

noColorChooserRequest :: Maybe ColorChooserRequest
noColorChooserRequest = Nothing

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

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

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

-- signal ColorChooserRequest::finished
type ColorChooserRequestFinishedCallback =
    IO ()

noColorChooserRequestFinishedCallback :: Maybe ColorChooserRequestFinishedCallback
noColorChooserRequestFinishedCallback = Nothing

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

foreign import ccall "wrapper"
    mk_ColorChooserRequestFinishedCallback :: C_ColorChooserRequestFinishedCallback -> IO (FunPtr C_ColorChooserRequestFinishedCallback)

genClosure_ColorChooserRequestFinished :: ColorChooserRequestFinishedCallback -> IO Closure
genClosure_ColorChooserRequestFinished cb = do
    let cb' = wrap_ColorChooserRequestFinishedCallback cb
    mk_ColorChooserRequestFinishedCallback cb' >>= newCClosure


wrap_ColorChooserRequestFinishedCallback ::
    ColorChooserRequestFinishedCallback ->
    Ptr () ->
    Ptr () ->
    IO ()
wrap_ColorChooserRequestFinishedCallback _cb _ _ = do
    _cb 


onColorChooserRequestFinished :: (GObject a, MonadIO m) => a -> ColorChooserRequestFinishedCallback -> m SignalHandlerId
onColorChooserRequestFinished obj cb = liftIO $ connectColorChooserRequestFinished obj cb SignalConnectBefore
afterColorChooserRequestFinished :: (GObject a, MonadIO m) => a -> ColorChooserRequestFinishedCallback -> m SignalHandlerId
afterColorChooserRequestFinished obj cb = connectColorChooserRequestFinished obj cb SignalConnectAfter

connectColorChooserRequestFinished :: (GObject a, MonadIO m) =>
                                      a -> ColorChooserRequestFinishedCallback -> SignalConnectMode -> m SignalHandlerId
connectColorChooserRequestFinished obj cb after = liftIO $ do
    let cb' = wrap_ColorChooserRequestFinishedCallback cb
    cb'' <- mk_ColorChooserRequestFinishedCallback cb'
    connectSignalFunPtr obj "finished" cb'' after

-- VVV Prop "rgba"
   -- Type: TInterface (Name {namespace = "Gdk", name = "RGBA"})
   -- Flags: [PropertyReadable,PropertyWritable,PropertyConstruct]
   -- Nullable: (Nothing,Just False)

getColorChooserRequestRgba :: (MonadIO m, IsColorChooserRequest o) => o -> m (Maybe Gdk.RGBA.RGBA)
getColorChooserRequestRgba obj = liftIO $ getObjectPropertyBoxed obj "rgba" Gdk.RGBA.RGBA

setColorChooserRequestRgba :: (MonadIO m, IsColorChooserRequest o) => o -> Gdk.RGBA.RGBA -> m ()
setColorChooserRequestRgba obj val = liftIO $ setObjectPropertyBoxed obj "rgba" (Just val)

constructColorChooserRequestRgba :: (IsColorChooserRequest o) => Gdk.RGBA.RGBA -> IO (GValueConstruct o)
constructColorChooserRequestRgba val = constructObjectPropertyBoxed "rgba" (Just val)

data ColorChooserRequestRgbaPropertyInfo
instance AttrInfo ColorChooserRequestRgbaPropertyInfo where
    type AttrAllowedOps ColorChooserRequestRgbaPropertyInfo = '[ 'AttrSet, 'AttrConstruct, 'AttrGet]
    type AttrSetTypeConstraint ColorChooserRequestRgbaPropertyInfo = (~) Gdk.RGBA.RGBA
    type AttrBaseTypeConstraint ColorChooserRequestRgbaPropertyInfo = IsColorChooserRequest
    type AttrGetType ColorChooserRequestRgbaPropertyInfo = (Maybe Gdk.RGBA.RGBA)
    type AttrLabel ColorChooserRequestRgbaPropertyInfo = "rgba"
    type AttrOrigin ColorChooserRequestRgbaPropertyInfo = ColorChooserRequest
    attrGet _ = getColorChooserRequestRgba
    attrSet _ = setColorChooserRequestRgba
    attrConstruct _ = constructColorChooserRequestRgba
    attrClear _ = undefined

instance O.HasAttributeList ColorChooserRequest
type instance O.AttributeList ColorChooserRequest = ColorChooserRequestAttributeList
type ColorChooserRequestAttributeList = ('[ '("rgba", ColorChooserRequestRgbaPropertyInfo)] :: [(Symbol, *)])

colorChooserRequestRgba :: AttrLabelProxy "rgba"
colorChooserRequestRgba = AttrLabelProxy

data ColorChooserRequestFinishedSignalInfo
instance SignalInfo ColorChooserRequestFinishedSignalInfo where
    type HaskellCallbackType ColorChooserRequestFinishedSignalInfo = ColorChooserRequestFinishedCallback
    connectSignal _ = connectColorChooserRequestFinished

type instance O.SignalList ColorChooserRequest = ColorChooserRequestSignalList
type ColorChooserRequestSignalList = ('[ '("finished", ColorChooserRequestFinishedSignalInfo), '("notify", GObject.Object.ObjectNotifySignalInfo)] :: [(Symbol, *)])

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

foreign import ccall "webkit_color_chooser_request_cancel" webkit_color_chooser_request_cancel :: 
    Ptr ColorChooserRequest ->              -- request : TInterface (Name {namespace = "WebKit2", name = "ColorChooserRequest"})
    IO ()

{- |
Cancels /@request@/ and the input element changes to use the initial color
it has before the request started.
The signal 'GI.WebKit2.Objects.ColorChooserRequest.ColorChooserRequest'::@/finished/@
is emitted to notify that the request has finished.

@since 2.8
-}
colorChooserRequestCancel ::
    (B.CallStack.HasCallStack, MonadIO m, IsColorChooserRequest a) =>
    a
    {- ^ /@request@/: a 'GI.WebKit2.Objects.ColorChooserRequest.ColorChooserRequest' -}
    -> m ()
colorChooserRequestCancel request = liftIO $ do
    request' <- unsafeManagedPtrCastPtr request
    webkit_color_chooser_request_cancel request'
    touchManagedPtr request
    return ()

data ColorChooserRequestCancelMethodInfo
instance (signature ~ (m ()), MonadIO m, IsColorChooserRequest a) => O.MethodInfo ColorChooserRequestCancelMethodInfo a signature where
    overloadedMethod _ = colorChooserRequestCancel

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

foreign import ccall "webkit_color_chooser_request_finish" webkit_color_chooser_request_finish :: 
    Ptr ColorChooserRequest ->              -- request : TInterface (Name {namespace = "WebKit2", name = "ColorChooserRequest"})
    IO ()

{- |
Finishes /@request@/ and the input element keeps the current value of
'GI.WebKit2.Objects.ColorChooserRequest.ColorChooserRequest':@/rgba/@.
The signal 'GI.WebKit2.Objects.ColorChooserRequest.ColorChooserRequest'::@/finished/@
is emitted to notify that the request has finished.

@since 2.8
-}
colorChooserRequestFinish ::
    (B.CallStack.HasCallStack, MonadIO m, IsColorChooserRequest a) =>
    a
    {- ^ /@request@/: a 'GI.WebKit2.Objects.ColorChooserRequest.ColorChooserRequest' -}
    -> m ()
colorChooserRequestFinish request = liftIO $ do
    request' <- unsafeManagedPtrCastPtr request
    webkit_color_chooser_request_finish request'
    touchManagedPtr request
    return ()

data ColorChooserRequestFinishMethodInfo
instance (signature ~ (m ()), MonadIO m, IsColorChooserRequest a) => O.MethodInfo ColorChooserRequestFinishMethodInfo a signature where
    overloadedMethod _ = colorChooserRequestFinish

-- method ColorChooserRequest::get_element_rectangle
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "request", argType = TInterface (Name {namespace = "WebKit2", name = "ColorChooserRequest"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #WebKitColorChooserRequest", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "rect", argType = TInterface (Name {namespace = "Gdk", name = "Rectangle"}), direction = DirectionOut, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GdkRectangle to fill in with the element area", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = True, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Nothing
-- throws : False
-- Skip return : False

foreign import ccall "webkit_color_chooser_request_get_element_rectangle" webkit_color_chooser_request_get_element_rectangle :: 
    Ptr ColorChooserRequest ->              -- request : TInterface (Name {namespace = "WebKit2", name = "ColorChooserRequest"})
    Ptr Gdk.Rectangle.Rectangle ->          -- rect : TInterface (Name {namespace = "Gdk", name = "Rectangle"})
    IO ()

{- |
Gets the bounding box of the color input element.

@since 2.8
-}
colorChooserRequestGetElementRectangle ::
    (B.CallStack.HasCallStack, MonadIO m, IsColorChooserRequest a) =>
    a
    {- ^ /@request@/: a 'GI.WebKit2.Objects.ColorChooserRequest.ColorChooserRequest' -}
    -> m (Gdk.Rectangle.Rectangle)
colorChooserRequestGetElementRectangle request = liftIO $ do
    request' <- unsafeManagedPtrCastPtr request
    rect <- callocBoxedBytes 16 :: IO (Ptr Gdk.Rectangle.Rectangle)
    webkit_color_chooser_request_get_element_rectangle request' rect
    rect' <- (wrapBoxed Gdk.Rectangle.Rectangle) rect
    touchManagedPtr request
    return rect'

data ColorChooserRequestGetElementRectangleMethodInfo
instance (signature ~ (m (Gdk.Rectangle.Rectangle)), MonadIO m, IsColorChooserRequest a) => O.MethodInfo ColorChooserRequestGetElementRectangleMethodInfo a signature where
    overloadedMethod _ = colorChooserRequestGetElementRectangle

-- method ColorChooserRequest::get_rgba
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "request", argType = TInterface (Name {namespace = "WebKit2", name = "ColorChooserRequest"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #WebKitColorChooserRequest", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "rgba", argType = TInterface (Name {namespace = "Gdk", name = "RGBA"}), direction = DirectionOut, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GdkRGBA to fill in with the current color.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = True, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Nothing
-- throws : False
-- Skip return : False

foreign import ccall "webkit_color_chooser_request_get_rgba" webkit_color_chooser_request_get_rgba :: 
    Ptr ColorChooserRequest ->              -- request : TInterface (Name {namespace = "WebKit2", name = "ColorChooserRequest"})
    Ptr Gdk.RGBA.RGBA ->                    -- rgba : TInterface (Name {namespace = "Gdk", name = "RGBA"})
    IO ()

{- |
Gets the current 'GI.Gdk.Structs.RGBA.RGBA' color of /@request@/

@since 2.8
-}
colorChooserRequestGetRgba ::
    (B.CallStack.HasCallStack, MonadIO m, IsColorChooserRequest a) =>
    a
    {- ^ /@request@/: a 'GI.WebKit2.Objects.ColorChooserRequest.ColorChooserRequest' -}
    -> m (Gdk.RGBA.RGBA)
colorChooserRequestGetRgba request = liftIO $ do
    request' <- unsafeManagedPtrCastPtr request
    rgba <- callocBoxedBytes 32 :: IO (Ptr Gdk.RGBA.RGBA)
    webkit_color_chooser_request_get_rgba request' rgba
    rgba' <- (wrapBoxed Gdk.RGBA.RGBA) rgba
    touchManagedPtr request
    return rgba'

data ColorChooserRequestGetRgbaMethodInfo
instance (signature ~ (m (Gdk.RGBA.RGBA)), MonadIO m, IsColorChooserRequest a) => O.MethodInfo ColorChooserRequestGetRgbaMethodInfo a signature where
    overloadedMethod _ = colorChooserRequestGetRgba

-- method ColorChooserRequest::set_rgba
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "request", argType = TInterface (Name {namespace = "WebKit2", name = "ColorChooserRequest"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #WebKitFileChooserRequest", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "rgba", argType = TInterface (Name {namespace = "Gdk", name = "RGBA"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a pointer #GdkRGBA", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Nothing
-- throws : False
-- Skip return : False

foreign import ccall "webkit_color_chooser_request_set_rgba" webkit_color_chooser_request_set_rgba :: 
    Ptr ColorChooserRequest ->              -- request : TInterface (Name {namespace = "WebKit2", name = "ColorChooserRequest"})
    Ptr Gdk.RGBA.RGBA ->                    -- rgba : TInterface (Name {namespace = "Gdk", name = "RGBA"})
    IO ()

{- |
Sets the current 'GI.Gdk.Structs.RGBA.RGBA' color of /@request@/

@since 2.8
-}
colorChooserRequestSetRgba ::
    (B.CallStack.HasCallStack, MonadIO m, IsColorChooserRequest a) =>
    a
    {- ^ /@request@/: a 'GI.WebKit2.Objects.FileChooserRequest.FileChooserRequest' -}
    -> Gdk.RGBA.RGBA
    {- ^ /@rgba@/: a pointer 'GI.Gdk.Structs.RGBA.RGBA' -}
    -> m ()
colorChooserRequestSetRgba request rgba = liftIO $ do
    request' <- unsafeManagedPtrCastPtr request
    rgba' <- unsafeManagedPtrGetPtr rgba
    webkit_color_chooser_request_set_rgba request' rgba'
    touchManagedPtr request
    touchManagedPtr rgba
    return ()

data ColorChooserRequestSetRgbaMethodInfo
instance (signature ~ (Gdk.RGBA.RGBA -> m ()), MonadIO m, IsColorChooserRequest a) => O.MethodInfo ColorChooserRequestSetRgbaMethodInfo a signature where
    overloadedMethod _ = colorChooserRequestSetRgba