packages feed

hxournal-0.6.6: lib/Application/HXournal/Script/Coroutine.hs

-----------------------------------------------------------------------------
-- |
-- Module      : Application.HXournal.Script.Coroutine
-- Copyright   : (c) 2012 Ian-Woo Kim
--
-- License     : BSD3
-- Maintainer  : Ian-Woo Kim <ianwookim@gmail.com>
-- Stability   : experimental
-- Portability : GHC
--
-----------------------------------------------------------------------------

module Application.HXournal.Script.Coroutine where

import Application.HXournal.Type.XournalState
import qualified Application.HXournal.Script.Hook as H
import Application.HXournal.Type.Coroutine
import Application.HXournal.Accessor

import Control.Category 
import Control.Monad.Trans
import Data.Label
import Data.Xournal.Simple

import Prelude hiding ((.),id)

-- |

afterSaveHook :: Xournal -> MainCoroutine ()
afterSaveHook xoj = do 
  xstate <- getSt 
  let aftersavehk = do         
        hset <- get hookSet xstate 
        H.afterSaveHook hset
  maybe (return ()) (\f -> liftIO (f xoj)) aftersavehk      

-- | 
  
saveAsHook :: Xournal -> MainCoroutine ()
saveAsHook xoj = do 
  xstate <- getSt 
  let saveashk = do         
        hset <- get hookSet xstate 
        H.saveAsHook hset
  maybe (return ()) (\f -> liftIO (f xoj)) saveashk