module Graphics.UI.AppIndicator (
AppIndicator,
AppIndicatorClass,
toAppIndicator,
AppIndicatorCategory (..),
AppIndicatorStatus (..),
appIndicatorNew,
appIndicatorNewWithPath,
appIndicatorBuildMenuFromDesktop,
appIndicatorGetMenu,
appIndicatorSetMenu,
appIndicatorGetStatus,
appIndicatorSetStatus,
appIndicatorGetCategory,
appIndicatorAttentionIconDesc,
appIndicatorAttentionIconName,
appIndicatorCategory,
appIndicatorConnected,
appIndicatorIconDesc,
appIndicatorIconName,
appIndicatorIconThemePath,
appIndicatorId,
appIndicatorLabel,
appIndicatorLabelGuide,
appIndicatorOrderingIndex,
appIndicatorStatus,
appIndicatorNewIcon,
appIndicatorNewAttentionIcon,
appIndicatorNewStatus,
appIndicatorNewLabel,
appIndicatorConnectionChanged,
appIndicatorNewIconThemePath,
appIndicatorScrollEvent,
) where
import Control.Monad (liftM)
import Graphics.UI.Gtk (Signal (..))
import Graphics.UI.Gtk.Abstract.Object (makeNewObject)
import Graphics.UI.GtkInternals (Menu, MenuClass, mkMenu,
toMenu, unMenu)
import System.Glib.Attributes (Attr, ReadAttr)
import System.Glib.FFI (CString, CULong (..), Ptr,
withForeignPtr)
import System.Glib.Properties (newAttrFromMaybeStringProperty,
newAttrFromUIntProperty,
readAttrFromBoolProperty)
import System.Glib.UTFString (GlibString, withUTFString)
import Graphics.UI.AppIndicator.Signals
import Graphics.UI.AppIndicator.Types
data AppIndicatorCategory
= AppIndicatorCategoryApplicationStatus
| AppIndicatorCategoryCommunications
| AppIndicatorCategorySystemServices
| AppIndicatorCategoryHardware
| AppIndicatorCategoryOther
deriving (Bounded, Enum, Eq, Show)
data AppIndicatorStatus
= AppIndicatorStatusPassive
| AppIndicatorStatusActive
| AppIndicatorStatusAttention
deriving (Bounded, Enum, Eq, Show)
appIndicatorNew :: (GlibString id', GlibString iconName)
=> id' -> iconName -> AppIndicatorCategory -> IO AppIndicator
appIndicatorNew id' iconName cat =
makeNewObject mkAppIndicator $
withUTFString id' $ \idPtr ->
withUTFString iconName $ \iconNamePtr ->
app_indicator_new
idPtr iconNamePtr (fromIntegral $ fromEnum cat)
foreign import ccall safe "app_indicator_new"
app_indicator_new :: CString -> CString -> CULong -> IO (Ptr AppIndicator)
appIndicatorNewWithPath :: (GlibString id', GlibString iconName,
GlibString iconThemePath)
=> id' -> iconName -> AppIndicatorCategory ->
iconThemePath -> IO AppIndicator
appIndicatorNewWithPath id' iconName cat iconThemePath =
makeNewObject mkAppIndicator $
withUTFString id' $ \idPtr ->
withUTFString iconName $ \iconNamePtr ->
withUTFString iconThemePath $ \iconThemePathPtr ->
app_indicator_new_with_path
idPtr iconNamePtr (fromIntegral $ fromEnum cat) iconThemePathPtr
foreign import ccall safe "app_indicator_new_with_path"
app_indicator_new_with_path :: CString -> CString -> CULong -> CString -> IO (Ptr AppIndicator)
appIndicatorBuildMenuFromDesktop :: (AppIndicatorClass self,
GlibString desktopFile,
GlibString desktopProfile)
=> self -> desktopFile -> desktopProfile -> IO ()
appIndicatorBuildMenuFromDesktop self desktopFile desktopProfile =
withForeignPtr (unAppIndicator $ toAppIndicator self) $ \selfPtr ->
withUTFString desktopFile $ \desktopFilePtr ->
withUTFString desktopProfile $ \desktopProfilePtr ->
app_indicator_build_menu_from_desktop
selfPtr desktopFilePtr desktopProfilePtr
foreign import ccall safe "app_indicator_build_menu_from_desktop"
app_indicator_build_menu_from_desktop :: Ptr AppIndicator -> CString -> CString -> IO ()
appIndicatorGetMenu :: AppIndicatorClass self => self -> IO Menu
appIndicatorGetMenu self =
makeNewObject mkMenu $
withForeignPtr (unAppIndicator $ toAppIndicator self) $ \selfPtr ->
app_indicator_get_menu selfPtr
foreign import ccall safe "app_indicator_get_menu"
app_indicator_get_menu :: Ptr AppIndicator -> IO (Ptr Menu)
appIndicatorSetMenu :: (AppIndicatorClass self, MenuClass menu) => self -> menu -> IO ()
appIndicatorSetMenu self menu =
withForeignPtr (unAppIndicator $ toAppIndicator self) $ \selfPtr ->
withForeignPtr (unMenu $ toMenu menu) $ \menuPtr ->
app_indicator_set_menu selfPtr menuPtr
foreign import ccall safe "app_indicator_set_menu"
app_indicator_set_menu :: Ptr AppIndicator -> Ptr Menu -> IO ()
appIndicatorGetStatus :: AppIndicatorClass self => self -> IO AppIndicatorStatus
appIndicatorGetStatus self =
liftM (toEnum . fromIntegral) $
withForeignPtr (unAppIndicator $ toAppIndicator self) $ \selfPtr ->
app_indicator_get_status selfPtr
foreign import ccall safe "app_indicator_get_status"
app_indicator_get_status :: Ptr AppIndicator -> IO CULong
appIndicatorSetStatus :: AppIndicatorClass self => self -> AppIndicatorStatus -> IO ()
appIndicatorSetStatus self stat =
withForeignPtr (unAppIndicator $ toAppIndicator self) $ \selfPtr ->
app_indicator_set_status selfPtr (fromIntegral $ fromEnum stat)
foreign import ccall safe "app_indicator_set_status"
app_indicator_set_status :: Ptr AppIndicator -> CULong -> IO ()
appIndicatorGetCategory :: AppIndicatorClass self => self -> IO AppIndicatorCategory
appIndicatorGetCategory self =
liftM (toEnum . fromIntegral) $
withForeignPtr (unAppIndicator $ toAppIndicator self) $ \selfPtr ->
app_indicator_get_category selfPtr
foreign import ccall safe "app_indicator_get_category"
app_indicator_get_category :: Ptr AppIndicator -> IO CULong
appIndicatorAttentionIconDesc :: (AppIndicatorClass self, GlibString str) => Attr self (Maybe str)
appIndicatorAttentionIconDesc = newAttrFromMaybeStringProperty "attention-icon-desc"
appIndicatorAttentionIconName :: (AppIndicatorClass self, GlibString str) => Attr self (Maybe str)
appIndicatorAttentionIconName = newAttrFromMaybeStringProperty "attention-icon-name"
appIndicatorCategory :: (AppIndicatorClass self, GlibString str) => Attr self (Maybe str)
appIndicatorCategory = newAttrFromMaybeStringProperty "category"
appIndicatorConnected :: AppIndicatorClass self => ReadAttr self Bool
appIndicatorConnected = readAttrFromBoolProperty "connected"
appIndicatorIconDesc :: (AppIndicatorClass self, GlibString str) => Attr self (Maybe str)
appIndicatorIconDesc = newAttrFromMaybeStringProperty "icon-desc"
appIndicatorIconName :: (AppIndicatorClass self, GlibString str) => Attr self (Maybe str)
appIndicatorIconName = newAttrFromMaybeStringProperty "icon-name"
appIndicatorIconThemePath :: (AppIndicatorClass self, GlibString str) => Attr self (Maybe str)
appIndicatorIconThemePath = newAttrFromMaybeStringProperty "icon-theme-path"
appIndicatorId :: (AppIndicatorClass self, GlibString str) => Attr self (Maybe str)
appIndicatorId = newAttrFromMaybeStringProperty "id"
appIndicatorLabel :: (AppIndicatorClass self, GlibString str) => Attr self (Maybe str)
appIndicatorLabel = newAttrFromMaybeStringProperty "label"
appIndicatorLabelGuide :: (AppIndicatorClass self, GlibString str) => Attr self (Maybe str)
appIndicatorLabelGuide = newAttrFromMaybeStringProperty "label-guide"
appIndicatorOrderingIndex :: AppIndicatorClass self => Attr self Int
appIndicatorOrderingIndex = newAttrFromUIntProperty "ordering-index"
appIndicatorStatus :: (AppIndicatorClass self, GlibString str) => Attr self (Maybe str)
appIndicatorStatus = newAttrFromMaybeStringProperty "status"
appIndicatorNewIcon :: AppIndicatorClass self => Signal self (IO ())
appIndicatorNewIcon = Signal (connect_NONE__NONE "new-icon")
appIndicatorNewAttentionIcon :: AppIndicatorClass self => Signal self (IO ())
appIndicatorNewAttentionIcon = Signal (connect_NONE__NONE "new-attention-icon")
appIndicatorNewStatus :: (AppIndicatorClass self, GlibString str) => Signal self (str -> IO ())
appIndicatorNewStatus = Signal (connect_GLIBSTRING__NONE "new-status")
appIndicatorNewLabel :: (AppIndicatorClass self, GlibString label, GlibString guide)
=> Signal self (label -> guide -> IO ())
appIndicatorNewLabel = Signal (connect_GLIBSTRING_GLIBSTRING__NONE "new-label")
appIndicatorConnectionChanged :: AppIndicatorClass self => Signal self (Bool -> IO ())
appIndicatorConnectionChanged = Signal (connect_BOOL__NONE "connection-changed")
appIndicatorNewIconThemePath :: (AppIndicatorClass self, GlibString str) => Signal self (str -> IO ())
appIndicatorNewIconThemePath = Signal (connect_GLIBSTRING__NONE "new-icon-theme-path")
appIndicatorScrollEvent :: AppIndicatorClass self => Signal self (Int -> Int -> IO ())
appIndicatorScrollEvent = Signal (connect_INT_INT__NONE "scroll-event")