hbro-1.2.0.0: library/Hbro/Signals.hs
{-# LANGUAGE TemplateHaskell #-}
module Hbro.Signals (
-- * Signals
Signals
, _ipcSignals
, _promptSignals
, _webViewSignals
, initialize
, attachGuiSignals
) where
-- {{{ Imports
-- import Hbro.Error
import Hbro.Gui hiding(initialize)
import Hbro.Gui.PromptBar (entryL)
import qualified Hbro.IPC.Signals as IPC
import qualified Hbro.Gui.PromptBar.Signals as Prompt
import Hbro.Prelude
import qualified Hbro.WebView.Signals as WebView
import Control.Lens hiding((??))
-- }}}
-- {{{ Signals
data Signals = Signals {
__ipcSignals :: IPC.Signals,
__promptSignals :: Prompt.Signals,
__webViewSignals :: WebView.Signals }
makeLenses ''Signals
initialize :: (BaseIO m) => m Signals
initialize = Signals <$> IPC.initSignals
<*> Prompt.initSignals
<*> WebView.initSignals
attachGuiSignals :: (BaseIO m) => GUI -> Signals -> m ()
attachGuiSignals gui signals = do
WebView.attach (gui^.webViewL) (signals^._webViewSignals)
Prompt.attach (gui^.promptBarL.entryL) (signals^._promptSignals)
-- }}}