hxournal 0.6.0 → 0.6.0.0
raw patch · 8 files changed
+58/−49 lines, 8 files
Files
- hxournal.cabal +3/−2
- lib/Application/HXournal/Coroutine/Commit.hs +17/−0
- lib/Application/HXournal/Coroutine/Eraser.hs +3/−5
- lib/Application/HXournal/Coroutine/File.hs +9/−5
- lib/Application/HXournal/Coroutine/Pen.hs +3/−4
- lib/Application/HXournal/Coroutine/Select.hs +12/−22
- lib/Application/HXournal/ModelAction/Common.hs +0/−11
- lib/Application/HXournal/ModelAction/File.hs +11/−0
hxournal.cabal view
@@ -1,5 +1,5 @@ Name: hxournal-Version: 0.6.0+Version: 0.6.0.0 Synopsis: A pen notetaking program written in haskell Description: notetaking program written in haskell and gtk2hs Homepage: http://ianwookim.org/hxournal@@ -76,7 +76,7 @@ Application.HXournal.ModelAction.Select Application.HXournal.ModelAction.File Application.HXournal.ModelAction.Window- Application.HXournal.ModelAction.Common+ -- Application.HXournal.ModelAction.Common Application.HXournal.Coroutine.Callback Application.HXournal.GUI Application.HXournal.GUI.Menu@@ -93,6 +93,7 @@ Application.HXournal.Coroutine.File Application.HXournal.Coroutine.Mode Application.HXournal.Coroutine.Window+ Application.HXournal.Coroutine.Commit Application.HXournal.Util Application.HXournal.Util.Verbatim Application.HXournal.Draw
+ lib/Application/HXournal/Coroutine/Commit.hs view
@@ -0,0 +1,17 @@+module Application.HXournal.Coroutine.Commit where++import Application.HXournal.Type.XournalState +import Application.HXournal.Type.Coroutine+import Application.HXournal.Type.Event+import Application.HXournal.ModelAction.File++import Data.Label+import Control.Monad.Trans+import Application.HXournal.Accessor++commit :: HXournalState -> Iteratee MyEvent XournalStateIO ()+commit xstate = do + let ui = get gtkUIManager xstate+ liftIO $ toggleSave ui True+ let xstate' = set isSaved False xstate+ putSt xstate'
lib/Application/HXournal/Coroutine/Eraser.hs view
@@ -9,8 +9,8 @@ import Application.HXournal.Draw import Application.HXournal.Coroutine.EventConnect import Application.HXournal.Coroutine.Draw+import Application.HXournal.Coroutine.Commit import Application.HXournal.Accessor-import Application.HXournal.ModelAction.Common import Application.HXournal.ModelAction.Page import Application.HXournal.ModelAction.Eraser import Data.Xournal.Simple@@ -72,10 +72,8 @@ newpagebbox = currpage { glayers = IM.adjust (const newlayerbbox) 0 (glayers currpage) } newxojbbox = currxoj { gpages= IM.adjust (const newpagebbox) pgnum (gpages currxoj) } newxojstate = ViewAppendState newxojbbox- xstate' = commitChange- . set xournalstate newxojstate - . updatePageAll newxojstate $ xstate - putSt xstate' + commit . set xournalstate newxojstate + . updatePageAll newxojstate $ xstate case maybebbox of Just bbox -> invalidateDrawBBox cid bbox Nothing -> return ()
lib/Application/HXournal/Coroutine/File.hs view
@@ -4,10 +4,10 @@ import Application.HXournal.Type.Coroutine import Application.HXournal.Type.XournalState import Application.HXournal.Accessor-import Application.HXournal.ModelAction.Common-import Application.HXournal.ModelAction.File import Application.HXournal.Coroutine.Draw+import Application.HXournal.Coroutine.Commit import Application.HXournal.ModelAction.Window+import Application.HXournal.ModelAction.File import Text.Xournal.Builder import Control.Monad.Trans import Control.Applicative@@ -43,7 +43,7 @@ fileNew = do xstate <- getSt xstate' <- liftIO $ getFileContent Nothing xstate - putSt . commitChange $ xstate' + commit xstate' liftIO $ setTitleFromFileName xstate' invalidateAll @@ -60,6 +60,8 @@ SelectState txoj -> Xournal <$> gselectTitle <*> gToList . fmap (toPage gToBackground) . gselectAll $ txoj liftIO . L.writeFile filename . builder $ xoj putSt . set isSaved True $ xstate + let ui = get gtkUIManager xstate+ liftIO $ toggleSave ui False fileOpen :: Iteratee MyEvent XournalStateIO () fileOpen = do @@ -114,7 +116,9 @@ $ xojmap SelectState txoj -> Xournal <$> gselectTitle <*> gToList . fmap (toPage gToBackground) . gselectAll $ txoj liftIO . L.writeFile filename . builder $ xoj- putSt . set isSaved True $ xstateNew + putSt . set isSaved True $ xstateNew + let ui = get gtkUIManager xstateNew+ liftIO $ toggleSave ui False liftIO $ setTitleFromFileName xstateNew liftIO $ widgetDestroy dialog ResponseCancel -> liftIO $ widgetDestroy dialog@@ -144,7 +148,7 @@ flip (maybe (return ())) mxoj $ \xoj -> do xstateNew <- return . set currFileName Nothing =<< (liftIO $ constructNewHXournalStateFromXournal xoj xstate)- putSt . commitChange $ xstateNew + commit xstateNew liftIO $ setTitleFromFileName xstateNew invalidateAll liftIO $ widgetDestroy dialog
lib/Application/HXournal/Coroutine/Pen.hs view
@@ -9,8 +9,8 @@ import Application.HXournal.Type.XournalState import Application.HXournal.Coroutine.Draw import Application.HXournal.Coroutine.EventConnect+import Application.HXournal.Coroutine.Commit import Application.HXournal.Accessor-import Application.HXournal.ModelAction.Common import Application.HXournal.ModelAction.Pen import Application.HXournal.ModelAction.Page import Application.HXournal.Draw@@ -43,11 +43,10 @@ pdraw <-penProcess cid geometry connidmove connidup (empty |> (x,y)) (x,y) let (newxoj,bbox) = addPDraw pinfo currxoj pagenum pdraw bbox' = inflate bbox (get (penWidth.penInfo) xstate) - xstate' = commitChange- . set xournalstate (ViewAppendState newxoj) + xstate' = set xournalstate (ViewAppendState newxoj) . updatePageAll (ViewAppendState newxoj) $ xstate- putSt xstate'+ commit xstate' mapM_ (flip invalidateInBBox bbox') . filter (/=cid) $ otherCanvas xstate'
lib/Application/HXournal/Coroutine/Select.hs view
@@ -13,7 +13,7 @@ import Application.HXournal.Coroutine.EventConnect import Application.HXournal.Coroutine.Draw import Application.HXournal.Coroutine.Mode-import Application.HXournal.ModelAction.Common+import Application.HXournal.Coroutine.Commit import Application.HXournal.ModelAction.Page import Application.HXournal.ModelAction.Select import Control.Monad.Trans@@ -155,8 +155,7 @@ Right tpage -> do let newtpage = changeSelectionByOffset tpage offset newtxoj = updateTempXournalSelect txoj newtpage pagenum - putSt . commitChange- . set xournalstate (SelectState newtxoj)+ commit . set xournalstate (SelectState newtxoj) . updatePageAll (SelectState newtxoj) $ xstate Left _ -> error "this is impossible, in moveSelectRectangle" @@ -178,12 +177,10 @@ oldlayers = glayers tpage newpage = tpage { glayers = oldlayers { gselectedlayer = GLayer (TEitherAlterHitted newlayer) } } newtxoj = updateTempXournalSelect txoj newpage n - -- newxstate = xstate- newxstate = commitChange- . updatePageAll (SelectState newtxoj) + newxstate = updatePageAll (SelectState newtxoj) . set xournalstate (SelectState newtxoj) $ xstate - putSt newxstate + commit newxstate let ui = get gtkUIManager newxstate liftIO $ toggleCutCopyDelete ui False invalidateAll @@ -241,11 +238,10 @@ :- Empty ) tpage' = tpage { glayers = ls { gselectedlayer = newlayerselect } } txoj' = updateTempXournalSelect txoj tpage' pagenum - xstate' = commitChange- . updatePageAll (SelectState txoj') + xstate' = updatePageAll (SelectState txoj') . set xournalstate (SelectState txoj') $ xstate - putSt xstate' + commit xstate' let ui = get gtkUIManager xstate' liftIO $ toggleCutCopyDelete ui True invalidateAll @@ -265,12 +261,9 @@ ls = glayers tpage newpage = tpage { glayers = ls { gselectedlayer = GLayer (TEitherAlterHitted newlayer) }} newtxoj = updateTempXournalSelect txoj newpage n- -- newxstate = - newxstate = commitChange- . updatePageAll (SelectState newtxoj) - . set xournalstate (SelectState newtxoj) - $ xstate - putSt newxstate + commit . updatePageAll (SelectState newtxoj) + . set xournalstate (SelectState newtxoj) + $ xstate invalidateAll selectPenWidthChanged :: Double -> Iteratee MyEvent XournalStateIO () @@ -288,11 +281,8 @@ ls = glayers tpage newpage = tpage { glayers = ls { gselectedlayer = GLayer (TEitherAlterHitted newlayer) }} newtxoj = updateTempXournalSelect txoj newpage n - -- newxstate = xstate- newxstate = commitChange- . updatePageAll (SelectState newtxoj) - . set xournalstate (SelectState newtxoj)- $ xstate - putSt newxstate + commit . updatePageAll (SelectState newtxoj) + . set xournalstate (SelectState newtxoj)+ $ xstate invalidateAll
− lib/Application/HXournal/ModelAction/Common.hs
@@ -1,11 +0,0 @@-module Application.HXournal.ModelAction.Common where--import Application.HXournal.Type.XournalState--import Control.Category-import Data.Label -import Prelude hiding ((.),id)--commitChange :: HXournalState -> HXournalState-commitChange old = set isSaved False old -
lib/Application/HXournal/ModelAction/File.hs view
@@ -7,6 +7,7 @@ import Application.HXournal.ModelAction.Page import qualified Text.Xournal.Parse as P import qualified Data.IntMap as M+ import Control.Category import Data.Label import Prelude hiding ((.),id)@@ -18,6 +19,8 @@ import Graphics.Xournal.Render.BBoxMapPDF import Graphics.Xournal.Render.PDFBackground +import Graphics.UI.Gtk hiding (get,set)+ import qualified Data.ByteString as B import qualified Data.ByteString.Char8 as C @@ -97,3 +100,11 @@ in Page dim bkg [emptyLayer] +toggleSave :: UIManager -> Bool -> IO ()+toggleSave ui b = do + agr <- uiManagerGetActionGroups ui >>= \x -> + case x of+ [] -> error "No action group?"+ y:_ -> return y+ Just savea <- actionGroupGetAction agr "SAVEA"+ actionSetSensitive savea b