hxournal 0.6.1 → 0.6.1.0
raw patch · 22 files changed
+77/−103 lines, 22 filesdep ~xournal-render
Dependency ranges changed: xournal-render
Files
- hxournal.cabal +3/−3
- lib/Application/HXournal/Accessor.hs +1/−1
- lib/Application/HXournal/Coroutine/Commit.hs +1/−1
- lib/Application/HXournal/Coroutine/Default.hs +5/−5
- lib/Application/HXournal/Coroutine/Draw.hs +6/−27
- lib/Application/HXournal/Coroutine/Eraser.hs +2/−2
- lib/Application/HXournal/Coroutine/File.hs +2/−2
- lib/Application/HXournal/Coroutine/Mode.hs +2/−2
- lib/Application/HXournal/Coroutine/Page.hs +3/−3
- lib/Application/HXournal/Coroutine/Pen.hs +2/−3
- lib/Application/HXournal/Coroutine/Select.hs +10/−13
- lib/Application/HXournal/Draw.hs +5/−23
- lib/Application/HXournal/GUI.hs +0/−1
- lib/Application/HXournal/Job.hs +2/−2
- lib/Application/HXournal/ModelAction/File.hs +2/−2
- lib/Application/HXournal/ModelAction/Page.hs +2/−2
- lib/Application/HXournal/ModelAction/Pen.hs +12/−4
- lib/Application/HXournal/ModelAction/Select.hs +13/−3
- lib/Application/HXournal/ModelAction/Window.hs +1/−1
- lib/Application/HXournal/Type/Canvas.hs +1/−1
- lib/Application/HXournal/Type/Undo.hs +1/−1
- lib/Application/HXournal/Type/XournalState.hs +1/−1
hxournal.cabal view
@@ -1,5 +1,5 @@ Name: hxournal-Version: 0.6.1+Version: 0.6.1.0 Synopsis: A pen notetaking program written in haskell Description: notetaking program written in haskell and gtk2hs Homepage: http://ianwookim.org/hxournal@@ -50,7 +50,7 @@ transformers == 0.2.*, xournal-types == 0.2.*, xournal-parser == 0.3.*,- xournal-render == 0.4.*,+ xournal-render >= 0.4.0.0 && < 0.5, xournal-builder == 0.1.*, containers == 0.4.*, template-haskell == 2.*,@@ -72,7 +72,7 @@ transformers == 0.2.*, xournal-types == 0.2.*, xournal-parser == 0.3.*,- xournal-render == 0.4.*,+ xournal-render >= 0.4.0.0 && < 0.5, xournal-builder == 0.1.*, containers == 0.4.*, template-haskell == 2.*,
lib/Application/HXournal/Accessor.hs view
@@ -18,7 +18,7 @@ import Graphics.UI.Gtk hiding (get,set) import Data.Xournal.BBox-import Data.Xournal.Simple+ import Data.Xournal.Generic getSt :: Iteratee MyEvent XournalStateIO HXournalState
lib/Application/HXournal/Coroutine/Commit.hs view
@@ -14,7 +14,7 @@ import Control.Monad.Trans import Application.HXournal.Accessor -import Graphics.Xournal.Render.BBoxMapPDF+ commit :: HXournalState -> Iteratee MyEvent XournalStateIO () commit xstate = do
lib/Application/HXournal/Coroutine/Default.hs view
@@ -7,7 +7,7 @@ import Application.HXournal.Type.Canvas import Application.HXournal.Type.XournalState import Application.HXournal.Type.Clipboard-import Application.HXournal.Draw+ import Application.HXournal.Accessor import Application.HXournal.GUI.Menu@@ -24,8 +24,8 @@ import Application.HXournal.Coroutine.Mode import Application.HXournal.Coroutine.Window -import Application.HXournal.ModelAction.Adjustment-import Application.HXournal.ModelAction.Page++ import Application.HXournal.ModelAction.Window import Application.HXournal.Type.Window import Application.HXournal.Device@@ -39,8 +39,8 @@ import Data.Label import Prelude hiding ((.), id) import Data.IORef-import Data.Xournal.Map + import Data.Xournal.Generic guiProcess :: Iteratee MyEvent XournalStateIO () @@ -163,7 +163,7 @@ lift . St.put $ xstate' invalidate cid defaultEventProcess (VScrollBarStart cid _v) = vscrollStart cid -defaultEventProcess (CanvasConfigure cid w' h') = canvasZoomUpdate Nothing cid +defaultEventProcess (CanvasConfigure cid _w' _h') = canvasZoomUpdate Nothing cid -- xstate <- getSt -- let cinfoMap = get canvasInfoMap xstate
lib/Application/HXournal/Coroutine/Draw.hs view
@@ -7,7 +7,7 @@ import Application.HXournal.Draw import Application.HXournal.Accessor -import Data.Xournal.Simple+ import Data.Xournal.BBox import Control.Applicative @@ -58,17 +58,12 @@ $ cvsInfo ) -invalidateGen :: [CanvasId] -> Maybe BBox -> PageDrawF- -> Iteratee MyEvent XournalStateIO ()-invalidateGen cids mbbox drawf = do - forM_ cids $ \x -> invalidateSelSingle x mbbox drawf drawSelectionInBBox- invalidateAll :: Iteratee MyEvent XournalStateIO () invalidateAll = do xstate <- getSt let cinfoMap = get canvasInfoMap xstate keys = M.keys cinfoMap - invalidateGen keys Nothing drawPageInBBox+ forM_ keys invalidate invalidateOther :: Iteratee MyEvent XournalStateIO () invalidateOther = do @@ -76,15 +71,15 @@ let currCvsId = get currentCanvas xstate cinfoMap = get canvasInfoMap xstate keys = M.keys cinfoMap - invalidateGen (filter (/=currCvsId) keys) Nothing drawPageInBBox+ mapM_ invalidate (filter (/=currCvsId) keys)+ --- | invalidate everything+-- | invalidate clear invalidate :: CanvasId -> Iteratee MyEvent XournalStateIO () invalidate cid = invalidateSelSingle cid Nothing drawPageClearly drawPageSelClearly- -- drawSelectionInBBox- -- drawPageInBBox drawSelectionInBBox + -- | Drawing objects only in BBox invalidateInBBox :: CanvasId -> BBox -> Iteratee MyEvent XournalStateIO ()@@ -95,32 +90,16 @@ invalidateDrawBBox :: CanvasId -> BBox -> Iteratee MyEvent XournalStateIO () invalidateDrawBBox cid bbox = invalidateSelSingle cid (Just bbox) drawBBox drawBBoxSel --{---- | Drawing pen strokes as bbox--invalidateBBoxOnly :: CanvasId -> Iteratee MyEvent XournalStateIO () -invalidateBBoxOnly cid = invalidateBBoxOnlyInBBox cid Nothing- -- invalidateSelSingle cid Nothing drawBBoxOnly drawSelectionInBBoxOnly--invalidateBBoxOnlyInBBox :: CanvasId -> Maybe BBox -> Iteratee MyEvent XournalStateIO () -invalidateBBoxOnlyInBBox cid mbbox = invalidateSelSingle cid mbbox drawBBoxOnly drawSelectionInBBoxOnly--}- -- | Drawing using layer buffer invalidateWithBuf :: CanvasId -> Iteratee MyEvent XournalStateIO () invalidateWithBuf = invalidateWithBufInBBox Nothing - -- invalidateSelSingle cid Nothing drawBuf drawSelectionInBBox- -- drawSelectionInBBoxOnly -- drawSelBuf -- temporarily - -- | Drawing using layer buffer in BBox invalidateWithBufInBBox :: Maybe BBox -> CanvasId -> Iteratee MyEvent XournalStateIO () invalidateWithBufInBBox mbbox cid = invalidateSelSingle cid mbbox drawBuf drawSelectionInBBox - -- drawSelectionInBBoxOnly -- drawSelBuf --temporarily
lib/Application/HXournal/Coroutine/Eraser.hs view
@@ -13,9 +13,9 @@ import Application.HXournal.Accessor import Application.HXournal.ModelAction.Page import Application.HXournal.ModelAction.Eraser-import Data.Xournal.Simple+ import Data.Xournal.Generic-import Data.Xournal.Map+ import Data.Xournal.BBox import Graphics.Xournal.Render.HitTest import Graphics.Xournal.Render.BBox
lib/Application/HXournal/Coroutine/File.hs view
@@ -12,7 +12,7 @@ import Control.Monad.Trans import Control.Applicative import Data.Xournal.Generic-import Graphics.Xournal.Render.BBoxMapPDF+ import Graphics.UI.Gtk hiding (get,set) import Control.Category import Data.Label@@ -20,7 +20,7 @@ import qualified Data.ByteString.Lazy as L import Data.Xournal.Simple-import Data.Xournal.Map+ import System.Directory
lib/Application/HXournal/Coroutine/Mode.hs view
@@ -7,11 +7,11 @@ --import Data.Foldable import Data.Traversable-import Data.Xournal.Map + import Control.Monad.Trans -import Control.Applicative+ import Control.Category import Data.Label
lib/Application/HXournal/Coroutine/Page.hs view
@@ -9,13 +9,13 @@ import Application.HXournal.Coroutine.Draw import Application.HXournal.Coroutine.Commit import Application.HXournal.ModelAction.Adjustment-import Graphics.Xournal.Render.Type + import Graphics.Xournal.Render.BBoxMapPDF import Data.Xournal.Generic-import Data.Xournal.Map+ import Graphics.UI.Gtk hiding (get,set) import Application.HXournal.ModelAction.Page-import qualified Control.Monad.State as St + import Control.Monad.Trans import Control.Category import Data.Label
lib/Application/HXournal/Coroutine/Pen.hs view
@@ -15,7 +15,7 @@ import Application.HXournal.ModelAction.Page import Application.HXournal.Draw import Control.Monad.Trans-import qualified Control.Monad.State as St+ import Control.Monad.Coroutine.SuspensionFunctors import Data.Sequence hiding (filter) import qualified Data.Map as M@@ -31,7 +31,6 @@ xstate <- changeCurrentCanvasId cid let cvsInfo = getCanvasInfo cid xstate let currxoj = unView . get xournalstate $ xstate - -- page = getPage cvsInfo pagenum = get currentPageNum cvsInfo pinfo = get penInfo xstate zmode = get (zoomMode.viewInfo) cvsInfo@@ -56,7 +55,7 @@ -> Iteratee MyEvent XournalStateIO (Seq (Double,Double)) penProcess cid cpg connidmove connidup pdraw (x0,y0) = do r <- await - xstate <- lift St.get+ xstate <- getSt let cvsInfo = getCanvasInfo cid xstate case r of PenMove _cid' pcoord -> do
lib/Application/HXournal/Coroutine/Select.hs view
@@ -21,7 +21,7 @@ import Control.Category import Data.Label import Prelude hiding ((.), id)-import Data.Xournal.Simple+ import Data.Xournal.Generic import Data.Xournal.BBox import Graphics.Xournal.Render.Type@@ -94,15 +94,12 @@ prevbbox = BBox orig prev hittestbbox = mkHitTestInsideBBox bbox strs hittedstrs = concat . map unHitted . getB $ hittestbbox- -- for the time being (until double buffer)- if not (isBBoxDeltaSmallerThan 1.0 geometry zmode bbox prevbbox) then do flip invalidateWithBufInBBox cid . Just $ (inflate (fromJust (Just bbox `merge` Just prevbbox)) 5.0)- - -- invalidateBBoxOnly cid invalidateDrawBBox cid bbox- mapM_ (invalidateDrawBBox cid . strokebbox_bbox) hittedstrs+ -- for the time being + -- mapM_ (invalidateDrawBBox cid . strokebbox_bbox) hittedstrs else return () newSelectRectangle cinfo geometry zmode connidmove connidup strs orig (x,y) PenUp _cid' pcoord -> do @@ -168,7 +165,7 @@ case epage of Right tpage -> do let newtpage = changeSelectionByOffset tpage offset- newtxoj = updateTempXournalSelect txoj newtpage pagenum + newtxoj <- liftIO $ updateTempXournalSelectIO txoj newtpage pagenum commit . set xournalstate (SelectState newtxoj) . updatePageAll (SelectState newtxoj) $ xstate @@ -191,8 +188,8 @@ let newlayer = Left . concat . getA $ alist oldlayers = glayers tpage newpage = tpage { glayers = oldlayers { gselectedlayerbuf = GLayerBuf (get g_buffer slayer) (TEitherAlterHitted newlayer) } } - newtxoj = updateTempXournalSelect txoj newpage n - newxstate = updatePageAll (SelectState newtxoj) + newtxoj <- liftIO $ updateTempXournalSelectIO txoj newpage n + let newxstate = updatePageAll (SelectState newtxoj) . set xournalstate (SelectState newtxoj) $ xstate commit newxstate @@ -254,8 +251,8 @@ :- Hitted clipstrs :- Empty ) tpage' = tpage { glayers = ls { gselectedlayerbuf = newlayerselect } } - txoj' = updateTempXournalSelect txoj tpage' pagenum - xstate' = updatePageAll (SelectState txoj') + txoj' <- liftIO $ updateTempXournalSelectIO txoj tpage' pagenum + let xstate' = updatePageAll (SelectState txoj') . set xournalstate (SelectState txoj') $ xstate commit xstate' @@ -278,7 +275,7 @@ newlayer = Right alist' ls = glayers tpage newpage = tpage { glayers = ls { gselectedlayerbuf = GLayerBuf (get g_buffer slayer) (TEitherAlterHitted newlayer) }} - newtxoj = updateTempXournalSelect txoj newpage n+ newtxoj <- liftIO $ updateTempXournalSelectIO txoj newpage n commit . updatePageAll (SelectState newtxoj) . set xournalstate (SelectState newtxoj) $ xstate @@ -299,7 +296,7 @@ newlayer = Right alist' ls = get g_layers tpage newpage = tpage { glayers = ls { gselectedlayerbuf = GLayerBuf (get g_buffer slayer) (TEitherAlterHitted newlayer) }} - newtxoj = updateTempXournalSelect txoj newpage n + newtxoj <- liftIO $ updateTempXournalSelectIO txoj newpage n commit . updatePageAll (SelectState newtxoj) . set xournalstate (SelectState newtxoj) $ xstate
lib/Application/HXournal/Draw.hs view
@@ -11,10 +11,10 @@ import Data.Monoid import Data.Xournal.Simple import Data.Xournal.Generic-import Data.Xournal.Map+ import Data.Xournal.BBox import Graphics.Xournal.Render.Type-import Graphics.Xournal.Render.Simple+ import Graphics.Xournal.Render.BBox import Graphics.Xournal.Render.BBoxMapPDF import Graphics.Xournal.Render.PDFBackground@@ -23,8 +23,8 @@ import Application.HXournal.Type import Application.HXournal.Device -import qualified Data.IntMap as M + data CanvasPageGeometry = CanvasPageGeometry { screen_size :: (Double,Double) , canvas_size :: (Double,Double)@@ -59,7 +59,7 @@ (xorig, yorig) visibleViewPort :: CanvasPageGeometry -> ZoomMode -> BBox -visibleViewPort cpg@(CanvasPageGeometry (ws,hs) (w',h') (w,h) (x0,y0) (xorig,yorig)) zmode = +visibleViewPort cpg@(CanvasPageGeometry (_ws,_hs) (w',h') (_w,_h) (_x0,_y0) (xorig,yorig)) zmode = let (xend,yend) = canvasToPageCoord cpg zmode (w',h') in BBox (xorig,yorig) (xend,yend) @@ -123,24 +123,6 @@ scale s s translate (-xo) (-yo) -{--updateCanvas :: DrawingArea -> TXournalBBoxMapPDF -> Int -> ViewInfo -> IO ()-updateCanvas canvas xoj pagenum vinfo = do - let zmode = get zoomMode vinfo- origin = get viewPortOrigin vinfo- let currpage = case M.lookup pagenum (gpages xoj) of - Nothing -> error "updateCanvas"- Just p -> p - geometry <- getCanvasPageGeometry canvas currpage origin- win <- widgetGetDrawWindow canvas- let viewbbox = visibleViewPort geometry zmode- newmbbox = Just viewbbox- renderWithDrawable win $ do- transformForPageCoord geometry zmode- -- cairoRenderOption (InBBoxOption newmbbox) (InBBox currpage)- cairoRenderOption (DrawBkgPDF,DrawFull) currpage- return ()--} drawFuncGen :: (TPageBBoxMapPDFBuf -> Maybe BBox -> Render ()) -> PageDrawF drawFuncGen render canvas page vinfo mbbox = do @@ -178,7 +160,7 @@ drawPageSelClearly :: PageDrawFSel drawPageSelClearly = drawFuncSelGen rendercontent renderselect - where rendercontent tpg mbbox = do+ where rendercontent tpg _mbbox = do let pg = (gcast tpg :: TPageBBoxMapPDFBuf) cairoRenderOption (DrawBkgPDF,DrawFull) (gcast pg :: TPageBBoxMapPDF) renderselect tpg mbbox =
lib/Application/HXournal/GUI.hs view
@@ -98,7 +98,6 @@ window `on` deleteEvent $ do liftIO $ bouncecallback tref sref (Menu MenuQuit) return True- -- mainQuit widgetShowAll window -- initialized
lib/Application/HXournal/Job.hs view
@@ -4,8 +4,8 @@ import Application.HXournal.GUI -- import Application.HXournal.Builder-import qualified Data.ByteString.Lazy as L-import Text.Xournal.Parse++ startJob :: Maybe FilePath -> IO () startJob mfname = do
lib/Application/HXournal/ModelAction/File.hs view
@@ -55,10 +55,10 @@ return (set canvasInfoMap cmap' xstate') constructNewHXournalStateFromXournal :: Xournal -> HXournalState -> IO HXournalState -constructNewHXournalStateFromXournal xoj xstate = do +constructNewHXournalStateFromXournal xoj' xstate = do let currcid = get currentCanvas xstate cmap = get canvasInfoMap xstate - xoj <- mkTXournalBBoxMapPDFBufFromNoBuf <=< mkTXournalBBoxMapPDF $ xoj+ xoj <- mkTXournalBBoxMapPDFBufFromNoBuf <=< mkTXournalBBoxMapPDF $ xoj' let Dim width height = case M.lookup 0 (gpages xoj) of Nothing -> error "no first page in getFileContent" Just p -> gdimension p
lib/Application/HXournal/ModelAction/Page.hs view
@@ -3,9 +3,9 @@ import Application.HXournal.Type.XournalState import Application.HXournal.Type.Canvas import Data.Xournal.Simple-import Data.Xournal.Map+ import Data.Xournal.Generic-import Graphics.Xournal.Render.Generic+ import Graphics.Xournal.Render.BBoxMapPDF import Control.Category
lib/Application/HXournal/ModelAction/Pen.hs view
@@ -17,12 +17,12 @@ import Data.Xournal.Simple import Data.Xournal.Generic import Data.Xournal.BBox-import Graphics.Xournal.Render.Generic + import Graphics.Xournal.Render.BBoxMapPDF-import Graphics.Xournal.Render.Simple-import Data.Xournal.Map ++ addPDraw :: PenInfo -> TXournalBBoxMapPDFBuf -> Int -> Seq (Double,Double) -> IO (TXournalBBoxMapPDFBuf,BBox) addPDraw pinfo xoj pgnum pdraw = do @@ -47,6 +47,14 @@ let newpagebbox = set g_layers (IM.adjust (const newlayerbbox) 0 (get g_layers currpage)) currpage newxojbbox = set g_pages (IM.adjust (const newpagebbox) pgnum (get g_pages xoj) ) xoj - return (newxojbbox,strokebbox_bbox newstrokebbox)+ return (newxojbbox,bbox) -- strokebbox_bbox newstrokebbox)++++++++
lib/Application/HXournal/ModelAction/Select.hs view
@@ -4,7 +4,7 @@ import Application.HXournal.Type.Canvas import Application.HXournal.Draw -import Data.Xournal.Simple+ import Data.Xournal.Generic import Data.Xournal.BBox import Graphics.Xournal.Render.Type@@ -70,8 +70,18 @@ . set g_selectSelected (Just (pagenum,tpage)) $ txoj -- +updateTempXournalSelectIO :: TTempXournalSelectPDFBuf+ -> TTempPageSelectPDFBuf+ -> Int+ -> IO TTempXournalSelectPDFBuf+updateTempXournalSelectIO txoj tpage pagenum = do + let pgs = gselectAll txoj + newpage <- resetPageBuffers (gcast tpage)+ let pgs' = M.adjust (const newpage) pagenum pgs+ return $ set g_selectAll pgs' + . set g_selectSelected (Just (pagenum,tpage))+ $ txoj + hitInSelection :: TTempPageSelectPDFBuf -> (Double,Double) -> Bool hitInSelection tpage point =
lib/Application/HXournal/ModelAction/Window.hs view
@@ -47,7 +47,7 @@ liftIO (callback (PenDown cid p)) canvas `on` configureEvent $ tryEvent $ do (w,h) <- eventSize - liftIO $ callback -- bouncecallback tref sref + liftIO $ callback (CanvasConfigure cid (fromIntegral w) (fromIntegral h)) canvas `on` buttonReleaseEvent $ tryEvent $ do p <- getPointer dev
lib/Application/HXournal/Type/Canvas.hs view
@@ -8,7 +8,7 @@ import Data.Label import Prelude hiding ((.), id) import Graphics.Xournal.Render.BBoxMapPDF-import Data.Xournal.Map+ import Graphics.UI.Gtk hiding (get,set) type CanvasId = Int
lib/Application/HXournal/Type/Undo.hs view
@@ -1,7 +1,7 @@ module Application.HXournal.Type.Undo where import Data.Sequence-import Control.Monad+ type SeqZipper a = (a, (Seq a,Seq a))
lib/Application/HXournal/Type/XournalState.hs view
@@ -15,7 +15,7 @@ import Control.Category import Control.Monad.State-import Data.Xournal.Simple+ import Data.Xournal.Predefined import Graphics.UI.Gtk hiding (Clipboard) import Data.Maybe