{-# LANGUAGE TypeApplications #-}


-- | Copyright  : Will Thompson and Iñaki García Etxebarria
-- License    : LGPL-2.1
-- Maintainer : Iñaki García Etxebarria
-- 
-- Opaque context structure for the plugin installation. Use the provided
-- API to set details on it.

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

module GI.GstPbutils.Structs.InstallPluginsContext
    ( 

-- * Exported types
    InstallPluginsContext(..)               ,


 -- * Methods
-- | 
-- 
--  === __Click to display all available methods, including inherited ones__
-- ==== Methods
-- [copy]("GI.GstPbutils.Structs.InstallPluginsContext#g:method:copy"), [free]("GI.GstPbutils.Structs.InstallPluginsContext#g:method:free").
-- 
-- ==== Getters
-- /None/.
-- 
-- ==== Setters
-- [setConfirmSearch]("GI.GstPbutils.Structs.InstallPluginsContext#g:method:setConfirmSearch"), [setDesktopId]("GI.GstPbutils.Structs.InstallPluginsContext#g:method:setDesktopId"), [setStartupNotificationId]("GI.GstPbutils.Structs.InstallPluginsContext#g:method:setStartupNotificationId"), [setXid]("GI.GstPbutils.Structs.InstallPluginsContext#g:method:setXid").

#if defined(ENABLE_OVERLOADING)
    ResolveInstallPluginsContextMethod      ,
#endif

-- ** copy #method:copy#

#if defined(ENABLE_OVERLOADING)
    InstallPluginsContextCopyMethodInfo     ,
#endif
    installPluginsContextCopy               ,


-- ** free #method:free#

#if defined(ENABLE_OVERLOADING)
    InstallPluginsContextFreeMethodInfo     ,
#endif
    installPluginsContextFree               ,


-- ** new #method:new#

    installPluginsContextNew                ,


-- ** setConfirmSearch #method:setConfirmSearch#

#if defined(ENABLE_OVERLOADING)
    InstallPluginsContextSetConfirmSearchMethodInfo,
#endif
    installPluginsContextSetConfirmSearch   ,


-- ** setDesktopId #method:setDesktopId#

#if defined(ENABLE_OVERLOADING)
    InstallPluginsContextSetDesktopIdMethodInfo,
#endif
    installPluginsContextSetDesktopId       ,


-- ** setStartupNotificationId #method:setStartupNotificationId#

#if defined(ENABLE_OVERLOADING)
    InstallPluginsContextSetStartupNotificationIdMethodInfo,
#endif
    installPluginsContextSetStartupNotificationId,


-- ** setXid #method:setXid#

#if defined(ENABLE_OVERLOADING)
    InstallPluginsContextSetXidMethodInfo   ,
#endif
    installPluginsContextSetXid             ,




    ) 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.BasicTypes as B.Types
import qualified Data.GI.Base.ManagedPtr as B.ManagedPtr
import qualified Data.GI.Base.GArray as B.GArray
import qualified Data.GI.Base.GClosure as B.GClosure
import qualified Data.GI.Base.GError as B.GError
import qualified Data.GI.Base.GHashTable as B.GHT
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.GI.Base.Signals as B.Signals
import qualified Control.Monad.IO.Class as MIO
import qualified Data.Coerce as Coerce
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 qualified GHC.Records as R


-- | Memory-managed wrapper type.
newtype InstallPluginsContext = InstallPluginsContext (SP.ManagedPtr InstallPluginsContext)
    deriving (InstallPluginsContext -> InstallPluginsContext -> Bool
(InstallPluginsContext -> InstallPluginsContext -> Bool)
-> (InstallPluginsContext -> InstallPluginsContext -> Bool)
-> Eq InstallPluginsContext
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: InstallPluginsContext -> InstallPluginsContext -> Bool
== :: InstallPluginsContext -> InstallPluginsContext -> Bool
$c/= :: InstallPluginsContext -> InstallPluginsContext -> Bool
/= :: InstallPluginsContext -> InstallPluginsContext -> Bool
Eq)

instance SP.ManagedPtrNewtype InstallPluginsContext where
    toManagedPtr :: InstallPluginsContext -> ManagedPtr InstallPluginsContext
toManagedPtr (InstallPluginsContext ManagedPtr InstallPluginsContext
p) = ManagedPtr InstallPluginsContext
p

foreign import ccall "gst_install_plugins_context_get_type" c_gst_install_plugins_context_get_type :: 
    IO GType

type instance O.ParentTypes InstallPluginsContext = '[]
instance O.HasParentTypes InstallPluginsContext

instance B.Types.TypedObject InstallPluginsContext where
    glibType :: IO GType
glibType = IO GType
c_gst_install_plugins_context_get_type

instance B.Types.GBoxed InstallPluginsContext

-- | Convert 'InstallPluginsContext' to and from 'Data.GI.Base.GValue.GValue'. See 'Data.GI.Base.GValue.toGValue' and 'Data.GI.Base.GValue.fromGValue'.
instance B.GValue.IsGValue (Maybe InstallPluginsContext) where
    gvalueGType_ :: IO GType
gvalueGType_ = IO GType
c_gst_install_plugins_context_get_type
    gvalueSet_ :: Ptr GValue -> Maybe InstallPluginsContext -> IO ()
gvalueSet_ Ptr GValue
gv Maybe InstallPluginsContext
P.Nothing = Ptr GValue -> Ptr InstallPluginsContext -> IO ()
forall a. Ptr GValue -> Ptr a -> IO ()
B.GValue.set_boxed Ptr GValue
gv (Ptr InstallPluginsContext
forall a. Ptr a
FP.nullPtr :: FP.Ptr InstallPluginsContext)
    gvalueSet_ Ptr GValue
gv (P.Just InstallPluginsContext
obj) = InstallPluginsContext
-> (Ptr InstallPluginsContext -> IO ()) -> IO ()
forall a c.
(HasCallStack, ManagedPtrNewtype a) =>
a -> (Ptr a -> IO c) -> IO c
B.ManagedPtr.withManagedPtr InstallPluginsContext
obj (Ptr GValue -> Ptr InstallPluginsContext -> IO ()
forall a. Ptr GValue -> Ptr a -> IO ()
B.GValue.set_boxed Ptr GValue
gv)
    gvalueGet_ :: Ptr GValue -> IO (Maybe InstallPluginsContext)
gvalueGet_ Ptr GValue
gv = do
        Ptr InstallPluginsContext
ptr <- Ptr GValue -> IO (Ptr InstallPluginsContext)
forall b. Ptr GValue -> IO (Ptr b)
B.GValue.get_boxed Ptr GValue
gv :: IO (Ptr InstallPluginsContext)
        if Ptr InstallPluginsContext
ptr Ptr InstallPluginsContext -> Ptr InstallPluginsContext -> Bool
forall a. Eq a => a -> a -> Bool
/= Ptr InstallPluginsContext
forall a. Ptr a
FP.nullPtr
        then InstallPluginsContext -> Maybe InstallPluginsContext
forall a. a -> Maybe a
P.Just (InstallPluginsContext -> Maybe InstallPluginsContext)
-> IO InstallPluginsContext -> IO (Maybe InstallPluginsContext)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> (ManagedPtr InstallPluginsContext -> InstallPluginsContext)
-> Ptr InstallPluginsContext -> IO InstallPluginsContext
forall a.
(HasCallStack, GBoxed a) =>
(ManagedPtr a -> a) -> Ptr a -> IO a
B.ManagedPtr.newBoxed ManagedPtr InstallPluginsContext -> InstallPluginsContext
InstallPluginsContext Ptr InstallPluginsContext
ptr
        else Maybe InstallPluginsContext -> IO (Maybe InstallPluginsContext)
forall a. a -> IO a
forall (m :: * -> *) a. Monad m => a -> m a
return Maybe InstallPluginsContext
forall a. Maybe a
P.Nothing
        
    


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

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

foreign import ccall "gst_install_plugins_context_new" gst_install_plugins_context_new :: 
    IO (Ptr InstallPluginsContext)

-- | Creates a new t'GI.GstPbutils.Structs.InstallPluginsContext.InstallPluginsContext'.
installPluginsContextNew ::
    (B.CallStack.HasCallStack, MonadIO m) =>
    m InstallPluginsContext
    -- ^ __Returns:__ a new t'GI.GstPbutils.Structs.InstallPluginsContext.InstallPluginsContext'. Free with
    -- 'GI.GstPbutils.Structs.InstallPluginsContext.installPluginsContextFree' when no longer needed
installPluginsContextNew :: forall (m :: * -> *).
(HasCallStack, MonadIO m) =>
m InstallPluginsContext
installPluginsContextNew  = IO InstallPluginsContext -> m InstallPluginsContext
forall a. IO a -> m a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO InstallPluginsContext -> m InstallPluginsContext)
-> IO InstallPluginsContext -> m InstallPluginsContext
forall a b. (a -> b) -> a -> b
$ do
    Ptr InstallPluginsContext
result <- IO (Ptr InstallPluginsContext)
gst_install_plugins_context_new
    Text -> Ptr InstallPluginsContext -> IO ()
forall a. HasCallStack => Text -> Ptr a -> IO ()
checkUnexpectedReturnNULL Text
"installPluginsContextNew" Ptr InstallPluginsContext
result
    InstallPluginsContext
result' <- ((ManagedPtr InstallPluginsContext -> InstallPluginsContext)
-> Ptr InstallPluginsContext -> IO InstallPluginsContext
forall a.
(HasCallStack, GBoxed a) =>
(ManagedPtr a -> a) -> Ptr a -> IO a
wrapBoxed ManagedPtr InstallPluginsContext -> InstallPluginsContext
InstallPluginsContext) Ptr InstallPluginsContext
result
    InstallPluginsContext -> IO InstallPluginsContext
forall a. a -> IO a
forall (m :: * -> *) a. Monad m => a -> m a
return InstallPluginsContext
result'

#if defined(ENABLE_OVERLOADING)
#endif

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

foreign import ccall "gst_install_plugins_context_copy" gst_install_plugins_context_copy :: 
    Ptr InstallPluginsContext ->            -- ctx : TInterface (Name {namespace = "GstPbutils", name = "InstallPluginsContext"})
    IO (Ptr InstallPluginsContext)

-- | Copies a t'GI.GstPbutils.Structs.InstallPluginsContext.InstallPluginsContext'.
-- 
-- /Since: 1.12.1/
installPluginsContextCopy ::
    (B.CallStack.HasCallStack, MonadIO m) =>
    InstallPluginsContext
    -- ^ /@ctx@/: a t'GI.GstPbutils.Structs.InstallPluginsContext.InstallPluginsContext'
    -> m InstallPluginsContext
    -- ^ __Returns:__ A copy of /@ctx@/
installPluginsContextCopy :: forall (m :: * -> *).
(HasCallStack, MonadIO m) =>
InstallPluginsContext -> m InstallPluginsContext
installPluginsContextCopy InstallPluginsContext
ctx = IO InstallPluginsContext -> m InstallPluginsContext
forall a. IO a -> m a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO InstallPluginsContext -> m InstallPluginsContext)
-> IO InstallPluginsContext -> m InstallPluginsContext
forall a b. (a -> b) -> a -> b
$ do
    Ptr InstallPluginsContext
ctx' <- InstallPluginsContext -> IO (Ptr InstallPluginsContext)
forall a. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr a)
unsafeManagedPtrGetPtr InstallPluginsContext
ctx
    Ptr InstallPluginsContext
result <- Ptr InstallPluginsContext -> IO (Ptr InstallPluginsContext)
gst_install_plugins_context_copy Ptr InstallPluginsContext
ctx'
    Text -> Ptr InstallPluginsContext -> IO ()
forall a. HasCallStack => Text -> Ptr a -> IO ()
checkUnexpectedReturnNULL Text
"installPluginsContextCopy" Ptr InstallPluginsContext
result
    InstallPluginsContext
result' <- ((ManagedPtr InstallPluginsContext -> InstallPluginsContext)
-> Ptr InstallPluginsContext -> IO InstallPluginsContext
forall a.
(HasCallStack, GBoxed a) =>
(ManagedPtr a -> a) -> Ptr a -> IO a
wrapBoxed ManagedPtr InstallPluginsContext -> InstallPluginsContext
InstallPluginsContext) Ptr InstallPluginsContext
result
    InstallPluginsContext -> IO ()
forall a. ManagedPtrNewtype a => a -> IO ()
touchManagedPtr InstallPluginsContext
ctx
    InstallPluginsContext -> IO InstallPluginsContext
forall a. a -> IO a
forall (m :: * -> *) a. Monad m => a -> m a
return InstallPluginsContext
result'

#if defined(ENABLE_OVERLOADING)
data InstallPluginsContextCopyMethodInfo
instance (signature ~ (m InstallPluginsContext), MonadIO m) => O.OverloadedMethod InstallPluginsContextCopyMethodInfo InstallPluginsContext signature where
    overloadedMethod = installPluginsContextCopy

instance O.OverloadedMethodInfo InstallPluginsContextCopyMethodInfo InstallPluginsContext where
    overloadedMethodInfo = P.Just (O.ResolvedSymbolInfo {
        O.resolvedSymbolName = "GI.GstPbutils.Structs.InstallPluginsContext.installPluginsContextCopy",
        O.resolvedSymbolURL = "https://hackage.haskell.org/package/gi-gstpbutils-1.0.25/docs/GI-GstPbutils-Structs-InstallPluginsContext.html#v:installPluginsContextCopy"
        })


#endif

-- method InstallPluginsContext::free
-- method type : OrdinaryMethod
-- Args: [ Arg
--           { argCName = "ctx"
--           , argType =
--               TInterface
--                 Name { namespace = "GstPbutils" , name = "InstallPluginsContext" }
--           , direction = DirectionIn
--           , mayBeNull = False
--           , argDoc =
--               Documentation
--                 { rawDocText = Just "a #GstInstallPluginsContext"
--                 , sinceVersion = Nothing
--                 }
--           , argScope = ScopeTypeInvalid
--           , argClosure = -1
--           , argDestroy = -1
--           , argCallerAllocates = False
--           , transfer = TransferNothing
--           }
--       ]
-- Lengths: []
-- returnType: Nothing
-- throws : False
-- Skip return : False

foreign import ccall "gst_install_plugins_context_free" gst_install_plugins_context_free :: 
    Ptr InstallPluginsContext ->            -- ctx : TInterface (Name {namespace = "GstPbutils", name = "InstallPluginsContext"})
    IO ()

-- | Frees a t'GI.GstPbutils.Structs.InstallPluginsContext.InstallPluginsContext'.
installPluginsContextFree ::
    (B.CallStack.HasCallStack, MonadIO m) =>
    InstallPluginsContext
    -- ^ /@ctx@/: a t'GI.GstPbutils.Structs.InstallPluginsContext.InstallPluginsContext'
    -> m ()
installPluginsContextFree :: forall (m :: * -> *).
(HasCallStack, MonadIO m) =>
InstallPluginsContext -> m ()
installPluginsContextFree InstallPluginsContext
ctx = IO () -> m ()
forall a. IO a -> m a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO () -> m ()) -> IO () -> m ()
forall a b. (a -> b) -> a -> b
$ do
    Ptr InstallPluginsContext
ctx' <- InstallPluginsContext -> IO (Ptr InstallPluginsContext)
forall a. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr a)
unsafeManagedPtrGetPtr InstallPluginsContext
ctx
    Ptr InstallPluginsContext -> IO ()
gst_install_plugins_context_free Ptr InstallPluginsContext
ctx'
    InstallPluginsContext -> IO ()
forall a. ManagedPtrNewtype a => a -> IO ()
touchManagedPtr InstallPluginsContext
ctx
    () -> IO ()
forall a. a -> IO a
forall (m :: * -> *) a. Monad m => a -> m a
return ()

#if defined(ENABLE_OVERLOADING)
data InstallPluginsContextFreeMethodInfo
instance (signature ~ (m ()), MonadIO m) => O.OverloadedMethod InstallPluginsContextFreeMethodInfo InstallPluginsContext signature where
    overloadedMethod = installPluginsContextFree

instance O.OverloadedMethodInfo InstallPluginsContextFreeMethodInfo InstallPluginsContext where
    overloadedMethodInfo = P.Just (O.ResolvedSymbolInfo {
        O.resolvedSymbolName = "GI.GstPbutils.Structs.InstallPluginsContext.installPluginsContextFree",
        O.resolvedSymbolURL = "https://hackage.haskell.org/package/gi-gstpbutils-1.0.25/docs/GI-GstPbutils-Structs-InstallPluginsContext.html#v:installPluginsContextFree"
        })


#endif

-- method InstallPluginsContext::set_confirm_search
-- method type : OrdinaryMethod
-- Args: [ Arg
--           { argCName = "ctx"
--           , argType =
--               TInterface
--                 Name { namespace = "GstPbutils" , name = "InstallPluginsContext" }
--           , direction = DirectionIn
--           , mayBeNull = False
--           , argDoc =
--               Documentation
--                 { rawDocText = Just "a #GstInstallPluginsContext"
--                 , sinceVersion = Nothing
--                 }
--           , argScope = ScopeTypeInvalid
--           , argClosure = -1
--           , argDestroy = -1
--           , argCallerAllocates = False
--           , transfer = TransferNothing
--           }
--       , Arg
--           { argCName = "confirm_search"
--           , argType = TBasicType TBoolean
--           , direction = DirectionIn
--           , mayBeNull = False
--           , argDoc =
--               Documentation
--                 { rawDocText =
--                     Just "whether to ask for confirmation before searching for plugins"
--                 , sinceVersion = Nothing
--                 }
--           , argScope = ScopeTypeInvalid
--           , argClosure = -1
--           , argDestroy = -1
--           , argCallerAllocates = False
--           , transfer = TransferNothing
--           }
--       ]
-- Lengths: []
-- returnType: Nothing
-- throws : False
-- Skip return : False

foreign import ccall "gst_install_plugins_context_set_confirm_search" gst_install_plugins_context_set_confirm_search :: 
    Ptr InstallPluginsContext ->            -- ctx : TInterface (Name {namespace = "GstPbutils", name = "InstallPluginsContext"})
    CInt ->                                 -- confirm_search : TBasicType TBoolean
    IO ()

-- | This function is used to tell the external installer process whether it
-- should ask for confirmation or not before searching for missing plugins.
-- 
-- If set, this option will be passed to the installer via a
-- --interaction=[show-confirm-search|hide-confirm-search] command line option.
-- 
-- /Since: 1.6/
installPluginsContextSetConfirmSearch ::
    (B.CallStack.HasCallStack, MonadIO m) =>
    InstallPluginsContext
    -- ^ /@ctx@/: a t'GI.GstPbutils.Structs.InstallPluginsContext.InstallPluginsContext'
    -> Bool
    -- ^ /@confirmSearch@/: whether to ask for confirmation before searching for plugins
    -> m ()
installPluginsContextSetConfirmSearch :: forall (m :: * -> *).
(HasCallStack, MonadIO m) =>
InstallPluginsContext -> Bool -> m ()
installPluginsContextSetConfirmSearch InstallPluginsContext
ctx Bool
confirmSearch = IO () -> m ()
forall a. IO a -> m a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO () -> m ()) -> IO () -> m ()
forall a b. (a -> b) -> a -> b
$ do
    Ptr InstallPluginsContext
ctx' <- InstallPluginsContext -> IO (Ptr InstallPluginsContext)
forall a. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr a)
unsafeManagedPtrGetPtr InstallPluginsContext
ctx
    let confirmSearch' :: CInt
confirmSearch' = (Int -> CInt
forall a b. (Integral a, Num b) => a -> b
fromIntegral (Int -> CInt) -> (Bool -> Int) -> Bool -> CInt
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Bool -> Int
forall a. Enum a => a -> Int
fromEnum) Bool
confirmSearch
    Ptr InstallPluginsContext -> CInt -> IO ()
gst_install_plugins_context_set_confirm_search Ptr InstallPluginsContext
ctx' CInt
confirmSearch'
    InstallPluginsContext -> IO ()
forall a. ManagedPtrNewtype a => a -> IO ()
touchManagedPtr InstallPluginsContext
ctx
    () -> IO ()
forall a. a -> IO a
forall (m :: * -> *) a. Monad m => a -> m a
return ()

#if defined(ENABLE_OVERLOADING)
data InstallPluginsContextSetConfirmSearchMethodInfo
instance (signature ~ (Bool -> m ()), MonadIO m) => O.OverloadedMethod InstallPluginsContextSetConfirmSearchMethodInfo InstallPluginsContext signature where
    overloadedMethod = installPluginsContextSetConfirmSearch

instance O.OverloadedMethodInfo InstallPluginsContextSetConfirmSearchMethodInfo InstallPluginsContext where
    overloadedMethodInfo = P.Just (O.ResolvedSymbolInfo {
        O.resolvedSymbolName = "GI.GstPbutils.Structs.InstallPluginsContext.installPluginsContextSetConfirmSearch",
        O.resolvedSymbolURL = "https://hackage.haskell.org/package/gi-gstpbutils-1.0.25/docs/GI-GstPbutils-Structs-InstallPluginsContext.html#v:installPluginsContextSetConfirmSearch"
        })


#endif

-- method InstallPluginsContext::set_desktop_id
-- method type : OrdinaryMethod
-- Args: [ Arg
--           { argCName = "ctx"
--           , argType =
--               TInterface
--                 Name { namespace = "GstPbutils" , name = "InstallPluginsContext" }
--           , direction = DirectionIn
--           , mayBeNull = False
--           , argDoc =
--               Documentation
--                 { rawDocText = Just "a #GstInstallPluginsContext"
--                 , sinceVersion = Nothing
--                 }
--           , argScope = ScopeTypeInvalid
--           , argClosure = -1
--           , argDestroy = -1
--           , argCallerAllocates = False
--           , transfer = TransferNothing
--           }
--       , Arg
--           { argCName = "desktop_id"
--           , argType = TBasicType TUTF8
--           , direction = DirectionIn
--           , mayBeNull = False
--           , argDoc =
--               Documentation
--                 { rawDocText =
--                     Just "the desktop file ID of the calling application"
--                 , sinceVersion = Nothing
--                 }
--           , argScope = ScopeTypeInvalid
--           , argClosure = -1
--           , argDestroy = -1
--           , argCallerAllocates = False
--           , transfer = TransferNothing
--           }
--       ]
-- Lengths: []
-- returnType: Nothing
-- throws : False
-- Skip return : False

foreign import ccall "gst_install_plugins_context_set_desktop_id" gst_install_plugins_context_set_desktop_id :: 
    Ptr InstallPluginsContext ->            -- ctx : TInterface (Name {namespace = "GstPbutils", name = "InstallPluginsContext"})
    CString ->                              -- desktop_id : TBasicType TUTF8
    IO ()

-- | This function is used to pass the calling application\'s desktop file ID to
-- the external installer process.
-- 
-- A desktop file ID is the basename of the desktop file, including the
-- .desktop extension.
-- 
-- If set, the desktop file ID will be passed to the installer via a
-- --desktop-id= command line option.
-- 
-- /Since: 1.6/
installPluginsContextSetDesktopId ::
    (B.CallStack.HasCallStack, MonadIO m) =>
    InstallPluginsContext
    -- ^ /@ctx@/: a t'GI.GstPbutils.Structs.InstallPluginsContext.InstallPluginsContext'
    -> T.Text
    -- ^ /@desktopId@/: the desktop file ID of the calling application
    -> m ()
installPluginsContextSetDesktopId :: forall (m :: * -> *).
(HasCallStack, MonadIO m) =>
InstallPluginsContext -> Text -> m ()
installPluginsContextSetDesktopId InstallPluginsContext
ctx Text
desktopId = IO () -> m ()
forall a. IO a -> m a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO () -> m ()) -> IO () -> m ()
forall a b. (a -> b) -> a -> b
$ do
    Ptr InstallPluginsContext
ctx' <- InstallPluginsContext -> IO (Ptr InstallPluginsContext)
forall a. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr a)
unsafeManagedPtrGetPtr InstallPluginsContext
ctx
    CString
desktopId' <- Text -> IO CString
textToCString Text
desktopId
    Ptr InstallPluginsContext -> CString -> IO ()
gst_install_plugins_context_set_desktop_id Ptr InstallPluginsContext
ctx' CString
desktopId'
    InstallPluginsContext -> IO ()
forall a. ManagedPtrNewtype a => a -> IO ()
touchManagedPtr InstallPluginsContext
ctx
    CString -> IO ()
forall a. Ptr a -> IO ()
freeMem CString
desktopId'
    () -> IO ()
forall a. a -> IO a
forall (m :: * -> *) a. Monad m => a -> m a
return ()

#if defined(ENABLE_OVERLOADING)
data InstallPluginsContextSetDesktopIdMethodInfo
instance (signature ~ (T.Text -> m ()), MonadIO m) => O.OverloadedMethod InstallPluginsContextSetDesktopIdMethodInfo InstallPluginsContext signature where
    overloadedMethod = installPluginsContextSetDesktopId

instance O.OverloadedMethodInfo InstallPluginsContextSetDesktopIdMethodInfo InstallPluginsContext where
    overloadedMethodInfo = P.Just (O.ResolvedSymbolInfo {
        O.resolvedSymbolName = "GI.GstPbutils.Structs.InstallPluginsContext.installPluginsContextSetDesktopId",
        O.resolvedSymbolURL = "https://hackage.haskell.org/package/gi-gstpbutils-1.0.25/docs/GI-GstPbutils-Structs-InstallPluginsContext.html#v:installPluginsContextSetDesktopId"
        })


#endif

-- method InstallPluginsContext::set_startup_notification_id
-- method type : OrdinaryMethod
-- Args: [ Arg
--           { argCName = "ctx"
--           , argType =
--               TInterface
--                 Name { namespace = "GstPbutils" , name = "InstallPluginsContext" }
--           , direction = DirectionIn
--           , mayBeNull = False
--           , argDoc =
--               Documentation
--                 { rawDocText = Just "a #GstInstallPluginsContext"
--                 , sinceVersion = Nothing
--                 }
--           , argScope = ScopeTypeInvalid
--           , argClosure = -1
--           , argDestroy = -1
--           , argCallerAllocates = False
--           , transfer = TransferNothing
--           }
--       , Arg
--           { argCName = "startup_id"
--           , argType = TBasicType TUTF8
--           , direction = DirectionIn
--           , mayBeNull = False
--           , argDoc =
--               Documentation
--                 { rawDocText = Just "the startup notification ID"
--                 , sinceVersion = Nothing
--                 }
--           , argScope = ScopeTypeInvalid
--           , argClosure = -1
--           , argDestroy = -1
--           , argCallerAllocates = False
--           , transfer = TransferNothing
--           }
--       ]
-- Lengths: []
-- returnType: Nothing
-- throws : False
-- Skip return : False

foreign import ccall "gst_install_plugins_context_set_startup_notification_id" gst_install_plugins_context_set_startup_notification_id :: 
    Ptr InstallPluginsContext ->            -- ctx : TInterface (Name {namespace = "GstPbutils", name = "InstallPluginsContext"})
    CString ->                              -- startup_id : TBasicType TUTF8
    IO ()

-- | Sets the startup notification ID for the launched process.
-- 
-- This is typically used to to pass the current X11 event timestamp to the
-- external installer process.
-- 
-- Startup notification IDs are defined in the
-- <http://standards.freedesktop.org/startup-notification-spec/startup-notification-latest.txt FreeDesktop.Org Startup Notifications standard>.
-- 
-- If set, the ID will be passed to the installer via a
-- --startup-notification-id= command line option.
-- 
-- GTK+\/GNOME applications should be able to create a startup notification ID
-- like this:
-- >
-- >  timestamp = gtk_get_current_event_time ();
-- >  startup_id = g_strdup_printf ("_TIME%u", timestamp);
-- >...
-- 
-- 
-- /Since: 1.6/
installPluginsContextSetStartupNotificationId ::
    (B.CallStack.HasCallStack, MonadIO m) =>
    InstallPluginsContext
    -- ^ /@ctx@/: a t'GI.GstPbutils.Structs.InstallPluginsContext.InstallPluginsContext'
    -> T.Text
    -- ^ /@startupId@/: the startup notification ID
    -> m ()
installPluginsContextSetStartupNotificationId :: forall (m :: * -> *).
(HasCallStack, MonadIO m) =>
InstallPluginsContext -> Text -> m ()
installPluginsContextSetStartupNotificationId InstallPluginsContext
ctx Text
startupId = IO () -> m ()
forall a. IO a -> m a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO () -> m ()) -> IO () -> m ()
forall a b. (a -> b) -> a -> b
$ do
    Ptr InstallPluginsContext
ctx' <- InstallPluginsContext -> IO (Ptr InstallPluginsContext)
forall a. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr a)
unsafeManagedPtrGetPtr InstallPluginsContext
ctx
    CString
startupId' <- Text -> IO CString
textToCString Text
startupId
    Ptr InstallPluginsContext -> CString -> IO ()
gst_install_plugins_context_set_startup_notification_id Ptr InstallPluginsContext
ctx' CString
startupId'
    InstallPluginsContext -> IO ()
forall a. ManagedPtrNewtype a => a -> IO ()
touchManagedPtr InstallPluginsContext
ctx
    CString -> IO ()
forall a. Ptr a -> IO ()
freeMem CString
startupId'
    () -> IO ()
forall a. a -> IO a
forall (m :: * -> *) a. Monad m => a -> m a
return ()

#if defined(ENABLE_OVERLOADING)
data InstallPluginsContextSetStartupNotificationIdMethodInfo
instance (signature ~ (T.Text -> m ()), MonadIO m) => O.OverloadedMethod InstallPluginsContextSetStartupNotificationIdMethodInfo InstallPluginsContext signature where
    overloadedMethod = installPluginsContextSetStartupNotificationId

instance O.OverloadedMethodInfo InstallPluginsContextSetStartupNotificationIdMethodInfo InstallPluginsContext where
    overloadedMethodInfo = P.Just (O.ResolvedSymbolInfo {
        O.resolvedSymbolName = "GI.GstPbutils.Structs.InstallPluginsContext.installPluginsContextSetStartupNotificationId",
        O.resolvedSymbolURL = "https://hackage.haskell.org/package/gi-gstpbutils-1.0.25/docs/GI-GstPbutils-Structs-InstallPluginsContext.html#v:installPluginsContextSetStartupNotificationId"
        })


#endif

-- method InstallPluginsContext::set_xid
-- method type : OrdinaryMethod
-- Args: [ Arg
--           { argCName = "ctx"
--           , argType =
--               TInterface
--                 Name { namespace = "GstPbutils" , name = "InstallPluginsContext" }
--           , direction = DirectionIn
--           , mayBeNull = False
--           , argDoc =
--               Documentation
--                 { rawDocText = Just "a #GstInstallPluginsContext"
--                 , sinceVersion = Nothing
--                 }
--           , argScope = ScopeTypeInvalid
--           , argClosure = -1
--           , argDestroy = -1
--           , argCallerAllocates = False
--           , transfer = TransferNothing
--           }
--       , Arg
--           { argCName = "xid"
--           , argType = TBasicType TUInt
--           , direction = DirectionIn
--           , mayBeNull = False
--           , argDoc =
--               Documentation
--                 { rawDocText =
--                     Just "the XWindow ID (XID) of the top-level application"
--                 , sinceVersion = Nothing
--                 }
--           , argScope = ScopeTypeInvalid
--           , argClosure = -1
--           , argDestroy = -1
--           , argCallerAllocates = False
--           , transfer = TransferNothing
--           }
--       ]
-- Lengths: []
-- returnType: Nothing
-- throws : False
-- Skip return : False

foreign import ccall "gst_install_plugins_context_set_xid" gst_install_plugins_context_set_xid :: 
    Ptr InstallPluginsContext ->            -- ctx : TInterface (Name {namespace = "GstPbutils", name = "InstallPluginsContext"})
    Word32 ->                               -- xid : TBasicType TUInt
    IO ()

-- | This function is for X11-based applications (such as most Gtk\/Qt
-- applications on linux\/unix) only. You can use it to tell the external
-- installer the XID of your main application window. That way the installer
-- can make its own window transient to your application window during the
-- installation.
-- 
-- If set, the XID will be passed to the installer via a --transient-for=XID
-- command line option.
-- 
-- Gtk+\/Gnome application should be able to obtain the XID of the top-level
-- window like this:
-- >
-- >##include <gtk/gtk.h>
-- >##ifdef GDK_WINDOWING_X11
-- >##include <gdk/gdkx.h>
-- >##endif
-- >...
-- >##ifdef GDK_WINDOWING_X11
-- >  xid = GDK_WINDOW_XWINDOW (GTK_WIDGET (application_window)->window);
-- >##endif
-- >...
installPluginsContextSetXid ::
    (B.CallStack.HasCallStack, MonadIO m) =>
    InstallPluginsContext
    -- ^ /@ctx@/: a t'GI.GstPbutils.Structs.InstallPluginsContext.InstallPluginsContext'
    -> Word32
    -- ^ /@xid@/: the XWindow ID (XID) of the top-level application
    -> m ()
installPluginsContextSetXid :: forall (m :: * -> *).
(HasCallStack, MonadIO m) =>
InstallPluginsContext -> Word32 -> m ()
installPluginsContextSetXid InstallPluginsContext
ctx Word32
xid = IO () -> m ()
forall a. IO a -> m a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO () -> m ()) -> IO () -> m ()
forall a b. (a -> b) -> a -> b
$ do
    Ptr InstallPluginsContext
ctx' <- InstallPluginsContext -> IO (Ptr InstallPluginsContext)
forall a. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr a)
unsafeManagedPtrGetPtr InstallPluginsContext
ctx
    Ptr InstallPluginsContext -> Word32 -> IO ()
gst_install_plugins_context_set_xid Ptr InstallPluginsContext
ctx' Word32
xid
    InstallPluginsContext -> IO ()
forall a. ManagedPtrNewtype a => a -> IO ()
touchManagedPtr InstallPluginsContext
ctx
    () -> IO ()
forall a. a -> IO a
forall (m :: * -> *) a. Monad m => a -> m a
return ()

#if defined(ENABLE_OVERLOADING)
data InstallPluginsContextSetXidMethodInfo
instance (signature ~ (Word32 -> m ()), MonadIO m) => O.OverloadedMethod InstallPluginsContextSetXidMethodInfo InstallPluginsContext signature where
    overloadedMethod = installPluginsContextSetXid

instance O.OverloadedMethodInfo InstallPluginsContextSetXidMethodInfo InstallPluginsContext where
    overloadedMethodInfo = P.Just (O.ResolvedSymbolInfo {
        O.resolvedSymbolName = "GI.GstPbutils.Structs.InstallPluginsContext.installPluginsContextSetXid",
        O.resolvedSymbolURL = "https://hackage.haskell.org/package/gi-gstpbutils-1.0.25/docs/GI-GstPbutils-Structs-InstallPluginsContext.html#v:installPluginsContextSetXid"
        })


#endif

#if defined(ENABLE_OVERLOADING)
type family ResolveInstallPluginsContextMethod (t :: Symbol) (o :: *) :: * where
    ResolveInstallPluginsContextMethod "copy" o = InstallPluginsContextCopyMethodInfo
    ResolveInstallPluginsContextMethod "free" o = InstallPluginsContextFreeMethodInfo
    ResolveInstallPluginsContextMethod "setConfirmSearch" o = InstallPluginsContextSetConfirmSearchMethodInfo
    ResolveInstallPluginsContextMethod "setDesktopId" o = InstallPluginsContextSetDesktopIdMethodInfo
    ResolveInstallPluginsContextMethod "setStartupNotificationId" o = InstallPluginsContextSetStartupNotificationIdMethodInfo
    ResolveInstallPluginsContextMethod "setXid" o = InstallPluginsContextSetXidMethodInfo
    ResolveInstallPluginsContextMethod l o = O.MethodResolutionFailed l o

instance (info ~ ResolveInstallPluginsContextMethod t InstallPluginsContext, O.OverloadedMethod info InstallPluginsContext p) => OL.IsLabel t (InstallPluginsContext -> p) where
#if MIN_VERSION_base(4,10,0)
    fromLabel = O.overloadedMethod @info
#else
    fromLabel _ = O.overloadedMethod @info
#endif

#if MIN_VERSION_base(4,13,0)
instance (info ~ ResolveInstallPluginsContextMethod t InstallPluginsContext, O.OverloadedMethod info InstallPluginsContext p, R.HasField t InstallPluginsContext p) => R.HasField t InstallPluginsContext p where
    getField = O.overloadedMethod @info

#endif

instance (info ~ ResolveInstallPluginsContextMethod t InstallPluginsContext, O.OverloadedMethodInfo info InstallPluginsContext) => OL.IsLabel t (O.MethodProxy info InstallPluginsContext) where
#if MIN_VERSION_base(4,10,0)
    fromLabel = O.MethodProxy
#else
    fromLabel _ = O.MethodProxy
#endif

#endif