{-# LANGUAGE MultiParamTypeClasses #-} -- | Publishes the main elements of a status icon -- -- Copyright : (C) Keera Studios Ltd, 2013 -- License : BSD3 -- Maintainer : support@keera.co.uk module Graphics.UI.Gtk.Reactive.StatusIcon where import Control.Monad import Control.Monad.Trans(liftIO) import Data.ReactiveValue import Graphics.UI.Gtk statusIconActivateField :: StatusIcon -> ReactiveFieldActivatable IO statusIconActivateField m = mkActivatable op where op f = void (m `on` statusIconActivate $ liftIO f) instance ReactiveValueActivatable IO StatusIcon where defaultActivation = statusIconActivateField statusIconVisibleReactive :: StatusIcon -> ReactiveFieldReadWrite IO Bool statusIconVisibleReactive icon = ReactiveFieldReadWrite setter getter notifier where getter = statusIconGetVisible icon setter v = postGUIAsync $ do p <- getter when (p /= v) $ statusIconSetVisible icon v notifier _ = return ()