packages feed

hxournal-0.5: lib/Application/HXournal/Coroutine/Mode.hs

module Application.HXournal.Coroutine.Mode where

import Application.HXournal.Type.Event
import Application.HXournal.Type.Coroutine
import Application.HXournal.Type.XournalState
import Application.HXournal.Accessor

import Graphics.Xournal.Type.Map
import Graphics.Xournal.Type.Select

import Control.Monad.Trans

import Control.Applicative
import Control.Category
import Data.Label
import Prelude hiding ((.),id)

modeChange :: MyEvent -> Iteratee MyEvent XournalStateIO ()
modeChange ToViewAppendMode = do 
  xstate <- getSt
  let xojstate = get xournalstate xstate
  case xojstate of 
    ViewAppendState _ -> return () 
    SelectState txoj -> do 
      liftIO $ putStrLn "to view append mode"
      putSt 
        . set xournalstate (ViewAppendState (XournalBBoxMap <$> tx_pages $ txoj))
        $ xstate  
modeChange ToSelectMode = do 
  xstate <- getSt
  let xojstate = get xournalstate xstate
  case xojstate of 
    ViewAppendState xoj -> do 
      liftIO $ putStrLn "to select mode"
      putSt
        . set xournalstate (SelectState (tempXournalSelectFromXournalBBoxMap xoj))
        $ xstate  
    SelectState _ -> return ()
modeChange _ = return ()