{- |
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.ScriptDialog
    (

-- * Exported types
    ScriptDialog(..)                        ,
    noScriptDialog                          ,


 -- * Methods
-- ** close #method:close#

#if ENABLE_OVERLOADING
    ScriptDialogCloseMethodInfo             ,
#endif
    scriptDialogClose                       ,


-- ** confirmSetConfirmed #method:confirmSetConfirmed#

#if ENABLE_OVERLOADING
    ScriptDialogConfirmSetConfirmedMethodInfo,
#endif
    scriptDialogConfirmSetConfirmed         ,


-- ** getDialogType #method:getDialogType#

#if ENABLE_OVERLOADING
    ScriptDialogGetDialogTypeMethodInfo     ,
#endif
    scriptDialogGetDialogType               ,


-- ** getMessage #method:getMessage#

#if ENABLE_OVERLOADING
    ScriptDialogGetMessageMethodInfo        ,
#endif
    scriptDialogGetMessage                  ,


-- ** promptGetDefaultText #method:promptGetDefaultText#

#if ENABLE_OVERLOADING
    ScriptDialogPromptGetDefaultTextMethodInfo,
#endif
    scriptDialogPromptGetDefaultText        ,


-- ** promptSetText #method:promptSetText#

#if ENABLE_OVERLOADING
    ScriptDialogPromptSetTextMethodInfo     ,
#endif
    scriptDialogPromptSetText               ,


-- ** ref #method:ref#

#if ENABLE_OVERLOADING
    ScriptDialogRefMethodInfo               ,
#endif
    scriptDialogRef                         ,


-- ** unref #method:unref#

#if ENABLE_OVERLOADING
    ScriptDialogUnrefMethodInfo             ,
#endif
    scriptDialogUnref                       ,




    ) 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

import {-# SOURCE #-} qualified GI.WebKit2.Enums as WebKit2.Enums

-- | Memory-managed wrapper type.
newtype ScriptDialog = ScriptDialog (ManagedPtr ScriptDialog)
foreign import ccall "webkit_script_dialog_get_type" c_webkit_script_dialog_get_type ::
    IO GType

instance BoxedObject ScriptDialog where
    boxedType _ = c_webkit_script_dialog_get_type

-- | A convenience alias for `Nothing` :: `Maybe` `ScriptDialog`.
noScriptDialog :: Maybe ScriptDialog
noScriptDialog = Nothing


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

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

foreign import ccall "webkit_script_dialog_close" webkit_script_dialog_close ::
    Ptr ScriptDialog ->                     -- dialog : TInterface (Name {namespace = "WebKit2", name = "ScriptDialog"})
    IO ()

{- |
Close /@dialog@/. When handling a 'GI.WebKit2.Structs.ScriptDialog.ScriptDialog' asynchronously ('GI.WebKit2.Structs.ScriptDialog.scriptDialogRef'
was called in 'GI.WebKit2.Objects.WebView.WebView'::@/script-dialog/@ callback), this function needs to be called to notify
that we are done with the script dialog. The dialog will be closed on destruction if this function
hasn\'t been called before.

/Since: 2.24/
-}
scriptDialogClose ::
    (B.CallStack.HasCallStack, MonadIO m) =>
    ScriptDialog
    {- ^ /@dialog@/: a 'GI.WebKit2.Structs.ScriptDialog.ScriptDialog' -}
    -> m ()
scriptDialogClose dialog = liftIO $ do
    dialog' <- unsafeManagedPtrGetPtr dialog
    webkit_script_dialog_close dialog'
    touchManagedPtr dialog
    return ()

#if ENABLE_OVERLOADING
data ScriptDialogCloseMethodInfo
instance (signature ~ (m ()), MonadIO m) => O.MethodInfo ScriptDialogCloseMethodInfo ScriptDialog signature where
    overloadedMethod _ = scriptDialogClose

#endif

-- method ScriptDialog::confirm_set_confirmed
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "dialog", argType = TInterface (Name {namespace = "WebKit2", name = "ScriptDialog"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #WebKitScriptDialog", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "confirmed", argType = TBasicType TBoolean, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "whether user confirmed the dialog", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Nothing
-- throws : False
-- Skip return : False

foreign import ccall "webkit_script_dialog_confirm_set_confirmed" webkit_script_dialog_confirm_set_confirmed ::
    Ptr ScriptDialog ->                     -- dialog : TInterface (Name {namespace = "WebKit2", name = "ScriptDialog"})
    CInt ->                                 -- confirmed : TBasicType TBoolean
    IO ()

{- |
This method is used for 'GI.WebKit2.Enums.ScriptDialogTypeConfirm' and 'GI.WebKit2.Enums.ScriptDialogTypeBeforeUnloadConfirm' dialogs when
'GI.WebKit2.Objects.WebView.WebView'::@/script-dialog/@ signal is emitted to set whether the user
confirmed the dialog or not. The default implementation of 'GI.WebKit2.Objects.WebView.WebView'::@/script-dialog/@
signal sets 'True' when the OK or Stay buttons are clicked and 'False' otherwise.
It\'s an error to use this method with a 'GI.WebKit2.Structs.ScriptDialog.ScriptDialog' that is not of type
'GI.WebKit2.Enums.ScriptDialogTypeConfirm' or 'GI.WebKit2.Enums.ScriptDialogTypeBeforeUnloadConfirm'
-}
scriptDialogConfirmSetConfirmed ::
    (B.CallStack.HasCallStack, MonadIO m) =>
    ScriptDialog
    {- ^ /@dialog@/: a 'GI.WebKit2.Structs.ScriptDialog.ScriptDialog' -}
    -> Bool
    {- ^ /@confirmed@/: whether user confirmed the dialog -}
    -> m ()
scriptDialogConfirmSetConfirmed dialog confirmed = liftIO $ do
    dialog' <- unsafeManagedPtrGetPtr dialog
    let confirmed' = (fromIntegral . fromEnum) confirmed
    webkit_script_dialog_confirm_set_confirmed dialog' confirmed'
    touchManagedPtr dialog
    return ()

#if ENABLE_OVERLOADING
data ScriptDialogConfirmSetConfirmedMethodInfo
instance (signature ~ (Bool -> m ()), MonadIO m) => O.MethodInfo ScriptDialogConfirmSetConfirmedMethodInfo ScriptDialog signature where
    overloadedMethod _ = scriptDialogConfirmSetConfirmed

#endif

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

foreign import ccall "webkit_script_dialog_get_dialog_type" webkit_script_dialog_get_dialog_type ::
    Ptr ScriptDialog ->                     -- dialog : TInterface (Name {namespace = "WebKit2", name = "ScriptDialog"})
    IO CUInt

{- |
Get the dialog type of a 'GI.WebKit2.Structs.ScriptDialog.ScriptDialog'.
-}
scriptDialogGetDialogType ::
    (B.CallStack.HasCallStack, MonadIO m) =>
    ScriptDialog
    {- ^ /@dialog@/: a 'GI.WebKit2.Structs.ScriptDialog.ScriptDialog' -}
    -> m WebKit2.Enums.ScriptDialogType
    {- ^ __Returns:__ the 'GI.WebKit2.Enums.ScriptDialogType' of /@dialog@/ -}
scriptDialogGetDialogType dialog = liftIO $ do
    dialog' <- unsafeManagedPtrGetPtr dialog
    result <- webkit_script_dialog_get_dialog_type dialog'
    let result' = (toEnum . fromIntegral) result
    touchManagedPtr dialog
    return result'

#if ENABLE_OVERLOADING
data ScriptDialogGetDialogTypeMethodInfo
instance (signature ~ (m WebKit2.Enums.ScriptDialogType), MonadIO m) => O.MethodInfo ScriptDialogGetDialogTypeMethodInfo ScriptDialog signature where
    overloadedMethod _ = scriptDialogGetDialogType

#endif

-- method ScriptDialog::get_message
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "dialog", argType = TInterface (Name {namespace = "WebKit2", name = "ScriptDialog"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #WebKitScriptDialog", 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_script_dialog_get_message" webkit_script_dialog_get_message ::
    Ptr ScriptDialog ->                     -- dialog : TInterface (Name {namespace = "WebKit2", name = "ScriptDialog"})
    IO CString

{- |
Get the message of a 'GI.WebKit2.Structs.ScriptDialog.ScriptDialog'.
-}
scriptDialogGetMessage ::
    (B.CallStack.HasCallStack, MonadIO m) =>
    ScriptDialog
    {- ^ /@dialog@/: a 'GI.WebKit2.Structs.ScriptDialog.ScriptDialog' -}
    -> m T.Text
    {- ^ __Returns:__ the message of /@dialog@/. -}
scriptDialogGetMessage dialog = liftIO $ do
    dialog' <- unsafeManagedPtrGetPtr dialog
    result <- webkit_script_dialog_get_message dialog'
    checkUnexpectedReturnNULL "scriptDialogGetMessage" result
    result' <- cstringToText result
    touchManagedPtr dialog
    return result'

#if ENABLE_OVERLOADING
data ScriptDialogGetMessageMethodInfo
instance (signature ~ (m T.Text), MonadIO m) => O.MethodInfo ScriptDialogGetMessageMethodInfo ScriptDialog signature where
    overloadedMethod _ = scriptDialogGetMessage

#endif

-- method ScriptDialog::prompt_get_default_text
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "dialog", argType = TInterface (Name {namespace = "WebKit2", name = "ScriptDialog"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #WebKitScriptDialog", 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_script_dialog_prompt_get_default_text" webkit_script_dialog_prompt_get_default_text ::
    Ptr ScriptDialog ->                     -- dialog : TInterface (Name {namespace = "WebKit2", name = "ScriptDialog"})
    IO CString

{- |
Get the default text of a 'GI.WebKit2.Structs.ScriptDialog.ScriptDialog' of type 'GI.WebKit2.Enums.ScriptDialogTypePrompt'.
It\'s an error to use this method with a 'GI.WebKit2.Structs.ScriptDialog.ScriptDialog' that is not of type
'GI.WebKit2.Enums.ScriptDialogTypePrompt'.
-}
scriptDialogPromptGetDefaultText ::
    (B.CallStack.HasCallStack, MonadIO m) =>
    ScriptDialog
    {- ^ /@dialog@/: a 'GI.WebKit2.Structs.ScriptDialog.ScriptDialog' -}
    -> m T.Text
    {- ^ __Returns:__ the default text of /@dialog@/ -}
scriptDialogPromptGetDefaultText dialog = liftIO $ do
    dialog' <- unsafeManagedPtrGetPtr dialog
    result <- webkit_script_dialog_prompt_get_default_text dialog'
    checkUnexpectedReturnNULL "scriptDialogPromptGetDefaultText" result
    result' <- cstringToText result
    touchManagedPtr dialog
    return result'

#if ENABLE_OVERLOADING
data ScriptDialogPromptGetDefaultTextMethodInfo
instance (signature ~ (m T.Text), MonadIO m) => O.MethodInfo ScriptDialogPromptGetDefaultTextMethodInfo ScriptDialog signature where
    overloadedMethod _ = scriptDialogPromptGetDefaultText

#endif

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

foreign import ccall "webkit_script_dialog_prompt_set_text" webkit_script_dialog_prompt_set_text ::
    Ptr ScriptDialog ->                     -- dialog : TInterface (Name {namespace = "WebKit2", name = "ScriptDialog"})
    CString ->                              -- text : TBasicType TUTF8
    IO ()

{- |
This method is used for 'GI.WebKit2.Enums.ScriptDialogTypePrompt' dialogs when
'GI.WebKit2.Objects.WebView.WebView'::@/script-dialog/@ signal is emitted to set the text
entered by the user. The default implementation of 'GI.WebKit2.Objects.WebView.WebView'::@/script-dialog/@
signal sets the text of the entry form when OK button is clicked, otherwise 'Nothing' is set.
It\'s an error to use this method with a 'GI.WebKit2.Structs.ScriptDialog.ScriptDialog' that is not of type
'GI.WebKit2.Enums.ScriptDialogTypePrompt'.
-}
scriptDialogPromptSetText ::
    (B.CallStack.HasCallStack, MonadIO m) =>
    ScriptDialog
    {- ^ /@dialog@/: a 'GI.WebKit2.Structs.ScriptDialog.ScriptDialog' -}
    -> T.Text
    {- ^ /@text@/: the text to set -}
    -> m ()
scriptDialogPromptSetText dialog text = liftIO $ do
    dialog' <- unsafeManagedPtrGetPtr dialog
    text' <- textToCString text
    webkit_script_dialog_prompt_set_text dialog' text'
    touchManagedPtr dialog
    freeMem text'
    return ()

#if ENABLE_OVERLOADING
data ScriptDialogPromptSetTextMethodInfo
instance (signature ~ (T.Text -> m ()), MonadIO m) => O.MethodInfo ScriptDialogPromptSetTextMethodInfo ScriptDialog signature where
    overloadedMethod _ = scriptDialogPromptSetText

#endif

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

foreign import ccall "webkit_script_dialog_ref" webkit_script_dialog_ref ::
    Ptr ScriptDialog ->                     -- dialog : TInterface (Name {namespace = "WebKit2", name = "ScriptDialog"})
    IO (Ptr ScriptDialog)

{- |
Atomically increments the reference count of /@dialog@/ by one. This
function is MT-safe and may be called from any thread.

/Since: 2.24/
-}
scriptDialogRef ::
    (B.CallStack.HasCallStack, MonadIO m) =>
    ScriptDialog
    {- ^ /@dialog@/: a 'GI.WebKit2.Structs.ScriptDialog.ScriptDialog' -}
    -> m ScriptDialog
    {- ^ __Returns:__ The passed in 'GI.WebKit2.Structs.ScriptDialog.ScriptDialog' -}
scriptDialogRef dialog = liftIO $ do
    dialog' <- unsafeManagedPtrGetPtr dialog
    result <- webkit_script_dialog_ref dialog'
    checkUnexpectedReturnNULL "scriptDialogRef" result
    result' <- (wrapBoxed ScriptDialog) result
    touchManagedPtr dialog
    return result'

#if ENABLE_OVERLOADING
data ScriptDialogRefMethodInfo
instance (signature ~ (m ScriptDialog), MonadIO m) => O.MethodInfo ScriptDialogRefMethodInfo ScriptDialog signature where
    overloadedMethod _ = scriptDialogRef

#endif

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

foreign import ccall "webkit_script_dialog_unref" webkit_script_dialog_unref ::
    Ptr ScriptDialog ->                     -- dialog : TInterface (Name {namespace = "WebKit2", name = "ScriptDialog"})
    IO ()

{- |
Atomically decrements the reference count of /@dialog@/ by one. If the
reference count drops to 0, all memory allocated by the @/WebKitScriptdialog/@ is
released. This function is MT-safe and may be called from any
thread.

/Since: 2.24/
-}
scriptDialogUnref ::
    (B.CallStack.HasCallStack, MonadIO m) =>
    ScriptDialog
    {- ^ /@dialog@/: a 'GI.WebKit2.Structs.ScriptDialog.ScriptDialog' -}
    -> m ()
scriptDialogUnref dialog = liftIO $ do
    dialog' <- unsafeManagedPtrGetPtr dialog
    webkit_script_dialog_unref dialog'
    touchManagedPtr dialog
    return ()

#if ENABLE_OVERLOADING
data ScriptDialogUnrefMethodInfo
instance (signature ~ (m ()), MonadIO m) => O.MethodInfo ScriptDialogUnrefMethodInfo ScriptDialog signature where
    overloadedMethod _ = scriptDialogUnref

#endif

#if ENABLE_OVERLOADING
type family ResolveScriptDialogMethod (t :: Symbol) (o :: *) :: * where
    ResolveScriptDialogMethod "close" o = ScriptDialogCloseMethodInfo
    ResolveScriptDialogMethod "confirmSetConfirmed" o = ScriptDialogConfirmSetConfirmedMethodInfo
    ResolveScriptDialogMethod "promptGetDefaultText" o = ScriptDialogPromptGetDefaultTextMethodInfo
    ResolveScriptDialogMethod "promptSetText" o = ScriptDialogPromptSetTextMethodInfo
    ResolveScriptDialogMethod "ref" o = ScriptDialogRefMethodInfo
    ResolveScriptDialogMethod "unref" o = ScriptDialogUnrefMethodInfo
    ResolveScriptDialogMethod "getDialogType" o = ScriptDialogGetDialogTypeMethodInfo
    ResolveScriptDialogMethod "getMessage" o = ScriptDialogGetMessageMethodInfo
    ResolveScriptDialogMethod l o = O.MethodResolutionFailed l o

instance (info ~ ResolveScriptDialogMethod t ScriptDialog, O.MethodInfo info ScriptDialog p) => OL.IsLabel t (ScriptDialog -> 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