{- |
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.Gtk.Objects.StatusIcon
    ( 

-- * Exported types
    StatusIcon(..)                          ,
    StatusIconK                             ,
    toStatusIcon                            ,
    noStatusIcon                            ,


 -- * Methods
-- ** statusIconGetGeometry
    statusIconGetGeometry                   ,


-- ** statusIconGetGicon
    statusIconGetGicon                      ,


-- ** statusIconGetHasTooltip
    statusIconGetHasTooltip                 ,


-- ** statusIconGetIconName
    statusIconGetIconName                   ,


-- ** statusIconGetPixbuf
    statusIconGetPixbuf                     ,


-- ** statusIconGetScreen
    statusIconGetScreen                     ,


-- ** statusIconGetSize
    statusIconGetSize                       ,


-- ** statusIconGetStock
    statusIconGetStock                      ,


-- ** statusIconGetStorageType
    statusIconGetStorageType                ,


-- ** statusIconGetTitle
    statusIconGetTitle                      ,


-- ** statusIconGetTooltipMarkup
    statusIconGetTooltipMarkup              ,


-- ** statusIconGetTooltipText
    statusIconGetTooltipText                ,


-- ** statusIconGetVisible
    statusIconGetVisible                    ,


-- ** statusIconGetX11WindowId
    statusIconGetX11WindowId                ,


-- ** statusIconIsEmbedded
    statusIconIsEmbedded                    ,


-- ** statusIconNew
    statusIconNew                           ,


-- ** statusIconNewFromFile
    statusIconNewFromFile                   ,


-- ** statusIconNewFromGicon
    statusIconNewFromGicon                  ,


-- ** statusIconNewFromIconName
    statusIconNewFromIconName               ,


-- ** statusIconNewFromPixbuf
    statusIconNewFromPixbuf                 ,


-- ** statusIconNewFromStock
    statusIconNewFromStock                  ,


-- ** statusIconPositionMenu
    statusIconPositionMenu                  ,


-- ** statusIconSetFromFile
    statusIconSetFromFile                   ,


-- ** statusIconSetFromGicon
    statusIconSetFromGicon                  ,


-- ** statusIconSetFromIconName
    statusIconSetFromIconName               ,


-- ** statusIconSetFromPixbuf
    statusIconSetFromPixbuf                 ,


-- ** statusIconSetFromStock
    statusIconSetFromStock                  ,


-- ** statusIconSetHasTooltip
    statusIconSetHasTooltip                 ,


-- ** statusIconSetName
    statusIconSetName                       ,


-- ** statusIconSetScreen
    statusIconSetScreen                     ,


-- ** statusIconSetTitle
    statusIconSetTitle                      ,


-- ** statusIconSetTooltipMarkup
    statusIconSetTooltipMarkup              ,


-- ** statusIconSetTooltipText
    statusIconSetTooltipText                ,


-- ** statusIconSetVisible
    statusIconSetVisible                    ,




 -- * Properties
-- ** Embedded
    StatusIconEmbeddedPropertyInfo          ,
    getStatusIconEmbedded                   ,


-- ** File
    StatusIconFilePropertyInfo              ,
    constructStatusIconFile                 ,
    setStatusIconFile                       ,


-- ** Gicon
    StatusIconGiconPropertyInfo             ,
    constructStatusIconGicon                ,
    getStatusIconGicon                      ,
    setStatusIconGicon                      ,


-- ** HasTooltip
    StatusIconHasTooltipPropertyInfo        ,
    constructStatusIconHasTooltip           ,
    getStatusIconHasTooltip                 ,
    setStatusIconHasTooltip                 ,


-- ** IconName
    StatusIconIconNamePropertyInfo          ,
    constructStatusIconIconName             ,
    getStatusIconIconName                   ,
    setStatusIconIconName                   ,


-- ** Orientation
    StatusIconOrientationPropertyInfo       ,
    getStatusIconOrientation                ,


-- ** Pixbuf
    StatusIconPixbufPropertyInfo            ,
    constructStatusIconPixbuf               ,
    getStatusIconPixbuf                     ,
    setStatusIconPixbuf                     ,


-- ** Screen
    StatusIconScreenPropertyInfo            ,
    constructStatusIconScreen               ,
    getStatusIconScreen                     ,
    setStatusIconScreen                     ,


-- ** Size
    StatusIconSizePropertyInfo              ,
    getStatusIconSize                       ,


-- ** Stock
    StatusIconStockPropertyInfo             ,
    constructStatusIconStock                ,
    getStatusIconStock                      ,
    setStatusIconStock                      ,


-- ** StorageType
    StatusIconStorageTypePropertyInfo       ,
    getStatusIconStorageType                ,


-- ** Title
    StatusIconTitlePropertyInfo             ,
    constructStatusIconTitle                ,
    getStatusIconTitle                      ,
    setStatusIconTitle                      ,


-- ** TooltipMarkup
    StatusIconTooltipMarkupPropertyInfo     ,
    constructStatusIconTooltipMarkup        ,
    getStatusIconTooltipMarkup              ,
    setStatusIconTooltipMarkup              ,


-- ** TooltipText
    StatusIconTooltipTextPropertyInfo       ,
    constructStatusIconTooltipText          ,
    getStatusIconTooltipText                ,
    setStatusIconTooltipText                ,


-- ** Visible
    StatusIconVisiblePropertyInfo           ,
    constructStatusIconVisible              ,
    getStatusIconVisible                    ,
    setStatusIconVisible                    ,




 -- * Signals
-- ** Activate
    StatusIconActivateCallback              ,
    StatusIconActivateCallbackC             ,
    StatusIconActivateSignalInfo            ,
    afterStatusIconActivate                 ,
    mkStatusIconActivateCallback            ,
    noStatusIconActivateCallback            ,
    onStatusIconActivate                    ,
    statusIconActivateCallbackWrapper       ,
    statusIconActivateClosure               ,


-- ** ButtonPressEvent
    StatusIconButtonPressEventCallback      ,
    StatusIconButtonPressEventCallbackC     ,
    StatusIconButtonPressEventSignalInfo    ,
    afterStatusIconButtonPressEvent         ,
    mkStatusIconButtonPressEventCallback    ,
    noStatusIconButtonPressEventCallback    ,
    onStatusIconButtonPressEvent            ,
    statusIconButtonPressEventCallbackWrapper,
    statusIconButtonPressEventClosure       ,


-- ** ButtonReleaseEvent
    StatusIconButtonReleaseEventCallback    ,
    StatusIconButtonReleaseEventCallbackC   ,
    StatusIconButtonReleaseEventSignalInfo  ,
    afterStatusIconButtonReleaseEvent       ,
    mkStatusIconButtonReleaseEventCallback  ,
    noStatusIconButtonReleaseEventCallback  ,
    onStatusIconButtonReleaseEvent          ,
    statusIconButtonReleaseEventCallbackWrapper,
    statusIconButtonReleaseEventClosure     ,


-- ** PopupMenu
    StatusIconPopupMenuCallback             ,
    StatusIconPopupMenuCallbackC            ,
    StatusIconPopupMenuSignalInfo           ,
    afterStatusIconPopupMenu                ,
    mkStatusIconPopupMenuCallback           ,
    noStatusIconPopupMenuCallback           ,
    onStatusIconPopupMenu                   ,
    statusIconPopupMenuCallbackWrapper      ,
    statusIconPopupMenuClosure              ,


-- ** QueryTooltip
    StatusIconQueryTooltipCallback          ,
    StatusIconQueryTooltipCallbackC         ,
    StatusIconQueryTooltipSignalInfo        ,
    afterStatusIconQueryTooltip             ,
    mkStatusIconQueryTooltipCallback        ,
    noStatusIconQueryTooltipCallback        ,
    onStatusIconQueryTooltip                ,
    statusIconQueryTooltipCallbackWrapper   ,
    statusIconQueryTooltipClosure           ,


-- ** ScrollEvent
    StatusIconScrollEventCallback           ,
    StatusIconScrollEventCallbackC          ,
    StatusIconScrollEventSignalInfo         ,
    afterStatusIconScrollEvent              ,
    mkStatusIconScrollEventCallback         ,
    noStatusIconScrollEventCallback         ,
    onStatusIconScrollEvent                 ,
    statusIconScrollEventCallbackWrapper    ,
    statusIconScrollEventClosure            ,


-- ** SizeChanged
    StatusIconSizeChangedCallback           ,
    StatusIconSizeChangedCallbackC          ,
    StatusIconSizeChangedSignalInfo         ,
    afterStatusIconSizeChanged              ,
    mkStatusIconSizeChangedCallback         ,
    noStatusIconSizeChangedCallback         ,
    onStatusIconSizeChanged                 ,
    statusIconSizeChangedCallbackWrapper    ,
    statusIconSizeChangedClosure            ,




    ) where

import Prelude ()
import Data.GI.Base.ShortPrelude

import qualified Data.Text as T
import qualified Data.ByteString.Char8 as B
import qualified Data.Map as Map

import GI.Gtk.Types
import GI.Gtk.Callbacks
import qualified GI.GObject as GObject
import qualified GI.Gdk as Gdk
import qualified GI.GdkPixbuf as GdkPixbuf
import qualified GI.Gio as Gio

newtype StatusIcon = StatusIcon (ForeignPtr StatusIcon)
foreign import ccall "gtk_status_icon_get_type"
    c_gtk_status_icon_get_type :: IO GType

type instance ParentTypes StatusIcon = StatusIconParentTypes
type StatusIconParentTypes = '[GObject.Object]

instance GObject StatusIcon where
    gobjectIsInitiallyUnowned _ = False
    gobjectType _ = c_gtk_status_icon_get_type
    

class GObject o => StatusIconK o
instance (GObject o, IsDescendantOf StatusIcon o) => StatusIconK o

toStatusIcon :: StatusIconK o => o -> IO StatusIcon
toStatusIcon = unsafeCastTo StatusIcon

noStatusIcon :: Maybe StatusIcon
noStatusIcon = Nothing

-- signal StatusIcon::activate
type StatusIconActivateCallback =
    IO ()

noStatusIconActivateCallback :: Maybe StatusIconActivateCallback
noStatusIconActivateCallback = Nothing

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

foreign import ccall "wrapper"
    mkStatusIconActivateCallback :: StatusIconActivateCallbackC -> IO (FunPtr StatusIconActivateCallbackC)

statusIconActivateClosure :: StatusIconActivateCallback -> IO Closure
statusIconActivateClosure cb = newCClosure =<< mkStatusIconActivateCallback wrapped
    where wrapped = statusIconActivateCallbackWrapper cb

statusIconActivateCallbackWrapper ::
    StatusIconActivateCallback ->
    Ptr () ->
    Ptr () ->
    IO ()
statusIconActivateCallbackWrapper _cb _ _ = do
    _cb 

onStatusIconActivate :: (GObject a, MonadIO m) => a -> StatusIconActivateCallback -> m SignalHandlerId
onStatusIconActivate obj cb = liftIO $ connectStatusIconActivate obj cb SignalConnectBefore
afterStatusIconActivate :: (GObject a, MonadIO m) => a -> StatusIconActivateCallback -> m SignalHandlerId
afterStatusIconActivate obj cb = connectStatusIconActivate obj cb SignalConnectAfter

connectStatusIconActivate :: (GObject a, MonadIO m) =>
                             a -> StatusIconActivateCallback -> SignalConnectMode -> m SignalHandlerId
connectStatusIconActivate obj cb after = liftIO $ do
    cb' <- mkStatusIconActivateCallback (statusIconActivateCallbackWrapper cb)
    connectSignalFunPtr obj "activate" cb' after

-- signal StatusIcon::button-press-event
type StatusIconButtonPressEventCallback =
    Gdk.EventButton ->
    IO Bool

noStatusIconButtonPressEventCallback :: Maybe StatusIconButtonPressEventCallback
noStatusIconButtonPressEventCallback = Nothing

type StatusIconButtonPressEventCallbackC =
    Ptr () ->                               -- object
    Ptr Gdk.EventButton ->
    Ptr () ->                               -- user_data
    IO CInt

foreign import ccall "wrapper"
    mkStatusIconButtonPressEventCallback :: StatusIconButtonPressEventCallbackC -> IO (FunPtr StatusIconButtonPressEventCallbackC)

statusIconButtonPressEventClosure :: StatusIconButtonPressEventCallback -> IO Closure
statusIconButtonPressEventClosure cb = newCClosure =<< mkStatusIconButtonPressEventCallback wrapped
    where wrapped = statusIconButtonPressEventCallbackWrapper cb

statusIconButtonPressEventCallbackWrapper ::
    StatusIconButtonPressEventCallback ->
    Ptr () ->
    Ptr Gdk.EventButton ->
    Ptr () ->
    IO CInt
statusIconButtonPressEventCallbackWrapper _cb _ event _ = do
    event' <- (newPtr 80 Gdk.EventButton) event
    result <- _cb  event'
    let result' = (fromIntegral . fromEnum) result
    return result'

onStatusIconButtonPressEvent :: (GObject a, MonadIO m) => a -> StatusIconButtonPressEventCallback -> m SignalHandlerId
onStatusIconButtonPressEvent obj cb = liftIO $ connectStatusIconButtonPressEvent obj cb SignalConnectBefore
afterStatusIconButtonPressEvent :: (GObject a, MonadIO m) => a -> StatusIconButtonPressEventCallback -> m SignalHandlerId
afterStatusIconButtonPressEvent obj cb = connectStatusIconButtonPressEvent obj cb SignalConnectAfter

connectStatusIconButtonPressEvent :: (GObject a, MonadIO m) =>
                                     a -> StatusIconButtonPressEventCallback -> SignalConnectMode -> m SignalHandlerId
connectStatusIconButtonPressEvent obj cb after = liftIO $ do
    cb' <- mkStatusIconButtonPressEventCallback (statusIconButtonPressEventCallbackWrapper cb)
    connectSignalFunPtr obj "button-press-event" cb' after

-- signal StatusIcon::button-release-event
type StatusIconButtonReleaseEventCallback =
    Gdk.EventButton ->
    IO Bool

noStatusIconButtonReleaseEventCallback :: Maybe StatusIconButtonReleaseEventCallback
noStatusIconButtonReleaseEventCallback = Nothing

type StatusIconButtonReleaseEventCallbackC =
    Ptr () ->                               -- object
    Ptr Gdk.EventButton ->
    Ptr () ->                               -- user_data
    IO CInt

foreign import ccall "wrapper"
    mkStatusIconButtonReleaseEventCallback :: StatusIconButtonReleaseEventCallbackC -> IO (FunPtr StatusIconButtonReleaseEventCallbackC)

statusIconButtonReleaseEventClosure :: StatusIconButtonReleaseEventCallback -> IO Closure
statusIconButtonReleaseEventClosure cb = newCClosure =<< mkStatusIconButtonReleaseEventCallback wrapped
    where wrapped = statusIconButtonReleaseEventCallbackWrapper cb

statusIconButtonReleaseEventCallbackWrapper ::
    StatusIconButtonReleaseEventCallback ->
    Ptr () ->
    Ptr Gdk.EventButton ->
    Ptr () ->
    IO CInt
statusIconButtonReleaseEventCallbackWrapper _cb _ event _ = do
    event' <- (newPtr 80 Gdk.EventButton) event
    result <- _cb  event'
    let result' = (fromIntegral . fromEnum) result
    return result'

onStatusIconButtonReleaseEvent :: (GObject a, MonadIO m) => a -> StatusIconButtonReleaseEventCallback -> m SignalHandlerId
onStatusIconButtonReleaseEvent obj cb = liftIO $ connectStatusIconButtonReleaseEvent obj cb SignalConnectBefore
afterStatusIconButtonReleaseEvent :: (GObject a, MonadIO m) => a -> StatusIconButtonReleaseEventCallback -> m SignalHandlerId
afterStatusIconButtonReleaseEvent obj cb = connectStatusIconButtonReleaseEvent obj cb SignalConnectAfter

connectStatusIconButtonReleaseEvent :: (GObject a, MonadIO m) =>
                                       a -> StatusIconButtonReleaseEventCallback -> SignalConnectMode -> m SignalHandlerId
connectStatusIconButtonReleaseEvent obj cb after = liftIO $ do
    cb' <- mkStatusIconButtonReleaseEventCallback (statusIconButtonReleaseEventCallbackWrapper cb)
    connectSignalFunPtr obj "button-release-event" cb' after

-- signal StatusIcon::popup-menu
type StatusIconPopupMenuCallback =
    Word32 ->
    Word32 ->
    IO ()

noStatusIconPopupMenuCallback :: Maybe StatusIconPopupMenuCallback
noStatusIconPopupMenuCallback = Nothing

type StatusIconPopupMenuCallbackC =
    Ptr () ->                               -- object
    Word32 ->
    Word32 ->
    Ptr () ->                               -- user_data
    IO ()

foreign import ccall "wrapper"
    mkStatusIconPopupMenuCallback :: StatusIconPopupMenuCallbackC -> IO (FunPtr StatusIconPopupMenuCallbackC)

statusIconPopupMenuClosure :: StatusIconPopupMenuCallback -> IO Closure
statusIconPopupMenuClosure cb = newCClosure =<< mkStatusIconPopupMenuCallback wrapped
    where wrapped = statusIconPopupMenuCallbackWrapper cb

statusIconPopupMenuCallbackWrapper ::
    StatusIconPopupMenuCallback ->
    Ptr () ->
    Word32 ->
    Word32 ->
    Ptr () ->
    IO ()
statusIconPopupMenuCallbackWrapper _cb _ button activate_time _ = do
    _cb  button activate_time

onStatusIconPopupMenu :: (GObject a, MonadIO m) => a -> StatusIconPopupMenuCallback -> m SignalHandlerId
onStatusIconPopupMenu obj cb = liftIO $ connectStatusIconPopupMenu obj cb SignalConnectBefore
afterStatusIconPopupMenu :: (GObject a, MonadIO m) => a -> StatusIconPopupMenuCallback -> m SignalHandlerId
afterStatusIconPopupMenu obj cb = connectStatusIconPopupMenu obj cb SignalConnectAfter

connectStatusIconPopupMenu :: (GObject a, MonadIO m) =>
                              a -> StatusIconPopupMenuCallback -> SignalConnectMode -> m SignalHandlerId
connectStatusIconPopupMenu obj cb after = liftIO $ do
    cb' <- mkStatusIconPopupMenuCallback (statusIconPopupMenuCallbackWrapper cb)
    connectSignalFunPtr obj "popup-menu" cb' after

-- signal StatusIcon::query-tooltip
type StatusIconQueryTooltipCallback =
    Int32 ->
    Int32 ->
    Bool ->
    Tooltip ->
    IO Bool

noStatusIconQueryTooltipCallback :: Maybe StatusIconQueryTooltipCallback
noStatusIconQueryTooltipCallback = Nothing

type StatusIconQueryTooltipCallbackC =
    Ptr () ->                               -- object
    Int32 ->
    Int32 ->
    CInt ->
    Ptr Tooltip ->
    Ptr () ->                               -- user_data
    IO CInt

foreign import ccall "wrapper"
    mkStatusIconQueryTooltipCallback :: StatusIconQueryTooltipCallbackC -> IO (FunPtr StatusIconQueryTooltipCallbackC)

statusIconQueryTooltipClosure :: StatusIconQueryTooltipCallback -> IO Closure
statusIconQueryTooltipClosure cb = newCClosure =<< mkStatusIconQueryTooltipCallback wrapped
    where wrapped = statusIconQueryTooltipCallbackWrapper cb

statusIconQueryTooltipCallbackWrapper ::
    StatusIconQueryTooltipCallback ->
    Ptr () ->
    Int32 ->
    Int32 ->
    CInt ->
    Ptr Tooltip ->
    Ptr () ->
    IO CInt
statusIconQueryTooltipCallbackWrapper _cb _ x y keyboard_mode tooltip _ = do
    let keyboard_mode' = (/= 0) keyboard_mode
    tooltip' <- (newObject Tooltip) tooltip
    result <- _cb  x y keyboard_mode' tooltip'
    let result' = (fromIntegral . fromEnum) result
    return result'

onStatusIconQueryTooltip :: (GObject a, MonadIO m) => a -> StatusIconQueryTooltipCallback -> m SignalHandlerId
onStatusIconQueryTooltip obj cb = liftIO $ connectStatusIconQueryTooltip obj cb SignalConnectBefore
afterStatusIconQueryTooltip :: (GObject a, MonadIO m) => a -> StatusIconQueryTooltipCallback -> m SignalHandlerId
afterStatusIconQueryTooltip obj cb = connectStatusIconQueryTooltip obj cb SignalConnectAfter

connectStatusIconQueryTooltip :: (GObject a, MonadIO m) =>
                                 a -> StatusIconQueryTooltipCallback -> SignalConnectMode -> m SignalHandlerId
connectStatusIconQueryTooltip obj cb after = liftIO $ do
    cb' <- mkStatusIconQueryTooltipCallback (statusIconQueryTooltipCallbackWrapper cb)
    connectSignalFunPtr obj "query-tooltip" cb' after

-- signal StatusIcon::scroll-event
type StatusIconScrollEventCallback =
    Gdk.EventScroll ->
    IO Bool

noStatusIconScrollEventCallback :: Maybe StatusIconScrollEventCallback
noStatusIconScrollEventCallback = Nothing

type StatusIconScrollEventCallbackC =
    Ptr () ->                               -- object
    Ptr Gdk.EventScroll ->
    Ptr () ->                               -- user_data
    IO CInt

foreign import ccall "wrapper"
    mkStatusIconScrollEventCallback :: StatusIconScrollEventCallbackC -> IO (FunPtr StatusIconScrollEventCallbackC)

statusIconScrollEventClosure :: StatusIconScrollEventCallback -> IO Closure
statusIconScrollEventClosure cb = newCClosure =<< mkStatusIconScrollEventCallback wrapped
    where wrapped = statusIconScrollEventCallbackWrapper cb

statusIconScrollEventCallbackWrapper ::
    StatusIconScrollEventCallback ->
    Ptr () ->
    Ptr Gdk.EventScroll ->
    Ptr () ->
    IO CInt
statusIconScrollEventCallbackWrapper _cb _ event _ = do
    event' <- (newPtr 88 Gdk.EventScroll) event
    result <- _cb  event'
    let result' = (fromIntegral . fromEnum) result
    return result'

onStatusIconScrollEvent :: (GObject a, MonadIO m) => a -> StatusIconScrollEventCallback -> m SignalHandlerId
onStatusIconScrollEvent obj cb = liftIO $ connectStatusIconScrollEvent obj cb SignalConnectBefore
afterStatusIconScrollEvent :: (GObject a, MonadIO m) => a -> StatusIconScrollEventCallback -> m SignalHandlerId
afterStatusIconScrollEvent obj cb = connectStatusIconScrollEvent obj cb SignalConnectAfter

connectStatusIconScrollEvent :: (GObject a, MonadIO m) =>
                                a -> StatusIconScrollEventCallback -> SignalConnectMode -> m SignalHandlerId
connectStatusIconScrollEvent obj cb after = liftIO $ do
    cb' <- mkStatusIconScrollEventCallback (statusIconScrollEventCallbackWrapper cb)
    connectSignalFunPtr obj "scroll-event" cb' after

-- signal StatusIcon::size-changed
type StatusIconSizeChangedCallback =
    Int32 ->
    IO Bool

noStatusIconSizeChangedCallback :: Maybe StatusIconSizeChangedCallback
noStatusIconSizeChangedCallback = Nothing

type StatusIconSizeChangedCallbackC =
    Ptr () ->                               -- object
    Int32 ->
    Ptr () ->                               -- user_data
    IO CInt

foreign import ccall "wrapper"
    mkStatusIconSizeChangedCallback :: StatusIconSizeChangedCallbackC -> IO (FunPtr StatusIconSizeChangedCallbackC)

statusIconSizeChangedClosure :: StatusIconSizeChangedCallback -> IO Closure
statusIconSizeChangedClosure cb = newCClosure =<< mkStatusIconSizeChangedCallback wrapped
    where wrapped = statusIconSizeChangedCallbackWrapper cb

statusIconSizeChangedCallbackWrapper ::
    StatusIconSizeChangedCallback ->
    Ptr () ->
    Int32 ->
    Ptr () ->
    IO CInt
statusIconSizeChangedCallbackWrapper _cb _ size _ = do
    result <- _cb  size
    let result' = (fromIntegral . fromEnum) result
    return result'

onStatusIconSizeChanged :: (GObject a, MonadIO m) => a -> StatusIconSizeChangedCallback -> m SignalHandlerId
onStatusIconSizeChanged obj cb = liftIO $ connectStatusIconSizeChanged obj cb SignalConnectBefore
afterStatusIconSizeChanged :: (GObject a, MonadIO m) => a -> StatusIconSizeChangedCallback -> m SignalHandlerId
afterStatusIconSizeChanged obj cb = connectStatusIconSizeChanged obj cb SignalConnectAfter

connectStatusIconSizeChanged :: (GObject a, MonadIO m) =>
                                a -> StatusIconSizeChangedCallback -> SignalConnectMode -> m SignalHandlerId
connectStatusIconSizeChanged obj cb after = liftIO $ do
    cb' <- mkStatusIconSizeChangedCallback (statusIconSizeChangedCallbackWrapper cb)
    connectSignalFunPtr obj "size-changed" cb' after

-- VVV Prop "embedded"
   -- Type: TBasicType TBoolean
   -- Flags: [PropertyReadable]

getStatusIconEmbedded :: (MonadIO m, StatusIconK o) => o -> m Bool
getStatusIconEmbedded obj = liftIO $ getObjectPropertyBool obj "embedded"

data StatusIconEmbeddedPropertyInfo
instance AttrInfo StatusIconEmbeddedPropertyInfo where
    type AttrAllowedOps StatusIconEmbeddedPropertyInfo = '[ 'AttrGet]
    type AttrSetTypeConstraint StatusIconEmbeddedPropertyInfo = (~) ()
    type AttrBaseTypeConstraint StatusIconEmbeddedPropertyInfo = StatusIconK
    type AttrGetType StatusIconEmbeddedPropertyInfo = Bool
    type AttrLabel StatusIconEmbeddedPropertyInfo = "StatusIcon::embedded"
    attrGet _ = getStatusIconEmbedded
    attrSet _ = undefined
    attrConstruct _ = undefined

-- VVV Prop "file"
   -- Type: TBasicType TUTF8
   -- Flags: [PropertyWritable]

setStatusIconFile :: (MonadIO m, StatusIconK o) => o -> T.Text -> m ()
setStatusIconFile obj val = liftIO $ setObjectPropertyString obj "file" val

constructStatusIconFile :: T.Text -> IO ([Char], GValue)
constructStatusIconFile val = constructObjectPropertyString "file" val

data StatusIconFilePropertyInfo
instance AttrInfo StatusIconFilePropertyInfo where
    type AttrAllowedOps StatusIconFilePropertyInfo = '[ 'AttrSet, 'AttrConstruct]
    type AttrSetTypeConstraint StatusIconFilePropertyInfo = (~) T.Text
    type AttrBaseTypeConstraint StatusIconFilePropertyInfo = StatusIconK
    type AttrGetType StatusIconFilePropertyInfo = ()
    type AttrLabel StatusIconFilePropertyInfo = "StatusIcon::file"
    attrGet _ = undefined
    attrSet _ = setStatusIconFile
    attrConstruct _ = constructStatusIconFile

-- VVV Prop "gicon"
   -- Type: TInterface "Gio" "Icon"
   -- Flags: [PropertyReadable,PropertyWritable]

getStatusIconGicon :: (MonadIO m, StatusIconK o) => o -> m Gio.Icon
getStatusIconGicon obj = liftIO $ getObjectPropertyObject obj "gicon" Gio.Icon

setStatusIconGicon :: (MonadIO m, StatusIconK o, Gio.IconK a) => o -> a -> m ()
setStatusIconGicon obj val = liftIO $ setObjectPropertyObject obj "gicon" val

constructStatusIconGicon :: (Gio.IconK a) => a -> IO ([Char], GValue)
constructStatusIconGicon val = constructObjectPropertyObject "gicon" val

data StatusIconGiconPropertyInfo
instance AttrInfo StatusIconGiconPropertyInfo where
    type AttrAllowedOps StatusIconGiconPropertyInfo = '[ 'AttrSet, 'AttrConstruct, 'AttrGet]
    type AttrSetTypeConstraint StatusIconGiconPropertyInfo = Gio.IconK
    type AttrBaseTypeConstraint StatusIconGiconPropertyInfo = StatusIconK
    type AttrGetType StatusIconGiconPropertyInfo = Gio.Icon
    type AttrLabel StatusIconGiconPropertyInfo = "StatusIcon::gicon"
    attrGet _ = getStatusIconGicon
    attrSet _ = setStatusIconGicon
    attrConstruct _ = constructStatusIconGicon

-- VVV Prop "has-tooltip"
   -- Type: TBasicType TBoolean
   -- Flags: [PropertyReadable,PropertyWritable]

getStatusIconHasTooltip :: (MonadIO m, StatusIconK o) => o -> m Bool
getStatusIconHasTooltip obj = liftIO $ getObjectPropertyBool obj "has-tooltip"

setStatusIconHasTooltip :: (MonadIO m, StatusIconK o) => o -> Bool -> m ()
setStatusIconHasTooltip obj val = liftIO $ setObjectPropertyBool obj "has-tooltip" val

constructStatusIconHasTooltip :: Bool -> IO ([Char], GValue)
constructStatusIconHasTooltip val = constructObjectPropertyBool "has-tooltip" val

data StatusIconHasTooltipPropertyInfo
instance AttrInfo StatusIconHasTooltipPropertyInfo where
    type AttrAllowedOps StatusIconHasTooltipPropertyInfo = '[ 'AttrSet, 'AttrConstruct, 'AttrGet]
    type AttrSetTypeConstraint StatusIconHasTooltipPropertyInfo = (~) Bool
    type AttrBaseTypeConstraint StatusIconHasTooltipPropertyInfo = StatusIconK
    type AttrGetType StatusIconHasTooltipPropertyInfo = Bool
    type AttrLabel StatusIconHasTooltipPropertyInfo = "StatusIcon::has-tooltip"
    attrGet _ = getStatusIconHasTooltip
    attrSet _ = setStatusIconHasTooltip
    attrConstruct _ = constructStatusIconHasTooltip

-- VVV Prop "icon-name"
   -- Type: TBasicType TUTF8
   -- Flags: [PropertyReadable,PropertyWritable]

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

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

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

data StatusIconIconNamePropertyInfo
instance AttrInfo StatusIconIconNamePropertyInfo where
    type AttrAllowedOps StatusIconIconNamePropertyInfo = '[ 'AttrSet, 'AttrConstruct, 'AttrGet]
    type AttrSetTypeConstraint StatusIconIconNamePropertyInfo = (~) T.Text
    type AttrBaseTypeConstraint StatusIconIconNamePropertyInfo = StatusIconK
    type AttrGetType StatusIconIconNamePropertyInfo = T.Text
    type AttrLabel StatusIconIconNamePropertyInfo = "StatusIcon::icon-name"
    attrGet _ = getStatusIconIconName
    attrSet _ = setStatusIconIconName
    attrConstruct _ = constructStatusIconIconName

-- VVV Prop "orientation"
   -- Type: TInterface "Gtk" "Orientation"
   -- Flags: [PropertyReadable]

getStatusIconOrientation :: (MonadIO m, StatusIconK o) => o -> m Orientation
getStatusIconOrientation obj = liftIO $ getObjectPropertyEnum obj "orientation"

data StatusIconOrientationPropertyInfo
instance AttrInfo StatusIconOrientationPropertyInfo where
    type AttrAllowedOps StatusIconOrientationPropertyInfo = '[ 'AttrGet]
    type AttrSetTypeConstraint StatusIconOrientationPropertyInfo = (~) ()
    type AttrBaseTypeConstraint StatusIconOrientationPropertyInfo = StatusIconK
    type AttrGetType StatusIconOrientationPropertyInfo = Orientation
    type AttrLabel StatusIconOrientationPropertyInfo = "StatusIcon::orientation"
    attrGet _ = getStatusIconOrientation
    attrSet _ = undefined
    attrConstruct _ = undefined

-- VVV Prop "pixbuf"
   -- Type: TInterface "GdkPixbuf" "Pixbuf"
   -- Flags: [PropertyReadable,PropertyWritable]

getStatusIconPixbuf :: (MonadIO m, StatusIconK o) => o -> m GdkPixbuf.Pixbuf
getStatusIconPixbuf obj = liftIO $ getObjectPropertyObject obj "pixbuf" GdkPixbuf.Pixbuf

setStatusIconPixbuf :: (MonadIO m, StatusIconK o, GdkPixbuf.PixbufK a) => o -> a -> m ()
setStatusIconPixbuf obj val = liftIO $ setObjectPropertyObject obj "pixbuf" val

constructStatusIconPixbuf :: (GdkPixbuf.PixbufK a) => a -> IO ([Char], GValue)
constructStatusIconPixbuf val = constructObjectPropertyObject "pixbuf" val

data StatusIconPixbufPropertyInfo
instance AttrInfo StatusIconPixbufPropertyInfo where
    type AttrAllowedOps StatusIconPixbufPropertyInfo = '[ 'AttrSet, 'AttrConstruct, 'AttrGet]
    type AttrSetTypeConstraint StatusIconPixbufPropertyInfo = GdkPixbuf.PixbufK
    type AttrBaseTypeConstraint StatusIconPixbufPropertyInfo = StatusIconK
    type AttrGetType StatusIconPixbufPropertyInfo = GdkPixbuf.Pixbuf
    type AttrLabel StatusIconPixbufPropertyInfo = "StatusIcon::pixbuf"
    attrGet _ = getStatusIconPixbuf
    attrSet _ = setStatusIconPixbuf
    attrConstruct _ = constructStatusIconPixbuf

-- VVV Prop "screen"
   -- Type: TInterface "Gdk" "Screen"
   -- Flags: [PropertyReadable,PropertyWritable]

getStatusIconScreen :: (MonadIO m, StatusIconK o) => o -> m Gdk.Screen
getStatusIconScreen obj = liftIO $ getObjectPropertyObject obj "screen" Gdk.Screen

setStatusIconScreen :: (MonadIO m, StatusIconK o, Gdk.ScreenK a) => o -> a -> m ()
setStatusIconScreen obj val = liftIO $ setObjectPropertyObject obj "screen" val

constructStatusIconScreen :: (Gdk.ScreenK a) => a -> IO ([Char], GValue)
constructStatusIconScreen val = constructObjectPropertyObject "screen" val

data StatusIconScreenPropertyInfo
instance AttrInfo StatusIconScreenPropertyInfo where
    type AttrAllowedOps StatusIconScreenPropertyInfo = '[ 'AttrSet, 'AttrConstruct, 'AttrGet]
    type AttrSetTypeConstraint StatusIconScreenPropertyInfo = Gdk.ScreenK
    type AttrBaseTypeConstraint StatusIconScreenPropertyInfo = StatusIconK
    type AttrGetType StatusIconScreenPropertyInfo = Gdk.Screen
    type AttrLabel StatusIconScreenPropertyInfo = "StatusIcon::screen"
    attrGet _ = getStatusIconScreen
    attrSet _ = setStatusIconScreen
    attrConstruct _ = constructStatusIconScreen

-- VVV Prop "size"
   -- Type: TBasicType TInt32
   -- Flags: [PropertyReadable]

getStatusIconSize :: (MonadIO m, StatusIconK o) => o -> m Int32
getStatusIconSize obj = liftIO $ getObjectPropertyCInt obj "size"

data StatusIconSizePropertyInfo
instance AttrInfo StatusIconSizePropertyInfo where
    type AttrAllowedOps StatusIconSizePropertyInfo = '[ 'AttrGet]
    type AttrSetTypeConstraint StatusIconSizePropertyInfo = (~) ()
    type AttrBaseTypeConstraint StatusIconSizePropertyInfo = StatusIconK
    type AttrGetType StatusIconSizePropertyInfo = Int32
    type AttrLabel StatusIconSizePropertyInfo = "StatusIcon::size"
    attrGet _ = getStatusIconSize
    attrSet _ = undefined
    attrConstruct _ = undefined

-- VVV Prop "stock"
   -- Type: TBasicType TUTF8
   -- Flags: [PropertyReadable,PropertyWritable]

getStatusIconStock :: (MonadIO m, StatusIconK o) => o -> m T.Text
getStatusIconStock obj = liftIO $ getObjectPropertyString obj "stock"

setStatusIconStock :: (MonadIO m, StatusIconK o) => o -> T.Text -> m ()
setStatusIconStock obj val = liftIO $ setObjectPropertyString obj "stock" val

constructStatusIconStock :: T.Text -> IO ([Char], GValue)
constructStatusIconStock val = constructObjectPropertyString "stock" val

data StatusIconStockPropertyInfo
instance AttrInfo StatusIconStockPropertyInfo where
    type AttrAllowedOps StatusIconStockPropertyInfo = '[ 'AttrSet, 'AttrConstruct, 'AttrGet]
    type AttrSetTypeConstraint StatusIconStockPropertyInfo = (~) T.Text
    type AttrBaseTypeConstraint StatusIconStockPropertyInfo = StatusIconK
    type AttrGetType StatusIconStockPropertyInfo = T.Text
    type AttrLabel StatusIconStockPropertyInfo = "StatusIcon::stock"
    attrGet _ = getStatusIconStock
    attrSet _ = setStatusIconStock
    attrConstruct _ = constructStatusIconStock

-- VVV Prop "storage-type"
   -- Type: TInterface "Gtk" "ImageType"
   -- Flags: [PropertyReadable]

getStatusIconStorageType :: (MonadIO m, StatusIconK o) => o -> m ImageType
getStatusIconStorageType obj = liftIO $ getObjectPropertyEnum obj "storage-type"

data StatusIconStorageTypePropertyInfo
instance AttrInfo StatusIconStorageTypePropertyInfo where
    type AttrAllowedOps StatusIconStorageTypePropertyInfo = '[ 'AttrGet]
    type AttrSetTypeConstraint StatusIconStorageTypePropertyInfo = (~) ()
    type AttrBaseTypeConstraint StatusIconStorageTypePropertyInfo = StatusIconK
    type AttrGetType StatusIconStorageTypePropertyInfo = ImageType
    type AttrLabel StatusIconStorageTypePropertyInfo = "StatusIcon::storage-type"
    attrGet _ = getStatusIconStorageType
    attrSet _ = undefined
    attrConstruct _ = undefined

-- VVV Prop "title"
   -- Type: TBasicType TUTF8
   -- Flags: [PropertyReadable,PropertyWritable]

getStatusIconTitle :: (MonadIO m, StatusIconK o) => o -> m T.Text
getStatusIconTitle obj = liftIO $ getObjectPropertyString obj "title"

setStatusIconTitle :: (MonadIO m, StatusIconK o) => o -> T.Text -> m ()
setStatusIconTitle obj val = liftIO $ setObjectPropertyString obj "title" val

constructStatusIconTitle :: T.Text -> IO ([Char], GValue)
constructStatusIconTitle val = constructObjectPropertyString "title" val

data StatusIconTitlePropertyInfo
instance AttrInfo StatusIconTitlePropertyInfo where
    type AttrAllowedOps StatusIconTitlePropertyInfo = '[ 'AttrSet, 'AttrConstruct, 'AttrGet]
    type AttrSetTypeConstraint StatusIconTitlePropertyInfo = (~) T.Text
    type AttrBaseTypeConstraint StatusIconTitlePropertyInfo = StatusIconK
    type AttrGetType StatusIconTitlePropertyInfo = T.Text
    type AttrLabel StatusIconTitlePropertyInfo = "StatusIcon::title"
    attrGet _ = getStatusIconTitle
    attrSet _ = setStatusIconTitle
    attrConstruct _ = constructStatusIconTitle

-- VVV Prop "tooltip-markup"
   -- Type: TBasicType TUTF8
   -- Flags: [PropertyReadable,PropertyWritable]

getStatusIconTooltipMarkup :: (MonadIO m, StatusIconK o) => o -> m T.Text
getStatusIconTooltipMarkup obj = liftIO $ getObjectPropertyString obj "tooltip-markup"

setStatusIconTooltipMarkup :: (MonadIO m, StatusIconK o) => o -> T.Text -> m ()
setStatusIconTooltipMarkup obj val = liftIO $ setObjectPropertyString obj "tooltip-markup" val

constructStatusIconTooltipMarkup :: T.Text -> IO ([Char], GValue)
constructStatusIconTooltipMarkup val = constructObjectPropertyString "tooltip-markup" val

data StatusIconTooltipMarkupPropertyInfo
instance AttrInfo StatusIconTooltipMarkupPropertyInfo where
    type AttrAllowedOps StatusIconTooltipMarkupPropertyInfo = '[ 'AttrSet, 'AttrConstruct, 'AttrGet]
    type AttrSetTypeConstraint StatusIconTooltipMarkupPropertyInfo = (~) T.Text
    type AttrBaseTypeConstraint StatusIconTooltipMarkupPropertyInfo = StatusIconK
    type AttrGetType StatusIconTooltipMarkupPropertyInfo = T.Text
    type AttrLabel StatusIconTooltipMarkupPropertyInfo = "StatusIcon::tooltip-markup"
    attrGet _ = getStatusIconTooltipMarkup
    attrSet _ = setStatusIconTooltipMarkup
    attrConstruct _ = constructStatusIconTooltipMarkup

-- VVV Prop "tooltip-text"
   -- Type: TBasicType TUTF8
   -- Flags: [PropertyReadable,PropertyWritable]

getStatusIconTooltipText :: (MonadIO m, StatusIconK o) => o -> m T.Text
getStatusIconTooltipText obj = liftIO $ getObjectPropertyString obj "tooltip-text"

setStatusIconTooltipText :: (MonadIO m, StatusIconK o) => o -> T.Text -> m ()
setStatusIconTooltipText obj val = liftIO $ setObjectPropertyString obj "tooltip-text" val

constructStatusIconTooltipText :: T.Text -> IO ([Char], GValue)
constructStatusIconTooltipText val = constructObjectPropertyString "tooltip-text" val

data StatusIconTooltipTextPropertyInfo
instance AttrInfo StatusIconTooltipTextPropertyInfo where
    type AttrAllowedOps StatusIconTooltipTextPropertyInfo = '[ 'AttrSet, 'AttrConstruct, 'AttrGet]
    type AttrSetTypeConstraint StatusIconTooltipTextPropertyInfo = (~) T.Text
    type AttrBaseTypeConstraint StatusIconTooltipTextPropertyInfo = StatusIconK
    type AttrGetType StatusIconTooltipTextPropertyInfo = T.Text
    type AttrLabel StatusIconTooltipTextPropertyInfo = "StatusIcon::tooltip-text"
    attrGet _ = getStatusIconTooltipText
    attrSet _ = setStatusIconTooltipText
    attrConstruct _ = constructStatusIconTooltipText

-- VVV Prop "visible"
   -- Type: TBasicType TBoolean
   -- Flags: [PropertyReadable,PropertyWritable]

getStatusIconVisible :: (MonadIO m, StatusIconK o) => o -> m Bool
getStatusIconVisible obj = liftIO $ getObjectPropertyBool obj "visible"

setStatusIconVisible :: (MonadIO m, StatusIconK o) => o -> Bool -> m ()
setStatusIconVisible obj val = liftIO $ setObjectPropertyBool obj "visible" val

constructStatusIconVisible :: Bool -> IO ([Char], GValue)
constructStatusIconVisible val = constructObjectPropertyBool "visible" val

data StatusIconVisiblePropertyInfo
instance AttrInfo StatusIconVisiblePropertyInfo where
    type AttrAllowedOps StatusIconVisiblePropertyInfo = '[ 'AttrSet, 'AttrConstruct, 'AttrGet]
    type AttrSetTypeConstraint StatusIconVisiblePropertyInfo = (~) Bool
    type AttrBaseTypeConstraint StatusIconVisiblePropertyInfo = StatusIconK
    type AttrGetType StatusIconVisiblePropertyInfo = Bool
    type AttrLabel StatusIconVisiblePropertyInfo = "StatusIcon::visible"
    attrGet _ = getStatusIconVisible
    attrSet _ = setStatusIconVisible
    attrConstruct _ = constructStatusIconVisible

type instance AttributeList StatusIcon = StatusIconAttributeList
type StatusIconAttributeList = ('[ '("embedded", StatusIconEmbeddedPropertyInfo), '("file", StatusIconFilePropertyInfo), '("gicon", StatusIconGiconPropertyInfo), '("has-tooltip", StatusIconHasTooltipPropertyInfo), '("icon-name", StatusIconIconNamePropertyInfo), '("orientation", StatusIconOrientationPropertyInfo), '("pixbuf", StatusIconPixbufPropertyInfo), '("screen", StatusIconScreenPropertyInfo), '("size", StatusIconSizePropertyInfo), '("stock", StatusIconStockPropertyInfo), '("storage-type", StatusIconStorageTypePropertyInfo), '("title", StatusIconTitlePropertyInfo), '("tooltip-markup", StatusIconTooltipMarkupPropertyInfo), '("tooltip-text", StatusIconTooltipTextPropertyInfo), '("visible", StatusIconVisiblePropertyInfo)] :: [(Symbol, *)])

data StatusIconActivateSignalInfo
instance SignalInfo StatusIconActivateSignalInfo where
    type HaskellCallbackType StatusIconActivateSignalInfo = StatusIconActivateCallback
    connectSignal _ = connectStatusIconActivate

data StatusIconButtonPressEventSignalInfo
instance SignalInfo StatusIconButtonPressEventSignalInfo where
    type HaskellCallbackType StatusIconButtonPressEventSignalInfo = StatusIconButtonPressEventCallback
    connectSignal _ = connectStatusIconButtonPressEvent

data StatusIconButtonReleaseEventSignalInfo
instance SignalInfo StatusIconButtonReleaseEventSignalInfo where
    type HaskellCallbackType StatusIconButtonReleaseEventSignalInfo = StatusIconButtonReleaseEventCallback
    connectSignal _ = connectStatusIconButtonReleaseEvent

data StatusIconPopupMenuSignalInfo
instance SignalInfo StatusIconPopupMenuSignalInfo where
    type HaskellCallbackType StatusIconPopupMenuSignalInfo = StatusIconPopupMenuCallback
    connectSignal _ = connectStatusIconPopupMenu

data StatusIconQueryTooltipSignalInfo
instance SignalInfo StatusIconQueryTooltipSignalInfo where
    type HaskellCallbackType StatusIconQueryTooltipSignalInfo = StatusIconQueryTooltipCallback
    connectSignal _ = connectStatusIconQueryTooltip

data StatusIconScrollEventSignalInfo
instance SignalInfo StatusIconScrollEventSignalInfo where
    type HaskellCallbackType StatusIconScrollEventSignalInfo = StatusIconScrollEventCallback
    connectSignal _ = connectStatusIconScrollEvent

data StatusIconSizeChangedSignalInfo
instance SignalInfo StatusIconSizeChangedSignalInfo where
    type HaskellCallbackType StatusIconSizeChangedSignalInfo = StatusIconSizeChangedCallback
    connectSignal _ = connectStatusIconSizeChanged

type instance SignalList StatusIcon = StatusIconSignalList
type StatusIconSignalList = ('[ '("activate", StatusIconActivateSignalInfo), '("button-press-event", StatusIconButtonPressEventSignalInfo), '("button-release-event", StatusIconButtonReleaseEventSignalInfo), '("notify", GObject.ObjectNotifySignalInfo), '("popup-menu", StatusIconPopupMenuSignalInfo), '("query-tooltip", StatusIconQueryTooltipSignalInfo), '("scroll-event", StatusIconScrollEventSignalInfo), '("size-changed", StatusIconSizeChangedSignalInfo), '("notify::[property]", GObjectNotifySignalInfo)] :: [(Symbol, *)])

-- method StatusIcon::new
-- method type : Constructor
-- Args : []
-- Lengths : []
-- hInArgs : []
-- returnType : TInterface "Gtk" "StatusIcon"
-- throws : False
-- Skip return : False

foreign import ccall "gtk_status_icon_new" gtk_status_icon_new :: 
    IO (Ptr StatusIcon)

{-# DEPRECATED statusIconNew ["(Since version 3.14)","Use notifications"]#-}
statusIconNew ::
    (MonadIO m) =>
    m StatusIcon
statusIconNew  = liftIO $ do
    result <- gtk_status_icon_new
    checkUnexpectedReturnNULL "gtk_status_icon_new" result
    result' <- (wrapObject StatusIcon) result
    return result'

-- method StatusIcon::new_from_file
-- method type : Constructor
-- Args : [Arg {argName = "filename", argType = TBasicType TFileName, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "filename", argType = TBasicType TFileName, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TInterface "Gtk" "StatusIcon"
-- throws : False
-- Skip return : False

foreign import ccall "gtk_status_icon_new_from_file" gtk_status_icon_new_from_file :: 
    CString ->                              -- filename : TBasicType TFileName
    IO (Ptr StatusIcon)

{-# DEPRECATED statusIconNewFromFile ["(Since version 3.14)","Use notifications"]#-}
statusIconNewFromFile ::
    (MonadIO m) =>
    [Char] ->                               -- filename
    m StatusIcon
statusIconNewFromFile filename = liftIO $ do
    filename' <- stringToCString filename
    result <- gtk_status_icon_new_from_file filename'
    checkUnexpectedReturnNULL "gtk_status_icon_new_from_file" result
    result' <- (wrapObject StatusIcon) result
    freeMem filename'
    return result'

-- method StatusIcon::new_from_gicon
-- method type : Constructor
-- Args : [Arg {argName = "icon", argType = TInterface "Gio" "Icon", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "icon", argType = TInterface "Gio" "Icon", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TInterface "Gtk" "StatusIcon"
-- throws : False
-- Skip return : False

foreign import ccall "gtk_status_icon_new_from_gicon" gtk_status_icon_new_from_gicon :: 
    Ptr Gio.Icon ->                         -- icon : TInterface "Gio" "Icon"
    IO (Ptr StatusIcon)

{-# DEPRECATED statusIconNewFromGicon ["(Since version 3.14)","Use notifications"]#-}
statusIconNewFromGicon ::
    (MonadIO m, Gio.IconK a) =>
    a ->                                    -- icon
    m StatusIcon
statusIconNewFromGicon icon = liftIO $ do
    let icon' = unsafeManagedPtrCastPtr icon
    result <- gtk_status_icon_new_from_gicon icon'
    checkUnexpectedReturnNULL "gtk_status_icon_new_from_gicon" result
    result' <- (wrapObject StatusIcon) result
    touchManagedPtr icon
    return result'

-- method StatusIcon::new_from_icon_name
-- method type : Constructor
-- Args : [Arg {argName = "icon_name", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "icon_name", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TInterface "Gtk" "StatusIcon"
-- throws : False
-- Skip return : False

foreign import ccall "gtk_status_icon_new_from_icon_name" gtk_status_icon_new_from_icon_name :: 
    CString ->                              -- icon_name : TBasicType TUTF8
    IO (Ptr StatusIcon)

{-# DEPRECATED statusIconNewFromIconName ["(Since version 3.14)","Use notifications"]#-}
statusIconNewFromIconName ::
    (MonadIO m) =>
    T.Text ->                               -- icon_name
    m StatusIcon
statusIconNewFromIconName icon_name = liftIO $ do
    icon_name' <- textToCString icon_name
    result <- gtk_status_icon_new_from_icon_name icon_name'
    checkUnexpectedReturnNULL "gtk_status_icon_new_from_icon_name" result
    result' <- (wrapObject StatusIcon) result
    freeMem icon_name'
    return result'

-- method StatusIcon::new_from_pixbuf
-- method type : Constructor
-- Args : [Arg {argName = "pixbuf", argType = TInterface "GdkPixbuf" "Pixbuf", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "pixbuf", argType = TInterface "GdkPixbuf" "Pixbuf", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TInterface "Gtk" "StatusIcon"
-- throws : False
-- Skip return : False

foreign import ccall "gtk_status_icon_new_from_pixbuf" gtk_status_icon_new_from_pixbuf :: 
    Ptr GdkPixbuf.Pixbuf ->                 -- pixbuf : TInterface "GdkPixbuf" "Pixbuf"
    IO (Ptr StatusIcon)

{-# DEPRECATED statusIconNewFromPixbuf ["(Since version 3.14)","Use notifications"]#-}
statusIconNewFromPixbuf ::
    (MonadIO m, GdkPixbuf.PixbufK a) =>
    a ->                                    -- pixbuf
    m StatusIcon
statusIconNewFromPixbuf pixbuf = liftIO $ do
    let pixbuf' = unsafeManagedPtrCastPtr pixbuf
    result <- gtk_status_icon_new_from_pixbuf pixbuf'
    checkUnexpectedReturnNULL "gtk_status_icon_new_from_pixbuf" result
    result' <- (wrapObject StatusIcon) result
    touchManagedPtr pixbuf
    return result'

-- method StatusIcon::new_from_stock
-- method type : Constructor
-- Args : [Arg {argName = "stock_id", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "stock_id", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TInterface "Gtk" "StatusIcon"
-- throws : False
-- Skip return : False

foreign import ccall "gtk_status_icon_new_from_stock" gtk_status_icon_new_from_stock :: 
    CString ->                              -- stock_id : TBasicType TUTF8
    IO (Ptr StatusIcon)

{-# DEPRECATED statusIconNewFromStock ["(Since version 3.10)","Use gtk_status_icon_new_from_icon_name() instead."]#-}
statusIconNewFromStock ::
    (MonadIO m) =>
    T.Text ->                               -- stock_id
    m StatusIcon
statusIconNewFromStock stock_id = liftIO $ do
    stock_id' <- textToCString stock_id
    result <- gtk_status_icon_new_from_stock stock_id'
    checkUnexpectedReturnNULL "gtk_status_icon_new_from_stock" result
    result' <- (wrapObject StatusIcon) result
    freeMem stock_id'
    return result'

-- method StatusIcon::get_geometry
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "StatusIcon", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "screen", argType = TInterface "Gdk" "Screen", direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "area", argType = TInterface "Gdk" "Rectangle", direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "orientation", argType = TInterface "Gtk" "Orientation", direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferEverything}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "StatusIcon", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TBoolean
-- throws : False
-- Skip return : False

foreign import ccall "gtk_status_icon_get_geometry" gtk_status_icon_get_geometry :: 
    Ptr StatusIcon ->                       -- _obj : TInterface "Gtk" "StatusIcon"
    Ptr (Ptr Gdk.Screen) ->                 -- screen : TInterface "Gdk" "Screen"
    Ptr Gdk.Rectangle ->                    -- area : TInterface "Gdk" "Rectangle"
    Ptr CUInt ->                            -- orientation : TInterface "Gtk" "Orientation"
    IO CInt

{-# DEPRECATED statusIconGetGeometry ["(Since version 3.14)","Use notifications"]#-}
statusIconGetGeometry ::
    (MonadIO m, StatusIconK a) =>
    a ->                                    -- _obj
    m (Bool,Gdk.Screen,Gdk.Rectangle,Orientation)
statusIconGetGeometry _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    screen <- allocMem :: IO (Ptr (Ptr Gdk.Screen))
    area <- callocBoxedBytes 16 :: IO (Ptr Gdk.Rectangle)
    orientation <- allocMem :: IO (Ptr CUInt)
    result <- gtk_status_icon_get_geometry _obj' screen area orientation
    let result' = (/= 0) result
    screen' <- peek screen
    screen'' <- (newObject Gdk.Screen) screen'
    area' <- (wrapBoxed Gdk.Rectangle) area
    orientation' <- peek orientation
    let orientation'' = (toEnum . fromIntegral) orientation'
    touchManagedPtr _obj
    freeMem screen
    freeMem orientation
    return (result', screen'', area', orientation'')

-- method StatusIcon::get_gicon
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "StatusIcon", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "StatusIcon", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TInterface "Gio" "Icon"
-- throws : False
-- Skip return : False

foreign import ccall "gtk_status_icon_get_gicon" gtk_status_icon_get_gicon :: 
    Ptr StatusIcon ->                       -- _obj : TInterface "Gtk" "StatusIcon"
    IO (Ptr Gio.Icon)

{-# DEPRECATED statusIconGetGicon ["(Since version 3.14)","Use notifications"]#-}
statusIconGetGicon ::
    (MonadIO m, StatusIconK a) =>
    a ->                                    -- _obj
    m Gio.Icon
statusIconGetGicon _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    result <- gtk_status_icon_get_gicon _obj'
    checkUnexpectedReturnNULL "gtk_status_icon_get_gicon" result
    result' <- (newObject Gio.Icon) result
    touchManagedPtr _obj
    return result'

-- method StatusIcon::get_has_tooltip
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "StatusIcon", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "StatusIcon", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TBoolean
-- throws : False
-- Skip return : False

foreign import ccall "gtk_status_icon_get_has_tooltip" gtk_status_icon_get_has_tooltip :: 
    Ptr StatusIcon ->                       -- _obj : TInterface "Gtk" "StatusIcon"
    IO CInt

{-# DEPRECATED statusIconGetHasTooltip ["(Since version 3.14)","Use notifications"]#-}
statusIconGetHasTooltip ::
    (MonadIO m, StatusIconK a) =>
    a ->                                    -- _obj
    m Bool
statusIconGetHasTooltip _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    result <- gtk_status_icon_get_has_tooltip _obj'
    let result' = (/= 0) result
    touchManagedPtr _obj
    return result'

-- method StatusIcon::get_icon_name
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "StatusIcon", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "StatusIcon", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TUTF8
-- throws : False
-- Skip return : False

foreign import ccall "gtk_status_icon_get_icon_name" gtk_status_icon_get_icon_name :: 
    Ptr StatusIcon ->                       -- _obj : TInterface "Gtk" "StatusIcon"
    IO CString

{-# DEPRECATED statusIconGetIconName ["(Since version 3.14)","Use notifications"]#-}
statusIconGetIconName ::
    (MonadIO m, StatusIconK a) =>
    a ->                                    -- _obj
    m T.Text
statusIconGetIconName _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    result <- gtk_status_icon_get_icon_name _obj'
    checkUnexpectedReturnNULL "gtk_status_icon_get_icon_name" result
    result' <- cstringToText result
    touchManagedPtr _obj
    return result'

-- method StatusIcon::get_pixbuf
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "StatusIcon", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "StatusIcon", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TInterface "GdkPixbuf" "Pixbuf"
-- throws : False
-- Skip return : False

foreign import ccall "gtk_status_icon_get_pixbuf" gtk_status_icon_get_pixbuf :: 
    Ptr StatusIcon ->                       -- _obj : TInterface "Gtk" "StatusIcon"
    IO (Ptr GdkPixbuf.Pixbuf)

{-# DEPRECATED statusIconGetPixbuf ["(Since version 3.14)","Use notifications"]#-}
statusIconGetPixbuf ::
    (MonadIO m, StatusIconK a) =>
    a ->                                    -- _obj
    m GdkPixbuf.Pixbuf
statusIconGetPixbuf _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    result <- gtk_status_icon_get_pixbuf _obj'
    checkUnexpectedReturnNULL "gtk_status_icon_get_pixbuf" result
    result' <- (newObject GdkPixbuf.Pixbuf) result
    touchManagedPtr _obj
    return result'

-- method StatusIcon::get_screen
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "StatusIcon", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "StatusIcon", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TInterface "Gdk" "Screen"
-- throws : False
-- Skip return : False

foreign import ccall "gtk_status_icon_get_screen" gtk_status_icon_get_screen :: 
    Ptr StatusIcon ->                       -- _obj : TInterface "Gtk" "StatusIcon"
    IO (Ptr Gdk.Screen)

{-# DEPRECATED statusIconGetScreen ["(Since version 3.14)","Use notifications"]#-}
statusIconGetScreen ::
    (MonadIO m, StatusIconK a) =>
    a ->                                    -- _obj
    m Gdk.Screen
statusIconGetScreen _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    result <- gtk_status_icon_get_screen _obj'
    checkUnexpectedReturnNULL "gtk_status_icon_get_screen" result
    result' <- (newObject Gdk.Screen) result
    touchManagedPtr _obj
    return result'

-- method StatusIcon::get_size
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "StatusIcon", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "StatusIcon", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TInt32
-- throws : False
-- Skip return : False

foreign import ccall "gtk_status_icon_get_size" gtk_status_icon_get_size :: 
    Ptr StatusIcon ->                       -- _obj : TInterface "Gtk" "StatusIcon"
    IO Int32

{-# DEPRECATED statusIconGetSize ["(Since version 3.14)","Use notifications"]#-}
statusIconGetSize ::
    (MonadIO m, StatusIconK a) =>
    a ->                                    -- _obj
    m Int32
statusIconGetSize _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    result <- gtk_status_icon_get_size _obj'
    touchManagedPtr _obj
    return result

-- method StatusIcon::get_stock
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "StatusIcon", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "StatusIcon", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TUTF8
-- throws : False
-- Skip return : False

foreign import ccall "gtk_status_icon_get_stock" gtk_status_icon_get_stock :: 
    Ptr StatusIcon ->                       -- _obj : TInterface "Gtk" "StatusIcon"
    IO CString

{-# DEPRECATED statusIconGetStock ["(Since version 3.10)","Use gtk_status_icon_get_icon_name() instead."]#-}
statusIconGetStock ::
    (MonadIO m, StatusIconK a) =>
    a ->                                    -- _obj
    m T.Text
statusIconGetStock _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    result <- gtk_status_icon_get_stock _obj'
    checkUnexpectedReturnNULL "gtk_status_icon_get_stock" result
    result' <- cstringToText result
    touchManagedPtr _obj
    return result'

-- method StatusIcon::get_storage_type
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "StatusIcon", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "StatusIcon", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TInterface "Gtk" "ImageType"
-- throws : False
-- Skip return : False

foreign import ccall "gtk_status_icon_get_storage_type" gtk_status_icon_get_storage_type :: 
    Ptr StatusIcon ->                       -- _obj : TInterface "Gtk" "StatusIcon"
    IO CUInt

{-# DEPRECATED statusIconGetStorageType ["(Since version 3.14)","Use notifications"]#-}
statusIconGetStorageType ::
    (MonadIO m, StatusIconK a) =>
    a ->                                    -- _obj
    m ImageType
statusIconGetStorageType _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    result <- gtk_status_icon_get_storage_type _obj'
    let result' = (toEnum . fromIntegral) result
    touchManagedPtr _obj
    return result'

-- method StatusIcon::get_title
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "StatusIcon", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "StatusIcon", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TUTF8
-- throws : False
-- Skip return : False

foreign import ccall "gtk_status_icon_get_title" gtk_status_icon_get_title :: 
    Ptr StatusIcon ->                       -- _obj : TInterface "Gtk" "StatusIcon"
    IO CString

{-# DEPRECATED statusIconGetTitle ["(Since version 3.14)","Use notifications"]#-}
statusIconGetTitle ::
    (MonadIO m, StatusIconK a) =>
    a ->                                    -- _obj
    m T.Text
statusIconGetTitle _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    result <- gtk_status_icon_get_title _obj'
    checkUnexpectedReturnNULL "gtk_status_icon_get_title" result
    result' <- cstringToText result
    touchManagedPtr _obj
    return result'

-- method StatusIcon::get_tooltip_markup
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "StatusIcon", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "StatusIcon", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TUTF8
-- throws : False
-- Skip return : False

foreign import ccall "gtk_status_icon_get_tooltip_markup" gtk_status_icon_get_tooltip_markup :: 
    Ptr StatusIcon ->                       -- _obj : TInterface "Gtk" "StatusIcon"
    IO CString

{-# DEPRECATED statusIconGetTooltipMarkup ["(Since version 3.14)","Use notifications"]#-}
statusIconGetTooltipMarkup ::
    (MonadIO m, StatusIconK a) =>
    a ->                                    -- _obj
    m T.Text
statusIconGetTooltipMarkup _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    result <- gtk_status_icon_get_tooltip_markup _obj'
    checkUnexpectedReturnNULL "gtk_status_icon_get_tooltip_markup" result
    result' <- cstringToText result
    freeMem result
    touchManagedPtr _obj
    return result'

-- method StatusIcon::get_tooltip_text
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "StatusIcon", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "StatusIcon", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TUTF8
-- throws : False
-- Skip return : False

foreign import ccall "gtk_status_icon_get_tooltip_text" gtk_status_icon_get_tooltip_text :: 
    Ptr StatusIcon ->                       -- _obj : TInterface "Gtk" "StatusIcon"
    IO CString

{-# DEPRECATED statusIconGetTooltipText ["(Since version 3.14)","Use notifications"]#-}
statusIconGetTooltipText ::
    (MonadIO m, StatusIconK a) =>
    a ->                                    -- _obj
    m T.Text
statusIconGetTooltipText _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    result <- gtk_status_icon_get_tooltip_text _obj'
    checkUnexpectedReturnNULL "gtk_status_icon_get_tooltip_text" result
    result' <- cstringToText result
    freeMem result
    touchManagedPtr _obj
    return result'

-- method StatusIcon::get_visible
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "StatusIcon", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "StatusIcon", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TBoolean
-- throws : False
-- Skip return : False

foreign import ccall "gtk_status_icon_get_visible" gtk_status_icon_get_visible :: 
    Ptr StatusIcon ->                       -- _obj : TInterface "Gtk" "StatusIcon"
    IO CInt

{-# DEPRECATED statusIconGetVisible ["(Since version 3.14)","Use notifications"]#-}
statusIconGetVisible ::
    (MonadIO m, StatusIconK a) =>
    a ->                                    -- _obj
    m Bool
statusIconGetVisible _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    result <- gtk_status_icon_get_visible _obj'
    let result' = (/= 0) result
    touchManagedPtr _obj
    return result'

-- method StatusIcon::get_x11_window_id
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "StatusIcon", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "StatusIcon", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TUInt32
-- throws : False
-- Skip return : False

foreign import ccall "gtk_status_icon_get_x11_window_id" gtk_status_icon_get_x11_window_id :: 
    Ptr StatusIcon ->                       -- _obj : TInterface "Gtk" "StatusIcon"
    IO Word32

{-# DEPRECATED statusIconGetX11WindowId ["(Since version 3.14)","Use notifications"]#-}
statusIconGetX11WindowId ::
    (MonadIO m, StatusIconK a) =>
    a ->                                    -- _obj
    m Word32
statusIconGetX11WindowId _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    result <- gtk_status_icon_get_x11_window_id _obj'
    touchManagedPtr _obj
    return result

-- method StatusIcon::is_embedded
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "StatusIcon", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "StatusIcon", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TBoolean
-- throws : False
-- Skip return : False

foreign import ccall "gtk_status_icon_is_embedded" gtk_status_icon_is_embedded :: 
    Ptr StatusIcon ->                       -- _obj : TInterface "Gtk" "StatusIcon"
    IO CInt

{-# DEPRECATED statusIconIsEmbedded ["(Since version 3.14)","Use notifications"]#-}
statusIconIsEmbedded ::
    (MonadIO m, StatusIconK a) =>
    a ->                                    -- _obj
    m Bool
statusIconIsEmbedded _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    result <- gtk_status_icon_is_embedded _obj'
    let result' = (/= 0) result
    touchManagedPtr _obj
    return result'

-- method StatusIcon::set_from_file
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "StatusIcon", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "filename", argType = TBasicType TFileName, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "StatusIcon", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "filename", argType = TBasicType TFileName, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gtk_status_icon_set_from_file" gtk_status_icon_set_from_file :: 
    Ptr StatusIcon ->                       -- _obj : TInterface "Gtk" "StatusIcon"
    CString ->                              -- filename : TBasicType TFileName
    IO ()

{-# DEPRECATED statusIconSetFromFile ["(Since version 3.14)","Use notifications"]#-}
statusIconSetFromFile ::
    (MonadIO m, StatusIconK a) =>
    a ->                                    -- _obj
    [Char] ->                               -- filename
    m ()
statusIconSetFromFile _obj filename = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    filename' <- stringToCString filename
    gtk_status_icon_set_from_file _obj' filename'
    touchManagedPtr _obj
    freeMem filename'
    return ()

-- method StatusIcon::set_from_gicon
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "StatusIcon", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "icon", argType = TInterface "Gio" "Icon", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "StatusIcon", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "icon", argType = TInterface "Gio" "Icon", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gtk_status_icon_set_from_gicon" gtk_status_icon_set_from_gicon :: 
    Ptr StatusIcon ->                       -- _obj : TInterface "Gtk" "StatusIcon"
    Ptr Gio.Icon ->                         -- icon : TInterface "Gio" "Icon"
    IO ()

{-# DEPRECATED statusIconSetFromGicon ["(Since version 3.14)","Use notifications"]#-}
statusIconSetFromGicon ::
    (MonadIO m, StatusIconK a, Gio.IconK b) =>
    a ->                                    -- _obj
    b ->                                    -- icon
    m ()
statusIconSetFromGicon _obj icon = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    let icon' = unsafeManagedPtrCastPtr icon
    gtk_status_icon_set_from_gicon _obj' icon'
    touchManagedPtr _obj
    touchManagedPtr icon
    return ()

-- method StatusIcon::set_from_icon_name
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "StatusIcon", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "icon_name", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "StatusIcon", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "icon_name", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gtk_status_icon_set_from_icon_name" gtk_status_icon_set_from_icon_name :: 
    Ptr StatusIcon ->                       -- _obj : TInterface "Gtk" "StatusIcon"
    CString ->                              -- icon_name : TBasicType TUTF8
    IO ()

{-# DEPRECATED statusIconSetFromIconName ["(Since version 3.14)","Use notifications"]#-}
statusIconSetFromIconName ::
    (MonadIO m, StatusIconK a) =>
    a ->                                    -- _obj
    T.Text ->                               -- icon_name
    m ()
statusIconSetFromIconName _obj icon_name = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    icon_name' <- textToCString icon_name
    gtk_status_icon_set_from_icon_name _obj' icon_name'
    touchManagedPtr _obj
    freeMem icon_name'
    return ()

-- method StatusIcon::set_from_pixbuf
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "StatusIcon", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "pixbuf", argType = TInterface "GdkPixbuf" "Pixbuf", direction = DirectionIn, mayBeNull = True, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "StatusIcon", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "pixbuf", argType = TInterface "GdkPixbuf" "Pixbuf", direction = DirectionIn, mayBeNull = True, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gtk_status_icon_set_from_pixbuf" gtk_status_icon_set_from_pixbuf :: 
    Ptr StatusIcon ->                       -- _obj : TInterface "Gtk" "StatusIcon"
    Ptr GdkPixbuf.Pixbuf ->                 -- pixbuf : TInterface "GdkPixbuf" "Pixbuf"
    IO ()

{-# DEPRECATED statusIconSetFromPixbuf ["(Since version 3.14)","Use notifications"]#-}
statusIconSetFromPixbuf ::
    (MonadIO m, StatusIconK a, GdkPixbuf.PixbufK b) =>
    a ->                                    -- _obj
    Maybe (b) ->                            -- pixbuf
    m ()
statusIconSetFromPixbuf _obj pixbuf = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    maybePixbuf <- case pixbuf of
        Nothing -> return nullPtr
        Just jPixbuf -> do
            let jPixbuf' = unsafeManagedPtrCastPtr jPixbuf
            return jPixbuf'
    gtk_status_icon_set_from_pixbuf _obj' maybePixbuf
    touchManagedPtr _obj
    whenJust pixbuf touchManagedPtr
    return ()

-- method StatusIcon::set_from_stock
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "StatusIcon", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "stock_id", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "StatusIcon", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "stock_id", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gtk_status_icon_set_from_stock" gtk_status_icon_set_from_stock :: 
    Ptr StatusIcon ->                       -- _obj : TInterface "Gtk" "StatusIcon"
    CString ->                              -- stock_id : TBasicType TUTF8
    IO ()

{-# DEPRECATED statusIconSetFromStock ["(Since version 3.10)","Use gtk_status_icon_set_from_icon_name() instead."]#-}
statusIconSetFromStock ::
    (MonadIO m, StatusIconK a) =>
    a ->                                    -- _obj
    T.Text ->                               -- stock_id
    m ()
statusIconSetFromStock _obj stock_id = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    stock_id' <- textToCString stock_id
    gtk_status_icon_set_from_stock _obj' stock_id'
    touchManagedPtr _obj
    freeMem stock_id'
    return ()

-- method StatusIcon::set_has_tooltip
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "StatusIcon", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "has_tooltip", argType = TBasicType TBoolean, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "StatusIcon", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "has_tooltip", argType = TBasicType TBoolean, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gtk_status_icon_set_has_tooltip" gtk_status_icon_set_has_tooltip :: 
    Ptr StatusIcon ->                       -- _obj : TInterface "Gtk" "StatusIcon"
    CInt ->                                 -- has_tooltip : TBasicType TBoolean
    IO ()

{-# DEPRECATED statusIconSetHasTooltip ["(Since version 3.14)","Use notifications"]#-}
statusIconSetHasTooltip ::
    (MonadIO m, StatusIconK a) =>
    a ->                                    -- _obj
    Bool ->                                 -- has_tooltip
    m ()
statusIconSetHasTooltip _obj has_tooltip = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    let has_tooltip' = (fromIntegral . fromEnum) has_tooltip
    gtk_status_icon_set_has_tooltip _obj' has_tooltip'
    touchManagedPtr _obj
    return ()

-- method StatusIcon::set_name
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "StatusIcon", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "name", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "StatusIcon", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "name", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gtk_status_icon_set_name" gtk_status_icon_set_name :: 
    Ptr StatusIcon ->                       -- _obj : TInterface "Gtk" "StatusIcon"
    CString ->                              -- name : TBasicType TUTF8
    IO ()

{-# DEPRECATED statusIconSetName ["(Since version 3.14)","Use notifications"]#-}
statusIconSetName ::
    (MonadIO m, StatusIconK a) =>
    a ->                                    -- _obj
    T.Text ->                               -- name
    m ()
statusIconSetName _obj name = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    name' <- textToCString name
    gtk_status_icon_set_name _obj' name'
    touchManagedPtr _obj
    freeMem name'
    return ()

-- method StatusIcon::set_screen
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "StatusIcon", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "screen", argType = TInterface "Gdk" "Screen", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "StatusIcon", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "screen", argType = TInterface "Gdk" "Screen", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gtk_status_icon_set_screen" gtk_status_icon_set_screen :: 
    Ptr StatusIcon ->                       -- _obj : TInterface "Gtk" "StatusIcon"
    Ptr Gdk.Screen ->                       -- screen : TInterface "Gdk" "Screen"
    IO ()

{-# DEPRECATED statusIconSetScreen ["(Since version 3.14)","Use notifications"]#-}
statusIconSetScreen ::
    (MonadIO m, StatusIconK a, Gdk.ScreenK b) =>
    a ->                                    -- _obj
    b ->                                    -- screen
    m ()
statusIconSetScreen _obj screen = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    let screen' = unsafeManagedPtrCastPtr screen
    gtk_status_icon_set_screen _obj' screen'
    touchManagedPtr _obj
    touchManagedPtr screen
    return ()

-- method StatusIcon::set_title
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "StatusIcon", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "title", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "StatusIcon", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "title", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gtk_status_icon_set_title" gtk_status_icon_set_title :: 
    Ptr StatusIcon ->                       -- _obj : TInterface "Gtk" "StatusIcon"
    CString ->                              -- title : TBasicType TUTF8
    IO ()

{-# DEPRECATED statusIconSetTitle ["(Since version 3.14)","Use notifications"]#-}
statusIconSetTitle ::
    (MonadIO m, StatusIconK a) =>
    a ->                                    -- _obj
    T.Text ->                               -- title
    m ()
statusIconSetTitle _obj title = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    title' <- textToCString title
    gtk_status_icon_set_title _obj' title'
    touchManagedPtr _obj
    freeMem title'
    return ()

-- method StatusIcon::set_tooltip_markup
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "StatusIcon", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "markup", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = True, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "StatusIcon", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "markup", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = True, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gtk_status_icon_set_tooltip_markup" gtk_status_icon_set_tooltip_markup :: 
    Ptr StatusIcon ->                       -- _obj : TInterface "Gtk" "StatusIcon"
    CString ->                              -- markup : TBasicType TUTF8
    IO ()

{-# DEPRECATED statusIconSetTooltipMarkup ["(Since version 3.14)","Use notifications"]#-}
statusIconSetTooltipMarkup ::
    (MonadIO m, StatusIconK a) =>
    a ->                                    -- _obj
    Maybe (T.Text) ->                       -- markup
    m ()
statusIconSetTooltipMarkup _obj markup = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    maybeMarkup <- case markup of
        Nothing -> return nullPtr
        Just jMarkup -> do
            jMarkup' <- textToCString jMarkup
            return jMarkup'
    gtk_status_icon_set_tooltip_markup _obj' maybeMarkup
    touchManagedPtr _obj
    freeMem maybeMarkup
    return ()

-- method StatusIcon::set_tooltip_text
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "StatusIcon", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "text", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "StatusIcon", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "text", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gtk_status_icon_set_tooltip_text" gtk_status_icon_set_tooltip_text :: 
    Ptr StatusIcon ->                       -- _obj : TInterface "Gtk" "StatusIcon"
    CString ->                              -- text : TBasicType TUTF8
    IO ()

{-# DEPRECATED statusIconSetTooltipText ["(Since version 3.14)","Use notifications"]#-}
statusIconSetTooltipText ::
    (MonadIO m, StatusIconK a) =>
    a ->                                    -- _obj
    T.Text ->                               -- text
    m ()
statusIconSetTooltipText _obj text = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    text' <- textToCString text
    gtk_status_icon_set_tooltip_text _obj' text'
    touchManagedPtr _obj
    freeMem text'
    return ()

-- method StatusIcon::set_visible
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "StatusIcon", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "visible", argType = TBasicType TBoolean, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "StatusIcon", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "visible", argType = TBasicType TBoolean, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gtk_status_icon_set_visible" gtk_status_icon_set_visible :: 
    Ptr StatusIcon ->                       -- _obj : TInterface "Gtk" "StatusIcon"
    CInt ->                                 -- visible : TBasicType TBoolean
    IO ()

{-# DEPRECATED statusIconSetVisible ["(Since version 3.14)","Use notifications"]#-}
statusIconSetVisible ::
    (MonadIO m, StatusIconK a) =>
    a ->                                    -- _obj
    Bool ->                                 -- visible
    m ()
statusIconSetVisible _obj visible = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    let visible' = (fromIntegral . fromEnum) visible
    gtk_status_icon_set_visible _obj' visible'
    touchManagedPtr _obj
    return ()

-- method StatusIcon::position_menu
-- method type : MemberFunction
-- Args : [Arg {argName = "menu", argType = TInterface "Gtk" "Menu", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "x", argType = TBasicType TInt32, direction = DirectionInout, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferEverything},Arg {argName = "y", argType = TBasicType TInt32, direction = DirectionInout, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferEverything},Arg {argName = "push_in", argType = TBasicType TBoolean, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferEverything},Arg {argName = "user_data", argType = TInterface "Gtk" "StatusIcon", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "menu", argType = TInterface "Gtk" "Menu", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "x", argType = TBasicType TInt32, direction = DirectionInout, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferEverything},Arg {argName = "y", argType = TBasicType TInt32, direction = DirectionInout, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferEverything},Arg {argName = "user_data", argType = TInterface "Gtk" "StatusIcon", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gtk_status_icon_position_menu" gtk_status_icon_position_menu :: 
    Ptr Menu ->                             -- menu : TInterface "Gtk" "Menu"
    Ptr Int32 ->                            -- x : TBasicType TInt32
    Ptr Int32 ->                            -- y : TBasicType TInt32
    Ptr CInt ->                             -- push_in : TBasicType TBoolean
    Ptr StatusIcon ->                       -- user_data : TInterface "Gtk" "StatusIcon"
    IO ()

{-# DEPRECATED statusIconPositionMenu ["(Since version 3.14)","Use notifications"]#-}
statusIconPositionMenu ::
    (MonadIO m, MenuK a, StatusIconK b) =>
    a ->                                    -- menu
    Int32 ->                                -- x
    Int32 ->                                -- y
    b ->                                    -- user_data
    m (Int32,Int32,Bool)
statusIconPositionMenu menu x y user_data = liftIO $ do
    let menu' = unsafeManagedPtrCastPtr menu
    x' <- allocMem :: IO (Ptr Int32)
    poke x' x
    y' <- allocMem :: IO (Ptr Int32)
    poke y' y
    push_in <- allocMem :: IO (Ptr CInt)
    let user_data' = unsafeManagedPtrCastPtr user_data
    gtk_status_icon_position_menu menu' x' y' push_in user_data'
    x'' <- peek x'
    y'' <- peek y'
    push_in' <- peek push_in
    let push_in'' = (/= 0) push_in'
    touchManagedPtr menu
    touchManagedPtr user_data
    freeMem x'
    freeMem y'
    freeMem push_in
    return (x'', y'', push_in'')