{- | Copyright : Will Thompson, Iñaki García Etxebarria and Jonas Platte License : LGPL-2.1 Maintainer : Iñaki García Etxebarria (garetxe@gmail.com) -} module GI.Gtk.Interfaces.TreeSortable ( -- * Exported types TreeSortable(..) , noTreeSortable , TreeSortableK , toTreeSortable , -- * Methods -- ** treeSortableGetSortColumnId treeSortableGetSortColumnId , -- ** treeSortableHasDefaultSortFunc treeSortableHasDefaultSortFunc , -- ** treeSortableSetDefaultSortFunc treeSortableSetDefaultSortFunc , -- ** treeSortableSetSortColumnId treeSortableSetSortColumnId , -- ** treeSortableSetSortFunc treeSortableSetSortFunc , -- ** treeSortableSortColumnChanged treeSortableSortColumnChanged , -- * Signals -- ** SortColumnChanged TreeSortableSortColumnChangedCallback , TreeSortableSortColumnChangedCallbackC , TreeSortableSortColumnChangedSignalInfo , afterTreeSortableSortColumnChanged , mkTreeSortableSortColumnChangedCallback , noTreeSortableSortColumnChangedCallback , onTreeSortableSortColumnChanged , treeSortableSortColumnChangedCallbackWrapper, treeSortableSortColumnChangedClosure , ) where import Prelude () import Data.GI.Base.ShortPrelude import qualified Data.Text as T import qualified Data.ByteString.Char8 as B import qualified Data.Map as Map import GI.Gtk.Types import GI.Gtk.Callbacks import qualified GI.GLib as GLib import qualified GI.GObject as GObject -- interface TreeSortable newtype TreeSortable = TreeSortable (ForeignPtr TreeSortable) noTreeSortable :: Maybe TreeSortable noTreeSortable = Nothing -- signal TreeSortable::sort-column-changed type TreeSortableSortColumnChangedCallback = IO () noTreeSortableSortColumnChangedCallback :: Maybe TreeSortableSortColumnChangedCallback noTreeSortableSortColumnChangedCallback = Nothing type TreeSortableSortColumnChangedCallbackC = Ptr () -> -- object Ptr () -> -- user_data IO () foreign import ccall "wrapper" mkTreeSortableSortColumnChangedCallback :: TreeSortableSortColumnChangedCallbackC -> IO (FunPtr TreeSortableSortColumnChangedCallbackC) treeSortableSortColumnChangedClosure :: TreeSortableSortColumnChangedCallback -> IO Closure treeSortableSortColumnChangedClosure cb = newCClosure =<< mkTreeSortableSortColumnChangedCallback wrapped where wrapped = treeSortableSortColumnChangedCallbackWrapper cb treeSortableSortColumnChangedCallbackWrapper :: TreeSortableSortColumnChangedCallback -> Ptr () -> Ptr () -> IO () treeSortableSortColumnChangedCallbackWrapper _cb _ _ = do _cb onTreeSortableSortColumnChanged :: (GObject a, MonadIO m) => a -> TreeSortableSortColumnChangedCallback -> m SignalHandlerId onTreeSortableSortColumnChanged obj cb = liftIO $ connectTreeSortableSortColumnChanged obj cb SignalConnectBefore afterTreeSortableSortColumnChanged :: (GObject a, MonadIO m) => a -> TreeSortableSortColumnChangedCallback -> m SignalHandlerId afterTreeSortableSortColumnChanged obj cb = connectTreeSortableSortColumnChanged obj cb SignalConnectAfter connectTreeSortableSortColumnChanged :: (GObject a, MonadIO m) => a -> TreeSortableSortColumnChangedCallback -> SignalConnectMode -> m SignalHandlerId connectTreeSortableSortColumnChanged obj cb after = liftIO $ do cb' <- mkTreeSortableSortColumnChangedCallback (treeSortableSortColumnChangedCallbackWrapper cb) connectSignalFunPtr obj "sort-column-changed" cb' after type instance AttributeList TreeSortable = TreeSortableAttributeList type TreeSortableAttributeList = ('[ ] :: [(Symbol, *)]) data TreeSortableSortColumnChangedSignalInfo instance SignalInfo TreeSortableSortColumnChangedSignalInfo where type HaskellCallbackType TreeSortableSortColumnChangedSignalInfo = TreeSortableSortColumnChangedCallback connectSignal _ = connectTreeSortableSortColumnChanged type instance SignalList TreeSortable = TreeSortableSignalList type TreeSortableSignalList = ('[ '("notify", GObject.ObjectNotifySignalInfo), '("row-changed", TreeModelRowChangedSignalInfo), '("row-deleted", TreeModelRowDeletedSignalInfo), '("row-has-child-toggled", TreeModelRowHasChildToggledSignalInfo), '("row-inserted", TreeModelRowInsertedSignalInfo), '("sort-column-changed", TreeSortableSortColumnChangedSignalInfo), '("notify::[property]", GObjectNotifySignalInfo)] :: [(Symbol, *)]) foreign import ccall "gtk_tree_sortable_get_type" c_gtk_tree_sortable_get_type :: IO GType type instance ParentTypes TreeSortable = TreeSortableParentTypes type TreeSortableParentTypes = '[TreeModel, GObject.Object] instance GObject TreeSortable where gobjectIsInitiallyUnowned _ = False gobjectType _ = c_gtk_tree_sortable_get_type class GObject o => TreeSortableK o instance (GObject o, IsDescendantOf TreeSortable o) => TreeSortableK o toTreeSortable :: TreeSortableK o => o -> IO TreeSortable toTreeSortable = unsafeCastTo TreeSortable -- method TreeSortable::get_sort_column_id -- method type : OrdinaryMethod -- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "TreeSortable", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "sort_column_id", argType = TBasicType TInt32, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferEverything},Arg {argName = "order", argType = TInterface "Gtk" "SortType", direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferEverything}] -- Lengths : [] -- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "TreeSortable", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}] -- returnType : TBasicType TBoolean -- throws : False -- Skip return : False foreign import ccall "gtk_tree_sortable_get_sort_column_id" gtk_tree_sortable_get_sort_column_id :: Ptr TreeSortable -> -- _obj : TInterface "Gtk" "TreeSortable" Ptr Int32 -> -- sort_column_id : TBasicType TInt32 Ptr CUInt -> -- order : TInterface "Gtk" "SortType" IO CInt treeSortableGetSortColumnId :: (MonadIO m, TreeSortableK a) => a -> -- _obj m (Bool,Int32,SortType) treeSortableGetSortColumnId _obj = liftIO $ do let _obj' = unsafeManagedPtrCastPtr _obj sort_column_id <- allocMem :: IO (Ptr Int32) order <- allocMem :: IO (Ptr CUInt) result <- gtk_tree_sortable_get_sort_column_id _obj' sort_column_id order let result' = (/= 0) result sort_column_id' <- peek sort_column_id order' <- peek order let order'' = (toEnum . fromIntegral) order' touchManagedPtr _obj freeMem sort_column_id freeMem order return (result', sort_column_id', order'') -- method TreeSortable::has_default_sort_func -- method type : OrdinaryMethod -- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "TreeSortable", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}] -- Lengths : [] -- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "TreeSortable", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}] -- returnType : TBasicType TBoolean -- throws : False -- Skip return : False foreign import ccall "gtk_tree_sortable_has_default_sort_func" gtk_tree_sortable_has_default_sort_func :: Ptr TreeSortable -> -- _obj : TInterface "Gtk" "TreeSortable" IO CInt treeSortableHasDefaultSortFunc :: (MonadIO m, TreeSortableK a) => a -> -- _obj m Bool treeSortableHasDefaultSortFunc _obj = liftIO $ do let _obj' = unsafeManagedPtrCastPtr _obj result <- gtk_tree_sortable_has_default_sort_func _obj' let result' = (/= 0) result touchManagedPtr _obj return result' -- method TreeSortable::set_default_sort_func -- method type : OrdinaryMethod -- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "TreeSortable", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "sort_func", argType = TInterface "Gtk" "TreeIterCompareFunc", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeNotified, argClosure = 2, argDestroy = 3, transfer = TransferNothing},Arg {argName = "user_data", argType = TBasicType TVoid, direction = DirectionIn, mayBeNull = True, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "destroy", argType = TInterface "GLib" "DestroyNotify", direction = DirectionIn, mayBeNull = True, argScope = ScopeTypeAsync, argClosure = -1, argDestroy = -1, transfer = TransferNothing}] -- Lengths : [] -- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "TreeSortable", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "sort_func", argType = TInterface "Gtk" "TreeIterCompareFunc", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeNotified, argClosure = 2, argDestroy = 3, transfer = TransferNothing}] -- returnType : TBasicType TVoid -- throws : False -- Skip return : False foreign import ccall "gtk_tree_sortable_set_default_sort_func" gtk_tree_sortable_set_default_sort_func :: Ptr TreeSortable -> -- _obj : TInterface "Gtk" "TreeSortable" FunPtr TreeIterCompareFuncC -> -- sort_func : TInterface "Gtk" "TreeIterCompareFunc" Ptr () -> -- user_data : TBasicType TVoid FunPtr GLib.DestroyNotifyC -> -- destroy : TInterface "GLib" "DestroyNotify" IO () treeSortableSetDefaultSortFunc :: (MonadIO m, TreeSortableK a) => a -> -- _obj TreeIterCompareFunc -> -- sort_func m () treeSortableSetDefaultSortFunc _obj sort_func = liftIO $ do let _obj' = unsafeManagedPtrCastPtr _obj sort_func' <- mkTreeIterCompareFunc (treeIterCompareFuncWrapper Nothing sort_func) let user_data = castFunPtrToPtr sort_func' let destroy = safeFreeFunPtrPtr gtk_tree_sortable_set_default_sort_func _obj' sort_func' user_data destroy touchManagedPtr _obj return () -- method TreeSortable::set_sort_column_id -- method type : OrdinaryMethod -- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "TreeSortable", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "sort_column_id", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "order", argType = TInterface "Gtk" "SortType", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}] -- Lengths : [] -- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "TreeSortable", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "sort_column_id", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "order", argType = TInterface "Gtk" "SortType", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}] -- returnType : TBasicType TVoid -- throws : False -- Skip return : False foreign import ccall "gtk_tree_sortable_set_sort_column_id" gtk_tree_sortable_set_sort_column_id :: Ptr TreeSortable -> -- _obj : TInterface "Gtk" "TreeSortable" Int32 -> -- sort_column_id : TBasicType TInt32 CUInt -> -- order : TInterface "Gtk" "SortType" IO () treeSortableSetSortColumnId :: (MonadIO m, TreeSortableK a) => a -> -- _obj Int32 -> -- sort_column_id SortType -> -- order m () treeSortableSetSortColumnId _obj sort_column_id order = liftIO $ do let _obj' = unsafeManagedPtrCastPtr _obj let order' = (fromIntegral . fromEnum) order gtk_tree_sortable_set_sort_column_id _obj' sort_column_id order' touchManagedPtr _obj return () -- method TreeSortable::set_sort_func -- method type : OrdinaryMethod -- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "TreeSortable", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "sort_column_id", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "sort_func", argType = TInterface "Gtk" "TreeIterCompareFunc", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeNotified, argClosure = 3, argDestroy = 4, transfer = TransferNothing},Arg {argName = "user_data", argType = TBasicType TVoid, direction = DirectionIn, mayBeNull = True, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "destroy", argType = TInterface "GLib" "DestroyNotify", direction = DirectionIn, mayBeNull = True, argScope = ScopeTypeAsync, argClosure = -1, argDestroy = -1, transfer = TransferNothing}] -- Lengths : [] -- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "TreeSortable", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "sort_column_id", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "sort_func", argType = TInterface "Gtk" "TreeIterCompareFunc", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeNotified, argClosure = 3, argDestroy = 4, transfer = TransferNothing}] -- returnType : TBasicType TVoid -- throws : False -- Skip return : False foreign import ccall "gtk_tree_sortable_set_sort_func" gtk_tree_sortable_set_sort_func :: Ptr TreeSortable -> -- _obj : TInterface "Gtk" "TreeSortable" Int32 -> -- sort_column_id : TBasicType TInt32 FunPtr TreeIterCompareFuncC -> -- sort_func : TInterface "Gtk" "TreeIterCompareFunc" Ptr () -> -- user_data : TBasicType TVoid FunPtr GLib.DestroyNotifyC -> -- destroy : TInterface "GLib" "DestroyNotify" IO () treeSortableSetSortFunc :: (MonadIO m, TreeSortableK a) => a -> -- _obj Int32 -> -- sort_column_id TreeIterCompareFunc -> -- sort_func m () treeSortableSetSortFunc _obj sort_column_id sort_func = liftIO $ do let _obj' = unsafeManagedPtrCastPtr _obj sort_func' <- mkTreeIterCompareFunc (treeIterCompareFuncWrapper Nothing sort_func) let user_data = castFunPtrToPtr sort_func' let destroy = safeFreeFunPtrPtr gtk_tree_sortable_set_sort_func _obj' sort_column_id sort_func' user_data destroy touchManagedPtr _obj return () -- method TreeSortable::sort_column_changed -- method type : OrdinaryMethod -- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "TreeSortable", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}] -- Lengths : [] -- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "TreeSortable", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}] -- returnType : TBasicType TVoid -- throws : False -- Skip return : False foreign import ccall "gtk_tree_sortable_sort_column_changed" gtk_tree_sortable_sort_column_changed :: Ptr TreeSortable -> -- _obj : TInterface "Gtk" "TreeSortable" IO () treeSortableSortColumnChanged :: (MonadIO m, TreeSortableK a) => a -> -- _obj m () treeSortableSortColumnChanged _obj = liftIO $ do let _obj' = unsafeManagedPtrCastPtr _obj gtk_tree_sortable_sort_column_changed _obj' touchManagedPtr _obj return ()