{-# LINE 2 "./Graphics/UI/Gtk/ModelView/TreeSortable.chs" #-}
module Graphics.UI.Gtk.ModelView.TreeSortable (
TreeSortable,
TreeSortableClass,
castToTreeSortable, gTypeTreeSortable,
toTreeSortable,
SortColumnId,
treeSortableDefaultSortColumnId,
treeSortableGetSortColumnId,
treeSortableSetSortColumnId,
treeSortableSetSortFunc,
treeSortableSetDefaultSortFunc,
treeSortableHasDefaultSortFunc,
treeSortableSortColumnChanged,
sortColumnChanged
) where
import Control.Monad (liftM)
import System.Glib.FFI
import Graphics.UI.Gtk.Types
{-# LINE 95 "./Graphics/UI/Gtk/ModelView/TreeSortable.chs" #-}
import Graphics.UI.Gtk.General.Enums (SortType(..))
import Graphics.UI.Gtk.Signals
{-# LINE 97 "./Graphics/UI/Gtk/ModelView/TreeSortable.chs" #-}
import Graphics.UI.Gtk.ModelView.Types
{-# LINE 98 "./Graphics/UI/Gtk/ModelView/TreeSortable.chs" #-}
import Graphics.UI.Gtk.General.Structs (SortColumnId,
treeSortableDefaultSortColumnId )
{-# LINE 102 "./Graphics/UI/Gtk/ModelView/TreeSortable.chs" #-}
treeSortableGetSortColumnId :: TreeSortableClass self => self
-> IO (SortType, Bool, SortColumnId)
treeSortableGetSortColumnId self =
alloca $ \orderPtr -> alloca $ \sortColumnIdPtr -> do
columnSet <- liftM toBool $ (\(TreeSortable arg1) arg2 arg3 -> withForeignPtr arg1 $ \argPtr1 ->gtk_tree_sortable_get_sort_column_id argPtr1 arg2 arg3)
{-# LINE 119 "./Graphics/UI/Gtk/ModelView/TreeSortable.chs" #-}
(toTreeSortable self)
sortColumnIdPtr
orderPtr
order <- peek orderPtr
sortColumnId <- peek sortColumnIdPtr
return (toEnum (fromIntegral order), columnSet, fromIntegral sortColumnId)
treeSortableSetSortColumnId :: TreeSortableClass self => self
-> SortColumnId
-> SortType
-> IO ()
treeSortableSetSortColumnId self sortColumnId order =
(\(TreeSortable arg1) arg2 arg3 -> withForeignPtr arg1 $ \argPtr1 ->gtk_tree_sortable_set_sort_column_id argPtr1 arg2 arg3)
{-# LINE 140 "./Graphics/UI/Gtk/ModelView/TreeSortable.chs" #-}
(toTreeSortable self)
(fromIntegral sortColumnId)
((fromIntegral . fromEnum) order)
treeSortableSetSortFunc :: TreeSortableClass self => self
-> SortColumnId
-> (TreeIter -> TreeIter -> IO Ordering)
-> IO ()
treeSortableSetSortFunc self sortColumnId sortFunc = do
fPtr <- mkTreeIterCompareFunc (\_ iter1Ptr iter2Ptr _ -> do
iter1 <- peek iter1Ptr
iter2 <- peek iter2Ptr
liftM orderToGInt $ sortFunc iter1 iter2)
(\(TreeSortable arg1) arg2 arg3 arg4 arg5 -> withForeignPtr arg1 $ \argPtr1 ->gtk_tree_sortable_set_sort_func argPtr1 arg2 arg3 arg4 arg5)
{-# LINE 162 "./Graphics/UI/Gtk/ModelView/TreeSortable.chs" #-}
(toTreeSortable self)
(fromIntegral sortColumnId)
fPtr (castFunPtrToPtr fPtr) destroyFunPtr
orderToGInt :: Ordering -> (CInt)
{-# LINE 167 "./Graphics/UI/Gtk/ModelView/TreeSortable.chs" #-}
orderToGInt LT = -1
orderToGInt EQ = 0
orderToGInt GT = 1
type TreeIterCompareFunc = FunPtr (((Ptr TreeModel) -> ((Ptr TreeIter) -> ((Ptr TreeIter) -> ((Ptr ()) -> (IO CInt))))))
{-# LINE 172 "./Graphics/UI/Gtk/ModelView/TreeSortable.chs" #-}
foreign import ccall "wrapper" mkTreeIterCompareFunc ::
(Ptr TreeModel -> Ptr TreeIter -> Ptr TreeIter -> Ptr () -> IO (CInt)) ->
IO TreeIterCompareFunc
treeSortableSetDefaultSortFunc :: TreeSortableClass self => self
-> Maybe (TreeIter -> TreeIter -> IO Ordering)
-> IO ()
treeSortableSetDefaultSortFunc self Nothing = do
(\(TreeSortable arg1) arg2 arg3 arg4 -> withForeignPtr arg1 $ \argPtr1 ->gtk_tree_sortable_set_default_sort_func argPtr1 arg2 arg3 arg4)
{-# LINE 194 "./Graphics/UI/Gtk/ModelView/TreeSortable.chs" #-}
(toTreeSortable self)
nullFunPtr nullPtr nullFunPtr
treeSortableSetDefaultSortFunc self (Just sortFunc) = do
fPtr <- mkTreeIterCompareFunc (\_ iter1Ptr iter2Ptr _ -> do
iter1 <- peek iter1Ptr
iter2 <- peek iter2Ptr
liftM orderToGInt $ sortFunc iter1 iter2)
(\(TreeSortable arg1) arg2 arg3 arg4 -> withForeignPtr arg1 $ \argPtr1 ->gtk_tree_sortable_set_default_sort_func argPtr1 arg2 arg3 arg4)
{-# LINE 202 "./Graphics/UI/Gtk/ModelView/TreeSortable.chs" #-}
(toTreeSortable self)
fPtr (castFunPtrToPtr fPtr) destroyFunPtr
treeSortableSortColumnChanged :: TreeSortableClass self => self -> IO ()
treeSortableSortColumnChanged self =
(\(TreeSortable arg1) -> withForeignPtr arg1 $ \argPtr1 ->gtk_tree_sortable_sort_column_changed argPtr1)
{-# LINE 211 "./Graphics/UI/Gtk/ModelView/TreeSortable.chs" #-}
(toTreeSortable self)
treeSortableHasDefaultSortFunc :: TreeSortableClass self => self
-> IO Bool
treeSortableHasDefaultSortFunc self =
liftM toBool $
(\(TreeSortable arg1) -> withForeignPtr arg1 $ \argPtr1 ->gtk_tree_sortable_has_default_sort_func argPtr1)
{-# LINE 224 "./Graphics/UI/Gtk/ModelView/TreeSortable.chs" #-}
(toTreeSortable self)
sortColumnChanged :: TreeSortableClass self => Signal self (IO ())
sortColumnChanged = Signal (connect_NONE__NONE "sort-column-changed")
foreign import ccall unsafe "gtk_tree_sortable_get_sort_column_id"
gtk_tree_sortable_get_sort_column_id :: ((Ptr TreeSortable) -> ((Ptr CInt) -> ((Ptr CInt) -> (IO CInt))))
foreign import ccall safe "gtk_tree_sortable_set_sort_column_id"
gtk_tree_sortable_set_sort_column_id :: ((Ptr TreeSortable) -> (CInt -> (CInt -> (IO ()))))
foreign import ccall safe "gtk_tree_sortable_set_sort_func"
gtk_tree_sortable_set_sort_func :: ((Ptr TreeSortable) -> (CInt -> ((FunPtr ((Ptr TreeModel) -> ((Ptr TreeIter) -> ((Ptr TreeIter) -> ((Ptr ()) -> (IO CInt)))))) -> ((Ptr ()) -> ((FunPtr ((Ptr ()) -> (IO ()))) -> (IO ()))))))
foreign import ccall safe "gtk_tree_sortable_set_default_sort_func"
gtk_tree_sortable_set_default_sort_func :: ((Ptr TreeSortable) -> ((FunPtr ((Ptr TreeModel) -> ((Ptr TreeIter) -> ((Ptr TreeIter) -> ((Ptr ()) -> (IO CInt)))))) -> ((Ptr ()) -> ((FunPtr ((Ptr ()) -> (IO ()))) -> (IO ())))))
foreign import ccall safe "gtk_tree_sortable_sort_column_changed"
gtk_tree_sortable_sort_column_changed :: ((Ptr TreeSortable) -> (IO ()))
foreign import ccall safe "gtk_tree_sortable_has_default_sort_func"
gtk_tree_sortable_has_default_sort_func :: ((Ptr TreeSortable) -> (IO CInt))