{- |
Copyright  : Will Thompson, Iñaki García Etxebarria and Jonas Platte
License    : LGPL-2.1
Maintainer : Iñaki García Etxebarria (garetxe@gmail.com)

The “system tray” or notification area is normally used for transient icons
that indicate some special state. For example, a system tray icon might
appear to tell the user that they have new mail, or have an incoming instant
message, or something along those lines. The basic idea is that creating an
icon in the notification area is less annoying than popping up a dialog.

A 'GI.Gtk.Objects.StatusIcon.StatusIcon' object can be used to display an icon in a “system tray”.
The icon can have a tooltip, and the user can interact with it by
activating it or popping up a context menu. Critical information should
not solely be displayed in a 'GI.Gtk.Objects.StatusIcon.StatusIcon', since it may not be
visible (e.g. when the user doesn’t have a notification area on his panel).
This can be checked with 'GI.Gtk.Objects.StatusIcon.statusIconIsEmbedded'.

On X11, the implementation follows the
<http://www.freedesktop.org/wiki/Specifications/systemtray-spec FreeDesktop System Tray Specification>.
Implementations of the “tray” side of this specification can
be found e.g. in the GNOME 2 and KDE panel applications.

Note that a GtkStatusIcon is not a widget, but just
a 'GI.GObject.Objects.Object.Object'. Making it a widget would be impractical, since the system tray
on Win32 doesn’t allow to embed arbitrary widgets.

GtkStatusIcon has been deprecated in 3.14. You should consider using
notifications or more modern platform-specific APIs instead. GLib provides
the 'GI.Gio.Objects.Notification.Notification' API which works well with 'GI.Gtk.Objects.Application.Application'. Also see this
<https://wiki.gnome.org/HowDoI/GNotification HowDoI>.
-}

module GI.Gtk.Objects.StatusIcon
    ( 

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


 -- * Methods
-- ** getGeometry #method:getGeometry#
    StatusIconGetGeometryMethodInfo         ,
    statusIconGetGeometry                   ,


-- ** getGicon #method:getGicon#
    StatusIconGetGiconMethodInfo            ,
    statusIconGetGicon                      ,


-- ** getHasTooltip #method:getHasTooltip#
    StatusIconGetHasTooltipMethodInfo       ,
    statusIconGetHasTooltip                 ,


-- ** getIconName #method:getIconName#
    StatusIconGetIconNameMethodInfo         ,
    statusIconGetIconName                   ,


-- ** getPixbuf #method:getPixbuf#
    StatusIconGetPixbufMethodInfo           ,
    statusIconGetPixbuf                     ,


-- ** getScreen #method:getScreen#
    StatusIconGetScreenMethodInfo           ,
    statusIconGetScreen                     ,


-- ** getSize #method:getSize#
    StatusIconGetSizeMethodInfo             ,
    statusIconGetSize                       ,


-- ** getStock #method:getStock#
    StatusIconGetStockMethodInfo            ,
    statusIconGetStock                      ,


-- ** getStorageType #method:getStorageType#
    StatusIconGetStorageTypeMethodInfo      ,
    statusIconGetStorageType                ,


-- ** getTitle #method:getTitle#
    StatusIconGetTitleMethodInfo            ,
    statusIconGetTitle                      ,


-- ** getTooltipMarkup #method:getTooltipMarkup#
    StatusIconGetTooltipMarkupMethodInfo    ,
    statusIconGetTooltipMarkup              ,


-- ** getTooltipText #method:getTooltipText#
    StatusIconGetTooltipTextMethodInfo      ,
    statusIconGetTooltipText                ,


-- ** getVisible #method:getVisible#
    StatusIconGetVisibleMethodInfo          ,
    statusIconGetVisible                    ,


-- ** getX11WindowId #method:getX11WindowId#
    StatusIconGetX11WindowIdMethodInfo      ,
    statusIconGetX11WindowId                ,


-- ** isEmbedded #method:isEmbedded#
    StatusIconIsEmbeddedMethodInfo          ,
    statusIconIsEmbedded                    ,


-- ** new #method:new#
    statusIconNew                           ,


-- ** newFromFile #method:newFromFile#
    statusIconNewFromFile                   ,


-- ** newFromGicon #method:newFromGicon#
    statusIconNewFromGicon                  ,


-- ** newFromIconName #method:newFromIconName#
    statusIconNewFromIconName               ,


-- ** newFromPixbuf #method:newFromPixbuf#
    statusIconNewFromPixbuf                 ,


-- ** newFromStock #method:newFromStock#
    statusIconNewFromStock                  ,


-- ** positionMenu #method:positionMenu#
    statusIconPositionMenu                  ,


-- ** setFromFile #method:setFromFile#
    StatusIconSetFromFileMethodInfo         ,
    statusIconSetFromFile                   ,


-- ** setFromGicon #method:setFromGicon#
    StatusIconSetFromGiconMethodInfo        ,
    statusIconSetFromGicon                  ,


-- ** setFromIconName #method:setFromIconName#
    StatusIconSetFromIconNameMethodInfo     ,
    statusIconSetFromIconName               ,


-- ** setFromPixbuf #method:setFromPixbuf#
    StatusIconSetFromPixbufMethodInfo       ,
    statusIconSetFromPixbuf                 ,


-- ** setFromStock #method:setFromStock#
    StatusIconSetFromStockMethodInfo        ,
    statusIconSetFromStock                  ,


-- ** setHasTooltip #method:setHasTooltip#
    StatusIconSetHasTooltipMethodInfo       ,
    statusIconSetHasTooltip                 ,


-- ** setName #method:setName#
    StatusIconSetNameMethodInfo             ,
    statusIconSetName                       ,


-- ** setScreen #method:setScreen#
    StatusIconSetScreenMethodInfo           ,
    statusIconSetScreen                     ,


-- ** setTitle #method:setTitle#
    StatusIconSetTitleMethodInfo            ,
    statusIconSetTitle                      ,


-- ** setTooltipMarkup #method:setTooltipMarkup#
    StatusIconSetTooltipMarkupMethodInfo    ,
    statusIconSetTooltipMarkup              ,


-- ** setTooltipText #method:setTooltipText#
    StatusIconSetTooltipTextMethodInfo      ,
    statusIconSetTooltipText                ,


-- ** setVisible #method:setVisible#
    StatusIconSetVisibleMethodInfo          ,
    statusIconSetVisible                    ,




 -- * Properties
-- ** embedded #attr:embedded#
    StatusIconEmbeddedPropertyInfo          ,
    getStatusIconEmbedded                   ,
    statusIconEmbedded                      ,


-- ** file #attr:file#
    StatusIconFilePropertyInfo              ,
    clearStatusIconFile                     ,
    constructStatusIconFile                 ,
    setStatusIconFile                       ,
    statusIconFile                          ,


-- ** gicon #attr:gicon#
    StatusIconGiconPropertyInfo             ,
    clearStatusIconGicon                    ,
    constructStatusIconGicon                ,
    getStatusIconGicon                      ,
    setStatusIconGicon                      ,
    statusIconGicon                         ,


-- ** hasTooltip #attr:hasTooltip#
    StatusIconHasTooltipPropertyInfo        ,
    constructStatusIconHasTooltip           ,
    getStatusIconHasTooltip                 ,
    setStatusIconHasTooltip                 ,
    statusIconHasTooltip                    ,


-- ** iconName #attr:iconName#
    StatusIconIconNamePropertyInfo          ,
    clearStatusIconIconName                 ,
    constructStatusIconIconName             ,
    getStatusIconIconName                   ,
    setStatusIconIconName                   ,
    statusIconIconName                      ,


-- ** orientation #attr:orientation#
    StatusIconOrientationPropertyInfo       ,
    getStatusIconOrientation                ,
    statusIconOrientation                   ,


-- ** pixbuf #attr:pixbuf#
    StatusIconPixbufPropertyInfo            ,
    clearStatusIconPixbuf                   ,
    constructStatusIconPixbuf               ,
    getStatusIconPixbuf                     ,
    setStatusIconPixbuf                     ,
    statusIconPixbuf                        ,


-- ** screen #attr:screen#
    StatusIconScreenPropertyInfo            ,
    constructStatusIconScreen               ,
    getStatusIconScreen                     ,
    setStatusIconScreen                     ,
    statusIconScreen                        ,


-- ** size #attr:size#
    StatusIconSizePropertyInfo              ,
    getStatusIconSize                       ,
    statusIconSize                          ,


-- ** stock #attr:stock#
    StatusIconStockPropertyInfo             ,
    clearStatusIconStock                    ,
    constructStatusIconStock                ,
    getStatusIconStock                      ,
    setStatusIconStock                      ,
    statusIconStock                         ,


-- ** storageType #attr:storageType#
    StatusIconStorageTypePropertyInfo       ,
    getStatusIconStorageType                ,
    statusIconStorageType                   ,


-- ** title #attr:title#
    StatusIconTitlePropertyInfo             ,
    constructStatusIconTitle                ,
    getStatusIconTitle                      ,
    setStatusIconTitle                      ,
    statusIconTitle                         ,


-- ** tooltipMarkup #attr:tooltipMarkup#
    StatusIconTooltipMarkupPropertyInfo     ,
    clearStatusIconTooltipMarkup            ,
    constructStatusIconTooltipMarkup        ,
    getStatusIconTooltipMarkup              ,
    setStatusIconTooltipMarkup              ,
    statusIconTooltipMarkup                 ,


-- ** tooltipText #attr:tooltipText#
    StatusIconTooltipTextPropertyInfo       ,
    constructStatusIconTooltipText          ,
    getStatusIconTooltipText                ,
    setStatusIconTooltipText                ,
    statusIconTooltipText                   ,


-- ** visible #attr:visible#
    StatusIconVisiblePropertyInfo           ,
    constructStatusIconVisible              ,
    getStatusIconVisible                    ,
    setStatusIconVisible                    ,
    statusIconVisible                       ,




 -- * Signals
-- ** activate #signal:activate#
    C_StatusIconActivateCallback            ,
    StatusIconActivateCallback              ,
    StatusIconActivateSignalInfo            ,
    afterStatusIconActivate                 ,
    genClosure_StatusIconActivate           ,
    mk_StatusIconActivateCallback           ,
    noStatusIconActivateCallback            ,
    onStatusIconActivate                    ,
    wrap_StatusIconActivateCallback         ,


-- ** buttonPressEvent #signal:buttonPressEvent#
    C_StatusIconButtonPressEventCallback    ,
    StatusIconButtonPressEventCallback      ,
    StatusIconButtonPressEventSignalInfo    ,
    afterStatusIconButtonPressEvent         ,
    genClosure_StatusIconButtonPressEvent   ,
    mk_StatusIconButtonPressEventCallback   ,
    noStatusIconButtonPressEventCallback    ,
    onStatusIconButtonPressEvent            ,
    wrap_StatusIconButtonPressEventCallback ,


-- ** buttonReleaseEvent #signal:buttonReleaseEvent#
    C_StatusIconButtonReleaseEventCallback  ,
    StatusIconButtonReleaseEventCallback    ,
    StatusIconButtonReleaseEventSignalInfo  ,
    afterStatusIconButtonReleaseEvent       ,
    genClosure_StatusIconButtonReleaseEvent ,
    mk_StatusIconButtonReleaseEventCallback ,
    noStatusIconButtonReleaseEventCallback  ,
    onStatusIconButtonReleaseEvent          ,
    wrap_StatusIconButtonReleaseEventCallback,


-- ** popupMenu #signal:popupMenu#
    C_StatusIconPopupMenuCallback           ,
    StatusIconPopupMenuCallback             ,
    StatusIconPopupMenuSignalInfo           ,
    afterStatusIconPopupMenu                ,
    genClosure_StatusIconPopupMenu          ,
    mk_StatusIconPopupMenuCallback          ,
    noStatusIconPopupMenuCallback           ,
    onStatusIconPopupMenu                   ,
    wrap_StatusIconPopupMenuCallback        ,


-- ** queryTooltip #signal:queryTooltip#
    C_StatusIconQueryTooltipCallback        ,
    StatusIconQueryTooltipCallback          ,
    StatusIconQueryTooltipSignalInfo        ,
    afterStatusIconQueryTooltip             ,
    genClosure_StatusIconQueryTooltip       ,
    mk_StatusIconQueryTooltipCallback       ,
    noStatusIconQueryTooltipCallback        ,
    onStatusIconQueryTooltip                ,
    wrap_StatusIconQueryTooltipCallback     ,


-- ** scrollEvent #signal:scrollEvent#
    C_StatusIconScrollEventCallback         ,
    StatusIconScrollEventCallback           ,
    StatusIconScrollEventSignalInfo         ,
    afterStatusIconScrollEvent              ,
    genClosure_StatusIconScrollEvent        ,
    mk_StatusIconScrollEventCallback        ,
    noStatusIconScrollEventCallback         ,
    onStatusIconScrollEvent                 ,
    wrap_StatusIconScrollEventCallback      ,


-- ** sizeChanged #signal:sizeChanged#
    C_StatusIconSizeChangedCallback         ,
    StatusIconSizeChangedCallback           ,
    StatusIconSizeChangedSignalInfo         ,
    afterStatusIconSizeChanged              ,
    genClosure_StatusIconSizeChanged        ,
    mk_StatusIconSizeChangedCallback        ,
    noStatusIconSizeChangedCallback         ,
    onStatusIconSizeChanged                 ,
    wrap_StatusIconSizeChangedCallback      ,




    ) where

import Data.GI.Base.ShortPrelude
import qualified Data.GI.Base.ShortPrelude as SP
import qualified Data.GI.Base.Overloading as O
import qualified Prelude as P

import qualified Data.GI.Base.Attributes as GI.Attributes
import qualified Data.GI.Base.ManagedPtr as B.ManagedPtr
import qualified Data.GI.Base.GError as B.GError
import qualified Data.GI.Base.GVariant as B.GVariant
import qualified Data.GI.Base.GParamSpec as B.GParamSpec
import qualified Data.GI.Base.CallStack as B.CallStack
import qualified Data.Text as T
import qualified Data.ByteString.Char8 as B
import qualified Data.Map as Map
import qualified Foreign.Ptr as FP

import qualified GI.GObject.Objects.Object as GObject.Object
import qualified GI.Gdk.Objects.Screen as Gdk.Screen
import qualified GI.Gdk.Structs.EventButton as Gdk.EventButton
import qualified GI.Gdk.Structs.EventScroll as Gdk.EventScroll
import qualified GI.Gdk.Structs.Rectangle as Gdk.Rectangle
import qualified GI.GdkPixbuf.Objects.Pixbuf as GdkPixbuf.Pixbuf
import qualified GI.Gio.Interfaces.Icon as Gio.Icon
import {-# SOURCE #-} qualified GI.Gtk.Enums as Gtk.Enums
import {-# SOURCE #-} qualified GI.Gtk.Objects.Menu as Gtk.Menu
import {-# SOURCE #-} qualified GI.Gtk.Objects.Tooltip as Gtk.Tooltip

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

instance GObject StatusIcon where
    gobjectType _ = c_gtk_status_icon_get_type
    

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

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

noStatusIcon :: Maybe StatusIcon
noStatusIcon = Nothing

type family ResolveStatusIconMethod (t :: Symbol) (o :: *) :: * where
    ResolveStatusIconMethod "bindProperty" o = GObject.Object.ObjectBindPropertyMethodInfo
    ResolveStatusIconMethod "bindPropertyFull" o = GObject.Object.ObjectBindPropertyFullMethodInfo
    ResolveStatusIconMethod "forceFloating" o = GObject.Object.ObjectForceFloatingMethodInfo
    ResolveStatusIconMethod "freezeNotify" o = GObject.Object.ObjectFreezeNotifyMethodInfo
    ResolveStatusIconMethod "isEmbedded" o = StatusIconIsEmbeddedMethodInfo
    ResolveStatusIconMethod "isFloating" o = GObject.Object.ObjectIsFloatingMethodInfo
    ResolveStatusIconMethod "notify" o = GObject.Object.ObjectNotifyMethodInfo
    ResolveStatusIconMethod "notifyByPspec" o = GObject.Object.ObjectNotifyByPspecMethodInfo
    ResolveStatusIconMethod "ref" o = GObject.Object.ObjectRefMethodInfo
    ResolveStatusIconMethod "refSink" o = GObject.Object.ObjectRefSinkMethodInfo
    ResolveStatusIconMethod "replaceData" o = GObject.Object.ObjectReplaceDataMethodInfo
    ResolveStatusIconMethod "replaceQdata" o = GObject.Object.ObjectReplaceQdataMethodInfo
    ResolveStatusIconMethod "runDispose" o = GObject.Object.ObjectRunDisposeMethodInfo
    ResolveStatusIconMethod "stealData" o = GObject.Object.ObjectStealDataMethodInfo
    ResolveStatusIconMethod "stealQdata" o = GObject.Object.ObjectStealQdataMethodInfo
    ResolveStatusIconMethod "thawNotify" o = GObject.Object.ObjectThawNotifyMethodInfo
    ResolveStatusIconMethod "unref" o = GObject.Object.ObjectUnrefMethodInfo
    ResolveStatusIconMethod "watchClosure" o = GObject.Object.ObjectWatchClosureMethodInfo
    ResolveStatusIconMethod "getData" o = GObject.Object.ObjectGetDataMethodInfo
    ResolveStatusIconMethod "getGeometry" o = StatusIconGetGeometryMethodInfo
    ResolveStatusIconMethod "getGicon" o = StatusIconGetGiconMethodInfo
    ResolveStatusIconMethod "getHasTooltip" o = StatusIconGetHasTooltipMethodInfo
    ResolveStatusIconMethod "getIconName" o = StatusIconGetIconNameMethodInfo
    ResolveStatusIconMethod "getPixbuf" o = StatusIconGetPixbufMethodInfo
    ResolveStatusIconMethod "getProperty" o = GObject.Object.ObjectGetPropertyMethodInfo
    ResolveStatusIconMethod "getQdata" o = GObject.Object.ObjectGetQdataMethodInfo
    ResolveStatusIconMethod "getScreen" o = StatusIconGetScreenMethodInfo
    ResolveStatusIconMethod "getSize" o = StatusIconGetSizeMethodInfo
    ResolveStatusIconMethod "getStock" o = StatusIconGetStockMethodInfo
    ResolveStatusIconMethod "getStorageType" o = StatusIconGetStorageTypeMethodInfo
    ResolveStatusIconMethod "getTitle" o = StatusIconGetTitleMethodInfo
    ResolveStatusIconMethod "getTooltipMarkup" o = StatusIconGetTooltipMarkupMethodInfo
    ResolveStatusIconMethod "getTooltipText" o = StatusIconGetTooltipTextMethodInfo
    ResolveStatusIconMethod "getVisible" o = StatusIconGetVisibleMethodInfo
    ResolveStatusIconMethod "getX11WindowId" o = StatusIconGetX11WindowIdMethodInfo
    ResolveStatusIconMethod "setData" o = GObject.Object.ObjectSetDataMethodInfo
    ResolveStatusIconMethod "setFromFile" o = StatusIconSetFromFileMethodInfo
    ResolveStatusIconMethod "setFromGicon" o = StatusIconSetFromGiconMethodInfo
    ResolveStatusIconMethod "setFromIconName" o = StatusIconSetFromIconNameMethodInfo
    ResolveStatusIconMethod "setFromPixbuf" o = StatusIconSetFromPixbufMethodInfo
    ResolveStatusIconMethod "setFromStock" o = StatusIconSetFromStockMethodInfo
    ResolveStatusIconMethod "setHasTooltip" o = StatusIconSetHasTooltipMethodInfo
    ResolveStatusIconMethod "setName" o = StatusIconSetNameMethodInfo
    ResolveStatusIconMethod "setProperty" o = GObject.Object.ObjectSetPropertyMethodInfo
    ResolveStatusIconMethod "setScreen" o = StatusIconSetScreenMethodInfo
    ResolveStatusIconMethod "setTitle" o = StatusIconSetTitleMethodInfo
    ResolveStatusIconMethod "setTooltipMarkup" o = StatusIconSetTooltipMarkupMethodInfo
    ResolveStatusIconMethod "setTooltipText" o = StatusIconSetTooltipTextMethodInfo
    ResolveStatusIconMethod "setVisible" o = StatusIconSetVisibleMethodInfo
    ResolveStatusIconMethod l o = O.MethodResolutionFailed l o

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

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

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

noStatusIconActivateCallback :: Maybe StatusIconActivateCallback
noStatusIconActivateCallback = Nothing

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

foreign import ccall "wrapper"
    mk_StatusIconActivateCallback :: C_StatusIconActivateCallback -> IO (FunPtr C_StatusIconActivateCallback)

genClosure_StatusIconActivate :: StatusIconActivateCallback -> IO Closure
genClosure_StatusIconActivate cb = do
    let cb' = wrap_StatusIconActivateCallback cb
    mk_StatusIconActivateCallback cb' >>= newCClosure


wrap_StatusIconActivateCallback ::
    StatusIconActivateCallback ->
    Ptr () ->
    Ptr () ->
    IO ()
wrap_StatusIconActivateCallback _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
    let cb' = wrap_StatusIconActivateCallback cb
    cb'' <- mk_StatusIconActivateCallback cb'
    connectSignalFunPtr obj "activate" cb'' after

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

noStatusIconButtonPressEventCallback :: Maybe StatusIconButtonPressEventCallback
noStatusIconButtonPressEventCallback = Nothing

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

foreign import ccall "wrapper"
    mk_StatusIconButtonPressEventCallback :: C_StatusIconButtonPressEventCallback -> IO (FunPtr C_StatusIconButtonPressEventCallback)

genClosure_StatusIconButtonPressEvent :: StatusIconButtonPressEventCallback -> IO Closure
genClosure_StatusIconButtonPressEvent cb = do
    let cb' = wrap_StatusIconButtonPressEventCallback cb
    mk_StatusIconButtonPressEventCallback cb' >>= newCClosure


wrap_StatusIconButtonPressEventCallback ::
    StatusIconButtonPressEventCallback ->
    Ptr () ->
    Ptr Gdk.EventButton.EventButton ->
    Ptr () ->
    IO CInt
wrap_StatusIconButtonPressEventCallback _cb _ event _ = do
    event' <- (newPtr Gdk.EventButton.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
    let cb' = wrap_StatusIconButtonPressEventCallback cb
    cb'' <- mk_StatusIconButtonPressEventCallback cb'
    connectSignalFunPtr obj "button-press-event" cb'' after

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

noStatusIconButtonReleaseEventCallback :: Maybe StatusIconButtonReleaseEventCallback
noStatusIconButtonReleaseEventCallback = Nothing

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

foreign import ccall "wrapper"
    mk_StatusIconButtonReleaseEventCallback :: C_StatusIconButtonReleaseEventCallback -> IO (FunPtr C_StatusIconButtonReleaseEventCallback)

genClosure_StatusIconButtonReleaseEvent :: StatusIconButtonReleaseEventCallback -> IO Closure
genClosure_StatusIconButtonReleaseEvent cb = do
    let cb' = wrap_StatusIconButtonReleaseEventCallback cb
    mk_StatusIconButtonReleaseEventCallback cb' >>= newCClosure


wrap_StatusIconButtonReleaseEventCallback ::
    StatusIconButtonReleaseEventCallback ->
    Ptr () ->
    Ptr Gdk.EventButton.EventButton ->
    Ptr () ->
    IO CInt
wrap_StatusIconButtonReleaseEventCallback _cb _ event _ = do
    event' <- (newPtr Gdk.EventButton.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
    let cb' = wrap_StatusIconButtonReleaseEventCallback cb
    cb'' <- mk_StatusIconButtonReleaseEventCallback cb'
    connectSignalFunPtr obj "button-release-event" cb'' after

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

noStatusIconPopupMenuCallback :: Maybe StatusIconPopupMenuCallback
noStatusIconPopupMenuCallback = Nothing

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

foreign import ccall "wrapper"
    mk_StatusIconPopupMenuCallback :: C_StatusIconPopupMenuCallback -> IO (FunPtr C_StatusIconPopupMenuCallback)

genClosure_StatusIconPopupMenu :: StatusIconPopupMenuCallback -> IO Closure
genClosure_StatusIconPopupMenu cb = do
    let cb' = wrap_StatusIconPopupMenuCallback cb
    mk_StatusIconPopupMenuCallback cb' >>= newCClosure


wrap_StatusIconPopupMenuCallback ::
    StatusIconPopupMenuCallback ->
    Ptr () ->
    Word32 ->
    Word32 ->
    Ptr () ->
    IO ()
wrap_StatusIconPopupMenuCallback _cb _ button activateTime _ = do
    _cb  button activateTime


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
    let cb' = wrap_StatusIconPopupMenuCallback cb
    cb'' <- mk_StatusIconPopupMenuCallback cb'
    connectSignalFunPtr obj "popup-menu" cb'' after

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

noStatusIconQueryTooltipCallback :: Maybe StatusIconQueryTooltipCallback
noStatusIconQueryTooltipCallback = Nothing

type C_StatusIconQueryTooltipCallback =
    Ptr () ->                               -- object
    Int32 ->
    Int32 ->
    CInt ->
    Ptr Gtk.Tooltip.Tooltip ->
    Ptr () ->                               -- user_data
    IO CInt

foreign import ccall "wrapper"
    mk_StatusIconQueryTooltipCallback :: C_StatusIconQueryTooltipCallback -> IO (FunPtr C_StatusIconQueryTooltipCallback)

genClosure_StatusIconQueryTooltip :: StatusIconQueryTooltipCallback -> IO Closure
genClosure_StatusIconQueryTooltip cb = do
    let cb' = wrap_StatusIconQueryTooltipCallback cb
    mk_StatusIconQueryTooltipCallback cb' >>= newCClosure


wrap_StatusIconQueryTooltipCallback ::
    StatusIconQueryTooltipCallback ->
    Ptr () ->
    Int32 ->
    Int32 ->
    CInt ->
    Ptr Gtk.Tooltip.Tooltip ->
    Ptr () ->
    IO CInt
wrap_StatusIconQueryTooltipCallback _cb _ x y keyboardMode tooltip _ = do
    let keyboardMode' = (/= 0) keyboardMode
    tooltip' <- (newObject Gtk.Tooltip.Tooltip) tooltip
    result <- _cb  x y keyboardMode' 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
    let cb' = wrap_StatusIconQueryTooltipCallback cb
    cb'' <- mk_StatusIconQueryTooltipCallback cb'
    connectSignalFunPtr obj "query-tooltip" cb'' after

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

noStatusIconScrollEventCallback :: Maybe StatusIconScrollEventCallback
noStatusIconScrollEventCallback = Nothing

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

foreign import ccall "wrapper"
    mk_StatusIconScrollEventCallback :: C_StatusIconScrollEventCallback -> IO (FunPtr C_StatusIconScrollEventCallback)

genClosure_StatusIconScrollEvent :: StatusIconScrollEventCallback -> IO Closure
genClosure_StatusIconScrollEvent cb = do
    let cb' = wrap_StatusIconScrollEventCallback cb
    mk_StatusIconScrollEventCallback cb' >>= newCClosure


wrap_StatusIconScrollEventCallback ::
    StatusIconScrollEventCallback ->
    Ptr () ->
    Ptr Gdk.EventScroll.EventScroll ->
    Ptr () ->
    IO CInt
wrap_StatusIconScrollEventCallback _cb _ event _ = do
    event' <- (newPtr Gdk.EventScroll.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
    let cb' = wrap_StatusIconScrollEventCallback cb
    cb'' <- mk_StatusIconScrollEventCallback cb'
    connectSignalFunPtr obj "scroll-event" cb'' after

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

noStatusIconSizeChangedCallback :: Maybe StatusIconSizeChangedCallback
noStatusIconSizeChangedCallback = Nothing

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

foreign import ccall "wrapper"
    mk_StatusIconSizeChangedCallback :: C_StatusIconSizeChangedCallback -> IO (FunPtr C_StatusIconSizeChangedCallback)

genClosure_StatusIconSizeChanged :: StatusIconSizeChangedCallback -> IO Closure
genClosure_StatusIconSizeChanged cb = do
    let cb' = wrap_StatusIconSizeChangedCallback cb
    mk_StatusIconSizeChangedCallback cb' >>= newCClosure


wrap_StatusIconSizeChangedCallback ::
    StatusIconSizeChangedCallback ->
    Ptr () ->
    Int32 ->
    Ptr () ->
    IO CInt
wrap_StatusIconSizeChangedCallback _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
    let cb' = wrap_StatusIconSizeChangedCallback cb
    cb'' <- mk_StatusIconSizeChangedCallback cb'
    connectSignalFunPtr obj "size-changed" cb'' after

-- VVV Prop "embedded"
   -- Type: TBasicType TBoolean
   -- Flags: [PropertyReadable]
   -- Nullable: (Nothing,Nothing)

getStatusIconEmbedded :: (MonadIO m, IsStatusIcon 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 = IsStatusIcon
    type AttrGetType StatusIconEmbeddedPropertyInfo = Bool
    type AttrLabel StatusIconEmbeddedPropertyInfo = "embedded"
    type AttrOrigin StatusIconEmbeddedPropertyInfo = StatusIcon
    attrGet _ = getStatusIconEmbedded
    attrSet _ = undefined
    attrConstruct _ = undefined
    attrClear _ = undefined

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

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

constructStatusIconFile :: (IsStatusIcon o) => T.Text -> IO (GValueConstruct o)
constructStatusIconFile val = constructObjectPropertyString "file" (Just val)

clearStatusIconFile :: (MonadIO m, IsStatusIcon o) => o -> m ()
clearStatusIconFile obj = liftIO $ setObjectPropertyString obj "file" (Nothing :: Maybe T.Text)

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

-- VVV Prop "gicon"
   -- Type: TInterface (Name {namespace = "Gio", name = "Icon"})
   -- Flags: [PropertyReadable,PropertyWritable]
   -- Nullable: (Just True,Nothing)

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

setStatusIconGicon :: (MonadIO m, IsStatusIcon o, Gio.Icon.IsIcon a) => o -> a -> m ()
setStatusIconGicon obj val = liftIO $ setObjectPropertyObject obj "gicon" (Just val)

constructStatusIconGicon :: (IsStatusIcon o, Gio.Icon.IsIcon a) => a -> IO (GValueConstruct o)
constructStatusIconGicon val = constructObjectPropertyObject "gicon" (Just val)

clearStatusIconGicon :: (MonadIO m, IsStatusIcon o) => o -> m ()
clearStatusIconGicon obj = liftIO $ setObjectPropertyObject obj "gicon" (Nothing :: Maybe Gio.Icon.Icon)

data StatusIconGiconPropertyInfo
instance AttrInfo StatusIconGiconPropertyInfo where
    type AttrAllowedOps StatusIconGiconPropertyInfo = '[ 'AttrSet, 'AttrConstruct, 'AttrGet, 'AttrClear]
    type AttrSetTypeConstraint StatusIconGiconPropertyInfo = Gio.Icon.IsIcon
    type AttrBaseTypeConstraint StatusIconGiconPropertyInfo = IsStatusIcon
    type AttrGetType StatusIconGiconPropertyInfo = (Maybe Gio.Icon.Icon)
    type AttrLabel StatusIconGiconPropertyInfo = "gicon"
    type AttrOrigin StatusIconGiconPropertyInfo = StatusIcon
    attrGet _ = getStatusIconGicon
    attrSet _ = setStatusIconGicon
    attrConstruct _ = constructStatusIconGicon
    attrClear _ = clearStatusIconGicon

-- VVV Prop "has-tooltip"
   -- Type: TBasicType TBoolean
   -- Flags: [PropertyReadable,PropertyWritable]
   -- Nullable: (Just False,Just False)

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

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

constructStatusIconHasTooltip :: (IsStatusIcon o) => Bool -> IO (GValueConstruct o)
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 = IsStatusIcon
    type AttrGetType StatusIconHasTooltipPropertyInfo = Bool
    type AttrLabel StatusIconHasTooltipPropertyInfo = "has-tooltip"
    type AttrOrigin StatusIconHasTooltipPropertyInfo = StatusIcon
    attrGet _ = getStatusIconHasTooltip
    attrSet _ = setStatusIconHasTooltip
    attrConstruct _ = constructStatusIconHasTooltip
    attrClear _ = undefined

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

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

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

constructStatusIconIconName :: (IsStatusIcon o) => T.Text -> IO (GValueConstruct o)
constructStatusIconIconName val = constructObjectPropertyString "icon-name" (Just val)

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

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

-- VVV Prop "orientation"
   -- Type: TInterface (Name {namespace = "Gtk", name = "Orientation"})
   -- Flags: [PropertyReadable]
   -- Nullable: (Nothing,Nothing)

getStatusIconOrientation :: (MonadIO m, IsStatusIcon o) => o -> m Gtk.Enums.Orientation
getStatusIconOrientation obj = liftIO $ getObjectPropertyEnum obj "orientation"

data StatusIconOrientationPropertyInfo
instance AttrInfo StatusIconOrientationPropertyInfo where
    type AttrAllowedOps StatusIconOrientationPropertyInfo = '[ 'AttrGet]
    type AttrSetTypeConstraint StatusIconOrientationPropertyInfo = (~) ()
    type AttrBaseTypeConstraint StatusIconOrientationPropertyInfo = IsStatusIcon
    type AttrGetType StatusIconOrientationPropertyInfo = Gtk.Enums.Orientation
    type AttrLabel StatusIconOrientationPropertyInfo = "orientation"
    type AttrOrigin StatusIconOrientationPropertyInfo = StatusIcon
    attrGet _ = getStatusIconOrientation
    attrSet _ = undefined
    attrConstruct _ = undefined
    attrClear _ = undefined

-- VVV Prop "pixbuf"
   -- Type: TInterface (Name {namespace = "GdkPixbuf", name = "Pixbuf"})
   -- Flags: [PropertyReadable,PropertyWritable]
   -- Nullable: (Just True,Nothing)

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

setStatusIconPixbuf :: (MonadIO m, IsStatusIcon o, GdkPixbuf.Pixbuf.IsPixbuf a) => o -> a -> m ()
setStatusIconPixbuf obj val = liftIO $ setObjectPropertyObject obj "pixbuf" (Just val)

constructStatusIconPixbuf :: (IsStatusIcon o, GdkPixbuf.Pixbuf.IsPixbuf a) => a -> IO (GValueConstruct o)
constructStatusIconPixbuf val = constructObjectPropertyObject "pixbuf" (Just val)

clearStatusIconPixbuf :: (MonadIO m, IsStatusIcon o) => o -> m ()
clearStatusIconPixbuf obj = liftIO $ setObjectPropertyObject obj "pixbuf" (Nothing :: Maybe GdkPixbuf.Pixbuf.Pixbuf)

data StatusIconPixbufPropertyInfo
instance AttrInfo StatusIconPixbufPropertyInfo where
    type AttrAllowedOps StatusIconPixbufPropertyInfo = '[ 'AttrSet, 'AttrConstruct, 'AttrGet, 'AttrClear]
    type AttrSetTypeConstraint StatusIconPixbufPropertyInfo = GdkPixbuf.Pixbuf.IsPixbuf
    type AttrBaseTypeConstraint StatusIconPixbufPropertyInfo = IsStatusIcon
    type AttrGetType StatusIconPixbufPropertyInfo = (Maybe GdkPixbuf.Pixbuf.Pixbuf)
    type AttrLabel StatusIconPixbufPropertyInfo = "pixbuf"
    type AttrOrigin StatusIconPixbufPropertyInfo = StatusIcon
    attrGet _ = getStatusIconPixbuf
    attrSet _ = setStatusIconPixbuf
    attrConstruct _ = constructStatusIconPixbuf
    attrClear _ = clearStatusIconPixbuf

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

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

setStatusIconScreen :: (MonadIO m, IsStatusIcon o, Gdk.Screen.IsScreen a) => o -> a -> m ()
setStatusIconScreen obj val = liftIO $ setObjectPropertyObject obj "screen" (Just val)

constructStatusIconScreen :: (IsStatusIcon o, Gdk.Screen.IsScreen a) => a -> IO (GValueConstruct o)
constructStatusIconScreen val = constructObjectPropertyObject "screen" (Just val)

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

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

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

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

-- VVV Prop "stock"
   -- Type: TBasicType TUTF8
   -- Flags: [PropertyReadable,PropertyWritable]
   -- Nullable: (Just True,Nothing)

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

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

constructStatusIconStock :: (IsStatusIcon o) => T.Text -> IO (GValueConstruct o)
constructStatusIconStock val = constructObjectPropertyString "stock" (Just val)

clearStatusIconStock :: (MonadIO m, IsStatusIcon o) => o -> m ()
clearStatusIconStock obj = liftIO $ setObjectPropertyString obj "stock" (Nothing :: Maybe T.Text)

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

-- VVV Prop "storage-type"
   -- Type: TInterface (Name {namespace = "Gtk", name = "ImageType"})
   -- Flags: [PropertyReadable]
   -- Nullable: (Just False,Nothing)

getStatusIconStorageType :: (MonadIO m, IsStatusIcon o) => o -> m Gtk.Enums.ImageType
getStatusIconStorageType obj = liftIO $ getObjectPropertyEnum obj "storage-type"

data StatusIconStorageTypePropertyInfo
instance AttrInfo StatusIconStorageTypePropertyInfo where
    type AttrAllowedOps StatusIconStorageTypePropertyInfo = '[ 'AttrGet]
    type AttrSetTypeConstraint StatusIconStorageTypePropertyInfo = (~) ()
    type AttrBaseTypeConstraint StatusIconStorageTypePropertyInfo = IsStatusIcon
    type AttrGetType StatusIconStorageTypePropertyInfo = Gtk.Enums.ImageType
    type AttrLabel StatusIconStorageTypePropertyInfo = "storage-type"
    type AttrOrigin StatusIconStorageTypePropertyInfo = StatusIcon
    attrGet _ = getStatusIconStorageType
    attrSet _ = undefined
    attrConstruct _ = undefined
    attrClear _ = undefined

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

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

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

constructStatusIconTitle :: (IsStatusIcon o) => T.Text -> IO (GValueConstruct o)
constructStatusIconTitle val = constructObjectPropertyString "title" (Just val)

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

-- VVV Prop "tooltip-markup"
   -- Type: TBasicType TUTF8
   -- Flags: [PropertyReadable,PropertyWritable]
   -- Nullable: (Nothing,Just True)

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

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

constructStatusIconTooltipMarkup :: (IsStatusIcon o) => T.Text -> IO (GValueConstruct o)
constructStatusIconTooltipMarkup val = constructObjectPropertyString "tooltip-markup" (Just val)

clearStatusIconTooltipMarkup :: (MonadIO m, IsStatusIcon o) => o -> m ()
clearStatusIconTooltipMarkup obj = liftIO $ setObjectPropertyString obj "tooltip-markup" (Nothing :: Maybe T.Text)

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

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

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

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

constructStatusIconTooltipText :: (IsStatusIcon o) => T.Text -> IO (GValueConstruct o)
constructStatusIconTooltipText val = constructObjectPropertyString "tooltip-text" (Just val)

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

-- VVV Prop "visible"
   -- Type: TBasicType TBoolean
   -- Flags: [PropertyReadable,PropertyWritable]
   -- Nullable: (Just False,Just False)

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

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

constructStatusIconVisible :: (IsStatusIcon o) => Bool -> IO (GValueConstruct o)
constructStatusIconVisible val = constructObjectPropertyBool "visible" val

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

instance O.HasAttributeList StatusIcon
type instance O.AttributeList StatusIcon = StatusIconAttributeList
type StatusIconAttributeList = ('[ '("embedded", StatusIconEmbeddedPropertyInfo), '("file", StatusIconFilePropertyInfo), '("gicon", StatusIconGiconPropertyInfo), '("hasTooltip", StatusIconHasTooltipPropertyInfo), '("iconName", StatusIconIconNamePropertyInfo), '("orientation", StatusIconOrientationPropertyInfo), '("pixbuf", StatusIconPixbufPropertyInfo), '("screen", StatusIconScreenPropertyInfo), '("size", StatusIconSizePropertyInfo), '("stock", StatusIconStockPropertyInfo), '("storageType", StatusIconStorageTypePropertyInfo), '("title", StatusIconTitlePropertyInfo), '("tooltipMarkup", StatusIconTooltipMarkupPropertyInfo), '("tooltipText", StatusIconTooltipTextPropertyInfo), '("visible", StatusIconVisiblePropertyInfo)] :: [(Symbol, *)])

statusIconEmbedded :: AttrLabelProxy "embedded"
statusIconEmbedded = AttrLabelProxy

statusIconFile :: AttrLabelProxy "file"
statusIconFile = AttrLabelProxy

statusIconGicon :: AttrLabelProxy "gicon"
statusIconGicon = AttrLabelProxy

statusIconHasTooltip :: AttrLabelProxy "hasTooltip"
statusIconHasTooltip = AttrLabelProxy

statusIconIconName :: AttrLabelProxy "iconName"
statusIconIconName = AttrLabelProxy

statusIconOrientation :: AttrLabelProxy "orientation"
statusIconOrientation = AttrLabelProxy

statusIconPixbuf :: AttrLabelProxy "pixbuf"
statusIconPixbuf = AttrLabelProxy

statusIconScreen :: AttrLabelProxy "screen"
statusIconScreen = AttrLabelProxy

statusIconSize :: AttrLabelProxy "size"
statusIconSize = AttrLabelProxy

statusIconStock :: AttrLabelProxy "stock"
statusIconStock = AttrLabelProxy

statusIconStorageType :: AttrLabelProxy "storageType"
statusIconStorageType = AttrLabelProxy

statusIconTitle :: AttrLabelProxy "title"
statusIconTitle = AttrLabelProxy

statusIconTooltipMarkup :: AttrLabelProxy "tooltipMarkup"
statusIconTooltipMarkup = AttrLabelProxy

statusIconTooltipText :: AttrLabelProxy "tooltipText"
statusIconTooltipText = AttrLabelProxy

statusIconVisible :: AttrLabelProxy "visible"
statusIconVisible = AttrLabelProxy

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 O.SignalList StatusIcon = StatusIconSignalList
type StatusIconSignalList = ('[ '("activate", StatusIconActivateSignalInfo), '("buttonPressEvent", StatusIconButtonPressEventSignalInfo), '("buttonReleaseEvent", StatusIconButtonReleaseEventSignalInfo), '("notify", GObject.Object.ObjectNotifySignalInfo), '("popupMenu", StatusIconPopupMenuSignalInfo), '("queryTooltip", StatusIconQueryTooltipSignalInfo), '("scrollEvent", StatusIconScrollEventSignalInfo), '("sizeChanged", StatusIconSizeChangedSignalInfo)] :: [(Symbol, *)])

-- method StatusIcon::new
-- method type : Constructor
-- Args : []
-- Lengths : []
-- returnType : Just (TInterface (Name {namespace = "Gtk", name = "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"] #-}
{- |
Creates an empty status icon object.

@since 2.10
-}
statusIconNew ::
    (B.CallStack.HasCallStack, MonadIO m) =>
    m StatusIcon
    {- ^ __Returns:__ a new 'GI.Gtk.Objects.StatusIcon.StatusIcon' -}
statusIconNew  = liftIO $ do
    result <- gtk_status_icon_new
    checkUnexpectedReturnNULL "statusIconNew" result
    result' <- (wrapObject StatusIcon) result
    return result'

-- method StatusIcon::new_from_file
-- method type : Constructor
-- Args : [Arg {argCName = "filename", argType = TBasicType TFileName, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a filename", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Just (TInterface (Name {namespace = "Gtk", name = "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"] #-}
{- |
Creates a status icon displaying the file /@filename@/.

The image will be scaled down to fit in the available
space in the notification area, if necessary.

@since 2.10
-}
statusIconNewFromFile ::
    (B.CallStack.HasCallStack, MonadIO m) =>
    [Char]
    {- ^ /@filename@/: a filename -}
    -> m StatusIcon
    {- ^ __Returns:__ a new 'GI.Gtk.Objects.StatusIcon.StatusIcon' -}
statusIconNewFromFile filename = liftIO $ do
    filename' <- stringToCString filename
    result <- gtk_status_icon_new_from_file filename'
    checkUnexpectedReturnNULL "statusIconNewFromFile" result
    result' <- (wrapObject StatusIcon) result
    freeMem filename'
    return result'

-- method StatusIcon::new_from_gicon
-- method type : Constructor
-- Args : [Arg {argCName = "icon", argType = TInterface (Name {namespace = "Gio", name = "Icon"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GIcon", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Just (TInterface (Name {namespace = "Gtk", name = "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 ->                    -- icon : TInterface (Name {namespace = "Gio", name = "Icon"})
    IO (Ptr StatusIcon)

{-# DEPRECATED statusIconNewFromGicon ["(Since version 3.14)","Use notifications"] #-}
{- |
Creates a status icon displaying a 'GI.Gio.Interfaces.Icon.Icon'. If the icon is a
themed icon, it will be updated when the theme changes.

@since 2.14
-}
statusIconNewFromGicon ::
    (B.CallStack.HasCallStack, MonadIO m, Gio.Icon.IsIcon a) =>
    a
    {- ^ /@icon@/: a 'GI.Gio.Interfaces.Icon.Icon' -}
    -> m StatusIcon
    {- ^ __Returns:__ a new 'GI.Gtk.Objects.StatusIcon.StatusIcon' -}
statusIconNewFromGicon icon = liftIO $ do
    icon' <- unsafeManagedPtrCastPtr icon
    result <- gtk_status_icon_new_from_gicon icon'
    checkUnexpectedReturnNULL "statusIconNewFromGicon" result
    result' <- (wrapObject StatusIcon) result
    touchManagedPtr icon
    return result'

-- method StatusIcon::new_from_icon_name
-- method type : Constructor
-- Args : [Arg {argCName = "icon_name", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "an icon name", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Just (TInterface (Name {namespace = "Gtk", name = "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"] #-}
{- |
Creates a status icon displaying an icon from the current icon theme.
If the current icon theme is changed, the icon will be updated
appropriately.

@since 2.10
-}
statusIconNewFromIconName ::
    (B.CallStack.HasCallStack, MonadIO m) =>
    T.Text
    {- ^ /@iconName@/: an icon name -}
    -> m StatusIcon
    {- ^ __Returns:__ a new 'GI.Gtk.Objects.StatusIcon.StatusIcon' -}
statusIconNewFromIconName iconName = liftIO $ do
    iconName' <- textToCString iconName
    result <- gtk_status_icon_new_from_icon_name iconName'
    checkUnexpectedReturnNULL "statusIconNewFromIconName" result
    result' <- (wrapObject StatusIcon) result
    freeMem iconName'
    return result'

-- method StatusIcon::new_from_pixbuf
-- method type : Constructor
-- Args : [Arg {argCName = "pixbuf", argType = TInterface (Name {namespace = "GdkPixbuf", name = "Pixbuf"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GdkPixbuf", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Just (TInterface (Name {namespace = "Gtk", name = "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 ->          -- pixbuf : TInterface (Name {namespace = "GdkPixbuf", name = "Pixbuf"})
    IO (Ptr StatusIcon)

{-# DEPRECATED statusIconNewFromPixbuf ["(Since version 3.14)","Use notifications"] #-}
{- |
Creates a status icon displaying /@pixbuf@/.

The image will be scaled down to fit in the available
space in the notification area, if necessary.

@since 2.10
-}
statusIconNewFromPixbuf ::
    (B.CallStack.HasCallStack, MonadIO m, GdkPixbuf.Pixbuf.IsPixbuf a) =>
    a
    {- ^ /@pixbuf@/: a 'GI.GdkPixbuf.Objects.Pixbuf.Pixbuf' -}
    -> m StatusIcon
    {- ^ __Returns:__ a new 'GI.Gtk.Objects.StatusIcon.StatusIcon' -}
statusIconNewFromPixbuf pixbuf = liftIO $ do
    pixbuf' <- unsafeManagedPtrCastPtr pixbuf
    result <- gtk_status_icon_new_from_pixbuf pixbuf'
    checkUnexpectedReturnNULL "statusIconNewFromPixbuf" result
    result' <- (wrapObject StatusIcon) result
    touchManagedPtr pixbuf
    return result'

-- method StatusIcon::new_from_stock
-- method type : Constructor
-- Args : [Arg {argCName = "stock_id", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a stock icon id", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Just (TInterface (Name {namespace = "Gtk", name = "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 'GI.Gtk.Objects.StatusIcon.statusIconNewFromIconName' instead."] #-}
{- |
Creates a status icon displaying a stock icon. Sample stock icon
names are 'GI.Gtk.Constants.STOCK_OPEN', 'GI.Gtk.Constants.STOCK_QUIT'. You can register your
own stock icon names, see 'GI.Gtk.Objects.IconFactory.iconFactoryAddDefault' and
'GI.Gtk.Objects.IconFactory.iconFactoryAdd'.

@since 2.10
-}
statusIconNewFromStock ::
    (B.CallStack.HasCallStack, MonadIO m) =>
    T.Text
    {- ^ /@stockId@/: a stock icon id -}
    -> m StatusIcon
    {- ^ __Returns:__ a new 'GI.Gtk.Objects.StatusIcon.StatusIcon' -}
statusIconNewFromStock stockId = liftIO $ do
    stockId' <- textToCString stockId
    result <- gtk_status_icon_new_from_stock stockId'
    checkUnexpectedReturnNULL "statusIconNewFromStock" result
    result' <- (wrapObject StatusIcon) result
    freeMem stockId'
    return result'

-- method StatusIcon::get_geometry
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "status_icon", argType = TInterface (Name {namespace = "Gtk", name = "StatusIcon"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GtkStatusIcon", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "screen", argType = TInterface (Name {namespace = "Gdk", name = "Screen"}), direction = DirectionOut, mayBeNull = False, argDoc = Documentation {rawDocText = Just "return location for\n         the screen, or %NULL if the information is not needed", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "area", argType = TInterface (Name {namespace = "Gdk", name = "Rectangle"}), direction = DirectionOut, mayBeNull = False, argDoc = Documentation {rawDocText = Just "return location for the area occupied by\n       the status icon, or %NULL", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = True, transfer = TransferNothing},Arg {argCName = "orientation", argType = TInterface (Name {namespace = "Gtk", name = "Orientation"}), direction = DirectionOut, mayBeNull = False, argDoc = Documentation {rawDocText = Just "return location for the\n   orientation of the panel in which the status icon is embedded,\n   or %NULL. A panel at the top or bottom of the screen is\n   horizontal, a panel at the left or right is vertical.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything}]
-- Lengths : []
-- returnType : Just (TBasicType TBoolean)
-- throws : False
-- Skip return : False

foreign import ccall "gtk_status_icon_get_geometry" gtk_status_icon_get_geometry :: 
    Ptr StatusIcon ->                       -- status_icon : TInterface (Name {namespace = "Gtk", name = "StatusIcon"})
    Ptr (Ptr Gdk.Screen.Screen) ->          -- screen : TInterface (Name {namespace = "Gdk", name = "Screen"})
    Ptr Gdk.Rectangle.Rectangle ->          -- area : TInterface (Name {namespace = "Gdk", name = "Rectangle"})
    Ptr CUInt ->                            -- orientation : TInterface (Name {namespace = "Gtk", name = "Orientation"})
    IO CInt

{-# DEPRECATED statusIconGetGeometry ["(Since version 3.14)","Use notifications"] #-}
{- |
Obtains information about the location of the status icon
on screen. This information can be used to e.g. position
popups like notification bubbles.

See 'GI.Gtk.Objects.StatusIcon.statusIconPositionMenu' for a more convenient
alternative for positioning menus.

Note that some platforms do not allow GTK+ to provide
this information, and even on platforms that do allow it,
the information is not reliable unless the status icon
is embedded in a notification area, see
'GI.Gtk.Objects.StatusIcon.statusIconIsEmbedded'.

@since 2.10
-}
statusIconGetGeometry ::
    (B.CallStack.HasCallStack, MonadIO m, IsStatusIcon a) =>
    a
    {- ^ /@statusIcon@/: a 'GI.Gtk.Objects.StatusIcon.StatusIcon' -}
    -> m (Bool,Gdk.Screen.Screen,Gdk.Rectangle.Rectangle,Gtk.Enums.Orientation)
    {- ^ __Returns:__ 'True' if the location information has
              been filled in -}
statusIconGetGeometry statusIcon = liftIO $ do
    statusIcon' <- unsafeManagedPtrCastPtr statusIcon
    screen <- allocMem :: IO (Ptr (Ptr Gdk.Screen.Screen))
    area <- callocBoxedBytes 16 :: IO (Ptr Gdk.Rectangle.Rectangle)
    orientation <- allocMem :: IO (Ptr CUInt)
    result <- gtk_status_icon_get_geometry statusIcon' screen area orientation
    let result' = (/= 0) result
    screen' <- peek screen
    screen'' <- (newObject Gdk.Screen.Screen) screen'
    area' <- (wrapBoxed Gdk.Rectangle.Rectangle) area
    orientation' <- peek orientation
    let orientation'' = (toEnum . fromIntegral) orientation'
    touchManagedPtr statusIcon
    freeMem screen
    freeMem orientation
    return (result', screen'', area', orientation'')

data StatusIconGetGeometryMethodInfo
instance (signature ~ (m (Bool,Gdk.Screen.Screen,Gdk.Rectangle.Rectangle,Gtk.Enums.Orientation)), MonadIO m, IsStatusIcon a) => O.MethodInfo StatusIconGetGeometryMethodInfo a signature where
    overloadedMethod _ = statusIconGetGeometry

-- method StatusIcon::get_gicon
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "status_icon", argType = TInterface (Name {namespace = "Gtk", name = "StatusIcon"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GtkStatusIcon", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Just (TInterface (Name {namespace = "Gio", name = "Icon"}))
-- throws : False
-- Skip return : False

foreign import ccall "gtk_status_icon_get_gicon" gtk_status_icon_get_gicon :: 
    Ptr StatusIcon ->                       -- status_icon : TInterface (Name {namespace = "Gtk", name = "StatusIcon"})
    IO (Ptr Gio.Icon.Icon)

{-# DEPRECATED statusIconGetGicon ["(Since version 3.14)","Use notifications"] #-}
{- |
Retrieves the 'GI.Gio.Interfaces.Icon.Icon' being displayed by the 'GI.Gtk.Objects.StatusIcon.StatusIcon'.
The storage type of the status icon must be 'GI.Gtk.Enums.ImageTypeEmpty' or
'GI.Gtk.Enums.ImageTypeGicon' (see 'GI.Gtk.Objects.StatusIcon.statusIconGetStorageType').
The caller of this function does not own a reference to the
returned 'GI.Gio.Interfaces.Icon.Icon'.

If this function fails, /@icon@/ is left unchanged;

@since 2.14
-}
statusIconGetGicon ::
    (B.CallStack.HasCallStack, MonadIO m, IsStatusIcon a) =>
    a
    {- ^ /@statusIcon@/: a 'GI.Gtk.Objects.StatusIcon.StatusIcon' -}
    -> m (Maybe Gio.Icon.Icon)
    {- ^ __Returns:__ the displayed icon, or 'Nothing' if the image is empty -}
statusIconGetGicon statusIcon = liftIO $ do
    statusIcon' <- unsafeManagedPtrCastPtr statusIcon
    result <- gtk_status_icon_get_gicon statusIcon'
    maybeResult <- convertIfNonNull result $ \result' -> do
        result'' <- (newObject Gio.Icon.Icon) result'
        return result''
    touchManagedPtr statusIcon
    return maybeResult

data StatusIconGetGiconMethodInfo
instance (signature ~ (m (Maybe Gio.Icon.Icon)), MonadIO m, IsStatusIcon a) => O.MethodInfo StatusIconGetGiconMethodInfo a signature where
    overloadedMethod _ = statusIconGetGicon

-- method StatusIcon::get_has_tooltip
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "status_icon", argType = TInterface (Name {namespace = "Gtk", name = "StatusIcon"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GtkStatusIcon", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Just (TBasicType TBoolean)
-- throws : False
-- Skip return : False

foreign import ccall "gtk_status_icon_get_has_tooltip" gtk_status_icon_get_has_tooltip :: 
    Ptr StatusIcon ->                       -- status_icon : TInterface (Name {namespace = "Gtk", name = "StatusIcon"})
    IO CInt

{-# DEPRECATED statusIconGetHasTooltip ["(Since version 3.14)","Use notifications"] #-}
{- |
Returns the current value of the has-tooltip property.
See 'GI.Gtk.Objects.StatusIcon.StatusIcon':@/has-tooltip/@ for more information.

@since 2.16
-}
statusIconGetHasTooltip ::
    (B.CallStack.HasCallStack, MonadIO m, IsStatusIcon a) =>
    a
    {- ^ /@statusIcon@/: a 'GI.Gtk.Objects.StatusIcon.StatusIcon' -}
    -> m Bool
    {- ^ __Returns:__ current value of has-tooltip on /@statusIcon@/. -}
statusIconGetHasTooltip statusIcon = liftIO $ do
    statusIcon' <- unsafeManagedPtrCastPtr statusIcon
    result <- gtk_status_icon_get_has_tooltip statusIcon'
    let result' = (/= 0) result
    touchManagedPtr statusIcon
    return result'

data StatusIconGetHasTooltipMethodInfo
instance (signature ~ (m Bool), MonadIO m, IsStatusIcon a) => O.MethodInfo StatusIconGetHasTooltipMethodInfo a signature where
    overloadedMethod _ = statusIconGetHasTooltip

-- method StatusIcon::get_icon_name
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "status_icon", argType = TInterface (Name {namespace = "Gtk", name = "StatusIcon"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GtkStatusIcon", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Just (TBasicType TUTF8)
-- throws : False
-- Skip return : False

foreign import ccall "gtk_status_icon_get_icon_name" gtk_status_icon_get_icon_name :: 
    Ptr StatusIcon ->                       -- status_icon : TInterface (Name {namespace = "Gtk", name = "StatusIcon"})
    IO CString

{-# DEPRECATED statusIconGetIconName ["(Since version 3.14)","Use notifications"] #-}
{- |
Gets the name of the icon being displayed by the 'GI.Gtk.Objects.StatusIcon.StatusIcon'.
The storage type of the status icon must be 'GI.Gtk.Enums.ImageTypeEmpty' or
'GI.Gtk.Enums.ImageTypeIconName' (see 'GI.Gtk.Objects.StatusIcon.statusIconGetStorageType').
The returned string is owned by the 'GI.Gtk.Objects.StatusIcon.StatusIcon' and should not
be freed or modified.

@since 2.10
-}
statusIconGetIconName ::
    (B.CallStack.HasCallStack, MonadIO m, IsStatusIcon a) =>
    a
    {- ^ /@statusIcon@/: a 'GI.Gtk.Objects.StatusIcon.StatusIcon' -}
    -> m (Maybe T.Text)
    {- ^ __Returns:__ name of the displayed icon, or 'Nothing' if the image is empty. -}
statusIconGetIconName statusIcon = liftIO $ do
    statusIcon' <- unsafeManagedPtrCastPtr statusIcon
    result <- gtk_status_icon_get_icon_name statusIcon'
    maybeResult <- convertIfNonNull result $ \result' -> do
        result'' <- cstringToText result'
        return result''
    touchManagedPtr statusIcon
    return maybeResult

data StatusIconGetIconNameMethodInfo
instance (signature ~ (m (Maybe T.Text)), MonadIO m, IsStatusIcon a) => O.MethodInfo StatusIconGetIconNameMethodInfo a signature where
    overloadedMethod _ = statusIconGetIconName

-- method StatusIcon::get_pixbuf
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "status_icon", argType = TInterface (Name {namespace = "Gtk", name = "StatusIcon"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GtkStatusIcon", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Just (TInterface (Name {namespace = "GdkPixbuf", name = "Pixbuf"}))
-- throws : False
-- Skip return : False

foreign import ccall "gtk_status_icon_get_pixbuf" gtk_status_icon_get_pixbuf :: 
    Ptr StatusIcon ->                       -- status_icon : TInterface (Name {namespace = "Gtk", name = "StatusIcon"})
    IO (Ptr GdkPixbuf.Pixbuf.Pixbuf)

{-# DEPRECATED statusIconGetPixbuf ["(Since version 3.14)","Use notifications"] #-}
{- |
Gets the 'GI.GdkPixbuf.Objects.Pixbuf.Pixbuf' being displayed by the 'GI.Gtk.Objects.StatusIcon.StatusIcon'.
The storage type of the status icon must be 'GI.Gtk.Enums.ImageTypeEmpty' or
'GI.Gtk.Enums.ImageTypePixbuf' (see 'GI.Gtk.Objects.StatusIcon.statusIconGetStorageType').
The caller of this function does not own a reference to the
returned pixbuf.

@since 2.10
-}
statusIconGetPixbuf ::
    (B.CallStack.HasCallStack, MonadIO m, IsStatusIcon a) =>
    a
    {- ^ /@statusIcon@/: a 'GI.Gtk.Objects.StatusIcon.StatusIcon' -}
    -> m (Maybe GdkPixbuf.Pixbuf.Pixbuf)
    {- ^ __Returns:__ the displayed pixbuf,
    or 'Nothing' if the image is empty. -}
statusIconGetPixbuf statusIcon = liftIO $ do
    statusIcon' <- unsafeManagedPtrCastPtr statusIcon
    result <- gtk_status_icon_get_pixbuf statusIcon'
    maybeResult <- convertIfNonNull result $ \result' -> do
        result'' <- (newObject GdkPixbuf.Pixbuf.Pixbuf) result'
        return result''
    touchManagedPtr statusIcon
    return maybeResult

data StatusIconGetPixbufMethodInfo
instance (signature ~ (m (Maybe GdkPixbuf.Pixbuf.Pixbuf)), MonadIO m, IsStatusIcon a) => O.MethodInfo StatusIconGetPixbufMethodInfo a signature where
    overloadedMethod _ = statusIconGetPixbuf

-- method StatusIcon::get_screen
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "status_icon", argType = TInterface (Name {namespace = "Gtk", name = "StatusIcon"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GtkStatusIcon", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Just (TInterface (Name {namespace = "Gdk", name = "Screen"}))
-- throws : False
-- Skip return : False

foreign import ccall "gtk_status_icon_get_screen" gtk_status_icon_get_screen :: 
    Ptr StatusIcon ->                       -- status_icon : TInterface (Name {namespace = "Gtk", name = "StatusIcon"})
    IO (Ptr Gdk.Screen.Screen)

{-# DEPRECATED statusIconGetScreen ["(Since version 3.14)","Use notifications"] #-}
{- |
Returns the 'GI.Gdk.Objects.Screen.Screen' associated with /@statusIcon@/.

@since 2.12
-}
statusIconGetScreen ::
    (B.CallStack.HasCallStack, MonadIO m, IsStatusIcon a) =>
    a
    {- ^ /@statusIcon@/: a 'GI.Gtk.Objects.StatusIcon.StatusIcon' -}
    -> m Gdk.Screen.Screen
    {- ^ __Returns:__ a 'GI.Gdk.Objects.Screen.Screen'. -}
statusIconGetScreen statusIcon = liftIO $ do
    statusIcon' <- unsafeManagedPtrCastPtr statusIcon
    result <- gtk_status_icon_get_screen statusIcon'
    checkUnexpectedReturnNULL "statusIconGetScreen" result
    result' <- (newObject Gdk.Screen.Screen) result
    touchManagedPtr statusIcon
    return result'

data StatusIconGetScreenMethodInfo
instance (signature ~ (m Gdk.Screen.Screen), MonadIO m, IsStatusIcon a) => O.MethodInfo StatusIconGetScreenMethodInfo a signature where
    overloadedMethod _ = statusIconGetScreen

-- method StatusIcon::get_size
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "status_icon", argType = TInterface (Name {namespace = "Gtk", name = "StatusIcon"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GtkStatusIcon", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Just (TBasicType TInt)
-- throws : False
-- Skip return : False

foreign import ccall "gtk_status_icon_get_size" gtk_status_icon_get_size :: 
    Ptr StatusIcon ->                       -- status_icon : TInterface (Name {namespace = "Gtk", name = "StatusIcon"})
    IO Int32

{-# DEPRECATED statusIconGetSize ["(Since version 3.14)","Use notifications"] #-}
{- |
Gets the size in pixels that is available for the image.
Stock icons and named icons adapt their size automatically
if the size of the notification area changes. For other
storage types, the size-changed signal can be used to
react to size changes.

Note that the returned size is only meaningful while the
status icon is embedded (see 'GI.Gtk.Objects.StatusIcon.statusIconIsEmbedded').

@since 2.10
-}
statusIconGetSize ::
    (B.CallStack.HasCallStack, MonadIO m, IsStatusIcon a) =>
    a
    {- ^ /@statusIcon@/: a 'GI.Gtk.Objects.StatusIcon.StatusIcon' -}
    -> m Int32
    {- ^ __Returns:__ the size that is available for the image -}
statusIconGetSize statusIcon = liftIO $ do
    statusIcon' <- unsafeManagedPtrCastPtr statusIcon
    result <- gtk_status_icon_get_size statusIcon'
    touchManagedPtr statusIcon
    return result

data StatusIconGetSizeMethodInfo
instance (signature ~ (m Int32), MonadIO m, IsStatusIcon a) => O.MethodInfo StatusIconGetSizeMethodInfo a signature where
    overloadedMethod _ = statusIconGetSize

-- method StatusIcon::get_stock
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "status_icon", argType = TInterface (Name {namespace = "Gtk", name = "StatusIcon"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GtkStatusIcon", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Just (TBasicType TUTF8)
-- throws : False
-- Skip return : False

foreign import ccall "gtk_status_icon_get_stock" gtk_status_icon_get_stock :: 
    Ptr StatusIcon ->                       -- status_icon : TInterface (Name {namespace = "Gtk", name = "StatusIcon"})
    IO CString

{-# DEPRECATED statusIconGetStock ["(Since version 3.10)","Use 'GI.Gtk.Objects.StatusIcon.statusIconGetIconName' instead."] #-}
{- |
Gets the id of the stock icon being displayed by the 'GI.Gtk.Objects.StatusIcon.StatusIcon'.
The storage type of the status icon must be 'GI.Gtk.Enums.ImageTypeEmpty' or
'GI.Gtk.Enums.ImageTypeStock' (see 'GI.Gtk.Objects.StatusIcon.statusIconGetStorageType').
The returned string is owned by the 'GI.Gtk.Objects.StatusIcon.StatusIcon' and should not
be freed or modified.

@since 2.10
-}
statusIconGetStock ::
    (B.CallStack.HasCallStack, MonadIO m, IsStatusIcon a) =>
    a
    {- ^ /@statusIcon@/: a 'GI.Gtk.Objects.StatusIcon.StatusIcon' -}
    -> m (Maybe T.Text)
    {- ^ __Returns:__ stock id of the displayed stock icon,
  or 'Nothing' if the image is empty. -}
statusIconGetStock statusIcon = liftIO $ do
    statusIcon' <- unsafeManagedPtrCastPtr statusIcon
    result <- gtk_status_icon_get_stock statusIcon'
    maybeResult <- convertIfNonNull result $ \result' -> do
        result'' <- cstringToText result'
        return result''
    touchManagedPtr statusIcon
    return maybeResult

data StatusIconGetStockMethodInfo
instance (signature ~ (m (Maybe T.Text)), MonadIO m, IsStatusIcon a) => O.MethodInfo StatusIconGetStockMethodInfo a signature where
    overloadedMethod _ = statusIconGetStock

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

foreign import ccall "gtk_status_icon_get_storage_type" gtk_status_icon_get_storage_type :: 
    Ptr StatusIcon ->                       -- status_icon : TInterface (Name {namespace = "Gtk", name = "StatusIcon"})
    IO CUInt

{-# DEPRECATED statusIconGetStorageType ["(Since version 3.14)","Use notifications"] #-}
{- |
Gets the type of representation being used by the 'GI.Gtk.Objects.StatusIcon.StatusIcon'
to store image data. If the 'GI.Gtk.Objects.StatusIcon.StatusIcon' has no image data,
the return value will be 'GI.Gtk.Enums.ImageTypeEmpty'.

@since 2.10
-}
statusIconGetStorageType ::
    (B.CallStack.HasCallStack, MonadIO m, IsStatusIcon a) =>
    a
    {- ^ /@statusIcon@/: a 'GI.Gtk.Objects.StatusIcon.StatusIcon' -}
    -> m Gtk.Enums.ImageType
    {- ^ __Returns:__ the image representation being used -}
statusIconGetStorageType statusIcon = liftIO $ do
    statusIcon' <- unsafeManagedPtrCastPtr statusIcon
    result <- gtk_status_icon_get_storage_type statusIcon'
    let result' = (toEnum . fromIntegral) result
    touchManagedPtr statusIcon
    return result'

data StatusIconGetStorageTypeMethodInfo
instance (signature ~ (m Gtk.Enums.ImageType), MonadIO m, IsStatusIcon a) => O.MethodInfo StatusIconGetStorageTypeMethodInfo a signature where
    overloadedMethod _ = statusIconGetStorageType

-- method StatusIcon::get_title
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "status_icon", argType = TInterface (Name {namespace = "Gtk", name = "StatusIcon"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GtkStatusIcon", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Just (TBasicType TUTF8)
-- throws : False
-- Skip return : False

foreign import ccall "gtk_status_icon_get_title" gtk_status_icon_get_title :: 
    Ptr StatusIcon ->                       -- status_icon : TInterface (Name {namespace = "Gtk", name = "StatusIcon"})
    IO CString

{-# DEPRECATED statusIconGetTitle ["(Since version 3.14)","Use notifications"] #-}
{- |
Gets the title of this tray icon. See 'GI.Gtk.Objects.StatusIcon.statusIconSetTitle'.

@since 2.18
-}
statusIconGetTitle ::
    (B.CallStack.HasCallStack, MonadIO m, IsStatusIcon a) =>
    a
    {- ^ /@statusIcon@/: a 'GI.Gtk.Objects.StatusIcon.StatusIcon' -}
    -> m T.Text
    {- ^ __Returns:__ the title of the status icon -}
statusIconGetTitle statusIcon = liftIO $ do
    statusIcon' <- unsafeManagedPtrCastPtr statusIcon
    result <- gtk_status_icon_get_title statusIcon'
    checkUnexpectedReturnNULL "statusIconGetTitle" result
    result' <- cstringToText result
    touchManagedPtr statusIcon
    return result'

data StatusIconGetTitleMethodInfo
instance (signature ~ (m T.Text), MonadIO m, IsStatusIcon a) => O.MethodInfo StatusIconGetTitleMethodInfo a signature where
    overloadedMethod _ = statusIconGetTitle

-- method StatusIcon::get_tooltip_markup
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "status_icon", argType = TInterface (Name {namespace = "Gtk", name = "StatusIcon"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GtkStatusIcon", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Just (TBasicType TUTF8)
-- throws : False
-- Skip return : False

foreign import ccall "gtk_status_icon_get_tooltip_markup" gtk_status_icon_get_tooltip_markup :: 
    Ptr StatusIcon ->                       -- status_icon : TInterface (Name {namespace = "Gtk", name = "StatusIcon"})
    IO CString

{-# DEPRECATED statusIconGetTooltipMarkup ["(Since version 3.14)","Use notifications"] #-}
{- |
Gets the contents of the tooltip for /@statusIcon@/.

@since 2.16
-}
statusIconGetTooltipMarkup ::
    (B.CallStack.HasCallStack, MonadIO m, IsStatusIcon a) =>
    a
    {- ^ /@statusIcon@/: a 'GI.Gtk.Objects.StatusIcon.StatusIcon' -}
    -> m (Maybe T.Text)
    {- ^ __Returns:__ the tooltip text, or 'Nothing'. You should free the
  returned string with 'GI.GLib.Functions.free' when done. -}
statusIconGetTooltipMarkup statusIcon = liftIO $ do
    statusIcon' <- unsafeManagedPtrCastPtr statusIcon
    result <- gtk_status_icon_get_tooltip_markup statusIcon'
    maybeResult <- convertIfNonNull result $ \result' -> do
        result'' <- cstringToText result'
        freeMem result'
        return result''
    touchManagedPtr statusIcon
    return maybeResult

data StatusIconGetTooltipMarkupMethodInfo
instance (signature ~ (m (Maybe T.Text)), MonadIO m, IsStatusIcon a) => O.MethodInfo StatusIconGetTooltipMarkupMethodInfo a signature where
    overloadedMethod _ = statusIconGetTooltipMarkup

-- method StatusIcon::get_tooltip_text
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "status_icon", argType = TInterface (Name {namespace = "Gtk", name = "StatusIcon"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GtkStatusIcon", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Just (TBasicType TUTF8)
-- throws : False
-- Skip return : False

foreign import ccall "gtk_status_icon_get_tooltip_text" gtk_status_icon_get_tooltip_text :: 
    Ptr StatusIcon ->                       -- status_icon : TInterface (Name {namespace = "Gtk", name = "StatusIcon"})
    IO CString

{-# DEPRECATED statusIconGetTooltipText ["(Since version 3.14)","Use notifications"] #-}
{- |
Gets the contents of the tooltip for /@statusIcon@/.

@since 2.16
-}
statusIconGetTooltipText ::
    (B.CallStack.HasCallStack, MonadIO m, IsStatusIcon a) =>
    a
    {- ^ /@statusIcon@/: a 'GI.Gtk.Objects.StatusIcon.StatusIcon' -}
    -> m (Maybe T.Text)
    {- ^ __Returns:__ the tooltip text, or 'Nothing'. You should free the
  returned string with 'GI.GLib.Functions.free' when done. -}
statusIconGetTooltipText statusIcon = liftIO $ do
    statusIcon' <- unsafeManagedPtrCastPtr statusIcon
    result <- gtk_status_icon_get_tooltip_text statusIcon'
    maybeResult <- convertIfNonNull result $ \result' -> do
        result'' <- cstringToText result'
        freeMem result'
        return result''
    touchManagedPtr statusIcon
    return maybeResult

data StatusIconGetTooltipTextMethodInfo
instance (signature ~ (m (Maybe T.Text)), MonadIO m, IsStatusIcon a) => O.MethodInfo StatusIconGetTooltipTextMethodInfo a signature where
    overloadedMethod _ = statusIconGetTooltipText

-- method StatusIcon::get_visible
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "status_icon", argType = TInterface (Name {namespace = "Gtk", name = "StatusIcon"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GtkStatusIcon", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Just (TBasicType TBoolean)
-- throws : False
-- Skip return : False

foreign import ccall "gtk_status_icon_get_visible" gtk_status_icon_get_visible :: 
    Ptr StatusIcon ->                       -- status_icon : TInterface (Name {namespace = "Gtk", name = "StatusIcon"})
    IO CInt

{-# DEPRECATED statusIconGetVisible ["(Since version 3.14)","Use notifications"] #-}
{- |
Returns whether the status icon is visible or not.
Note that being visible does not guarantee that
the user can actually see the icon, see also
'GI.Gtk.Objects.StatusIcon.statusIconIsEmbedded'.

@since 2.10
-}
statusIconGetVisible ::
    (B.CallStack.HasCallStack, MonadIO m, IsStatusIcon a) =>
    a
    {- ^ /@statusIcon@/: a 'GI.Gtk.Objects.StatusIcon.StatusIcon' -}
    -> m Bool
    {- ^ __Returns:__ 'True' if the status icon is visible -}
statusIconGetVisible statusIcon = liftIO $ do
    statusIcon' <- unsafeManagedPtrCastPtr statusIcon
    result <- gtk_status_icon_get_visible statusIcon'
    let result' = (/= 0) result
    touchManagedPtr statusIcon
    return result'

data StatusIconGetVisibleMethodInfo
instance (signature ~ (m Bool), MonadIO m, IsStatusIcon a) => O.MethodInfo StatusIconGetVisibleMethodInfo a signature where
    overloadedMethod _ = statusIconGetVisible

-- method StatusIcon::get_x11_window_id
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "status_icon", argType = TInterface (Name {namespace = "Gtk", name = "StatusIcon"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GtkStatusIcon", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Just (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 ->                       -- status_icon : TInterface (Name {namespace = "Gtk", name = "StatusIcon"})
    IO Word32

{-# DEPRECATED statusIconGetX11WindowId ["(Since version 3.14)","Use notifications"] #-}
{- |
This function is only useful on the X11\/freedesktop.org platform.
It returns a window ID for the widget in the underlying
status icon implementation.  This is useful for the Galago
notification service, which can send a window ID in the protocol
in order for the server to position notification windows
pointing to a status icon reliably.

This function is not intended for other use cases which are
more likely to be met by one of the non-X11 specific methods, such
as 'GI.Gtk.Objects.StatusIcon.statusIconPositionMenu'.

@since 2.14
-}
statusIconGetX11WindowId ::
    (B.CallStack.HasCallStack, MonadIO m, IsStatusIcon a) =>
    a
    {- ^ /@statusIcon@/: a 'GI.Gtk.Objects.StatusIcon.StatusIcon' -}
    -> m Word32
    {- ^ __Returns:__ An 32 bit unsigned integer identifier for the
underlying X11 Window -}
statusIconGetX11WindowId statusIcon = liftIO $ do
    statusIcon' <- unsafeManagedPtrCastPtr statusIcon
    result <- gtk_status_icon_get_x11_window_id statusIcon'
    touchManagedPtr statusIcon
    return result

data StatusIconGetX11WindowIdMethodInfo
instance (signature ~ (m Word32), MonadIO m, IsStatusIcon a) => O.MethodInfo StatusIconGetX11WindowIdMethodInfo a signature where
    overloadedMethod _ = statusIconGetX11WindowId

-- method StatusIcon::is_embedded
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "status_icon", argType = TInterface (Name {namespace = "Gtk", name = "StatusIcon"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GtkStatusIcon", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Just (TBasicType TBoolean)
-- throws : False
-- Skip return : False

foreign import ccall "gtk_status_icon_is_embedded" gtk_status_icon_is_embedded :: 
    Ptr StatusIcon ->                       -- status_icon : TInterface (Name {namespace = "Gtk", name = "StatusIcon"})
    IO CInt

{-# DEPRECATED statusIconIsEmbedded ["(Since version 3.14)","Use notifications"] #-}
{- |
Returns whether the status icon is embedded in a notification
area.

@since 2.10
-}
statusIconIsEmbedded ::
    (B.CallStack.HasCallStack, MonadIO m, IsStatusIcon a) =>
    a
    {- ^ /@statusIcon@/: a 'GI.Gtk.Objects.StatusIcon.StatusIcon' -}
    -> m Bool
    {- ^ __Returns:__ 'True' if the status icon is embedded in
  a notification area. -}
statusIconIsEmbedded statusIcon = liftIO $ do
    statusIcon' <- unsafeManagedPtrCastPtr statusIcon
    result <- gtk_status_icon_is_embedded statusIcon'
    let result' = (/= 0) result
    touchManagedPtr statusIcon
    return result'

data StatusIconIsEmbeddedMethodInfo
instance (signature ~ (m Bool), MonadIO m, IsStatusIcon a) => O.MethodInfo StatusIconIsEmbeddedMethodInfo a signature where
    overloadedMethod _ = statusIconIsEmbedded

-- method StatusIcon::set_from_file
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "status_icon", argType = TInterface (Name {namespace = "Gtk", name = "StatusIcon"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GtkStatusIcon", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "filename", argType = TBasicType TFileName, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a filename", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Nothing
-- throws : False
-- Skip return : False

foreign import ccall "gtk_status_icon_set_from_file" gtk_status_icon_set_from_file :: 
    Ptr StatusIcon ->                       -- status_icon : TInterface (Name {namespace = "Gtk", name = "StatusIcon"})
    CString ->                              -- filename : TBasicType TFileName
    IO ()

{-# DEPRECATED statusIconSetFromFile ["(Since version 3.14)","Use notifications"] #-}
{- |
Makes /@statusIcon@/ display the file /@filename@/.
See 'GI.Gtk.Objects.StatusIcon.statusIconNewFromFile' for details.

@since 2.10
-}
statusIconSetFromFile ::
    (B.CallStack.HasCallStack, MonadIO m, IsStatusIcon a) =>
    a
    {- ^ /@statusIcon@/: a 'GI.Gtk.Objects.StatusIcon.StatusIcon' -}
    -> [Char]
    {- ^ /@filename@/: a filename -}
    -> m ()
statusIconSetFromFile statusIcon filename = liftIO $ do
    statusIcon' <- unsafeManagedPtrCastPtr statusIcon
    filename' <- stringToCString filename
    gtk_status_icon_set_from_file statusIcon' filename'
    touchManagedPtr statusIcon
    freeMem filename'
    return ()

data StatusIconSetFromFileMethodInfo
instance (signature ~ ([Char] -> m ()), MonadIO m, IsStatusIcon a) => O.MethodInfo StatusIconSetFromFileMethodInfo a signature where
    overloadedMethod _ = statusIconSetFromFile

-- method StatusIcon::set_from_gicon
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "status_icon", argType = TInterface (Name {namespace = "Gtk", name = "StatusIcon"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GtkStatusIcon", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "icon", argType = TInterface (Name {namespace = "Gio", name = "Icon"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a GIcon", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Nothing
-- throws : False
-- Skip return : False

foreign import ccall "gtk_status_icon_set_from_gicon" gtk_status_icon_set_from_gicon :: 
    Ptr StatusIcon ->                       -- status_icon : TInterface (Name {namespace = "Gtk", name = "StatusIcon"})
    Ptr Gio.Icon.Icon ->                    -- icon : TInterface (Name {namespace = "Gio", name = "Icon"})
    IO ()

{-# DEPRECATED statusIconSetFromGicon ["(Since version 3.14)","Use notifications"] #-}
{- |
Makes /@statusIcon@/ display the 'GI.Gio.Interfaces.Icon.Icon'.
See 'GI.Gtk.Objects.StatusIcon.statusIconNewFromGicon' for details.

@since 2.14
-}
statusIconSetFromGicon ::
    (B.CallStack.HasCallStack, MonadIO m, IsStatusIcon a, Gio.Icon.IsIcon b) =>
    a
    {- ^ /@statusIcon@/: a 'GI.Gtk.Objects.StatusIcon.StatusIcon' -}
    -> b
    {- ^ /@icon@/: a GIcon -}
    -> m ()
statusIconSetFromGicon statusIcon icon = liftIO $ do
    statusIcon' <- unsafeManagedPtrCastPtr statusIcon
    icon' <- unsafeManagedPtrCastPtr icon
    gtk_status_icon_set_from_gicon statusIcon' icon'
    touchManagedPtr statusIcon
    touchManagedPtr icon
    return ()

data StatusIconSetFromGiconMethodInfo
instance (signature ~ (b -> m ()), MonadIO m, IsStatusIcon a, Gio.Icon.IsIcon b) => O.MethodInfo StatusIconSetFromGiconMethodInfo a signature where
    overloadedMethod _ = statusIconSetFromGicon

-- method StatusIcon::set_from_icon_name
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "status_icon", argType = TInterface (Name {namespace = "Gtk", name = "StatusIcon"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GtkStatusIcon", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "icon_name", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "an icon name", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Nothing
-- throws : False
-- Skip return : False

foreign import ccall "gtk_status_icon_set_from_icon_name" gtk_status_icon_set_from_icon_name :: 
    Ptr StatusIcon ->                       -- status_icon : TInterface (Name {namespace = "Gtk", name = "StatusIcon"})
    CString ->                              -- icon_name : TBasicType TUTF8
    IO ()

{-# DEPRECATED statusIconSetFromIconName ["(Since version 3.14)","Use notifications"] #-}
{- |
Makes /@statusIcon@/ display the icon named /@iconName@/ from the
current icon theme.
See 'GI.Gtk.Objects.StatusIcon.statusIconNewFromIconName' for details.

@since 2.10
-}
statusIconSetFromIconName ::
    (B.CallStack.HasCallStack, MonadIO m, IsStatusIcon a) =>
    a
    {- ^ /@statusIcon@/: a 'GI.Gtk.Objects.StatusIcon.StatusIcon' -}
    -> T.Text
    {- ^ /@iconName@/: an icon name -}
    -> m ()
statusIconSetFromIconName statusIcon iconName = liftIO $ do
    statusIcon' <- unsafeManagedPtrCastPtr statusIcon
    iconName' <- textToCString iconName
    gtk_status_icon_set_from_icon_name statusIcon' iconName'
    touchManagedPtr statusIcon
    freeMem iconName'
    return ()

data StatusIconSetFromIconNameMethodInfo
instance (signature ~ (T.Text -> m ()), MonadIO m, IsStatusIcon a) => O.MethodInfo StatusIconSetFromIconNameMethodInfo a signature where
    overloadedMethod _ = statusIconSetFromIconName

-- method StatusIcon::set_from_pixbuf
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "status_icon", argType = TInterface (Name {namespace = "Gtk", name = "StatusIcon"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GtkStatusIcon", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "pixbuf", argType = TInterface (Name {namespace = "GdkPixbuf", name = "Pixbuf"}), direction = DirectionIn, mayBeNull = True, argDoc = Documentation {rawDocText = Just "a #GdkPixbuf or %NULL", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Nothing
-- throws : False
-- Skip return : False

foreign import ccall "gtk_status_icon_set_from_pixbuf" gtk_status_icon_set_from_pixbuf :: 
    Ptr StatusIcon ->                       -- status_icon : TInterface (Name {namespace = "Gtk", name = "StatusIcon"})
    Ptr GdkPixbuf.Pixbuf.Pixbuf ->          -- pixbuf : TInterface (Name {namespace = "GdkPixbuf", name = "Pixbuf"})
    IO ()

{-# DEPRECATED statusIconSetFromPixbuf ["(Since version 3.14)","Use notifications"] #-}
{- |
Makes /@statusIcon@/ display /@pixbuf@/.
See 'GI.Gtk.Objects.StatusIcon.statusIconNewFromPixbuf' for details.

@since 2.10
-}
statusIconSetFromPixbuf ::
    (B.CallStack.HasCallStack, MonadIO m, IsStatusIcon a, GdkPixbuf.Pixbuf.IsPixbuf b) =>
    a
    {- ^ /@statusIcon@/: a 'GI.Gtk.Objects.StatusIcon.StatusIcon' -}
    -> Maybe (b)
    {- ^ /@pixbuf@/: a 'GI.GdkPixbuf.Objects.Pixbuf.Pixbuf' or 'Nothing' -}
    -> m ()
statusIconSetFromPixbuf statusIcon pixbuf = liftIO $ do
    statusIcon' <- unsafeManagedPtrCastPtr statusIcon
    maybePixbuf <- case pixbuf of
        Nothing -> return nullPtr
        Just jPixbuf -> do
            jPixbuf' <- unsafeManagedPtrCastPtr jPixbuf
            return jPixbuf'
    gtk_status_icon_set_from_pixbuf statusIcon' maybePixbuf
    touchManagedPtr statusIcon
    whenJust pixbuf touchManagedPtr
    return ()

data StatusIconSetFromPixbufMethodInfo
instance (signature ~ (Maybe (b) -> m ()), MonadIO m, IsStatusIcon a, GdkPixbuf.Pixbuf.IsPixbuf b) => O.MethodInfo StatusIconSetFromPixbufMethodInfo a signature where
    overloadedMethod _ = statusIconSetFromPixbuf

-- method StatusIcon::set_from_stock
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "status_icon", argType = TInterface (Name {namespace = "Gtk", name = "StatusIcon"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GtkStatusIcon", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "stock_id", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a stock icon id", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Nothing
-- throws : False
-- Skip return : False

foreign import ccall "gtk_status_icon_set_from_stock" gtk_status_icon_set_from_stock :: 
    Ptr StatusIcon ->                       -- status_icon : TInterface (Name {namespace = "Gtk", name = "StatusIcon"})
    CString ->                              -- stock_id : TBasicType TUTF8
    IO ()

{-# DEPRECATED statusIconSetFromStock ["(Since version 3.10)","Use 'GI.Gtk.Objects.StatusIcon.statusIconSetFromIconName' instead."] #-}
{- |
Makes /@statusIcon@/ display the stock icon with the id /@stockId@/.
See 'GI.Gtk.Objects.StatusIcon.statusIconNewFromStock' for details.

@since 2.10
-}
statusIconSetFromStock ::
    (B.CallStack.HasCallStack, MonadIO m, IsStatusIcon a) =>
    a
    {- ^ /@statusIcon@/: a 'GI.Gtk.Objects.StatusIcon.StatusIcon' -}
    -> T.Text
    {- ^ /@stockId@/: a stock icon id -}
    -> m ()
statusIconSetFromStock statusIcon stockId = liftIO $ do
    statusIcon' <- unsafeManagedPtrCastPtr statusIcon
    stockId' <- textToCString stockId
    gtk_status_icon_set_from_stock statusIcon' stockId'
    touchManagedPtr statusIcon
    freeMem stockId'
    return ()

data StatusIconSetFromStockMethodInfo
instance (signature ~ (T.Text -> m ()), MonadIO m, IsStatusIcon a) => O.MethodInfo StatusIconSetFromStockMethodInfo a signature where
    overloadedMethod _ = statusIconSetFromStock

-- method StatusIcon::set_has_tooltip
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "status_icon", argType = TInterface (Name {namespace = "Gtk", name = "StatusIcon"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GtkStatusIcon", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "has_tooltip", argType = TBasicType TBoolean, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "whether or not @status_icon has a tooltip", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Nothing
-- throws : False
-- Skip return : False

foreign import ccall "gtk_status_icon_set_has_tooltip" gtk_status_icon_set_has_tooltip :: 
    Ptr StatusIcon ->                       -- status_icon : TInterface (Name {namespace = "Gtk", name = "StatusIcon"})
    CInt ->                                 -- has_tooltip : TBasicType TBoolean
    IO ()

{-# DEPRECATED statusIconSetHasTooltip ["(Since version 3.14)","Use notifications"] #-}
{- |
Sets the has-tooltip property on /@statusIcon@/ to /@hasTooltip@/.
See 'GI.Gtk.Objects.StatusIcon.StatusIcon':@/has-tooltip/@ for more information.

@since 2.16
-}
statusIconSetHasTooltip ::
    (B.CallStack.HasCallStack, MonadIO m, IsStatusIcon a) =>
    a
    {- ^ /@statusIcon@/: a 'GI.Gtk.Objects.StatusIcon.StatusIcon' -}
    -> Bool
    {- ^ /@hasTooltip@/: whether or not /@statusIcon@/ has a tooltip -}
    -> m ()
statusIconSetHasTooltip statusIcon hasTooltip = liftIO $ do
    statusIcon' <- unsafeManagedPtrCastPtr statusIcon
    let hasTooltip' = (fromIntegral . fromEnum) hasTooltip
    gtk_status_icon_set_has_tooltip statusIcon' hasTooltip'
    touchManagedPtr statusIcon
    return ()

data StatusIconSetHasTooltipMethodInfo
instance (signature ~ (Bool -> m ()), MonadIO m, IsStatusIcon a) => O.MethodInfo StatusIconSetHasTooltipMethodInfo a signature where
    overloadedMethod _ = statusIconSetHasTooltip

-- method StatusIcon::set_name
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "status_icon", argType = TInterface (Name {namespace = "Gtk", name = "StatusIcon"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GtkStatusIcon", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "name", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "the name", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Nothing
-- throws : False
-- Skip return : False

foreign import ccall "gtk_status_icon_set_name" gtk_status_icon_set_name :: 
    Ptr StatusIcon ->                       -- status_icon : TInterface (Name {namespace = "Gtk", name = "StatusIcon"})
    CString ->                              -- name : TBasicType TUTF8
    IO ()

{-# DEPRECATED statusIconSetName ["(Since version 3.14)","Use notifications"] #-}
{- |
Sets the name of this tray icon.
This should be a string identifying this icon. It is may be
used for sorting the icons in the tray and will not be shown to
the user.

@since 2.20
-}
statusIconSetName ::
    (B.CallStack.HasCallStack, MonadIO m, IsStatusIcon a) =>
    a
    {- ^ /@statusIcon@/: a 'GI.Gtk.Objects.StatusIcon.StatusIcon' -}
    -> T.Text
    {- ^ /@name@/: the name -}
    -> m ()
statusIconSetName statusIcon name = liftIO $ do
    statusIcon' <- unsafeManagedPtrCastPtr statusIcon
    name' <- textToCString name
    gtk_status_icon_set_name statusIcon' name'
    touchManagedPtr statusIcon
    freeMem name'
    return ()

data StatusIconSetNameMethodInfo
instance (signature ~ (T.Text -> m ()), MonadIO m, IsStatusIcon a) => O.MethodInfo StatusIconSetNameMethodInfo a signature where
    overloadedMethod _ = statusIconSetName

-- method StatusIcon::set_screen
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "status_icon", argType = TInterface (Name {namespace = "Gtk", name = "StatusIcon"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GtkStatusIcon", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "screen", argType = TInterface (Name {namespace = "Gdk", name = "Screen"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GdkScreen", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Nothing
-- throws : False
-- Skip return : False

foreign import ccall "gtk_status_icon_set_screen" gtk_status_icon_set_screen :: 
    Ptr StatusIcon ->                       -- status_icon : TInterface (Name {namespace = "Gtk", name = "StatusIcon"})
    Ptr Gdk.Screen.Screen ->                -- screen : TInterface (Name {namespace = "Gdk", name = "Screen"})
    IO ()

{-# DEPRECATED statusIconSetScreen ["(Since version 3.14)","Use notifications"] #-}
{- |
Sets the 'GI.Gdk.Objects.Screen.Screen' where /@statusIcon@/ is displayed; if
the icon is already mapped, it will be unmapped, and
then remapped on the new screen.

@since 2.12
-}
statusIconSetScreen ::
    (B.CallStack.HasCallStack, MonadIO m, IsStatusIcon a, Gdk.Screen.IsScreen b) =>
    a
    {- ^ /@statusIcon@/: a 'GI.Gtk.Objects.StatusIcon.StatusIcon' -}
    -> b
    {- ^ /@screen@/: a 'GI.Gdk.Objects.Screen.Screen' -}
    -> m ()
statusIconSetScreen statusIcon screen = liftIO $ do
    statusIcon' <- unsafeManagedPtrCastPtr statusIcon
    screen' <- unsafeManagedPtrCastPtr screen
    gtk_status_icon_set_screen statusIcon' screen'
    touchManagedPtr statusIcon
    touchManagedPtr screen
    return ()

data StatusIconSetScreenMethodInfo
instance (signature ~ (b -> m ()), MonadIO m, IsStatusIcon a, Gdk.Screen.IsScreen b) => O.MethodInfo StatusIconSetScreenMethodInfo a signature where
    overloadedMethod _ = statusIconSetScreen

-- method StatusIcon::set_title
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "status_icon", argType = TInterface (Name {namespace = "Gtk", name = "StatusIcon"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GtkStatusIcon", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "title", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "the title", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Nothing
-- throws : False
-- Skip return : False

foreign import ccall "gtk_status_icon_set_title" gtk_status_icon_set_title :: 
    Ptr StatusIcon ->                       -- status_icon : TInterface (Name {namespace = "Gtk", name = "StatusIcon"})
    CString ->                              -- title : TBasicType TUTF8
    IO ()

{-# DEPRECATED statusIconSetTitle ["(Since version 3.14)","Use notifications"] #-}
{- |
Sets the title of this tray icon.
This should be a short, human-readable, localized string
describing the tray icon. It may be used by tools like screen
readers to render the tray icon.

@since 2.18
-}
statusIconSetTitle ::
    (B.CallStack.HasCallStack, MonadIO m, IsStatusIcon a) =>
    a
    {- ^ /@statusIcon@/: a 'GI.Gtk.Objects.StatusIcon.StatusIcon' -}
    -> T.Text
    {- ^ /@title@/: the title -}
    -> m ()
statusIconSetTitle statusIcon title = liftIO $ do
    statusIcon' <- unsafeManagedPtrCastPtr statusIcon
    title' <- textToCString title
    gtk_status_icon_set_title statusIcon' title'
    touchManagedPtr statusIcon
    freeMem title'
    return ()

data StatusIconSetTitleMethodInfo
instance (signature ~ (T.Text -> m ()), MonadIO m, IsStatusIcon a) => O.MethodInfo StatusIconSetTitleMethodInfo a signature where
    overloadedMethod _ = statusIconSetTitle

-- method StatusIcon::set_tooltip_markup
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "status_icon", argType = TInterface (Name {namespace = "Gtk", name = "StatusIcon"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GtkStatusIcon", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "markup", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = True, argDoc = Documentation {rawDocText = Just "the contents of the tooltip for @status_icon, or %NULL", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Nothing
-- throws : False
-- Skip return : False

foreign import ccall "gtk_status_icon_set_tooltip_markup" gtk_status_icon_set_tooltip_markup :: 
    Ptr StatusIcon ->                       -- status_icon : TInterface (Name {namespace = "Gtk", name = "StatusIcon"})
    CString ->                              -- markup : TBasicType TUTF8
    IO ()

{-# DEPRECATED statusIconSetTooltipMarkup ["(Since version 3.14)","Use notifications"] #-}
{- |
Sets /@markup@/ as the contents of the tooltip, which is marked up with
 the [Pango text markup language][PangoMarkupFormat].

This function will take care of setting 'GI.Gtk.Objects.StatusIcon.StatusIcon':@/has-tooltip/@ to 'True'
and of the default handler for the 'GI.Gtk.Objects.StatusIcon.StatusIcon'::@/query-tooltip/@ signal.

See also the 'GI.Gtk.Objects.StatusIcon.StatusIcon':@/tooltip-markup/@ property and
'GI.Gtk.Objects.Tooltip.tooltipSetMarkup'.

@since 2.16
-}
statusIconSetTooltipMarkup ::
    (B.CallStack.HasCallStack, MonadIO m, IsStatusIcon a) =>
    a
    {- ^ /@statusIcon@/: a 'GI.Gtk.Objects.StatusIcon.StatusIcon' -}
    -> Maybe (T.Text)
    {- ^ /@markup@/: the contents of the tooltip for /@statusIcon@/, or 'Nothing' -}
    -> m ()
statusIconSetTooltipMarkup statusIcon markup = liftIO $ do
    statusIcon' <- unsafeManagedPtrCastPtr statusIcon
    maybeMarkup <- case markup of
        Nothing -> return nullPtr
        Just jMarkup -> do
            jMarkup' <- textToCString jMarkup
            return jMarkup'
    gtk_status_icon_set_tooltip_markup statusIcon' maybeMarkup
    touchManagedPtr statusIcon
    freeMem maybeMarkup
    return ()

data StatusIconSetTooltipMarkupMethodInfo
instance (signature ~ (Maybe (T.Text) -> m ()), MonadIO m, IsStatusIcon a) => O.MethodInfo StatusIconSetTooltipMarkupMethodInfo a signature where
    overloadedMethod _ = statusIconSetTooltipMarkup

-- method StatusIcon::set_tooltip_text
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "status_icon", argType = TInterface (Name {namespace = "Gtk", name = "StatusIcon"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GtkStatusIcon", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "text", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "the contents of the tooltip for @status_icon", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Nothing
-- throws : False
-- Skip return : False

foreign import ccall "gtk_status_icon_set_tooltip_text" gtk_status_icon_set_tooltip_text :: 
    Ptr StatusIcon ->                       -- status_icon : TInterface (Name {namespace = "Gtk", name = "StatusIcon"})
    CString ->                              -- text : TBasicType TUTF8
    IO ()

{-# DEPRECATED statusIconSetTooltipText ["(Since version 3.14)","Use notifications"] #-}
{- |
Sets /@text@/ as the contents of the tooltip.

This function will take care of setting 'GI.Gtk.Objects.StatusIcon.StatusIcon':@/has-tooltip/@ to
'True' and of the default handler for the 'GI.Gtk.Objects.StatusIcon.StatusIcon'::@/query-tooltip/@
signal.

See also the 'GI.Gtk.Objects.StatusIcon.StatusIcon':@/tooltip-text/@ property and
'GI.Gtk.Objects.Tooltip.tooltipSetText'.

@since 2.16
-}
statusIconSetTooltipText ::
    (B.CallStack.HasCallStack, MonadIO m, IsStatusIcon a) =>
    a
    {- ^ /@statusIcon@/: a 'GI.Gtk.Objects.StatusIcon.StatusIcon' -}
    -> T.Text
    {- ^ /@text@/: the contents of the tooltip for /@statusIcon@/ -}
    -> m ()
statusIconSetTooltipText statusIcon text = liftIO $ do
    statusIcon' <- unsafeManagedPtrCastPtr statusIcon
    text' <- textToCString text
    gtk_status_icon_set_tooltip_text statusIcon' text'
    touchManagedPtr statusIcon
    freeMem text'
    return ()

data StatusIconSetTooltipTextMethodInfo
instance (signature ~ (T.Text -> m ()), MonadIO m, IsStatusIcon a) => O.MethodInfo StatusIconSetTooltipTextMethodInfo a signature where
    overloadedMethod _ = statusIconSetTooltipText

-- method StatusIcon::set_visible
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "status_icon", argType = TInterface (Name {namespace = "Gtk", name = "StatusIcon"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GtkStatusIcon", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "visible", argType = TBasicType TBoolean, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "%TRUE to show the status icon, %FALSE to hide it", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Nothing
-- throws : False
-- Skip return : False

foreign import ccall "gtk_status_icon_set_visible" gtk_status_icon_set_visible :: 
    Ptr StatusIcon ->                       -- status_icon : TInterface (Name {namespace = "Gtk", name = "StatusIcon"})
    CInt ->                                 -- visible : TBasicType TBoolean
    IO ()

{-# DEPRECATED statusIconSetVisible ["(Since version 3.14)","Use notifications"] #-}
{- |
Shows or hides a status icon.

@since 2.10
-}
statusIconSetVisible ::
    (B.CallStack.HasCallStack, MonadIO m, IsStatusIcon a) =>
    a
    {- ^ /@statusIcon@/: a 'GI.Gtk.Objects.StatusIcon.StatusIcon' -}
    -> Bool
    {- ^ /@visible@/: 'True' to show the status icon, 'False' to hide it -}
    -> m ()
statusIconSetVisible statusIcon visible = liftIO $ do
    statusIcon' <- unsafeManagedPtrCastPtr statusIcon
    let visible' = (fromIntegral . fromEnum) visible
    gtk_status_icon_set_visible statusIcon' visible'
    touchManagedPtr statusIcon
    return ()

data StatusIconSetVisibleMethodInfo
instance (signature ~ (Bool -> m ()), MonadIO m, IsStatusIcon a) => O.MethodInfo StatusIconSetVisibleMethodInfo a signature where
    overloadedMethod _ = statusIconSetVisible

-- method StatusIcon::position_menu
-- method type : MemberFunction
-- Args : [Arg {argCName = "menu", argType = TInterface (Name {namespace = "Gtk", name = "Menu"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "the #GtkMenu", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "x", argType = TBasicType TInt, direction = DirectionInout, mayBeNull = False, argDoc = Documentation {rawDocText = Just "return location for the x position", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything},Arg {argCName = "y", argType = TBasicType TInt, direction = DirectionInout, mayBeNull = False, argDoc = Documentation {rawDocText = Just "return location for the y position", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything},Arg {argCName = "push_in", argType = TBasicType TBoolean, direction = DirectionOut, mayBeNull = False, argDoc = Documentation {rawDocText = Just "whether the first menu item should be offset\n          (pushed in) to be aligned with the menu popup position\n          (only useful for GtkOptionMenu).", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything},Arg {argCName = "user_data", argType = TInterface (Name {namespace = "Gtk", name = "StatusIcon"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "the status icon to position the menu on", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Nothing
-- throws : False
-- Skip return : False

foreign import ccall "gtk_status_icon_position_menu" gtk_status_icon_position_menu :: 
    Ptr Gtk.Menu.Menu ->                    -- menu : TInterface (Name {namespace = "Gtk", name = "Menu"})
    Ptr Int32 ->                            -- x : TBasicType TInt
    Ptr Int32 ->                            -- y : TBasicType TInt
    Ptr CInt ->                             -- push_in : TBasicType TBoolean
    Ptr StatusIcon ->                       -- user_data : TInterface (Name {namespace = "Gtk", name = "StatusIcon"})
    IO ()

{-# DEPRECATED statusIconPositionMenu ["(Since version 3.14)","Use notifications"] #-}
{- |
Menu positioning function to use with 'GI.Gtk.Objects.Menu.menuPopup'
to position /@menu@/ aligned to the status icon /@userData@/.

@since 2.10
-}
statusIconPositionMenu ::
    (B.CallStack.HasCallStack, MonadIO m, Gtk.Menu.IsMenu a, IsStatusIcon b) =>
    a
    {- ^ /@menu@/: the 'GI.Gtk.Objects.Menu.Menu' -}
    -> Int32
    {- ^ /@x@/: return location for the x position -}
    -> Int32
    {- ^ /@y@/: return location for the y position -}
    -> b
    {- ^ /@userData@/: the status icon to position the menu on -}
    -> m (Int32,Int32,Bool)
statusIconPositionMenu menu x y userData = liftIO $ do
    menu' <- unsafeManagedPtrCastPtr menu
    x' <- allocMem :: IO (Ptr Int32)
    poke x' x
    y' <- allocMem :: IO (Ptr Int32)
    poke y' y
    pushIn <- allocMem :: IO (Ptr CInt)
    userData' <- unsafeManagedPtrCastPtr userData
    gtk_status_icon_position_menu menu' x' y' pushIn userData'
    x'' <- peek x'
    y'' <- peek y'
    pushIn' <- peek pushIn
    let pushIn'' = (/= 0) pushIn'
    touchManagedPtr menu
    touchManagedPtr userData
    freeMem x'
    freeMem y'
    freeMem pushIn
    return (x'', y'', pushIn'')