pango 0.11.2 → 0.12.0
raw patch · 8 files changed
+67/−44 lines, 8 filesdep ~cairodep ~glibsetup-changed
Dependency ranges changed: cairo, glib
Files
- Graphics/Rendering/Pango/Cairo.chs +4/−4
- Graphics/Rendering/Pango/Enums.chs +1/−1
- Graphics/Rendering/Pango/Layout.chs +4/−4
- Graphics/Rendering/Pango/Markup.chs +0/−3
- Gtk2HsSetup.hs +44/−19
- Setup.hs +4/−2
- demo/Layout.hs +3/−4
- pango.cabal +7/−7
Graphics/Rendering/Pango/Cairo.chs view
@@ -56,7 +56,7 @@ import Control.Exception (bracket) import System.Glib.FFI-import System.Glib.GObject (constructNewGObject, makeNewGObject,+import System.Glib.GObject (wrapNewGObject, makeNewGObject, objectRef, objectUnref) {#import Graphics.Rendering.Pango.Types#} {#import Graphics.Rendering.Pango.BasicTypes#}@@ -128,12 +128,12 @@ -- has a scaling factor of 96 dpi. See 'cairoFontMapGetDefault'. -- cairoCreateContext :: Maybe FontMap -> IO PangoContext-cairoCreateContext (Just (FontMap fm)) = constructNewGObject mkPangoContext $+cairoCreateContext (Just (FontMap fm)) = wrapNewGObject mkPangoContext $ withForeignPtr fm $ \fmPtr -> -- PangoCairoFontMap /= PangoFontMap {#call unsafe pango_cairo_font_map_create_context#} (castPtr fmPtr) cairoCreateContext Nothing = do fmPtr <- {#call unsafe pango_cairo_font_map_get_default#}- constructNewGObject mkPangoContext $+ wrapNewGObject mkPangoContext $ {#call unsafe pango_cairo_font_map_create_context#} (castPtr fmPtr) -- | Set the scaling factor of the 'PangoContext'.@@ -201,7 +201,7 @@ createLayout text = Render $ do cr <- ask liftIO $ do- layRaw <- constructNewGObject mkPangoLayoutRaw $+ layRaw <- wrapNewGObject mkPangoLayoutRaw $ {#call unsafe pango_cairo_create_layout#} cr textRef <- newIORef undefined let pl = (PangoLayout textRef layRaw)
Graphics/Rendering/Pango/Enums.chs view
@@ -138,7 +138,7 @@ -- is typically negative. underlinePosition :: Double, -- | The suggested thickness to draw for the strikethrough.- strikethroughThickenss :: Double,+ strikethroughThickness :: Double, -- | The suggested position to draw the strikethrough. The value -- returned is the distance above the baseline of the top of the -- strikethrough.
Graphics/Rendering/Pango/Layout.chs view
@@ -126,7 +126,7 @@ import System.Glib.FFI import System.Glib.UTFString import System.Glib.GList (readGSList)-import System.Glib.GObject (constructNewGObject, makeNewGObject)+import System.Glib.GObject (wrapNewGObject, makeNewGObject) import Graphics.Rendering.Pango.Structs {#import Graphics.Rendering.Pango.BasicTypes#} import Graphics.Rendering.Pango.Types@@ -152,7 +152,7 @@ -- layoutEmpty :: PangoContext -> IO PangoLayout layoutEmpty pc = do- pl <- constructNewGObject mkPangoLayoutRaw+ pl <- wrapNewGObject mkPangoLayoutRaw ({#call unsafe layout_new#} (toPangoContext pc)) ps <- makeNewPangoString "" psRef <- newIORef ps@@ -162,7 +162,7 @@ -- layoutText :: PangoContext -> String -> IO PangoLayout layoutText pc txt = do- pl <- constructNewGObject mkPangoLayoutRaw+ pl <- wrapNewGObject mkPangoLayoutRaw ({#call unsafe layout_new#} (toPangoContext pc)) withUTFStringLen txt $ \(strPtr,len) -> {#call unsafe layout_set_text#} pl strPtr (fromIntegral len)@@ -174,7 +174,7 @@ -- layoutCopy :: PangoLayout -> IO PangoLayout layoutCopy (PangoLayout uc pl) = do- pl <- constructNewGObject mkPangoLayoutRaw+ pl <- wrapNewGObject mkPangoLayoutRaw ({#call unsafe layout_copy#} pl) return (PangoLayout uc pl)
Graphics/Rendering/Pango/Markup.chs view
@@ -53,9 +53,6 @@ -- -- [@u@] Underline ----- The full markup language can be found at--- <http://library.gnome.org/devel/pango/stable/PangoMarkupFormat.html>.--- module Graphics.Rendering.Pango.Markup ( Pango.Markup, SpanAttribute(..),
Gtk2HsSetup.hs view
@@ -23,16 +23,24 @@ CABAL_VERSION_MICRO) #else #warning Setup.hs is guessing the version of Cabal. If compilation of Setup.hs fails use -DCABAL_VERSION_MINOR=x for Cabal version 1.x.0 when building (prefixed by --ghc-option= when using the 'cabal' command)+#if (__GLASGOW_HASKELL__ >= 700)+#define CABAL_VERSION CABAL_VERSION_ENCODE(1,10,0)+#else #if (__GLASGOW_HASKELL__ >= 612) #define CABAL_VERSION CABAL_VERSION_ENCODE(1,8,0) #else #define CABAL_VERSION CABAL_VERSION_ENCODE(1,6,0) #endif #endif+#endif -- | Build a Gtk2hs package. ---module Gtk2HsSetup ( gtk2hsUserHooks, getPkgConfigPackages ) where+module Gtk2HsSetup ( + gtk2hsUserHooks, + getPkgConfigPackages, + checkGtk2hsBuildtools+ ) where import Distribution.Simple import Distribution.Simple.PreProcess@@ -65,7 +73,7 @@ import Distribution.Simple.Compiler ( Compiler(..) ) import Distribution.Simple.Program ( Program(..), ConfiguredProgram(..),- rawSystemProgramConf, rawSystemProgramStdoutConf,+ rawSystemProgramConf, rawSystemProgramStdoutConf, programName, c2hsProgram, pkgConfigProgram, requireProgram, ghcPkgProgram, simpleProgram, lookupProgram, rawSystemProgramStdout, ProgArg) import Distribution.ModuleName ( ModuleName, components, toFilePath )@@ -83,10 +91,11 @@ #endif import Distribution.Text ( simpleParse, display ) import System.FilePath-import System.Directory ( doesFileExist )+import System.Exit (exitFailure)+import System.Directory ( doesFileExist, getDirectoryContents, doesDirectoryExist ) import Distribution.Version (Version(..)) import Distribution.Verbosity-import Control.Monad (when, unless, filterM)+import Control.Monad (when, unless, filterM, liftM, forM, forM_) import Data.Maybe ( isJust, isNothing, fromMaybe, maybeToList ) import Data.List (isPrefixOf, isSuffixOf, nub) import Data.Char (isAlpha)@@ -94,7 +103,6 @@ import qualified Data.Set as S import Control.Applicative ((<$>))-import System.Directory (getDirectoryContents, doesDirectoryExist) -- the name of the c2hs pre-compiled header file precompFile = "precompchs.bin"@@ -103,13 +111,13 @@ hookedPrograms = [typeGenProgram, signalGenProgram, c2hsLocal], hookedPreProcessors = [("chs", ourC2hs)], confHook = \pd cf ->- confHook simpleUserHooks pd cf >>= return . adjustLocalBuildInfo,+ (fmap adjustLocalBuildInfo (confHook simpleUserHooks pd cf)), postConf = \args cf pd lbi -> do genSynthezisedFiles (fromFlag (configVerbosity cf)) pd lbi postConf simpleUserHooks args cf pd lbi, buildHook = \pd lbi uh bf -> fixDeps pd >>= \pd ->- (buildHook simpleUserHooks) pd lbi uh bf,- copyHook = \pd lbi uh flags -> (copyHook simpleUserHooks) pd lbi uh flags >>+ buildHook simpleUserHooks pd lbi uh bf,+ copyHook = \pd lbi uh flags -> copyHook simpleUserHooks pd lbi uh flags >> installCHI pd lbi (fromFlag (copyVerbosity flags)) (fromFlag (copyDest flags)), instHook = \pd lbi uh flags -> #if defined(mingw32_HOST_OS) || defined(__MINGW32__)@@ -187,7 +195,11 @@ _ | modeGenerateRegFile -> die "Generate Reg File not supported" | modeGenerateRegScript -> die "Generate Reg Script not supported" | otherwise -> registerPackage verbosity+#if CABAL_VERSION_CHECK(1,10,0)+ installedPkgInfo pkg lbi inplace [packageDb]+#else installedPkgInfo pkg lbi inplace packageDb+#endif where modeGenerateRegFile = isJust (flagToMaybe (regGenPkgConf regFlags))@@ -298,7 +310,7 @@ getCppOptions bi lbi = nub $ ["-I" ++ dir | dir <- PD.includeDirs bi]- ++ [opt | opt@('-':c:_) <- (PD.cppOptions bi ++ PD.ccOptions bi), c `elem` "DIU"]+ ++ [opt | opt@('-':c:_) <- PD.cppOptions bi ++ PD.ccOptions bi, c `elem` "DIU"] installCHI :: PackageDescription -- ^information from the .cabal file -> LocalBuildInfo -- ^information from the configure step@@ -308,14 +320,13 @@ let InstallDirs { libdir = libPref } = absoluteInstallDirs pkg lbi copydest -- cannot use the recommended 'findModuleFiles' since it fails if there exists -- a modules that does not have a .chi file- mFiles <- mapM (findFileWithExtension' ["chi"] [buildDir lbi])- (map toFilePath+ mFiles <- mapM (findFileWithExtension' ["chi"] [buildDir lbi] . toFilePath) #if CABAL_VERSION_CHECK(1,8,0) (PD.libModules lib) #else (PD.libModules pkg) #endif- )+ let files = [ f | Just f <- mFiles ] #if CABAL_VERSION_CHECK(1,8,0) installOrdinaryFiles verbosity libPref files@@ -331,13 +342,13 @@ ------------------------------------------------------------------------------ typeGenProgram :: Program-typeGenProgram = (simpleProgram "gtk2hsTypeGen")+typeGenProgram = simpleProgram "gtk2hsTypeGen" signalGenProgram :: Program-signalGenProgram = (simpleProgram "gtk2hsHookGenerator")+signalGenProgram = simpleProgram "gtk2hsHookGenerator" c2hsLocal :: Program-c2hsLocal = (simpleProgram "gtk2hsC2hs")+c2hsLocal = simpleProgram "gtk2hsC2hs" genSynthezisedFiles :: Verbosity -> PackageDescription -> LocalBuildInfo -> IO () genSynthezisedFiles verb pd lbi = do@@ -370,7 +381,7 @@ res <- rawSystemProgramStdoutConf verb prog (withPrograms lbi) args rewriteFile outFile res - (flip mapM_) (filter (\(tag,_) -> "x-types-" `isPrefixOf` tag && "file" `isSuffixOf` tag) xList) $+ forM_ (filter (\(tag,_) -> "x-types-" `isPrefixOf` tag && "file" `isSuffixOf` tag) xList) $ \(fileTag, f) -> do let tag = reverse (drop 4 (reverse fileTag)) info verb ("Ensuring that class hierarchy in "++f++" is up-to-date.")@@ -391,7 +402,7 @@ sequence [ do version <- pkgconfig ["--modversion", display pkgname] case simpleParse version of- Nothing -> die $ "parsing output of pkg-config --modversion failed"+ Nothing -> die "parsing output of pkg-config --modversion failed" Just v -> return (PackageIdentifier pkgname v) | Dependency pkgname _ <- concatMap pkgconfigDepends (allBuildInfo pkg) ] where@@ -456,9 +467,9 @@ extractDeps :: ModDep -> IO ModDep extractDeps md@ModDep { mdLocation = Nothing } = return md extractDeps md@ModDep { mdLocation = Just f } = withUTF8FileContents f $ \con -> do- let findImports acc (('{':'#':xs):xxs) = case (dropWhile ((==) ' ') xs) of+ let findImports acc (('{':'#':xs):xxs) = case (dropWhile (' ' ==) xs) of ('i':'m':'p':'o':'r':'t':' ':ys) ->- case simpleParse (takeWhile ((/=) '#') ys) of+ case simpleParse (takeWhile ('#' /=) ys) of Just m -> findImports (m:acc) xxs Nothing -> die ("cannot parse chs import in "++f++":\n"++ "offending line is {#"++xs)@@ -484,3 +495,17 @@ Just md -> (md:out', visited') where (out',visited') = foldl visit (out, m `S.insert` visited) (mdRequires md)++-- Check user whether install gtk2hs-buildtools correctly.+checkGtk2hsBuildtools :: [String] -> IO ()+checkGtk2hsBuildtools programs = do+ programInfos <- mapM (\ name -> do+ location <- programFindLocation (simpleProgram name) normal+ return (name, location)+ ) programs+ let printError name = do+ putStrLn $ "Cannot find " ++ name ++ "\n" + ++ "Please install `gtk2hs-buildtools` first and check that the install directory is in your PATH (e.g. HOME/.cabal/bin)."+ exitFailure+ forM_ programInfos $ \ (name, location) ->+ when (isNothing location) (printError name)
Setup.hs view
@@ -3,7 +3,7 @@ -- identical across all modules. import Distribution.Simple ( defaultMainWithHooks, UserHooks(postConf), PackageIdentifier(..), PackageName(..) )-import Gtk2HsSetup ( gtk2hsUserHooks, getPkgConfigPackages )+import Gtk2HsSetup ( gtk2hsUserHooks, getPkgConfigPackages, checkGtk2hsBuildtools ) import Distribution.Simple.Setup ( ConfigFlags(configVerbosity), fromFlag) import Distribution.Simple.LocalBuildInfo ( LocalBuildInfo(..) ) import Distribution.Simple.BuildPaths ( autogenModulesDir )@@ -13,7 +13,9 @@ import Distribution.Simple.Utils import System.FilePath -main = defaultMainWithHooks gtk2hsUserHooks {+main = do+ checkGtk2hsBuildtools ["gtk2hsC2hs", "gtk2hsTypeGen"]+ defaultMainWithHooks gtk2hsUserHooks { postConf = \args cf pd lbi -> do let verb = (fromFlag (configVerbosity cf))
demo/Layout.hs view
@@ -21,20 +21,20 @@ area <- drawingAreaNew containerAdd win area on area sizeRequest $ return (Requisition 100 100)- + -- Create a Cairo Context that contains information about the current font, -- etc. ctxt <- cairoCreateContext Nothing lay <- layoutText ctxt loremIpsum layoutSetWrap lay WrapWholeWords- + -- Wrap the layout to a different width each time the window is resized. on area sizeAllocate $ \(Rectangle _ _ w _) -> do layoutSetWidth lay (Just (fromIntegral w)) -- Setup the handler to draw the layout. on area exposeEvent $ updateArea area lay- + -- Run the whole thing. widgetShowAll win mainGUI@@ -48,4 +48,3 @@ showLayout lay return True-
pango.cabal view
@@ -1,5 +1,5 @@ Name: pango-Version: 0.11.2+Version: 0.12.0 License: LGPL-2.1 License-file: COPYING Copyright: (c) 2001-2010 The Gtk2Hs Team@@ -20,17 +20,17 @@ extra-source-files: template-hsc-gtk2hs.h hspango.h Gtk2HsSetup.hs- hierarchy.list+ hierarchy.list x-Types-File: Graphics/Rendering/Pango/Types.chs x-Types-ModName: Graphics.Rendering.Pango.Types x-Types-Forward: *System.Glib.GObject x-Types-Hierarchy: hierarchy.list -Data-Dir: demo-Data-Files: Layout.hs+Data-Dir: demo+Data-Files: Layout.hs Makefile- + Source-Repository head type: darcs location: http://code.haskell.org/gtk2hs/@@ -42,8 +42,8 @@ Library build-depends: base >= 3 && < 5, process, directory, array, containers, pretty, mtl, haskell98,- glib >= 0.11.1 && < 0.12,- cairo >= 0.11.1 && < 0.12+ glib >= 0.12 && < 0.13,+ cairo >= 0.12 && < 0.13 if flag(new-exception) build-depends: base >= 4