    {-# LINE 2 "./Graphics/UI/Gtk/Display/StatusIcon.chs" #-}
    -- -*-haskell-*-
    -- GIMP Toolkit (GTK) Widget StatusIcon
    --
    -- Author : Andrea Vezzosi, Andy Stewart
    --
    -- Created: 19 July 2007
    --
    -- Copyright (C) 2007 Axel Simon
    -- Copyright (C) 2010 Andy Stewart
    --
    -- This library is free software; you can redistribute it and/or
    -- modify it under the terms of the GNU Lesser General Public
    -- License as published by the Free Software Foundation; either
    -- version 2.1 of the License, or (at your option) any later version.
    --
    -- This library is distributed in the hope that it will be useful,
    -- but WITHOUT ANY WARRANTY; without even the implied warranty of
    -- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
    -- Lesser General Public License for more details.
    --
    -- |
    -- Maintainer : gtk2hs-users@lists.sourceforge.net
    -- Stability : provisional
    -- Portability : portable (depends on GHC)
    --
    -- Display an icon in the system tray
    --
    -- * Module available since Gtk+ version 2.10
    --
    module Graphics.UI.Gtk.Display.StatusIcon (

    -- * Detail
    --
    -- | 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 '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 '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 'statusIconIsEmbedded'.
    --
    -- On X11, the implementation follows the freedesktop.org \"System Tray\"
    -- specification. Implementations of the \"tray\" side of this specification
    -- can be found e.g. in the GNOME and KDE panel applications.
    --
    -- Note that a 'StatusIcon' is /not/ a widget, but just a 'GObject'. Making
    -- it a widget would be impractical, since the system tray on Win32 doesn't
    -- allow to embed arbitrary widgets.

    -- * Class Hierarchy
    --
    -- |
    -- @
    -- | 'GObject'
    -- | +----StatusIcon
    -- @

    -- * Types
      StatusIcon,
      StatusIconClass,
      castToStatusIcon, gTypeStatusIcon,
      toStatusIcon,

    -- * Constructors
      statusIconNew,
      statusIconNewFromPixbuf,
      statusIconNewFromFile,
      statusIconNewFromStock,
      statusIconNewFromIconName,

    -- * Methods
      statusIconSetFromPixbuf,
      statusIconSetFromFile,
      statusIconSetFromStock,
      statusIconSetFromIconName,
      statusIconGetStorageType,
      statusIconGetPixbuf,
      statusIconGetStock,
      statusIconGetIconName,
      statusIconGetSize,

      statusIconSetVisible,
      statusIconGetVisible,

      statusIconIsEmbedded,
      statusIconPositionMenu,
      statusIconGetGeometry,

      statusIconSetScreen,
      statusIconGetScreen,

      statusIconSetTooltipText,
      statusIconGetTooltipText,
      statusIconSetTooltipMarkup,
      statusIconGetTooltipMarkup,
      statusIconSetHasTooltip,
      statusIconGetHasTooltip,

      statusIconSetTitle,
      statusIconGetTitle,

      statusIconSetName,

    -- * Attributes
      statusIconPixbuf,
      statusIconFile,
      statusIconStock,
      statusIconIconName,
      statusIconStorageType,
      statusIconSize,

      statusIconVisible,

      statusIconScreen,

      statusIconTooltipText,
      statusIconTooltipMarkup,
      statusIconHasTooltip,

      statusIconTitle,

    -- * Signals
      statusIconSizeChanged,
      statusIconActivated,
      statusIconActivate,
      statusIconPopupMenu,

    -- * Deprecated
    {-# LINE 160 "./Graphics/UI/Gtk/Display/StatusIcon.chs" #-}
      ) where

    import Control.Monad (liftM)

    import System.Glib.FFI
    import System.Glib.UTFString
    import System.Glib.Attributes
    import System.Glib.Properties
    import Graphics.UI.Gtk.Types
    {-# LINE 169 "./Graphics/UI/Gtk/Display/StatusIcon.chs" #-}
    import Graphics.UI.Gtk.General.Enums
    {-# LINE 170 "./Graphics/UI/Gtk/Display/StatusIcon.chs" #-}
    import Graphics.UI.Gtk.General.Structs
    import Graphics.UI.Gtk.Display.Image (ImageType)
    import Graphics.UI.Gtk.Signals
    {-# LINE 173 "./Graphics/UI/Gtk/Display/StatusIcon.chs" #-}
    import Graphics.UI.Gtk.General.StockItems
    import Graphics.UI.Gtk.Gdk.Events

    {-# LINE 178 "./Graphics/UI/Gtk/Display/StatusIcon.chs" #-}

    --------------------
    -- Constructors

    -- %hash c:2fb1 d:9bd6
    -- | Creates an empty status icon object.
    --
    statusIconNew :: IO StatusIcon
    statusIconNew :: IO StatusIcon
    statusIconNew =
      (ForeignPtr StatusIcon -> StatusIcon, FinalizerPtr StatusIcon)
    -> IO (Ptr StatusIcon) -> IO StatusIcon
    forall obj.
    GObjectClass obj =>
    (ForeignPtr obj -> obj, FinalizerPtr obj) -> IO (Ptr obj) -> IO obj
    wrapNewGObject (ForeignPtr StatusIcon -> StatusIcon, FinalizerPtr StatusIcon)
    forall {a}. (ForeignPtr StatusIcon -> StatusIcon, FinalizerPtr a)
    mkStatusIcon (IO (Ptr StatusIcon) -> IO StatusIcon)
    -> IO (Ptr StatusIcon) -> IO StatusIcon
    forall a b. (a -> b) -> a -> b
    $
      IO (Ptr StatusIcon)
    gtk_status_icon_new
    {-# LINE 190 "./Graphics/UI/Gtk/Display/StatusIcon.chs" #-}

    -- %hash c:3318 d:cd70
    -- | Creates a status icon displaying @pixbuf@.
    --
    -- The image will be scaled down to fit in the available space in the
    -- notification area, if necessary.
    --
    statusIconNewFromPixbuf ::
        Pixbuf -- ^ @pixbuf@ - a 'Pixbuf'
     -> IO StatusIcon
    statusIconNewFromPixbuf :: Pixbuf -> IO StatusIcon
    statusIconNewFromPixbuf Pixbuf
    pixbuf =
      (ForeignPtr StatusIcon -> StatusIcon, FinalizerPtr StatusIcon)
    -> IO (Ptr StatusIcon) -> IO StatusIcon
    forall obj.
    GObjectClass obj =>
    (ForeignPtr obj -> obj, FinalizerPtr obj) -> IO (Ptr obj) -> IO obj
    wrapNewGObject (ForeignPtr StatusIcon -> StatusIcon, FinalizerPtr StatusIcon)
    forall {a}. (ForeignPtr StatusIcon -> StatusIcon, FinalizerPtr a)
    mkStatusIcon (IO (Ptr StatusIcon) -> IO StatusIcon)
    -> IO (Ptr StatusIcon) -> IO StatusIcon
    forall a b. (a -> b) -> a -> b
    $
      (\(Pixbuf ForeignPtr Pixbuf
    arg1) -> ForeignPtr Pixbuf
    -> (Ptr Pixbuf -> IO (Ptr StatusIcon)) -> IO (Ptr StatusIcon)
    forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
    withForeignPtr ForeignPtr Pixbuf
    arg1 ((Ptr Pixbuf -> IO (Ptr StatusIcon)) -> IO (Ptr StatusIcon))
    -> (Ptr Pixbuf -> IO (Ptr StatusIcon)) -> IO (Ptr StatusIcon)
    forall a b. (a -> b) -> a -> b
    $ \Ptr Pixbuf
    argPtr1 ->Ptr Pixbuf -> IO (Ptr StatusIcon)
    gtk_status_icon_new_from_pixbuf Ptr Pixbuf
    argPtr1)
    {-# LINE 203 "./Graphics/UI/Gtk/Display/StatusIcon.chs" #-}
        pixbuf

    -- %hash c:325a d:6c24
    -- | 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.
    --
    statusIconNewFromFile :: GlibString string
     => string -- ^ @filename@ - a filename
     -> IO StatusIcon
    statusIconNewFromFile :: forall string. GlibString string => string -> IO StatusIcon
    statusIconNewFromFile string
    filename =
      (ForeignPtr StatusIcon -> StatusIcon, FinalizerPtr StatusIcon)
    -> IO (Ptr StatusIcon) -> IO StatusIcon
    forall obj.
    GObjectClass obj =>
    (ForeignPtr obj -> obj, FinalizerPtr obj) -> IO (Ptr obj) -> IO obj
    wrapNewGObject (ForeignPtr StatusIcon -> StatusIcon, FinalizerPtr StatusIcon)
    forall {a}. (ForeignPtr StatusIcon -> StatusIcon, FinalizerPtr a)
    mkStatusIcon (IO (Ptr StatusIcon) -> IO StatusIcon)
    -> IO (Ptr StatusIcon) -> IO StatusIcon
    forall a b. (a -> b) -> a -> b
    $
      string -> (CString -> IO (Ptr StatusIcon)) -> IO (Ptr StatusIcon)
    forall a. string -> (CString -> IO a) -> IO a
    forall s a. GlibString s => s -> (CString -> IO a) -> IO a
    withUTFString string
    filename ((CString -> IO (Ptr StatusIcon)) -> IO (Ptr StatusIcon))
    -> (CString -> IO (Ptr StatusIcon)) -> IO (Ptr StatusIcon)
    forall a b. (a -> b) -> a -> b
    $ \CString
    filenamePtr ->
      CString -> IO (Ptr StatusIcon)
    gtk_status_icon_new_from_file
    {-# LINE 218 "./Graphics/UI/Gtk/Display/StatusIcon.chs" #-}
        filenamePtr

    -- %hash c:784f d:88a3 | Creates a status icon displaying a stock
    -- icon. Sample stock icon names are 'stockOpen', 'stockQuit'. You can
    -- register your own stock icon names, see
    -- 'Graphics.UI.Gtk.General.IconFactory.iconFactoryAddDefault' and
    -- 'Graphics.UI.Gtk.General.IconFactory.iconFactoryAdd'.
    --
    statusIconNewFromStock ::
        StockId -- ^ @stockId@ - a stock icon id
     -> IO StatusIcon
    statusIconNewFromStock :: StockId -> IO StatusIcon
    statusIconNewFromStock StockId
    stockId =
      (ForeignPtr StatusIcon -> StatusIcon, FinalizerPtr StatusIcon)
    -> IO (Ptr StatusIcon) -> IO StatusIcon
    forall obj.
    GObjectClass obj =>
    (ForeignPtr obj -> obj, FinalizerPtr obj) -> IO (Ptr obj) -> IO obj
    wrapNewGObject (ForeignPtr StatusIcon -> StatusIcon, FinalizerPtr StatusIcon)
    forall {a}. (ForeignPtr StatusIcon -> StatusIcon, FinalizerPtr a)
    mkStatusIcon (IO (Ptr StatusIcon) -> IO StatusIcon)
    -> IO (Ptr StatusIcon) -> IO StatusIcon
    forall a b. (a -> b) -> a -> b
    $
      StockId -> (CString -> IO (Ptr StatusIcon)) -> IO (Ptr StatusIcon)
    forall s a. GlibString s => s -> (CString -> IO a) -> IO a
    forall a. StockId -> (CString -> IO a) -> IO a
    withUTFString StockId
    stockId ((CString -> IO (Ptr StatusIcon)) -> IO (Ptr StatusIcon))
    -> (CString -> IO (Ptr StatusIcon)) -> IO (Ptr StatusIcon)
    forall a b. (a -> b) -> a -> b
    $ \CString
    stockIdPtr ->
      CString -> IO (Ptr StatusIcon)
    gtk_status_icon_new_from_stock
    {-# LINE 233 "./Graphics/UI/Gtk/Display/StatusIcon.chs" #-}
        stockIdPtr

    -- %hash c:6e1b d:8731
    -- | 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.
    --
    statusIconNewFromIconName :: GlibString string
     => string -- ^ @iconName@ - an icon name
     -> IO StatusIcon
    statusIconNewFromIconName :: forall string. GlibString string => string -> IO StatusIcon
    statusIconNewFromIconName string
    iconName =
      (ForeignPtr StatusIcon -> StatusIcon, FinalizerPtr StatusIcon)
    -> IO (Ptr StatusIcon) -> IO StatusIcon
    forall obj.
    GObjectClass obj =>
    (ForeignPtr obj -> obj, FinalizerPtr obj) -> IO (Ptr obj) -> IO obj
    wrapNewGObject (ForeignPtr StatusIcon -> StatusIcon, FinalizerPtr StatusIcon)
    forall {a}. (ForeignPtr StatusIcon -> StatusIcon, FinalizerPtr a)
    mkStatusIcon (IO (Ptr StatusIcon) -> IO StatusIcon)
    -> IO (Ptr StatusIcon) -> IO StatusIcon
    forall a b. (a -> b) -> a -> b
    $
      string -> (CString -> IO (Ptr StatusIcon)) -> IO (Ptr StatusIcon)
    forall a. string -> (CString -> IO a) -> IO a
    forall s a. GlibString s => s -> (CString -> IO a) -> IO a
    withUTFString string
    iconName ((CString -> IO (Ptr StatusIcon)) -> IO (Ptr StatusIcon))
    -> (CString -> IO (Ptr StatusIcon)) -> IO (Ptr StatusIcon)
    forall a b. (a -> b) -> a -> b
    $ \CString
    iconNamePtr ->
      CString -> IO (Ptr StatusIcon)
    gtk_status_icon_new_from_icon_name
    {-# LINE 246 "./Graphics/UI/Gtk/Display/StatusIcon.chs" #-}
        iconNamePtr

    --------------------
    -- Methods

    -- %hash c:2256 d:12b2
    -- | Makes @statusIcon@ display @pixbuf@. See 'statusIconNewFromPixbuf' for
    -- details.
    --
    statusIconSetFromPixbuf :: StatusIconClass self => self
     -> Pixbuf -- ^ @pixbuf@ - a 'Pixbuf'
     -> IO ()
    statusIconSetFromPixbuf :: forall self. StatusIconClass self => self -> Pixbuf -> IO ()
    statusIconSetFromPixbuf self
    self Pixbuf
    pixbuf =
      (\(StatusIcon ForeignPtr StatusIcon
    arg1) (Pixbuf ForeignPtr Pixbuf
    arg2) -> ForeignPtr StatusIcon -> (Ptr StatusIcon -> IO ()) -> IO ()
    forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
    withForeignPtr ForeignPtr StatusIcon
    arg1 ((Ptr StatusIcon -> IO ()) -> IO ())
    -> (Ptr StatusIcon -> IO ()) -> IO ()
    forall a b. (a -> b) -> a -> b
    $ \Ptr StatusIcon
    argPtr1 ->ForeignPtr Pixbuf -> (Ptr Pixbuf -> IO ()) -> IO ()
    forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
    withForeignPtr ForeignPtr Pixbuf
    arg2 ((Ptr Pixbuf -> IO ()) -> IO ()) -> (Ptr Pixbuf -> IO ()) -> IO ()
    forall a b. (a -> b) -> a -> b
    $ \Ptr Pixbuf
    argPtr2 ->Ptr StatusIcon -> Ptr Pixbuf -> IO ()
    gtk_status_icon_set_from_pixbuf Ptr StatusIcon
    argPtr1 Ptr Pixbuf
    argPtr2)
    {-# LINE 260 "./Graphics/UI/Gtk/Display/StatusIcon.chs" #-}
        (toStatusIcon self)
        Pixbuf
    pixbuf

    -- %hash c:c2c0 d:c0f8
    -- | Makes @statusIcon@ display the file @filename@. See
    -- 'statusIconNewFromFile' for details.
    --
    statusIconSetFromFile :: (StatusIconClass self, GlibString string) => self
     -> string -- ^ @filename@ - a filename
     -> IO ()
    statusIconSetFromFile :: forall self string.
    (StatusIconClass self, GlibString string) =>
    self -> string -> IO ()
    statusIconSetFromFile self
    self string
    filename =
      string -> (CString -> IO ()) -> IO ()
    forall a. string -> (CString -> IO a) -> IO a
    forall s a. GlibString s => s -> (CString -> IO a) -> IO a
    withUTFString string
    filename ((CString -> IO ()) -> IO ()) -> (CString -> IO ()) -> IO ()
    forall a b. (a -> b) -> a -> b
    $ \CString
    filenamePtr ->
      (\(StatusIcon ForeignPtr StatusIcon
    arg1) CString
    arg2 -> ForeignPtr StatusIcon -> (Ptr StatusIcon -> IO ()) -> IO ()
    forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
    withForeignPtr ForeignPtr StatusIcon
    arg1 ((Ptr StatusIcon -> IO ()) -> IO ())
    -> (Ptr StatusIcon -> IO ()) -> IO ()
    forall a b. (a -> b) -> a -> b
    $ \Ptr StatusIcon
    argPtr1 ->Ptr StatusIcon -> CString -> IO ()
    gtk_status_icon_set_from_file Ptr StatusIcon
    argPtr1 CString
    arg2)
    {-# LINE 273 "./Graphics/UI/Gtk/Display/StatusIcon.chs" #-}
        (toStatusIcon self)
        CString
    filenamePtr

    -- %hash c:d755 d:8fa3
    -- | Makes @statusIcon@ display the stock icon with the id @stockId@. See
    -- 'statusIconNewFromStock' for details.
    --
    statusIconSetFromStock :: StatusIconClass self => self
     -> StockId -- ^ @stockId@ - a stock icon id
     -> IO ()
    statusIconSetFromStock :: forall self. StatusIconClass self => self -> StockId -> IO ()
    statusIconSetFromStock self
    self StockId
    stockId =
      StockId -> (CString -> IO ()) -> IO ()
    forall s a. GlibString s => s -> (CString -> IO a) -> IO a
    forall a. StockId -> (CString -> IO a) -> IO a
    withUTFString StockId
    stockId ((CString -> IO ()) -> IO ()) -> (CString -> IO ()) -> IO ()
    forall a b. (a -> b) -> a -> b
    $ \CString
    stockIdPtr ->
      (\(StatusIcon ForeignPtr StatusIcon
    arg1) CString
    arg2 -> ForeignPtr StatusIcon -> (Ptr StatusIcon -> IO ()) -> IO ()
    forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
    withForeignPtr ForeignPtr StatusIcon
    arg1 ((Ptr StatusIcon -> IO ()) -> IO ())
    -> (Ptr StatusIcon -> IO ()) -> IO ()
    forall a b. (a -> b) -> a -> b
    $ \Ptr StatusIcon
    argPtr1 ->Ptr StatusIcon -> CString -> IO ()
    gtk_status_icon_set_from_stock Ptr StatusIcon
    argPtr1 CString
    arg2)
    {-# LINE 286 "./Graphics/UI/Gtk/Display/StatusIcon.chs" #-}
        (toStatusIcon self)
        CString
    stockIdPtr

    -- %hash c:b501 d:3ded
    -- | Makes @statusIcon@ display the icon named @iconName@ from the current
    -- icon theme. See 'statusIconNewFromIconName' for details.
    --
    statusIconSetFromIconName :: (StatusIconClass self, GlibString string) => self
     -> string -- ^ @iconName@ - an icon name
     -> IO ()
    statusIconSetFromIconName :: forall self string.
    (StatusIconClass self, GlibString string) =>
    self -> string -> IO ()
    statusIconSetFromIconName self
    self string
    iconName =
      string -> (CString -> IO ()) -> IO ()
    forall a. string -> (CString -> IO a) -> IO a
    forall s a. GlibString s => s -> (CString -> IO a) -> IO a
    withUTFString string
    iconName ((CString -> IO ()) -> IO ()) -> (CString -> IO ()) -> IO ()
    forall a b. (a -> b) -> a -> b
    $ \CString
    iconNamePtr ->
      (\(StatusIcon ForeignPtr StatusIcon
    arg1) CString
    arg2 -> ForeignPtr StatusIcon -> (Ptr StatusIcon -> IO ()) -> IO ()
    forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
    withForeignPtr ForeignPtr StatusIcon
    arg1 ((Ptr StatusIcon -> IO ()) -> IO ())
    -> (Ptr StatusIcon -> IO ()) -> IO ()
    forall a b. (a -> b) -> a -> b
    $ \Ptr StatusIcon
    argPtr1 ->Ptr StatusIcon -> CString -> IO ()
    gtk_status_icon_set_from_icon_name Ptr StatusIcon
    argPtr1 CString
    arg2)
    {-# LINE 299 "./Graphics/UI/Gtk/Display/StatusIcon.chs" #-}
        (toStatusIcon self)
        CString
    iconNamePtr

    -- %hash c:6317 d:d3c5
    -- | Gets the type of representation being used by the 'StatusIcon' to store
    -- image data. If the 'StatusIcon' has no image data, the return value will be
    -- 'Graphics.UI.Gtk.Display.Image.ImageEmpty'.
    --
    statusIconGetStorageType :: StatusIconClass self => self
     -> IO ImageType -- ^ returns the image representation being used
    statusIconGetStorageType :: forall self. StatusIconClass self => self -> IO ImageType
    statusIconGetStorageType self
    self =
      (CInt -> ImageType) -> IO CInt -> IO ImageType
    forall (m :: * -> *) a1 r. Monad m => (a1 -> r) -> m a1 -> m r
    liftM (Int -> ImageType
    forall a. Enum a => Int -> a
    toEnum (Int -> ImageType) -> (CInt -> Int) -> CInt -> ImageType
    forall b c a. (b -> c) -> (a -> b) -> a -> c
    . CInt -> Int
    forall a b. (Integral a, Num b) => a -> b
    fromIntegral) (IO CInt -> IO ImageType) -> IO CInt -> IO ImageType
    forall a b. (a -> b) -> a -> b
    $
      (\(StatusIcon ForeignPtr StatusIcon
    arg1) -> ForeignPtr StatusIcon -> (Ptr StatusIcon -> IO CInt) -> IO CInt
    forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
    withForeignPtr ForeignPtr StatusIcon
    arg1 ((Ptr StatusIcon -> IO CInt) -> IO CInt)
    -> (Ptr StatusIcon -> IO CInt) -> IO CInt
    forall a b. (a -> b) -> a -> b
    $ \Ptr StatusIcon
    argPtr1 ->Ptr StatusIcon -> IO CInt
    gtk_status_icon_get_storage_type Ptr StatusIcon
    argPtr1)
    {-# LINE 312 "./Graphics/UI/Gtk/Display/StatusIcon.chs" #-}
        (toStatusIcon self)

    -- %hash c:cd8a d:9fed | Gets the 'Pixbuf' being displayed by the
    -- 'StatusIcon'. The storage type of the status icon must be
    -- 'Graphics.UI.Gtk.Display.Image.ImageEmpty' or
    -- 'Graphics.UI.Gtk.Display.Image.ImagePixbuf' (see
    -- 'statusIconGetStorageType'). The caller of this function does not
    -- own a reference to the returned pixbuf.
    --
    statusIconGetPixbuf :: StatusIconClass self => self
     -> IO (Maybe Pixbuf) -- ^ returns the displayed pixbuf, or @Nothing@ if the
                          -- image is empty.
    statusIconGetPixbuf :: forall self. StatusIconClass self => self -> IO (Maybe Pixbuf)
    statusIconGetPixbuf self
    self = do
      ptr <- (\(StatusIcon ForeignPtr StatusIcon
    arg1) -> ForeignPtr StatusIcon
    -> (Ptr StatusIcon -> IO (Ptr Pixbuf)) -> IO (Ptr Pixbuf)
    forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
    withForeignPtr ForeignPtr StatusIcon
    arg1 ((Ptr StatusIcon -> IO (Ptr Pixbuf)) -> IO (Ptr Pixbuf))
    -> (Ptr StatusIcon -> IO (Ptr Pixbuf)) -> IO (Ptr Pixbuf)
    forall a b. (a -> b) -> a -> b
    $ \Ptr StatusIcon
    argPtr1 ->Ptr StatusIcon -> IO (Ptr Pixbuf)
    gtk_status_icon_get_pixbuf Ptr StatusIcon
    argPtr1)
    {-# LINE 326 "./Graphics/UI/Gtk/Display/StatusIcon.chs" #-}
           (toStatusIcon self)
      maybePeek (makeNewGObject mkPixbuf . return) ptr

    -- %hash c:ecce d:448 | Gets the id of the stock icon being displayed
    -- by the 'StatusIcon'. The storage type of the status icon must be
    -- 'Graphics.UI.Gtk.Display.Image.ImageEmpty' or
    -- 'Graphics.UI.Gtk.Display.Image.ImageStock' (see
    -- 'statusIconGetStorageType'). The returned string is owned by the
    -- 'StatusIcon' and should not be freed or modified.
    --
    statusIconGetStock :: StatusIconClass self => self
     -> IO (Maybe StockId) -- ^ returns stock id of the displayed stock icon, or @Nothing@
                          -- if the image is empty.
    statusIconGetStock :: forall self. StatusIconClass self => self -> IO (Maybe StockId)
    statusIconGetStock self
    self =
      (\(StatusIcon ForeignPtr StatusIcon
    arg1) -> ForeignPtr StatusIcon
    -> (Ptr StatusIcon -> IO CString) -> IO CString
    forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
    withForeignPtr ForeignPtr StatusIcon
    arg1 ((Ptr StatusIcon -> IO CString) -> IO CString)
    -> (Ptr StatusIcon -> IO CString) -> IO CString
    forall a b. (a -> b) -> a -> b
    $ \Ptr StatusIcon
    argPtr1 ->Ptr StatusIcon -> IO CString
    gtk_status_icon_get_stock Ptr StatusIcon
    argPtr1)
    {-# LINE 342 "./Graphics/UI/Gtk/Display/StatusIcon.chs" #-}
        (toStatusIcon self)
      IO CString -> (CString -> IO (Maybe StockId)) -> IO (Maybe StockId)
    forall a b. IO a -> (a -> IO b) -> IO b
    forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
    >>= (CString -> IO StockId) -> CString -> IO (Maybe StockId)
    forall a b. (Ptr a -> IO b) -> Ptr a -> IO (Maybe b)
    maybePeek CString -> IO StockId
    forall s. GlibString s => CString -> IO s
    peekUTFString

    -- %hash c:6e6b d:273e | Gets the name of the icon being displayed by
    -- the 'StatusIcon'. The storage type of the status icon must be
    -- 'Graphics.UI.Gtk.Display.Image.ImageEmpty' or
    -- 'Graphics.UI.Gtk.Display.Image.ImageIconName' (see
    -- 'statusIconGetStorageType'). The returned string is owned by the
    -- 'StatusIcon' and should not be freed or modified.
    --
    statusIconGetIconName :: (StatusIconClass self, GlibString string) => self
     -> IO (Maybe string) -- ^ returns name of the displayed icon, or @Nothing@
                          -- if the image is empty.
    statusIconGetIconName :: forall self string.
    (StatusIconClass self, GlibString string) =>
    self -> IO (Maybe string)
    statusIconGetIconName self
    self =
      (\(StatusIcon ForeignPtr StatusIcon
    arg1) -> ForeignPtr StatusIcon
    -> (Ptr StatusIcon -> IO CString) -> IO CString
    forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
    withForeignPtr ForeignPtr StatusIcon
    arg1 ((Ptr StatusIcon -> IO CString) -> IO CString)
    -> (Ptr StatusIcon -> IO CString) -> IO CString
    forall a b. (a -> b) -> a -> b
    $ \Ptr StatusIcon
    argPtr1 ->Ptr StatusIcon -> IO CString
    gtk_status_icon_get_icon_name Ptr StatusIcon
    argPtr1)
    {-# LINE 357 "./Graphics/UI/Gtk/Display/StatusIcon.chs" #-}
        (toStatusIcon self)
      IO CString -> (CString -> IO (Maybe string)) -> IO (Maybe string)
    forall a b. IO a -> (a -> IO b) -> IO b
    forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
    >>= (CString -> IO string) -> CString -> IO (Maybe string)
    forall a b. (Ptr a -> IO b) -> Ptr a -> IO (Maybe b)
    maybePeek CString -> IO string
    forall s. GlibString s => CString -> IO s
    peekUTFString

    -- %hash c:b1db d:b874
    -- | 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 'sizeChanged' signal can be used
    -- to react to size changes.
    --
    statusIconGetSize :: StatusIconClass self => self
     -> IO Int -- ^ returns the size that is available for the image
    statusIconGetSize :: forall self. StatusIconClass self => self -> IO Int
    statusIconGetSize self
    self =
      (CInt -> Int) -> IO CInt -> IO Int
    forall (m :: * -> *) a1 r. Monad m => (a1 -> r) -> m a1 -> m r
    liftM CInt -> Int
    forall a b. (Integral a, Num b) => a -> b
    fromIntegral (IO CInt -> IO Int) -> IO CInt -> IO Int
    forall a b. (a -> b) -> a -> b
    $
      (\(StatusIcon ForeignPtr StatusIcon
    arg1) -> ForeignPtr StatusIcon -> (Ptr StatusIcon -> IO CInt) -> IO CInt
    forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
    withForeignPtr ForeignPtr StatusIcon
    arg1 ((Ptr StatusIcon -> IO CInt) -> IO CInt)
    -> (Ptr StatusIcon -> IO CInt) -> IO CInt
    forall a b. (a -> b) -> a -> b
    $ \Ptr StatusIcon
    argPtr1 ->Ptr StatusIcon -> IO CInt
    gtk_status_icon_get_size Ptr StatusIcon
    argPtr1)
    {-# LINE 371 "./Graphics/UI/Gtk/Display/StatusIcon.chs" #-}
        (toStatusIcon self)
    {-# LINE 388 "./Graphics/UI/Gtk/Display/StatusIcon.chs" #-}
    -- %hash c:7bd8 d:74fd
    -- | Shows or hides a status icon.
    --
    statusIconSetVisible :: StatusIconClass self => self
     -> Bool -- ^ @visible@ - @True@ to show the status icon, @False@ to hide it
     -> IO ()
    statusIconSetVisible :: forall self. StatusIconClass self => self -> Bool -> IO ()
    statusIconSetVisible self
    self Bool
    visible =
      (\(StatusIcon ForeignPtr StatusIcon
    arg1) CInt
    arg2 -> ForeignPtr StatusIcon -> (Ptr StatusIcon -> IO ()) -> IO ()
    forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
    withForeignPtr ForeignPtr StatusIcon
    arg1 ((Ptr StatusIcon -> IO ()) -> IO ())
    -> (Ptr StatusIcon -> IO ()) -> IO ()
    forall a b. (a -> b) -> a -> b
    $ \Ptr StatusIcon
    argPtr1 ->Ptr StatusIcon -> CInt -> IO ()
    gtk_status_icon_set_visible Ptr StatusIcon
    argPtr1 CInt
    arg2)
    {-# LINE 396 "./Graphics/UI/Gtk/Display/StatusIcon.chs" #-}
        (toStatusIcon self)
        (Bool -> CInt
    forall a. Num a => Bool -> a
    fromBool Bool
    visible)

    -- %hash c:e90c d:6c0b
    -- | 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
    -- 'statusIconIsEmbedded'.
    --
    statusIconGetVisible :: StatusIconClass self => self
     -> IO Bool -- ^ returns @True@ if the status icon is visible
    statusIconGetVisible :: forall self. StatusIconClass self => self -> IO Bool
    statusIconGetVisible self
    self =
      (CInt -> Bool) -> IO CInt -> IO Bool
    forall (m :: * -> *) a1 r. Monad m => (a1 -> r) -> m a1 -> m r
    liftM CInt -> Bool
    forall a. (Eq a, Num a) => a -> Bool
    toBool (IO CInt -> IO Bool) -> IO CInt -> IO Bool
    forall a b. (a -> b) -> a -> b
    $
      (\(StatusIcon ForeignPtr StatusIcon
    arg1) -> ForeignPtr StatusIcon -> (Ptr StatusIcon -> IO CInt) -> IO CInt
    forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
    withForeignPtr ForeignPtr StatusIcon
    arg1 ((Ptr StatusIcon -> IO CInt) -> IO CInt)
    -> (Ptr StatusIcon -> IO CInt) -> IO CInt
    forall a b. (a -> b) -> a -> b
    $ \Ptr StatusIcon
    argPtr1 ->Ptr StatusIcon -> IO CInt
    gtk_status_icon_get_visible Ptr StatusIcon
    argPtr1)
    {-# LINE 409 "./Graphics/UI/Gtk/Display/StatusIcon.chs" #-}
        (toStatusIcon self)
    {-# LINE 438 "./Graphics/UI/Gtk/Display/StatusIcon.chs" #-}
    -- %hash c:ffa d:8c83
    -- | Returns whether the status icon is embedded in a notification area.
    --
    statusIconIsEmbedded :: StatusIconClass self => self
     -> IO Bool -- ^ returns @True@ if the status icon is embedded in a
                -- notification area.
    statusIconIsEmbedded :: forall self. StatusIconClass self => self -> IO Bool
    statusIconIsEmbedded self
    self =
      (CInt -> Bool) -> IO CInt -> IO Bool
    forall (m :: * -> *) a1 r. Monad m => (a1 -> r) -> m a1 -> m r
    liftM CInt -> Bool
    forall a. (Eq a, Num a) => a -> Bool
    toBool (IO CInt -> IO Bool) -> IO CInt -> IO Bool
    forall a b. (a -> b) -> a -> b
    $
      (\(StatusIcon ForeignPtr StatusIcon
    arg1) -> ForeignPtr StatusIcon -> (Ptr StatusIcon -> IO CInt) -> IO CInt
    forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
    withForeignPtr ForeignPtr StatusIcon
    arg1 ((Ptr StatusIcon -> IO CInt) -> IO CInt)
    -> (Ptr StatusIcon -> IO CInt) -> IO CInt
    forall a b. (a -> b) -> a -> b
    $ \Ptr StatusIcon
    argPtr1 ->Ptr StatusIcon -> IO CInt
    gtk_status_icon_is_embedded Ptr StatusIcon
    argPtr1)
    {-# LINE 447 "./Graphics/UI/Gtk/Display/StatusIcon.chs" #-}
        (toStatusIcon self)

    -- %hash c:6a16 d:99ad
    -- | Menu positioning function to use with 'menuPopup' to position @menu@
    -- aligned to the status icon @userData@.
    --
    statusIconPositionMenu :: (MenuClass menu, StatusIconClass self) =>
        menu -- ^ @menu@ - the 'Menu'
     -> self -- ^ @userData@ - the status icon to position the
                               -- menu on
     -> IO (Int,Int,Bool) -- ^ @(x,y,pushIn)@ -
                               -- @(x,y)@ - coordinates.
                               -- @pushIn@ - whether the menu should be
                               -- pushed in to be completely inside the screen
                               -- instead of just clamped to the size to the
                               -- screen.
    statusIconPositionMenu :: forall menu self.
    (MenuClass menu, StatusIconClass self) =>
    menu -> self -> IO (Int, Int, Bool)
    statusIconPositionMenu menu
    menu self
    userData =
      (Ptr CInt -> IO (Int, Int, Bool)) -> IO (Int, Int, Bool)
    forall a b. Storable a => (Ptr a -> IO b) -> IO b
    alloca ((Ptr CInt -> IO (Int, Int, Bool)) -> IO (Int, Int, Bool))
    -> (Ptr CInt -> IO (Int, Int, Bool)) -> IO (Int, Int, Bool)
    forall a b. (a -> b) -> a -> b
    $ \Ptr CInt
    xPtr ->
      (Ptr CInt -> IO (Int, Int, Bool)) -> IO (Int, Int, Bool)
    forall a b. Storable a => (Ptr a -> IO b) -> IO b
    alloca ((Ptr CInt -> IO (Int, Int, Bool)) -> IO (Int, Int, Bool))
    -> (Ptr CInt -> IO (Int, Int, Bool)) -> IO (Int, Int, Bool)
    forall a b. (a -> b) -> a -> b
    $ \Ptr CInt
    yPtr ->
      (Ptr CInt -> IO (Int, Int, Bool)) -> IO (Int, Int, Bool)
    forall a b. Storable a => (Ptr a -> IO b) -> IO b
    alloca ((Ptr CInt -> IO (Int, Int, Bool)) -> IO (Int, Int, Bool))
    -> (Ptr CInt -> IO (Int, Int, Bool)) -> IO (Int, Int, Bool)
    forall a b. (a -> b) -> a -> b
    $ \Ptr CInt
    pushInPtr -> do
      (\(Menu ForeignPtr Menu
    arg1) Ptr CInt
    arg2 Ptr CInt
    arg3 Ptr CInt
    arg4 Ptr ()
    arg5 -> ForeignPtr Menu -> (Ptr Menu -> IO ()) -> IO ()
    forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
    withForeignPtr ForeignPtr Menu
    arg1 ((Ptr Menu -> IO ()) -> IO ()) -> (Ptr Menu -> IO ()) -> IO ()
    forall a b. (a -> b) -> a -> b
    $ \Ptr Menu
    argPtr1 ->Ptr Menu -> Ptr CInt -> Ptr CInt -> Ptr CInt -> Ptr () -> IO ()
    gtk_status_icon_position_menu Ptr Menu
    argPtr1 Ptr CInt
    arg2 Ptr CInt
    arg3 Ptr CInt
    arg4 Ptr ()
    arg5)
    {-# LINE 468 "./Graphics/UI/Gtk/Display/StatusIcon.chs" #-}
        (toMenu menu)
        Ptr CInt
    xPtr
        Ptr CInt
    yPtr
        Ptr CInt
    pushInPtr
        (Ptr StatusIcon -> Ptr ()
    forall a b. Ptr a -> Ptr b
    castPtr (Ptr StatusIcon -> Ptr ())
    -> (StatusIcon -> Ptr StatusIcon) -> StatusIcon -> Ptr ()
    forall b c a. (b -> c) -> (a -> b) -> a -> c
    . ForeignPtr StatusIcon -> Ptr StatusIcon
    forall a. ForeignPtr a -> Ptr a
    unsafeForeignPtrToPtr (ForeignPtr StatusIcon -> Ptr StatusIcon)
    -> (StatusIcon -> ForeignPtr StatusIcon)
    -> StatusIcon
    -> Ptr StatusIcon
    forall b c a. (b -> c) -> (a -> b) -> a -> c
    . StatusIcon -> ForeignPtr StatusIcon
    unStatusIcon (StatusIcon -> Ptr ()) -> StatusIcon -> Ptr ()
    forall a b. (a -> b) -> a -> b
    $ self -> StatusIcon
    forall o. StatusIconClass o => o -> StatusIcon
    toStatusIcon self
    userData)
      x <- Ptr CInt -> IO CInt
    forall a. Storable a => Ptr a -> IO a
    peek Ptr CInt
    xPtr
      y <- peek yPtr
      pushIn <- peek pushInPtr
      return (fromIntegral x, fromIntegral y, toBool pushIn)

    -- FIXME: it's a partial binding, the potentially returned Screen is ignored
    -- %hash c:7939 d:5ea
    -- | Obtains information about the location of the status icon on screen. This
    -- information can be used to e.g. position popups like notification bubbles.
    --
    -- 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
    -- 'statusIconIsEmbedded'.
    --
    statusIconGetGeometry :: StatusIconClass self => self -> IO (Maybe (Rectangle,Orientation))
    statusIconGetGeometry :: forall self.
    StatusIconClass self =>
    self -> IO (Maybe (Rectangle, Orientation))
    statusIconGetGeometry self
    self =
      (Ptr Rectangle -> IO (Maybe (Rectangle, Orientation)))
    -> IO (Maybe (Rectangle, Orientation))
    forall a b. Storable a => (Ptr a -> IO b) -> IO b
    alloca ((Ptr Rectangle -> IO (Maybe (Rectangle, Orientation)))
     -> IO (Maybe (Rectangle, Orientation)))
    -> (Ptr Rectangle -> IO (Maybe (Rectangle, Orientation)))
    -> IO (Maybe (Rectangle, Orientation))
    forall a b. (a -> b) -> a -> b
    $ \Ptr Rectangle
    recPtr ->
      (Ptr CInt -> IO (Maybe (Rectangle, Orientation)))
    -> IO (Maybe (Rectangle, Orientation))
    forall a b. Storable a => (Ptr a -> IO b) -> IO b
    alloca ((Ptr CInt -> IO (Maybe (Rectangle, Orientation)))
     -> IO (Maybe (Rectangle, Orientation)))
    -> (Ptr CInt -> IO (Maybe (Rectangle, Orientation)))
    -> IO (Maybe (Rectangle, Orientation))
    forall a b. (a -> b) -> a -> b
    $ \Ptr CInt
    orPtr ->
            ((CInt -> Bool) -> IO CInt -> IO Bool
    forall (m :: * -> *) a1 r. Monad m => (a1 -> r) -> m a1 -> m r
    liftM CInt -> Bool
    forall a. (Eq a, Num a) => a -> Bool
    toBool (IO CInt -> IO Bool) -> IO CInt -> IO Bool
    forall a b. (a -> b) -> a -> b
    $ (\(StatusIcon ForeignPtr StatusIcon
    arg1) Ptr Screen
    arg2 Ptr ()
    arg3 Ptr CInt
    arg4 -> ForeignPtr StatusIcon -> (Ptr StatusIcon -> IO CInt) -> IO CInt
    forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
    withForeignPtr ForeignPtr StatusIcon
    arg1 ((Ptr StatusIcon -> IO CInt) -> IO CInt)
    -> (Ptr StatusIcon -> IO CInt) -> IO CInt
    forall a b. (a -> b) -> a -> b
    $ \Ptr StatusIcon
    argPtr1 ->Ptr StatusIcon -> Ptr Screen -> Ptr () -> Ptr CInt -> IO CInt
    gtk_status_icon_get_geometry Ptr StatusIcon
    argPtr1 Ptr Screen
    arg2 Ptr ()
    arg3 Ptr CInt
    arg4)
    {-# LINE 493 "./Graphics/UI/Gtk/Display/StatusIcon.chs" #-}
             (self -> StatusIcon
    forall o. StatusIconClass o => o -> StatusIcon
    toStatusIcon self
    self) Ptr Screen
    forall a. Ptr a
    nullPtr (Ptr Rectangle -> Ptr ()
    forall a b. Ptr a -> Ptr b
    castPtr Ptr Rectangle
    recPtr) Ptr CInt
    orPtr) IO Bool
    -> (Bool -> IO (Maybe (Rectangle, Orientation)))
    -> IO (Maybe (Rectangle, Orientation))
    forall a b. IO a -> (a -> IO b) -> IO b
    forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
    >>= \Bool
    b ->
            if Bool
    b
              then do
                rec_ <- Ptr Rectangle -> IO Rectangle
    forall a. Storable a => Ptr a -> IO a
    peek Ptr Rectangle
    recPtr
                or <- peek orPtr
                return $ Just (rec_,toEnum $ fromIntegral or)
            else Maybe (Rectangle, Orientation)
    -> IO (Maybe (Rectangle, Orientation))
    forall a. a -> IO a
    forall (m :: * -> *) a. Monad m => a -> m a
    return Maybe (Rectangle, Orientation)
    forall a. Maybe a
    Nothing

    -- | Sets the 'Screen' where status icon is displayed; if the icon is already
    -- mapped, it will be unmapped, and then remapped on the new screen.
    --
    statusIconSetScreen :: (StatusIconClass self, ScreenClass screen) => self
     -> Maybe screen
     -> IO ()
    statusIconSetScreen :: forall self screen.
    (StatusIconClass self, ScreenClass screen) =>
    self -> Maybe screen -> IO ()
    statusIconSetScreen self
    self Maybe screen
    screen =
      (\(StatusIcon ForeignPtr StatusIcon
    arg1) (Screen ForeignPtr Screen
    arg2) -> ForeignPtr StatusIcon -> (Ptr StatusIcon -> IO ()) -> IO ()
    forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
    withForeignPtr ForeignPtr StatusIcon
    arg1 ((Ptr StatusIcon -> IO ()) -> IO ())
    -> (Ptr StatusIcon -> IO ()) -> IO ()
    forall a b. (a -> b) -> a -> b
    $ \Ptr StatusIcon
    argPtr1 ->ForeignPtr Screen -> (Ptr Screen -> IO ()) -> IO ()
    forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
    withForeignPtr ForeignPtr Screen
    arg2 ((Ptr Screen -> IO ()) -> IO ()) -> (Ptr Screen -> IO ()) -> IO ()
    forall a b. (a -> b) -> a -> b
    $ \Ptr Screen
    argPtr2 ->Ptr StatusIcon -> Ptr Screen -> IO ()
    gtk_status_icon_set_screen Ptr StatusIcon
    argPtr1 Ptr Screen
    argPtr2)
    {-# LINE 510 "./Graphics/UI/Gtk/Display/StatusIcon.chs" #-}
        (toStatusIcon self)
        (Screen -> (screen -> Screen) -> Maybe screen -> Screen
    forall b a. b -> (a -> b) -> Maybe a -> b
    maybe (ForeignPtr Screen -> Screen
    Screen ForeignPtr Screen
    forall a. ForeignPtr a
    nullForeignPtr) screen -> Screen
    forall o. ScreenClass o => o -> Screen
    toScreen Maybe screen
    screen)

    -- | Returns the 'Screen' associated with the status icon.
    --
    statusIconGetScreen :: StatusIconClass self => self
     -> IO (Maybe Screen)
    statusIconGetScreen :: forall self. StatusIconClass self => self -> IO (Maybe Screen)
    statusIconGetScreen self
    self =
      (IO (Ptr Screen) -> IO Screen)
    -> IO (Ptr Screen) -> IO (Maybe Screen)
    forall a. (IO (Ptr a) -> IO a) -> IO (Ptr a) -> IO (Maybe a)
    maybeNull ((ForeignPtr Screen -> Screen, FinalizerPtr Screen)
    -> IO (Ptr Screen) -> IO Screen
    forall obj.
    GObjectClass obj =>
    (ForeignPtr obj -> obj, FinalizerPtr obj) -> IO (Ptr obj) -> IO obj
    makeNewGObject (ForeignPtr Screen -> Screen, FinalizerPtr Screen)
    forall {a}. (ForeignPtr Screen -> Screen, FinalizerPtr a)
    mkScreen) (IO (Ptr Screen) -> IO (Maybe Screen))
    -> IO (Ptr Screen) -> IO (Maybe Screen)
    forall a b. (a -> b) -> a -> b
    $
      (\(StatusIcon ForeignPtr StatusIcon
    arg1) -> ForeignPtr StatusIcon
    -> (Ptr StatusIcon -> IO (Ptr Screen)) -> IO (Ptr Screen)
    forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
    withForeignPtr ForeignPtr StatusIcon
    arg1 ((Ptr StatusIcon -> IO (Ptr Screen)) -> IO (Ptr Screen))
    -> (Ptr StatusIcon -> IO (Ptr Screen)) -> IO (Ptr Screen)
    forall a b. (a -> b) -> a -> b
    $ \Ptr StatusIcon
    argPtr1 ->Ptr StatusIcon -> IO (Ptr Screen)
    gtk_status_icon_get_screen Ptr StatusIcon
    argPtr1)
    {-# LINE 520 "./Graphics/UI/Gtk/Display/StatusIcon.chs" #-}
        (toStatusIcon self)

    -- | Sets text as the contents of the tooltip.
    --
    -- This function will take care of setting "has-tooltip" to 'True' and of the default
    -- handler for the "query-tooltip" signal.
    --
    -- See also the "tooltip-text" property and 'tooltipSetText'.
    --
    statusIconSetTooltipText :: (StatusIconClass self, GlibString string) => self
     -> Maybe string
     -> IO ()
    statusIconSetTooltipText :: forall self string.
    (StatusIconClass self, GlibString string) =>
    self -> Maybe string -> IO ()
    statusIconSetTooltipText self
    self Maybe string
    text =
      (string -> (CString -> IO ()) -> IO ())
    -> Maybe string -> (CString -> IO ()) -> IO ()
    forall a b c.
    (a -> (Ptr b -> IO c) -> IO c)
    -> Maybe a -> (Ptr b -> IO c) -> IO c
    maybeWith string -> (CString -> IO ()) -> IO ()
    forall a. string -> (CString -> IO a) -> IO a
    forall s a. GlibString s => s -> (CString -> IO a) -> IO a
    withUTFString Maybe string
    text ((CString -> IO ()) -> IO ()) -> (CString -> IO ()) -> IO ()
    forall a b. (a -> b) -> a -> b
    $ \CString
    textPtr ->
      (\(StatusIcon ForeignPtr StatusIcon
    arg1) CString
    arg2 -> ForeignPtr StatusIcon -> (Ptr StatusIcon -> IO ()) -> IO ()
    forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
    withForeignPtr ForeignPtr StatusIcon
    arg1 ((Ptr StatusIcon -> IO ()) -> IO ())
    -> (Ptr StatusIcon -> IO ()) -> IO ()
    forall a b. (a -> b) -> a -> b
    $ \Ptr StatusIcon
    argPtr1 ->Ptr StatusIcon -> CString -> IO ()
    gtk_status_icon_set_tooltip_text Ptr StatusIcon
    argPtr1 CString
    arg2)
    {-# LINE 537 "./Graphics/UI/Gtk/Display/StatusIcon.chs" #-}
        (toStatusIcon self)
        CString
    textPtr

    -- | Gets the contents of the tooltip for status icon.
    --
    statusIconGetTooltipText :: (StatusIconClass self, GlibString string) => self
     -> IO (Maybe string)
    statusIconGetTooltipText :: forall self string.
    (StatusIconClass self, GlibString string) =>
    self -> IO (Maybe string)
    statusIconGetTooltipText self
    self =
      (\(StatusIcon ForeignPtr StatusIcon
    arg1) -> ForeignPtr StatusIcon
    -> (Ptr StatusIcon -> IO CString) -> IO CString
    forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
    withForeignPtr ForeignPtr StatusIcon
    arg1 ((Ptr StatusIcon -> IO CString) -> IO CString)
    -> (Ptr StatusIcon -> IO CString) -> IO CString
    forall a b. (a -> b) -> a -> b
    $ \Ptr StatusIcon
    argPtr1 ->Ptr StatusIcon -> IO CString
    gtk_status_icon_get_tooltip_text Ptr StatusIcon
    argPtr1)
    {-# LINE 546 "./Graphics/UI/Gtk/Display/StatusIcon.chs" #-}
        (toStatusIcon self)
      IO CString -> (CString -> IO (Maybe string)) -> IO (Maybe string)
    forall a b. IO a -> (a -> IO b) -> IO b
    forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
    >>= (CString -> IO string) -> CString -> IO (Maybe string)
    forall a b. (Ptr a -> IO b) -> Ptr a -> IO (Maybe b)
    maybePeek CString -> IO string
    forall s. GlibString s => CString -> IO s
    peekUTFString

    -- | Sets markup as the contents of the tooltip, which is marked up with the
    -- Pango text markup language.
    --
    -- This function will take care of setting 'statusIconHasTooltip' to 'True' and of the default
    -- handler for the 'queryTooltip' signal.
    --
    -- See also the 'tooltipMarkup' property and 'tooltipSetMarkup'.
    --
    statusIconSetTooltipMarkup :: (StatusIconClass self, GlibString string) => self
     -> Maybe string
     -> IO ()
    statusIconSetTooltipMarkup :: forall self string.
    (StatusIconClass self, GlibString string) =>
    self -> Maybe string -> IO ()
    statusIconSetTooltipMarkup self
    self Maybe string
    markup =
      (string -> (CString -> IO ()) -> IO ())
    -> Maybe string -> (CString -> IO ()) -> IO ()
    forall a b c.
    (a -> (Ptr b -> IO c) -> IO c)
    -> Maybe a -> (Ptr b -> IO c) -> IO c
    maybeWith string -> (CString -> IO ()) -> IO ()
    forall a. string -> (CString -> IO a) -> IO a
    forall s a. GlibString s => s -> (CString -> IO a) -> IO a
    withUTFString Maybe string
    markup ((CString -> IO ()) -> IO ()) -> (CString -> IO ()) -> IO ()
    forall a b. (a -> b) -> a -> b
    $ \CString
    markupPtr ->
      (\(StatusIcon ForeignPtr StatusIcon
    arg1) CString
    arg2 -> ForeignPtr StatusIcon -> (Ptr StatusIcon -> IO ()) -> IO ()
    forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
    withForeignPtr ForeignPtr StatusIcon
    arg1 ((Ptr StatusIcon -> IO ()) -> IO ())
    -> (Ptr StatusIcon -> IO ()) -> IO ()
    forall a b. (a -> b) -> a -> b
    $ \Ptr StatusIcon
    argPtr1 ->Ptr StatusIcon -> CString -> IO ()
    gtk_status_icon_set_tooltip_markup Ptr StatusIcon
    argPtr1 CString
    arg2)
    {-# LINE 563 "./Graphics/UI/Gtk/Display/StatusIcon.chs" #-}
        (toStatusIcon self)
        CString
    markupPtr

    -- | Gets the contents of the tooltip for status icon.
    --
    statusIconGetTooltipMarkup :: (StatusIconClass self, GlibString string) => self
     -> IO (Maybe string)
    statusIconGetTooltipMarkup :: forall self string.
    (StatusIconClass self, GlibString string) =>
    self -> IO (Maybe string)
    statusIconGetTooltipMarkup self
    self =
      (\(StatusIcon ForeignPtr StatusIcon
    arg1) -> ForeignPtr StatusIcon
    -> (Ptr StatusIcon -> IO CString) -> IO CString
    forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
    withForeignPtr ForeignPtr StatusIcon
    arg1 ((Ptr StatusIcon -> IO CString) -> IO CString)
    -> (Ptr StatusIcon -> IO CString) -> IO CString
    forall a b. (a -> b) -> a -> b
    $ \Ptr StatusIcon
    argPtr1 ->Ptr StatusIcon -> IO CString
    gtk_status_icon_get_tooltip_markup Ptr StatusIcon
    argPtr1)
    {-# LINE 572 "./Graphics/UI/Gtk/Display/StatusIcon.chs" #-}
        (toStatusIcon self)
      IO CString -> (CString -> IO (Maybe string)) -> IO (Maybe string)
    forall a b. IO a -> (a -> IO b) -> IO b
    forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
    >>= (CString -> IO string) -> CString -> IO (Maybe string)
    forall a b. (Ptr a -> IO b) -> Ptr a -> IO (Maybe b)
    maybePeek CString -> IO string
    forall s. GlibString s => CString -> IO s
    peekUTFString

    -- | Sets the has-tooltip property on the status icon to @hasTooltip@.
    -- See 'statusIconHasTooltip' for more information.
    --
    statusIconSetHasTooltip :: StatusIconClass self => self
     -> Bool
     -> IO ()
    statusIconSetHasTooltip :: forall self. StatusIconClass self => self -> Bool -> IO ()
    statusIconSetHasTooltip self
    self Bool
    hasTooltip =
      (\(StatusIcon ForeignPtr StatusIcon
    arg1) CInt
    arg2 -> ForeignPtr StatusIcon -> (Ptr StatusIcon -> IO ()) -> IO ()
    forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
    withForeignPtr ForeignPtr StatusIcon
    arg1 ((Ptr StatusIcon -> IO ()) -> IO ())
    -> (Ptr StatusIcon -> IO ()) -> IO ()
    forall a b. (a -> b) -> a -> b
    $ \Ptr StatusIcon
    argPtr1 ->Ptr StatusIcon -> CInt -> IO ()
    gtk_status_icon_set_has_tooltip Ptr StatusIcon
    argPtr1 CInt
    arg2)
    {-# LINE 583 "./Graphics/UI/Gtk/Display/StatusIcon.chs" #-}
        (toStatusIcon self)
        (Bool -> CInt
    forall a. Num a => Bool -> a
    fromBool Bool
    hasTooltip)

    -- | Returns the current value of the has-tooltip property. See 'statusIconHasTooltip' for more information.
    --
    statusIconGetHasTooltip :: StatusIconClass self => self
     -> IO Bool
    statusIconGetHasTooltip :: forall self. StatusIconClass self => self -> IO Bool
    statusIconGetHasTooltip self
    self =
      (CInt -> Bool) -> IO CInt -> IO Bool
    forall (m :: * -> *) a1 r. Monad m => (a1 -> r) -> m a1 -> m r
    liftM CInt -> Bool
    forall a. (Eq a, Num a) => a -> Bool
    toBool (IO CInt -> IO Bool) -> IO CInt -> IO Bool
    forall a b. (a -> b) -> a -> b
    $
      (\(StatusIcon ForeignPtr StatusIcon
    arg1) -> ForeignPtr StatusIcon -> (Ptr StatusIcon -> IO CInt) -> IO CInt
    forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
    withForeignPtr ForeignPtr StatusIcon
    arg1 ((Ptr StatusIcon -> IO CInt) -> IO CInt)
    -> (Ptr StatusIcon -> IO CInt) -> IO CInt
    forall a b. (a -> b) -> a -> b
    $ \Ptr StatusIcon
    argPtr1 ->Ptr StatusIcon -> IO CInt
    gtk_status_icon_get_has_tooltip Ptr StatusIcon
    argPtr1)
    {-# LINE 593 "./Graphics/UI/Gtk/Display/StatusIcon.chs" #-}
        (toStatusIcon self)

    -- | 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.
    --
    statusIconSetTitle :: (StatusIconClass self, GlibString string) => self
     -> Maybe string
     -> IO ()
    statusIconSetTitle :: forall self string.
    (StatusIconClass self, GlibString string) =>
    self -> Maybe string -> IO ()
    statusIconSetTitle self
    self Maybe string
    title =
      (string -> (CString -> IO ()) -> IO ())
    -> Maybe string -> (CString -> IO ()) -> IO ()
    forall a b c.
    (a -> (Ptr b -> IO c) -> IO c)
    -> Maybe a -> (Ptr b -> IO c) -> IO c
    maybeWith string -> (CString -> IO ()) -> IO ()
    forall a. string -> (CString -> IO a) -> IO a
    forall s a. GlibString s => s -> (CString -> IO a) -> IO a
    withUTFString Maybe string
    title ((CString -> IO ()) -> IO ()) -> (CString -> IO ()) -> IO ()
    forall a b. (a -> b) -> a -> b
    $ \CString
    titlePtr ->
      (\(StatusIcon ForeignPtr StatusIcon
    arg1) CString
    arg2 -> ForeignPtr StatusIcon -> (Ptr StatusIcon -> IO ()) -> IO ()
    forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
    withForeignPtr ForeignPtr StatusIcon
    arg1 ((Ptr StatusIcon -> IO ()) -> IO ())
    -> (Ptr StatusIcon -> IO ()) -> IO ()
    forall a b. (a -> b) -> a -> b
    $ \Ptr StatusIcon
    argPtr1 ->Ptr StatusIcon -> CString -> IO ()
    gtk_status_icon_set_title Ptr StatusIcon
    argPtr1 CString
    arg2)
    {-# LINE 607 "./Graphics/UI/Gtk/Display/StatusIcon.chs" #-}
        (toStatusIcon self)
        CString
    titlePtr

    -- | Gets the title of this tray icon. See 'statusIconSetTitle'.
    --
    statusIconGetTitle :: (StatusIconClass self, GlibString string) => self
     -> IO (Maybe string)
    statusIconGetTitle :: forall self string.
    (StatusIconClass self, GlibString string) =>
    self -> IO (Maybe string)
    statusIconGetTitle self
    self =
      (\(StatusIcon ForeignPtr StatusIcon
    arg1) -> ForeignPtr StatusIcon
    -> (Ptr StatusIcon -> IO CString) -> IO CString
    forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
    withForeignPtr ForeignPtr StatusIcon
    arg1 ((Ptr StatusIcon -> IO CString) -> IO CString)
    -> (Ptr StatusIcon -> IO CString) -> IO CString
    forall a b. (a -> b) -> a -> b
    $ \Ptr StatusIcon
    argPtr1 ->Ptr StatusIcon -> IO CString
    gtk_status_icon_get_title Ptr StatusIcon
    argPtr1)
    {-# LINE 616 "./Graphics/UI/Gtk/Display/StatusIcon.chs" #-}
        (toStatusIcon self)
      IO CString -> (CString -> IO (Maybe string)) -> IO (Maybe string)
    forall a b. IO a -> (a -> IO b) -> IO b
    forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
    >>= (CString -> IO string) -> CString -> IO (Maybe string)
    forall a b. (Ptr a -> IO b) -> Ptr a -> IO (Maybe b)
    maybePeek CString -> IO string
    forall s. GlibString s => CString -> IO s
    peekUTFString

    -- | 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.
    statusIconSetName :: (StatusIconClass self, GlibString string) => self -> string -> IO ()
    statusIconSetName :: forall self string.
    (StatusIconClass self, GlibString string) =>
    self -> string -> IO ()
    statusIconSetName self
    self string
    name =
      string -> (CString -> IO ()) -> IO ()
    forall a. string -> (CString -> IO a) -> IO a
    forall s a. GlibString s => s -> (CString -> IO a) -> IO a
    withUTFString string
    name ((CString -> IO ()) -> IO ()) -> (CString -> IO ()) -> IO ()
    forall a b. (a -> b) -> a -> b
    $ \ CString
    namePtr ->
      (\(StatusIcon ForeignPtr StatusIcon
    arg1) CString
    arg2 -> ForeignPtr StatusIcon -> (Ptr StatusIcon -> IO ()) -> IO ()
    forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
    withForeignPtr ForeignPtr StatusIcon
    arg1 ((Ptr StatusIcon -> IO ()) -> IO ())
    -> (Ptr StatusIcon -> IO ()) -> IO ()
    forall a b. (a -> b) -> a -> b
    $ \Ptr StatusIcon
    argPtr1 ->Ptr StatusIcon -> CString -> IO ()
    gtk_status_icon_set_name Ptr StatusIcon
    argPtr1 CString
    arg2)
    {-# LINE 627 "./Graphics/UI/Gtk/Display/StatusIcon.chs" #-}
        (toStatusIcon self)
        CString
    namePtr

    --------------------
    -- Attributes

    -- %hash c:575d d:54e3
    -- | A 'Pixbuf' to display.
    --
    statusIconPixbuf :: StatusIconClass self => Attr self Pixbuf
    statusIconPixbuf :: forall self. StatusIconClass self => Attr self Pixbuf
    statusIconPixbuf = String -> GType -> ReadWriteAttr self Pixbuf Pixbuf
    forall gobj gobj' gobj''.
    (GObjectClass gobj, GObjectClass gobj', GObjectClass gobj'') =>
    String -> GType -> ReadWriteAttr gobj gobj' gobj''
    newAttrFromObjectProperty String
    "pixbuf"
                         GType
    gdk_pixbuf_get_type
    {-# LINE 640 "./Graphics/UI/Gtk/Display/StatusIcon.chs" #-}

    -- %hash c:6783 d:d235
    -- | Filename to load and display.
    --
    -- Default value: @Nothing@
    --
    statusIconFile :: (StatusIconClass self, GlibString string) => WriteAttr self (Maybe string)
    statusIconFile :: forall self string.
    (StatusIconClass self, GlibString string) =>
    WriteAttr self (Maybe string)
    statusIconFile = String -> WriteAttr self (Maybe string)
    forall gobj string.
    (GObjectClass gobj, GlibString string) =>
    String -> WriteAttr gobj (Maybe string)
    writeAttrFromMaybeStringProperty String
    "file"

    -- %hash c:3fc3 d:7ec1
    -- | Stock ID for a stock image to display.
    --
    -- Default value: @Nothing@
    --
    statusIconStock :: (StatusIconClass self, GlibString string) => Attr self (Maybe string)
    statusIconStock :: forall self string.
    (StatusIconClass self, GlibString string) =>
    Attr self (Maybe string)
    statusIconStock = String -> Attr self (Maybe string)
    forall gobj string.
    (GObjectClass gobj, GlibString string) =>
    String -> Attr gobj (Maybe string)
    newAttrFromMaybeStringProperty String
    "stock"

    -- %hash c:3502 d:9b7a
    -- | The name of the icon from the icon theme.
    --
    -- Default value: @Nothing@
    --
    statusIconIconName :: (StatusIconClass self, GlibString string) => Attr self (Maybe string)
    statusIconIconName :: forall self string.
    (StatusIconClass self, GlibString string) =>
    Attr self (Maybe string)
    statusIconIconName = String -> Attr self (Maybe string)
    forall gobj string.
    (GObjectClass gobj, GlibString string) =>
    String -> Attr gobj (Maybe string)
    newAttrFromMaybeStringProperty String
    "icon-name"

    -- %hash c:570e d:983f
    -- | The representation being used for image data.
    --
    -- Default value: 'Graphics.UI.Gtk.Display.Image.ImageEmpty'
    --
    statusIconStorageType :: StatusIconClass self => ReadAttr self ImageType
    statusIconStorageType :: forall self. StatusIconClass self => ReadAttr self ImageType
    statusIconStorageType = String -> GType -> ReadAttr self ImageType
    forall gobj enum.
    (GObjectClass gobj, Enum enum) =>
    String -> GType -> ReadAttr gobj enum
    readAttrFromEnumProperty String
    "storage-type"
                              GType
    gtk_image_type_get_type
    {-# LINE 673 "./Graphics/UI/Gtk/Display/StatusIcon.chs" #-}

    -- %hash c:10be d:4621
    -- | The size of the icon.
    --
    -- Allowed values: >= 0
    --
    -- Default value: 0
    --
    statusIconSize :: StatusIconClass self => ReadAttr self Int
    statusIconSize :: forall self. StatusIconClass self => ReadAttr self Int
    statusIconSize = String -> ReadAttr self Int
    forall gobj. GObjectClass gobj => String -> ReadAttr gobj Int
    readAttrFromIntProperty String
    "size"
    {-# LINE 695 "./Graphics/UI/Gtk/Display/StatusIcon.chs" #-}
    -- %hash c:4e2b d:7712
    -- | Whether or not the status icon is visible.
    --
    -- Default value: @True@
    --
    statusIconVisible :: StatusIconClass self => Attr self Bool
    statusIconVisible :: forall self. StatusIconClass self => Attr self Bool
    statusIconVisible = String -> Attr self Bool
    forall gobj. GObjectClass gobj => String -> Attr gobj Bool
    newAttrFromBoolProperty String
    "visible"

    -- | The screen where this status icon will be displayed.
    statusIconScreen :: StatusIconClass self => Attr self Screen
    statusIconScreen :: forall self. StatusIconClass self => Attr self Screen
    statusIconScreen = String -> GType -> ReadWriteAttr self Screen Screen
    forall gobj gobj' gobj''.
    (GObjectClass gobj, GObjectClass gobj', GObjectClass gobj'') =>
    String -> GType -> ReadWriteAttr gobj gobj' gobj''
    newAttrFromObjectProperty String
    "screen"
                              GType
    gdk_screen_get_type
    {-# LINE 708 "./Graphics/UI/Gtk/Display/StatusIcon.chs" #-}

    -- | Sets the text of tooltip to be the given string.
    --
    -- Also see 'tooltipSetText'.
    --
    -- This is a convenience property which will take care of getting the tooltip
    -- shown if the given value is not 'Nothing'. "has-tooltip" will automatically
    -- be set to 'True' and the default handler for the "query-tooltip" signal will
    -- take care of displaying the tooltip.
    --
    -- Note that some platforms have limitations on the length of tooltips that
    -- they allow on status icons, e.g. Windows only shows the first 64 characters.
    --
    -- Default value: 'Nothing'
    statusIconTooltipText :: (StatusIconClass self, GlibString string) => Attr self (Maybe string)
    statusIconTooltipText :: forall self string.
    (StatusIconClass self, GlibString string) =>
    Attr self (Maybe string)
    statusIconTooltipText = String -> Attr self (Maybe string)
    forall gobj string.
    (GObjectClass gobj, GlibString string) =>
    String -> Attr gobj (Maybe string)
    newAttrFromMaybeStringProperty String
    "tooltip-text"

    -- | Sets the text of tooltip to be the given string, which is marked up with the
    -- Pango text markup language. Also see 'tooltipSetMarkup'.
    --
    -- This is a convenience property which will take care of getting the tooltip
    -- shown if the given value is not 'Nothing'. "has-tooltip" will automatically
    -- be set to 'True' and the default handler for the "query-tooltip" signal will
    -- take care of displaying the tooltip.
    --
    -- On some platforms, embedded markup will be ignored.
    --
    -- Default value: 'Nothing'
    statusIconTooltipMarkup :: (StatusIconClass self, GlibString string) => Attr self (Maybe string)
    statusIconTooltipMarkup :: forall self string.
    (StatusIconClass self, GlibString string) =>
    Attr self (Maybe string)
    statusIconTooltipMarkup = String -> Attr self (Maybe string)
    forall gobj string.
    (GObjectClass gobj, GlibString string) =>
    String -> Attr gobj (Maybe string)
    newAttrFromMaybeStringProperty String
    "tooltip-markup"

    -- | Enables or disables the emission of "query-tooltip" on status_icon. A value
    -- of 'True' indicates that status_icon can have a tooltip, in this case the status
    -- icon will be queried using "query-tooltip" to determine whether it will provide
    -- a tooltip or not.
    --
    -- Note that setting this property to 'True' for the first time will change the
    -- event masks of the windows of this status icon to include leave-notify and
    -- motion-notify events. This will not be undone when the property is set to
    -- 'False' again.
    --
    -- Whether this property is respected is platform dependent. For plain text
    -- tooltips, use "tooltip-text" in preference.
    --
    -- Default value: 'False'
    statusIconHasTooltip :: StatusIconClass self => Attr self Bool
    statusIconHasTooltip :: forall self. StatusIconClass self => Attr self Bool
    statusIconHasTooltip = String -> Attr self Bool
    forall gobj. GObjectClass gobj => String -> Attr gobj Bool
    newAttrFromBoolProperty String
    "has-tooltip"

    -- | 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.
    --
    -- Default value: 'Nothing'
    statusIconTitle :: (StatusIconClass self, GlibString string) => Attr self (Maybe string)
    statusIconTitle :: forall self string.
    (StatusIconClass self, GlibString string) =>
    Attr self (Maybe string)
    statusIconTitle = String -> Attr self (Maybe string)
    forall gobj string.
    (GObjectClass gobj, GlibString string) =>
    String -> Attr gobj (Maybe string)
    newAttrFromMaybeStringProperty String
    "title"

    --------------------
    -- Signals

    -- %hash c:969a d:71d0
    -- | Gets emitted when the size available for the image changes, e.g. because
    -- the notification area got resized.
    --
    statusIconSizeChanged :: StatusIconClass self => Signal self (Int -> IO Bool)
    statusIconSizeChanged :: forall self. StatusIconClass self => Signal self (Int -> IO Bool)
    statusIconSizeChanged = (Bool -> self -> (Int -> IO Bool) -> IO (ConnectId self))
    -> Signal self (Int -> IO Bool)
    forall object handler.
    (Bool -> object -> handler -> IO (ConnectId object))
    -> Signal object handler
    Signal (String -> Bool -> self -> (Int -> IO Bool) -> IO (ConnectId self)
    forall obj.
    GObjectClass obj =>
    String -> Bool -> obj -> (Int -> IO Bool) -> IO (ConnectId obj)
    connect_INT__BOOL String
    "size-changed")

    -- | Gets emitted when the user activates the status icon.
    -- If and how status icons can activated is platform-dependent.
    statusIconActivated :: StatusIconClass self => Signal self (IO ())
    statusIconActivated :: forall self. StatusIconClass self => Signal self (IO ())
    statusIconActivated = (Bool -> self -> IO () -> IO (ConnectId self))
    -> Signal self (IO ())
    forall object handler.
    (Bool -> object -> handler -> IO (ConnectId object))
    -> Signal object handler
    Signal (String -> Bool -> self -> IO () -> IO (ConnectId self)
    forall obj.
    GObjectClass obj =>
    String -> Bool -> obj -> IO () -> IO (ConnectId obj)
    connect_NONE__NONE String
    "activate")

    -- | Deprecated. See 'statusIconActivated'.
    statusIconActivate :: StatusIconClass self => Signal self (IO ())
    statusIconActivate :: forall self. StatusIconClass self => Signal self (IO ())
    statusIconActivate = Signal self (IO ())
    forall self. StatusIconClass self => Signal self (IO ())
    statusIconActivated

    -- | Gets emitted when the user brings up the context menu
    -- of the status icon. Whether status icons can have context
    -- menus and how these are activated is platform-dependent.
    --
    -- The 'MouseButton' and 'TimeStamp' parameters should be
    -- passed as the last to arguments to 'Graphics.UI.Gtk.menuPopup'.
    statusIconPopupMenu :: StatusIconClass self => Signal self (Maybe MouseButton -> TimeStamp -> IO ())
    statusIconPopupMenu :: forall self.
    StatusIconClass self =>
    Signal self (Maybe MouseButton -> TimeStamp -> IO ())
    statusIconPopupMenu = (Bool
     -> self
     -> (Maybe MouseButton -> TimeStamp -> IO ())
     -> IO (ConnectId self))
    -> Signal self (Maybe MouseButton -> TimeStamp -> IO ())
    forall object handler.
    (Bool -> object -> handler -> IO (ConnectId object))
    -> Signal object handler
    Signal Bool
    -> self
    -> (Maybe MouseButton -> TimeStamp -> IO ())
    -> IO (ConnectId self)
    forall {obj} {a} {t}.
    (GObjectClass obj, Enum a, Num t) =>
    Bool -> obj -> (Maybe a -> t -> IO ()) -> IO (ConnectId obj)
    wrap

    wrap :: Bool -> obj -> (Maybe a -> t -> IO ()) -> IO (ConnectId obj)
    wrap Bool
    flag obj
    self Maybe a -> t -> IO ()
    f = String
    -> Bool -> obj -> (Word -> Word -> IO ()) -> IO (ConnectId obj)
    forall obj.
    GObjectClass obj =>
    String
    -> Bool -> obj -> (Word -> Word -> IO ()) -> IO (ConnectId obj)
    connect_WORD_WORD__NONE String
    "popup_menu" Bool
    flag obj
    self (\Word
    m Word
    t -> Maybe a -> t -> IO ()
    f (Word -> Maybe a
    forall {a} {a}. (Integral a, Enum a) => a -> Maybe a
    toMB Word
    m) (Word -> t
    forall a b. (Integral a, Num b) => a -> b
    fromIntegral Word
    t))
        where toMB :: a -> Maybe a
    toMB a
    0 = Maybe a
    forall a. Maybe a
    Nothing
              toMB a
    n = a -> Maybe a
    forall a. a -> Maybe a
    Just (a -> Maybe a) -> (a -> a) -> a -> Maybe a
    forall b c a. (b -> c) -> (a -> b) -> a -> c
    . Int -> a
    forall a. Enum a => Int -> a
    toEnum (Int -> a) -> (a -> Int) -> a -> a
    forall b c a. (b -> c) -> (a -> b) -> a -> c
    . a -> Int
    forall a b. (Integral a, Num b) => a -> b
    fromIntegral (a -> Maybe a) -> a -> Maybe a
    forall a b. (a -> b) -> a -> b
    $ a
    n

    --------------------
    -- Deprecated Signals

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

    foreign import ccall safe "gtk_status_icon_new_from_pixbuf"
      gtk_status_icon_new_from_pixbuf :: ((Ptr Pixbuf) -> (IO (Ptr StatusIcon)))

    foreign import ccall safe "gtk_status_icon_new_from_file"
      gtk_status_icon_new_from_file :: ((Ptr CChar) -> (IO (Ptr StatusIcon)))

    foreign import ccall safe "gtk_status_icon_new_from_stock"
      gtk_status_icon_new_from_stock :: ((Ptr CChar) -> (IO (Ptr StatusIcon)))

    foreign import ccall safe "gtk_status_icon_new_from_icon_name"
      gtk_status_icon_new_from_icon_name :: ((Ptr CChar) -> (IO (Ptr StatusIcon)))

    foreign import ccall safe "gtk_status_icon_set_from_pixbuf"
      gtk_status_icon_set_from_pixbuf :: ((Ptr StatusIcon) -> ((Ptr Pixbuf) -> (IO ())))

    foreign import ccall safe "gtk_status_icon_set_from_file"
      gtk_status_icon_set_from_file :: ((Ptr StatusIcon) -> ((Ptr CChar) -> (IO ())))

    foreign import ccall safe "gtk_status_icon_set_from_stock"
      gtk_status_icon_set_from_stock :: ((Ptr StatusIcon) -> ((Ptr CChar) -> (IO ())))

    foreign import ccall safe "gtk_status_icon_set_from_icon_name"
      gtk_status_icon_set_from_icon_name :: ((Ptr StatusIcon) -> ((Ptr CChar) -> (IO ())))

    foreign import ccall safe "gtk_status_icon_get_storage_type"
      gtk_status_icon_get_storage_type :: ((Ptr StatusIcon) -> (IO CInt))

    foreign import ccall safe "gtk_status_icon_get_pixbuf"
      gtk_status_icon_get_pixbuf :: ((Ptr StatusIcon) -> (IO (Ptr Pixbuf)))

    foreign import ccall safe "gtk_status_icon_get_stock"
      gtk_status_icon_get_stock :: ((Ptr StatusIcon) -> (IO (Ptr CChar)))

    foreign import ccall safe "gtk_status_icon_get_icon_name"
      gtk_status_icon_get_icon_name :: ((Ptr StatusIcon) -> (IO (Ptr CChar)))

    foreign import ccall safe "gtk_status_icon_get_size"
      gtk_status_icon_get_size :: ((Ptr StatusIcon) -> (IO CInt))

    foreign import ccall safe "gtk_status_icon_set_visible"
      gtk_status_icon_set_visible :: ((Ptr StatusIcon) -> (CInt -> (IO ())))

    foreign import ccall safe "gtk_status_icon_get_visible"
      gtk_status_icon_get_visible :: ((Ptr StatusIcon) -> (IO CInt))

    foreign import ccall safe "gtk_status_icon_is_embedded"
      gtk_status_icon_is_embedded :: ((Ptr StatusIcon) -> (IO CInt))

    foreign import ccall safe "gtk_status_icon_position_menu"
      gtk_status_icon_position_menu :: ((Ptr Menu) -> ((Ptr CInt) -> ((Ptr CInt) -> ((Ptr CInt) -> ((Ptr ()) -> (IO ()))))))

    foreign import ccall safe "gtk_status_icon_get_geometry"
      gtk_status_icon_get_geometry :: ((Ptr StatusIcon) -> ((Ptr Screen) -> ((Ptr ()) -> ((Ptr CInt) -> (IO CInt)))))

    foreign import ccall safe "gtk_status_icon_set_screen"
      gtk_status_icon_set_screen :: ((Ptr StatusIcon) -> ((Ptr Screen) -> (IO ())))

    foreign import ccall safe "gtk_status_icon_get_screen"
      gtk_status_icon_get_screen :: ((Ptr StatusIcon) -> (IO (Ptr Screen)))

    foreign import ccall safe "gtk_status_icon_set_tooltip_text"
      gtk_status_icon_set_tooltip_text :: ((Ptr StatusIcon) -> ((Ptr CChar) -> (IO ())))

    foreign import ccall safe "gtk_status_icon_get_tooltip_text"
      gtk_status_icon_get_tooltip_text :: ((Ptr StatusIcon) -> (IO (Ptr CChar)))

    foreign import ccall safe "gtk_status_icon_set_tooltip_markup"
      gtk_status_icon_set_tooltip_markup :: ((Ptr StatusIcon) -> ((Ptr CChar) -> (IO ())))

    foreign import ccall safe "gtk_status_icon_get_tooltip_markup"
      gtk_status_icon_get_tooltip_markup :: ((Ptr StatusIcon) -> (IO (Ptr CChar)))

    foreign import ccall safe "gtk_status_icon_set_has_tooltip"
      gtk_status_icon_set_has_tooltip :: ((Ptr StatusIcon) -> (CInt -> (IO ())))

    foreign import ccall safe "gtk_status_icon_get_has_tooltip"
      gtk_status_icon_get_has_tooltip :: ((Ptr StatusIcon) -> (IO CInt))

    foreign import ccall safe "gtk_status_icon_set_title"
      gtk_status_icon_set_title :: ((Ptr StatusIcon) -> ((Ptr CChar) -> (IO ())))

    foreign import ccall safe "gtk_status_icon_get_title"
      gtk_status_icon_get_title :: ((Ptr StatusIcon) -> (IO (Ptr CChar)))

    foreign import ccall safe "gtk_status_icon_set_name"
      gtk_status_icon_set_name :: ((Ptr StatusIcon) -> ((Ptr CChar) -> (IO ())))

    foreign import ccall unsafe "gdk_pixbuf_get_type"
      gdk_pixbuf_get_type :: CULong

    foreign import ccall unsafe "gtk_image_type_get_type"
      gtk_image_type_get_type :: CULong

    foreign import ccall unsafe "gdk_screen_get_type"
      gdk_screen_get_type :: CULong