packages feed

gi-notify-0.2.32.14: GI/Notify/Objects/Notification.hs


{- |
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.Notify.Objects.Notification
    ( 

-- * Exported types
    Notification(..)                        ,
    NotificationK                           ,
    toNotification                          ,
    noNotification                          ,


 -- * Methods
-- ** notificationAddAction
    NotificationAddActionMethodInfo         ,
    notificationAddAction                   ,


-- ** notificationClearActions
    NotificationClearActionsMethodInfo      ,
    notificationClearActions                ,


-- ** notificationClearHints
    NotificationClearHintsMethodInfo        ,
    notificationClearHints                  ,


-- ** notificationClose
    NotificationCloseMethodInfo             ,
    notificationClose                       ,


-- ** notificationGetClosedReason
    NotificationGetClosedReasonMethodInfo   ,
    notificationGetClosedReason             ,


-- ** notificationNew
    notificationNew                         ,


-- ** notificationSetAppName
    NotificationSetAppNameMethodInfo        ,
    notificationSetAppName                  ,


-- ** notificationSetCategory
    NotificationSetCategoryMethodInfo       ,
    notificationSetCategory                 ,


-- ** notificationSetHint
    NotificationSetHintMethodInfo           ,
    notificationSetHint                     ,


-- ** notificationSetHintByte
    NotificationSetHintByteMethodInfo       ,
    notificationSetHintByte                 ,


-- ** notificationSetHintByteArray
    NotificationSetHintByteArrayMethodInfo  ,
    notificationSetHintByteArray            ,


-- ** notificationSetHintDouble
    NotificationSetHintDoubleMethodInfo     ,
    notificationSetHintDouble               ,


-- ** notificationSetHintInt32
    NotificationSetHintInt32MethodInfo      ,
    notificationSetHintInt32                ,


-- ** notificationSetHintString
    NotificationSetHintStringMethodInfo     ,
    notificationSetHintString               ,


-- ** notificationSetHintUint32
    NotificationSetHintUint32MethodInfo     ,
    notificationSetHintUint32               ,


-- ** notificationSetIconFromPixbuf
    NotificationSetIconFromPixbufMethodInfo ,
    notificationSetIconFromPixbuf           ,


-- ** notificationSetImageFromPixbuf
    NotificationSetImageFromPixbufMethodInfo,
    notificationSetImageFromPixbuf          ,


-- ** notificationSetTimeout
    NotificationSetTimeoutMethodInfo        ,
    notificationSetTimeout                  ,


-- ** notificationSetUrgency
    NotificationSetUrgencyMethodInfo        ,
    notificationSetUrgency                  ,


-- ** notificationShow
    NotificationShowMethodInfo              ,
    notificationShow                        ,


-- ** notificationUpdate
    NotificationUpdateMethodInfo            ,
    notificationUpdate                      ,




 -- * Properties
-- ** AppName
    NotificationAppNamePropertyInfo         ,
    constructNotificationAppName            ,
    getNotificationAppName                  ,
    notificationAppName                     ,
    setNotificationAppName                  ,


-- ** Body
    NotificationBodyPropertyInfo            ,
    clearNotificationBody                   ,
    constructNotificationBody               ,
    getNotificationBody                     ,
    notificationBody                        ,
    setNotificationBody                     ,


-- ** ClosedReason
    NotificationClosedReasonPropertyInfo    ,
    getNotificationClosedReason             ,
    notificationClosedReason                ,


-- ** IconName
    NotificationIconNamePropertyInfo        ,
    clearNotificationIconName               ,
    constructNotificationIconName           ,
    getNotificationIconName                 ,
    notificationIconName                    ,
    setNotificationIconName                 ,


-- ** Id
    NotificationIdPropertyInfo              ,
    constructNotificationId                 ,
    getNotificationId                       ,
    notificationId                          ,
    setNotificationId                       ,


-- ** Summary
    NotificationSummaryPropertyInfo         ,
    clearNotificationSummary                ,
    constructNotificationSummary            ,
    getNotificationSummary                  ,
    notificationSummary                     ,
    setNotificationSummary                  ,




 -- * Signals
-- ** Closed
    NotificationClosedCallback              ,
    NotificationClosedCallbackC             ,
    NotificationClosedSignalInfo            ,
    afterNotificationClosed                 ,
    mkNotificationClosedCallback            ,
    noNotificationClosedCallback            ,
    notificationClosedCallbackWrapper       ,
    notificationClosedClosure               ,
    onNotificationClosed                    ,




    ) where

import Data.GI.Base.ShortPrelude

import qualified Data.GI.Base.Attributes as GI.Attributes
import qualified Data.Text as T
import qualified Data.ByteString.Char8 as B
import qualified Data.Map as Map

import GI.Notify.Types
import GI.Notify.Callbacks
import qualified GI.GLib as GLib
import qualified GI.GObject as GObject
import qualified GI.GdkPixbuf as GdkPixbuf

newtype Notification = Notification (ForeignPtr Notification)
foreign import ccall "notify_notification_get_type"
    c_notify_notification_get_type :: IO GType

type instance ParentTypes Notification = NotificationParentTypes
type NotificationParentTypes = '[GObject.Object]

instance GObject Notification where
    gobjectIsInitiallyUnowned _ = False
    gobjectType _ = c_notify_notification_get_type
    

class GObject o => NotificationK o
instance (GObject o, IsDescendantOf Notification o) => NotificationK o

toNotification :: NotificationK o => o -> IO Notification
toNotification = unsafeCastTo Notification

noNotification :: Maybe Notification
noNotification = Nothing

type family ResolveNotificationMethod (t :: Symbol) (o :: *) :: * where
    ResolveNotificationMethod "addAction" o = NotificationAddActionMethodInfo
    ResolveNotificationMethod "bindProperty" o = GObject.ObjectBindPropertyMethodInfo
    ResolveNotificationMethod "bindPropertyFull" o = GObject.ObjectBindPropertyFullMethodInfo
    ResolveNotificationMethod "clearActions" o = NotificationClearActionsMethodInfo
    ResolveNotificationMethod "clearHints" o = NotificationClearHintsMethodInfo
    ResolveNotificationMethod "close" o = NotificationCloseMethodInfo
    ResolveNotificationMethod "forceFloating" o = GObject.ObjectForceFloatingMethodInfo
    ResolveNotificationMethod "freezeNotify" o = GObject.ObjectFreezeNotifyMethodInfo
    ResolveNotificationMethod "isFloating" o = GObject.ObjectIsFloatingMethodInfo
    ResolveNotificationMethod "notify" o = GObject.ObjectNotifyMethodInfo
    ResolveNotificationMethod "notifyByPspec" o = GObject.ObjectNotifyByPspecMethodInfo
    ResolveNotificationMethod "ref" o = GObject.ObjectRefMethodInfo
    ResolveNotificationMethod "refSink" o = GObject.ObjectRefSinkMethodInfo
    ResolveNotificationMethod "replaceData" o = GObject.ObjectReplaceDataMethodInfo
    ResolveNotificationMethod "replaceQdata" o = GObject.ObjectReplaceQdataMethodInfo
    ResolveNotificationMethod "runDispose" o = GObject.ObjectRunDisposeMethodInfo
    ResolveNotificationMethod "show" o = NotificationShowMethodInfo
    ResolveNotificationMethod "stealData" o = GObject.ObjectStealDataMethodInfo
    ResolveNotificationMethod "stealQdata" o = GObject.ObjectStealQdataMethodInfo
    ResolveNotificationMethod "thawNotify" o = GObject.ObjectThawNotifyMethodInfo
    ResolveNotificationMethod "unref" o = GObject.ObjectUnrefMethodInfo
    ResolveNotificationMethod "update" o = NotificationUpdateMethodInfo
    ResolveNotificationMethod "watchClosure" o = GObject.ObjectWatchClosureMethodInfo
    ResolveNotificationMethod "getClosedReason" o = NotificationGetClosedReasonMethodInfo
    ResolveNotificationMethod "getData" o = GObject.ObjectGetDataMethodInfo
    ResolveNotificationMethod "getProperty" o = GObject.ObjectGetPropertyMethodInfo
    ResolveNotificationMethod "getQdata" o = GObject.ObjectGetQdataMethodInfo
    ResolveNotificationMethod "setAppName" o = NotificationSetAppNameMethodInfo
    ResolveNotificationMethod "setCategory" o = NotificationSetCategoryMethodInfo
    ResolveNotificationMethod "setData" o = GObject.ObjectSetDataMethodInfo
    ResolveNotificationMethod "setHint" o = NotificationSetHintMethodInfo
    ResolveNotificationMethod "setHintByte" o = NotificationSetHintByteMethodInfo
    ResolveNotificationMethod "setHintByteArray" o = NotificationSetHintByteArrayMethodInfo
    ResolveNotificationMethod "setHintDouble" o = NotificationSetHintDoubleMethodInfo
    ResolveNotificationMethod "setHintInt32" o = NotificationSetHintInt32MethodInfo
    ResolveNotificationMethod "setHintString" o = NotificationSetHintStringMethodInfo
    ResolveNotificationMethod "setHintUint32" o = NotificationSetHintUint32MethodInfo
    ResolveNotificationMethod "setIconFromPixbuf" o = NotificationSetIconFromPixbufMethodInfo
    ResolveNotificationMethod "setImageFromPixbuf" o = NotificationSetImageFromPixbufMethodInfo
    ResolveNotificationMethod "setProperty" o = GObject.ObjectSetPropertyMethodInfo
    ResolveNotificationMethod "setTimeout" o = NotificationSetTimeoutMethodInfo
    ResolveNotificationMethod "setUrgency" o = NotificationSetUrgencyMethodInfo
    ResolveNotificationMethod l o = MethodResolutionFailed l o

instance (info ~ ResolveNotificationMethod t Notification, MethodInfo info Notification p) => IsLabelProxy t (Notification -> p) where
    fromLabelProxy _ = overloadedMethod (MethodProxy :: MethodProxy info)

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

-- signal Notification::closed
type NotificationClosedCallback =
    IO ()

noNotificationClosedCallback :: Maybe NotificationClosedCallback
noNotificationClosedCallback = Nothing

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

foreign import ccall "wrapper"
    mkNotificationClosedCallback :: NotificationClosedCallbackC -> IO (FunPtr NotificationClosedCallbackC)

notificationClosedClosure :: NotificationClosedCallback -> IO Closure
notificationClosedClosure cb = newCClosure =<< mkNotificationClosedCallback wrapped
    where wrapped = notificationClosedCallbackWrapper cb

notificationClosedCallbackWrapper ::
    NotificationClosedCallback ->
    Ptr () ->
    Ptr () ->
    IO ()
notificationClosedCallbackWrapper _cb _ _ = do
    _cb 

onNotificationClosed :: (GObject a, MonadIO m) => a -> NotificationClosedCallback -> m SignalHandlerId
onNotificationClosed obj cb = liftIO $ connectNotificationClosed obj cb SignalConnectBefore
afterNotificationClosed :: (GObject a, MonadIO m) => a -> NotificationClosedCallback -> m SignalHandlerId
afterNotificationClosed obj cb = connectNotificationClosed obj cb SignalConnectAfter

connectNotificationClosed :: (GObject a, MonadIO m) =>
                             a -> NotificationClosedCallback -> SignalConnectMode -> m SignalHandlerId
connectNotificationClosed obj cb after = liftIO $ do
    cb' <- mkNotificationClosedCallback (notificationClosedCallbackWrapper cb)
    connectSignalFunPtr obj "closed" cb' after

-- VVV Prop "app-name"
   -- Type: TBasicType TUTF8
   -- Flags: [PropertyReadable,PropertyWritable]
   -- Nullable: (Nothing,Just False)

getNotificationAppName :: (MonadIO m, NotificationK o) => o -> m (Maybe T.Text)
getNotificationAppName obj = liftIO $ getObjectPropertyString obj "app-name"

setNotificationAppName :: (MonadIO m, NotificationK o) => o -> T.Text -> m ()
setNotificationAppName obj val = liftIO $ setObjectPropertyString obj "app-name" (Just val)

constructNotificationAppName :: T.Text -> IO ([Char], GValue)
constructNotificationAppName val = constructObjectPropertyString "app-name" (Just val)

data NotificationAppNamePropertyInfo
instance AttrInfo NotificationAppNamePropertyInfo where
    type AttrAllowedOps NotificationAppNamePropertyInfo = '[ 'AttrSet, 'AttrConstruct, 'AttrGet]
    type AttrSetTypeConstraint NotificationAppNamePropertyInfo = (~) T.Text
    type AttrBaseTypeConstraint NotificationAppNamePropertyInfo = NotificationK
    type AttrGetType NotificationAppNamePropertyInfo = (Maybe T.Text)
    type AttrLabel NotificationAppNamePropertyInfo = "app-name"
    attrGet _ = getNotificationAppName
    attrSet _ = setNotificationAppName
    attrConstruct _ = constructNotificationAppName
    attrClear _ = undefined

-- VVV Prop "body"
   -- Type: TBasicType TUTF8
   -- Flags: [PropertyReadable,PropertyWritable,PropertyConstruct]
   -- Nullable: (Nothing,Nothing)

getNotificationBody :: (MonadIO m, NotificationK o) => o -> m (Maybe T.Text)
getNotificationBody obj = liftIO $ getObjectPropertyString obj "body"

setNotificationBody :: (MonadIO m, NotificationK o) => o -> T.Text -> m ()
setNotificationBody obj val = liftIO $ setObjectPropertyString obj "body" (Just val)

constructNotificationBody :: T.Text -> IO ([Char], GValue)
constructNotificationBody val = constructObjectPropertyString "body" (Just val)

clearNotificationBody :: (MonadIO m, NotificationK o) => o -> m ()
clearNotificationBody obj = liftIO $ setObjectPropertyString obj "body" (Nothing :: Maybe T.Text)

data NotificationBodyPropertyInfo
instance AttrInfo NotificationBodyPropertyInfo where
    type AttrAllowedOps NotificationBodyPropertyInfo = '[ 'AttrSet, 'AttrConstruct, 'AttrGet, 'AttrClear]
    type AttrSetTypeConstraint NotificationBodyPropertyInfo = (~) T.Text
    type AttrBaseTypeConstraint NotificationBodyPropertyInfo = NotificationK
    type AttrGetType NotificationBodyPropertyInfo = (Maybe T.Text)
    type AttrLabel NotificationBodyPropertyInfo = "body"
    attrGet _ = getNotificationBody
    attrSet _ = setNotificationBody
    attrConstruct _ = constructNotificationBody
    attrClear _ = clearNotificationBody

-- VVV Prop "closed-reason"
   -- Type: TBasicType TInt
   -- Flags: [PropertyReadable]
   -- Nullable: (Just False,Nothing)

getNotificationClosedReason :: (MonadIO m, NotificationK o) => o -> m Int32
getNotificationClosedReason obj = liftIO $ getObjectPropertyInt32 obj "closed-reason"

data NotificationClosedReasonPropertyInfo
instance AttrInfo NotificationClosedReasonPropertyInfo where
    type AttrAllowedOps NotificationClosedReasonPropertyInfo = '[ 'AttrGet]
    type AttrSetTypeConstraint NotificationClosedReasonPropertyInfo = (~) ()
    type AttrBaseTypeConstraint NotificationClosedReasonPropertyInfo = NotificationK
    type AttrGetType NotificationClosedReasonPropertyInfo = Int32
    type AttrLabel NotificationClosedReasonPropertyInfo = "closed-reason"
    attrGet _ = getNotificationClosedReason
    attrSet _ = undefined
    attrConstruct _ = undefined
    attrClear _ = undefined

-- VVV Prop "icon-name"
   -- Type: TBasicType TUTF8
   -- Flags: [PropertyReadable,PropertyWritable,PropertyConstruct]
   -- Nullable: (Nothing,Nothing)

getNotificationIconName :: (MonadIO m, NotificationK o) => o -> m (Maybe T.Text)
getNotificationIconName obj = liftIO $ getObjectPropertyString obj "icon-name"

setNotificationIconName :: (MonadIO m, NotificationK o) => o -> T.Text -> m ()
setNotificationIconName obj val = liftIO $ setObjectPropertyString obj "icon-name" (Just val)

constructNotificationIconName :: T.Text -> IO ([Char], GValue)
constructNotificationIconName val = constructObjectPropertyString "icon-name" (Just val)

clearNotificationIconName :: (MonadIO m, NotificationK o) => o -> m ()
clearNotificationIconName obj = liftIO $ setObjectPropertyString obj "icon-name" (Nothing :: Maybe T.Text)

data NotificationIconNamePropertyInfo
instance AttrInfo NotificationIconNamePropertyInfo where
    type AttrAllowedOps NotificationIconNamePropertyInfo = '[ 'AttrSet, 'AttrConstruct, 'AttrGet, 'AttrClear]
    type AttrSetTypeConstraint NotificationIconNamePropertyInfo = (~) T.Text
    type AttrBaseTypeConstraint NotificationIconNamePropertyInfo = NotificationK
    type AttrGetType NotificationIconNamePropertyInfo = (Maybe T.Text)
    type AttrLabel NotificationIconNamePropertyInfo = "icon-name"
    attrGet _ = getNotificationIconName
    attrSet _ = setNotificationIconName
    attrConstruct _ = constructNotificationIconName
    attrClear _ = clearNotificationIconName

-- VVV Prop "id"
   -- Type: TBasicType TInt
   -- Flags: [PropertyReadable,PropertyWritable,PropertyConstruct]
   -- Nullable: (Nothing,Nothing)

getNotificationId :: (MonadIO m, NotificationK o) => o -> m Int32
getNotificationId obj = liftIO $ getObjectPropertyInt32 obj "id"

setNotificationId :: (MonadIO m, NotificationK o) => o -> Int32 -> m ()
setNotificationId obj val = liftIO $ setObjectPropertyInt32 obj "id" val

constructNotificationId :: Int32 -> IO ([Char], GValue)
constructNotificationId val = constructObjectPropertyInt32 "id" val

data NotificationIdPropertyInfo
instance AttrInfo NotificationIdPropertyInfo where
    type AttrAllowedOps NotificationIdPropertyInfo = '[ 'AttrSet, 'AttrConstruct, 'AttrGet]
    type AttrSetTypeConstraint NotificationIdPropertyInfo = (~) Int32
    type AttrBaseTypeConstraint NotificationIdPropertyInfo = NotificationK
    type AttrGetType NotificationIdPropertyInfo = Int32
    type AttrLabel NotificationIdPropertyInfo = "id"
    attrGet _ = getNotificationId
    attrSet _ = setNotificationId
    attrConstruct _ = constructNotificationId
    attrClear _ = undefined

-- VVV Prop "summary"
   -- Type: TBasicType TUTF8
   -- Flags: [PropertyReadable,PropertyWritable,PropertyConstruct]
   -- Nullable: (Nothing,Nothing)

getNotificationSummary :: (MonadIO m, NotificationK o) => o -> m (Maybe T.Text)
getNotificationSummary obj = liftIO $ getObjectPropertyString obj "summary"

setNotificationSummary :: (MonadIO m, NotificationK o) => o -> T.Text -> m ()
setNotificationSummary obj val = liftIO $ setObjectPropertyString obj "summary" (Just val)

constructNotificationSummary :: T.Text -> IO ([Char], GValue)
constructNotificationSummary val = constructObjectPropertyString "summary" (Just val)

clearNotificationSummary :: (MonadIO m, NotificationK o) => o -> m ()
clearNotificationSummary obj = liftIO $ setObjectPropertyString obj "summary" (Nothing :: Maybe T.Text)

data NotificationSummaryPropertyInfo
instance AttrInfo NotificationSummaryPropertyInfo where
    type AttrAllowedOps NotificationSummaryPropertyInfo = '[ 'AttrSet, 'AttrConstruct, 'AttrGet, 'AttrClear]
    type AttrSetTypeConstraint NotificationSummaryPropertyInfo = (~) T.Text
    type AttrBaseTypeConstraint NotificationSummaryPropertyInfo = NotificationK
    type AttrGetType NotificationSummaryPropertyInfo = (Maybe T.Text)
    type AttrLabel NotificationSummaryPropertyInfo = "summary"
    attrGet _ = getNotificationSummary
    attrSet _ = setNotificationSummary
    attrConstruct _ = constructNotificationSummary
    attrClear _ = clearNotificationSummary

type instance AttributeList Notification = NotificationAttributeList
type NotificationAttributeList = ('[ '("appName", NotificationAppNamePropertyInfo), '("body", NotificationBodyPropertyInfo), '("closedReason", NotificationClosedReasonPropertyInfo), '("iconName", NotificationIconNamePropertyInfo), '("id", NotificationIdPropertyInfo), '("summary", NotificationSummaryPropertyInfo)] :: [(Symbol, *)])

notificationAppName :: AttrLabelProxy "appName"
notificationAppName = AttrLabelProxy

notificationBody :: AttrLabelProxy "body"
notificationBody = AttrLabelProxy

notificationClosedReason :: AttrLabelProxy "closedReason"
notificationClosedReason = AttrLabelProxy

notificationIconName :: AttrLabelProxy "iconName"
notificationIconName = AttrLabelProxy

notificationId :: AttrLabelProxy "id"
notificationId = AttrLabelProxy

notificationSummary :: AttrLabelProxy "summary"
notificationSummary = AttrLabelProxy

data NotificationClosedSignalInfo
instance SignalInfo NotificationClosedSignalInfo where
    type HaskellCallbackType NotificationClosedSignalInfo = NotificationClosedCallback
    connectSignal _ = connectNotificationClosed

type instance SignalList Notification = NotificationSignalList
type NotificationSignalList = ('[ '("closed", NotificationClosedSignalInfo), '("notify", GObject.ObjectNotifySignalInfo)] :: [(Symbol, *)])

-- method Notification::new
-- method type : Constructor
-- Args : [Arg {argCName = "summary", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "body", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = True, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "icon", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = True, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Just (TInterface "Notify" "Notification")
-- throws : False
-- Skip return : False

foreign import ccall "notify_notification_new" notify_notification_new :: 
    CString ->                              -- summary : TBasicType TUTF8
    CString ->                              -- body : TBasicType TUTF8
    CString ->                              -- icon : TBasicType TUTF8
    IO (Ptr Notification)


notificationNew ::
    (MonadIO m) =>
    T.Text                                  -- summary
    -> Maybe (T.Text)                       -- body
    -> Maybe (T.Text)                       -- icon
    -> m Notification                       -- result
notificationNew summary body icon = liftIO $ do
    summary' <- textToCString summary
    maybeBody <- case body of
        Nothing -> return nullPtr
        Just jBody -> do
            jBody' <- textToCString jBody
            return jBody'
    maybeIcon <- case icon of
        Nothing -> return nullPtr
        Just jIcon -> do
            jIcon' <- textToCString jIcon
            return jIcon'
    result <- notify_notification_new summary' maybeBody maybeIcon
    checkUnexpectedReturnNULL "notify_notification_new" result
    result' <- (wrapObject Notification) result
    freeMem summary'
    freeMem maybeBody
    freeMem maybeIcon
    return result'

-- method Notification::add_action
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "_obj", argType = TInterface "Notify" "Notification", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "action", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "label", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "callback", argType = TInterface "Notify" "ActionCallback", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeNotified, argClosure = 4, argDestroy = 5, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "user_data", argType = TBasicType TPtr, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "free_func", argType = TInterface "GLib" "DestroyNotify", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeAsync, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Nothing
-- throws : False
-- Skip return : False

foreign import ccall "notify_notification_add_action" notify_notification_add_action :: 
    Ptr Notification ->                     -- _obj : TInterface "Notify" "Notification"
    CString ->                              -- action : TBasicType TUTF8
    CString ->                              -- label : TBasicType TUTF8
    FunPtr ActionCallbackC ->               -- callback : TInterface "Notify" "ActionCallback"
    Ptr () ->                               -- user_data : TBasicType TPtr
    FunPtr GLib.DestroyNotifyC ->           -- free_func : TInterface "GLib" "DestroyNotify"
    IO ()


notificationAddAction ::
    (MonadIO m, NotificationK a) =>
    a                                       -- _obj
    -> T.Text                               -- action
    -> T.Text                               -- label
    -> ActionCallback                       -- callback
    -> m ()                                 -- result
notificationAddAction _obj action label callback = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    action' <- textToCString action
    label' <- textToCString label
    callback' <- mkActionCallback (actionCallbackWrapper Nothing callback)
    let userData = castFunPtrToPtr callback'
    let freeFunc = safeFreeFunPtrPtr
    notify_notification_add_action _obj' action' label' callback' userData freeFunc
    touchManagedPtr _obj
    freeMem action'
    freeMem label'
    return ()

data NotificationAddActionMethodInfo
instance (signature ~ (T.Text -> T.Text -> ActionCallback -> m ()), MonadIO m, NotificationK a) => MethodInfo NotificationAddActionMethodInfo a signature where
    overloadedMethod _ = notificationAddAction

-- method Notification::clear_actions
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "_obj", argType = TInterface "Notify" "Notification", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Nothing
-- throws : False
-- Skip return : False

foreign import ccall "notify_notification_clear_actions" notify_notification_clear_actions :: 
    Ptr Notification ->                     -- _obj : TInterface "Notify" "Notification"
    IO ()


notificationClearActions ::
    (MonadIO m, NotificationK a) =>
    a                                       -- _obj
    -> m ()                                 -- result
notificationClearActions _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    notify_notification_clear_actions _obj'
    touchManagedPtr _obj
    return ()

data NotificationClearActionsMethodInfo
instance (signature ~ (m ()), MonadIO m, NotificationK a) => MethodInfo NotificationClearActionsMethodInfo a signature where
    overloadedMethod _ = notificationClearActions

-- method Notification::clear_hints
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "_obj", argType = TInterface "Notify" "Notification", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Nothing
-- throws : False
-- Skip return : False

foreign import ccall "notify_notification_clear_hints" notify_notification_clear_hints :: 
    Ptr Notification ->                     -- _obj : TInterface "Notify" "Notification"
    IO ()


notificationClearHints ::
    (MonadIO m, NotificationK a) =>
    a                                       -- _obj
    -> m ()                                 -- result
notificationClearHints _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    notify_notification_clear_hints _obj'
    touchManagedPtr _obj
    return ()

data NotificationClearHintsMethodInfo
instance (signature ~ (m ()), MonadIO m, NotificationK a) => MethodInfo NotificationClearHintsMethodInfo a signature where
    overloadedMethod _ = notificationClearHints

-- method Notification::close
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "_obj", argType = TInterface "Notify" "Notification", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Just (TBasicType TBoolean)
-- throws : True
-- Skip return : False

foreign import ccall "notify_notification_close" notify_notification_close :: 
    Ptr Notification ->                     -- _obj : TInterface "Notify" "Notification"
    Ptr (Ptr GError) ->                     -- error
    IO CInt


notificationClose ::
    (MonadIO m, NotificationK a) =>
    a                                       -- _obj
    -> m ()                                 -- result
notificationClose _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    onException (do
        _ <- propagateGError $ notify_notification_close _obj'
        touchManagedPtr _obj
        return ()
     ) (do
        return ()
     )

data NotificationCloseMethodInfo
instance (signature ~ (m ()), MonadIO m, NotificationK a) => MethodInfo NotificationCloseMethodInfo a signature where
    overloadedMethod _ = notificationClose

-- method Notification::get_closed_reason
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "_obj", argType = TInterface "Notify" "Notification", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Just (TBasicType TInt)
-- throws : False
-- Skip return : False

foreign import ccall "notify_notification_get_closed_reason" notify_notification_get_closed_reason :: 
    Ptr Notification ->                     -- _obj : TInterface "Notify" "Notification"
    IO Int32


notificationGetClosedReason ::
    (MonadIO m, NotificationK a) =>
    a                                       -- _obj
    -> m Int32                              -- result
notificationGetClosedReason _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    result <- notify_notification_get_closed_reason _obj'
    touchManagedPtr _obj
    return result

data NotificationGetClosedReasonMethodInfo
instance (signature ~ (m Int32), MonadIO m, NotificationK a) => MethodInfo NotificationGetClosedReasonMethodInfo a signature where
    overloadedMethod _ = notificationGetClosedReason

-- method Notification::set_app_name
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "_obj", argType = TInterface "Notify" "Notification", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "app_name", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Nothing
-- throws : False
-- Skip return : False

foreign import ccall "notify_notification_set_app_name" notify_notification_set_app_name :: 
    Ptr Notification ->                     -- _obj : TInterface "Notify" "Notification"
    CString ->                              -- app_name : TBasicType TUTF8
    IO ()


notificationSetAppName ::
    (MonadIO m, NotificationK a) =>
    a                                       -- _obj
    -> T.Text                               -- appName
    -> m ()                                 -- result
notificationSetAppName _obj appName = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    appName' <- textToCString appName
    notify_notification_set_app_name _obj' appName'
    touchManagedPtr _obj
    freeMem appName'
    return ()

data NotificationSetAppNameMethodInfo
instance (signature ~ (T.Text -> m ()), MonadIO m, NotificationK a) => MethodInfo NotificationSetAppNameMethodInfo a signature where
    overloadedMethod _ = notificationSetAppName

-- method Notification::set_category
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "_obj", argType = TInterface "Notify" "Notification", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "category", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Nothing
-- throws : False
-- Skip return : False

foreign import ccall "notify_notification_set_category" notify_notification_set_category :: 
    Ptr Notification ->                     -- _obj : TInterface "Notify" "Notification"
    CString ->                              -- category : TBasicType TUTF8
    IO ()


notificationSetCategory ::
    (MonadIO m, NotificationK a) =>
    a                                       -- _obj
    -> T.Text                               -- category
    -> m ()                                 -- result
notificationSetCategory _obj category = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    category' <- textToCString category
    notify_notification_set_category _obj' category'
    touchManagedPtr _obj
    freeMem category'
    return ()

data NotificationSetCategoryMethodInfo
instance (signature ~ (T.Text -> m ()), MonadIO m, NotificationK a) => MethodInfo NotificationSetCategoryMethodInfo a signature where
    overloadedMethod _ = notificationSetCategory

-- method Notification::set_hint
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "_obj", argType = TInterface "Notify" "Notification", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "key", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "value", argType = TVariant, direction = DirectionIn, mayBeNull = True, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Nothing
-- throws : False
-- Skip return : False

foreign import ccall "notify_notification_set_hint" notify_notification_set_hint :: 
    Ptr Notification ->                     -- _obj : TInterface "Notify" "Notification"
    CString ->                              -- key : TBasicType TUTF8
    Ptr GVariant ->                         -- value : TVariant
    IO ()


notificationSetHint ::
    (MonadIO m, NotificationK a) =>
    a                                       -- _obj
    -> T.Text                               -- key
    -> Maybe (GVariant)                     -- value
    -> m ()                                 -- result
notificationSetHint _obj key value = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    key' <- textToCString key
    maybeValue <- case value of
        Nothing -> return nullPtr
        Just jValue -> do
            let jValue' = unsafeManagedPtrGetPtr jValue
            return jValue'
    notify_notification_set_hint _obj' key' maybeValue
    touchManagedPtr _obj
    freeMem key'
    return ()

data NotificationSetHintMethodInfo
instance (signature ~ (T.Text -> Maybe (GVariant) -> m ()), MonadIO m, NotificationK a) => MethodInfo NotificationSetHintMethodInfo a signature where
    overloadedMethod _ = notificationSetHint

-- method Notification::set_hint_byte
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "_obj", argType = TInterface "Notify" "Notification", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "key", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "value", argType = TBasicType TUInt8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Nothing
-- throws : False
-- Skip return : False

foreign import ccall "notify_notification_set_hint_byte" notify_notification_set_hint_byte :: 
    Ptr Notification ->                     -- _obj : TInterface "Notify" "Notification"
    CString ->                              -- key : TBasicType TUTF8
    Word8 ->                                -- value : TBasicType TUInt8
    IO ()

{-# DEPRECATED notificationSetHintByte ["(Since version 0.6.)","Use notify_notification_set_hint() instead"]#-}
notificationSetHintByte ::
    (MonadIO m, NotificationK a) =>
    a                                       -- _obj
    -> T.Text                               -- key
    -> Word8                                -- value
    -> m ()                                 -- result
notificationSetHintByte _obj key value = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    key' <- textToCString key
    notify_notification_set_hint_byte _obj' key' value
    touchManagedPtr _obj
    freeMem key'
    return ()

data NotificationSetHintByteMethodInfo
instance (signature ~ (T.Text -> Word8 -> m ()), MonadIO m, NotificationK a) => MethodInfo NotificationSetHintByteMethodInfo a signature where
    overloadedMethod _ = notificationSetHintByte

-- method Notification::set_hint_byte_array
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "_obj", argType = TInterface "Notify" "Notification", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "key", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "value", argType = TBasicType TUInt8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "len", argType = TBasicType TUInt64, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Nothing
-- throws : False
-- Skip return : False

foreign import ccall "notify_notification_set_hint_byte_array" notify_notification_set_hint_byte_array :: 
    Ptr Notification ->                     -- _obj : TInterface "Notify" "Notification"
    CString ->                              -- key : TBasicType TUTF8
    Word8 ->                                -- value : TBasicType TUInt8
    Word64 ->                               -- len : TBasicType TUInt64
    IO ()

{-# DEPRECATED notificationSetHintByteArray ["(Since version 0.6.)","Use notify_notification_set_hint() instead"]#-}
notificationSetHintByteArray ::
    (MonadIO m, NotificationK a) =>
    a                                       -- _obj
    -> T.Text                               -- key
    -> Word8                                -- value
    -> Word64                               -- len
    -> m ()                                 -- result
notificationSetHintByteArray _obj key value len = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    key' <- textToCString key
    notify_notification_set_hint_byte_array _obj' key' value len
    touchManagedPtr _obj
    freeMem key'
    return ()

data NotificationSetHintByteArrayMethodInfo
instance (signature ~ (T.Text -> Word8 -> Word64 -> m ()), MonadIO m, NotificationK a) => MethodInfo NotificationSetHintByteArrayMethodInfo a signature where
    overloadedMethod _ = notificationSetHintByteArray

-- method Notification::set_hint_double
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "_obj", argType = TInterface "Notify" "Notification", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "key", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "value", argType = TBasicType TDouble, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Nothing
-- throws : False
-- Skip return : False

foreign import ccall "notify_notification_set_hint_double" notify_notification_set_hint_double :: 
    Ptr Notification ->                     -- _obj : TInterface "Notify" "Notification"
    CString ->                              -- key : TBasicType TUTF8
    CDouble ->                              -- value : TBasicType TDouble
    IO ()

{-# DEPRECATED notificationSetHintDouble ["(Since version 0.6.)","Use notify_notification_set_hint() instead"]#-}
notificationSetHintDouble ::
    (MonadIO m, NotificationK a) =>
    a                                       -- _obj
    -> T.Text                               -- key
    -> Double                               -- value
    -> m ()                                 -- result
notificationSetHintDouble _obj key value = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    key' <- textToCString key
    let value' = realToFrac value
    notify_notification_set_hint_double _obj' key' value'
    touchManagedPtr _obj
    freeMem key'
    return ()

data NotificationSetHintDoubleMethodInfo
instance (signature ~ (T.Text -> Double -> m ()), MonadIO m, NotificationK a) => MethodInfo NotificationSetHintDoubleMethodInfo a signature where
    overloadedMethod _ = notificationSetHintDouble

-- method Notification::set_hint_int32
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "_obj", argType = TInterface "Notify" "Notification", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "key", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "value", argType = TBasicType TInt, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Nothing
-- throws : False
-- Skip return : False

foreign import ccall "notify_notification_set_hint_int32" notify_notification_set_hint_int32 :: 
    Ptr Notification ->                     -- _obj : TInterface "Notify" "Notification"
    CString ->                              -- key : TBasicType TUTF8
    Int32 ->                                -- value : TBasicType TInt
    IO ()

{-# DEPRECATED notificationSetHintInt32 ["(Since version 0.6.)","Use notify_notification_set_hint() instead"]#-}
notificationSetHintInt32 ::
    (MonadIO m, NotificationK a) =>
    a                                       -- _obj
    -> T.Text                               -- key
    -> Int32                                -- value
    -> m ()                                 -- result
notificationSetHintInt32 _obj key value = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    key' <- textToCString key
    notify_notification_set_hint_int32 _obj' key' value
    touchManagedPtr _obj
    freeMem key'
    return ()

data NotificationSetHintInt32MethodInfo
instance (signature ~ (T.Text -> Int32 -> m ()), MonadIO m, NotificationK a) => MethodInfo NotificationSetHintInt32MethodInfo a signature where
    overloadedMethod _ = notificationSetHintInt32

-- method Notification::set_hint_string
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "_obj", argType = TInterface "Notify" "Notification", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "key", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "value", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Nothing
-- throws : False
-- Skip return : False

foreign import ccall "notify_notification_set_hint_string" notify_notification_set_hint_string :: 
    Ptr Notification ->                     -- _obj : TInterface "Notify" "Notification"
    CString ->                              -- key : TBasicType TUTF8
    CString ->                              -- value : TBasicType TUTF8
    IO ()

{-# DEPRECATED notificationSetHintString ["(Since version 0.6.)","Use notify_notification_set_hint() instead"]#-}
notificationSetHintString ::
    (MonadIO m, NotificationK a) =>
    a                                       -- _obj
    -> T.Text                               -- key
    -> T.Text                               -- value
    -> m ()                                 -- result
notificationSetHintString _obj key value = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    key' <- textToCString key
    value' <- textToCString value
    notify_notification_set_hint_string _obj' key' value'
    touchManagedPtr _obj
    freeMem key'
    freeMem value'
    return ()

data NotificationSetHintStringMethodInfo
instance (signature ~ (T.Text -> T.Text -> m ()), MonadIO m, NotificationK a) => MethodInfo NotificationSetHintStringMethodInfo a signature where
    overloadedMethod _ = notificationSetHintString

-- method Notification::set_hint_uint32
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "_obj", argType = TInterface "Notify" "Notification", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "key", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "value", argType = TBasicType TUInt, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Nothing
-- throws : False
-- Skip return : False

foreign import ccall "notify_notification_set_hint_uint32" notify_notification_set_hint_uint32 :: 
    Ptr Notification ->                     -- _obj : TInterface "Notify" "Notification"
    CString ->                              -- key : TBasicType TUTF8
    Word32 ->                               -- value : TBasicType TUInt
    IO ()

{-# DEPRECATED notificationSetHintUint32 ["(Since version 0.6.)","Use notify_notification_set_hint() instead"]#-}
notificationSetHintUint32 ::
    (MonadIO m, NotificationK a) =>
    a                                       -- _obj
    -> T.Text                               -- key
    -> Word32                               -- value
    -> m ()                                 -- result
notificationSetHintUint32 _obj key value = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    key' <- textToCString key
    notify_notification_set_hint_uint32 _obj' key' value
    touchManagedPtr _obj
    freeMem key'
    return ()

data NotificationSetHintUint32MethodInfo
instance (signature ~ (T.Text -> Word32 -> m ()), MonadIO m, NotificationK a) => MethodInfo NotificationSetHintUint32MethodInfo a signature where
    overloadedMethod _ = notificationSetHintUint32

-- method Notification::set_icon_from_pixbuf
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "_obj", argType = TInterface "Notify" "Notification", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "icon", argType = TInterface "GdkPixbuf" "Pixbuf", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Nothing
-- throws : False
-- Skip return : False

foreign import ccall "notify_notification_set_icon_from_pixbuf" notify_notification_set_icon_from_pixbuf :: 
    Ptr Notification ->                     -- _obj : TInterface "Notify" "Notification"
    Ptr GdkPixbuf.Pixbuf ->                 -- icon : TInterface "GdkPixbuf" "Pixbuf"
    IO ()

{-# DEPRECATED notificationSetIconFromPixbuf ["use notify_notification_set_image_from_pixbuf() instead."]#-}
notificationSetIconFromPixbuf ::
    (MonadIO m, NotificationK a, GdkPixbuf.PixbufK b) =>
    a                                       -- _obj
    -> b                                    -- icon
    -> m ()                                 -- result
notificationSetIconFromPixbuf _obj icon = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    let icon' = unsafeManagedPtrCastPtr icon
    notify_notification_set_icon_from_pixbuf _obj' icon'
    touchManagedPtr _obj
    touchManagedPtr icon
    return ()

data NotificationSetIconFromPixbufMethodInfo
instance (signature ~ (b -> m ()), MonadIO m, NotificationK a, GdkPixbuf.PixbufK b) => MethodInfo NotificationSetIconFromPixbufMethodInfo a signature where
    overloadedMethod _ = notificationSetIconFromPixbuf

-- method Notification::set_image_from_pixbuf
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "_obj", argType = TInterface "Notify" "Notification", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "pixbuf", argType = TInterface "GdkPixbuf" "Pixbuf", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Nothing
-- throws : False
-- Skip return : False

foreign import ccall "notify_notification_set_image_from_pixbuf" notify_notification_set_image_from_pixbuf :: 
    Ptr Notification ->                     -- _obj : TInterface "Notify" "Notification"
    Ptr GdkPixbuf.Pixbuf ->                 -- pixbuf : TInterface "GdkPixbuf" "Pixbuf"
    IO ()


notificationSetImageFromPixbuf ::
    (MonadIO m, NotificationK a, GdkPixbuf.PixbufK b) =>
    a                                       -- _obj
    -> b                                    -- pixbuf
    -> m ()                                 -- result
notificationSetImageFromPixbuf _obj pixbuf = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    let pixbuf' = unsafeManagedPtrCastPtr pixbuf
    notify_notification_set_image_from_pixbuf _obj' pixbuf'
    touchManagedPtr _obj
    touchManagedPtr pixbuf
    return ()

data NotificationSetImageFromPixbufMethodInfo
instance (signature ~ (b -> m ()), MonadIO m, NotificationK a, GdkPixbuf.PixbufK b) => MethodInfo NotificationSetImageFromPixbufMethodInfo a signature where
    overloadedMethod _ = notificationSetImageFromPixbuf

-- method Notification::set_timeout
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "_obj", argType = TInterface "Notify" "Notification", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "timeout", argType = TBasicType TInt, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Nothing
-- throws : False
-- Skip return : False

foreign import ccall "notify_notification_set_timeout" notify_notification_set_timeout :: 
    Ptr Notification ->                     -- _obj : TInterface "Notify" "Notification"
    Int32 ->                                -- timeout : TBasicType TInt
    IO ()


notificationSetTimeout ::
    (MonadIO m, NotificationK a) =>
    a                                       -- _obj
    -> Int32                                -- timeout
    -> m ()                                 -- result
notificationSetTimeout _obj timeout = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    notify_notification_set_timeout _obj' timeout
    touchManagedPtr _obj
    return ()

data NotificationSetTimeoutMethodInfo
instance (signature ~ (Int32 -> m ()), MonadIO m, NotificationK a) => MethodInfo NotificationSetTimeoutMethodInfo a signature where
    overloadedMethod _ = notificationSetTimeout

-- method Notification::set_urgency
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "_obj", argType = TInterface "Notify" "Notification", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "urgency", argType = TInterface "Notify" "Urgency", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Nothing
-- throws : False
-- Skip return : False

foreign import ccall "notify_notification_set_urgency" notify_notification_set_urgency :: 
    Ptr Notification ->                     -- _obj : TInterface "Notify" "Notification"
    CUInt ->                                -- urgency : TInterface "Notify" "Urgency"
    IO ()


notificationSetUrgency ::
    (MonadIO m, NotificationK a) =>
    a                                       -- _obj
    -> Urgency                              -- urgency
    -> m ()                                 -- result
notificationSetUrgency _obj urgency = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    let urgency' = (fromIntegral . fromEnum) urgency
    notify_notification_set_urgency _obj' urgency'
    touchManagedPtr _obj
    return ()

data NotificationSetUrgencyMethodInfo
instance (signature ~ (Urgency -> m ()), MonadIO m, NotificationK a) => MethodInfo NotificationSetUrgencyMethodInfo a signature where
    overloadedMethod _ = notificationSetUrgency

-- method Notification::show
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "_obj", argType = TInterface "Notify" "Notification", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Just (TBasicType TBoolean)
-- throws : True
-- Skip return : False

foreign import ccall "notify_notification_show" notify_notification_show :: 
    Ptr Notification ->                     -- _obj : TInterface "Notify" "Notification"
    Ptr (Ptr GError) ->                     -- error
    IO CInt


notificationShow ::
    (MonadIO m, NotificationK a) =>
    a                                       -- _obj
    -> m ()                                 -- result
notificationShow _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    onException (do
        _ <- propagateGError $ notify_notification_show _obj'
        touchManagedPtr _obj
        return ()
     ) (do
        return ()
     )

data NotificationShowMethodInfo
instance (signature ~ (m ()), MonadIO m, NotificationK a) => MethodInfo NotificationShowMethodInfo a signature where
    overloadedMethod _ = notificationShow

-- method Notification::update
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "_obj", argType = TInterface "Notify" "Notification", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "summary", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "body", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = True, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "icon", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = True, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Just (TBasicType TBoolean)
-- throws : False
-- Skip return : False

foreign import ccall "notify_notification_update" notify_notification_update :: 
    Ptr Notification ->                     -- _obj : TInterface "Notify" "Notification"
    CString ->                              -- summary : TBasicType TUTF8
    CString ->                              -- body : TBasicType TUTF8
    CString ->                              -- icon : TBasicType TUTF8
    IO CInt


notificationUpdate ::
    (MonadIO m, NotificationK a) =>
    a                                       -- _obj
    -> T.Text                               -- summary
    -> Maybe (T.Text)                       -- body
    -> Maybe (T.Text)                       -- icon
    -> m Bool                               -- result
notificationUpdate _obj summary body icon = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    summary' <- textToCString summary
    maybeBody <- case body of
        Nothing -> return nullPtr
        Just jBody -> do
            jBody' <- textToCString jBody
            return jBody'
    maybeIcon <- case icon of
        Nothing -> return nullPtr
        Just jIcon -> do
            jIcon' <- textToCString jIcon
            return jIcon'
    result <- notify_notification_update _obj' summary' maybeBody maybeIcon
    let result' = (/= 0) result
    touchManagedPtr _obj
    freeMem summary'
    freeMem maybeBody
    freeMem maybeIcon
    return result'

data NotificationUpdateMethodInfo
instance (signature ~ (T.Text -> Maybe (T.Text) -> Maybe (T.Text) -> m Bool), MonadIO m, NotificationK a) => MethodInfo NotificationUpdateMethodInfo a signature where
    overloadedMethod _ = notificationUpdate