packages feed

gconf 0.12.5.0 → 0.13.0.0

raw patch · 7 files changed

+142/−103 lines, 7 filesdep +textdep ~glib

Dependencies added: text

Dependency ranges changed: glib

Files

Gtk2HsSetup.hs view
@@ -6,9 +6,9 @@  -- | Build a Gtk2hs package. ---module Gtk2HsSetup ( -  gtk2hsUserHooks, -  getPkgConfigPackages, +module Gtk2HsSetup (+  gtk2hsUserHooks,+  getPkgConfigPackages,   checkGtk2hsBuildtools,   typeGenProgram,   signalGenProgram,@@ -55,8 +55,9 @@ import Distribution.Version (Version(..)) import Distribution.Verbosity import Control.Monad (when, unless, filterM, liftM, forM, forM_)-import Data.Maybe ( isJust, isNothing, fromMaybe, maybeToList )-import Data.List (isPrefixOf, isSuffixOf, stripPrefix, nub)+import Data.Maybe ( isJust, isNothing, fromMaybe, maybeToList, catMaybes )+import Data.List (isPrefixOf, isSuffixOf, nub, minimumBy, stripPrefix, tails )+import Data.Ord as Ord (comparing) import Data.Char (isAlpha, isNumber) import qualified Data.Map as M import qualified Data.Set as S@@ -113,9 +114,16 @@ fixLibs :: [FilePath] -> [String] -> [String] fixLibs dlls = concatMap $ \ lib ->     case filter (isLib lib) dlls of-                dll:_ -> [dropExtension dll]-                _     -> if lib == "z" then [] else [lib]+                dlls@(_:_) -> [dropExtension (pickDll dlls)]+                _          -> if lib == "z" then [] else [lib]   where+    -- If there are several .dll files matching the one we're after then we+    -- just have to guess. For example for recent Windows cairo builds we get+    -- libcairo-2.dll libcairo-gobject-2.dll libcairo-script-interpreter-2.dll+    -- Our heuristic is to pick the one with the shortest name.+    -- Yes this is a hack but the proper solution is hard: we would need to+    -- parse the .a file and see which .dll file(s) it needed to link to.+    pickDll = minimumBy (Ord.comparing length)     isLib lib dll =         case stripPrefix ("lib"++lib) dll of             Just ('.':_)                -> True@@ -154,9 +162,9 @@ register :: PackageDescription -> LocalBuildInfo          -> RegisterFlags -- ^Install in the user's database?; verbose          -> IO ()-register pkg@(library       -> Just lib )-         lbi@(libraryConfig -> Just clbi) regFlags+register pkg@PackageDescription { library       = Just lib  } lbi regFlags   = do+    let clbi = LBI.getComponentLocalBuildInfo lbi LBI.CLibName      installedPkgInfoRaw <- generateRegistrationInfo                            verbosity pkg lib lbi clbi inplace distPref@@ -168,7 +176,7 @@       -- Three different modes:     case () of-     _ | modeGenerateRegFile   -> die "Generate Reg File not supported"+     _ | modeGenerateRegFile   -> writeRegistrationFile installedPkgInfo        | modeGenerateRegScript -> die "Generate Reg Script not supported"        | otherwise             -> registerPackage verbosity                                     installedPkgInfo pkg lbi inplace@@ -180,6 +188,8 @@    where     modeGenerateRegFile = isJust (flagToMaybe (regGenPkgConf regFlags))+    regFile             = fromMaybe (display (packageId pkg) <.> "conf")+                                    (fromFlag (regGenPkgConf regFlags))     modeGenerateRegScript = fromFlag (regGenScript regFlags)     inplace   = fromFlag (regInPlace regFlags)     packageDbs = nub $ withPackageDB lbi@@ -188,6 +198,10 @@     distPref  = fromFlag (regDistPref regFlags)     verbosity = fromFlag (regVerbosity regFlags) +    writeRegistrationFile installedPkgInfo = do+      notice verbosity ("Creating package registration file: " ++ regFile)+      writeUTF8File regFile (showInstalledPackageInfo installedPkgInfo)+ register _ _ regFlags = notice verbosity "No package to register"   where     verbosity = fromFlag (regVerbosity regFlags)@@ -247,11 +261,24 @@     = nub $       ["-I" ++ dir | dir <- PD.includeDirs bi]    ++ [opt | opt@('-':c:_) <- PD.cppOptions bi ++ PD.ccOptions bi, c `elem` "DIU"]-   ++ ["-D__GLASGOW_HASKELL__="++show (ghcDefine . versionBranch . compilerVersion $ LBI.compiler lbi)]+   ++ ["-D__GLASGOW_HASKELL__="++show (ghcDefine . ghcVersion . compilerId $ LBI.compiler lbi)]  where   ghcDefine (v1:v2:_) = v1 * 100 + v2   ghcDefine _ = __GLASGOW_HASKELL__ +  ghcVersion :: CompilerId -> [Int]+-- This version is nicer, but we need to know the Cabal version that includes the new CompilerId+-- #if CABAL_VERSION_CHECK(1,19,2)+--   ghcVersion (CompilerId GHC v _) = versionBranch v+--   ghcVersion (CompilerId _ _ (Just c)) = ghcVersion c+-- #else+--   ghcVersion (CompilerId GHC v) = versionBranch v+-- #endif+--   ghcVersion _ = []+-- This version should work fine for now+  ghcVersion = concat . take 1 . map (read . (++"]") . takeWhile (/=']')) . catMaybes+               . map (stripPrefix "CompilerId GHC (Version {versionBranch = ") . tails . show+ installCHI :: PackageDescription -- ^information from the .cabal file         -> LocalBuildInfo -- ^information from the configure step         -> Verbosity -> CopyDest -- ^flags sent to copy or install@@ -262,11 +289,11 @@   -- a modules that does not have a .chi file   mFiles <- mapM (findFileWithExtension' ["chi"] [buildDir lbi] . toFilePath)                    (PD.libModules lib)-                 +   let files = [ f | Just f <- mFiles ]   installOrdinaryFiles verbosity libPref files -  + installCHI _ _ _ _ = return ()  ------------------------------------------------------------------------------@@ -292,13 +319,12 @@  genSynthezisedFiles :: Verbosity -> PackageDescription -> LocalBuildInfo -> IO () genSynthezisedFiles verb pd lbi = do-   cPkgs <- getPkgConfigPackages verb lbi pd    let xList = maybe [] (customFieldsBI . libBuildInfo) (library pd)               ++customFieldsPD pd       typeOpts :: String -> [ProgArg]-      typeOpts tag = concat [ map (\val -> '-':'-':drop (length tag) field++'=':val) (words content)+      typeOpts tag = concat [ map (\val -> '-':'-':drop (length tag) field ++ '=':val) (words content)                             | (field,content) <- xList,                               tag `isPrefixOf` field,                               field /= (tag++"file")]@@ -306,8 +332,9 @@                  | PackageIdentifier name (Version (major:minor:_) _) <- cPkgs                  , let name' = filter isAlpha (display name)                  , tag <- name'-                        : [ name' ++ "-" ++ show major ++ "." ++ show digit-                          | digit <- [0,2..minor] ]+                        :[ name' ++ "-" ++ show maj ++ "." ++ show d2+                          | (maj, d2) <- [(maj,   d2) | maj <- [0..(major-1)], d2 <- [0,2..20]]+                                      ++ [(major, d2) | d2 <- [0,2..minor]] ]                  ]        signalsOpts :: [ProgArg]@@ -426,14 +453,14 @@  -- Extract the dependencies of this file. This is intentionally rather naive as it -- ignores CPP conditionals. We just require everything which means that the--- existance of a .chs module may not depend on some CPP condition.  +-- existance of a .chs module may not depend on some CPP condition. 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         ('i':'m':'p':'o':'r':'t':' ':ys) ->           case simpleParse (takeWhile ('#' /=) ys) of-            Just m -> findImports (m:acc) xxs +            Just m -> findImports (m:acc) xxs             Nothing -> die ("cannot parse chs import in "++f++":\n"++                             "offending line is {#"++xs)          -- no more imports after the first non-import hook@@ -467,8 +494,8 @@                          return (programName prog, location)                       ) programs   let printError name = do-        putStrLn $ "Cannot find " ++ name ++ "\n" +        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) +    when (isNothing location) (printError name)
SetupWrapper.hs view
@@ -9,7 +9,7 @@ import Distribution.Simple.Program import Distribution.Simple.Compiler import Distribution.Simple.BuildPaths (exeExtension)-import Distribution.Simple.Configure (configCompiler)+import Distribution.Simple.Configure (configCompilerEx) import Distribution.Simple.GHC (getInstalledPackages) import qualified Distribution.Simple.PackageIndex as PackageIndex import Distribution.Version@@ -115,7 +115,7 @@       when outOfDate $ do         debug verbosity "Setup script is out of date, compiling..." -        (comp, conf)    <- configCompiler (Just GHC) Nothing Nothing+        (comp, _, conf) <- configCompilerEx (Just GHC) Nothing Nothing                              defaultProgramConfiguration verbosity         cabalLibVersion <- cabalLibVersionToUse comp conf         let cabalPkgid = PackageIdentifier (PackageName "Cabal") cabalLibVersion
System/Gnome/GConf/GConfClient.chs view
@@ -42,13 +42,13 @@   -- * Creation operation   --   gconfGetDefault,-  +   -- * Registering for change notifications   --   gconfAddDir, gconfRemoveDir,   gconfNotifyAdd, gconfNotifyRemove,   onValueChanged, afterValueChanged,-  +   -- * Getting and setting configuration values   --   gconfGet, gconfSet,@@ -80,11 +80,12 @@   GConfPrimitiveValueClass,   GConfValue,   GConfValueDyn(..),-  + ) where  import Control.Monad	(liftM, when) import Data.IORef (newIORef, readIORef, writeIORef)+import Data.Text (Text) import System.IO.Unsafe (unsafePerformIO)  import System.Glib.FFI@@ -149,12 +150,12 @@ -- As a rule of thumb, if you plan to get the value of almost all the keys in a -- directory, preloading that directory will probably enhance performance. If -- you plan to use only half the keys, preloading is likely a bad idea.--- +-- -- * PreloadNone specifies that no preload occurs -- * PreloadOnelevel loads the immediate children of the directory -- * PreloadRecursive loads all children of the directory and its --   subdirectories, recursively.--- +-- gconfAddDirWithPreload :: GConf -> String -> GConfPreloadType -> IO () gconfAddDirWithPreload gc key preload =   propagateGError $ \gerrorPtr ->@@ -172,7 +173,7 @@ gconfRemoveDir :: GConf -> String -> IO () gconfRemoveDir gc key =   propagateGError $ \gerrorPtr ->-  withCString key $ \strPtr ->    +  withCString key $ \strPtr ->     {# call gconf_client_remove_dir #} gc strPtr gerrorPtr  @@ -189,7 +190,7 @@ foreign import ccall "wrapper" mkHandler_GConfClientNotifyFunc ::   GConfClientNotifyFunc -> IO (FunPtr GConfClientNotifyFunc) -connect_GConfClientNotifyFunc :: +connect_GConfClientNotifyFunc ::   GConf ->   String ->   (GConfEntry -> IO ()) ->@@ -211,15 +212,15 @@  newtype GConfConnectId = GConfConnectId {#type guint#} -gconfNotifyAdd :: GConfValueClass value =>+gconfNotifyAdd :: (GConfValueClass value, GlibString string) =>                         GConf ->                         String ->-                        (String -> value -> IO ()) ->+                        (string -> value -> IO ()) -> 				                IO GConfConnectId gconfNotifyAdd gc key handler =   connect_GConfClientNotifyFunc gc key (convertValueChangedHandler handler)-  where convertValueChangedHandler :: GConfValueClass value =>-                                      (String -> value -> IO ()) ->+  where convertValueChangedHandler :: (GConfValueClass value, GlibString string) =>+                                      (string -> value -> IO ()) ->                                       (GConfEntry -> IO ())         convertValueChangedHandler handler entry = do           keyStrPtr <- {# call unsafe gconf_entry_get_key #} entry@@ -237,39 +238,42 @@  -- | Gets the value of a configuration key. ---gconfGet :: GConfValueClass value => GConf-         -> String   -- ^ Name of the key+gconfGet :: (GConfValueClass value, GlibString string) => GConf+         -> string   -- ^ Name of the key 	 -> IO value gconfGet gc key = do   value <- propagateGError $ \gerrorPtr ->-           withCString key $ \strPtr ->+           withUTFString key $ \strPtr ->            {# call gconf_client_get #} gc strPtr gerrorPtr   marshalFromGConfValue (GConfValue value)-  -gconfGetInt :: GConf -> String -> IO Int++gconfGetInt :: GlibString string => GConf -> string -> IO Int gconfGetInt = gconfGet -gconfGetBool :: GConf -> String -> IO Bool+gconfGetBool :: GlibString string => GConf -> string -> IO Bool gconfGetBool = gconfGet -gconfGetFloat :: GConf -> String -> IO Double+gconfGetFloat :: GlibString string => GConf -> string -> IO Double gconfGetFloat = gconfGet -gconfGetString :: GConf -> String -> IO String-gconfGetString = gconfGet+-- gconfGetString :: GlibString string => GConf -> string -> IO String+-- gconfGetString = gconfGet -gconfGetPair :: GConfValueClass (a,b) =>-                GConf -> String -> IO (a, b)+gconfGetText :: GlibString string => GConf -> string -> IO Text+gconfGetText = gconfGet++gconfGetPair :: (GConfValueClass (a,b), GlibString string) =>+                GConf -> string -> IO (a, b) gconfGetPair = gconfGet -gconfGetList :: GConfValueClass [a] =>-                GConf -> String -> IO [a]+gconfGetList :: (GConfValueClass [a], GlibString string) =>+                GConf -> string -> IO [a] gconfGetList = gconfGet  -- | Sets the value of a configuration key. ---gconfSet :: GConfValueClass value => GConf-         -> String  -- ^ Name of the key+gconfSet :: (GConfValueClass value, GlibString string) => GConf+         -> string  -- ^ Name of the key 	 -> value   -- ^ New value 	 -> IO () gconfSet gc key val = do@@ -277,27 +281,30 @@   if ptr == nullPtr     then gconfUnset gc key     else propagateGError $ \gerrorPtr ->-         withCString key $ \strPtr ->+         withUTFString key $ \strPtr ->          {# call gconf_client_set #} gc strPtr value gerrorPtr -gconfSetInt :: GConf -> String -> Int -> IO ()+gconfSetInt :: GlibString string => GConf -> string -> Int -> IO () gconfSetInt = gconfSet -gconfSetBool :: GConf -> String -> Bool -> IO ()+gconfSetBool :: GlibString string => GConf -> string -> Bool -> IO () gconfSetBool = gconfSet -gconfSetFloat :: GConf -> String -> Double -> IO ()+gconfSetFloat :: GlibString string => GConf -> string -> Double -> IO () gconfSetFloat = gconfSet -gconfSetString :: GConf -> String -> String -> IO ()-gconfSetString = gconfSet+-- gconfSetString :: GlibString string => GConf -> string -> String -> IO ()+-- gconfSetString = gconfSet -gconfSetPair :: GConfValueClass (a,b) =>-                GConf -> String -> (a, b) -> IO ()+gconfSetText :: GlibString string => GConf -> string -> Text -> IO ()+gconfSetText = gconfSet++gconfSetPair :: (GConfValueClass (a,b), GlibString string) =>+                GConf -> string -> (a, b) -> IO () gconfSetPair = gconfSet -gconfSetList :: GConfValueClass [a] =>-                GConf -> String -> [a] -> IO ()+gconfSetList :: (GConfValueClass [a], GlibString string) =>+                GConf -> string -> [a] -> IO () gconfSetList = gconfSet  -- | Gets the value of a configuration key.@@ -330,10 +337,10 @@ -- of note is 'GconfErrorOverridden', indicating that the system administrator -- has \"forced\" a value for this key. ---gconfUnset :: GConf -> String -> IO ()+gconfUnset :: GlibString string => GConf -> string -> IO () gconfUnset gc key =   propagateGError $ \gerrorPtr ->-  withCString key $ \strPtr -> do+  withUTFString key $ \strPtr -> do   {# call gconf_client_unset #} gc strPtr gerrorPtr   return () @@ -357,7 +364,7 @@  -- | Suggests to gconfd that you've just finished a block of changes, and it -- would be an optimal time to sync to permanent storage. This is only a--- suggestion; and gconfd will eventually sync even if you don't call +-- suggestion; and gconfd will eventually sync even if you don't call -- 'gconfSuggestSync'. This function is just a "hint" provided to gconfd to -- maximize efficiency and minimize data loss. --@@ -366,12 +373,12 @@   propagateGError $ \gerrorPtr ->   {# call gconf_client_suggest_sync #} gc gerrorPtr --- |  +-- | ---gconfAllEntries :: GConf -> String -> IO [(String, GConfValueDyn)]+gconfAllEntries :: GlibString string => GConf -> string -> IO [(string, GConfValueDyn)] gconfAllEntries gc dir = do   gsList <- propagateGError $ \gerrorPtr ->-            withCString dir $ \strPtr ->+            withUTFString dir $ \strPtr ->             {# call gconf_client_all_entries #} gc strPtr gerrorPtr   entryList <- fromGSList gsList   mapM (\entry -> do let entry' = GConfEntry entry@@ -386,11 +393,11 @@                      return (key,value))        entryList --- | +-- | ---gconfAllDirs :: GConf -> String -> IO [String]+gconfAllDirs :: GlibString string => GConf -> string -> IO [string] gconfAllDirs gc dir = do-  gsList <- withCString dir $ \strPtr ->+  gsList <- withUTFString dir $ \strPtr ->     {# call gconf_client_all_dirs #} gc strPtr nullPtr   dirList <- fromGSList gsList   mapM (\strPtr -> do str <- peekUTFString strPtr@@ -398,7 +405,7 @@                       return str)        dirList --- | +-- | -- gconfDirExists :: GConf -> String -> IO Bool gconfDirExists gc dir =@@ -408,18 +415,18 @@  -- Signals -onValueChanged, afterValueChanged :: GConf ->-                                     (String -> Maybe GConfValueDyn -> IO ()) ->+onValueChanged, afterValueChanged :: GlibString string => GConf ->+                                     (string -> Maybe GConfValueDyn -> IO ()) -> 				                             IO (ConnectId GConf) onValueChanged gc handler =-  connect_STRING_PTR__NONE "value_changed" False gc+  connect_GLIBSTRING_PTR__NONE "value_changed" False gc   (convertValueChangedHandler handler) afterValueChanged gc handler =-  connect_STRING_PTR__NONE "value_changed" True gc+  connect_GLIBSTRING_PTR__NONE "value_changed" True gc   (convertValueChangedHandler handler) -convertValueChangedHandler :: (String -> Maybe GConfValueDyn -> IO ()) ->-                              (String -> Ptr GConfValue -> IO ())+convertValueChangedHandler :: GlibString string => (string -> Maybe GConfValueDyn -> IO ()) ->+                              (string -> Ptr GConfValue -> IO ()) convertValueChangedHandler handler key ptr = do   value <- marshalFromGConfValue (GConfValue $ castPtr ptr)   handler key value
System/Gnome/GConf/GConfValue.chs view
@@ -1,3 +1,4 @@+{-# LANGUAGE UndecidableInstances #-} {-# LANGUAGE CPP, TypeSynonymInstances, OverlappingInstances, ScopedTypeVariables, FlexibleInstances #-} -- String & [a] overlap -- -*-haskell-*-@@ -19,13 +20,13 @@ --  Library General Public License for more details. -- --  |---  +-- --  Module for dealing with the values stored in the GConf system. -- --  GConfValue has its own primitive type system which is represented in --  Haskell using type classes. This allows values to be get and set without --  needing to perform any dynamic type casting or needing a union type.---  +-- --  Alternatively, a dynamic\/union type is provided for the rare occasions --  when that degree of flexability is required. It should only be necessary --  if you need to deal with configuration values without statically knowing@@ -42,6 +43,7 @@ import Control.Monad (liftM, when) import Control.Exception (catch, IOException) import Prelude hiding (catch)+import Data.Text (Text)  import System.Glib.FFI import System.Glib.UTFString@@ -58,7 +60,7 @@ class GConfValueClass value where   --unsafe because assumes non-null pointer and correct type   unsafeMarshalFromGConfValue :: GConfValue -> IO value-  +   -- safe checked version, may throw exception   marshalFromGConfValue :: GConfValue -> IO value   marshalFromGConfValue value = do@@ -77,7 +79,7 @@ -- function that is prepared to asume ownership of the value.  -- | Dynamic version for when the type is not known statically.-data GConfValueDyn = GConfValueString String+data GConfValueDyn = GConfValueString Text                    | GConfValueInt Int                    | GConfValueFloat Double                    | GConfValueBool Bool@@ -105,7 +107,7 @@ instance GConfPrimitiveValueClass Int instance GConfPrimitiveValueClass Bool instance GConfPrimitiveValueClass Double-instance GConfPrimitiveValueClass String+instance GConfPrimitiveValueClass Text  instance GConfValueClass Int where   typeofGConfValue _ = GconfValueInt@@ -137,7 +139,7 @@ -- Now unfortunately String & [a] overlap, although really they don't since Char -- is not an instance of GConfPrimitiveValueClass, however classes are open so -- we don't know that Char would never be an instance. I want closed classes!-instance GConfValueClass String where+instance GlibString string => GConfValueClass string where   typeofGConfValue _ = GconfValueString    unsafeMarshalFromGConfValue value = do@@ -147,7 +149,7 @@   marshalToGConfValue s = do     value <- {# call unsafe gconf_value_new #}       (fromIntegral $ fromEnum GconfValueString)-    withCString s $ \strPtr ->+    withUTFString s $ \strPtr ->       {# call unsafe gconf_value_set_string #} (GConfValue value) strPtr     return (GConfValue value) @@ -198,7 +200,7 @@     return (GConfValue value)  ------------------- For convenience and best practice, an instance for Enum +-- For convenience and best practice, an instance for Enum -- This conforms to the GConf GTK+/Gnome convention for storing enum types, -- which is to store them as a string using ThisStlyeOfCapitalisation. @@ -313,11 +315,11 @@       GconfValueSchema -> return GConfValueSchema       GconfValueList   -> liftM GConfValueList   $ unsafeMarshalGConfValueDynListFromGConfValue value       GconfValuePair   -> liftM GConfValuePair   $ unsafeMarshalGConfValueDynPairFromGConfValue value-  +   marshalFromGConfValue value@(GConfValue ptr) = do     when (ptr == nullPtr) $ fail "GConf: cannot get value of key, key is unset"     unsafeMarshalFromGConfValue value-  +   marshalToGConfValue v = case v of     (GConfValueString v') -> marshalToGConfValue v'     (GConfValueInt    v') -> marshalToGConfValue v'
System/Gnome/GConf/Signals.chs view
@@ -28,7 +28,7 @@ -- The object system in the second version of GTK is based on GObject from -- GLIB. This base class is rather primitive in that it only implements -- ref and unref methods (and others that are not interesting to us). If--- the marshall list mentions OBJECT it refers to an instance of this +-- the marshall list mentions OBJECT it refers to an instance of this -- GObject which is automatically wrapped with a ref and unref call. -- Structures which are not derived from GObject have to be passed as -- BOXED which gives the signal connect function a possibility to do the@@ -40,7 +40,7 @@ module System.Gnome.GConf.Signals (   module System.Glib.Signals, -  connect_STRING_PTR__NONE,+  connect_GLIBSTRING_PTR__NONE,      ) where @@ -48,9 +48,10 @@  import System.Glib.FFI import System.Glib.UTFString   (peekUTFString,maybePeekUTFString)+import qualified System.Glib.UTFString as Glib import System.Glib.GError      (failOnGError) {#import System.Glib.Signals#}-{#import System.Glib.GObject#} +{#import System.Glib.GObject#}   {#context lib="gtk" prefix="gtk" #}@@ -61,12 +62,12 @@ -- the last one is the user g_pointer. Both are ignored.  -connect_STRING_PTR__NONE :: -  GObjectClass obj => SignalName ->+connect_GLIBSTRING_PTR__NONE :: +  (Glib.GlibString a', GObjectClass obj) => SignalName ->   ConnectAfter -> obj ->-  (String -> Ptr b -> IO ()) ->+  (a' -> Ptr b -> IO ()) ->   IO (ConnectId obj)-connect_STRING_PTR__NONE signal after obj user =+connect_GLIBSTRING_PTR__NONE signal after obj user =   connectGeneric signal after obj action   where action :: Ptr GObject -> CString -> Ptr () -> IO ()         action _ str1 ptr2 =
gconf.cabal view
@@ -1,5 +1,5 @@ Name:           gconf-Version:        0.12.5.0+Version:        0.13.0.0 License:        LGPL-2.1 License-file:   COPYING Copyright:      (c) 2001-2010 The Gtk2Hs Team@@ -9,7 +9,7 @@ Cabal-Version:  >= 1.8 Stability:      stable homepage:       http://projects.haskell.org/gtk2hs/-bug-reports:    http://hackage.haskell.org/trac/gtk2hs/+bug-reports:    https://github.com/gtk2hs/gconf/issues Synopsis:       Binding to the GNOME configuration database system. Description:    GConf is a configuration database system for storing application                 preferences. It supports default or mandatory settings set by the@@ -38,21 +38,23 @@  Library         build-depends:  base >= 4 && < 5,-                        glib >= 0.12.5.0 && < 0.13-						-        build-tools:    gtk2hsC2hs >= 0.13.8,+                        glib >= 0.13.0.0 && < 0.14,+                        text >= 0.11.0.6 && < 1.2++        build-tools:    gtk2hsC2hs >= 0.13.11,                         gtk2hsHookGenerator, gtk2hsTypeGen-						+         exposed-modules:           System.Gnome.GConf-          System.Gnome.GConf.GConfClient		  +          System.Gnome.GConf.GConfClient		         other-modules:           System.Gnome.GConf.GConfValue-          System.Gnome.GConf.Types		  +          System.Gnome.GConf.Types		           System.Gnome.GConf.Signals          extensions:     ForeignFunctionInterface-		++        cpp-options:    -U__BLOCKS__         x-Signals-File:  System/Gnome/GConf/Signals.chs         x-Signals-Modname: System.Gnome.GConf.Signals         x-Signals-Types: marshal.list
marshal.list view
@@ -14,7 +14,7 @@ #   FLAGS       for flag enumeration types (guint) #   FLOAT       for single-precision float types (gfloat) #   DOUBLE      for double-precision float types (gdouble)-#   STRING      for string types (gchar*)+#   GLIBSTRING  for string types (gchar*) #   BOXED       for boxed (anonymous but reference counted) types (GBoxed*) #   POINTER     for anonymous pointer types (gpointer) #   NONE        deprecated alias for VOID@@ -42,4 +42,4 @@ # If you add a new signal type, please check that it actually works! # If it is a Boxed type check that the reference counting is right. -NONE:STRING,POINTER+NONE:GLIBSTRING,POINTER