manatee-pdfviewer 0.0.2 → 0.0.3
raw patch · 5 files changed
+72/−31 lines, 5 filesdep ~manatee-coresetup-changed
Dependency ranges changed: manatee-core
Files
- Main.hs +2/−1
- Manatee/Extension/PdfViewer/PdfBuffer.hs +2/−2
- Manatee/Extension/PdfViewer/PdfView.hs +39/−26
- Setup.hs +18/−0
- manatee-pdfviewer.cabal +11/−2
Main.hs view
@@ -28,4 +28,5 @@ -- | Irc client render process. main :: IO () main = - startupRender (\ pagePath client pageId -> PageBufferWrap <$> pdfBufferNew pagePath client pageId)+ startupRender (\ pagePath options client pageId -> + PageBufferWrap <$> pdfBufferNew pagePath options client pageId)
Manatee/Extension/PdfViewer/PdfBuffer.hs view
@@ -44,8 +44,8 @@ deriving Typeable -- | New pdf viewer buffer.-pdfBufferNew :: String -> Client -> PageId -> IO PdfBuffer-pdfBufferNew path client pageId = do+pdfBufferNew :: String -> [String] -> Client -> PageId -> IO PdfBuffer+pdfBufferNew path _ client pageId = do -- Get document. document <- liftM (fromMaybe (error $ "pdfBufferNew: error when open file " ++ filepath)) (documentNewFromFile ("file://" ++ filepath) Nothing)
Manatee/Extension/PdfViewer/PdfView.hs view
@@ -84,21 +84,20 @@ let viewer = PdfView pId scrolledWindow view buffer pageIndex scale -- Redraw signal.- view `on` exposeEvent $ tryEvent $ pdfViewDraw viewer+ view `on` exposeEvent $ tryEvent $ pdfViewHandleExpose viewer return viewer --- | Draw for viewer.-pdfViewDraw :: PdfView -> EventM EExpose ()-pdfViewDraw view@(PdfView {pdfViewBuffer = buffer- ,pdfViewScale = viewScale- ,pdfViewPageIndex = pageIndex- }) = do+-- | Handle expose signal.+pdfViewHandleExpose :: PdfView -> EventM EExpose ()+pdfViewHandleExpose view@(PdfView {pdfViewBuffer = buffer+ ,pdfViewScale = viewScale+ }) = do (winWidth, _) <- eventWindowSize liftIO $ do let (pageWidth, pageHeight) = pdfBufferPageSize buffer- doc = pdfBufferDocument buffer area = pdfViewView view+ -- Init scale and size request. readTVarIO viewScale >>= \ value -> -- Update scale value and area size request when haven't set.@@ -112,26 +111,40 @@ (truncate winWidth) (truncate (scaleValue * pageHeight * i2d (pdfBufferNPages buffer))) - -- Get render index range and scale value.- (indexRange, currentIndex) <- pdfViewGetIndexRange view- scaleValue <- readTVarIO viewScale+ -- Draw.+ pdfViewDraw view - -- Update page information.- writeTVarIO pageIndex currentIndex- pageViewUpdateInfoStatus - view - "Page" - ("Page (" ++ show (currentIndex + 1) ++ "/" ++ show (pdfBufferNPages buffer) ++ ")")+-- | Draw for viewer.+pdfViewDraw :: PdfView -> IO ()+pdfViewDraw view@(PdfView {pdfViewBuffer = buffer+ ,pdfViewScale = viewScale+ ,pdfViewPageIndex = pageIndex+ }) = do+ -- Init.+ let (_, pageHeight) = pdfBufferPageSize buffer+ doc = pdfBufferDocument buffer+ area = pdfViewView view - -- Render page.- forM_ indexRange $ \ index -> do- page <- documentGetPage doc index- drawWindow <- widgetGetDrawWindow area- renderWithDrawable drawWindow $ do- setSourceRGB 1.0 1.0 1.0- translate 0 (scaleValue * pageHeight * i2d index)- scale scaleValue scaleValue- pageRender page+ -- Get render index range and scale value.+ (indexRange, currentIndex) <- pdfViewGetIndexRange view+ scaleValue <- readTVarIO viewScale++ -- Update page information.+ writeTVarIO pageIndex currentIndex+ pageViewUpdateInfoStatus + view + "Page" + ("Page (" ++ show (currentIndex + 1) ++ "/" ++ show (pdfBufferNPages buffer) ++ ")")++ -- Render page.+ forM_ indexRange $ \ index -> do+ page <- documentGetPage doc index+ drawWindow <- widgetGetDrawWindow area+ renderWithDrawable drawWindow $ do+ setSourceRGB 1.0 1.0 1.0+ translate 0 (scaleValue * pageHeight * i2d index)+ scale scaleValue scaleValue+ pageRender page -- | Handle key action. pdfViewHandleKeyAction :: PdfView -> Text -> SerializedEvent -> IO ()
Setup.hs view
@@ -1,3 +1,21 @@+-- Author: Andy Stewart <lazycat.manatee@gmail.com>+-- Maintainer: Andy Stewart <lazycat.manatee@gmail.com>+-- +-- Copyright (C) 2010 Andy Stewart, all rights reserved.+-- +-- This program is free software: you can redistribute it and/or modify+-- it under the terms of the GNU General Public License as published by+-- the Free Software Foundation, either version 3 of the License, or+-- any later version.+-- +-- This program is distributed in the hope that it will be useful,+-- but WITHOUT ANY WARRANTY; without even the implied warranty of+-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the+-- GNU General Public License for more details.+-- +-- You should have received a copy of the GNU General Public License+-- along with this program. If not, see <http://www.gnu.org/licenses/>.+ import Distribution.Simple import Manatee.Core.Config import Manatee.Core.Types
manatee-pdfviewer.cabal view
@@ -1,5 +1,5 @@ name: manatee-pdfviewer-version: 0.0.2+version: 0.0.3 Cabal-Version: >= 1.6 license: GPL-3 license-file: LICENSE@@ -14,6 +14,15 @@ > sudo aptitude install poppler-data -y . And replace Chinese font string in file `/etc/fonts/conf.d/49-sansserif.conf'+ .+ Manual look <http://haskell.org/haskellwiki/Manatee>+ .+ Screenshot at <http://goo.gl/MkVw>+ .+ IRC channel: + .+ irc.freenode.net 6667 <##manatee>+ . author: Andy Stewart maintainer: Andy Stewart <lazycat.manatee@gmail.com> stability: provisional@@ -27,7 +36,7 @@ location: http://patch-tag.com/r/AndyStewart/manatee-pdfviewer Library- build-depends: base >= 4 && < 5, manatee-core >= 0.0.2, dbus-client >= 0.3 && < 0.4, stm >= 2.1.2.0,+ build-depends: base >= 4 && < 5, manatee-core >= 0.0.3, dbus-client >= 0.3 && < 0.4, stm >= 2.1.2.0, containers >= 0.3.0.0, gtk-serialized-event >= 0.12.0, poppler >= 0.12.1, gtk >= 0.12.0, cairo >= 0.12.0, text >= 0.7.1.0, mtl >= 1.1.0.2, utf8-string exposed-modules: