packages feed

hxournal-0.5: lib/Application/HXournal/Type/XournalState.hs

{-# LANGUAGE OverloadedStrings, TemplateHaskell #-}

module Application.HXournal.Type.XournalState where

import Application.HXournal.Device
import Application.HXournal.Type.Event 
import Application.HXournal.Type.Enum
import Application.HXournal.Type.Canvas
import Application.HXournal.Type.Clipboard
import Application.HXournal.Type.Window 
import Graphics.Xournal.Type.Select
import Graphics.Xournal.Type.Map
import Control.Monad.State
import Text.Xournal.Type
import Text.Xournal.Predefined 
import Graphics.UI.Gtk hiding (Clipboard)
import Data.Maybe
import Data.Label 
import Prelude hiding ((.), id)

type XournalStateIO = StateT HXournalState IO 

data XournalState = ViewAppendState { unView :: XournalBBoxMap }
                  | SelectState { tempSelect :: TempXournalSelect }

data HXournalState = HXournalState { _xournalstate :: XournalState
                                   , _currFileName :: Maybe FilePath
                                   , _canvasInfoMap :: CanvasInfoMap 
                                   , _currentCanvas :: Int
                                   , _frameState :: WindowConfig 
                                   , _rootWindow :: Widget
                                   , _rootContainer :: Box
                                   , _rootOfRootWindow :: Window
                                   , _currentPenDraw :: PenDraw
                                   , _clipboard :: Clipboard
                                   , _callBack ::  MyEvent -> IO ()
                                   , _deviceList :: DeviceList
                                   , _penInfo :: PenInfo
                                   , _selectInfo :: SelectInfo 
                                   , _gtkUIManager :: UIManager 
                                   } 


$(mkLabels [''HXournalState]) 

emptyHXournalState :: HXournalState 
emptyHXournalState = 
  HXournalState  
  { _xournalstate = ViewAppendState (mkXournalBBoxMapFromXournal emptyXournal)
  , _currFileName = Nothing 
  , _canvasInfoMap = error "emptyHXournalState.canvasInfoMap"
  , _currentCanvas = error "emtpyHxournalState.currentCanvas"
  , _frameState = error "emptyHXournalState.frameState" 
  , _rootWindow = error "emtpyHXournalState.rootWindow"
  , _rootContainer = error "emptyHXournalState.rootContainer"
  , _rootOfRootWindow = error "emptyHXournalState.rootOfRootWindow"
  , _currentPenDraw = emptyPenDraw 
  , _clipboard = emptyClipboard
  , _callBack = error "emtpyHxournalState.callBack"
  , _deviceList = error "emtpyHxournalState.deviceList"
  , _penInfo = PenInfo PenWork predefined_medium ColorBlack
  , _selectInfo = SelectInfo SelectRectangleWork 
  , _gtkUIManager = error "emptyHXournalState.gtkUIManager"
  }