{-# 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 :: forall self.
TreeSortableClass self =>
self -> IO (SortType, Bool, SortColumnId)
treeSortableGetSortColumnId self
self =
(Ptr CInt -> IO (SortType, Bool, SortColumnId))
-> IO (SortType, Bool, SortColumnId)
forall a b. Storable a => (Ptr a -> IO b) -> IO b
alloca ((Ptr CInt -> IO (SortType, Bool, SortColumnId))
-> IO (SortType, Bool, SortColumnId))
-> (Ptr CInt -> IO (SortType, Bool, SortColumnId))
-> IO (SortType, Bool, SortColumnId)
forall a b. (a -> b) -> a -> b
$ \Ptr CInt
orderPtr -> (Ptr CInt -> IO (SortType, Bool, SortColumnId))
-> IO (SortType, Bool, SortColumnId)
forall a b. Storable a => (Ptr a -> IO b) -> IO b
alloca ((Ptr CInt -> IO (SortType, Bool, SortColumnId))
-> IO (SortType, Bool, SortColumnId))
-> (Ptr CInt -> IO (SortType, Bool, SortColumnId))
-> IO (SortType, Bool, SortColumnId)
forall a b. (a -> b) -> a -> b
$ \Ptr CInt
sortColumnIdPtr -> do
Bool
columnSet <- (CInt -> Bool) -> IO CInt -> IO Bool
forall (m :: * -> *) a1 r. Monad m => (a1 -> r) -> m a1 -> m r
liftM CInt -> Bool
forall a. (Eq a, Num a) => a -> Bool
toBool (IO CInt -> IO Bool) -> IO CInt -> IO Bool
forall a b. (a -> b) -> a -> b
$ (\(TreeSortable ForeignPtr TreeSortable
arg1) Ptr CInt
arg2 Ptr CInt
arg3 -> ForeignPtr TreeSortable -> (Ptr TreeSortable -> IO CInt) -> IO CInt
forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
withForeignPtr ForeignPtr TreeSortable
arg1 ((Ptr TreeSortable -> IO CInt) -> IO CInt)
-> (Ptr TreeSortable -> IO CInt) -> IO CInt
forall a b. (a -> b) -> a -> b
$ \Ptr TreeSortable
argPtr1 ->Ptr TreeSortable -> Ptr CInt -> Ptr CInt -> IO CInt
gtk_tree_sortable_get_sort_column_id Ptr TreeSortable
argPtr1 Ptr CInt
arg2 Ptr CInt
arg3)
{-# LINE 119 "./Graphics/UI/Gtk/ModelView/TreeSortable.chs" #-}
(toTreeSortable self)
Ptr CInt
sortColumnIdPtr
Ptr CInt
orderPtr
CInt
order <- Ptr CInt -> IO CInt
forall a. Storable a => Ptr a -> IO a
peek Ptr CInt
orderPtr
CInt
sortColumnId <- Ptr CInt -> IO CInt
forall a. Storable a => Ptr a -> IO a
peek Ptr CInt
sortColumnIdPtr
(SortType, Bool, SortColumnId) -> IO (SortType, Bool, SortColumnId)
forall a. a -> IO a
forall (m :: * -> *) a. Monad m => a -> m a
return (SortColumnId -> SortType
forall a. Enum a => SortColumnId -> a
toEnum (CInt -> SortColumnId
forall a b. (Integral a, Num b) => a -> b
fromIntegral CInt
order), Bool
columnSet, CInt -> SortColumnId
forall a b. (Integral a, Num b) => a -> b
fromIntegral CInt
sortColumnId)
treeSortableSetSortColumnId :: TreeSortableClass self => self
-> SortColumnId
-> SortType
-> IO ()
treeSortableSetSortColumnId :: forall self.
TreeSortableClass self =>
self -> SortColumnId -> SortType -> IO ()
treeSortableSetSortColumnId self
self SortColumnId
sortColumnId SortType
order =
(\(TreeSortable ForeignPtr TreeSortable
arg1) CInt
arg2 CInt
arg3 -> ForeignPtr TreeSortable -> (Ptr TreeSortable -> IO ()) -> IO ()
forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
withForeignPtr ForeignPtr TreeSortable
arg1 ((Ptr TreeSortable -> IO ()) -> IO ())
-> (Ptr TreeSortable -> IO ()) -> IO ()
forall a b. (a -> b) -> a -> b
$ \Ptr TreeSortable
argPtr1 ->Ptr TreeSortable -> CInt -> CInt -> IO ()
gtk_tree_sortable_set_sort_column_id Ptr TreeSortable
argPtr1 CInt
arg2 CInt
arg3)
{-# LINE 140 "./Graphics/UI/Gtk/ModelView/TreeSortable.chs" #-}
(toTreeSortable self)
(SortColumnId -> CInt
forall a b. (Integral a, Num b) => a -> b
fromIntegral SortColumnId
sortColumnId)
((SortColumnId -> CInt
forall a b. (Integral a, Num b) => a -> b
fromIntegral (SortColumnId -> CInt)
-> (SortType -> SortColumnId) -> SortType -> CInt
forall b c a. (b -> c) -> (a -> b) -> a -> c
. SortType -> SortColumnId
forall a. Enum a => a -> SortColumnId
fromEnum) SortType
order)
treeSortableSetSortFunc :: TreeSortableClass self => self
-> SortColumnId
-> (TreeIter -> TreeIter -> IO Ordering)
-> IO ()
treeSortableSetSortFunc :: forall self.
TreeSortableClass self =>
self
-> SortColumnId -> (TreeIter -> TreeIter -> IO Ordering) -> IO ()
treeSortableSetSortFunc self
self SortColumnId
sortColumnId TreeIter -> TreeIter -> IO Ordering
sortFunc = do
TreeIterCompareFunc
fPtr <- (Ptr TreeModel
-> Ptr TreeIter -> Ptr TreeIter -> Ptr () -> IO CInt)
-> IO TreeIterCompareFunc
mkTreeIterCompareFunc (\Ptr TreeModel
_ Ptr TreeIter
iter1Ptr Ptr TreeIter
iter2Ptr Ptr ()
_ -> do
TreeIter
iter1 <- Ptr TreeIter -> IO TreeIter
forall a. Storable a => Ptr a -> IO a
peek Ptr TreeIter
iter1Ptr
TreeIter
iter2 <- Ptr TreeIter -> IO TreeIter
forall a. Storable a => Ptr a -> IO a
peek Ptr TreeIter
iter2Ptr
(Ordering -> CInt) -> IO Ordering -> IO CInt
forall (m :: * -> *) a1 r. Monad m => (a1 -> r) -> m a1 -> m r
liftM Ordering -> CInt
orderToGInt (IO Ordering -> IO CInt) -> IO Ordering -> IO CInt
forall a b. (a -> b) -> a -> b
$ TreeIter -> TreeIter -> IO Ordering
sortFunc TreeIter
iter1 TreeIter
iter2)
(\(TreeSortable ForeignPtr TreeSortable
arg1) CInt
arg2 TreeIterCompareFunc
arg3 Ptr ()
arg4 FunPtr (Ptr () -> IO ())
arg5 -> ForeignPtr TreeSortable -> (Ptr TreeSortable -> IO ()) -> IO ()
forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
withForeignPtr ForeignPtr TreeSortable
arg1 ((Ptr TreeSortable -> IO ()) -> IO ())
-> (Ptr TreeSortable -> IO ()) -> IO ()
forall a b. (a -> b) -> a -> b
$ \Ptr TreeSortable
argPtr1 ->Ptr TreeSortable
-> CInt
-> TreeIterCompareFunc
-> Ptr ()
-> FunPtr (Ptr () -> IO ())
-> IO ()
gtk_tree_sortable_set_sort_func Ptr TreeSortable
argPtr1 CInt
arg2 TreeIterCompareFunc
arg3 Ptr ()
arg4 FunPtr (Ptr () -> IO ())
arg5)
{-# LINE 162 "./Graphics/UI/Gtk/ModelView/TreeSortable.chs" #-}
(toTreeSortable self)
(SortColumnId -> CInt
forall a b. (Integral a, Num b) => a -> b
fromIntegral SortColumnId
sortColumnId)
TreeIterCompareFunc
fPtr (TreeIterCompareFunc -> Ptr ()
forall a b. FunPtr a -> Ptr b
castFunPtrToPtr TreeIterCompareFunc
fPtr) FunPtr (Ptr () -> IO ())
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 :: forall self.
TreeSortableClass self =>
self -> Maybe (TreeIter -> TreeIter -> IO Ordering) -> IO ()
treeSortableSetDefaultSortFunc self
self Maybe (TreeIter -> TreeIter -> IO Ordering)
Nothing = do
(\(TreeSortable ForeignPtr TreeSortable
arg1) TreeIterCompareFunc
arg2 Ptr ()
arg3 FunPtr (Ptr () -> IO ())
arg4 -> ForeignPtr TreeSortable -> (Ptr TreeSortable -> IO ()) -> IO ()
forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
withForeignPtr ForeignPtr TreeSortable
arg1 ((Ptr TreeSortable -> IO ()) -> IO ())
-> (Ptr TreeSortable -> IO ()) -> IO ()
forall a b. (a -> b) -> a -> b
$ \Ptr TreeSortable
argPtr1 ->Ptr TreeSortable
-> TreeIterCompareFunc
-> Ptr ()
-> FunPtr (Ptr () -> IO ())
-> IO ()
gtk_tree_sortable_set_default_sort_func Ptr TreeSortable
argPtr1 TreeIterCompareFunc
arg2 Ptr ()
arg3 FunPtr (Ptr () -> IO ())
arg4)
{-# LINE 194 "./Graphics/UI/Gtk/ModelView/TreeSortable.chs" #-}
(toTreeSortable self)
TreeIterCompareFunc
forall a. FunPtr a
nullFunPtr Ptr ()
forall a. Ptr a
nullPtr FunPtr (Ptr () -> IO ())
forall a. FunPtr a
nullFunPtr
treeSortableSetDefaultSortFunc self
self (Just TreeIter -> TreeIter -> IO Ordering
sortFunc) = do
TreeIterCompareFunc
fPtr <- (Ptr TreeModel
-> Ptr TreeIter -> Ptr TreeIter -> Ptr () -> IO CInt)
-> IO TreeIterCompareFunc
mkTreeIterCompareFunc (\Ptr TreeModel
_ Ptr TreeIter
iter1Ptr Ptr TreeIter
iter2Ptr Ptr ()
_ -> do
TreeIter
iter1 <- Ptr TreeIter -> IO TreeIter
forall a. Storable a => Ptr a -> IO a
peek Ptr TreeIter
iter1Ptr
TreeIter
iter2 <- Ptr TreeIter -> IO TreeIter
forall a. Storable a => Ptr a -> IO a
peek Ptr TreeIter
iter2Ptr
(Ordering -> CInt) -> IO Ordering -> IO CInt
forall (m :: * -> *) a1 r. Monad m => (a1 -> r) -> m a1 -> m r
liftM Ordering -> CInt
orderToGInt (IO Ordering -> IO CInt) -> IO Ordering -> IO CInt
forall a b. (a -> b) -> a -> b
$ TreeIter -> TreeIter -> IO Ordering
sortFunc TreeIter
iter1 TreeIter
iter2)
(\(TreeSortable ForeignPtr TreeSortable
arg1) TreeIterCompareFunc
arg2 Ptr ()
arg3 FunPtr (Ptr () -> IO ())
arg4 -> ForeignPtr TreeSortable -> (Ptr TreeSortable -> IO ()) -> IO ()
forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
withForeignPtr ForeignPtr TreeSortable
arg1 ((Ptr TreeSortable -> IO ()) -> IO ())
-> (Ptr TreeSortable -> IO ()) -> IO ()
forall a b. (a -> b) -> a -> b
$ \Ptr TreeSortable
argPtr1 ->Ptr TreeSortable
-> TreeIterCompareFunc
-> Ptr ()
-> FunPtr (Ptr () -> IO ())
-> IO ()
gtk_tree_sortable_set_default_sort_func Ptr TreeSortable
argPtr1 TreeIterCompareFunc
arg2 Ptr ()
arg3 FunPtr (Ptr () -> IO ())
arg4)
{-# LINE 202 "./Graphics/UI/Gtk/ModelView/TreeSortable.chs" #-}
(toTreeSortable self)
TreeIterCompareFunc
fPtr (TreeIterCompareFunc -> Ptr ()
forall a b. FunPtr a -> Ptr b
castFunPtrToPtr TreeIterCompareFunc
fPtr) FunPtr (Ptr () -> IO ())
destroyFunPtr
treeSortableSortColumnChanged :: TreeSortableClass self => self -> IO ()
treeSortableSortColumnChanged :: forall self. TreeSortableClass self => self -> IO ()
treeSortableSortColumnChanged self
self =
(\(TreeSortable ForeignPtr TreeSortable
arg1) -> ForeignPtr TreeSortable -> (Ptr TreeSortable -> IO ()) -> IO ()
forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
withForeignPtr ForeignPtr TreeSortable
arg1 ((Ptr TreeSortable -> IO ()) -> IO ())
-> (Ptr TreeSortable -> IO ()) -> IO ()
forall a b. (a -> b) -> a -> b
$ \Ptr TreeSortable
argPtr1 ->Ptr TreeSortable -> IO ()
gtk_tree_sortable_sort_column_changed Ptr TreeSortable
argPtr1)
{-# LINE 211 "./Graphics/UI/Gtk/ModelView/TreeSortable.chs" #-}
(toTreeSortable self)
treeSortableHasDefaultSortFunc :: TreeSortableClass self => self
-> IO Bool
treeSortableHasDefaultSortFunc :: forall self. TreeSortableClass self => self -> IO Bool
treeSortableHasDefaultSortFunc self
self =
(CInt -> Bool) -> IO CInt -> IO Bool
forall (m :: * -> *) a1 r. Monad m => (a1 -> r) -> m a1 -> m r
liftM CInt -> Bool
forall a. (Eq a, Num a) => a -> Bool
toBool (IO CInt -> IO Bool) -> IO CInt -> IO Bool
forall a b. (a -> b) -> a -> b
$
(\(TreeSortable ForeignPtr TreeSortable
arg1) -> ForeignPtr TreeSortable -> (Ptr TreeSortable -> IO CInt) -> IO CInt
forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
withForeignPtr ForeignPtr TreeSortable
arg1 ((Ptr TreeSortable -> IO CInt) -> IO CInt)
-> (Ptr TreeSortable -> IO CInt) -> IO CInt
forall a b. (a -> b) -> a -> b
$ \Ptr TreeSortable
argPtr1 ->Ptr TreeSortable -> IO CInt
gtk_tree_sortable_has_default_sort_func Ptr TreeSortable
argPtr1)
{-# LINE 224 "./Graphics/UI/Gtk/ModelView/TreeSortable.chs" #-}
(toTreeSortable self)
sortColumnChanged :: TreeSortableClass self => Signal self (IO ())
sortColumnChanged :: forall self. TreeSortableClass self => Signal self (IO ())
sortColumnChanged = (Bool -> self -> IO () -> IO (ConnectId self))
-> Signal self (IO ())
forall object handler.
(Bool -> object -> handler -> IO (ConnectId object))
-> Signal object handler
Signal (SignalName -> Bool -> self -> IO () -> IO (ConnectId self)
forall obj.
GObjectClass obj =>
SignalName -> Bool -> obj -> IO () -> IO (ConnectId obj)
connect_NONE__NONE SignalName
"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))