From: <as...@us...> - 2003-07-09 22:42:51
|
Update of /cvsroot/gtk2hs/gtk2hs/gtk/treeList In directory sc8-pr-cvs1:/tmp/cvs-serv25460/gtk/treeList Modified Files: CellRendererPixbuf.chs CellRendererText.chs CellRendererToggle.chs ListStore.chs StoreValue.hsc TreeModel.chs TreeModelSort.chs TreeSelection.chs TreeStore.chs TreeView.chs TreeViewColumn.chs Log Message: Make compile with GHC 6.00. There are two major changes in the FFI which made me separate everything that has to do with Foreign and Foreign.C into a new file called general/FFI.hs. The file UTFCForeign.hs is now obsolete as its string conversion functions are now in FFI.hs. The nullForeignPtr function is also located here. All files now import FFI instead of Foreign and UTFCForeign. The major changes are: newForeignPtr now takes a pointer to a C function as finalizer. Every destructor function is now defined differently depending on whether the new GHC is used or not. In particular there is now a function called free :: Ptr a -> IO () imported from the Foreign library. In addition to that I defined a function foreignFree which can be used as finalizer to a C data structure. It is equivalent to free if GHC version <=5.04 is used. The second change is that ForeignPtr are no longer accepted as arguments to foreign calls. This change is mainly reflected in c2hs, but also in some files which directly called functions. Index: CellRendererPixbuf.chs =================================================================== RCS file: /cvsroot/gtk2hs/gtk2hs/gtk/treeList/CellRendererPixbuf.chs,v retrieving revision 1.6 retrieving revision 1.7 diff -u -d -r1.6 -r1.7 --- CellRendererPixbuf.chs 8 Nov 2002 10:39:22 -0000 1.6 +++ CellRendererPixbuf.chs 9 Jul 2003 22:42:45 -0000 1.7 @@ -36,8 +36,8 @@ ) where import Monad (liftM) -import Foreign -import UTFCForeign +import FFI + import Object (makeNewObject) {#import Hierarchy#} {#import Signal#} Index: CellRendererText.chs =================================================================== RCS file: /cvsroot/gtk2hs/gtk2hs/gtk/treeList/CellRendererText.chs,v retrieving revision 1.9 retrieving revision 1.10 diff -u -d -r1.9 -r1.10 --- CellRendererText.chs 16 Dec 2002 22:25:34 -0000 1.9 +++ CellRendererText.chs 9 Jul 2003 22:42:46 -0000 1.10 @@ -50,13 +50,13 @@ import Maybe (fromMaybe) import Monad (liftM) -import Foreign -import UTFCForeign +import FFI + import Object (makeNewObject) {#import Hierarchy#} {#import Signal#} {#import TreeModel#} -import Structs (treeIterSize, nullForeignPtr) +import Structs (treeIterSize) import CellRenderer (Attribute(..)) import StoreValue (GenericValue(..), TMType(..)) @@ -126,18 +126,21 @@ onEdited cr tm user = connect_PTR_STRING__NONE "edited" False cr $ \strPtr string -> do iterPtr <- mallocBytes treeIterSize - iter <- liftM TreeIter $ newForeignPtr iterPtr (free iterPtr) - res <- liftM toBool $ gtk_tree_model_get_iter_from_string - (toTreeModel tm) iter strPtr + iter <- liftM TreeIter $ newForeignPtr iterPtr (foreignFree iterPtr) + res <- liftM toBool $ withForeignPtr ((unTreeModel . toTreeModel) tm) $ + \tmPtr -> withForeignPtr (unTreeIter iter) $ \iterPtr -> + gtk_tree_model_get_iter_from_string tmPtr iterPtr strPtr if res then user iter string else putStrLn "edited signal: invalid tree path" afterEdited cr tm user = connect_PTR_STRING__NONE "edited" True cr $ \strPtr string -> do iterPtr <- mallocBytes treeIterSize - iter <- liftM TreeIter $ newForeignPtr iterPtr (free iterPtr) - res <- liftM toBool $ gtk_tree_model_get_iter_from_string - (toTreeModel tm) iter strPtr + iter <- liftM TreeIter $ newForeignPtr iterPtr (foreignFree iterPtr) + res <- liftM toBool $ withForeignPtr ((unTreeModel . toTreeModel) tm) $ + \tmPtr -> withForeignPtr (unTreeIter iter) $ \iterPtr -> + gtk_tree_model_get_iter_from_string tmPtr iterPtr strPtr if res then user iter string else putStrLn "edited signal: invalid tree path" +unTreeIter (TreeIter iter) = iter Index: CellRendererToggle.chs =================================================================== RCS file: /cvsroot/gtk2hs/gtk2hs/gtk/treeList/CellRendererToggle.chs,v retrieving revision 1.6 retrieving revision 1.7 diff -u -d -r1.6 -r1.7 --- CellRendererToggle.chs 8 Nov 2002 10:39:22 -0000 1.6 +++ CellRendererToggle.chs 9 Jul 2003 22:42:46 -0000 1.7 @@ -40,8 +40,8 @@ ) where import Monad (liftM) -import Foreign -import UTFCForeign +import FFI + import Object (makeNewObject) {#import Hierarchy#} {#import Signal#} Index: ListStore.chs =================================================================== RCS file: /cvsroot/gtk2hs/gtk2hs/gtk/treeList/ListStore.chs,v retrieving revision 1.10 retrieving revision 1.11 diff -u -d -r1.10 -r1.11 --- ListStore.chs 21 Jan 2003 15:53:26 -0000 1.10 +++ ListStore.chs 9 Jul 2003 22:42:46 -0000 1.11 @@ -46,13 +46,13 @@ import Monad (liftM) import Maybe (fromMaybe) -import Foreign -import UTFCForeign -import GObject (makeNewGObject) +import FFI + +import GObject (makeNewGObject) {#import Hierarchy#} {#import Signal#} {#import TreeModel#} -import Structs (treeIterSize, nullForeignPtr) +import Structs (treeIterSize) import StoreValue (TMType(..), GenericValue(..)) {#import GValue#} (GValue, valueUnset) import GType (GType) @@ -78,7 +78,7 @@ -- listStoreSetValue :: (ListStoreClass ts) => ts -> TreeIter -> Int -> GenericValue -> IO () -listStoreSetValue ts ti col val = with' val $ \vPtr -> do +listStoreSetValue ts ti col val = with val $ \vPtr -> do {#call unsafe list_store_set_value#} (toListStore ts) ti (fromIntegral col) vPtr valueUnset vPtr @@ -120,7 +120,7 @@ listStoreInsert :: (ListStoreClass ts) => ts -> Int -> IO TreeIter listStoreInsert ts pos = do iterPtr <- mallocBytes treeIterSize - iter <- liftM TreeIter $ newForeignPtr iterPtr (free iterPtr) + iter <- liftM TreeIter $ newForeignPtr iterPtr (foreignFree iterPtr) {#call list_store_insert#} (toListStore ts) iter (fromIntegral pos) return iter @@ -131,7 +131,7 @@ listStoreInsertBefore :: (ListStoreClass ts) => ts -> TreeIter -> IO TreeIter listStoreInsertBefore ts sibling = do iterPtr <- mallocBytes treeIterSize - iter <- liftM TreeIter $ newForeignPtr iterPtr (free iterPtr) + iter <- liftM TreeIter $ newForeignPtr iterPtr (foreignFree iterPtr) {#call list_store_insert_before#} (toListStore ts) iter sibling return iter @@ -141,7 +141,7 @@ listStoreInsertAfter :: (ListStoreClass ts) => ts -> TreeIter -> IO TreeIter listStoreInsertAfter ts sibling = do iterPtr <- mallocBytes treeIterSize - iter <- liftM TreeIter $ newForeignPtr iterPtr (free iterPtr) + iter <- liftM TreeIter $ newForeignPtr iterPtr (foreignFree iterPtr) {#call list_store_insert_after#} (toListStore ts) iter sibling return iter @@ -152,7 +152,7 @@ listStorePrepend :: (ListStoreClass ts) => ts -> IO TreeIter listStorePrepend ts = do iterPtr <- mallocBytes treeIterSize - iter <- liftM TreeIter $ newForeignPtr iterPtr (free iterPtr) + iter <- liftM TreeIter $ newForeignPtr iterPtr (foreignFree iterPtr) {#call list_store_prepend#} (toListStore ts) iter return iter @@ -163,7 +163,7 @@ listStoreAppend :: (ListStoreClass ts) => ts -> IO TreeIter listStoreAppend ts = do iterPtr <- mallocBytes treeIterSize - iter <- liftM TreeIter $ newForeignPtr iterPtr (free iterPtr) + iter <- liftM TreeIter $ newForeignPtr iterPtr (foreignFree iterPtr) {#call list_store_append#} (toListStore ts) iter return iter Index: StoreValue.hsc =================================================================== RCS file: /cvsroot/gtk2hs/gtk2hs/gtk/treeList/StoreValue.hsc,v retrieving revision 1.5 retrieving revision 1.6 diff -u -d -r1.5 -r1.6 --- StoreValue.hsc 5 Aug 2002 16:41:35 -0000 1.5 +++ StoreValue.hsc 9 Jul 2003 22:42:46 -0000 1.6 @@ -33,8 +33,8 @@ ) where import Monad (liftM) -import Foreign -import UTFCForeign +import FFI + import Hierarchy import GValue (GValue, GenericValue(..), valueInit) import GValueTypes Index: TreeModel.chs =================================================================== RCS file: /cvsroot/gtk2hs/gtk2hs/gtk/treeList/TreeModel.chs,v retrieving revision 1.9 retrieving revision 1.10 diff -u -d -r1.9 -r1.10 --- TreeModel.chs 8 Mar 2003 17:44:05 -0000 1.9 +++ TreeModel.chs 9 Jul 2003 22:42:46 -0000 1.10 @@ -1,3 +1,4 @@ +{-# OPTIONS -cpp #-} -- -*-haskell-*- -- GIMP Toolkit (GTK) @entry TreeModel@ -- @@ -41,6 +42,8 @@ treeModelGetValue, TreePath(..), createTreePath, -- internal + tree_path_copy, -- internal + tree_path_free, -- internal treePathNew, treePathNewFromString, treePathToString, @@ -74,11 +77,10 @@ import Monad (liftM, when) import Maybe (fromMaybe) -import Foreign -import UTFCForeign +import FFI {#import Hierarchy#} {#import Signal#} -import Structs (treeIterSize, nullForeignPtr) +import Structs (treeIterSize) import StoreValue (TMType) {#import GValue#} (GValue, GenericValue, valueUnset) @@ -132,8 +134,27 @@ tpPtr' <- tree_path_copy tpPtr liftM TreePath $ newForeignPtr tpPtr' (tree_path_free tpPtr') -foreign import ccall "gtk_tree_path_copy" unsafe - tree_path_copy :: Ptr TreePath -> IO (Ptr TreePath) +#if __GLASGOW_HASKELL__>=600 + +foreign import ccall unsafe ">k_tree_path_free" + tree_path_free' :: FinalizerPtr TreePath + +tree_path_free :: Ptr TreePath -> FinalizerPtr TreePath +tree_path_free _ = tree_path_free' + +#elif __GLASGOW_HASKELL__>=504 + +foreign import ccall unsafe "gtk_tree_path_free" + tree_path_free :: Ptr TreePath -> IO () + +#else + +foreign import ccall "gtk_tree_path_free" unsafe + tree_path_free :: Ptr TreePath -> IO () + +#endif + + -- @constructor treePathNew@ Create a new @ref data TreePath@. -- @@ -145,16 +166,13 @@ tpPtr <- {#call unsafe tree_path_new#} liftM TreePath $ newForeignPtr tpPtr (tree_path_free tpPtr) -foreign import ccall "gtk_tree_path_free" unsafe - tree_path_free :: Ptr TreePath -> IO () - -- @constructor treePathNewFromString@ Turn a @literal String@ into a -- @ref data TreePath@. -- treePathNewFromString :: String -> IO TreePath treePathNewFromString path = do tpPtr <- throwIfNull "treePathNewFromString: invalid path given" $ - withCString path {#call unsafe tree_path_new_from_string#} + withUTFString path {#call unsafe tree_path_new_from_string#} liftM TreePath $ newForeignPtr tpPtr (tree_path_free tpPtr) -- @method treePathToString@ Turn a @ref data TreePath@ into a @@ -163,7 +181,7 @@ treePathToString :: TreePath -> IO String treePathToString tp = do strPtr <- {#call tree_path_to_string#} tp - str <- peekCString strPtr + str <- peekUTFString strPtr {#call unsafe g_free#} (castPtr strPtr) return str @@ -203,6 +221,19 @@ tpPtr' <- {#call unsafe tree_path_copy#} tp liftM TreePath $ newForeignPtr tpPtr' (tree_path_free tpPtr') +#if __GLASGOW_HASKELL__>=504 + +foreign import ccall unsafe "gtk_tree_path_copy" + tree_path_copy :: Ptr TreePath -> IO (Ptr TreePath) + +#else + +foreign import ccall "gtk_tree_path_copy" unsafe + tree_path_copy :: Ptr TreePath -> IO (Ptr TreePath) + +#endif + + treePathCompare :: TreePath -> TreePath -> IO Ordering treePathCompare tp1 tp2 = do res <- {#call unsafe tree_path_compare#} tp1 tp2 @@ -229,12 +260,39 @@ tiPtr' <- tree_iter_copy tiPtr liftM TreeIter $ newForeignPtr tiPtr' (tree_iter_free tiPtr') -foreign import ccall "gtk_tree_iter_free" unsafe - tree_iter_free :: Ptr TreeIter -> IO () + +#if __GLASGOW_HASKELL__>=504 + +foreign import ccall unsafe "gtk_tree_iter_copy" + tree_iter_copy :: Ptr TreeIter -> IO (Ptr TreeIter) + +#else foreign import ccall "gtk_tree_iter_copy" unsafe tree_iter_copy :: Ptr TreeIter -> IO (Ptr TreeIter) +#endif + +#if __GLASGOW_HASKELL__>=600 + +foreign import ccall unsafe ">k_tree_iter_free" + tree_iter_free' :: FinalizerPtr TreeIter + +tree_iter_free :: Ptr TreeIter -> FinalizerPtr TreeIter +tree_iter_free _ = tree_iter_free' + +#elif __GLASGOW_HASKELL__>=504 + +foreign import ccall unsafe "gtk_tree_iter_free" + tree_iter_free :: Ptr TreeIter -> IO () + +#else + +foreign import ccall "gtk_tree_iter_free" unsafe + tree_iter_free :: Ptr TreeIter -> IO () + +#endif + -- @method treeModelGetIter@ Turn a @ref data TreePath@ into a -- @ref data TreeIter@. @@ -244,7 +302,7 @@ treeModelGetIter :: TreeModelClass tm => tm -> TreePath -> IO (Maybe TreeIter) treeModelGetIter tm tp = do iterPtr <- mallocBytes treeIterSize - iter <- liftM TreeIter $ newForeignPtr iterPtr (free iterPtr) + iter <- liftM TreeIter $ newForeignPtr iterPtr (foreignFree iterPtr) res <- {#call unsafe tree_model_get_iter#} (toTreeModel tm) iter tp return $ if (toBool res) then Just iter else Nothing @@ -257,8 +315,8 @@ IO (Maybe TreeIter) treeModelGetIterFromString tm str = do iterPtr <- mallocBytes treeIterSize - iter <- liftM TreeIter $ newForeignPtr iterPtr (free iterPtr) - res <- withCString str $ \strPtr -> + iter <- liftM TreeIter $ newForeignPtr iterPtr (foreignFree iterPtr) + res <- withUTFString str $ \strPtr -> {#call unsafe tree_model_get_iter_from_string#} (toTreeModel tm) iter strPtr return $ if (toBool res) then Just iter else Nothing @@ -271,7 +329,7 @@ treeModelGetIterFirst :: TreeModelClass tm => tm -> IO (Maybe TreeIter) treeModelGetIterFirst tm = do iterPtr <- mallocBytes treeIterSize - iter <- liftM TreeIter $ newForeignPtr iterPtr (free iterPtr) + iter <- liftM TreeIter $ newForeignPtr iterPtr (foreignFree iterPtr) res <- {#call unsafe tree_model_get_iter_first#} (toTreeModel tm) iter return $ if (toBool res) then Just iter else Nothing @@ -296,7 +354,7 @@ IO (Maybe TreeIter) treeModelIterChildren tm parent = do iterPtr <- mallocBytes treeIterSize - iter <- liftM TreeIter $ newForeignPtr iterPtr (free iterPtr) + iter <- liftM TreeIter $ newForeignPtr iterPtr (foreignFree iterPtr) res <- {#call unsafe tree_model_iter_children#} (toTreeModel tm) iter parent return $ if (toBool res) then Just iter else Nothing @@ -325,7 +383,7 @@ tm -> Maybe TreeIter -> Int -> IO (Maybe TreeIter) treeModelIterNthChild tm parent n = do iterPtr <- mallocBytes treeIterSize - iter <- liftM TreeIter $ newForeignPtr iterPtr (free iterPtr) + iter <- liftM TreeIter $ newForeignPtr iterPtr (foreignFree iterPtr) res <- {#call unsafe tree_model_iter_nth_child#} (toTreeModel tm) iter (fromMaybe (TreeIter nullForeignPtr) parent) (fromIntegral n) return $ if (toBool res) then Just iter else Nothing @@ -336,7 +394,7 @@ TreeIter -> IO (Maybe TreeIter) treeModelIterParent tm child = do iterPtr <- mallocBytes treeIterSize - iter <- liftM TreeIter $ newForeignPtr iterPtr (free iterPtr) + iter <- liftM TreeIter $ newForeignPtr iterPtr (foreignFree iterPtr) res <- {#call unsafe tree_model_iter_parent#} (toTreeModel tm) iter child return $ if (toBool res) then Just iter else Nothing Index: TreeModelSort.chs =================================================================== RCS file: /cvsroot/gtk2hs/gtk2hs/gtk/treeList/TreeModelSort.chs,v retrieving revision 1.1 retrieving revision 1.2 diff -u -d -r1.1 -r1.2 --- TreeModelSort.chs 3 Dec 2002 13:42:35 -0000 1.1 +++ TreeModelSort.chs 9 Jul 2003 22:42:46 -0000 1.2 @@ -35,8 +35,8 @@ ) where import Monad (liftM, when) -import Foreign -import UTFCForeign +import FFI + {#import Hierarchy#} import Signal Index: TreeSelection.chs =================================================================== RCS file: /cvsroot/gtk2hs/gtk2hs/gtk/treeList/TreeSelection.chs,v retrieving revision 1.6 retrieving revision 1.7 diff -u -d -r1.6 -r1.7 --- TreeSelection.chs 8 May 2003 07:25:33 -0000 1.6 +++ TreeSelection.chs 9 Jul 2003 22:42:46 -0000 1.7 @@ -1,3 +1,4 @@ +{-# OPTIONS -cpp #-} -- -*-haskell-*- -- GIMP Toolkit (GTK) @entry TreeSelection@ -- @@ -60,14 +61,14 @@ import Monad (liftM) import LocalData(newIORef, readIORef, writeIORef) -import Foreign -import UTFCForeign +import FFI + import Object (makeNewObject) {#import Hierarchy#} {#import Signal#} import Enums (SelectionMode(..)) {#import TreeModel#} -import Structs (treeIterSize, nullForeignPtr) +import Structs (treeIterSize) import General (mkDestructor) {# context lib="gtk" prefix="gtk" #} @@ -107,15 +108,17 @@ type TreeSelectionCB = TreePath -> IO () {#pointer TreeSelectionFunc#} -foreign export dynamic mkTreeSelectionFunc :: +#if __GLASGOW_HASKELL__>=600 + +foreign import ccall "wrapper" mkTreeSelectionFunc :: (Ptr () -> Ptr () -> Ptr TreePath -> Ptr () -> IO ())-> IO TreeSelectionFunc -foreign import ccall "gtk_tree_path_free" unsafe - tree_path_free :: Ptr TreePath -> IO () +#else -foreign import ccall "gtk_tree_path_copy" unsafe - tree_path_copy :: Ptr TreePath -> IO (Ptr TreePath) +foreign export dynamic mkTreeSelectionFunc :: + (Ptr () -> Ptr () -> Ptr TreePath -> Ptr () -> IO ())-> IO TreeSelectionFunc +#endif -- @method treeSelectionGetTreeView@ Retrieve the TreeView widget that this -- TreeSelection works on. @@ -131,7 +134,7 @@ IO (Maybe TreeIter) treeSelectionGetSelected ts = do iterPtr <- mallocBytes treeIterSize - iter <- liftM TreeIter $ newForeignPtr iterPtr (free iterPtr) + iter <- liftM TreeIter $ newForeignPtr iterPtr (foreignFree iterPtr) res <- {#call tree_selection_get_selected#} (toTreeSelection ts) (nullPtr) iter return $ if (toBool res) then Just iter else Nothing @@ -149,7 +152,7 @@ -- a constant member of Selection this does not matter. iterPtr <- mallocBytes treeIterSize copyBytes iterPtr ti treeIterSize - iter <- liftM TreeIter $ newForeignPtr iterPtr (free iterPtr) + iter <- liftM TreeIter $ newForeignPtr iterPtr (foreignFree iterPtr) fun iter ) {#call tree_selection_selected_foreach#} (toTreeSelection ts) fPtr nullPtr Index: TreeStore.chs =================================================================== RCS file: /cvsroot/gtk2hs/gtk2hs/gtk/treeList/TreeStore.chs,v retrieving revision 1.8 retrieving revision 1.9 diff -u -d -r1.8 -r1.9 --- TreeStore.chs 21 Jan 2003 15:53:26 -0000 1.8 +++ TreeStore.chs 9 Jul 2003 22:42:46 -0000 1.9 @@ -46,13 +46,13 @@ import Monad (liftM) import Maybe (fromMaybe) -import Foreign -import UTFCForeign +import FFI + import GObject (makeNewGObject) {#import Hierarchy#} {#import Signal#} {#import TreeModel#} -import Structs (treeIterSize, nullForeignPtr) +import Structs (treeIterSize) import StoreValue (TMType(..), GenericValue(..)) {#import GValue#} (GValue, valueUnset) import GType (GType) @@ -77,7 +77,7 @@ -- treeStoreSetValue :: (TreeStoreClass ts) => ts -> TreeIter -> Int -> GenericValue -> IO () -treeStoreSetValue ts ti col val = with' val $ \vPtr -> do +treeStoreSetValue ts ti col val = with val $ \vPtr -> do {#call unsafe tree_store_set_value#} (toTreeStore ts) ti (fromIntegral col) vPtr valueUnset vPtr @@ -120,7 +120,7 @@ IO TreeIter treeStoreInsert ts parent pos = do iterPtr <- mallocBytes treeIterSize - iter <- liftM TreeIter $ newForeignPtr iterPtr (free iterPtr) + iter <- liftM TreeIter $ newForeignPtr iterPtr (foreignFree iterPtr) {#call tree_store_insert#} (toTreeStore ts) iter (fromMaybe (TreeIter nullForeignPtr) parent) (fromIntegral pos) return iter @@ -132,7 +132,7 @@ treeStoreInsertBefore :: (TreeStoreClass ts) => ts -> TreeIter -> IO TreeIter treeStoreInsertBefore ts sibling = do iterPtr <- mallocBytes treeIterSize - iter <- liftM TreeIter $ newForeignPtr iterPtr (free iterPtr) + iter <- liftM TreeIter $ newForeignPtr iterPtr (foreignFree iterPtr) {#call tree_store_insert_before#} (toTreeStore ts) iter (TreeIter nullForeignPtr) sibling return iter @@ -142,7 +142,7 @@ treeStoreInsertAfter :: (TreeStoreClass ts) => ts -> TreeIter -> IO TreeIter treeStoreInsertAfter ts sibling = do iterPtr <- mallocBytes treeIterSize - iter <- liftM TreeIter $ newForeignPtr iterPtr (free iterPtr) + iter <- liftM TreeIter $ newForeignPtr iterPtr (foreignFree iterPtr) {#call tree_store_insert_after#} (toTreeStore ts) iter (TreeIter nullForeignPtr) sibling return iter @@ -154,7 +154,7 @@ treeStorePrepend :: (TreeStoreClass ts) => ts -> Maybe TreeIter -> IO TreeIter treeStorePrepend ts parent = do iterPtr <- mallocBytes treeIterSize - iter <- liftM TreeIter $ newForeignPtr iterPtr (free iterPtr) + iter <- liftM TreeIter $ newForeignPtr iterPtr (foreignFree iterPtr) {#call tree_store_prepend#} (toTreeStore ts) iter (fromMaybe (TreeIter nullForeignPtr) parent) return iter @@ -166,7 +166,7 @@ treeStoreAppend :: (TreeStoreClass ts) => ts -> Maybe TreeIter -> IO TreeIter treeStoreAppend ts parent = do iterPtr <- mallocBytes treeIterSize - iter <- liftM TreeIter $ newForeignPtr iterPtr (free iterPtr) + iter <- liftM TreeIter $ newForeignPtr iterPtr (foreignFree iterPtr) {#call tree_store_append#} (toTreeStore ts) iter (fromMaybe (TreeIter nullForeignPtr) parent) return iter Index: TreeView.chs =================================================================== RCS file: /cvsroot/gtk2hs/gtk2hs/gtk/treeList/TreeView.chs,v retrieving revision 1.14 retrieving revision 1.15 diff -u -d -r1.14 -r1.15 --- TreeView.chs 22 May 2003 09:19:18 -0000 1.14 +++ TreeView.chs 9 Jul 2003 22:42:46 -0000 1.15 @@ -146,10 +146,10 @@ import Monad (liftM, mapM) import Maybe (fromMaybe) import LocalData(newIORef, readIORef, writeIORef) -import Foreign -import UTFCForeign +import FFI + import General (mkDestructor) -import Structs (nullForeignPtr, Point, Rectangle) +import Structs (Point, Rectangle) import GObject (makeNewGObject, objectRef, objectUnref) import Object (makeNewObject) import GList (GList, fromGList) @@ -430,10 +430,20 @@ {#pointer TreeViewColumnDropFunc#} +#if __GLASGOW_HASKELL__>=600 + +foreign import ccall "wrapper" mkTreeViewColumnDropFunc :: + (Ptr () -> Ptr TreeViewColumn -> Ptr TreeViewColumn -> Ptr TreeViewColumn -> + Ptr () -> IO {#type gboolean#}) -> IO TreeViewColumnDropFunc + +#else + foreign export dynamic mkTreeViewColumnDropFunc :: (Ptr () -> Ptr TreeViewColumn -> Ptr TreeViewColumn -> Ptr TreeViewColumn -> Ptr () -> IO {#type gboolean#}) -> IO TreeViewColumnDropFunc +#endif + -- @method treeViewScrollToPoint@ Scroll to a coordinate. -- @@ -526,9 +536,6 @@ makeNewObject mkTreeViewColumn (return tvcPtr) return (tp,tvc) -foreign import ccall "gtk_tree_path_free" unsafe - tree_path_free :: Ptr TreePath -> IO () - -- @method treeViewRowActivated@ Emit the activated signal on a cell. -- treeViewRowActivated :: TreeViewClass tv => tv -> TreePath -> @@ -590,10 +597,20 @@ {#pointer TreeViewMappingFunc#} +#if __GLASGOW_HASKELL__>=600 + +foreign import ccall "wrapper" mkTreeViewMappingFunc :: + (Ptr TreeView -> Ptr TreePath -> Ptr () -> IO ()) -> + IO TreeViewMappingFunc + +#else + foreign export dynamic mkTreeViewMappingFunc :: (Ptr TreeView -> Ptr TreePath -> Ptr () -> IO ()) -> IO TreeViewMappingFunc +#endif + -- @method treeViewRowExpanded@ Check if row is expanded. -- treeViewRowExpanded :: TreeViewClass tv => tv -> TreePath -> IO Bool @@ -781,7 +798,7 @@ IO () treeViewSetSearchEqualFunc tv pred = do fPtr <- mkTreeViewSearchEqualFunc (\_ col keyPtr itPtr _ -> do - key <- peekCString keyPtr + key <- peekUTFString keyPtr iter <- createTreeIter itPtr liftM fromBool $ pred (fromIntegral col) key iter) dRef <- newIORef nullFunPtr @@ -795,10 +812,19 @@ {#pointer TreeViewSearchEqualFunc#} +#if __GLASGOW_HASKELL__>=600 + +foreign import ccall "wrapper" mkTreeViewSearchEqualFunc :: + (Ptr TreeModel -> {#type gint#} -> CString -> Ptr TreeIter -> Ptr () -> + IO {#type gboolean#}) -> IO TreeViewSearchEqualFunc + +#else + foreign export dynamic mkTreeViewSearchEqualFunc :: (Ptr TreeModel -> {#type gint#} -> CString -> Ptr TreeIter -> Ptr () -> IO {#type gboolean#}) -> IO TreeViewSearchEqualFunc +#endif -- @signal connectToColumnsChanged@ The user has dragged a column to another -- position. Index: TreeViewColumn.chs =================================================================== RCS file: /cvsroot/gtk2hs/gtk2hs/gtk/treeList/TreeViewColumn.chs,v retrieving revision 1.6 retrieving revision 1.7 diff -u -d -r1.6 -r1.7 --- TreeViewColumn.chs 8 Nov 2002 10:39:22 -0000 1.6 +++ TreeViewColumn.chs 9 Jul 2003 22:42:46 -0000 1.7 @@ -90,8 +90,8 @@ ) where import Monad (liftM) -import Foreign -import UTFCForeign +import FFI + import Object (makeNewObject) {#import Hierarchy#} {#import Signal#} @@ -176,7 +176,7 @@ treeViewColumnAddAttribute :: (TreeViewColumnClass tvc, CellRendererClass cr) => tvc -> cr -> String -> Int -> IO () treeViewColumnAddAttribute tvc cr attr col = - withCString attr $ \cstr -> {#call unsafe tree_view_column_add_attribute#} + withUTFString attr $ \cstr -> {#call unsafe tree_view_column_add_attribute#} (toTreeViewColumn tvc) (toCellRenderer cr) cstr (fromIntegral col) -- @method treeViewColumnAddAttributes@ Insert attributes @ref arg attribs@ @@ -334,7 +334,7 @@ -- has not been set. -- treeViewColumnSetTitle :: TreeViewColumnClass tvc => tvc -> String -> IO () -treeViewColumnSetTitle tvc title = withCString title $ +treeViewColumnSetTitle tvc title = withUTFString title $ {#call tree_view_column_set_title#} (toTreeViewColumn tvc) -- @method treeViewColumnGetTitle@ Get the widget's title. @@ -342,7 +342,7 @@ treeViewColumnGetTitle :: TreeViewColumnClass tvc => tvc -> IO (Maybe String) treeViewColumnGetTitle tvc = do strPtr <- {#call unsafe tree_view_column_get_title#} (toTreeViewColumn tvc) - if strPtr==nullPtr then return Nothing else liftM Just $ peekCString strPtr + if strPtr==nullPtr then return Nothing else liftM Just $ peekUTFString strPtr -- @method treeViewColumnSetClickable@ Set if the column should be sensitive -- to mouse clicks. |