    {-# LINE 2 "./Graphics/UI/Gtk/ModelView/TreeView.chs" #-}
    -- -*-haskell-*-
    -- GIMP Toolkit (GTK) Widget TreeView
    --
    -- Author : Axel Simon
    --
    -- Created: 9 May 2001
    --
    -- Copyright (C) 2001-2005 Axel Simon
    --
    -- This library is free software; you can redistribute it and/or
    -- modify it under the terms of the GNU Lesser General Public
    -- License as published by the Free Software Foundation; either
    -- version 2.1 of the License, or (at your option) any later version.
    --
    -- This library is distributed in the hope that it will be useful,
    -- but WITHOUT ANY WARRANTY; without even the implied warranty of
    -- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
    -- Lesser General Public License for more details.
    --
    -- TODO
    --
    -- gtk_tree_view_get_bin_window is to compare the GDK window from incoming
    -- events. We don't marshal that window parameter, so this function is not
    -- bound either.
    --
    -- The following functions related to drag and drop:
    -- treeViewSetDragDestRow, treeViewGetDragDestRow, treeViewGetDestRowAtPos
    -- these seem to be useful only in cases when the user wants to implement
    -- drag and drop himself rather than use the widget's implementation. I
    -- think this would be a bad idea in the first place.
    --
    -- get_search_equal_func is missing: proper memory management is impossible
    --
    -- gtk_tree_view_set_destroy_count_func is not meant to be useful
    --
    -- expand-collapse-cursor-row needs to be bound if it is useful to expand
    -- and collapse rows in a user-defined manner. Would only work on Gtk 2.2
    -- and higher since the return parameter changed
    --
    -- move_cursor, select_all, select_cursor_parent, select_cursor_row
    -- toggle_cursor_row, unselect_all are not bound.
    -- These functions are only useful to change the widgets
    -- behaviour for these actions. Everything else can be done with
    -- cursor_changed and columns_changed
    --
    -- set_scroll_adjustment makes sense if the user monitors the scroll bars
    -- and the scroll bars can be replaced anytime (the latter is odd)
    --
    -- |
    -- Maintainer : gtk2hs-users@lists.sourceforge.net
    -- Stability : provisional
    -- Portability : portable (depends on GHC)
    --
    -- A widget for displaying both trees and lists.
    --
    module Graphics.UI.Gtk.ModelView.TreeView (
    -- * Description
    --
    -- | Widget that displays any object that implements the 'TreeModel'
    -- interface.
    --
    -- The widget supports scrolling natively. This implies that pixel
    -- coordinates can be given in two formats: relative to the current view's
    -- upper left corner or relative to the whole list's coordinates. The former
    -- are called widget coordinates while the letter are called tree
    -- coordinates.

    -- * Class Hierarchy
    -- |
    -- @
    -- | 'GObject'
    -- | +----'Object'
    -- | +----'Widget'
    -- | +----'Container'
    -- | +----TreeView
    -- @

    -- * Types
      TreeView,
      TreeViewClass,
      castToTreeView, gTypeTreeView,
      toTreeView,
      Point,
      DragAction(..),

      TreeViewGridLines(..),

    -- * Constructors
      treeViewNew,
      treeViewNewWithModel,

    -- * Methods
      treeViewGetModel,
      treeViewSetModel,
      treeViewGetSelection,
      treeViewGetHAdjustment,
      treeViewSetHAdjustment,
      treeViewGetVAdjustment,
      treeViewSetVAdjustment,
      treeViewGetHeadersVisible,
      treeViewSetHeadersVisible,
      treeViewColumnsAutosize,
      treeViewSetHeadersClickable,
      treeViewGetRulesHint,
      treeViewSetRulesHint,
      treeViewAppendColumn,
      treeViewRemoveColumn,
      treeViewInsertColumn,
      treeViewGetColumn,
      treeViewGetColumns,
      treeViewMoveColumnAfter,
      treeViewMoveColumnFirst,
      treeViewSetExpanderColumn,
      treeViewGetExpanderColumn,
      treeViewSetColumnDragFunction,
      treeViewScrollToPoint,
      treeViewScrollToCell,
      treeViewSetCursor,

      treeViewSetCursorOnCell,

      treeViewGetCursor,
      treeViewRowActivated,
      treeViewExpandAll,
      treeViewCollapseAll,

      treeViewExpandToPath,

      treeViewExpandRow,
      treeViewCollapseRow,
      treeViewMapExpandedRows,
      treeViewRowExpanded,
      treeViewGetReorderable,
      treeViewSetReorderable,
      treeViewGetPathAtPos,
      treeViewGetCellArea,
      treeViewGetBackgroundArea,
      treeViewGetVisibleRect,

      treeViewConvertBinWindowToTreeCoords,
      treeViewConvertBinWindowToWidgetCoords,
      treeViewConvertTreeToBinWindowCoords,
      treeViewConvertTreeToWidgetCoords,
      treeViewConvertWidgetToBinWindowCoords,
      treeViewConvertWidgetToTreeCoords,

      treeViewGetEnableSearch,
      treeViewSetEnableSearch,
      treeViewGetSearchColumn,
      treeViewSetSearchColumn,
      treeViewSetSearchEqualFunc,

      treeViewGetFixedHeightMode,
      treeViewSetFixedHeightMode,
      treeViewGetHoverSelection,
      treeViewSetHoverSelection,
      treeViewGetHoverExpand,
      treeViewSetHoverExpand,

      treeViewGetHeadersClickable,

      treeViewGetVisibleRange,

      treeViewEnableModelDragDest,
      treeViewEnableModelDragSource,
      treeViewUnsetRowsDragSource,
      treeViewUnsetRowsDragDest,
      treeViewGetSearchEntry,
      treeViewSetSearchEntry,

      treeViewSetRowSeparatorFunc,

      treeViewGetRubberBanding,
      treeViewSetRubberBanding,
      treeViewGetEnableTreeLines,
      treeViewSetEnableTreeLines,
      treeViewGetGridLines,
      treeViewSetGridLines,

      treeViewSetTooltipRow,
      treeViewSetTooltipCell,
      treeViewGetTooltipContext,

    -- * Attributes
      treeViewModel,
      treeViewHAdjustment,
      treeViewVAdjustment,
      treeViewHeadersVisible,
      treeViewHeadersClickable,
      treeViewExpanderColumn,
      treeViewReorderable,
      treeViewRulesHint,
      treeViewEnableSearch,
      treeViewSearchColumn,

      treeViewFixedHeightMode,

      treeViewHoverSelection,
      treeViewHoverExpand,

      treeViewShowExpanders,
      treeViewLevelIndentation,
      treeViewRubberBanding,

      treeViewEnableGridLines,

      treeViewEnableTreeLines,

      treeViewGridLines,
      treeViewSearchEntry,

      treeViewTooltipColumn,

    -- * Signals
      columnsChanged,
      cursorChanged,
      rowCollapsed,
      rowExpanded,
      rowActivated,
      testCollapseRow,
      testExpandRow,

    -- * Deprecated
    {-# LINE 261 "./Graphics/UI/Gtk/ModelView/TreeView.chs" #-}
      ) where

    import Control.Monad (liftM,)
    import Data.Maybe (fromMaybe)

    import System.Glib.FFI
    import System.Glib.UTFString
    import System.Glib.GList (fromGList)
    import System.Glib.Flags
    import System.Glib.Attributes
    import System.Glib.Properties
    import Graphics.UI.Gtk.Gdk.Enums (DragAction(..))
    import Graphics.UI.Gtk.Gdk.Events (Modifier(..))
    import Graphics.UI.Gtk.General.Structs (Point, Rectangle)
    import Graphics.UI.Gtk.Abstract.Object (makeNewObject)
    import Graphics.UI.Gtk.Types
    {-# LINE 277 "./Graphics/UI/Gtk/ModelView/TreeView.chs" #-}
    import Graphics.UI.Gtk.Signals
    {-# LINE 278 "./Graphics/UI/Gtk/ModelView/TreeView.chs" #-}
    import Graphics.UI.Gtk.ModelView.TreeModel (columnIdToNumber,
                                                makeColumnIdString)
    import Graphics.UI.Gtk.ModelView.Types
    {-# LINE 281 "./Graphics/UI/Gtk/ModelView/TreeView.chs" #-}
    import Graphics.UI.Gtk.General.DNDTypes (TargetList(..))

    {-# LINE 284 "./Graphics/UI/Gtk/ModelView/TreeView.chs" #-}

    --------------------
    -- Constructors

    -- | Creates a new 'TreeView' widget.
    --
    treeViewNew :: IO TreeView
    treeViewNew :: IO TreeView
    treeViewNew =
      (ForeignPtr TreeView -> TreeView, FinalizerPtr TreeView)
    -> IO (Ptr TreeView) -> IO TreeView
    forall obj.
    GObjectClass obj =>
    (ForeignPtr obj -> obj, FinalizerPtr obj) -> IO (Ptr obj) -> IO obj
    makeNewObject (ForeignPtr TreeView -> TreeView, FinalizerPtr TreeView)
    forall {a}. (ForeignPtr TreeView -> TreeView, FinalizerPtr a)
    mkTreeView (IO (Ptr TreeView) -> IO TreeView)
    -> IO (Ptr TreeView) -> IO TreeView
    forall a b. (a -> b) -> a -> b
    $
      (Ptr Widget -> Ptr TreeView)
    -> IO (Ptr Widget) -> IO (Ptr TreeView)
    forall (m :: * -> *) a1 r. Monad m => (a1 -> r) -> m a1 -> m r
    liftM (Ptr Widget -> Ptr TreeView
    forall a b. Ptr a -> Ptr b
    castPtr :: Ptr Widget -> Ptr TreeView) (IO (Ptr Widget) -> IO (Ptr TreeView))
    -> IO (Ptr Widget) -> IO (Ptr TreeView)
    forall a b. (a -> b) -> a -> b
    $
      IO (Ptr Widget)
    gtk_tree_view_new
    {-# LINE 295 "./Graphics/UI/Gtk/ModelView/TreeView.chs" #-}

    -- | Create a new 'TreeView'
    -- widget with @model@ as the storage model.
    --
    treeViewNewWithModel :: TreeModelClass model => model -> IO TreeView
    treeViewNewWithModel :: forall model. TreeModelClass model => model -> IO TreeView
    treeViewNewWithModel model
    model =
      (ForeignPtr TreeView -> TreeView, FinalizerPtr TreeView)
    -> IO (Ptr TreeView) -> IO TreeView
    forall obj.
    GObjectClass obj =>
    (ForeignPtr obj -> obj, FinalizerPtr obj) -> IO (Ptr obj) -> IO obj
    makeNewObject (ForeignPtr TreeView -> TreeView, FinalizerPtr TreeView)
    forall {a}. (ForeignPtr TreeView -> TreeView, FinalizerPtr a)
    mkTreeView (IO (Ptr TreeView) -> IO TreeView)
    -> IO (Ptr TreeView) -> IO TreeView
    forall a b. (a -> b) -> a -> b
    $
      (Ptr Widget -> Ptr TreeView)
    -> IO (Ptr Widget) -> IO (Ptr TreeView)
    forall (m :: * -> *) a1 r. Monad m => (a1 -> r) -> m a1 -> m r
    liftM (Ptr Widget -> Ptr TreeView
    forall a b. Ptr a -> Ptr b
    castPtr :: Ptr Widget -> Ptr TreeView) (IO (Ptr Widget) -> IO (Ptr TreeView))
    -> IO (Ptr Widget) -> IO (Ptr TreeView)
    forall a b. (a -> b) -> a -> b
    $
      (\(TreeModel ForeignPtr TreeModel
    arg1) -> ForeignPtr TreeModel
    -> (Ptr TreeModel -> IO (Ptr Widget)) -> IO (Ptr Widget)
    forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
    withForeignPtr ForeignPtr TreeModel
    arg1 ((Ptr TreeModel -> IO (Ptr Widget)) -> IO (Ptr Widget))
    -> (Ptr TreeModel -> IO (Ptr Widget)) -> IO (Ptr Widget)
    forall a b. (a -> b) -> a -> b
    $ \Ptr TreeModel
    argPtr1 ->Ptr TreeModel -> IO (Ptr Widget)
    gtk_tree_view_new_with_model Ptr TreeModel
    argPtr1)
    {-# LINE 304 "./Graphics/UI/Gtk/ModelView/TreeView.chs" #-}
        (toTreeModel model)

    --------------------
    -- Methods

    -- | Returns the model that supplies the data for
    -- this 'TreeView'. Returns @Nothing@ if the model is unset.
    --
    treeViewGetModel :: TreeViewClass self => self -> IO (Maybe TreeModel)
    treeViewGetModel :: forall self. TreeViewClass self => self -> IO (Maybe TreeModel)
    treeViewGetModel self
    self =
      (IO (Ptr TreeModel) -> IO TreeModel)
    -> IO (Ptr TreeModel) -> IO (Maybe TreeModel)
    forall a. (IO (Ptr a) -> IO a) -> IO (Ptr a) -> IO (Maybe a)
    maybeNull ((ForeignPtr TreeModel -> TreeModel, FinalizerPtr TreeModel)
    -> IO (Ptr TreeModel) -> IO TreeModel
    forall obj.
    GObjectClass obj =>
    (ForeignPtr obj -> obj, FinalizerPtr obj) -> IO (Ptr obj) -> IO obj
    makeNewGObject (ForeignPtr TreeModel -> TreeModel, FinalizerPtr TreeModel)
    forall {a}. (ForeignPtr TreeModel -> TreeModel, FinalizerPtr a)
    mkTreeModel) (IO (Ptr TreeModel) -> IO (Maybe TreeModel))
    -> IO (Ptr TreeModel) -> IO (Maybe TreeModel)
    forall a b. (a -> b) -> a -> b
    $
      (\(TreeView ForeignPtr TreeView
    arg1) -> ForeignPtr TreeView
    -> (Ptr TreeView -> IO (Ptr TreeModel)) -> IO (Ptr TreeModel)
    forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
    withForeignPtr ForeignPtr TreeView
    arg1 ((Ptr TreeView -> IO (Ptr TreeModel)) -> IO (Ptr TreeModel))
    -> (Ptr TreeView -> IO (Ptr TreeModel)) -> IO (Ptr TreeModel)
    forall a b. (a -> b) -> a -> b
    $ \Ptr TreeView
    argPtr1 ->Ptr TreeView -> IO (Ptr TreeModel)
    gtk_tree_view_get_model Ptr TreeView
    argPtr1)
    {-# LINE 316 "./Graphics/UI/Gtk/ModelView/TreeView.chs" #-}
        (toTreeView self)

    -- | Set the 'TreeModel' for the current View.
    --
    treeViewSetModel :: (TreeViewClass self, TreeModelClass model) => self
     -> Maybe model
     -> IO ()
    treeViewSetModel :: forall self model.
    (TreeViewClass self, TreeModelClass model) =>
    self -> Maybe model -> IO ()
    treeViewSetModel self
    self Maybe model
    model =
      (\(TreeView ForeignPtr TreeView
    arg1) (TreeModel ForeignPtr TreeModel
    arg2) -> ForeignPtr TreeView -> (Ptr TreeView -> IO ()) -> IO ()
    forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
    withForeignPtr ForeignPtr TreeView
    arg1 ((Ptr TreeView -> IO ()) -> IO ())
    -> (Ptr TreeView -> IO ()) -> IO ()
    forall a b. (a -> b) -> a -> b
    $ \Ptr TreeView
    argPtr1 ->ForeignPtr TreeModel -> (Ptr TreeModel -> IO ()) -> IO ()
    forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
    withForeignPtr ForeignPtr TreeModel
    arg2 ((Ptr TreeModel -> IO ()) -> IO ())
    -> (Ptr TreeModel -> IO ()) -> IO ()
    forall a b. (a -> b) -> a -> b
    $ \Ptr TreeModel
    argPtr2 ->Ptr TreeView -> Ptr TreeModel -> IO ()
    gtk_tree_view_set_model Ptr TreeView
    argPtr1 Ptr TreeModel
    argPtr2)
    {-# LINE 325 "./Graphics/UI/Gtk/ModelView/TreeView.chs" #-}
        (toTreeView self)
        (TreeModel -> (model -> TreeModel) -> Maybe model -> TreeModel
    forall b a. b -> (a -> b) -> Maybe a -> b
    maybe (ForeignPtr TreeModel -> TreeModel
    TreeModel ForeignPtr TreeModel
    forall a. ForeignPtr a
    nullForeignPtr) model -> TreeModel
    forall o. TreeModelClass o => o -> TreeModel
    toTreeModel Maybe model
    model)

    -- | Retrieve a 'TreeSelection' that
    -- holds the current selected nodes of the View.
    --
    treeViewGetSelection :: TreeViewClass self => self -> IO TreeSelection
    treeViewGetSelection :: forall self. TreeViewClass self => self -> IO TreeSelection
    treeViewGetSelection self
    self =
      (ForeignPtr TreeSelection -> TreeSelection,
     FinalizerPtr TreeSelection)
    -> IO (Ptr TreeSelection) -> IO TreeSelection
    forall obj.
    GObjectClass obj =>
    (ForeignPtr obj -> obj, FinalizerPtr obj) -> IO (Ptr obj) -> IO obj
    makeNewGObject (ForeignPtr TreeSelection -> TreeSelection,
     FinalizerPtr TreeSelection)
    forall {a}.
    (ForeignPtr TreeSelection -> TreeSelection, FinalizerPtr a)
    mkTreeSelection (IO (Ptr TreeSelection) -> IO TreeSelection)
    -> IO (Ptr TreeSelection) -> IO TreeSelection
    forall a b. (a -> b) -> a -> b
    $
      (\(TreeView ForeignPtr TreeView
    arg1) -> ForeignPtr TreeView
    -> (Ptr TreeView -> IO (Ptr TreeSelection))
    -> IO (Ptr TreeSelection)
    forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
    withForeignPtr ForeignPtr TreeView
    arg1 ((Ptr TreeView -> IO (Ptr TreeSelection))
     -> IO (Ptr TreeSelection))
    -> (Ptr TreeView -> IO (Ptr TreeSelection))
    -> IO (Ptr TreeSelection)
    forall a b. (a -> b) -> a -> b
    $ \Ptr TreeView
    argPtr1 ->Ptr TreeView -> IO (Ptr TreeSelection)
    gtk_tree_view_get_selection Ptr TreeView
    argPtr1)
    {-# LINE 335 "./Graphics/UI/Gtk/ModelView/TreeView.chs" #-}
        (toTreeView self)

    -- | Gets the 'Adjustment' currently being used for the horizontal aspect.
    --
    treeViewGetHAdjustment :: TreeViewClass self => self -> IO (Maybe Adjustment)
    treeViewGetHAdjustment :: forall self. TreeViewClass self => self -> IO (Maybe Adjustment)
    treeViewGetHAdjustment self
    self =
      (IO (Ptr Adjustment) -> IO Adjustment)
    -> IO (Ptr Adjustment) -> IO (Maybe Adjustment)
    forall a. (IO (Ptr a) -> IO a) -> IO (Ptr a) -> IO (Maybe a)
    maybeNull ((ForeignPtr Adjustment -> Adjustment, FinalizerPtr Adjustment)
    -> IO (Ptr Adjustment) -> IO Adjustment
    forall obj.
    GObjectClass obj =>
    (ForeignPtr obj -> obj, FinalizerPtr obj) -> IO (Ptr obj) -> IO obj
    makeNewObject (ForeignPtr Adjustment -> Adjustment, FinalizerPtr Adjustment)
    forall {a}. (ForeignPtr Adjustment -> Adjustment, FinalizerPtr a)
    mkAdjustment) (IO (Ptr Adjustment) -> IO (Maybe Adjustment))
    -> IO (Ptr Adjustment) -> IO (Maybe Adjustment)
    forall a b. (a -> b) -> a -> b
    $
      (\(TreeView ForeignPtr TreeView
    arg1) -> ForeignPtr TreeView
    -> (Ptr TreeView -> IO (Ptr Adjustment)) -> IO (Ptr Adjustment)
    forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
    withForeignPtr ForeignPtr TreeView
    arg1 ((Ptr TreeView -> IO (Ptr Adjustment)) -> IO (Ptr Adjustment))
    -> (Ptr TreeView -> IO (Ptr Adjustment)) -> IO (Ptr Adjustment)
    forall a b. (a -> b) -> a -> b
    $ \Ptr TreeView
    argPtr1 ->Ptr TreeView -> IO (Ptr Adjustment)
    gtk_tree_view_get_hadjustment Ptr TreeView
    argPtr1)
    {-# LINE 343 "./Graphics/UI/Gtk/ModelView/TreeView.chs" #-}
        (toTreeView self)

    -- | Sets the 'Adjustment' for the current horizontal aspect.
    --
    treeViewSetHAdjustment :: TreeViewClass self => self
     -> Maybe Adjustment -- ^ @adjustment@ - The 'Adjustment' to set, or @Nothing@
     -> IO ()
    treeViewSetHAdjustment :: forall self.
    TreeViewClass self =>
    self -> Maybe Adjustment -> IO ()
    treeViewSetHAdjustment self
    self Maybe Adjustment
    adjustment =
      (\(TreeView ForeignPtr TreeView
    arg1) (Adjustment ForeignPtr Adjustment
    arg2) -> ForeignPtr TreeView -> (Ptr TreeView -> IO ()) -> IO ()
    forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
    withForeignPtr ForeignPtr TreeView
    arg1 ((Ptr TreeView -> IO ()) -> IO ())
    -> (Ptr TreeView -> IO ()) -> IO ()
    forall a b. (a -> b) -> a -> b
    $ \Ptr TreeView
    argPtr1 ->ForeignPtr Adjustment -> (Ptr Adjustment -> IO ()) -> IO ()
    forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
    withForeignPtr ForeignPtr Adjustment
    arg2 ((Ptr Adjustment -> IO ()) -> IO ())
    -> (Ptr Adjustment -> IO ()) -> IO ()
    forall a b. (a -> b) -> a -> b
    $ \Ptr Adjustment
    argPtr2 ->Ptr TreeView -> Ptr Adjustment -> IO ()
    gtk_tree_view_set_hadjustment Ptr TreeView
    argPtr1 Ptr Adjustment
    argPtr2)
    {-# LINE 352 "./Graphics/UI/Gtk/ModelView/TreeView.chs" #-}
        (toTreeView self)
        (Adjustment -> Maybe Adjustment -> Adjustment
    forall a. a -> Maybe a -> a
    fromMaybe (ForeignPtr Adjustment -> Adjustment
    Adjustment ForeignPtr Adjustment
    forall a. ForeignPtr a
    nullForeignPtr) Maybe Adjustment
    adjustment)

    -- | Gets the 'Adjustment' currently being used for the vertical aspect.
    --
    treeViewGetVAdjustment :: TreeViewClass self => self -> IO (Maybe Adjustment)
    treeViewGetVAdjustment :: forall self. TreeViewClass self => self -> IO (Maybe Adjustment)
    treeViewGetVAdjustment self
    self =
      (IO (Ptr Adjustment) -> IO Adjustment)
    -> IO (Ptr Adjustment) -> IO (Maybe Adjustment)
    forall a. (IO (Ptr a) -> IO a) -> IO (Ptr a) -> IO (Maybe a)
    maybeNull ((ForeignPtr Adjustment -> Adjustment, FinalizerPtr Adjustment)
    -> IO (Ptr Adjustment) -> IO Adjustment
    forall obj.
    GObjectClass obj =>
    (ForeignPtr obj -> obj, FinalizerPtr obj) -> IO (Ptr obj) -> IO obj
    makeNewObject (ForeignPtr Adjustment -> Adjustment, FinalizerPtr Adjustment)
    forall {a}. (ForeignPtr Adjustment -> Adjustment, FinalizerPtr a)
    mkAdjustment) (IO (Ptr Adjustment) -> IO (Maybe Adjustment))
    -> IO (Ptr Adjustment) -> IO (Maybe Adjustment)
    forall a b. (a -> b) -> a -> b
    $
      (\(TreeView ForeignPtr TreeView
    arg1) -> ForeignPtr TreeView
    -> (Ptr TreeView -> IO (Ptr Adjustment)) -> IO (Ptr Adjustment)
    forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
    withForeignPtr ForeignPtr TreeView
    arg1 ((Ptr TreeView -> IO (Ptr Adjustment)) -> IO (Ptr Adjustment))
    -> (Ptr TreeView -> IO (Ptr Adjustment)) -> IO (Ptr Adjustment)
    forall a b. (a -> b) -> a -> b
    $ \Ptr TreeView
    argPtr1 ->Ptr TreeView -> IO (Ptr Adjustment)
    gtk_tree_view_get_vadjustment Ptr TreeView
    argPtr1)
    {-# LINE 361 "./Graphics/UI/Gtk/ModelView/TreeView.chs" #-}
        (toTreeView self)

    -- | Sets the 'Adjustment' for the current vertical aspect.
    --
    treeViewSetVAdjustment :: TreeViewClass self => self
     -> Maybe Adjustment -- ^ @adjustment@ - The 'Adjustment' to set, or @Nothing@
     -> IO ()
    treeViewSetVAdjustment :: forall self.
    TreeViewClass self =>
    self -> Maybe Adjustment -> IO ()
    treeViewSetVAdjustment self
    self Maybe Adjustment
    adjustment =
      (\(TreeView ForeignPtr TreeView
    arg1) (Adjustment ForeignPtr Adjustment
    arg2) -> ForeignPtr TreeView -> (Ptr TreeView -> IO ()) -> IO ()
    forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
    withForeignPtr ForeignPtr TreeView
    arg1 ((Ptr TreeView -> IO ()) -> IO ())
    -> (Ptr TreeView -> IO ()) -> IO ()
    forall a b. (a -> b) -> a -> b
    $ \Ptr TreeView
    argPtr1 ->ForeignPtr Adjustment -> (Ptr Adjustment -> IO ()) -> IO ()
    forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
    withForeignPtr ForeignPtr Adjustment
    arg2 ((Ptr Adjustment -> IO ()) -> IO ())
    -> (Ptr Adjustment -> IO ()) -> IO ()
    forall a b. (a -> b) -> a -> b
    $ \Ptr Adjustment
    argPtr2 ->Ptr TreeView -> Ptr Adjustment -> IO ()
    gtk_tree_view_set_vadjustment Ptr TreeView
    argPtr1 Ptr Adjustment
    argPtr2)
    {-# LINE 370 "./Graphics/UI/Gtk/ModelView/TreeView.chs" #-}
        (toTreeView self)
        (Adjustment -> Maybe Adjustment -> Adjustment
    forall a. a -> Maybe a -> a
    fromMaybe (ForeignPtr Adjustment -> Adjustment
    Adjustment ForeignPtr Adjustment
    forall a. ForeignPtr a
    nullForeignPtr) Maybe Adjustment
    adjustment)

    -- | Query if the column headers are visible.
    --
    treeViewGetHeadersVisible :: TreeViewClass self => self -> IO Bool
    treeViewGetHeadersVisible :: forall self. TreeViewClass self => self -> IO Bool
    treeViewGetHeadersVisible 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
    $
      (\(TreeView ForeignPtr TreeView
    arg1) -> ForeignPtr TreeView -> (Ptr TreeView -> IO CInt) -> IO CInt
    forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
    withForeignPtr ForeignPtr TreeView
    arg1 ((Ptr TreeView -> IO CInt) -> IO CInt)
    -> (Ptr TreeView -> IO CInt) -> IO CInt
    forall a b. (a -> b) -> a -> b
    $ \Ptr TreeView
    argPtr1 ->Ptr TreeView -> IO CInt
    gtk_tree_view_get_headers_visible Ptr TreeView
    argPtr1)
    {-# LINE 379 "./Graphics/UI/Gtk/ModelView/TreeView.chs" #-}
        (toTreeView self)

    -- | Set the visibility state of the column headers.
    --
    treeViewSetHeadersVisible :: TreeViewClass self => self -> Bool -> IO ()
    treeViewSetHeadersVisible :: forall self. TreeViewClass self => self -> Bool -> IO ()
    treeViewSetHeadersVisible self
    self Bool
    headersVisible =
      (\(TreeView ForeignPtr TreeView
    arg1) CInt
    arg2 -> ForeignPtr TreeView -> (Ptr TreeView -> IO ()) -> IO ()
    forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
    withForeignPtr ForeignPtr TreeView
    arg1 ((Ptr TreeView -> IO ()) -> IO ())
    -> (Ptr TreeView -> IO ()) -> IO ()
    forall a b. (a -> b) -> a -> b
    $ \Ptr TreeView
    argPtr1 ->Ptr TreeView -> CInt -> IO ()
    gtk_tree_view_set_headers_visible Ptr TreeView
    argPtr1 CInt
    arg2)
    {-# LINE 386 "./Graphics/UI/Gtk/ModelView/TreeView.chs" #-}
        (toTreeView self)
        (Bool -> CInt
    forall a. Num a => Bool -> a
    fromBool Bool
    headersVisible)

    -- | Resize the columns to their optimal size.
    --
    treeViewColumnsAutosize :: TreeViewClass self => self -> IO ()
    treeViewColumnsAutosize :: forall self. TreeViewClass self => self -> IO ()
    treeViewColumnsAutosize self
    self =
      (\(TreeView ForeignPtr TreeView
    arg1) -> ForeignPtr TreeView -> (Ptr TreeView -> IO ()) -> IO ()
    forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
    withForeignPtr ForeignPtr TreeView
    arg1 ((Ptr TreeView -> IO ()) -> IO ())
    -> (Ptr TreeView -> IO ()) -> IO ()
    forall a b. (a -> b) -> a -> b
    $ \Ptr TreeView
    argPtr1 ->Ptr TreeView -> IO ()
    gtk_tree_view_columns_autosize Ptr TreeView
    argPtr1)
    {-# LINE 394 "./Graphics/UI/Gtk/ModelView/TreeView.chs" #-}
        (toTreeView self)

    -- | Set whether the columns headers are sensitive to mouse clicks.
    --
    treeViewSetHeadersClickable :: TreeViewClass self => self -> Bool -> IO ()
    treeViewSetHeadersClickable :: forall self. TreeViewClass self => self -> Bool -> IO ()
    treeViewSetHeadersClickable self
    self Bool
    setting =
      (\(TreeView ForeignPtr TreeView
    arg1) CInt
    arg2 -> ForeignPtr TreeView -> (Ptr TreeView -> IO ()) -> IO ()
    forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
    withForeignPtr ForeignPtr TreeView
    arg1 ((Ptr TreeView -> IO ()) -> IO ())
    -> (Ptr TreeView -> IO ()) -> IO ()
    forall a b. (a -> b) -> a -> b
    $ \Ptr TreeView
    argPtr1 ->Ptr TreeView -> CInt -> IO ()
    gtk_tree_view_set_headers_clickable Ptr TreeView
    argPtr1 CInt
    arg2)
    {-# LINE 401 "./Graphics/UI/Gtk/ModelView/TreeView.chs" #-}
        (toTreeView self)
        (Bool -> CInt
    forall a. Num a => Bool -> a
    fromBool Bool
    setting)

    -- | Query if visual aid for wide columns is turned on.
    --
    treeViewGetRulesHint :: TreeViewClass self => self -> IO Bool
    treeViewGetRulesHint :: forall self. TreeViewClass self => self -> IO Bool
    treeViewGetRulesHint 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
    $
      (\(TreeView ForeignPtr TreeView
    arg1) -> ForeignPtr TreeView -> (Ptr TreeView -> IO CInt) -> IO CInt
    forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
    withForeignPtr ForeignPtr TreeView
    arg1 ((Ptr TreeView -> IO CInt) -> IO CInt)
    -> (Ptr TreeView -> IO CInt) -> IO CInt
    forall a b. (a -> b) -> a -> b
    $ \Ptr TreeView
    argPtr1 ->Ptr TreeView -> IO CInt
    gtk_tree_view_get_rules_hint Ptr TreeView
    argPtr1)
    {-# LINE 410 "./Graphics/UI/Gtk/ModelView/TreeView.chs" #-}
        (toTreeView self)

    -- | This function tells Gtk+ that the user interface for your application
    -- requires users to read across tree rows and associate cells with one
    -- another. By default, Gtk+ will then render the tree with alternating row
    -- colors. Do /not/ use it just because you prefer the appearance of the ruled
    -- tree; that's a question for the theme. Some themes will draw tree rows in
    -- alternating colors even when rules are turned off, and users who prefer that
    -- appearance all the time can choose those themes. You should call this
    -- function only as a /semantic/ hint to the theme engine that your tree makes
    -- alternating colors useful from a functional standpoint (since it has lots of
    -- columns, generally).
    --
    treeViewSetRulesHint :: TreeViewClass self => self -> Bool -> IO ()
    treeViewSetRulesHint :: forall self. TreeViewClass self => self -> Bool -> IO ()
    treeViewSetRulesHint self
    self Bool
    setting =
      (\(TreeView ForeignPtr TreeView
    arg1) CInt
    arg2 -> ForeignPtr TreeView -> (Ptr TreeView -> IO ()) -> IO ()
    forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
    withForeignPtr ForeignPtr TreeView
    arg1 ((Ptr TreeView -> IO ()) -> IO ())
    -> (Ptr TreeView -> IO ()) -> IO ()
    forall a b. (a -> b) -> a -> b
    $ \Ptr TreeView
    argPtr1 ->Ptr TreeView -> CInt -> IO ()
    gtk_tree_view_set_rules_hint Ptr TreeView
    argPtr1 CInt
    arg2)
    {-# LINE 426 "./Graphics/UI/Gtk/ModelView/TreeView.chs" #-}
        (toTreeView self)
        (Bool -> CInt
    forall a. Num a => Bool -> a
    fromBool Bool
    setting)

    -- | Append a new column to the 'TreeView'. Returns the new number of columns.
    --
    treeViewAppendColumn :: TreeViewClass self => self -> TreeViewColumn -> IO Int
    treeViewAppendColumn :: forall self. TreeViewClass self => self -> TreeViewColumn -> IO Int
    treeViewAppendColumn self
    self TreeViewColumn
    column =
      (CInt -> Int) -> IO CInt -> IO Int
    forall (m :: * -> *) a1 r. Monad m => (a1 -> r) -> m a1 -> m r
    liftM CInt -> Int
    forall a b. (Integral a, Num b) => a -> b
    fromIntegral (IO CInt -> IO Int) -> IO CInt -> IO Int
    forall a b. (a -> b) -> a -> b
    $
      (\(TreeView ForeignPtr TreeView
    arg1) (TreeViewColumn ForeignPtr TreeViewColumn
    arg2) -> ForeignPtr TreeView -> (Ptr TreeView -> IO CInt) -> IO CInt
    forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
    withForeignPtr ForeignPtr TreeView
    arg1 ((Ptr TreeView -> IO CInt) -> IO CInt)
    -> (Ptr TreeView -> IO CInt) -> IO CInt
    forall a b. (a -> b) -> a -> b
    $ \Ptr TreeView
    argPtr1 ->ForeignPtr TreeViewColumn
    -> (Ptr TreeViewColumn -> IO CInt) -> IO CInt
    forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
    withForeignPtr ForeignPtr TreeViewColumn
    arg2 ((Ptr TreeViewColumn -> IO CInt) -> IO CInt)
    -> (Ptr TreeViewColumn -> IO CInt) -> IO CInt
    forall a b. (a -> b) -> a -> b
    $ \Ptr TreeViewColumn
    argPtr2 ->Ptr TreeView -> Ptr TreeViewColumn -> IO CInt
    gtk_tree_view_append_column Ptr TreeView
    argPtr1 Ptr TreeViewColumn
    argPtr2)
    {-# LINE 435 "./Graphics/UI/Gtk/ModelView/TreeView.chs" #-}
        (toTreeView self)
        TreeViewColumn
    column

    -- | Remove column @tvc@ from the 'TreeView'
    -- widget. The number of remaining columns is returned.
    --
    treeViewRemoveColumn :: TreeViewClass self => self -> TreeViewColumn -> IO Int
    treeViewRemoveColumn :: forall self. TreeViewClass self => self -> TreeViewColumn -> IO Int
    treeViewRemoveColumn self
    self TreeViewColumn
    column =
      (CInt -> Int) -> IO CInt -> IO Int
    forall (m :: * -> *) a1 r. Monad m => (a1 -> r) -> m a1 -> m r
    liftM CInt -> Int
    forall a b. (Integral a, Num b) => a -> b
    fromIntegral (IO CInt -> IO Int) -> IO CInt -> IO Int
    forall a b. (a -> b) -> a -> b
    $
      (\(TreeView ForeignPtr TreeView
    arg1) (TreeViewColumn ForeignPtr TreeViewColumn
    arg2) -> ForeignPtr TreeView -> (Ptr TreeView -> IO CInt) -> IO CInt
    forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
    withForeignPtr ForeignPtr TreeView
    arg1 ((Ptr TreeView -> IO CInt) -> IO CInt)
    -> (Ptr TreeView -> IO CInt) -> IO CInt
    forall a b. (a -> b) -> a -> b
    $ \Ptr TreeView
    argPtr1 ->ForeignPtr TreeViewColumn
    -> (Ptr TreeViewColumn -> IO CInt) -> IO CInt
    forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
    withForeignPtr ForeignPtr TreeViewColumn
    arg2 ((Ptr TreeViewColumn -> IO CInt) -> IO CInt)
    -> (Ptr TreeViewColumn -> IO CInt) -> IO CInt
    forall a b. (a -> b) -> a -> b
    $ \Ptr TreeViewColumn
    argPtr2 ->Ptr TreeView -> Ptr TreeViewColumn -> IO CInt
    gtk_tree_view_remove_column Ptr TreeView
    argPtr1 Ptr TreeViewColumn
    argPtr2)
    {-# LINE 445 "./Graphics/UI/Gtk/ModelView/TreeView.chs" #-}
        (toTreeView self)
        TreeViewColumn
    column

    -- | Inserts column @tvc@ into the
    -- 'TreeView' widget at the position @pos@. Returns the number of
    -- columns after insertion. Specify -1 for @pos@ to insert the column
    -- at the end.
    --
    treeViewInsertColumn :: TreeViewClass self => self
     -> TreeViewColumn
     -> Int
     -> IO Int
    treeViewInsertColumn :: forall self.
    TreeViewClass self =>
    self -> TreeViewColumn -> Int -> IO Int
    treeViewInsertColumn self
    self TreeViewColumn
    column Int
    position =
      (CInt -> Int) -> IO CInt -> IO Int
    forall (m :: * -> *) a1 r. Monad m => (a1 -> r) -> m a1 -> m r
    liftM CInt -> Int
    forall a b. (Integral a, Num b) => a -> b
    fromIntegral (IO CInt -> IO Int) -> IO CInt -> IO Int
    forall a b. (a -> b) -> a -> b
    $
      (\(TreeView ForeignPtr TreeView
    arg1) (TreeViewColumn ForeignPtr TreeViewColumn
    arg2) CInt
    arg3 -> ForeignPtr TreeView -> (Ptr TreeView -> IO CInt) -> IO CInt
    forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
    withForeignPtr ForeignPtr TreeView
    arg1 ((Ptr TreeView -> IO CInt) -> IO CInt)
    -> (Ptr TreeView -> IO CInt) -> IO CInt
    forall a b. (a -> b) -> a -> b
    $ \Ptr TreeView
    argPtr1 ->ForeignPtr TreeViewColumn
    -> (Ptr TreeViewColumn -> IO CInt) -> IO CInt
    forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
    withForeignPtr ForeignPtr TreeViewColumn
    arg2 ((Ptr TreeViewColumn -> IO CInt) -> IO CInt)
    -> (Ptr TreeViewColumn -> IO CInt) -> IO CInt
    forall a b. (a -> b) -> a -> b
    $ \Ptr TreeViewColumn
    argPtr2 ->Ptr TreeView -> Ptr TreeViewColumn -> CInt -> IO CInt
    gtk_tree_view_insert_column Ptr TreeView
    argPtr1 Ptr TreeViewColumn
    argPtr2 CInt
    arg3)
    {-# LINE 460 "./Graphics/UI/Gtk/ModelView/TreeView.chs" #-}
        (toTreeView self)
        TreeViewColumn
    column
        (Int -> CInt
    forall a b. (Integral a, Num b) => a -> b
    fromIntegral Int
    position)

    -- | Retrieve a 'TreeViewColumn'.
    --
    -- * Retrieve the @pos@ th columns of
    -- 'TreeView'. If the index is out of range Nothing is returned.
    --
    treeViewGetColumn :: TreeViewClass self => self -> Int -> IO (Maybe TreeViewColumn)
    treeViewGetColumn :: forall self.
    TreeViewClass self =>
    self -> Int -> IO (Maybe TreeViewColumn)
    treeViewGetColumn self
    self Int
    pos = do
      tvcPtr <- (\(TreeView ForeignPtr TreeView
    arg1) CInt
    arg2 -> ForeignPtr TreeView
    -> (Ptr TreeView -> IO (Ptr TreeViewColumn))
    -> IO (Ptr TreeViewColumn)
    forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
    withForeignPtr ForeignPtr TreeView
    arg1 ((Ptr TreeView -> IO (Ptr TreeViewColumn))
     -> IO (Ptr TreeViewColumn))
    -> (Ptr TreeView -> IO (Ptr TreeViewColumn))
    -> IO (Ptr TreeViewColumn)
    forall a b. (a -> b) -> a -> b
    $ \Ptr TreeView
    argPtr1 ->Ptr TreeView -> CInt -> IO (Ptr TreeViewColumn)
    gtk_tree_view_get_column Ptr TreeView
    argPtr1 CInt
    arg2) (self -> TreeView
    forall o. TreeViewClass o => o -> TreeView
    toTreeView self
    self)
        (Int -> CInt
    forall a b. (Integral a, Num b) => a -> b
    fromIntegral Int
    pos)
      if tvcPtr==nullPtr then return Nothing else
        liftM Just $ makeNewObject mkTreeViewColumn (return tvcPtr)

    -- | Return all 'TreeViewColumn's in this 'TreeView'.
    --
    treeViewGetColumns :: TreeViewClass self => self -> IO [TreeViewColumn]
    treeViewGetColumns :: forall self. TreeViewClass self => self -> IO [TreeViewColumn]
    treeViewGetColumns self
    self = do
      colsList <- (\(TreeView ForeignPtr TreeView
    arg1) -> ForeignPtr TreeView -> (Ptr TreeView -> IO (Ptr ())) -> IO (Ptr ())
    forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
    withForeignPtr ForeignPtr TreeView
    arg1 ((Ptr TreeView -> IO (Ptr ())) -> IO (Ptr ()))
    -> (Ptr TreeView -> IO (Ptr ())) -> IO (Ptr ())
    forall a b. (a -> b) -> a -> b
    $ \Ptr TreeView
    argPtr1 ->Ptr TreeView -> IO (Ptr ())
    gtk_tree_view_get_columns Ptr TreeView
    argPtr1) (self -> TreeView
    forall o. TreeViewClass o => o -> TreeView
    toTreeView self
    self)
      colsPtr <- fromGList colsList
      mapM (makeNewObject mkTreeViewColumn) (map return colsPtr)

    -- | Move a specific column.
    --
    -- * Use 'treeViewMoveColumnToFront' if you want to move the column
    -- to the left end of the 'TreeView'.
    --
    treeViewMoveColumnAfter :: TreeViewClass self => self
     -> TreeViewColumn
     -> TreeViewColumn
     -> IO ()
    treeViewMoveColumnAfter :: forall self.
    TreeViewClass self =>
    self -> TreeViewColumn -> TreeViewColumn -> IO ()
    treeViewMoveColumnAfter self
    self TreeViewColumn
    column TreeViewColumn
    baseColumn =
      (\(TreeView ForeignPtr TreeView
    arg1) (TreeViewColumn ForeignPtr TreeViewColumn
    arg2) (TreeViewColumn ForeignPtr TreeViewColumn
    arg3) -> ForeignPtr TreeView -> (Ptr TreeView -> IO ()) -> IO ()
    forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
    withForeignPtr ForeignPtr TreeView
    arg1 ((Ptr TreeView -> IO ()) -> IO ())
    -> (Ptr TreeView -> IO ()) -> IO ()
    forall a b. (a -> b) -> a -> b
    $ \Ptr TreeView
    argPtr1 ->ForeignPtr TreeViewColumn -> (Ptr TreeViewColumn -> IO ()) -> IO ()
    forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
    withForeignPtr ForeignPtr TreeViewColumn
    arg2 ((Ptr TreeViewColumn -> IO ()) -> IO ())
    -> (Ptr TreeViewColumn -> IO ()) -> IO ()
    forall a b. (a -> b) -> a -> b
    $ \Ptr TreeViewColumn
    argPtr2 ->ForeignPtr TreeViewColumn -> (Ptr TreeViewColumn -> IO ()) -> IO ()
    forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
    withForeignPtr ForeignPtr TreeViewColumn
    arg3 ((Ptr TreeViewColumn -> IO ()) -> IO ())
    -> (Ptr TreeViewColumn -> IO ()) -> IO ()
    forall a b. (a -> b) -> a -> b
    $ \Ptr TreeViewColumn
    argPtr3 ->Ptr TreeView -> Ptr TreeViewColumn -> Ptr TreeViewColumn -> IO ()
    gtk_tree_view_move_column_after Ptr TreeView
    argPtr1 Ptr TreeViewColumn
    argPtr2 Ptr TreeViewColumn
    argPtr3)
    {-# LINE 495 "./Graphics/UI/Gtk/ModelView/TreeView.chs" #-}
        (toTreeView self)
        TreeViewColumn
    column
        TreeViewColumn
    baseColumn

    -- | Move a specific column.
    --
    -- * Use 'treeViewMoveColumnAfter' if you want to move the column
    -- somewhere else than to the leftmost position.
    --
    treeViewMoveColumnFirst :: TreeViewClass self => self -> TreeViewColumn -> IO ()
    treeViewMoveColumnFirst :: forall self. TreeViewClass self => self -> TreeViewColumn -> IO ()
    treeViewMoveColumnFirst self
    self TreeViewColumn
    which =
      (\(TreeView ForeignPtr TreeView
    arg1) (TreeViewColumn ForeignPtr TreeViewColumn
    arg2) (TreeViewColumn ForeignPtr TreeViewColumn
    arg3) -> ForeignPtr TreeView -> (Ptr TreeView -> IO ()) -> IO ()
    forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
    withForeignPtr ForeignPtr TreeView
    arg1 ((Ptr TreeView -> IO ()) -> IO ())
    -> (Ptr TreeView -> IO ()) -> IO ()
    forall a b. (a -> b) -> a -> b
    $ \Ptr TreeView
    argPtr1 ->ForeignPtr TreeViewColumn -> (Ptr TreeViewColumn -> IO ()) -> IO ()
    forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
    withForeignPtr ForeignPtr TreeViewColumn
    arg2 ((Ptr TreeViewColumn -> IO ()) -> IO ())
    -> (Ptr TreeViewColumn -> IO ()) -> IO ()
    forall a b. (a -> b) -> a -> b
    $ \Ptr TreeViewColumn
    argPtr2 ->ForeignPtr TreeViewColumn -> (Ptr TreeViewColumn -> IO ()) -> IO ()
    forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
    withForeignPtr ForeignPtr TreeViewColumn
    arg3 ((Ptr TreeViewColumn -> IO ()) -> IO ())
    -> (Ptr TreeViewColumn -> IO ()) -> IO ()
    forall a b. (a -> b) -> a -> b
    $ \Ptr TreeViewColumn
    argPtr3 ->Ptr TreeView -> Ptr TreeViewColumn -> Ptr TreeViewColumn -> IO ()
    gtk_tree_view_move_column_after Ptr TreeView
    argPtr1 Ptr TreeViewColumn
    argPtr2 Ptr TreeViewColumn
    argPtr3)
    {-# LINE 507 "./Graphics/UI/Gtk/ModelView/TreeView.chs" #-}
        (toTreeView self)
        TreeViewColumn
    which
        (ForeignPtr TreeViewColumn -> TreeViewColumn
    TreeViewColumn ForeignPtr TreeViewColumn
    forall a. ForeignPtr a
    nullForeignPtr)

    -- | Set location of hierarchy controls.
    --
    -- * Sets the column to draw the expander arrow at. If @col@
    -- is @Nothing@, then the expander arrow is always at the first
    -- visible column.
    --
    -- If you do not want expander arrow to appear in your tree, set the
    -- expander column to a hidden column.
    --
    treeViewSetExpanderColumn :: TreeViewClass self => self
     -> Maybe TreeViewColumn
     -> IO ()
    treeViewSetExpanderColumn :: forall self.
    TreeViewClass self =>
    self -> Maybe TreeViewColumn -> IO ()
    treeViewSetExpanderColumn self
    self Maybe TreeViewColumn
    column =
      (\(TreeView ForeignPtr TreeView
    arg1) (TreeViewColumn ForeignPtr TreeViewColumn
    arg2) -> ForeignPtr TreeView -> (Ptr TreeView -> IO ()) -> IO ()
    forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
    withForeignPtr ForeignPtr TreeView
    arg1 ((Ptr TreeView -> IO ()) -> IO ())
    -> (Ptr TreeView -> IO ()) -> IO ()
    forall a b. (a -> b) -> a -> b
    $ \Ptr TreeView
    argPtr1 ->ForeignPtr TreeViewColumn -> (Ptr TreeViewColumn -> IO ()) -> IO ()
    forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
    withForeignPtr ForeignPtr TreeViewColumn
    arg2 ((Ptr TreeViewColumn -> IO ()) -> IO ())
    -> (Ptr TreeViewColumn -> IO ()) -> IO ()
    forall a b. (a -> b) -> a -> b
    $ \Ptr TreeViewColumn
    argPtr2 ->Ptr TreeView -> Ptr TreeViewColumn -> IO ()
    gtk_tree_view_set_expander_column Ptr TreeView
    argPtr1 Ptr TreeViewColumn
    argPtr2)
    {-# LINE 525 "./Graphics/UI/Gtk/ModelView/TreeView.chs" #-}
        (toTreeView self)
        (TreeViewColumn -> Maybe TreeViewColumn -> TreeViewColumn
    forall a. a -> Maybe a -> a
    fromMaybe (ForeignPtr TreeViewColumn -> TreeViewColumn
    TreeViewColumn ForeignPtr TreeViewColumn
    forall a. ForeignPtr a
    nullForeignPtr) Maybe TreeViewColumn
    column)

    -- | Get location of hierarchy controls.
    --
    -- * Gets the column to draw the expander arrow at. If @col@
    -- is @Nothing@, then the expander arrow is always at the first
    -- visible column.
    --
    treeViewGetExpanderColumn :: TreeViewClass self => self
     -> IO TreeViewColumn
    treeViewGetExpanderColumn :: forall self. TreeViewClass self => self -> IO TreeViewColumn
    treeViewGetExpanderColumn self
    self =
      (ForeignPtr TreeViewColumn -> TreeViewColumn,
     FinalizerPtr TreeViewColumn)
    -> IO (Ptr TreeViewColumn) -> IO TreeViewColumn
    forall obj.
    GObjectClass obj =>
    (ForeignPtr obj -> obj, FinalizerPtr obj) -> IO (Ptr obj) -> IO obj
    makeNewObject (ForeignPtr TreeViewColumn -> TreeViewColumn,
     FinalizerPtr TreeViewColumn)
    forall {a}.
    (ForeignPtr TreeViewColumn -> TreeViewColumn, FinalizerPtr a)
    mkTreeViewColumn (IO (Ptr TreeViewColumn) -> IO TreeViewColumn)
    -> IO (Ptr TreeViewColumn) -> IO TreeViewColumn
    forall a b. (a -> b) -> a -> b
    $
      (\(TreeView ForeignPtr TreeView
    arg1) -> ForeignPtr TreeView
    -> (Ptr TreeView -> IO (Ptr TreeViewColumn))
    -> IO (Ptr TreeViewColumn)
    forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
    withForeignPtr ForeignPtr TreeView
    arg1 ((Ptr TreeView -> IO (Ptr TreeViewColumn))
     -> IO (Ptr TreeViewColumn))
    -> (Ptr TreeView -> IO (Ptr TreeViewColumn))
    -> IO (Ptr TreeViewColumn)
    forall a b. (a -> b) -> a -> b
    $ \Ptr TreeView
    argPtr1 ->Ptr TreeView -> IO (Ptr TreeViewColumn)
    gtk_tree_view_get_expander_column Ptr TreeView
    argPtr1)
    {-# LINE 539 "./Graphics/UI/Gtk/ModelView/TreeView.chs" #-}
        (toTreeView self)

    -- | Specify where a column may be dropped.
    --
    -- * Sets a user function for determining where a column may be dropped when
    -- dragged. This function is called on every column pair in turn at the
    -- beginning of a column drag to determine where a drop can take place.
    --
    -- * The callback function take the 'TreeViewColumn' to be moved, the
    -- second and third arguments are the columns on the left and right side
    -- of the new location. At most one of them might be @Nothing@
    -- which indicates that the column is about to be dropped at the left or
    -- right end of the 'TreeView'.
    --
    -- * The predicate @pred@ should return @True@ if it is ok
    -- to insert the column at this place.
    --
    -- * Use @Nothing@ for the predicate if columns can be inserted
    -- anywhere.
    --
    treeViewSetColumnDragFunction :: TreeViewClass self => self
     -> Maybe (TreeViewColumn
            -> Maybe TreeViewColumn
            -> Maybe TreeViewColumn
            -> IO Bool)
     -> IO ()
    treeViewSetColumnDragFunction :: forall self.
    TreeViewClass self =>
    self
    -> Maybe
         (TreeViewColumn
          -> Maybe TreeViewColumn -> Maybe TreeViewColumn -> IO Bool)
    -> IO ()
    treeViewSetColumnDragFunction self
    self Maybe
      (TreeViewColumn
       -> Maybe TreeViewColumn -> Maybe TreeViewColumn -> IO Bool)
    Nothing =
      (\(TreeView ForeignPtr TreeView
    arg1) FunPtr
      (Ptr TreeView
       -> Ptr TreeViewColumn
       -> Ptr TreeViewColumn
       -> Ptr TreeViewColumn
       -> Ptr ()
       -> IO CInt)
    arg2 Ptr ()
    arg3 FunPtr (Ptr () -> IO ())
    arg4 -> ForeignPtr TreeView -> (Ptr TreeView -> IO ()) -> IO ()
    forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
    withForeignPtr ForeignPtr TreeView
    arg1 ((Ptr TreeView -> IO ()) -> IO ())
    -> (Ptr TreeView -> IO ()) -> IO ()
    forall a b. (a -> b) -> a -> b
    $ \Ptr TreeView
    argPtr1 ->Ptr TreeView
    -> FunPtr
         (Ptr TreeView
          -> Ptr TreeViewColumn
          -> Ptr TreeViewColumn
          -> Ptr TreeViewColumn
          -> Ptr ()
          -> IO CInt)
    -> Ptr ()
    -> FunPtr (Ptr () -> IO ())
    -> IO ()
    gtk_tree_view_set_column_drag_function Ptr TreeView
    argPtr1 FunPtr
      (Ptr TreeView
       -> Ptr TreeViewColumn
       -> Ptr TreeViewColumn
       -> Ptr TreeViewColumn
       -> Ptr ()
       -> IO CInt)
    arg2 Ptr ()
    arg3 FunPtr (Ptr () -> IO ())
    arg4) (self -> TreeView
    forall o. TreeViewClass o => o -> TreeView
    toTreeView self
    self)
        FunPtr
      (Ptr TreeView
       -> Ptr TreeViewColumn
       -> Ptr TreeViewColumn
       -> Ptr TreeViewColumn
       -> Ptr ()
       -> IO CInt)
    forall a. FunPtr a
    nullFunPtr Ptr ()
    forall a. Ptr a
    nullPtr FunPtr (Ptr () -> IO ())
    forall a. FunPtr a
    nullFunPtr
    treeViewSetColumnDragFunction self
    self (Just TreeViewColumn
    -> Maybe TreeViewColumn -> Maybe TreeViewColumn -> IO Bool
    pred) = do
      fPtr <- (Ptr TreeView
     -> Ptr TreeViewColumn
     -> Ptr TreeViewColumn
     -> Ptr TreeViewColumn
     -> Ptr ()
     -> IO CInt)
    -> IO
         (FunPtr
            (Ptr TreeView
             -> Ptr TreeViewColumn
             -> Ptr TreeViewColumn
             -> Ptr TreeViewColumn
             -> Ptr ()
             -> IO CInt))
    mkTreeViewColumnDropFunc ((Ptr TreeView
      -> Ptr TreeViewColumn
      -> Ptr TreeViewColumn
      -> Ptr TreeViewColumn
      -> Ptr ()
      -> IO CInt)
     -> IO
          (FunPtr
             (Ptr TreeView
              -> Ptr TreeViewColumn
              -> Ptr TreeViewColumn
              -> Ptr TreeViewColumn
              -> Ptr ()
              -> IO CInt)))
    -> (Ptr TreeView
        -> Ptr TreeViewColumn
        -> Ptr TreeViewColumn
        -> Ptr TreeViewColumn
        -> Ptr ()
        -> IO CInt)
    -> IO
         (FunPtr
            (Ptr TreeView
             -> Ptr TreeViewColumn
             -> Ptr TreeViewColumn
             -> Ptr TreeViewColumn
             -> Ptr ()
             -> IO CInt))
    forall a b. (a -> b) -> a -> b
    $ \Ptr TreeView
    _ Ptr TreeViewColumn
    target Ptr TreeViewColumn
    prev Ptr TreeViewColumn
    next Ptr ()
    _ -> do
        target' <- (ForeignPtr TreeViewColumn -> TreeViewColumn,
     FinalizerPtr TreeViewColumn)
    -> IO (Ptr TreeViewColumn) -> IO TreeViewColumn
    forall obj.
    GObjectClass obj =>
    (ForeignPtr obj -> obj, FinalizerPtr obj) -> IO (Ptr obj) -> IO obj
    makeNewObject (ForeignPtr TreeViewColumn -> TreeViewColumn,
     FinalizerPtr TreeViewColumn)
    forall {a}.
    (ForeignPtr TreeViewColumn -> TreeViewColumn, FinalizerPtr a)
    mkTreeViewColumn (Ptr TreeViewColumn -> IO (Ptr TreeViewColumn)
    forall a. a -> IO a
    forall (m :: * -> *) a. Monad m => a -> m a
    return Ptr TreeViewColumn
    target)
        prev' <- if prev==nullPtr then return Nothing else liftM Just $
          makeNewObject mkTreeViewColumn (return prev)
        next' <- if next==nullPtr then return Nothing else liftM Just $
          makeNewObject mkTreeViewColumn (return next)
        res <- pred target' prev' next'
        return (fromBool res)
      (\(TreeView ForeignPtr TreeView
    arg1) FunPtr
      (Ptr TreeView
       -> Ptr TreeViewColumn
       -> Ptr TreeViewColumn
       -> Ptr TreeViewColumn
       -> Ptr ()
       -> IO CInt)
    arg2 Ptr ()
    arg3 FunPtr (Ptr () -> IO ())
    arg4 -> ForeignPtr TreeView -> (Ptr TreeView -> IO ()) -> IO ()
    forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
    withForeignPtr ForeignPtr TreeView
    arg1 ((Ptr TreeView -> IO ()) -> IO ())
    -> (Ptr TreeView -> IO ()) -> IO ()
    forall a b. (a -> b) -> a -> b
    $ \Ptr TreeView
    argPtr1 ->Ptr TreeView
    -> FunPtr
         (Ptr TreeView
          -> Ptr TreeViewColumn
          -> Ptr TreeViewColumn
          -> Ptr TreeViewColumn
          -> Ptr ()
          -> IO CInt)
    -> Ptr ()
    -> FunPtr (Ptr () -> IO ())
    -> IO ()
    gtk_tree_view_set_column_drag_function Ptr TreeView
    argPtr1 FunPtr
      (Ptr TreeView
       -> Ptr TreeViewColumn
       -> Ptr TreeViewColumn
       -> Ptr TreeViewColumn
       -> Ptr ()
       -> IO CInt)
    arg2 Ptr ()
    arg3 FunPtr (Ptr () -> IO ())
    arg4)
    {-# LINE 578 "./Graphics/UI/Gtk/ModelView/TreeView.chs" #-}
        (toTreeView self)
        fPtr
        (castFunPtrToPtr fPtr) destroyFunPtr

    type TreeViewColumnDropFunc = FunPtr (((Ptr TreeView) -> ((Ptr TreeViewColumn) -> ((Ptr TreeViewColumn) -> ((Ptr TreeViewColumn) -> ((Ptr ()) -> (IO CInt)))))))
    {-# LINE 583 "./Graphics/UI/Gtk/ModelView/TreeView.chs" #-}

    foreign import ccall "wrapper" mkTreeViewColumnDropFunc ::
      (Ptr TreeView -> Ptr TreeViewColumn -> Ptr TreeViewColumn -> Ptr TreeViewColumn ->
      Ptr () -> IO (CInt)) -> IO TreeViewColumnDropFunc

    -- | Scroll to a coordinate.
    --
    -- * Scrolls the tree view such that the top-left corner of the
    -- visible area is @treeX@, @treeY@, where @treeX@
    -- and @treeY@ are specified in tree window coordinates.
    -- The 'TreeView' must be realized before this function is
    -- called. If it isn't, you probably want to use
    -- 'treeViewScrollToCell'.
    --
    treeViewScrollToPoint :: TreeViewClass self => self
     -> Int
     -> Int
     -> IO ()
    treeViewScrollToPoint :: forall self. TreeViewClass self => self -> Int -> Int -> IO ()
    treeViewScrollToPoint self
    self Int
    treeX Int
    treeY =
      (\(TreeView ForeignPtr TreeView
    arg1) CInt
    arg2 CInt
    arg3 -> ForeignPtr TreeView -> (Ptr TreeView -> IO ()) -> IO ()
    forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
    withForeignPtr ForeignPtr TreeView
    arg1 ((Ptr TreeView -> IO ()) -> IO ())
    -> (Ptr TreeView -> IO ()) -> IO ()
    forall a b. (a -> b) -> a -> b
    $ \Ptr TreeView
    argPtr1 ->Ptr TreeView -> CInt -> CInt -> IO ()
    gtk_tree_view_scroll_to_point Ptr TreeView
    argPtr1 CInt
    arg2 CInt
    arg3)
    {-# LINE 603 "./Graphics/UI/Gtk/ModelView/TreeView.chs" #-}
        (toTreeView self)
        (Int -> CInt
    forall a b. (Integral a, Num b) => a -> b
    fromIntegral Int
    treeX)
        (Int -> CInt
    forall a b. (Integral a, Num b) => a -> b
    fromIntegral Int
    treeY)

    -- | Scroll to a cell.
    --
    -- Moves the alignments of tree_view to the position specified by mbColumn and mbPath.
    -- If mbColumn is Nothing, then no horizontal scrolling occurs. Likewise, if mbPath
    -- is Nothing no vertical scrolling occurs. At a minimum, one of mbColumn or mbPath
    -- need to be provided. @rowAlign@ determines where the row is placed, and
    -- @colAlign@ determines where column is placed. Both are expected to be between
    -- 0.0 and 1.0. 0.0 means left/top alignment, 1.0 means right/bottom alignment,
    -- 0.5 means center.
    --
    -- If Nothing is passed instead of @rowAlign@ and @colAlign@, then the tree does
    -- the minimum amount of work to scroll the cell onto the screen. This means
    -- that the cell will be scrolled to the edge closest to its current position.
    -- If the cell is currently visible on the screen, nothing is done.
    --
    -- This function only works if the model is set, and path is a valid row on
    -- the model. If the model changes before the tree_view is realized, the
    -- centered path will be modified to reflect this change.
    --
    treeViewScrollToCell :: TreeViewClass self => self
     -> Maybe TreePath
     -> Maybe TreeViewColumn
     -> Maybe (Float, Float)
     -> IO ()
    treeViewScrollToCell :: forall self.
    TreeViewClass self =>
    self
    -> Maybe TreePath
    -> Maybe TreeViewColumn
    -> Maybe (Float, Float)
    -> IO ()
    treeViewScrollToCell self
    self Maybe TreePath
    mbPath Maybe TreeViewColumn
    mbColumn (Just (Float
    rowAlign, Float
    colAlign)) =
      Maybe TreePath -> (NativeTreePath -> IO ()) -> IO ()
    forall a. Maybe TreePath -> (NativeTreePath -> IO a) -> IO a
    maybeWithTreePath Maybe TreePath
    mbPath ((NativeTreePath -> IO ()) -> IO ())
    -> (NativeTreePath -> IO ()) -> IO ()
    forall a b. (a -> b) -> a -> b
    $ \NativeTreePath
    path ->
      (\(TreeView ForeignPtr TreeView
    arg1) (NativeTreePath Ptr NativeTreePath
    arg2) (TreeViewColumn ForeignPtr TreeViewColumn
    arg3) CInt
    arg4 CFloat
    arg5 CFloat
    arg6 -> ForeignPtr TreeView -> (Ptr TreeView -> IO ()) -> IO ()
    forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
    withForeignPtr ForeignPtr TreeView
    arg1 ((Ptr TreeView -> IO ()) -> IO ())
    -> (Ptr TreeView -> IO ()) -> IO ()
    forall a b. (a -> b) -> a -> b
    $ \Ptr TreeView
    argPtr1 ->ForeignPtr TreeViewColumn -> (Ptr TreeViewColumn -> IO ()) -> IO ()
    forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
    withForeignPtr ForeignPtr TreeViewColumn
    arg3 ((Ptr TreeViewColumn -> IO ()) -> IO ())
    -> (Ptr TreeViewColumn -> IO ()) -> IO ()
    forall a b. (a -> b) -> a -> b
    $ \Ptr TreeViewColumn
    argPtr3 ->Ptr TreeView
    -> Ptr NativeTreePath
    -> Ptr TreeViewColumn
    -> CInt
    -> CFloat
    -> CFloat
    -> IO ()
    gtk_tree_view_scroll_to_cell Ptr TreeView
    argPtr1 Ptr NativeTreePath
    arg2 Ptr TreeViewColumn
    argPtr3 CInt
    arg4 CFloat
    arg5 CFloat
    arg6)
    {-# LINE 634 "./Graphics/UI/Gtk/ModelView/TreeView.chs" #-}
        (toTreeView self)
        NativeTreePath
    path
        (TreeViewColumn
    -> (TreeViewColumn -> TreeViewColumn)
    -> Maybe TreeViewColumn
    -> TreeViewColumn
    forall b a. b -> (a -> b) -> Maybe a -> b
    maybe (ForeignPtr TreeViewColumn -> TreeViewColumn
    TreeViewColumn ForeignPtr TreeViewColumn
    forall a. ForeignPtr a
    nullForeignPtr) TreeViewColumn -> TreeViewColumn
    forall o. TreeViewColumnClass o => o -> TreeViewColumn
    toTreeViewColumn Maybe TreeViewColumn
    mbColumn)
        CInt
    1
        (Float -> CFloat
    forall a b. (Real a, Fractional b) => a -> b
    realToFrac Float
    rowAlign)
        (Float -> CFloat
    forall a b. (Real a, Fractional b) => a -> b
    realToFrac Float
    colAlign)
    treeViewScrollToCell self
    self Maybe TreePath
    mbPath Maybe TreeViewColumn
    mbColumn Maybe (Float, Float)
    Nothing =
      Maybe TreePath -> (NativeTreePath -> IO ()) -> IO ()
    forall a. Maybe TreePath -> (NativeTreePath -> IO a) -> IO a
    maybeWithTreePath Maybe TreePath
    mbPath ((NativeTreePath -> IO ()) -> IO ())
    -> (NativeTreePath -> IO ()) -> IO ()
    forall a b. (a -> b) -> a -> b
    $ \NativeTreePath
    path ->
      (\(TreeView ForeignPtr TreeView
    arg1) (NativeTreePath Ptr NativeTreePath
    arg2) (TreeViewColumn ForeignPtr TreeViewColumn
    arg3) CInt
    arg4 CFloat
    arg5 CFloat
    arg6 -> ForeignPtr TreeView -> (Ptr TreeView -> IO ()) -> IO ()
    forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
    withForeignPtr ForeignPtr TreeView
    arg1 ((Ptr TreeView -> IO ()) -> IO ())
    -> (Ptr TreeView -> IO ()) -> IO ()
    forall a b. (a -> b) -> a -> b
    $ \Ptr TreeView
    argPtr1 ->ForeignPtr TreeViewColumn -> (Ptr TreeViewColumn -> IO ()) -> IO ()
    forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
    withForeignPtr ForeignPtr TreeViewColumn
    arg3 ((Ptr TreeViewColumn -> IO ()) -> IO ())
    -> (Ptr TreeViewColumn -> IO ()) -> IO ()
    forall a b. (a -> b) -> a -> b
    $ \Ptr TreeViewColumn
    argPtr3 ->Ptr TreeView
    -> Ptr NativeTreePath
    -> Ptr TreeViewColumn
    -> CInt
    -> CFloat
    -> CFloat
    -> IO ()
    gtk_tree_view_scroll_to_cell Ptr TreeView
    argPtr1 Ptr NativeTreePath
    arg2 Ptr TreeViewColumn
    argPtr3 CInt
    arg4 CFloat
    arg5 CFloat
    arg6)
    {-# LINE 643 "./Graphics/UI/Gtk/ModelView/TreeView.chs" #-}
        (toTreeView self)
        NativeTreePath
    path
        (TreeViewColumn
    -> (TreeViewColumn -> TreeViewColumn)
    -> Maybe TreeViewColumn
    -> TreeViewColumn
    forall b a. b -> (a -> b) -> Maybe a -> b
    maybe (ForeignPtr TreeViewColumn -> TreeViewColumn
    TreeViewColumn ForeignPtr TreeViewColumn
    forall a. ForeignPtr a
    nullForeignPtr) TreeViewColumn -> TreeViewColumn
    forall o. TreeViewColumnClass o => o -> TreeViewColumn
    toTreeViewColumn Maybe TreeViewColumn
    mbColumn)
        CInt
    0
        CFloat
    0.0
        CFloat
    0.0

    -- | Selects a specific row.
    --
    -- * Sets the current keyboard focus to be at @path@, and
    -- selects it. This is useful when you want to focus the user\'s
    -- attention on a particular row. If @focusColumn@ is given,
    -- then the input focus is given to the column specified by
    -- it. Additionally, if @focusColumn@ is specified, and
    -- @startEditing@ is @True@,
    -- then editing will be started in the
    -- specified cell. This function is often followed by a
    -- 'widgetGrabFocus' to the 'TreeView' in order
    -- to give keyboard focus to the widget.
    --
    treeViewSetCursor :: TreeViewClass self => self
     -> TreePath
     -> (Maybe (TreeViewColumn, Bool))
     -> IO ()
    treeViewSetCursor :: forall self.
    TreeViewClass self =>
    self -> TreePath -> Maybe (TreeViewColumn, Bool) -> IO ()
    treeViewSetCursor self
    self TreePath
    path Maybe (TreeViewColumn, Bool)
    Nothing =
      TreePath -> (NativeTreePath -> IO ()) -> IO ()
    forall a. TreePath -> (NativeTreePath -> IO a) -> IO a
    withTreePath TreePath
    path ((NativeTreePath -> IO ()) -> IO ())
    -> (NativeTreePath -> IO ()) -> IO ()
    forall a b. (a -> b) -> a -> b
    $ \NativeTreePath
    path ->
      (\(TreeView ForeignPtr TreeView
    arg1) (NativeTreePath Ptr NativeTreePath
    arg2) (TreeViewColumn ForeignPtr TreeViewColumn
    arg3) CInt
    arg4 -> ForeignPtr TreeView -> (Ptr TreeView -> IO ()) -> IO ()
    forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
    withForeignPtr ForeignPtr TreeView
    arg1 ((Ptr TreeView -> IO ()) -> IO ())
    -> (Ptr TreeView -> IO ()) -> IO ()
    forall a b. (a -> b) -> a -> b
    $ \Ptr TreeView
    argPtr1 ->ForeignPtr TreeViewColumn -> (Ptr TreeViewColumn -> IO ()) -> IO ()
    forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
    withForeignPtr ForeignPtr TreeViewColumn
    arg3 ((Ptr TreeViewColumn -> IO ()) -> IO ())
    -> (Ptr TreeViewColumn -> IO ()) -> IO ()
    forall a b. (a -> b) -> a -> b
    $ \Ptr TreeViewColumn
    argPtr3 ->Ptr TreeView
    -> Ptr NativeTreePath -> Ptr TreeViewColumn -> CInt -> IO ()
    gtk_tree_view_set_cursor Ptr TreeView
    argPtr1 Ptr NativeTreePath
    arg2 Ptr TreeViewColumn
    argPtr3 CInt
    arg4)
    {-# LINE 670 "./Graphics/UI/Gtk/ModelView/TreeView.chs" #-}
        (toTreeView self)
        NativeTreePath
    path
        (ForeignPtr TreeViewColumn -> TreeViewColumn
    TreeViewColumn ForeignPtr TreeViewColumn
    forall a. ForeignPtr a
    nullForeignPtr)
        (Bool -> CInt
    forall a. Num a => Bool -> a
    fromBool Bool
    False)
    treeViewSetCursor self
    self TreePath
    path (Just (TreeViewColumn
    focusColumn, Bool
    startEditing)) =
      TreePath -> (NativeTreePath -> IO ()) -> IO ()
    forall a. TreePath -> (NativeTreePath -> IO a) -> IO a
    withTreePath TreePath
    path ((NativeTreePath -> IO ()) -> IO ())
    -> (NativeTreePath -> IO ()) -> IO ()
    forall a b. (a -> b) -> a -> b
    $ \NativeTreePath
    path ->
      (\(TreeView ForeignPtr TreeView
    arg1) (NativeTreePath Ptr NativeTreePath
    arg2) (TreeViewColumn ForeignPtr TreeViewColumn
    arg3) CInt
    arg4 -> ForeignPtr TreeView -> (Ptr TreeView -> IO ()) -> IO ()
    forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
    withForeignPtr ForeignPtr TreeView
    arg1 ((Ptr TreeView -> IO ()) -> IO ())
    -> (Ptr TreeView -> IO ()) -> IO ()
    forall a b. (a -> b) -> a -> b
    $ \Ptr TreeView
    argPtr1 ->ForeignPtr TreeViewColumn -> (Ptr TreeViewColumn -> IO ()) -> IO ()
    forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
    withForeignPtr ForeignPtr TreeViewColumn
    arg3 ((Ptr TreeViewColumn -> IO ()) -> IO ())
    -> (Ptr TreeViewColumn -> IO ()) -> IO ()
    forall a b. (a -> b) -> a -> b
    $ \Ptr TreeViewColumn
    argPtr3 ->Ptr TreeView
    -> Ptr NativeTreePath -> Ptr TreeViewColumn -> CInt -> IO ()
    gtk_tree_view_set_cursor Ptr TreeView
    argPtr1 Ptr NativeTreePath
    arg2 Ptr TreeViewColumn
    argPtr3 CInt
    arg4)
    {-# LINE 677 "./Graphics/UI/Gtk/ModelView/TreeView.chs" #-}
        (toTreeView self)
        NativeTreePath
    path
        TreeViewColumn
    focusColumn
        (Bool -> CInt
    forall a. Num a => Bool -> a
    fromBool Bool
    startEditing)

    -- | Selects a cell in a specific row.
    --
    -- * Similar to 'treeViewSetCursor' but allows a column to
    -- contain several 'CellRenderer's.
    --
    -- * Only available in Gtk 2.2 and higher.
    --
    treeViewSetCursorOnCell :: (TreeViewClass self, CellRendererClass focusCell) => self
     -> TreePath
     -> TreeViewColumn
     -> focusCell
     -> Bool
     -> IO ()
    treeViewSetCursorOnCell :: forall self focusCell.
    (TreeViewClass self, CellRendererClass focusCell) =>
    self -> TreePath -> TreeViewColumn -> focusCell -> Bool -> IO ()
    treeViewSetCursorOnCell self
    self TreePath
    path TreeViewColumn
    focusColumn focusCell
    focusCell Bool
    startEditing =
      TreePath -> (NativeTreePath -> IO ()) -> IO ()
    forall a. TreePath -> (NativeTreePath -> IO a) -> IO a
    withTreePath TreePath
    path ((NativeTreePath -> IO ()) -> IO ())
    -> (NativeTreePath -> IO ()) -> IO ()
    forall a b. (a -> b) -> a -> b
    $ \NativeTreePath
    path ->
      (\(TreeView ForeignPtr TreeView
    arg1) (NativeTreePath Ptr NativeTreePath
    arg2) (TreeViewColumn ForeignPtr TreeViewColumn
    arg3) (CellRenderer ForeignPtr CellRenderer
    arg4) CInt
    arg5 -> ForeignPtr TreeView -> (Ptr TreeView -> IO ()) -> IO ()
    forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
    withForeignPtr ForeignPtr TreeView
    arg1 ((Ptr TreeView -> IO ()) -> IO ())
    -> (Ptr TreeView -> IO ()) -> IO ()
    forall a b. (a -> b) -> a -> b
    $ \Ptr TreeView
    argPtr1 ->ForeignPtr TreeViewColumn -> (Ptr TreeViewColumn -> IO ()) -> IO ()
    forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
    withForeignPtr ForeignPtr TreeViewColumn
    arg3 ((Ptr TreeViewColumn -> IO ()) -> IO ())
    -> (Ptr TreeViewColumn -> IO ()) -> IO ()
    forall a b. (a -> b) -> a -> b
    $ \Ptr TreeViewColumn
    argPtr3 ->ForeignPtr CellRenderer -> (Ptr CellRenderer -> IO ()) -> IO ()
    forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
    withForeignPtr ForeignPtr CellRenderer
    arg4 ((Ptr CellRenderer -> IO ()) -> IO ())
    -> (Ptr CellRenderer -> IO ()) -> IO ()
    forall a b. (a -> b) -> a -> b
    $ \Ptr CellRenderer
    argPtr4 ->Ptr TreeView
    -> Ptr NativeTreePath
    -> Ptr TreeViewColumn
    -> Ptr CellRenderer
    -> CInt
    -> IO ()
    gtk_tree_view_set_cursor_on_cell Ptr TreeView
    argPtr1 Ptr NativeTreePath
    arg2 Ptr TreeViewColumn
    argPtr3 Ptr CellRenderer
    argPtr4 CInt
    arg5)
    {-# LINE 699 "./Graphics/UI/Gtk/ModelView/TreeView.chs" #-}
        (toTreeView self)
        NativeTreePath
    path
        TreeViewColumn
    focusColumn
        (focusCell -> CellRenderer
    forall o. CellRendererClass o => o -> CellRenderer
    toCellRenderer focusCell
    focusCell)
        (Bool -> CInt
    forall a. Num a => Bool -> a
    fromBool Bool
    startEditing)

    -- | Retrieves the position of the focus.
    --
    -- * Returns a pair @(path, column)@.If the cursor is not currently
    -- set, @path@ will be @[]@. If no column is currently
    -- selected, @column@ will be @Nothing@.
    --
    treeViewGetCursor :: TreeViewClass self => self
     -> IO (TreePath, Maybe TreeViewColumn)
    treeViewGetCursor :: forall self.
    TreeViewClass self =>
    self -> IO (TreePath, Maybe TreeViewColumn)
    treeViewGetCursor self
    self =
      (Ptr (Ptr NativeTreePath) -> IO (TreePath, Maybe TreeViewColumn))
    -> IO (TreePath, Maybe TreeViewColumn)
    forall a b. Storable a => (Ptr a -> IO b) -> IO b
    alloca ((Ptr (Ptr NativeTreePath) -> IO (TreePath, Maybe TreeViewColumn))
     -> IO (TreePath, Maybe TreeViewColumn))
    -> (Ptr (Ptr NativeTreePath)
        -> IO (TreePath, Maybe TreeViewColumn))
    -> IO (TreePath, Maybe TreeViewColumn)
    forall a b. (a -> b) -> a -> b
    $ \Ptr (Ptr NativeTreePath)
    tpPtrPtr -> (Ptr (Ptr TreeViewColumn) -> IO (TreePath, Maybe TreeViewColumn))
    -> IO (TreePath, Maybe TreeViewColumn)
    forall a b. Storable a => (Ptr a -> IO b) -> IO b
    alloca ((Ptr (Ptr TreeViewColumn) -> IO (TreePath, Maybe TreeViewColumn))
     -> IO (TreePath, Maybe TreeViewColumn))
    -> (Ptr (Ptr TreeViewColumn)
        -> IO (TreePath, Maybe TreeViewColumn))
    -> IO (TreePath, Maybe TreeViewColumn)
    forall a b. (a -> b) -> a -> b
    $ \Ptr (Ptr TreeViewColumn)
    tvcPtrPtr -> do
      (\(TreeView ForeignPtr TreeView
    arg1) Ptr NativeTreePath
    arg2 Ptr TreeViewColumn
    arg3 -> ForeignPtr TreeView -> (Ptr TreeView -> IO ()) -> IO ()
    forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
    withForeignPtr ForeignPtr TreeView
    arg1 ((Ptr TreeView -> IO ()) -> IO ())
    -> (Ptr TreeView -> IO ()) -> IO ()
    forall a b. (a -> b) -> a -> b
    $ \Ptr TreeView
    argPtr1 ->Ptr TreeView -> Ptr NativeTreePath -> Ptr TreeViewColumn -> IO ()
    gtk_tree_view_get_cursor Ptr TreeView
    argPtr1 Ptr NativeTreePath
    arg2 Ptr TreeViewColumn
    arg3)
    {-# LINE 717 "./Graphics/UI/Gtk/ModelView/TreeView.chs" #-}
        (toTreeView self)
        (Ptr (Ptr NativeTreePath) -> Ptr NativeTreePath
    forall a b. Ptr a -> Ptr b
    castPtr Ptr (Ptr NativeTreePath)
    tpPtrPtr)
        (Ptr (Ptr TreeViewColumn) -> Ptr TreeViewColumn
    forall a b. Ptr a -> Ptr b
    castPtr Ptr (Ptr TreeViewColumn)
    tvcPtrPtr)
      tpPtr <- Ptr (Ptr NativeTreePath) -> IO (Ptr NativeTreePath)
    forall a. Storable a => Ptr a -> IO a
    peek Ptr (Ptr NativeTreePath)
    tpPtrPtr
      tvcPtr <- peek tvcPtrPtr
      tp <- fromTreePath tpPtr
      tvc <- if tvcPtr==nullPtr then return Nothing else liftM Just $
        makeNewObject mkTreeViewColumn (return tvcPtr)
      return (tp,tvc)

    -- | Emit the activated signal on a cell.
    --
    treeViewRowActivated :: TreeViewClass self => self
     -> TreePath
     -> TreeViewColumn
     -> IO ()
    treeViewRowActivated :: forall self.
    TreeViewClass self =>
    self -> TreePath -> TreeViewColumn -> IO ()
    treeViewRowActivated self
    self TreePath
    path TreeViewColumn
    column =
      TreePath -> (NativeTreePath -> IO ()) -> IO ()
    forall a. TreePath -> (NativeTreePath -> IO a) -> IO a
    withTreePath TreePath
    path ((NativeTreePath -> IO ()) -> IO ())
    -> (NativeTreePath -> IO ()) -> IO ()
    forall a b. (a -> b) -> a -> b
    $ \NativeTreePath
    path ->
      (\(TreeView ForeignPtr TreeView
    arg1) (NativeTreePath Ptr NativeTreePath
    arg2) (TreeViewColumn ForeignPtr TreeViewColumn
    arg3) -> ForeignPtr TreeView -> (Ptr TreeView -> IO ()) -> IO ()
    forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
    withForeignPtr ForeignPtr TreeView
    arg1 ((Ptr TreeView -> IO ()) -> IO ())
    -> (Ptr TreeView -> IO ()) -> IO ()
    forall a b. (a -> b) -> a -> b
    $ \Ptr TreeView
    argPtr1 ->ForeignPtr TreeViewColumn -> (Ptr TreeViewColumn -> IO ()) -> IO ()
    forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
    withForeignPtr ForeignPtr TreeViewColumn
    arg3 ((Ptr TreeViewColumn -> IO ()) -> IO ())
    -> (Ptr TreeViewColumn -> IO ()) -> IO ()
    forall a b. (a -> b) -> a -> b
    $ \Ptr TreeViewColumn
    argPtr3 ->Ptr TreeView -> Ptr NativeTreePath -> Ptr TreeViewColumn -> IO ()
    gtk_tree_view_row_activated Ptr TreeView
    argPtr1 Ptr NativeTreePath
    arg2 Ptr TreeViewColumn
    argPtr3)
    {-# LINE 736 "./Graphics/UI/Gtk/ModelView/TreeView.chs" #-}
        (toTreeView self)
        NativeTreePath
    path
        TreeViewColumn
    column

    -- | Recursively expands all nodes in the tree view.
    --
    treeViewExpandAll :: TreeViewClass self => self -> IO ()
    treeViewExpandAll :: forall self. TreeViewClass self => self -> IO ()
    treeViewExpandAll self
    self =
      (\(TreeView ForeignPtr TreeView
    arg1) -> ForeignPtr TreeView -> (Ptr TreeView -> IO ()) -> IO ()
    forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
    withForeignPtr ForeignPtr TreeView
    arg1 ((Ptr TreeView -> IO ()) -> IO ())
    -> (Ptr TreeView -> IO ()) -> IO ()
    forall a b. (a -> b) -> a -> b
    $ \Ptr TreeView
    argPtr1 ->Ptr TreeView -> IO ()
    gtk_tree_view_expand_all Ptr TreeView
    argPtr1)
    {-# LINE 745 "./Graphics/UI/Gtk/ModelView/TreeView.chs" #-}
        (toTreeView self)

    -- | Recursively collapses all visible, expanded nodes in the tree view.
    --
    treeViewCollapseAll :: TreeViewClass self => self -> IO ()
    treeViewCollapseAll :: forall self. TreeViewClass self => self -> IO ()
    treeViewCollapseAll self
    self =
      (\(TreeView ForeignPtr TreeView
    arg1) -> ForeignPtr TreeView -> (Ptr TreeView -> IO ()) -> IO ()
    forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
    withForeignPtr ForeignPtr TreeView
    arg1 ((Ptr TreeView -> IO ()) -> IO ())
    -> (Ptr TreeView -> IO ()) -> IO ()
    forall a b. (a -> b) -> a -> b
    $ \Ptr TreeView
    argPtr1 ->Ptr TreeView -> IO ()
    gtk_tree_view_collapse_all Ptr TreeView
    argPtr1)
    {-# LINE 752 "./Graphics/UI/Gtk/ModelView/TreeView.chs" #-}
        (toTreeView self)

    -- | Make a certain path visible.
    --
    -- * This will expand all parent rows of @tp@ as necessary.
    --
    -- * Only available in Gtk 2.2 and higher.
    --
    treeViewExpandToPath :: TreeViewClass self => self -> TreePath -> IO ()
    treeViewExpandToPath :: forall self. TreeViewClass self => self -> TreePath -> IO ()
    treeViewExpandToPath self
    self TreePath
    path =
      TreePath -> (NativeTreePath -> IO ()) -> IO ()
    forall a. TreePath -> (NativeTreePath -> IO a) -> IO a
    withTreePath TreePath
    path ((NativeTreePath -> IO ()) -> IO ())
    -> (NativeTreePath -> IO ()) -> IO ()
    forall a b. (a -> b) -> a -> b
    $ \NativeTreePath
    path ->
      (\(TreeView ForeignPtr TreeView
    arg1) (NativeTreePath Ptr NativeTreePath
    arg2) -> ForeignPtr TreeView -> (Ptr TreeView -> IO ()) -> IO ()
    forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
    withForeignPtr ForeignPtr TreeView
    arg1 ((Ptr TreeView -> IO ()) -> IO ())
    -> (Ptr TreeView -> IO ()) -> IO ()
    forall a b. (a -> b) -> a -> b
    $ \Ptr TreeView
    argPtr1 ->Ptr TreeView -> Ptr NativeTreePath -> IO ()
    gtk_tree_view_expand_to_path Ptr TreeView
    argPtr1 Ptr NativeTreePath
    arg2)
    {-# LINE 765 "./Graphics/UI/Gtk/ModelView/TreeView.chs" #-}
        (toTreeView self)
        NativeTreePath
    path

    -- | Opens the row so its children are visible.
    --
    treeViewExpandRow :: TreeViewClass self => self
     -> TreePath -- ^ @path@ - path to a row
     -> Bool -- ^ @openAll@ - whether to recursively expand, or just expand
                 -- immediate children
     -> IO Bool -- ^ returns @True@ if the row existed and had children
    treeViewExpandRow :: forall self.
    TreeViewClass self =>
    self -> TreePath -> Bool -> IO Bool
    treeViewExpandRow self
    self TreePath
    path Bool
    openAll =
      (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
    $
      TreePath -> (NativeTreePath -> IO CInt) -> IO CInt
    forall a. TreePath -> (NativeTreePath -> IO a) -> IO a
    withTreePath TreePath
    path ((NativeTreePath -> IO CInt) -> IO CInt)
    -> (NativeTreePath -> IO CInt) -> IO CInt
    forall a b. (a -> b) -> a -> b
    $ \NativeTreePath
    path ->
      (\(TreeView ForeignPtr TreeView
    arg1) (NativeTreePath Ptr NativeTreePath
    arg2) CInt
    arg3 -> ForeignPtr TreeView -> (Ptr TreeView -> IO CInt) -> IO CInt
    forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
    withForeignPtr ForeignPtr TreeView
    arg1 ((Ptr TreeView -> IO CInt) -> IO CInt)
    -> (Ptr TreeView -> IO CInt) -> IO CInt
    forall a b. (a -> b) -> a -> b
    $ \Ptr TreeView
    argPtr1 ->Ptr TreeView -> Ptr NativeTreePath -> CInt -> IO CInt
    gtk_tree_view_expand_row Ptr TreeView
    argPtr1 Ptr NativeTreePath
    arg2 CInt
    arg3)
    {-# LINE 780 "./Graphics/UI/Gtk/ModelView/TreeView.chs" #-}
        (toTreeView self)
        NativeTreePath
    path
        (Bool -> CInt
    forall a. Num a => Bool -> a
    fromBool Bool
    openAll)

    -- | Collapses a row (hides its child rows, if they exist).
    --
    treeViewCollapseRow :: TreeViewClass self => self
     -> TreePath -- ^ @path@ - path to a row in the tree view
     -> IO Bool -- ^ returns @True@ if the row was collapsed.
    treeViewCollapseRow :: forall self. TreeViewClass self => self -> TreePath -> IO Bool
    treeViewCollapseRow self
    self TreePath
    path =
      (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
    $
      TreePath -> (NativeTreePath -> IO CInt) -> IO CInt
    forall a. TreePath -> (NativeTreePath -> IO a) -> IO a
    withTreePath TreePath
    path ((NativeTreePath -> IO CInt) -> IO CInt)
    -> (NativeTreePath -> IO CInt) -> IO CInt
    forall a b. (a -> b) -> a -> b
    $ \NativeTreePath
    path ->
      (\(TreeView ForeignPtr TreeView
    arg1) (NativeTreePath Ptr NativeTreePath
    arg2) -> ForeignPtr TreeView -> (Ptr TreeView -> IO CInt) -> IO CInt
    forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
    withForeignPtr ForeignPtr TreeView
    arg1 ((Ptr TreeView -> IO CInt) -> IO CInt)
    -> (Ptr TreeView -> IO CInt) -> IO CInt
    forall a b. (a -> b) -> a -> b
    $ \Ptr TreeView
    argPtr1 ->Ptr TreeView -> Ptr NativeTreePath -> IO CInt
    gtk_tree_view_collapse_row Ptr TreeView
    argPtr1 Ptr NativeTreePath
    arg2)
    {-# LINE 793 "./Graphics/UI/Gtk/ModelView/TreeView.chs" #-}
        (toTreeView self)
        NativeTreePath
    path

    -- | Call function for every expanded row.
    --
    treeViewMapExpandedRows :: TreeViewClass self => self
     -> (TreePath -> IO ())
     -> IO ()
    treeViewMapExpandedRows :: forall self.
    TreeViewClass self =>
    self -> (TreePath -> IO ()) -> IO ()
    treeViewMapExpandedRows self
    self TreePath -> IO ()
    func = do
      fPtr <- (Ptr TreeView -> Ptr NativeTreePath -> Ptr () -> IO ())
    -> IO TreeViewMappingFunc
    mkTreeViewMappingFunc ((Ptr TreeView -> Ptr NativeTreePath -> Ptr () -> IO ())
     -> IO TreeViewMappingFunc)
    -> (Ptr TreeView -> Ptr NativeTreePath -> Ptr () -> IO ())
    -> IO TreeViewMappingFunc
    forall a b. (a -> b) -> a -> b
    $ \Ptr TreeView
    _ Ptr NativeTreePath
    tpPtr Ptr ()
    _ -> Ptr NativeTreePath -> IO TreePath
    fromTreePath Ptr NativeTreePath
    tpPtr IO TreePath -> (TreePath -> IO ()) -> IO ()
    forall a b. IO a -> (a -> IO b) -> IO b
    forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
    >>= TreePath -> IO ()
    func
      (\(TreeView ForeignPtr TreeView
    arg1) TreeViewMappingFunc
    arg2 Ptr ()
    arg3 -> ForeignPtr TreeView -> (Ptr TreeView -> IO ()) -> IO ()
    forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
    withForeignPtr ForeignPtr TreeView
    arg1 ((Ptr TreeView -> IO ()) -> IO ())
    -> (Ptr TreeView -> IO ()) -> IO ()
    forall a b. (a -> b) -> a -> b
    $ \Ptr TreeView
    argPtr1 ->Ptr TreeView -> TreeViewMappingFunc -> Ptr () -> IO ()
    gtk_tree_view_map_expanded_rows Ptr TreeView
    argPtr1 TreeViewMappingFunc
    arg2 Ptr ()
    arg3)
    {-# LINE 804 "./Graphics/UI/Gtk/ModelView/TreeView.chs" #-}
        (toTreeView self)
        fPtr
        nullPtr
      freeHaskellFunPtr fPtr

    type TreeViewMappingFunc = FunPtr (((Ptr TreeView) -> ((Ptr NativeTreePath) -> ((Ptr ()) -> (IO ())))))
    {-# LINE 810 "./Graphics/UI/Gtk/ModelView/TreeView.chs" #-}

    foreign import ccall "wrapper" mkTreeViewMappingFunc ::
      (Ptr TreeView -> Ptr NativeTreePath -> Ptr () -> IO ()) ->
      IO TreeViewMappingFunc

    -- | Check if row is expanded.
    --
    treeViewRowExpanded :: TreeViewClass self => self
     -> TreePath -- ^ @path@ - A 'TreePath' to test expansion state.
     -> IO Bool -- ^ returns @True@ if @path@ is expanded.
    treeViewRowExpanded :: forall self. TreeViewClass self => self -> TreePath -> IO Bool
    treeViewRowExpanded self
    self TreePath
    path =
      (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
    $
      TreePath -> (NativeTreePath -> IO CInt) -> IO CInt
    forall a. TreePath -> (NativeTreePath -> IO a) -> IO a
    withTreePath TreePath
    path ((NativeTreePath -> IO CInt) -> IO CInt)
    -> (NativeTreePath -> IO CInt) -> IO CInt
    forall a b. (a -> b) -> a -> b
    $ \NativeTreePath
    path ->
      (\(TreeView ForeignPtr TreeView
    arg1) (NativeTreePath Ptr NativeTreePath
    arg2) -> ForeignPtr TreeView -> (Ptr TreeView -> IO CInt) -> IO CInt
    forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
    withForeignPtr ForeignPtr TreeView
    arg1 ((Ptr TreeView -> IO CInt) -> IO CInt)
    -> (Ptr TreeView -> IO CInt) -> IO CInt
    forall a b. (a -> b) -> a -> b
    $ \Ptr TreeView
    argPtr1 ->Ptr TreeView -> Ptr NativeTreePath -> IO CInt
    gtk_tree_view_row_expanded Ptr TreeView
    argPtr1 Ptr NativeTreePath
    arg2)
    {-# LINE 824 "./Graphics/UI/Gtk/ModelView/TreeView.chs" #-}
        (toTreeView self)
        NativeTreePath
    path

    -- | Query if rows can be moved around.
    --
    -- * See 'treeViewSetReorderable'.
    --
    treeViewGetReorderable :: TreeViewClass self => self -> IO Bool
    treeViewGetReorderable :: forall self. TreeViewClass self => self -> IO Bool
    treeViewGetReorderable 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
    $
      (\(TreeView ForeignPtr TreeView
    arg1) -> ForeignPtr TreeView -> (Ptr TreeView -> IO CInt) -> IO CInt
    forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
    withForeignPtr ForeignPtr TreeView
    arg1 ((Ptr TreeView -> IO CInt) -> IO CInt)
    -> (Ptr TreeView -> IO CInt) -> IO CInt
    forall a b. (a -> b) -> a -> b
    $ \Ptr TreeView
    argPtr1 ->Ptr TreeView -> IO CInt
    gtk_tree_view_get_reorderable Ptr TreeView
    argPtr1)
    {-# LINE 835 "./Graphics/UI/Gtk/ModelView/TreeView.chs" #-}
        (toTreeView self)

    -- | Check if rows can be moved around.
    --
    -- * Set whether the user can use drag and drop (DND) to reorder the rows in
    -- the store. This works on both 'TreeStore' and 'ListStore' models. If @ro@
    -- is @True@, then the user can reorder the model by dragging and dropping
    -- rows. The developer can listen to these changes by connecting to the
    -- model's signals. If you need to control which rows may be dragged or
    -- where rows may be dropped, you can override the
    -- 'Graphics.UI.Gtk.ModelView.CustomStore.treeDragSourceRowDraggable'
    -- function in the default DND implementation of the model.
    --
    treeViewSetReorderable :: TreeViewClass self => self
     -> Bool
     -> IO ()
    treeViewSetReorderable :: forall self. TreeViewClass self => self -> Bool -> IO ()
    treeViewSetReorderable self
    self Bool
    reorderable =
      (\(TreeView ForeignPtr TreeView
    arg1) CInt
    arg2 -> ForeignPtr TreeView -> (Ptr TreeView -> IO ()) -> IO ()
    forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
    withForeignPtr ForeignPtr TreeView
    arg1 ((Ptr TreeView -> IO ()) -> IO ())
    -> (Ptr TreeView -> IO ()) -> IO ()
    forall a b. (a -> b) -> a -> b
    $ \Ptr TreeView
    argPtr1 ->Ptr TreeView -> CInt -> IO ()
    gtk_tree_view_set_reorderable Ptr TreeView
    argPtr1 CInt
    arg2)
    {-# LINE 853 "./Graphics/UI/Gtk/ModelView/TreeView.chs" #-}
        (toTreeView self)
        (Bool -> CInt
    forall a. Num a => Bool -> a
    fromBool Bool
    reorderable)

    -- | Map a pixel to the specific cell.
    --
    -- * Finds the path at the 'Point' @(x, y)@. The
    -- coordinates @x@ and @y@ are relative to the top left
    -- corner of the 'TreeView' drawing window. As such, coordinates
    -- in a mouse click event can be used directly to determine the cell
    -- which the user clicked on. This function is useful to realize
    -- popup menus.
    --
    -- * The returned point is the input point relative to the cell's upper
    -- left corner. The whole 'TreeView' is divided between all cells.
    -- The returned point is relative to the rectangle this cell occupies
    -- within the 'TreeView'.
    --
    treeViewGetPathAtPos :: TreeViewClass self => self
     -> Point
     -> IO (Maybe (TreePath, TreeViewColumn, Point))
    treeViewGetPathAtPos :: forall self.
    TreeViewClass self =>
    self -> Point -> IO (Maybe (TreePath, TreeViewColumn, Point))
    treeViewGetPathAtPos self
    self (Int
    x,Int
    y) =
      (Ptr (Ptr NativeTreePath)
     -> IO (Maybe (TreePath, TreeViewColumn, Point)))
    -> IO (Maybe (TreePath, TreeViewColumn, Point))
    forall a b. Storable a => (Ptr a -> IO b) -> IO b
    alloca ((Ptr (Ptr NativeTreePath)
      -> IO (Maybe (TreePath, TreeViewColumn, Point)))
     -> IO (Maybe (TreePath, TreeViewColumn, Point)))
    -> (Ptr (Ptr NativeTreePath)
        -> IO (Maybe (TreePath, TreeViewColumn, Point)))
    -> IO (Maybe (TreePath, TreeViewColumn, Point))
    forall a b. (a -> b) -> a -> b
    $ \Ptr (Ptr NativeTreePath)
    tpPtrPtr ->
      (Ptr (Ptr TreeViewColumn)
     -> IO (Maybe (TreePath, TreeViewColumn, Point)))
    -> IO (Maybe (TreePath, TreeViewColumn, Point))
    forall a b. Storable a => (Ptr a -> IO b) -> IO b
    alloca ((Ptr (Ptr TreeViewColumn)
      -> IO (Maybe (TreePath, TreeViewColumn, Point)))
     -> IO (Maybe (TreePath, TreeViewColumn, Point)))
    -> (Ptr (Ptr TreeViewColumn)
        -> IO (Maybe (TreePath, TreeViewColumn, Point)))
    -> IO (Maybe (TreePath, TreeViewColumn, Point))
    forall a b. (a -> b) -> a -> b
    $ \Ptr (Ptr TreeViewColumn)
    tvcPtrPtr ->
      (Ptr CInt -> IO (Maybe (TreePath, TreeViewColumn, Point)))
    -> IO (Maybe (TreePath, TreeViewColumn, Point))
    forall a b. Storable a => (Ptr a -> IO b) -> IO b
    alloca ((Ptr CInt -> IO (Maybe (TreePath, TreeViewColumn, Point)))
     -> IO (Maybe (TreePath, TreeViewColumn, Point)))
    -> (Ptr CInt -> IO (Maybe (TreePath, TreeViewColumn, Point)))
    -> IO (Maybe (TreePath, TreeViewColumn, Point))
    forall a b. (a -> b) -> a -> b
    $ \Ptr CInt
    xPtr ->
      (Ptr CInt -> IO (Maybe (TreePath, TreeViewColumn, Point)))
    -> IO (Maybe (TreePath, TreeViewColumn, Point))
    forall a b. Storable a => (Ptr a -> IO b) -> IO b
    alloca ((Ptr CInt -> IO (Maybe (TreePath, TreeViewColumn, Point)))
     -> IO (Maybe (TreePath, TreeViewColumn, Point)))
    -> (Ptr CInt -> IO (Maybe (TreePath, TreeViewColumn, Point)))
    -> IO (Maybe (TreePath, TreeViewColumn, Point))
    forall a b. (a -> b) -> a -> b
    $ \Ptr CInt
    yPtr -> do
        res <- (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
    $
          (\(TreeView ForeignPtr TreeView
    arg1) CInt
    arg2 CInt
    arg3 Ptr NativeTreePath
    arg4 Ptr TreeViewColumn
    arg5 Ptr CInt
    arg6 Ptr CInt
    arg7 -> ForeignPtr TreeView -> (Ptr TreeView -> IO CInt) -> IO CInt
    forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
    withForeignPtr ForeignPtr TreeView
    arg1 ((Ptr TreeView -> IO CInt) -> IO CInt)
    -> (Ptr TreeView -> IO CInt) -> IO CInt
    forall a b. (a -> b) -> a -> b
    $ \Ptr TreeView
    argPtr1 ->Ptr TreeView
    -> CInt
    -> CInt
    -> Ptr NativeTreePath
    -> Ptr TreeViewColumn
    -> Ptr CInt
    -> Ptr CInt
    -> IO CInt
    gtk_tree_view_get_path_at_pos Ptr TreeView
    argPtr1 CInt
    arg2 CInt
    arg3 Ptr NativeTreePath
    arg4 Ptr TreeViewColumn
    arg5 Ptr CInt
    arg6 Ptr CInt
    arg7)
    {-# LINE 880 "./Graphics/UI/Gtk/ModelView/TreeView.chs" #-}
          (toTreeView self)
          (Int -> CInt
    forall a b. (Integral a, Num b) => a -> b
    fromIntegral Int
    x)
          (Int -> CInt
    forall a b. (Integral a, Num b) => a -> b
    fromIntegral Int
    y)
          (Ptr (Ptr NativeTreePath) -> Ptr NativeTreePath
    forall a b. Ptr a -> Ptr b
    castPtr Ptr (Ptr NativeTreePath)
    tpPtrPtr)
          (Ptr (Ptr TreeViewColumn) -> Ptr TreeViewColumn
    forall a b. Ptr a -> Ptr b
    castPtr Ptr (Ptr TreeViewColumn)
    tvcPtrPtr)
          Ptr CInt
    xPtr
          Ptr CInt
    yPtr
        tpPtr <- peek tpPtrPtr
        tvcPtr <- peek tvcPtrPtr
        xCell <- peek xPtr
        yCell <- peek yPtr
        if not res then return Nothing else do
          tp <- fromTreePath tpPtr
          tvc <- makeNewObject mkTreeViewColumn (return tvcPtr)
          return (Just (tp,tvc,(fromIntegral xCell, fromIntegral yCell)))

    -- | Retrieve the smallest bounding box of a cell.
    --
    -- * Fills the bounding rectangle in tree window coordinates for the
    -- cell at the row specified by @tp@ and the column specified by
    -- @tvc@.
    -- If @path@ is @Nothing@ or points to a path not
    -- currently displayed, the @y@ and @height@ fields of
    -- the 'Rectangle' will be filled with @0@. The sum of
    -- all cell rectangles does not cover the entire tree; there are extra
    -- pixels in between rows, for example.
    --
    treeViewGetCellArea :: TreeViewClass self => self
     -> Maybe TreePath
     -> TreeViewColumn
     -> IO Rectangle
    treeViewGetCellArea :: forall self.
    TreeViewClass self =>
    self -> Maybe TreePath -> TreeViewColumn -> IO Rectangle
    treeViewGetCellArea self
    self Maybe TreePath
    Nothing TreeViewColumn
    tvc =
      (Ptr Rectangle -> IO Rectangle) -> IO Rectangle
    forall a b. Storable a => (Ptr a -> IO b) -> IO b
    alloca ((Ptr Rectangle -> IO Rectangle) -> IO Rectangle)
    -> (Ptr Rectangle -> IO Rectangle) -> IO Rectangle
    forall a b. (a -> b) -> a -> b
    $ \Ptr Rectangle
    rPtr ->
      (\(TreeView ForeignPtr TreeView
    arg1) (NativeTreePath Ptr NativeTreePath
    arg2) (TreeViewColumn ForeignPtr TreeViewColumn
    arg3) Ptr ()
    arg4 -> ForeignPtr TreeView -> (Ptr TreeView -> IO ()) -> IO ()
    forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
    withForeignPtr ForeignPtr TreeView
    arg1 ((Ptr TreeView -> IO ()) -> IO ())
    -> (Ptr TreeView -> IO ()) -> IO ()
    forall a b. (a -> b) -> a -> b
    $ \Ptr TreeView
    argPtr1 ->ForeignPtr TreeViewColumn -> (Ptr TreeViewColumn -> IO ()) -> IO ()
    forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
    withForeignPtr ForeignPtr TreeViewColumn
    arg3 ((Ptr TreeViewColumn -> IO ()) -> IO ())
    -> (Ptr TreeViewColumn -> IO ()) -> IO ()
    forall a b. (a -> b) -> a -> b
    $ \Ptr TreeViewColumn
    argPtr3 ->Ptr TreeView
    -> Ptr NativeTreePath -> Ptr TreeViewColumn -> Ptr () -> IO ()
    gtk_tree_view_get_cell_area Ptr TreeView
    argPtr1 Ptr NativeTreePath
    arg2 Ptr TreeViewColumn
    argPtr3 Ptr ()
    arg4)
    {-# LINE 914 "./Graphics/UI/Gtk/ModelView/TreeView.chs" #-}
        (toTreeView self)
        (Ptr NativeTreePath -> NativeTreePath
    NativeTreePath Ptr NativeTreePath
    forall a. Ptr a
    nullPtr)
        TreeViewColumn
    tvc
        (Ptr Rectangle -> Ptr ()
    forall a b. Ptr a -> Ptr b
    castPtr (Ptr Rectangle
    rPtr :: Ptr Rectangle))
        IO () -> IO Rectangle -> IO Rectangle
    forall a b. IO a -> IO b -> IO b
    forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
    >> Ptr Rectangle -> IO Rectangle
    forall a. Storable a => Ptr a -> IO a
    peek Ptr Rectangle
    rPtr
    treeViewGetCellArea self
    self (Just TreePath
    tp) TreeViewColumn
    tvc =
      TreePath -> (NativeTreePath -> IO Rectangle) -> IO Rectangle
    forall a. TreePath -> (NativeTreePath -> IO a) -> IO a
    withTreePath TreePath
    tp ((NativeTreePath -> IO Rectangle) -> IO Rectangle)
    -> (NativeTreePath -> IO Rectangle) -> IO Rectangle
    forall a b. (a -> b) -> a -> b
    $ \NativeTreePath
    tp ->
      (Ptr Rectangle -> IO Rectangle) -> IO Rectangle
    forall a b. Storable a => (Ptr a -> IO b) -> IO b
    alloca ((Ptr Rectangle -> IO Rectangle) -> IO Rectangle)
    -> (Ptr Rectangle -> IO Rectangle) -> IO Rectangle
    forall a b. (a -> b) -> a -> b
    $ \Ptr Rectangle
    rPtr -> do
      (\(TreeView ForeignPtr TreeView
    arg1) (NativeTreePath Ptr NativeTreePath
    arg2) (TreeViewColumn ForeignPtr TreeViewColumn
    arg3) Ptr ()
    arg4 -> ForeignPtr TreeView -> (Ptr TreeView -> IO ()) -> IO ()
    forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
    withForeignPtr ForeignPtr TreeView
    arg1 ((Ptr TreeView -> IO ()) -> IO ())
    -> (Ptr TreeView -> IO ()) -> IO ()
    forall a b. (a -> b) -> a -> b
    $ \Ptr TreeView
    argPtr1 ->ForeignPtr TreeViewColumn -> (Ptr TreeViewColumn -> IO ()) -> IO ()
    forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
    withForeignPtr ForeignPtr TreeViewColumn
    arg3 ((Ptr TreeViewColumn -> IO ()) -> IO ())
    -> (Ptr TreeViewColumn -> IO ()) -> IO ()
    forall a b. (a -> b) -> a -> b
    $ \Ptr TreeViewColumn
    argPtr3 ->Ptr TreeView
    -> Ptr NativeTreePath -> Ptr TreeViewColumn -> Ptr () -> IO ()
    gtk_tree_view_get_cell_area Ptr TreeView
    argPtr1 Ptr NativeTreePath
    arg2 Ptr TreeViewColumn
    argPtr3 Ptr ()
    arg4)
    {-# LINE 923 "./Graphics/UI/Gtk/ModelView/TreeView.chs" #-}
        (toTreeView self)
        NativeTreePath
    tp
        TreeViewColumn
    tvc
        (Ptr Rectangle -> Ptr ()
    forall a b. Ptr a -> Ptr b
    castPtr (Ptr Rectangle
    rPtr :: Ptr Rectangle))
        IO () -> IO Rectangle -> IO Rectangle
    forall a b. IO a -> IO b -> IO b
    forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
    >> Ptr Rectangle -> IO Rectangle
    forall a. Storable a => Ptr a -> IO a
    peek Ptr Rectangle
    rPtr

    -- | Retrieve the largest bounding box of a cell.
    --
    -- * Fills the bounding rectangle in tree window coordinates for the
    -- cell at the row specified by @tp@ and the column specified by
    -- @tvc@.
    -- If @path@ is @Nothing@ or points to a path not
    -- currently displayed, the @y@ and @height@ fields of
    -- the 'Rectangle' will be filled with @0@. The background
    -- areas tile the widget's area to cover the entire tree window
    -- (except for the area used for header buttons). Contrast this with
    -- 'treeViewGetCellArea'.
    --
    treeViewGetBackgroundArea :: TreeViewClass self => self
     -> Maybe TreePath
     -> TreeViewColumn
     -> IO Rectangle
    treeViewGetBackgroundArea :: forall self.
    TreeViewClass self =>
    self -> Maybe TreePath -> TreeViewColumn -> IO Rectangle
    treeViewGetBackgroundArea self
    self Maybe TreePath
    Nothing TreeViewColumn
    tvc =
      (Ptr Rectangle -> IO Rectangle) -> IO Rectangle
    forall a b. Storable a => (Ptr a -> IO b) -> IO b
    alloca ((Ptr Rectangle -> IO Rectangle) -> IO Rectangle)
    -> (Ptr Rectangle -> IO Rectangle) -> IO Rectangle
    forall a b. (a -> b) -> a -> b
    $ \Ptr Rectangle
    rPtr ->
      (\(TreeView ForeignPtr TreeView
    arg1) (NativeTreePath Ptr NativeTreePath
    arg2) (TreeViewColumn ForeignPtr TreeViewColumn
    arg3) Ptr ()
    arg4 -> ForeignPtr TreeView -> (Ptr TreeView -> IO ()) -> IO ()
    forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
    withForeignPtr ForeignPtr TreeView
    arg1 ((Ptr TreeView -> IO ()) -> IO ())
    -> (Ptr TreeView -> IO ()) -> IO ()
    forall a b. (a -> b) -> a -> b
    $ \Ptr TreeView
    argPtr1 ->ForeignPtr TreeViewColumn -> (Ptr TreeViewColumn -> IO ()) -> IO ()
    forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
    withForeignPtr ForeignPtr TreeViewColumn
    arg3 ((Ptr TreeViewColumn -> IO ()) -> IO ())
    -> (Ptr TreeViewColumn -> IO ()) -> IO ()
    forall a b. (a -> b) -> a -> b
    $ \Ptr TreeViewColumn
    argPtr3 ->Ptr TreeView
    -> Ptr NativeTreePath -> Ptr TreeViewColumn -> Ptr () -> IO ()
    gtk_tree_view_get_background_area Ptr TreeView
    argPtr1 Ptr NativeTreePath
    arg2 Ptr TreeViewColumn
    argPtr3 Ptr ()
    arg4)
    {-# LINE 948 "./Graphics/UI/Gtk/ModelView/TreeView.chs" #-}
        (toTreeView self)
        (Ptr NativeTreePath -> NativeTreePath
    NativeTreePath Ptr NativeTreePath
    forall a. Ptr a
    nullPtr)
        TreeViewColumn
    tvc
        (Ptr Rectangle -> Ptr ()
    forall a b. Ptr a -> Ptr b
    castPtr (Ptr Rectangle
    rPtr :: Ptr Rectangle))
      IO () -> IO Rectangle -> IO Rectangle
    forall a b. IO a -> IO b -> IO b
    forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
    >> Ptr Rectangle -> IO Rectangle
    forall a. Storable a => Ptr a -> IO a
    peek Ptr Rectangle
    rPtr
    treeViewGetBackgroundArea self
    self (Just TreePath
    tp) TreeViewColumn
    tvc =
      TreePath -> (NativeTreePath -> IO Rectangle) -> IO Rectangle
    forall a. TreePath -> (NativeTreePath -> IO a) -> IO a
    withTreePath TreePath
    tp ((NativeTreePath -> IO Rectangle) -> IO Rectangle)
    -> (NativeTreePath -> IO Rectangle) -> IO Rectangle
    forall a b. (a -> b) -> a -> b
    $ \NativeTreePath
    tp -> (Ptr Rectangle -> IO Rectangle) -> IO Rectangle
    forall a b. Storable a => (Ptr a -> IO b) -> IO b
    alloca ((Ptr Rectangle -> IO Rectangle) -> IO Rectangle)
    -> (Ptr Rectangle -> IO Rectangle) -> IO Rectangle
    forall a b. (a -> b) -> a -> b
    $ \Ptr Rectangle
    rPtr ->
      (\(TreeView ForeignPtr TreeView
    arg1) (NativeTreePath Ptr NativeTreePath
    arg2) (TreeViewColumn ForeignPtr TreeViewColumn
    arg3) Ptr ()
    arg4 -> ForeignPtr TreeView -> (Ptr TreeView -> IO ()) -> IO ()
    forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
    withForeignPtr ForeignPtr TreeView
    arg1 ((Ptr TreeView -> IO ()) -> IO ())
    -> (Ptr TreeView -> IO ()) -> IO ()
    forall a b. (a -> b) -> a -> b
    $ \Ptr TreeView
    argPtr1 ->ForeignPtr TreeViewColumn -> (Ptr TreeViewColumn -> IO ()) -> IO ()
    forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
    withForeignPtr ForeignPtr TreeViewColumn
    arg3 ((Ptr TreeViewColumn -> IO ()) -> IO ())
    -> (Ptr TreeViewColumn -> IO ()) -> IO ()
    forall a b. (a -> b) -> a -> b
    $ \Ptr TreeViewColumn
    argPtr3 ->Ptr TreeView
    -> Ptr NativeTreePath -> Ptr TreeViewColumn -> Ptr () -> IO ()
    gtk_tree_view_get_background_area Ptr TreeView
    argPtr1 Ptr NativeTreePath
    arg2 Ptr TreeViewColumn
    argPtr3 Ptr ()
    arg4)
    {-# LINE 956 "./Graphics/UI/Gtk/ModelView/TreeView.chs" #-}
        (toTreeView self)
        NativeTreePath
    tp
        TreeViewColumn
    tvc
        (Ptr Rectangle -> Ptr ()
    forall a b. Ptr a -> Ptr b
    castPtr (Ptr Rectangle
    rPtr :: Ptr Rectangle))
      IO () -> IO Rectangle -> IO Rectangle
    forall a b. IO a -> IO b -> IO b
    forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
    >> Ptr Rectangle -> IO Rectangle
    forall a. Storable a => Ptr a -> IO a
    peek Ptr Rectangle
    rPtr

    -- | Retrieve the currently visible area.
    --
    -- * The returned rectangle gives the visible part of the tree in tree
    -- coordinates.
    --
    treeViewGetVisibleRect :: TreeViewClass self => self -> IO Rectangle
    treeViewGetVisibleRect :: forall self. TreeViewClass self => self -> IO Rectangle
    treeViewGetVisibleRect self
    self =
      (Ptr Rectangle -> IO Rectangle) -> IO Rectangle
    forall a b. Storable a => (Ptr a -> IO b) -> IO b
    alloca ((Ptr Rectangle -> IO Rectangle) -> IO Rectangle)
    -> (Ptr Rectangle -> IO Rectangle) -> IO Rectangle
    forall a b. (a -> b) -> a -> b
    $ \Ptr Rectangle
    rPtr -> do
      (\(TreeView ForeignPtr TreeView
    arg1) Ptr ()
    arg2 -> ForeignPtr TreeView -> (Ptr TreeView -> IO ()) -> IO ()
    forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
    withForeignPtr ForeignPtr TreeView
    arg1 ((Ptr TreeView -> IO ()) -> IO ())
    -> (Ptr TreeView -> IO ()) -> IO ()
    forall a b. (a -> b) -> a -> b
    $ \Ptr TreeView
    argPtr1 ->Ptr TreeView -> Ptr () -> IO ()
    gtk_tree_view_get_visible_rect Ptr TreeView
    argPtr1 Ptr ()
    arg2)
    {-# LINE 971 "./Graphics/UI/Gtk/ModelView/TreeView.chs" #-}
        (toTreeView self)
        (Ptr Rectangle -> Ptr ()
    forall a b. Ptr a -> Ptr b
    castPtr (Ptr Rectangle
    rPtr :: Ptr Rectangle))
      Ptr Rectangle -> IO Rectangle
    forall a. Storable a => Ptr a -> IO a
    peek Ptr Rectangle
    rPtr
    {-# LINE 1029 "./Graphics/UI/Gtk/ModelView/TreeView.chs" #-}
    -- | Converts bin window coordinates to coordinates for the tree (the full scrollable area of the tree).
    treeViewConvertBinWindowToTreeCoords :: TreeViewClass self => self
     -> Point -- ^ @(bx, by)@ - bin window X and Y coordinates
     -> IO Point -- ^ @(tx, ty)@ returns tree X and Y coordinates
    treeViewConvertBinWindowToTreeCoords :: forall self. TreeViewClass self => self -> Point -> IO Point
    treeViewConvertBinWindowToTreeCoords self
    self (Int
    bx, Int
    by) =
      (Ptr CInt -> IO Point) -> IO Point
    forall a b. Storable a => (Ptr a -> IO b) -> IO b
    alloca ((Ptr CInt -> IO Point) -> IO Point)
    -> (Ptr CInt -> IO Point) -> IO Point
    forall a b. (a -> b) -> a -> b
    $ \Ptr CInt
    txPtr ->
      (Ptr CInt -> IO Point) -> IO Point
    forall a b. Storable a => (Ptr a -> IO b) -> IO b
    alloca ((Ptr CInt -> IO Point) -> IO Point)
    -> (Ptr CInt -> IO Point) -> IO Point
    forall a b. (a -> b) -> a -> b
    $ \Ptr CInt
    tyPtr -> do
      (\(TreeView ForeignPtr TreeView
    arg1) CInt
    arg2 CInt
    arg3 Ptr CInt
    arg4 Ptr CInt
    arg5 -> ForeignPtr TreeView -> (Ptr TreeView -> IO ()) -> IO ()
    forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
    withForeignPtr ForeignPtr TreeView
    arg1 ((Ptr TreeView -> IO ()) -> IO ())
    -> (Ptr TreeView -> IO ()) -> IO ()
    forall a b. (a -> b) -> a -> b
    $ \Ptr TreeView
    argPtr1 ->Ptr TreeView -> CInt -> CInt -> Ptr CInt -> Ptr CInt -> IO ()
    gtk_tree_view_convert_bin_window_to_tree_coords Ptr TreeView
    argPtr1 CInt
    arg2 CInt
    arg3 Ptr CInt
    arg4 Ptr CInt
    arg5)
    {-# LINE 1037 "./Graphics/UI/Gtk/ModelView/TreeView.chs" #-}
        (toTreeView self)
        (Int -> CInt
    forall a b. (Integral a, Num b) => a -> b
    fromIntegral Int
    bx)
        (Int -> CInt
    forall a b. (Integral a, Num b) => a -> b
    fromIntegral Int
    by)
        Ptr CInt
    txPtr
        Ptr CInt
    tyPtr
      tx <- Ptr CInt -> IO CInt
    forall a. Storable a => Ptr a -> IO a
    peek Ptr CInt
    txPtr
      ty <- peek tyPtr
      return (fromIntegral tx, fromIntegral ty)

    -- | Converts bin window coordinates (see 'treeViewGetBinWindow' to widget relative coordinates.
    treeViewConvertBinWindowToWidgetCoords :: TreeViewClass self => self
     -> Point -- ^ @(bx, by)@ - bin window X and Y coordinates
     -> IO Point -- ^ @(wx, wy)@ returns widget X and Y coordinates
    treeViewConvertBinWindowToWidgetCoords :: forall self. TreeViewClass self => self -> Point -> IO Point
    treeViewConvertBinWindowToWidgetCoords self
    self (Int
    bx, Int
    by) =
      (Ptr CInt -> IO Point) -> IO Point
    forall a b. Storable a => (Ptr a -> IO b) -> IO b
    alloca ((Ptr CInt -> IO Point) -> IO Point)
    -> (Ptr CInt -> IO Point) -> IO Point
    forall a b. (a -> b) -> a -> b
    $ \Ptr CInt
    wxPtr ->
      (Ptr CInt -> IO Point) -> IO Point
    forall a b. Storable a => (Ptr a -> IO b) -> IO b
    alloca ((Ptr CInt -> IO Point) -> IO Point)
    -> (Ptr CInt -> IO Point) -> IO Point
    forall a b. (a -> b) -> a -> b
    $ \Ptr CInt
    wyPtr -> do
      (\(TreeView ForeignPtr TreeView
    arg1) CInt
    arg2 CInt
    arg3 Ptr CInt
    arg4 Ptr CInt
    arg5 -> ForeignPtr TreeView -> (Ptr TreeView -> IO ()) -> IO ()
    forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
    withForeignPtr ForeignPtr TreeView
    arg1 ((Ptr TreeView -> IO ()) -> IO ())
    -> (Ptr TreeView -> IO ()) -> IO ()
    forall a b. (a -> b) -> a -> b
    $ \Ptr TreeView
    argPtr1 ->Ptr TreeView -> CInt -> CInt -> Ptr CInt -> Ptr CInt -> IO ()
    gtk_tree_view_convert_bin_window_to_widget_coords Ptr TreeView
    argPtr1 CInt
    arg2 CInt
    arg3 Ptr CInt
    arg4 Ptr CInt
    arg5)
    {-# LINE 1054 "./Graphics/UI/Gtk/ModelView/TreeView.chs" #-}
        (toTreeView self)
        (Int -> CInt
    forall a b. (Integral a, Num b) => a -> b
    fromIntegral Int
    bx)
        (Int -> CInt
    forall a b. (Integral a, Num b) => a -> b
    fromIntegral Int
    by)
        Ptr CInt
    wxPtr
        Ptr CInt
    wyPtr
      wx <- Ptr CInt -> IO CInt
    forall a. Storable a => Ptr a -> IO a
    peek Ptr CInt
    wxPtr
      wy <- peek wyPtr
      return (fromIntegral wx, fromIntegral wy)

    -- | Converts tree coordinates (coordinates in full scrollable area of the tree) to bin window
    -- coordinates.
    treeViewConvertTreeToBinWindowCoords :: TreeViewClass self => self
     -> Point -- ^ @(tx, ty)@ - tree X and Y coordinates
     -> IO Point -- ^ @(bx, by)@ returns bin window X and Y coordinates
    treeViewConvertTreeToBinWindowCoords :: forall self. TreeViewClass self => self -> Point -> IO Point
    treeViewConvertTreeToBinWindowCoords self
    self (Int
    tx, Int
    ty) =
      (Ptr CInt -> IO Point) -> IO Point
    forall a b. Storable a => (Ptr a -> IO b) -> IO b
    alloca ((Ptr CInt -> IO Point) -> IO Point)
    -> (Ptr CInt -> IO Point) -> IO Point
    forall a b. (a -> b) -> a -> b
    $ \Ptr CInt
    bxPtr ->
      (Ptr CInt -> IO Point) -> IO Point
    forall a b. Storable a => (Ptr a -> IO b) -> IO b
    alloca ((Ptr CInt -> IO Point) -> IO Point)
    -> (Ptr CInt -> IO Point) -> IO Point
    forall a b. (a -> b) -> a -> b
    $ \Ptr CInt
    byPtr -> do
      (\(TreeView ForeignPtr TreeView
    arg1) CInt
    arg2 CInt
    arg3 Ptr CInt
    arg4 Ptr CInt
    arg5 -> ForeignPtr TreeView -> (Ptr TreeView -> IO ()) -> IO ()
    forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
    withForeignPtr ForeignPtr TreeView
    arg1 ((Ptr TreeView -> IO ()) -> IO ())
    -> (Ptr TreeView -> IO ()) -> IO ()
    forall a b. (a -> b) -> a -> b
    $ \Ptr TreeView
    argPtr1 ->Ptr TreeView -> CInt -> CInt -> Ptr CInt -> Ptr CInt -> IO ()
    gtk_tree_view_convert_tree_to_bin_window_coords Ptr TreeView
    argPtr1 CInt
    arg2 CInt
    arg3 Ptr CInt
    arg4 Ptr CInt
    arg5)
    {-# LINE 1072 "./Graphics/UI/Gtk/ModelView/TreeView.chs" #-}
        (toTreeView self)
        (Int -> CInt
    forall a b. (Integral a, Num b) => a -> b
    fromIntegral Int
    tx)
        (Int -> CInt
    forall a b. (Integral a, Num b) => a -> b
    fromIntegral Int
    ty)
        Ptr CInt
    bxPtr
        Ptr CInt
    byPtr
      bx <- Ptr CInt -> IO CInt
    forall a. Storable a => Ptr a -> IO a
    peek Ptr CInt
    bxPtr
      by <- peek byPtr
      return (fromIntegral bx, fromIntegral by)

    -- | Converts tree coordinates (coordinates in full scrollable area of the tree) to widget coordinates.
    treeViewConvertTreeToWidgetCoords :: TreeViewClass self => self
     -> Point -- ^ @(tx, ty)@ - tree X and Y coordinates
     -> IO Point -- ^ @(wx, wy)@ returns widget X and Y coordinates
    treeViewConvertTreeToWidgetCoords :: forall self. TreeViewClass self => self -> Point -> IO Point
    treeViewConvertTreeToWidgetCoords self
    self (Int
    wx, Int
    wy) =
      (Ptr CInt -> IO Point) -> IO Point
    forall a b. Storable a => (Ptr a -> IO b) -> IO b
    alloca ((Ptr CInt -> IO Point) -> IO Point)
    -> (Ptr CInt -> IO Point) -> IO Point
    forall a b. (a -> b) -> a -> b
    $ \Ptr CInt
    bxPtr ->
      (Ptr CInt -> IO Point) -> IO Point
    forall a b. Storable a => (Ptr a -> IO b) -> IO b
    alloca ((Ptr CInt -> IO Point) -> IO Point)
    -> (Ptr CInt -> IO Point) -> IO Point
    forall a b. (a -> b) -> a -> b
    $ \Ptr CInt
    byPtr -> do
      (\(TreeView ForeignPtr TreeView
    arg1) CInt
    arg2 CInt
    arg3 Ptr CInt
    arg4 Ptr CInt
    arg5 -> ForeignPtr TreeView -> (Ptr TreeView -> IO ()) -> IO ()
    forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
    withForeignPtr ForeignPtr TreeView
    arg1 ((Ptr TreeView -> IO ()) -> IO ())
    -> (Ptr TreeView -> IO ()) -> IO ()
    forall a b. (a -> b) -> a -> b
    $ \Ptr TreeView
    argPtr1 ->Ptr TreeView -> CInt -> CInt -> Ptr CInt -> Ptr CInt -> IO ()
    gtk_tree_view_convert_tree_to_widget_coords Ptr TreeView
    argPtr1 CInt
    arg2 CInt
    arg3 Ptr CInt
    arg4 Ptr CInt
    arg5)
    {-# LINE 1089 "./Graphics/UI/Gtk/ModelView/TreeView.chs" #-}
        (toTreeView self)
        (Int -> CInt
    forall a b. (Integral a, Num b) => a -> b
    fromIntegral Int
    wx)
        (Int -> CInt
    forall a b. (Integral a, Num b) => a -> b
    fromIntegral Int
    wy)
        Ptr CInt
    bxPtr
        Ptr CInt
    byPtr
      bx <- Ptr CInt -> IO CInt
    forall a. Storable a => Ptr a -> IO a
    peek Ptr CInt
    bxPtr
      by <- peek byPtr
      return (fromIntegral bx, fromIntegral by)

    -- | Converts widget coordinates to coordinates for the window (see 'treeViewGetBinWindow' ).
    treeViewConvertWidgetToBinWindowCoords :: TreeViewClass self => self
     -> Point -- ^ @(wx, wy)@ - widget X and Y coordinates
     -> IO Point -- ^ @(bx, by)@ returns bin window X and Y coordinates
    treeViewConvertWidgetToBinWindowCoords :: forall self. TreeViewClass self => self -> Point -> IO Point
    treeViewConvertWidgetToBinWindowCoords self
    self (Int
    wx, Int
    wy) =
      (Ptr CInt -> IO Point) -> IO Point
    forall a b. Storable a => (Ptr a -> IO b) -> IO b
    alloca ((Ptr CInt -> IO Point) -> IO Point)
    -> (Ptr CInt -> IO Point) -> IO Point
    forall a b. (a -> b) -> a -> b
    $ \Ptr CInt
    bxPtr ->
      (Ptr CInt -> IO Point) -> IO Point
    forall a b. Storable a => (Ptr a -> IO b) -> IO b
    alloca ((Ptr CInt -> IO Point) -> IO Point)
    -> (Ptr CInt -> IO Point) -> IO Point
    forall a b. (a -> b) -> a -> b
    $ \Ptr CInt
    byPtr -> do
      (\(TreeView ForeignPtr TreeView
    arg1) CInt
    arg2 CInt
    arg3 Ptr CInt
    arg4 Ptr CInt
    arg5 -> ForeignPtr TreeView -> (Ptr TreeView -> IO ()) -> IO ()
    forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
    withForeignPtr ForeignPtr TreeView
    arg1 ((Ptr TreeView -> IO ()) -> IO ())
    -> (Ptr TreeView -> IO ()) -> IO ()
    forall a b. (a -> b) -> a -> b
    $ \Ptr TreeView
    argPtr1 ->Ptr TreeView -> CInt -> CInt -> Ptr CInt -> Ptr CInt -> IO ()
    gtk_tree_view_convert_widget_to_bin_window_coords Ptr TreeView
    argPtr1 CInt
    arg2 CInt
    arg3 Ptr CInt
    arg4 Ptr CInt
    arg5)
    {-# LINE 1106 "./Graphics/UI/Gtk/ModelView/TreeView.chs" #-}
        (toTreeView self)
        (Int -> CInt
    forall a b. (Integral a, Num b) => a -> b
    fromIntegral Int
    wx)
        (Int -> CInt
    forall a b. (Integral a, Num b) => a -> b
    fromIntegral Int
    wy)
        Ptr CInt
    bxPtr
        Ptr CInt
    byPtr
      bx <- Ptr CInt -> IO CInt
    forall a. Storable a => Ptr a -> IO a
    peek Ptr CInt
    bxPtr
      by <- peek byPtr
      return (fromIntegral bx, fromIntegral by)

    -- | Converts widget coordinates to coordinates for the tree (the full scrollable area of the tree).
    treeViewConvertWidgetToTreeCoords :: TreeViewClass self => self
     -> Point -- ^ @(wx, wy)@ - bin window X and Y coordinates
     -> IO Point -- ^ @(tx, ty)@ returns tree X and Y coordinates
    treeViewConvertWidgetToTreeCoords :: forall self. TreeViewClass self => self -> Point -> IO Point
    treeViewConvertWidgetToTreeCoords self
    self (Int
    wx, Int
    wy) =
      (Ptr CInt -> IO Point) -> IO Point
    forall a b. Storable a => (Ptr a -> IO b) -> IO b
    alloca ((Ptr CInt -> IO Point) -> IO Point)
    -> (Ptr CInt -> IO Point) -> IO Point
    forall a b. (a -> b) -> a -> b
    $ \Ptr CInt
    txPtr ->
      (Ptr CInt -> IO Point) -> IO Point
    forall a b. Storable a => (Ptr a -> IO b) -> IO b
    alloca ((Ptr CInt -> IO Point) -> IO Point)
    -> (Ptr CInt -> IO Point) -> IO Point
    forall a b. (a -> b) -> a -> b
    $ \Ptr CInt
    tyPtr -> do
      (\(TreeView ForeignPtr TreeView
    arg1) CInt
    arg2 CInt
    arg3 Ptr CInt
    arg4 Ptr CInt
    arg5 -> ForeignPtr TreeView -> (Ptr TreeView -> IO ()) -> IO ()
    forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
    withForeignPtr ForeignPtr TreeView
    arg1 ((Ptr TreeView -> IO ()) -> IO ())
    -> (Ptr TreeView -> IO ()) -> IO ()
    forall a b. (a -> b) -> a -> b
    $ \Ptr TreeView
    argPtr1 ->Ptr TreeView -> CInt -> CInt -> Ptr CInt -> Ptr CInt -> IO ()
    gtk_tree_view_convert_widget_to_tree_coords Ptr TreeView
    argPtr1 CInt
    arg2 CInt
    arg3 Ptr CInt
    arg4 Ptr CInt
    arg5)
    {-# LINE 1123 "./Graphics/UI/Gtk/ModelView/TreeView.chs" #-}
        (toTreeView self)
        (Int -> CInt
    forall a b. (Integral a, Num b) => a -> b
    fromIntegral Int
    wx)
        (Int -> CInt
    forall a b. (Integral a, Num b) => a -> b
    fromIntegral Int
    wy)
        Ptr CInt
    txPtr
        Ptr CInt
    tyPtr
      tx <- Ptr CInt -> IO CInt
    forall a. Storable a => Ptr a -> IO a
    peek Ptr CInt
    txPtr
      ty <- peek tyPtr
      return (fromIntegral tx, fromIntegral ty)
    {-# LINE 1149 "./Graphics/UI/Gtk/ModelView/TreeView.chs" #-}
    -- | Returns whether or not the tree allows to start interactive searching by
    -- typing in text.
    --
    -- * If enabled, the user can type in text which will set the cursor to
    -- the first matching entry.
    --
    treeViewGetEnableSearch :: TreeViewClass self => self -> IO Bool
    treeViewGetEnableSearch :: forall self. TreeViewClass self => self -> IO Bool
    treeViewGetEnableSearch 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
    $
      (\(TreeView ForeignPtr TreeView
    arg1) -> ForeignPtr TreeView -> (Ptr TreeView -> IO CInt) -> IO CInt
    forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
    withForeignPtr ForeignPtr TreeView
    arg1 ((Ptr TreeView -> IO CInt) -> IO CInt)
    -> (Ptr TreeView -> IO CInt) -> IO CInt
    forall a b. (a -> b) -> a -> b
    $ \Ptr TreeView
    argPtr1 ->Ptr TreeView -> IO CInt
    gtk_tree_view_get_enable_search Ptr TreeView
    argPtr1)
    {-# LINE 1159 "./Graphics/UI/Gtk/ModelView/TreeView.chs" #-}
        (toTreeView self)

    -- | If this is set, then the user can type in text to search
    -- through the tree interactively (this is sometimes called \"typeahead
    -- find\").
    --
    -- Note that even if this is @False@, the user can still initiate a search
    -- using the \"start-interactive-search\" key binding. In any case,
    -- a predicate that compares a row of the model with the text the user
    -- has typed must be set using 'treeViewSetSearchEqualFunc'.
    --
    treeViewSetEnableSearch :: TreeViewClass self => self -> Bool -> IO ()
    treeViewSetEnableSearch :: forall self. TreeViewClass self => self -> Bool -> IO ()
    treeViewSetEnableSearch self
    self Bool
    enableSearch =
      (\(TreeView ForeignPtr TreeView
    arg1) CInt
    arg2 -> ForeignPtr TreeView -> (Ptr TreeView -> IO ()) -> IO ()
    forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
    withForeignPtr ForeignPtr TreeView
    arg1 ((Ptr TreeView -> IO ()) -> IO ())
    -> (Ptr TreeView -> IO ()) -> IO ()
    forall a b. (a -> b) -> a -> b
    $ \Ptr TreeView
    argPtr1 ->Ptr TreeView -> CInt -> IO ()
    gtk_tree_view_set_enable_search Ptr TreeView
    argPtr1 CInt
    arg2)
    {-# LINE 1173 "./Graphics/UI/Gtk/ModelView/TreeView.chs" #-}
        (toTreeView self)
        (Bool -> CInt
    forall a. Num a => Bool -> a
    fromBool Bool
    enableSearch)

    -- %hash c:ecc5 d:bed6
    -- | Gets the column searched on by the interactive search code.
    --
    treeViewGetSearchColumn :: (TreeViewClass self, GlibString string) => self
     -> IO (ColumnId row string) -- ^ returns the column the interactive search code searches in.
    treeViewGetSearchColumn :: forall self string row.
    (TreeViewClass self, GlibString string) =>
    self -> IO (ColumnId row string)
    treeViewGetSearchColumn self
    self =
      (CInt -> ColumnId row string)
    -> IO CInt -> IO (ColumnId row string)
    forall (m :: * -> *) a1 r. Monad m => (a1 -> r) -> m a1 -> m r
    liftM (Int -> ColumnId row string
    forall string row. GlibString string => Int -> ColumnId row string
    makeColumnIdString (Int -> ColumnId row string)
    -> (CInt -> Int) -> CInt -> ColumnId row string
    forall b c a. (b -> c) -> (a -> b) -> a -> c
    . CInt -> Int
    forall a b. (Integral a, Num b) => a -> b
    fromIntegral) (IO CInt -> IO (ColumnId row string))
    -> IO CInt -> IO (ColumnId row string)
    forall a b. (a -> b) -> a -> b
    $
      (\(TreeView ForeignPtr TreeView
    arg1) -> ForeignPtr TreeView -> (Ptr TreeView -> IO CInt) -> IO CInt
    forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
    withForeignPtr ForeignPtr TreeView
    arg1 ((Ptr TreeView -> IO CInt) -> IO CInt)
    -> (Ptr TreeView -> IO CInt) -> IO CInt
    forall a b. (a -> b) -> a -> b
    $ \Ptr TreeView
    argPtr1 ->Ptr TreeView -> IO CInt
    gtk_tree_view_get_search_column Ptr TreeView
    argPtr1)
    {-# LINE 1184 "./Graphics/UI/Gtk/ModelView/TreeView.chs" #-}
        (toTreeView self)

    -- %hash c:d0d0
    -- | Sets @column@ as the column where the interactive search code should
    -- search in.
    --
    -- If the sort column is set, users can use the \"start-interactive-search\"
    -- key binding to bring up search popup. The enable-search property controls
    -- whether simply typing text will also start an interactive search.
    --
    -- Note that @column@ refers to a column of the model. Furthermore, the
    -- search column is not used if a comparison function is set, see
    -- 'treeViewSetSearchEqualFunc'.
    --
    treeViewSetSearchColumn :: (TreeViewClass self, GlibString string) => self
     -> (ColumnId row string) -- ^ @column@ - the column of the model to search in, or -1 to disable
            -- searching
     -> IO ()
    treeViewSetSearchColumn :: forall self string row.
    (TreeViewClass self, GlibString string) =>
    self -> ColumnId row string -> IO ()
    treeViewSetSearchColumn self
    self ColumnId row string
    column =
      (\(TreeView ForeignPtr TreeView
    arg1) CInt
    arg2 -> ForeignPtr TreeView -> (Ptr TreeView -> IO ()) -> IO ()
    forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
    withForeignPtr ForeignPtr TreeView
    arg1 ((Ptr TreeView -> IO ()) -> IO ())
    -> (Ptr TreeView -> IO ()) -> IO ()
    forall a b. (a -> b) -> a -> b
    $ \Ptr TreeView
    argPtr1 ->Ptr TreeView -> CInt -> IO ()
    gtk_tree_view_set_search_column Ptr TreeView
    argPtr1 CInt
    arg2)
    {-# LINE 1204 "./Graphics/UI/Gtk/ModelView/TreeView.chs" #-}
        (toTreeView self)
        (Int -> CInt
    forall a b. (Integral a, Num b) => a -> b
    fromIntegral (ColumnId row string -> Int
    forall row ty. ColumnId row ty -> Int
    columnIdToNumber ColumnId row string
    column))

    -- | Set the predicate to test for equality.
    --
    -- * The predicate must returns @True@ if the text entered by the user
    -- and the row of the model match. Calling this function will overwrite
    -- the 'treeViewSearchColumn' (which isn't used anyway when a comparison
    -- function is installed).
    --
    treeViewSetSearchEqualFunc :: (TreeViewClass self, GlibString string) => self
     -> Maybe (string -> TreeIter -> IO Bool)
     -> IO ()
    treeViewSetSearchEqualFunc :: forall self string.
    (TreeViewClass self, GlibString string) =>
    self -> Maybe (string -> TreeIter -> IO Bool) -> IO ()
    treeViewSetSearchEqualFunc self
    self (Just string -> TreeIter -> IO Bool
    pred) = do
      fPtr <- (Ptr TreeModel
     -> CInt -> CString -> Ptr TreeIter -> Ptr () -> IO CInt)
    -> IO TreeViewSearchEqualFunc
    mkTreeViewSearchEqualFunc (\Ptr TreeModel
    _ CInt
    _ CString
    keyPtr Ptr TreeIter
    iterPtr Ptr ()
    _ -> do
        key <- CString -> IO string
    forall s. GlibString s => CString -> IO s
    peekUTFString CString
    keyPtr
        iter <- peek iterPtr
        liftM (fromBool . not) $ pred key iter)
      (\(TreeView ForeignPtr TreeView
    arg1) TreeViewSearchEqualFunc
    arg2 Ptr ()
    arg3 FunPtr (Ptr () -> IO ())
    arg4 -> ForeignPtr TreeView -> (Ptr TreeView -> IO ()) -> IO ()
    forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
    withForeignPtr ForeignPtr TreeView
    arg1 ((Ptr TreeView -> IO ()) -> IO ())
    -> (Ptr TreeView -> IO ()) -> IO ()
    forall a b. (a -> b) -> a -> b
    $ \Ptr TreeView
    argPtr1 ->Ptr TreeView
    -> TreeViewSearchEqualFunc
    -> Ptr ()
    -> FunPtr (Ptr () -> IO ())
    -> IO ()
    gtk_tree_view_set_search_equal_func Ptr TreeView
    argPtr1 TreeViewSearchEqualFunc
    arg2 Ptr ()
    arg3 FunPtr (Ptr () -> IO ())
    arg4) (toTreeView self) fPtr
        (castFunPtrToPtr fPtr) destroyFunPtr
      (\(TreeView ForeignPtr TreeView
    arg1) CInt
    arg2 -> ForeignPtr TreeView -> (Ptr TreeView -> IO ()) -> IO ()
    forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
    withForeignPtr ForeignPtr TreeView
    arg1 ((Ptr TreeView -> IO ()) -> IO ())
    -> (Ptr TreeView -> IO ()) -> IO ()
    forall a b. (a -> b) -> a -> b
    $ \Ptr TreeView
    argPtr1 ->Ptr TreeView -> CInt -> IO ()
    gtk_tree_view_set_search_column Ptr TreeView
    argPtr1 CInt
    arg2) (toTreeView self) 0
    treeViewSetSearchEqualFunc self
    self Maybe (string -> TreeIter -> IO Bool)
    Nothing = do
      (\(TreeView ForeignPtr TreeView
    arg1) TreeViewSearchEqualFunc
    arg2 Ptr ()
    arg3 FunPtr (Ptr () -> IO ())
    arg4 -> ForeignPtr TreeView -> (Ptr TreeView -> IO ()) -> IO ()
    forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
    withForeignPtr ForeignPtr TreeView
    arg1 ((Ptr TreeView -> IO ()) -> IO ())
    -> (Ptr TreeView -> IO ()) -> IO ()
    forall a b. (a -> b) -> a -> b
    $ \Ptr TreeView
    argPtr1 ->Ptr TreeView
    -> TreeViewSearchEqualFunc
    -> Ptr ()
    -> FunPtr (Ptr () -> IO ())
    -> IO ()
    gtk_tree_view_set_search_equal_func Ptr TreeView
    argPtr1 TreeViewSearchEqualFunc
    arg2 Ptr ()
    arg3 FunPtr (Ptr () -> IO ())
    arg4) (self -> TreeView
    forall o. TreeViewClass o => o -> TreeView
    toTreeView self
    self)
        TreeViewSearchEqualFunc
    forall a. FunPtr a
    nullFunPtr Ptr ()
    forall a. Ptr a
    nullPtr FunPtr (Ptr () -> IO ())
    forall a. FunPtr a
    nullFunPtr
      (\(TreeView ForeignPtr TreeView
    arg1) CInt
    arg2 -> ForeignPtr TreeView -> (Ptr TreeView -> IO ()) -> IO ()
    forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
    withForeignPtr ForeignPtr TreeView
    arg1 ((Ptr TreeView -> IO ()) -> IO ())
    -> (Ptr TreeView -> IO ()) -> IO ()
    forall a b. (a -> b) -> a -> b
    $ \Ptr TreeView
    argPtr1 ->Ptr TreeView -> CInt -> IO ()
    gtk_tree_view_set_search_column Ptr TreeView
    argPtr1 CInt
    arg2) (self -> TreeView
    forall o. TreeViewClass o => o -> TreeView
    toTreeView self
    self) (-CInt
    1)

    type TreeViewSearchEqualFunc = FunPtr (((Ptr TreeModel) -> (CInt -> ((Ptr CChar) -> ((Ptr TreeIter) -> ((Ptr ()) -> (IO CInt)))))))
    {-# LINE 1232 "./Graphics/UI/Gtk/ModelView/TreeView.chs" #-}

    foreign import ccall "wrapper" mkTreeViewSearchEqualFunc ::
      (Ptr TreeModel -> (CInt) -> CString -> Ptr TreeIter -> Ptr () ->
       IO (CInt)) -> IO TreeViewSearchEqualFunc

    -- helper to marshal native tree paths to TreePaths
    readNTP :: Ptr TreePath -> IO TreePath
    readNTP :: Ptr TreePath -> IO TreePath
    readNTP Ptr TreePath
    ptr = Ptr NativeTreePath -> IO TreePath
    peekTreePath (Ptr TreePath -> Ptr NativeTreePath
    forall a b. Ptr a -> Ptr b
    castPtr Ptr TreePath
    ptr)

    -- | Returns whether fixed height mode is turned on for the tree view.
    --
    -- * Available since Gtk+ version 2.6
    --
    treeViewGetFixedHeightMode :: TreeViewClass self => self
     -> IO Bool -- ^ returns @True@ if the tree view is in fixed height mode
    treeViewGetFixedHeightMode :: forall self. TreeViewClass self => self -> IO Bool
    treeViewGetFixedHeightMode 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
    $
      (\(TreeView ForeignPtr TreeView
    arg1) -> ForeignPtr TreeView -> (Ptr TreeView -> IO CInt) -> IO CInt
    forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
    withForeignPtr ForeignPtr TreeView
    arg1 ((Ptr TreeView -> IO CInt) -> IO CInt)
    -> (Ptr TreeView -> IO CInt) -> IO CInt
    forall a b. (a -> b) -> a -> b
    $ \Ptr TreeView
    argPtr1 ->Ptr TreeView -> IO CInt
    gtk_tree_view_get_fixed_height_mode Ptr TreeView
    argPtr1)
    {-# LINE 1251 "./Graphics/UI/Gtk/ModelView/TreeView.chs" #-}
        (toTreeView self)

    -- | Enables or disables the fixed height mode of the tree view. Fixed height
    -- mode speeds up 'TreeView' by assuming that all rows have the same height.
    -- Only enable this option if all rows are the same height and all columns are
    -- of type 'TreeViewColumnFixed'.
    --
    -- * Available since Gtk+ version 2.6
    --
    treeViewSetFixedHeightMode :: TreeViewClass self => self
     -> Bool -- ^ @enable@ - @True@ to enable fixed height mode
     -> IO ()
    treeViewSetFixedHeightMode :: forall self. TreeViewClass self => self -> Bool -> IO ()
    treeViewSetFixedHeightMode self
    self Bool
    enable =
      (\(TreeView ForeignPtr TreeView
    arg1) CInt
    arg2 -> ForeignPtr TreeView -> (Ptr TreeView -> IO ()) -> IO ()
    forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
    withForeignPtr ForeignPtr TreeView
    arg1 ((Ptr TreeView -> IO ()) -> IO ())
    -> (Ptr TreeView -> IO ()) -> IO ()
    forall a b. (a -> b) -> a -> b
    $ \Ptr TreeView
    argPtr1 ->Ptr TreeView -> CInt -> IO ()
    gtk_tree_view_set_fixed_height_mode Ptr TreeView
    argPtr1 CInt
    arg2)
    {-# LINE 1265 "./Graphics/UI/Gtk/ModelView/TreeView.chs" #-}
        (toTreeView self)
        (Bool -> CInt
    forall a. Num a => Bool -> a
    fromBool Bool
    enable)

    -- | Returns whether hover selection mode is turned on for @treeView@.
    --
    -- * Available since Gtk+ version 2.6
    --
    treeViewGetHoverSelection :: TreeViewClass self => self
     -> IO Bool -- ^ returns @True@ if the tree view is in hover selection mode
    treeViewGetHoverSelection :: forall self. TreeViewClass self => self -> IO Bool
    treeViewGetHoverSelection 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
    $
      (\(TreeView ForeignPtr TreeView
    arg1) -> ForeignPtr TreeView -> (Ptr TreeView -> IO CInt) -> IO CInt
    forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
    withForeignPtr ForeignPtr TreeView
    arg1 ((Ptr TreeView -> IO CInt) -> IO CInt)
    -> (Ptr TreeView -> IO CInt) -> IO CInt
    forall a b. (a -> b) -> a -> b
    $ \Ptr TreeView
    argPtr1 ->Ptr TreeView -> IO CInt
    gtk_tree_view_get_hover_selection Ptr TreeView
    argPtr1)
    {-# LINE 1277 "./Graphics/UI/Gtk/ModelView/TreeView.chs" #-}
        (toTreeView self)

    -- | Enables of disables the hover selection mode of the tree view. Hover
    -- selection makes the selected row follow the pointer. Currently, this works
    -- only for the selection modes 'SelectionSingle' and 'SelectionBrowse'.
    --
    -- * Available since Gtk+ version 2.6
    --
    treeViewSetHoverSelection :: TreeViewClass self => self
     -> Bool -- ^ @hover@ - @True@ to enable hover selection mode
     -> IO ()
    treeViewSetHoverSelection :: forall self. TreeViewClass self => self -> Bool -> IO ()
    treeViewSetHoverSelection self
    self Bool
    hover =
      (\(TreeView ForeignPtr TreeView
    arg1) CInt
    arg2 -> ForeignPtr TreeView -> (Ptr TreeView -> IO ()) -> IO ()
    forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
    withForeignPtr ForeignPtr TreeView
    arg1 ((Ptr TreeView -> IO ()) -> IO ())
    -> (Ptr TreeView -> IO ()) -> IO ()
    forall a b. (a -> b) -> a -> b
    $ \Ptr TreeView
    argPtr1 ->Ptr TreeView -> CInt -> IO ()
    gtk_tree_view_set_hover_selection Ptr TreeView
    argPtr1 CInt
    arg2)
    {-# LINE 1290 "./Graphics/UI/Gtk/ModelView/TreeView.chs" #-}
        (toTreeView self)
        (Bool -> CInt
    forall a. Num a => Bool -> a
    fromBool Bool
    hover)

    -- | Returns whether hover expansion mode is turned on for the tree view.
    --
    -- * Available since Gtk+ version 2.6
    --
    treeViewGetHoverExpand :: TreeViewClass self => self
     -> IO Bool -- ^ returns @True@ if the tree view is in hover expansion mode
    treeViewGetHoverExpand :: forall self. TreeViewClass self => self -> IO Bool
    treeViewGetHoverExpand 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
    $
      (\(TreeView ForeignPtr TreeView
    arg1) -> ForeignPtr TreeView -> (Ptr TreeView -> IO CInt) -> IO CInt
    forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
    withForeignPtr ForeignPtr TreeView
    arg1 ((Ptr TreeView -> IO CInt) -> IO CInt)
    -> (Ptr TreeView -> IO CInt) -> IO CInt
    forall a b. (a -> b) -> a -> b
    $ \Ptr TreeView
    argPtr1 ->Ptr TreeView -> IO CInt
    gtk_tree_view_get_hover_expand Ptr TreeView
    argPtr1)
    {-# LINE 1302 "./Graphics/UI/Gtk/ModelView/TreeView.chs" #-}
        (toTreeView self)

    -- | Enables of disables the hover expansion mode of the tree view. Hover
    -- expansion makes rows expand or collapse if the pointer moves over them.
    --
    -- * Available since Gtk+ version 2.6
    --
    treeViewSetHoverExpand :: TreeViewClass self => self
     -> Bool -- ^ @expand@ - @True@ to enable hover selection mode
     -> IO ()
    treeViewSetHoverExpand :: forall self. TreeViewClass self => self -> Bool -> IO ()
    treeViewSetHoverExpand self
    self Bool
    expand =
      (\(TreeView ForeignPtr TreeView
    arg1) CInt
    arg2 -> ForeignPtr TreeView -> (Ptr TreeView -> IO ()) -> IO ()
    forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
    withForeignPtr ForeignPtr TreeView
    arg1 ((Ptr TreeView -> IO ()) -> IO ())
    -> (Ptr TreeView -> IO ()) -> IO ()
    forall a b. (a -> b) -> a -> b
    $ \Ptr TreeView
    argPtr1 ->Ptr TreeView -> CInt -> IO ()
    gtk_tree_view_set_hover_expand Ptr TreeView
    argPtr1 CInt
    arg2)
    {-# LINE 1314 "./Graphics/UI/Gtk/ModelView/TreeView.chs" #-}
        (toTreeView self)
        (Bool -> CInt
    forall a. Num a => Bool -> a
    fromBool Bool
    expand)

    -- %hash c:88cb d:65c9
    -- | Returns whether all header columns are clickable.
    --
    -- * Available since Gtk+ version 2.10
    --
    treeViewGetHeadersClickable :: TreeViewClass self => self
     -> IO Bool -- ^ returns @True@ if all header columns are clickable, otherwise
                -- @False@
    treeViewGetHeadersClickable :: forall self. TreeViewClass self => self -> IO Bool
    treeViewGetHeadersClickable 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
    $
      (\(TreeView ForeignPtr TreeView
    arg1) -> ForeignPtr TreeView -> (Ptr TreeView -> IO CInt) -> IO CInt
    forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
    withForeignPtr ForeignPtr TreeView
    arg1 ((Ptr TreeView -> IO CInt) -> IO CInt)
    -> (Ptr TreeView -> IO CInt) -> IO CInt
    forall a b. (a -> b) -> a -> b
    $ \Ptr TreeView
    argPtr1 ->Ptr TreeView -> IO CInt
    gtk_tree_view_get_headers_clickable Ptr TreeView
    argPtr1)
    {-# LINE 1331 "./Graphics/UI/Gtk/ModelView/TreeView.chs" #-}
        (toTreeView self)

    -- %hash c:1d81 d:3587
    -- | Return the first and last visible path.
    -- Note that there may be invisible paths in between.
    --
    -- * Available since Gtk+ version 2.8
    --
    treeViewGetVisibleRange :: TreeViewClass self => self
     -> IO (TreePath, TreePath) -- ^ the first and the last node that is visible
    treeViewGetVisibleRange :: forall self. TreeViewClass self => self -> IO (TreePath, TreePath)
    treeViewGetVisibleRange self
    self = (Ptr (Ptr NativeTreePath) -> IO (TreePath, TreePath))
    -> IO (TreePath, TreePath)
    forall a b. Storable a => (Ptr a -> IO b) -> IO b
    alloca ((Ptr (Ptr NativeTreePath) -> IO (TreePath, TreePath))
     -> IO (TreePath, TreePath))
    -> (Ptr (Ptr NativeTreePath) -> IO (TreePath, TreePath))
    -> IO (TreePath, TreePath)
    forall a b. (a -> b) -> a -> b
    $ \Ptr (Ptr NativeTreePath)
    startPtr -> (Ptr (Ptr NativeTreePath) -> IO (TreePath, TreePath))
    -> IO (TreePath, TreePath)
    forall a b. Storable a => (Ptr a -> IO b) -> IO b
    alloca ((Ptr (Ptr NativeTreePath) -> IO (TreePath, TreePath))
     -> IO (TreePath, TreePath))
    -> (Ptr (Ptr NativeTreePath) -> IO (TreePath, TreePath))
    -> IO (TreePath, TreePath)
    forall a b. (a -> b) -> a -> b
    $ \Ptr (Ptr NativeTreePath)
    endPtr -> do
      valid <- (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
    $
        (\(TreeView ForeignPtr TreeView
    arg1) Ptr NativeTreePath
    arg2 Ptr NativeTreePath
    arg3 -> ForeignPtr TreeView -> (Ptr TreeView -> IO CInt) -> IO CInt
    forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
    withForeignPtr ForeignPtr TreeView
    arg1 ((Ptr TreeView -> IO CInt) -> IO CInt)
    -> (Ptr TreeView -> IO CInt) -> IO CInt
    forall a b. (a -> b) -> a -> b
    $ \Ptr TreeView
    argPtr1 ->Ptr TreeView -> Ptr NativeTreePath -> Ptr NativeTreePath -> IO CInt
    gtk_tree_view_get_visible_range Ptr TreeView
    argPtr1 Ptr NativeTreePath
    arg2 Ptr NativeTreePath
    arg3)
    {-# LINE 1346 "./Graphics/UI/Gtk/ModelView/TreeView.chs" #-}
        (toTreeView self) (Ptr (Ptr NativeTreePath) -> Ptr NativeTreePath
    forall a b. Ptr a -> Ptr b
    castPtr Ptr (Ptr NativeTreePath)
    startPtr) (Ptr (Ptr NativeTreePath) -> Ptr NativeTreePath
    forall a b. Ptr a -> Ptr b
    castPtr Ptr (Ptr NativeTreePath)
    endPtr)
      if not valid then return ([],[]) else do
        startTPPtr <- peek startPtr
        endTPPtr <- peek endPtr
        startPath <- fromTreePath startTPPtr
        endPath <- fromTreePath endTPPtr
        return (startPath, endPath)

    -- %hash c:61e1 d:3a0a
    -- | Turns @treeView@ into a drop destination for automatic DND.
    --
    treeViewEnableModelDragDest :: TreeViewClass self => self
      -> TargetList -- ^ @targets@ - the list of targets that the
                                   -- the view will support
      -> [DragAction] -- ^ @actions@ - flags denoting the possible actions
                                   -- for a drop into this widget
      -> IO ()
    treeViewEnableModelDragDest :: forall self.
    TreeViewClass self =>
    self -> TargetList -> [DragAction] -> IO ()
    treeViewEnableModelDragDest self
    self TargetList
    targets [DragAction]
    actions =
      (Ptr CInt -> IO ()) -> IO ()
    forall a b. Storable a => (Ptr a -> IO b) -> IO b
    alloca ((Ptr CInt -> IO ()) -> IO ()) -> (Ptr CInt -> IO ()) -> IO ()
    forall a b. (a -> b) -> a -> b
    $ \Ptr CInt
    nTargetsPtr -> do
      tlPtr <- (\(TargetList ForeignPtr TargetList
    arg1) Ptr CInt
    arg2 -> ForeignPtr TargetList
    -> (Ptr TargetList -> IO (Ptr ())) -> IO (Ptr ())
    forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
    withForeignPtr ForeignPtr TargetList
    arg1 ((Ptr TargetList -> IO (Ptr ())) -> IO (Ptr ()))
    -> (Ptr TargetList -> IO (Ptr ())) -> IO (Ptr ())
    forall a b. (a -> b) -> a -> b
    $ \Ptr TargetList
    argPtr1 ->Ptr TargetList -> Ptr CInt -> IO (Ptr ())
    gtk_target_table_new_from_list Ptr TargetList
    argPtr1 Ptr CInt
    arg2) TargetList
    targets Ptr CInt
    nTargetsPtr
      nTargets <- peek nTargetsPtr
      (\(TreeView ForeignPtr TreeView
    arg1) Ptr ()
    arg2 CInt
    arg3 CInt
    arg4 -> ForeignPtr TreeView -> (Ptr TreeView -> IO ()) -> IO ()
    forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
    withForeignPtr ForeignPtr TreeView
    arg1 ((Ptr TreeView -> IO ()) -> IO ())
    -> (Ptr TreeView -> IO ()) -> IO ()
    forall a b. (a -> b) -> a -> b
    $ \Ptr TreeView
    argPtr1 ->Ptr TreeView -> Ptr () -> CInt -> CInt -> IO ()
    gtk_tree_view_enable_model_drag_dest Ptr TreeView
    argPtr1 Ptr ()
    arg2 CInt
    arg3 CInt
    arg4)
    {-# LINE 1371 "./Graphics/UI/Gtk/ModelView/TreeView.chs" #-}
        (toTreeView self)
        tlPtr
        nTargets
        ((fromIntegral . fromFlags) actions)
      gtk_target_table_free tlPtr nTargets

    -- %hash c:1df9 d:622
    -- | Turns @treeView@ into a drag source for automatic DND.
    --
    treeViewEnableModelDragSource :: TreeViewClass self => self
     -> [Modifier] -- ^ @startButtonMask@ - Mask of allowed buttons
                                  -- to start drag
     -> TargetList -- ^ @targets@ - the list of targets that the
                                  -- the view will support
     -> [DragAction] -- ^ @actions@ - flags denoting the possible actions
                                  -- for a drag from this widget
     -> IO ()
    treeViewEnableModelDragSource :: forall self.
    TreeViewClass self =>
    self -> [Modifier] -> TargetList -> [DragAction] -> IO ()
    treeViewEnableModelDragSource self
    self [Modifier]
    startButtonMask TargetList
    targets [DragAction]
    actions =
      (Ptr CInt -> IO ()) -> IO ()
    forall a b. Storable a => (Ptr a -> IO b) -> IO b
    alloca ((Ptr CInt -> IO ()) -> IO ()) -> (Ptr CInt -> IO ()) -> IO ()
    forall a b. (a -> b) -> a -> b
    $ \Ptr CInt
    nTargetsPtr -> do
      tlPtr <- (\(TargetList ForeignPtr TargetList
    arg1) Ptr CInt
    arg2 -> ForeignPtr TargetList
    -> (Ptr TargetList -> IO (Ptr ())) -> IO (Ptr ())
    forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
    withForeignPtr ForeignPtr TargetList
    arg1 ((Ptr TargetList -> IO (Ptr ())) -> IO (Ptr ()))
    -> (Ptr TargetList -> IO (Ptr ())) -> IO (Ptr ())
    forall a b. (a -> b) -> a -> b
    $ \Ptr TargetList
    argPtr1 ->Ptr TargetList -> Ptr CInt -> IO (Ptr ())
    gtk_target_table_new_from_list Ptr TargetList
    argPtr1 Ptr CInt
    arg2) TargetList
    targets Ptr CInt
    nTargetsPtr
      nTargets <- peek nTargetsPtr
      (\(TreeView ForeignPtr TreeView
    arg1) CInt
    arg2 Ptr ()
    arg3 CInt
    arg4 CInt
    arg5 -> ForeignPtr TreeView -> (Ptr TreeView -> IO ()) -> IO ()
    forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
    withForeignPtr ForeignPtr TreeView
    arg1 ((Ptr TreeView -> IO ()) -> IO ())
    -> (Ptr TreeView -> IO ()) -> IO ()
    forall a b. (a -> b) -> a -> b
    $ \Ptr TreeView
    argPtr1 ->Ptr TreeView -> CInt -> Ptr () -> CInt -> CInt -> IO ()
    gtk_tree_view_enable_model_drag_source Ptr TreeView
    argPtr1 CInt
    arg2 Ptr ()
    arg3 CInt
    arg4 CInt
    arg5)
    {-# LINE 1393 "./Graphics/UI/Gtk/ModelView/TreeView.chs" #-}
        (toTreeView self)
        ((fromIntegral . fromFlags) startButtonMask)
        tlPtr
        nTargets
        ((fromIntegral . fromFlags) actions)
      gtk_target_table_free tlPtr nTargets

    -- %hash c:5201 d:f3be
    -- | Undoes the effect of 'treeViewEnableModelDragSource'.
    --
    treeViewUnsetRowsDragSource :: TreeViewClass self => self -> IO ()
    treeViewUnsetRowsDragSource :: forall self. TreeViewClass self => self -> IO ()
    treeViewUnsetRowsDragSource self
    self =
      (\(TreeView ForeignPtr TreeView
    arg1) -> ForeignPtr TreeView -> (Ptr TreeView -> IO ()) -> IO ()
    forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
    withForeignPtr ForeignPtr TreeView
    arg1 ((Ptr TreeView -> IO ()) -> IO ())
    -> (Ptr TreeView -> IO ()) -> IO ()
    forall a b. (a -> b) -> a -> b
    $ \Ptr TreeView
    argPtr1 ->Ptr TreeView -> IO ()
    gtk_tree_view_unset_rows_drag_source Ptr TreeView
    argPtr1)
    {-# LINE 1406 "./Graphics/UI/Gtk/ModelView/TreeView.chs" #-}
        (toTreeView self)

    -- %hash c:e31e d:323d
    -- | Undoes the effect of 'treeViewEnableModelDragDest'.
    --
    treeViewUnsetRowsDragDest :: TreeViewClass self => self -> IO ()
    treeViewUnsetRowsDragDest :: forall self. TreeViewClass self => self -> IO ()
    treeViewUnsetRowsDragDest self
    self =
      (\(TreeView ForeignPtr TreeView
    arg1) -> ForeignPtr TreeView -> (Ptr TreeView -> IO ()) -> IO ()
    forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
    withForeignPtr ForeignPtr TreeView
    arg1 ((Ptr TreeView -> IO ()) -> IO ())
    -> (Ptr TreeView -> IO ()) -> IO ()
    forall a b. (a -> b) -> a -> b
    $ \Ptr TreeView
    argPtr1 ->Ptr TreeView -> IO ()
    gtk_tree_view_unset_rows_drag_dest Ptr TreeView
    argPtr1)
    {-# LINE 1414 "./Graphics/UI/Gtk/ModelView/TreeView.chs" #-}
        (toTreeView self)

    -- %hash c:3355 d:3bbe
    -- | Returns the 'Entry' which is currently in use as interactive search entry
    -- for @treeView@. In case the built-in entry is being used, @Nothing@ will be
    -- returned.
    --
    -- * Available since Gtk+ version 2.10
    --
    treeViewGetSearchEntry :: TreeViewClass self => self
     -> IO (Maybe Entry) -- ^ returns the entry currently in use as search entry.
    treeViewGetSearchEntry :: forall self. TreeViewClass self => self -> IO (Maybe Entry)
    treeViewGetSearchEntry self
    self = do
      ePtr <- (\(TreeView ForeignPtr TreeView
    arg1) -> ForeignPtr TreeView
    -> (Ptr TreeView -> IO (Ptr Entry)) -> IO (Ptr Entry)
    forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
    withForeignPtr ForeignPtr TreeView
    arg1 ((Ptr TreeView -> IO (Ptr Entry)) -> IO (Ptr Entry))
    -> (Ptr TreeView -> IO (Ptr Entry)) -> IO (Ptr Entry)
    forall a b. (a -> b) -> a -> b
    $ \Ptr TreeView
    argPtr1 ->Ptr TreeView -> IO (Ptr Entry)
    gtk_tree_view_get_search_entry Ptr TreeView
    argPtr1)
    {-# LINE 1427 "./Graphics/UI/Gtk/ModelView/TreeView.chs" #-}
        (toTreeView self)
      if ePtr==nullPtr then return Nothing else liftM Just $
        makeNewObject mkEntry (return ePtr)

    -- %hash c:5e11 d:8ec5
    -- | Sets the entry which the interactive search code will use for this
    -- @treeView@. This is useful when you want to provide a search entry in our
    -- interface at all time at a fixed position. Passing @Nothing@ for @entry@
    -- will make the interactive search code use the built-in popup entry again.
    --
    -- * Available since Gtk+ version 2.10
    --
    treeViewSetSearchEntry :: (TreeViewClass self, EntryClass entry) => self
     -> (Maybe entry)
              -- ^ @entry@ - the entry the interactive search code of @treeView@
              -- should use or @Nothing@
     -> IO ()
    treeViewSetSearchEntry :: forall self entry.
    (TreeViewClass self, EntryClass entry) =>
    self -> Maybe entry -> IO ()
    treeViewSetSearchEntry self
    self (Just entry
    entry) =
      (\(TreeView ForeignPtr TreeView
    arg1) (Entry ForeignPtr Entry
    arg2) -> ForeignPtr TreeView -> (Ptr TreeView -> IO ()) -> IO ()
    forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
    withForeignPtr ForeignPtr TreeView
    arg1 ((Ptr TreeView -> IO ()) -> IO ())
    -> (Ptr TreeView -> IO ()) -> IO ()
    forall a b. (a -> b) -> a -> b
    $ \Ptr TreeView
    argPtr1 ->ForeignPtr Entry -> (Ptr Entry -> IO ()) -> IO ()
    forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
    withForeignPtr ForeignPtr Entry
    arg2 ((Ptr Entry -> IO ()) -> IO ()) -> (Ptr Entry -> IO ()) -> IO ()
    forall a b. (a -> b) -> a -> b
    $ \Ptr Entry
    argPtr2 ->Ptr TreeView -> Ptr Entry -> IO ()
    gtk_tree_view_set_search_entry Ptr TreeView
    argPtr1 Ptr Entry
    argPtr2)
    {-# LINE 1446 "./Graphics/UI/Gtk/ModelView/TreeView.chs" #-}
        (toTreeView self)
        (entry -> Entry
    forall o. EntryClass o => o -> Entry
    toEntry entry
    entry)
    treeViewSetSearchEntry self
    self Maybe entry
    Nothing =
      (\(TreeView ForeignPtr TreeView
    arg1) (Entry ForeignPtr Entry
    arg2) -> ForeignPtr TreeView -> (Ptr TreeView -> IO ()) -> IO ()
    forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
    withForeignPtr ForeignPtr TreeView
    arg1 ((Ptr TreeView -> IO ()) -> IO ())
    -> (Ptr TreeView -> IO ()) -> IO ()
    forall a b. (a -> b) -> a -> b
    $ \Ptr TreeView
    argPtr1 ->ForeignPtr Entry -> (Ptr Entry -> IO ()) -> IO ()
    forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
    withForeignPtr ForeignPtr Entry
    arg2 ((Ptr Entry -> IO ()) -> IO ()) -> (Ptr Entry -> IO ()) -> IO ()
    forall a b. (a -> b) -> a -> b
    $ \Ptr Entry
    argPtr2 ->Ptr TreeView -> Ptr Entry -> IO ()
    gtk_tree_view_set_search_entry Ptr TreeView
    argPtr1 Ptr Entry
    argPtr2)
    {-# LINE 1450 "./Graphics/UI/Gtk/ModelView/TreeView.chs" #-}
        (toTreeView self)
        (ForeignPtr Entry -> Entry
    Entry ForeignPtr Entry
    forall a. ForeignPtr a
    nullForeignPtr)

    -- %hash c:6326 d:a050
    -- | Sets the row separator function, which is used to determine whether a row
    -- should be drawn as a separator. If the row separator function is @Nothing@,
    -- no separators are drawn. This is the default value.
    --
    -- * Available since Gtk+ version 2.6
    --
    treeViewSetRowSeparatorFunc :: TreeViewClass self => self
     -> Maybe (TreeIter -> IO Bool) -- ^ @func@ - a callback function that
                                        -- returns @True@ if the given row of
                                        -- the model should be drawn as separator
     -> IO ()
    treeViewSetRowSeparatorFunc :: forall self.
    TreeViewClass self =>
    self -> Maybe (TreeIter -> IO Bool) -> IO ()
    treeViewSetRowSeparatorFunc self
    self Maybe (TreeIter -> IO Bool)
    Nothing =
      (\(TreeView ForeignPtr TreeView
    arg1) FunPtr (Ptr TreeModel -> Ptr TreeIter -> Ptr () -> IO CInt)
    arg2 Ptr ()
    arg3 FunPtr (Ptr () -> IO ())
    arg4 -> ForeignPtr TreeView -> (Ptr TreeView -> IO ()) -> IO ()
    forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
    withForeignPtr ForeignPtr TreeView
    arg1 ((Ptr TreeView -> IO ()) -> IO ())
    -> (Ptr TreeView -> IO ()) -> IO ()
    forall a b. (a -> b) -> a -> b
    $ \Ptr TreeView
    argPtr1 ->Ptr TreeView
    -> FunPtr (Ptr TreeModel -> Ptr TreeIter -> Ptr () -> IO CInt)
    -> Ptr ()
    -> FunPtr (Ptr () -> IO ())
    -> IO ()
    gtk_tree_view_set_row_separator_func Ptr TreeView
    argPtr1 FunPtr (Ptr TreeModel -> Ptr TreeIter -> Ptr () -> IO CInt)
    arg2 Ptr ()
    arg3 FunPtr (Ptr () -> IO ())
    arg4)
    {-# LINE 1469 "./Graphics/UI/Gtk/ModelView/TreeView.chs" #-}
        (toTreeView self) FunPtr (Ptr TreeModel -> Ptr TreeIter -> Ptr () -> IO CInt)
    forall a. FunPtr a
    nullFunPtr Ptr ()
    forall a. Ptr a
    nullPtr FunPtr (Ptr () -> IO ())
    forall a. FunPtr a
    nullFunPtr
    treeViewSetRowSeparatorFunc self
    self (Just TreeIter -> IO Bool
    func) = do
      funcPtr <- (Ptr TreeModel -> Ptr TreeIter -> Ptr () -> IO CInt)
    -> IO (FunPtr (Ptr TreeModel -> Ptr TreeIter -> Ptr () -> IO CInt))
    mkTreeViewRowSeparatorFunc ((Ptr TreeModel -> Ptr TreeIter -> Ptr () -> IO CInt)
     -> IO
          (FunPtr (Ptr TreeModel -> Ptr TreeIter -> Ptr () -> IO CInt)))
    -> (Ptr TreeModel -> Ptr TreeIter -> Ptr () -> IO CInt)
    -> IO (FunPtr (Ptr TreeModel -> Ptr TreeIter -> Ptr () -> IO CInt))
    forall a b. (a -> b) -> a -> b
    $ \Ptr TreeModel
    _ Ptr TreeIter
    tiPtr Ptr ()
    _ -> do
        ti <- Ptr TreeIter -> IO TreeIter
    peekTreeIter Ptr TreeIter
    tiPtr
        liftM fromBool $ func ti
      (\(TreeView ForeignPtr TreeView
    arg1) FunPtr (Ptr TreeModel -> Ptr TreeIter -> Ptr () -> IO CInt)
    arg2 Ptr ()
    arg3 FunPtr (Ptr () -> IO ())
    arg4 -> ForeignPtr TreeView -> (Ptr TreeView -> IO ()) -> IO ()
    forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
    withForeignPtr ForeignPtr TreeView
    arg1 ((Ptr TreeView -> IO ()) -> IO ())
    -> (Ptr TreeView -> IO ()) -> IO ()
    forall a b. (a -> b) -> a -> b
    $ \Ptr TreeView
    argPtr1 ->Ptr TreeView
    -> FunPtr (Ptr TreeModel -> Ptr TreeIter -> Ptr () -> IO CInt)
    -> Ptr ()
    -> FunPtr (Ptr () -> IO ())
    -> IO ()
    gtk_tree_view_set_row_separator_func Ptr TreeView
    argPtr1 FunPtr (Ptr TreeModel -> Ptr TreeIter -> Ptr () -> IO CInt)
    arg2 Ptr ()
    arg3 FunPtr (Ptr () -> IO ())
    arg4)
    {-# LINE 1475 "./Graphics/UI/Gtk/ModelView/TreeView.chs" #-}
        (toTreeView self) funcPtr (castFunPtrToPtr funcPtr) destroyFunPtr

    type TreeViewRowSeparatorFunc = FunPtr (((Ptr TreeModel) -> ((Ptr TreeIter) -> ((Ptr ()) -> (IO CInt)))))
    {-# LINE 1478 "./Graphics/UI/Gtk/ModelView/TreeView.chs" #-}

    foreign import ccall "wrapper" mkTreeViewRowSeparatorFunc ::
      (Ptr TreeModel -> Ptr TreeIter -> Ptr () -> IO (CInt)) ->
      IO TreeViewRowSeparatorFunc

    -- %hash c:778a d:eacd
    -- | Returns whether rubber banding is turned on for @treeView@. If the
    -- selection mode is 'SelectionMultiple', rubber banding will allow the user to
    -- select multiple rows by dragging the mouse.
    --
    -- * Available since Gtk+ version 2.10
    --
    treeViewGetRubberBanding :: TreeViewClass self => self
     -> IO Bool -- ^ returns @True@ if rubber banding in @treeView@ is enabled.
    treeViewGetRubberBanding :: forall self. TreeViewClass self => self -> IO Bool
    treeViewGetRubberBanding 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
    $
      (\(TreeView ForeignPtr TreeView
    arg1) -> ForeignPtr TreeView -> (Ptr TreeView -> IO CInt) -> IO CInt
    forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
    withForeignPtr ForeignPtr TreeView
    arg1 ((Ptr TreeView -> IO CInt) -> IO CInt)
    -> (Ptr TreeView -> IO CInt) -> IO CInt
    forall a b. (a -> b) -> a -> b
    $ \Ptr TreeView
    argPtr1 ->Ptr TreeView -> IO CInt
    gtk_tree_view_get_rubber_banding Ptr TreeView
    argPtr1)
    {-# LINE 1496 "./Graphics/UI/Gtk/ModelView/TreeView.chs" #-}
        (toTreeView self)

    -- %hash c:4a69 d:93aa
    -- | Enables or disables rubber banding in @treeView@. If the selection mode
    -- is 'SelectionMultiple', rubber banding will allow the user to select
    -- multiple rows by dragging the mouse.
    --
    -- * Available since Gtk+ version 2.10
    --
    treeViewSetRubberBanding :: TreeViewClass self => self
     -> Bool -- ^ @enable@ - @True@ to enable rubber banding
     -> IO ()
    treeViewSetRubberBanding :: forall self. TreeViewClass self => self -> Bool -> IO ()
    treeViewSetRubberBanding self
    self Bool
    enable =
      (\(TreeView ForeignPtr TreeView
    arg1) CInt
    arg2 -> ForeignPtr TreeView -> (Ptr TreeView -> IO ()) -> IO ()
    forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
    withForeignPtr ForeignPtr TreeView
    arg1 ((Ptr TreeView -> IO ()) -> IO ())
    -> (Ptr TreeView -> IO ()) -> IO ()
    forall a b. (a -> b) -> a -> b
    $ \Ptr TreeView
    argPtr1 ->Ptr TreeView -> CInt -> IO ()
    gtk_tree_view_set_rubber_banding Ptr TreeView
    argPtr1 CInt
    arg2)
    {-# LINE 1510 "./Graphics/UI/Gtk/ModelView/TreeView.chs" #-}
        (toTreeView self)
        (Bool -> CInt
    forall a. Num a => Bool -> a
    fromBool Bool
    enable)

    -- %hash c:c8f8 d:c47
    -- | Returns whether or not tree lines are drawn in @treeView@.
    --
    -- * Available since Gtk+ version 2.10
    --
    treeViewGetEnableTreeLines :: TreeViewClass self => self
     -> IO Bool -- ^ returns @True@ if tree lines are drawn in @treeView@, @False@
                -- otherwise.
    treeViewGetEnableTreeLines :: forall self. TreeViewClass self => self -> IO Bool
    treeViewGetEnableTreeLines 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
    $
      (\(TreeView ForeignPtr TreeView
    arg1) -> ForeignPtr TreeView -> (Ptr TreeView -> IO CInt) -> IO CInt
    forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
    withForeignPtr ForeignPtr TreeView
    arg1 ((Ptr TreeView -> IO CInt) -> IO CInt)
    -> (Ptr TreeView -> IO CInt) -> IO CInt
    forall a b. (a -> b) -> a -> b
    $ \Ptr TreeView
    argPtr1 ->Ptr TreeView -> IO CInt
    gtk_tree_view_get_enable_tree_lines Ptr TreeView
    argPtr1)
    {-# LINE 1524 "./Graphics/UI/Gtk/ModelView/TreeView.chs" #-}
        (toTreeView self)

    -- %hash c:205d d:1df9
    -- | Sets whether to draw lines interconnecting the expanders in @treeView@.
    -- This does not have any visible effects for lists.
    --
    -- * Available since Gtk+ version 2.10
    --
    treeViewSetEnableTreeLines :: TreeViewClass self => self
     -> Bool -- ^ @enabled@ - @True@ to enable tree line drawing, @False@
             -- otherwise.
     -> IO ()
    treeViewSetEnableTreeLines :: forall self. TreeViewClass self => self -> Bool -> IO ()
    treeViewSetEnableTreeLines self
    self Bool
    enabled =
      (\(TreeView ForeignPtr TreeView
    arg1) CInt
    arg2 -> ForeignPtr TreeView -> (Ptr TreeView -> IO ()) -> IO ()
    forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
    withForeignPtr ForeignPtr TreeView
    arg1 ((Ptr TreeView -> IO ()) -> IO ())
    -> (Ptr TreeView -> IO ()) -> IO ()
    forall a b. (a -> b) -> a -> b
    $ \Ptr TreeView
    argPtr1 ->Ptr TreeView -> CInt -> IO ()
    gtk_tree_view_set_enable_tree_lines Ptr TreeView
    argPtr1 CInt
    arg2)
    {-# LINE 1538 "./Graphics/UI/Gtk/ModelView/TreeView.chs" #-}
        (toTreeView self)
        (Bool -> CInt
    forall a. Num a => Bool -> a
    fromBool Bool
    enabled)

    -- | Grid lines.
    data TreeViewGridLines = TreeViewGridLinesNone
                           | TreeViewGridLinesHorizontal
                           | TreeViewGridLinesVertical
                           | TreeViewGridLinesBoth
                           deriving (Int -> TreeViewGridLines
    TreeViewGridLines -> Int
    TreeViewGridLines -> [TreeViewGridLines]
    TreeViewGridLines -> TreeViewGridLines
    TreeViewGridLines -> TreeViewGridLines -> [TreeViewGridLines]
    TreeViewGridLines
    -> TreeViewGridLines -> TreeViewGridLines -> [TreeViewGridLines]
    (TreeViewGridLines -> TreeViewGridLines)
    -> (TreeViewGridLines -> TreeViewGridLines)
    -> (Int -> TreeViewGridLines)
    -> (TreeViewGridLines -> Int)
    -> (TreeViewGridLines -> [TreeViewGridLines])
    -> (TreeViewGridLines -> TreeViewGridLines -> [TreeViewGridLines])
    -> (TreeViewGridLines -> TreeViewGridLines -> [TreeViewGridLines])
    -> (TreeViewGridLines
        -> TreeViewGridLines -> TreeViewGridLines -> [TreeViewGridLines])
    -> Enum TreeViewGridLines
    forall a.
    (a -> a)
    -> (a -> a)
    -> (Int -> a)
    -> (a -> Int)
    -> (a -> [a])
    -> (a -> a -> [a])
    -> (a -> a -> [a])
    -> (a -> a -> a -> [a])
    -> Enum a
    $csucc :: TreeViewGridLines -> TreeViewGridLines
    succ :: TreeViewGridLines -> TreeViewGridLines
    $cpred :: TreeViewGridLines -> TreeViewGridLines
    pred :: TreeViewGridLines -> TreeViewGridLines
    $ctoEnum :: Int -> TreeViewGridLines
    toEnum :: Int -> TreeViewGridLines
    $cfromEnum :: TreeViewGridLines -> Int
    fromEnum :: TreeViewGridLines -> Int
    $cenumFrom :: TreeViewGridLines -> [TreeViewGridLines]
    enumFrom :: TreeViewGridLines -> [TreeViewGridLines]
    $cenumFromThen :: TreeViewGridLines -> TreeViewGridLines -> [TreeViewGridLines]
    enumFromThen :: TreeViewGridLines -> TreeViewGridLines -> [TreeViewGridLines]
    $cenumFromTo :: TreeViewGridLines -> TreeViewGridLines -> [TreeViewGridLines]
    enumFromTo :: TreeViewGridLines -> TreeViewGridLines -> [TreeViewGridLines]
    $cenumFromThenTo :: TreeViewGridLines
    -> TreeViewGridLines -> TreeViewGridLines -> [TreeViewGridLines]
    enumFromThenTo :: TreeViewGridLines
    -> TreeViewGridLines -> TreeViewGridLines -> [TreeViewGridLines]
    Enum)

    {-# LINE 1543 "./Graphics/UI/Gtk/ModelView/TreeView.chs" #-}

    -- %hash c:cd40 d:fe96
    -- | Returns which grid lines are enabled in @treeView@.
    --
    -- * Available since Gtk+ version 2.10
    --
    treeViewGetGridLines :: TreeViewClass self => self
     -> IO TreeViewGridLines -- ^ returns a 'TreeViewGridLines' value indicating
                             -- which grid lines are enabled.
    treeViewGetGridLines :: forall self. TreeViewClass self => self -> IO TreeViewGridLines
    treeViewGetGridLines self
    self =
      (CInt -> TreeViewGridLines) -> IO CInt -> IO TreeViewGridLines
    forall (m :: * -> *) a1 r. Monad m => (a1 -> r) -> m a1 -> m r
    liftM (Int -> TreeViewGridLines
    forall a. Enum a => Int -> a
    toEnum (Int -> TreeViewGridLines)
    -> (CInt -> Int) -> CInt -> TreeViewGridLines
    forall b c a. (b -> c) -> (a -> b) -> a -> c
    . CInt -> Int
    forall a b. (Integral a, Num b) => a -> b
    fromIntegral) (IO CInt -> IO TreeViewGridLines)
    -> IO CInt -> IO TreeViewGridLines
    forall a b. (a -> b) -> a -> b
    $
      (\(TreeView ForeignPtr TreeView
    arg1) -> ForeignPtr TreeView -> (Ptr TreeView -> IO CInt) -> IO CInt
    forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
    withForeignPtr ForeignPtr TreeView
    arg1 ((Ptr TreeView -> IO CInt) -> IO CInt)
    -> (Ptr TreeView -> IO CInt) -> IO CInt
    forall a b. (a -> b) -> a -> b
    $ \Ptr TreeView
    argPtr1 ->Ptr TreeView -> IO CInt
    gtk_tree_view_get_grid_lines Ptr TreeView
    argPtr1)
    {-# LINE 1555 "./Graphics/UI/Gtk/ModelView/TreeView.chs" #-}
        (toTreeView self)

    -- %hash c:74b0 d:79f0
    -- | Sets which grid lines to draw in @treeView@.
    --
    -- * Available since Gtk+ version 2.10
    --
    treeViewSetGridLines :: TreeViewClass self => self
     -> TreeViewGridLines -- ^ @gridLines@ - a 'TreeViewGridLines' value
                          -- indicating which grid lines to enable.
     -> IO ()
    treeViewSetGridLines :: forall self.
    TreeViewClass self =>
    self -> TreeViewGridLines -> IO ()
    treeViewSetGridLines self
    self TreeViewGridLines
    gridLines =
      (\(TreeView ForeignPtr TreeView
    arg1) CInt
    arg2 -> ForeignPtr TreeView -> (Ptr TreeView -> IO ()) -> IO ()
    forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
    withForeignPtr ForeignPtr TreeView
    arg1 ((Ptr TreeView -> IO ()) -> IO ())
    -> (Ptr TreeView -> IO ()) -> IO ()
    forall a b. (a -> b) -> a -> b
    $ \Ptr TreeView
    argPtr1 ->Ptr TreeView -> CInt -> IO ()
    gtk_tree_view_set_grid_lines Ptr TreeView
    argPtr1 CInt
    arg2)
    {-# LINE 1568 "./Graphics/UI/Gtk/ModelView/TreeView.chs" #-}
        (toTreeView self)
        ((Int -> CInt
    forall a b. (Integral a, Num b) => a -> b
    fromIntegral (Int -> CInt)
    -> (TreeViewGridLines -> Int) -> TreeViewGridLines -> CInt
    forall b c a. (b -> c) -> (a -> b) -> a -> c
    . TreeViewGridLines -> Int
    forall a. Enum a => a -> Int
    fromEnum) TreeViewGridLines
    gridLines)

    -- | Sets the tip area of @tooltip@ to be the area covered by @path@. See also
    -- 'treeViewTooltipColumn' for a simpler alternative. See also
    -- 'tooltipSetTipArea'.
    treeViewSetTooltipRow :: TreeViewClass self => self
      -> Tooltip -- ^ the @tooltip@
      -> TreePath -- ^ @path@ - the position of the @tooltip@
      -> IO ()
    treeViewSetTooltipRow :: forall self.
    TreeViewClass self =>
    self -> Tooltip -> TreePath -> IO ()
    treeViewSetTooltipRow self
    self Tooltip
    tip TreePath
    path =
      TreePath -> (NativeTreePath -> IO ()) -> IO ()
    forall a. TreePath -> (NativeTreePath -> IO a) -> IO a
    withTreePath TreePath
    path ((NativeTreePath -> IO ()) -> IO ())
    -> (NativeTreePath -> IO ()) -> IO ()
    forall a b. (a -> b) -> a -> b
    $ \NativeTreePath
    path ->
      (\(TreeView ForeignPtr TreeView
    arg1) (Tooltip ForeignPtr Tooltip
    arg2) (NativeTreePath Ptr NativeTreePath
    arg3) -> ForeignPtr TreeView -> (Ptr TreeView -> IO ()) -> IO ()
    forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
    withForeignPtr ForeignPtr TreeView
    arg1 ((Ptr TreeView -> IO ()) -> IO ())
    -> (Ptr TreeView -> IO ()) -> IO ()
    forall a b. (a -> b) -> a -> b
    $ \Ptr TreeView
    argPtr1 ->ForeignPtr Tooltip -> (Ptr Tooltip -> IO ()) -> IO ()
    forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
    withForeignPtr ForeignPtr Tooltip
    arg2 ((Ptr Tooltip -> IO ()) -> IO ())
    -> (Ptr Tooltip -> IO ()) -> IO ()
    forall a b. (a -> b) -> a -> b
    $ \Ptr Tooltip
    argPtr2 ->Ptr TreeView -> Ptr Tooltip -> Ptr NativeTreePath -> IO ()
    gtk_tree_view_set_tooltip_row Ptr TreeView
    argPtr1 Ptr Tooltip
    argPtr2 Ptr NativeTreePath
    arg3) (self -> TreeView
    forall o. TreeViewClass o => o -> TreeView
    toTreeView self
    self) Tooltip
    tip NativeTreePath
    path

    -- | Sets the tip area of tooltip to the area path, column and cell have in
    -- common. For example if @path@ is @Nothing@ and @column@ is set, the tip area will be
    -- set to the full area covered by column. See also
    -- 'tooltipSetTipArea'. Note that if @path@ is not specified and @cell@ is
    -- set and part of a column containing the expander, the tooltip might not
    -- show and hide at the correct position. In such cases @path@ must be set to
    -- the current node under the mouse cursor for this function to operate
    -- correctly. See also 'treeViewTooltipColumn' for a simpler alternative.
    --
    treeViewSetTooltipCell :: (TreeViewClass self, TreeViewColumnClass col,
                               CellRendererClass renderer) => self
      -> Tooltip -- ^ the @tooltip@
      -> Maybe TreePath -- ^ @path@ at which the tip should be shown
      -> Maybe col -- ^ @column@ at which the tip should be shown
      -> Maybe renderer -- ^ the @renderer@ for which to show the tip
      -> IO ()
    treeViewSetTooltipCell :: forall self col renderer.
    (TreeViewClass self, TreeViewColumnClass col,
     CellRendererClass renderer) =>
    self
    -> Tooltip
    -> Maybe TreePath
    -> Maybe col
    -> Maybe renderer
    -> IO ()
    treeViewSetTooltipCell self
    self Tooltip
    tip Maybe TreePath
    mPath Maybe col
    mColumn Maybe renderer
    mRenderer =
      (case Maybe TreePath
    mPath of Just TreePath
    path -> TreePath -> (NativeTreePath -> IO ()) -> IO ()
    forall a. TreePath -> (NativeTreePath -> IO a) -> IO a
    withTreePath TreePath
    path
                     Maybe TreePath
    Nothing -> \NativeTreePath -> IO ()
    f -> NativeTreePath -> IO ()
    f (Ptr NativeTreePath -> NativeTreePath
    NativeTreePath Ptr NativeTreePath
    forall a. Ptr a
    nullPtr)) ((NativeTreePath -> IO ()) -> IO ())
    -> (NativeTreePath -> IO ()) -> IO ()
    forall a b. (a -> b) -> a -> b
    $ \NativeTreePath
    path -> do
      (\(TreeView ForeignPtr TreeView
    arg1) (Tooltip ForeignPtr Tooltip
    arg2) (NativeTreePath Ptr NativeTreePath
    arg3) (TreeViewColumn ForeignPtr TreeViewColumn
    arg4) (CellRenderer ForeignPtr CellRenderer
    arg5) -> ForeignPtr TreeView -> (Ptr TreeView -> IO ()) -> IO ()
    forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
    withForeignPtr ForeignPtr TreeView
    arg1 ((Ptr TreeView -> IO ()) -> IO ())
    -> (Ptr TreeView -> IO ()) -> IO ()
    forall a b. (a -> b) -> a -> b
    $ \Ptr TreeView
    argPtr1 ->ForeignPtr Tooltip -> (Ptr Tooltip -> IO ()) -> IO ()
    forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
    withForeignPtr ForeignPtr Tooltip
    arg2 ((Ptr Tooltip -> IO ()) -> IO ())
    -> (Ptr Tooltip -> IO ()) -> IO ()
    forall a b. (a -> b) -> a -> b
    $ \Ptr Tooltip
    argPtr2 ->ForeignPtr TreeViewColumn -> (Ptr TreeViewColumn -> IO ()) -> IO ()
    forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
    withForeignPtr ForeignPtr TreeViewColumn
    arg4 ((Ptr TreeViewColumn -> IO ()) -> IO ())
    -> (Ptr TreeViewColumn -> IO ()) -> IO ()
    forall a b. (a -> b) -> a -> b
    $ \Ptr TreeViewColumn
    argPtr4 ->ForeignPtr CellRenderer -> (Ptr CellRenderer -> IO ()) -> IO ()
    forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
    withForeignPtr ForeignPtr CellRenderer
    arg5 ((Ptr CellRenderer -> IO ()) -> IO ())
    -> (Ptr CellRenderer -> IO ()) -> IO ()
    forall a b. (a -> b) -> a -> b
    $ \Ptr CellRenderer
    argPtr5 ->Ptr TreeView
    -> Ptr Tooltip
    -> Ptr NativeTreePath
    -> Ptr TreeViewColumn
    -> Ptr CellRenderer
    -> IO ()
    gtk_tree_view_set_tooltip_cell Ptr TreeView
    argPtr1 Ptr Tooltip
    argPtr2 Ptr NativeTreePath
    arg3 Ptr TreeViewColumn
    argPtr4 Ptr CellRenderer
    argPtr5) (self -> TreeView
    forall o. TreeViewClass o => o -> TreeView
    toTreeView self
    self) Tooltip
    tip NativeTreePath
    path
        (TreeViewColumn
    -> (col -> TreeViewColumn) -> Maybe col -> TreeViewColumn
    forall b a. b -> (a -> b) -> Maybe a -> b
    maybe (ForeignPtr TreeViewColumn -> TreeViewColumn
    TreeViewColumn ForeignPtr TreeViewColumn
    forall a. ForeignPtr a
    nullForeignPtr) col -> TreeViewColumn
    forall o. TreeViewColumnClass o => o -> TreeViewColumn
    toTreeViewColumn Maybe col
    mColumn)
        (CellRenderer
    -> (renderer -> CellRenderer) -> Maybe renderer -> CellRenderer
    forall b a. b -> (a -> b) -> Maybe a -> b
    maybe (ForeignPtr CellRenderer -> CellRenderer
    CellRenderer ForeignPtr CellRenderer
    forall a. ForeignPtr a
    nullForeignPtr) renderer -> CellRenderer
    forall o. CellRendererClass o => o -> CellRenderer
    toCellRenderer Maybe renderer
    mRenderer)

    -- | This function is supposed to be used in a 'widgetQueryTooltip' signal handler
    -- for this 'TreeView'. The @point@ value which is received in the
    -- signal handler should be passed to this function without modification. A
    -- return value of @Just iter@ indicates that there is a tree view row at the given
    -- coordinates (if @Just (x,y)@ is passed in, denoting a mouse position), resp.
    -- the cursor row (if @Nothing@ is passed in, denoting a keyboard request).
    --
    treeViewGetTooltipContext :: TreeViewClass self => self
      -> Maybe Point -- ^ @point@ - the coordinates of the mouse or @Nothing@
                     -- if a keyboard tooltip is to be generated
      -> IO (Maybe TreeIter) -- ^ @Just iter@ if a tooltip should be shown for that row
    treeViewGetTooltipContext :: forall self.
    TreeViewClass self =>
    self -> Maybe Point -> IO (Maybe TreeIter)
    treeViewGetTooltipContext self
    self (Just (Int
    x,Int
    y)) =
      (Ptr CInt -> IO (Maybe TreeIter)) -> IO (Maybe TreeIter)
    forall a b. Storable a => (Ptr a -> IO b) -> IO b
    alloca ((Ptr CInt -> IO (Maybe TreeIter)) -> IO (Maybe TreeIter))
    -> (Ptr CInt -> IO (Maybe TreeIter)) -> IO (Maybe TreeIter)
    forall a b. (a -> b) -> a -> b
    $ \Ptr CInt
    xPtr -> (Ptr CInt -> IO (Maybe TreeIter)) -> IO (Maybe TreeIter)
    forall a b. Storable a => (Ptr a -> IO b) -> IO b
    alloca ((Ptr CInt -> IO (Maybe TreeIter)) -> IO (Maybe TreeIter))
    -> (Ptr CInt -> IO (Maybe TreeIter)) -> IO (Maybe TreeIter)
    forall a b. (a -> b) -> a -> b
    $ \Ptr CInt
    yPtr -> (Ptr TreeIter -> IO CInt) -> IO (Maybe TreeIter)
    receiveTreeIter ((Ptr TreeIter -> IO CInt) -> IO (Maybe TreeIter))
    -> (Ptr TreeIter -> IO CInt) -> IO (Maybe TreeIter)
    forall a b. (a -> b) -> a -> b
    $
        (\(TreeView ForeignPtr TreeView
    arg1) Ptr CInt
    arg2 Ptr CInt
    arg3 CInt
    arg4 Ptr TreeModel
    arg5 Ptr NativeTreePath
    arg6 Ptr TreeIter
    arg7 -> ForeignPtr TreeView -> (Ptr TreeView -> IO CInt) -> IO CInt
    forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
    withForeignPtr ForeignPtr TreeView
    arg1 ((Ptr TreeView -> IO CInt) -> IO CInt)
    -> (Ptr TreeView -> IO CInt) -> IO CInt
    forall a b. (a -> b) -> a -> b
    $ \Ptr TreeView
    argPtr1 ->Ptr TreeView
    -> Ptr CInt
    -> Ptr CInt
    -> CInt
    -> Ptr TreeModel
    -> Ptr NativeTreePath
    -> Ptr TreeIter
    -> IO CInt
    gtk_tree_view_get_tooltip_context Ptr TreeView
    argPtr1 Ptr CInt
    arg2 Ptr CInt
    arg3 CInt
    arg4 Ptr TreeModel
    arg5 Ptr NativeTreePath
    arg6 Ptr TreeIter
    arg7) (self -> TreeView
    forall o. TreeViewClass o => o -> TreeView
    toTreeView self
    self)
        Ptr CInt
    xPtr Ptr CInt
    yPtr CInt
    0 Ptr TreeModel
    forall a. Ptr a
    nullPtr Ptr NativeTreePath
    forall a. Ptr a
    nullPtr
    treeViewGetTooltipContext self
    self Maybe Point
    Nothing =
      (Ptr TreeIter -> IO CInt) -> IO (Maybe TreeIter)
    receiveTreeIter ((Ptr TreeIter -> IO CInt) -> IO (Maybe TreeIter))
    -> (Ptr TreeIter -> IO CInt) -> IO (Maybe TreeIter)
    forall a b. (a -> b) -> a -> b
    $
        (\(TreeView ForeignPtr TreeView
    arg1) Ptr CInt
    arg2 Ptr CInt
    arg3 CInt
    arg4 Ptr TreeModel
    arg5 Ptr NativeTreePath
    arg6 Ptr TreeIter
    arg7 -> ForeignPtr TreeView -> (Ptr TreeView -> IO CInt) -> IO CInt
    forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
    withForeignPtr ForeignPtr TreeView
    arg1 ((Ptr TreeView -> IO CInt) -> IO CInt)
    -> (Ptr TreeView -> IO CInt) -> IO CInt
    forall a b. (a -> b) -> a -> b
    $ \Ptr TreeView
    argPtr1 ->Ptr TreeView
    -> Ptr CInt
    -> Ptr CInt
    -> CInt
    -> Ptr TreeModel
    -> Ptr NativeTreePath
    -> Ptr TreeIter
    -> IO CInt
    gtk_tree_view_get_tooltip_context Ptr TreeView
    argPtr1 Ptr CInt
    arg2 Ptr CInt
    arg3 CInt
    arg4 Ptr TreeModel
    arg5 Ptr NativeTreePath
    arg6 Ptr TreeIter
    arg7) (self -> TreeView
    forall o. TreeViewClass o => o -> TreeView
    toTreeView self
    self)
        Ptr CInt
    forall a. Ptr a
    nullPtr Ptr CInt
    forall a. Ptr a
    nullPtr CInt
    1 Ptr TreeModel
    forall a. Ptr a
    nullPtr Ptr NativeTreePath
    forall a. Ptr a
    nullPtr

    --------------------
    -- Attributes

    -- | The model for the tree view.
    --
    treeViewModel :: TreeViewClass self => Attr self (Maybe TreeModel)
    treeViewModel :: forall self. TreeViewClass self => Attr self (Maybe TreeModel)
    treeViewModel = (self -> IO (Maybe TreeModel))
    -> (self -> Maybe TreeModel -> IO ())
    -> ReadWriteAttr self (Maybe TreeModel) (Maybe TreeModel)
    forall o a b.
    (o -> IO a) -> (o -> b -> IO ()) -> ReadWriteAttr o a b
    newAttr
      self -> IO (Maybe TreeModel)
    forall self. TreeViewClass self => self -> IO (Maybe TreeModel)
    treeViewGetModel
      self -> Maybe TreeModel -> IO ()
    forall self model.
    (TreeViewClass self, TreeModelClass model) =>
    self -> Maybe model -> IO ()
    treeViewSetModel

    -- | Horizontal Adjustment for the widget.
    --
    treeViewHAdjustment :: TreeViewClass self => Attr self (Maybe Adjustment)
    treeViewHAdjustment :: forall self. TreeViewClass self => Attr self (Maybe Adjustment)
    treeViewHAdjustment = (self -> IO (Maybe Adjustment))
    -> (self -> Maybe Adjustment -> IO ())
    -> ReadWriteAttr self (Maybe Adjustment) (Maybe Adjustment)
    forall o a b.
    (o -> IO a) -> (o -> b -> IO ()) -> ReadWriteAttr o a b
    newAttr
      self -> IO (Maybe Adjustment)
    forall self. TreeViewClass self => self -> IO (Maybe Adjustment)
    treeViewGetHAdjustment
      self -> Maybe Adjustment -> IO ()
    forall self.
    TreeViewClass self =>
    self -> Maybe Adjustment -> IO ()
    treeViewSetHAdjustment

    -- | Vertical Adjustment for the widget.
    --
    treeViewVAdjustment :: TreeViewClass self => Attr self (Maybe Adjustment)
    treeViewVAdjustment :: forall self. TreeViewClass self => Attr self (Maybe Adjustment)
    treeViewVAdjustment = (self -> IO (Maybe Adjustment))
    -> (self -> Maybe Adjustment -> IO ())
    -> ReadWriteAttr self (Maybe Adjustment) (Maybe Adjustment)
    forall o a b.
    (o -> IO a) -> (o -> b -> IO ()) -> ReadWriteAttr o a b
    newAttr
      self -> IO (Maybe Adjustment)
    forall self. TreeViewClass self => self -> IO (Maybe Adjustment)
    treeViewGetVAdjustment
      self -> Maybe Adjustment -> IO ()
    forall self.
    TreeViewClass self =>
    self -> Maybe Adjustment -> IO ()
    treeViewSetVAdjustment

    -- | Show the column header buttons.
    --
    -- Default value: @True@
    --
    treeViewHeadersVisible :: TreeViewClass self => Attr self Bool
    treeViewHeadersVisible :: forall self. TreeViewClass self => Attr self Bool
    treeViewHeadersVisible = (self -> IO Bool)
    -> (self -> Bool -> IO ()) -> ReadWriteAttr self Bool Bool
    forall o a b.
    (o -> IO a) -> (o -> b -> IO ()) -> ReadWriteAttr o a b
    newAttr
      self -> IO Bool
    forall self. TreeViewClass self => self -> IO Bool
    treeViewGetHeadersVisible
      self -> Bool -> IO ()
    forall self. TreeViewClass self => self -> Bool -> IO ()
    treeViewSetHeadersVisible

    -- | Column headers respond to click events.
    --
    -- Default value: @False@
    --
    treeViewHeadersClickable :: TreeViewClass self => Attr self Bool
    treeViewHeadersClickable :: forall self. TreeViewClass self => Attr self Bool
    treeViewHeadersClickable = String -> Attr self Bool
    forall gobj. GObjectClass gobj => String -> Attr gobj Bool
    newAttrFromBoolProperty String
    "headers-clickable"

    -- | Set the column for the expander column.
    --
    treeViewExpanderColumn :: TreeViewClass self => ReadWriteAttr self TreeViewColumn (Maybe TreeViewColumn)
    treeViewExpanderColumn :: forall self.
    TreeViewClass self =>
    ReadWriteAttr self TreeViewColumn (Maybe TreeViewColumn)
    treeViewExpanderColumn = (self -> IO TreeViewColumn)
    -> (self -> Maybe TreeViewColumn -> IO ())
    -> ReadWriteAttr self TreeViewColumn (Maybe TreeViewColumn)
    forall o a b.
    (o -> IO a) -> (o -> b -> IO ()) -> ReadWriteAttr o a b
    newAttr
      self -> IO TreeViewColumn
    forall self. TreeViewClass self => self -> IO TreeViewColumn
    treeViewGetExpanderColumn
      self -> Maybe TreeViewColumn -> IO ()
    forall self.
    TreeViewClass self =>
    self -> Maybe TreeViewColumn -> IO ()
    treeViewSetExpanderColumn

    -- | View is reorderable.
    --
    -- Default value: @False@
    --
    treeViewReorderable :: TreeViewClass self => Attr self Bool
    treeViewReorderable :: forall self. TreeViewClass self => Attr self Bool
    treeViewReorderable = (self -> IO Bool)
    -> (self -> Bool -> IO ()) -> ReadWriteAttr self Bool Bool
    forall o a b.
    (o -> IO a) -> (o -> b -> IO ()) -> ReadWriteAttr o a b
    newAttr
      self -> IO Bool
    forall self. TreeViewClass self => self -> IO Bool
    treeViewGetReorderable
      self -> Bool -> IO ()
    forall self. TreeViewClass self => self -> Bool -> IO ()
    treeViewSetReorderable

    -- | Set a hint to the theme engine to draw rows in alternating colors.
    --
    -- Default value: @False@
    --
    treeViewRulesHint :: TreeViewClass self => Attr self Bool
    treeViewRulesHint :: forall self. TreeViewClass self => Attr self Bool
    treeViewRulesHint = (self -> IO Bool)
    -> (self -> Bool -> IO ()) -> ReadWriteAttr self Bool Bool
    forall o a b.
    (o -> IO a) -> (o -> b -> IO ()) -> ReadWriteAttr o a b
    newAttr
      self -> IO Bool
    forall self. TreeViewClass self => self -> IO Bool
    treeViewGetRulesHint
      self -> Bool -> IO ()
    forall self. TreeViewClass self => self -> Bool -> IO ()
    treeViewSetRulesHint

    -- | View allows user to search through columns interactively.
    --
    -- Default value: @True@
    --
    treeViewEnableSearch :: TreeViewClass self => Attr self Bool
    treeViewEnableSearch :: forall self. TreeViewClass self => Attr self Bool
    treeViewEnableSearch = (self -> IO Bool)
    -> (self -> Bool -> IO ()) -> ReadWriteAttr self Bool Bool
    forall o a b.
    (o -> IO a) -> (o -> b -> IO ()) -> ReadWriteAttr o a b
    newAttr
      self -> IO Bool
    forall self. TreeViewClass self => self -> IO Bool
    treeViewGetEnableSearch
      self -> Bool -> IO ()
    forall self. TreeViewClass self => self -> Bool -> IO ()
    treeViewSetEnableSearch

    -- %hash c:e732
    -- | Model column to search through when searching through code.
    --
    -- Default value: 'invalidColumnId'
    --
    treeViewSearchColumn :: (TreeViewClass self, GlibString string) => Attr self (ColumnId row string)
    treeViewSearchColumn :: forall self string row.
    (TreeViewClass self, GlibString string) =>
    Attr self (ColumnId row string)
    treeViewSearchColumn = (self -> IO (ColumnId row string))
    -> (self -> ColumnId row string -> IO ())
    -> ReadWriteAttr self (ColumnId row string) (ColumnId row string)
    forall o a b.
    (o -> IO a) -> (o -> b -> IO ()) -> ReadWriteAttr o a b
    newAttr
      self -> IO (ColumnId row string)
    forall self string row.
    (TreeViewClass self, GlibString string) =>
    self -> IO (ColumnId row string)
    treeViewGetSearchColumn
      self -> ColumnId row string -> IO ()
    forall self string row.
    (TreeViewClass self, GlibString string) =>
    self -> ColumnId row string -> IO ()
    treeViewSetSearchColumn

    -- %hash c:c7ff d:24d1
    -- | Setting the 'treeViewFixedHeightMode' property to @True@ speeds up 'TreeView'
    -- by assuming that all rows have the same height. Only enable this option if
    -- all rows are the same height. Please see 'treeViewSetFixedHeightMode' for
    -- more information on this option.
    --
    -- Default value: @False@
    --
    -- * Available since Gtk+ version 2.4
    --
    treeViewFixedHeightMode :: TreeViewClass self => Attr self Bool
    treeViewFixedHeightMode :: forall self. TreeViewClass self => Attr self Bool
    treeViewFixedHeightMode = String -> Attr self Bool
    forall gobj. GObjectClass gobj => String -> Attr gobj Bool
    newAttrFromBoolProperty String
    "fixed-height-mode"

    -- %hash c:2026 d:839a
    -- | Enables of disables the hover selection mode of @treeView@. Hover
    -- selection makes the selected row follow the pointer. Currently, this works
    -- only for the selection modes 'SelectionSingle' and 'SelectionBrowse'.
    --
    -- This mode is primarily intended for 'TreeView's in popups, e.g. in
    -- 'ComboBox' or 'EntryCompletion'.
    --
    -- Default value: @False@
    --
    -- * Available since Gtk+ version 2.6
    --
    treeViewHoverSelection :: TreeViewClass self => Attr self Bool
    treeViewHoverSelection :: forall self. TreeViewClass self => Attr self Bool
    treeViewHoverSelection = String -> Attr self Bool
    forall gobj. GObjectClass gobj => String -> Attr gobj Bool
    newAttrFromBoolProperty String
    "hover-selection"

    -- %hash c:c694 d:3f15
    -- | Enables of disables the hover expansion mode of @treeView@. Hover
    -- expansion makes rows expand or collapse if the pointer moves over them.
    --
    -- This mode is primarily intended for 'TreeView's in popups, e.g. in
    -- 'ComboBox' or 'EntryCompletion'.
    --
    -- Default value: @False@
    --
    -- * Available since Gtk+ version 2.6
    --
    treeViewHoverExpand :: TreeViewClass self => Attr self Bool
    treeViewHoverExpand :: forall self. TreeViewClass self => Attr self Bool
    treeViewHoverExpand = String -> Attr self Bool
    forall gobj. GObjectClass gobj => String -> Attr gobj Bool
    newAttrFromBoolProperty String
    "hover-expand"

    -- %hash c:b409 d:2ed2
    -- | View has expanders.
    --
    -- Default value: @True@
    --
    treeViewShowExpanders :: TreeViewClass self => Attr self Bool
    treeViewShowExpanders :: forall self. TreeViewClass self => Attr self Bool
    treeViewShowExpanders = String -> Attr self Bool
    forall gobj. GObjectClass gobj => String -> Attr gobj Bool
    newAttrFromBoolProperty String
    "show-expanders"

    -- %hash c:f0e5 d:9017
    -- | Extra indentation for each level.
    --
    -- Allowed values: >= 0
    --
    -- Default value: 0
    --
    treeViewLevelIndentation :: TreeViewClass self => Attr self Int
    treeViewLevelIndentation :: forall self. TreeViewClass self => Attr self Int
    treeViewLevelIndentation = String -> Attr self Int
    forall gobj. GObjectClass gobj => String -> Attr gobj Int
    newAttrFromIntProperty String
    "level-indentation"

    -- %hash c:a647 d:9e53
    -- | Whether to enable selection of multiple items by dragging the mouse
    -- pointer.
    --
    -- Default value: @False@
    --
    treeViewRubberBanding :: TreeViewClass self => Attr self Bool
    treeViewRubberBanding :: forall self. TreeViewClass self => Attr self Bool
    treeViewRubberBanding = String -> Attr self Bool
    forall gobj. GObjectClass gobj => String -> Attr gobj Bool
    newAttrFromBoolProperty String
    "rubber-banding"

    -- %hash c:e926 d:86a8
    -- | Whether grid lines should be drawn in the tree view.
    --
    -- Default value: 'TreeViewGridLinesNone'
    --
    treeViewEnableGridLines :: TreeViewClass self => Attr self TreeViewGridLines
    treeViewEnableGridLines :: forall self. TreeViewClass self => Attr self TreeViewGridLines
    treeViewEnableGridLines = String -> GType -> Attr self TreeViewGridLines
    forall gobj enum.
    (GObjectClass gobj, Enum enum) =>
    String -> GType -> Attr gobj enum
    newAttrFromEnumProperty String
    "enable-grid-lines"
                                GType
    gtk_tree_view_grid_lines_get_type
    {-# LINE 1795 "./Graphics/UI/Gtk/ModelView/TreeView.chs" #-}

    -- %hash c:a7eb d:4c53
    -- | Whether tree lines should be drawn in the tree view.
    --
    -- Default value: @False@
    --
    treeViewEnableTreeLines :: TreeViewClass self => Attr self Bool
    treeViewEnableTreeLines :: forall self. TreeViewClass self => Attr self Bool
    treeViewEnableTreeLines = String -> Attr self Bool
    forall gobj. GObjectClass gobj => String -> Attr gobj Bool
    newAttrFromBoolProperty String
    "enable-tree-lines"

    -- %hash c:688c d:cbcd
    -- | \'gridLines\' property. See 'treeViewGetGridLines' and
    -- 'treeViewSetGridLines'
    --
    treeViewGridLines :: TreeViewClass self => Attr self TreeViewGridLines
    treeViewGridLines :: forall self. TreeViewClass self => Attr self TreeViewGridLines
    treeViewGridLines = (self -> IO TreeViewGridLines)
    -> (self -> TreeViewGridLines -> IO ())
    -> ReadWriteAttr self TreeViewGridLines TreeViewGridLines
    forall o a b.
    (o -> IO a) -> (o -> b -> IO ()) -> ReadWriteAttr o a b
    newAttr
      self -> IO TreeViewGridLines
    forall self. TreeViewClass self => self -> IO TreeViewGridLines
    treeViewGetGridLines
      self -> TreeViewGridLines -> IO ()
    forall self.
    TreeViewClass self =>
    self -> TreeViewGridLines -> IO ()
    treeViewSetGridLines

    -- %hash c:9cbe d:2962
    -- | \'searchEntry\' property. See 'treeViewGetSearchEntry' and
    -- 'treeViewSetSearchEntry'
    --
    treeViewSearchEntry :: (TreeViewClass self, EntryClass entry) => ReadWriteAttr self (Maybe Entry) (Maybe entry)
    treeViewSearchEntry :: forall self entry.
    (TreeViewClass self, EntryClass entry) =>
    ReadWriteAttr self (Maybe Entry) (Maybe entry)
    treeViewSearchEntry = (self -> IO (Maybe Entry))
    -> (self -> Maybe entry -> IO ())
    -> ReadWriteAttr self (Maybe Entry) (Maybe entry)
    forall o a b.
    (o -> IO a) -> (o -> b -> IO ()) -> ReadWriteAttr o a b
    newAttr
      self -> IO (Maybe Entry)
    forall self. TreeViewClass self => self -> IO (Maybe Entry)
    treeViewGetSearchEntry
      self -> Maybe entry -> IO ()
    forall self entry.
    (TreeViewClass self, EntryClass entry) =>
    self -> Maybe entry -> IO ()
    treeViewSetSearchEntry

    -- | The column for which to show tooltips.
    --
    -- If you only plan to have simple (text-only) tooltips on full rows, you can
    -- use this function to have 'TreeView' handle these automatically for you.
    -- @column@ should be set to a column in model containing the tooltip texts,
    -- or @-1@ to disable this feature. When enabled, 'widgetHasTooltip' will be
    -- set to @True@ and this view will connect to the 'widgetQueryTooltip' signal
    -- handler.
    --
    -- Note that the signal handler sets the text as 'Markup',
    -- so \&, \<, etc have to be escaped in the text.
    --
    -- Default value: 'invalidColumnId'
    --
    treeViewTooltipColumn :: (TreeViewClass self, GlibString string) => Attr self (ColumnId row string)
    treeViewTooltipColumn :: forall self string row.
    (TreeViewClass self, GlibString string) =>
    Attr self (ColumnId row string)
    treeViewTooltipColumn = (self -> IO (ColumnId row string))
    -> (self -> ColumnId row string -> IO ())
    -> ReadWriteAttr self (ColumnId row string) (ColumnId row string)
    forall o a b.
    (o -> IO a) -> (o -> b -> IO ()) -> ReadWriteAttr o a b
    newAttr
      (\self
    self -> (CInt -> ColumnId row string)
    -> IO CInt -> IO (ColumnId row string)
    forall (m :: * -> *) a1 r. Monad m => (a1 -> r) -> m a1 -> m r
    liftM (Int -> ColumnId row string
    forall string row. GlibString string => Int -> ColumnId row string
    makeColumnIdString (Int -> ColumnId row string)
    -> (CInt -> Int) -> CInt -> ColumnId row string
    forall b c a. (b -> c) -> (a -> b) -> a -> c
    . CInt -> Int
    forall a b. (Integral a, Num b) => a -> b
    fromIntegral) (IO CInt -> IO (ColumnId row string))
    -> IO CInt -> IO (ColumnId row string)
    forall a b. (a -> b) -> a -> b
    $
      (\(TreeView ForeignPtr TreeView
    arg1) -> ForeignPtr TreeView -> (Ptr TreeView -> IO CInt) -> IO CInt
    forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
    withForeignPtr ForeignPtr TreeView
    arg1 ((Ptr TreeView -> IO CInt) -> IO CInt)
    -> (Ptr TreeView -> IO CInt) -> IO CInt
    forall a b. (a -> b) -> a -> b
    $ \Ptr TreeView
    argPtr1 ->Ptr TreeView -> IO CInt
    gtk_tree_view_get_tooltip_column Ptr TreeView
    argPtr1)
    {-# LINE 1844 "./Graphics/UI/Gtk/ModelView/TreeView.chs" #-}
        (toTreeView self)
      )
      (\self
    self ColumnId row string
    column ->
      (\(TreeView ForeignPtr TreeView
    arg1) CInt
    arg2 -> ForeignPtr TreeView -> (Ptr TreeView -> IO ()) -> IO ()
    forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
    withForeignPtr ForeignPtr TreeView
    arg1 ((Ptr TreeView -> IO ()) -> IO ())
    -> (Ptr TreeView -> IO ()) -> IO ()
    forall a b. (a -> b) -> a -> b
    $ \Ptr TreeView
    argPtr1 ->Ptr TreeView -> CInt -> IO ()
    gtk_tree_view_set_tooltip_column Ptr TreeView
    argPtr1 CInt
    arg2)
    {-# LINE 1848 "./Graphics/UI/Gtk/ModelView/TreeView.chs" #-}
        (toTreeView self)
        (Int -> CInt
    forall a b. (Integral a, Num b) => a -> b
    fromIntegral (ColumnId row string -> Int
    forall row ty. ColumnId row ty -> Int
    columnIdToNumber ColumnId row string
    column))
      )

    --------------------
    -- Signals

    -- %hash c:9fc5 d:3e66
    -- | The given row is about to be expanded (show its children nodes). Use this
    -- signal if you need to control the expandability of individual rows.
    --
    testExpandRow :: TreeViewClass self => Signal self (TreeIter -> TreePath -> IO Bool)
    testExpandRow :: forall self.
    TreeViewClass self =>
    Signal self (TreeIter -> TreePath -> IO Bool)
    testExpandRow = (Bool
     -> self
     -> (TreeIter -> TreePath -> IO Bool)
     -> IO (ConnectId self))
    -> Signal self (TreeIter -> TreePath -> IO Bool)
    forall object handler.
    (Bool -> object -> handler -> IO (ConnectId object))
    -> Signal object handler
    Signal (String
    -> (Ptr TreeIter -> IO TreeIter)
    -> (Ptr TreePath -> IO TreePath)
    -> Bool
    -> self
    -> (TreeIter -> TreePath -> IO Bool)
    -> IO (ConnectId self)
    forall obj a' a b' b.
    GObjectClass obj =>
    String
    -> (Ptr a' -> IO a)
    -> (Ptr b' -> IO b)
    -> Bool
    -> obj
    -> (a -> b -> IO Bool)
    -> IO (ConnectId obj)
    connect_BOXED_BOXED__BOOL String
    "test-expand-row" Ptr TreeIter -> IO TreeIter
    forall a. Storable a => Ptr a -> IO a
    peek Ptr TreePath -> IO TreePath
    readNTP)

    -- %hash c:20de d:96a3
    -- | The given row is about to be collapsed (hide its children nodes). Use
    -- this signal if you need to control the collapsibility of individual rows.
    --
    testCollapseRow :: TreeViewClass self => Signal self (TreeIter -> TreePath -> IO Bool)
    testCollapseRow :: forall self.
    TreeViewClass self =>
    Signal self (TreeIter -> TreePath -> IO Bool)
    testCollapseRow = (Bool
     -> self
     -> (TreeIter -> TreePath -> IO Bool)
     -> IO (ConnectId self))
    -> Signal self (TreeIter -> TreePath -> IO Bool)
    forall object handler.
    (Bool -> object -> handler -> IO (ConnectId object))
    -> Signal object handler
    Signal (String
    -> (Ptr TreeIter -> IO TreeIter)
    -> (Ptr TreePath -> IO TreePath)
    -> Bool
    -> self
    -> (TreeIter -> TreePath -> IO Bool)
    -> IO (ConnectId self)
    forall obj a' a b' b.
    GObjectClass obj =>
    String
    -> (Ptr a' -> IO a)
    -> (Ptr b' -> IO b)
    -> Bool
    -> obj
    -> (a -> b -> IO Bool)
    -> IO (ConnectId obj)
    connect_BOXED_BOXED__BOOL String
    "test-collapse-row" Ptr TreeIter -> IO TreeIter
    forall a. Storable a => Ptr a -> IO a
    peek Ptr TreePath -> IO TreePath
    readNTP)

    -- %hash c:16dc d:b113
    -- | The given row has been expanded (child nodes are shown).
    --
    rowExpanded :: TreeViewClass self => Signal self (TreeIter -> TreePath -> IO ())
    rowExpanded :: forall self.
    TreeViewClass self =>
    Signal self (TreeIter -> TreePath -> IO ())
    rowExpanded = (Bool
     -> self -> (TreeIter -> TreePath -> IO ()) -> IO (ConnectId self))
    -> Signal self (TreeIter -> TreePath -> IO ())
    forall object handler.
    (Bool -> object -> handler -> IO (ConnectId object))
    -> Signal object handler
    Signal (String
    -> (Ptr TreeIter -> IO TreeIter)
    -> (Ptr TreePath -> IO TreePath)
    -> Bool
    -> self
    -> (TreeIter -> TreePath -> IO ())
    -> IO (ConnectId self)
    forall obj a' a b' b.
    GObjectClass obj =>
    String
    -> (Ptr a' -> IO a)
    -> (Ptr b' -> IO b)
    -> Bool
    -> obj
    -> (a -> b -> IO ())
    -> IO (ConnectId obj)
    connect_BOXED_BOXED__NONE String
    "row-expanded" Ptr TreeIter -> IO TreeIter
    forall a. Storable a => Ptr a -> IO a
    peek Ptr TreePath -> IO TreePath
    readNTP)

    -- | A row was activated.
    --
    -- * Activation usually means the user has pressed return on a row.
    --
    rowActivated :: TreeViewClass self => Signal self (TreePath -> TreeViewColumn -> IO ())
    rowActivated :: forall self.
    TreeViewClass self =>
    Signal self (TreePath -> TreeViewColumn -> IO ())
    rowActivated = (Bool
     -> self
     -> (TreePath -> TreeViewColumn -> IO ())
     -> IO (ConnectId self))
    -> Signal self (TreePath -> TreeViewColumn -> IO ())
    forall object handler.
    (Bool -> object -> handler -> IO (ConnectId object))
    -> Signal object handler
    Signal (String
    -> (Ptr TreePath -> IO TreePath)
    -> Bool
    -> self
    -> (TreePath -> TreeViewColumn -> IO ())
    -> IO (ConnectId self)
    forall b' obj a' a.
    (GObjectClass b', GObjectClass obj) =>
    String
    -> (Ptr a' -> IO a)
    -> Bool
    -> obj
    -> (a -> b' -> IO ())
    -> IO (ConnectId obj)
    connect_BOXED_OBJECT__NONE String
    "row-activated" Ptr TreePath -> IO TreePath
    readNTP)

    -- %hash c:9ee6 d:325e
    -- | The given row has been collapsed (child nodes are hidden).
    --
    rowCollapsed :: TreeViewClass self => Signal self (TreeIter -> TreePath -> IO ())
    rowCollapsed :: forall self.
    TreeViewClass self =>
    Signal self (TreeIter -> TreePath -> IO ())
    rowCollapsed = (Bool
     -> self -> (TreeIter -> TreePath -> IO ()) -> IO (ConnectId self))
    -> Signal self (TreeIter -> TreePath -> IO ())
    forall object handler.
    (Bool -> object -> handler -> IO (ConnectId object))
    -> Signal object handler
    Signal (String
    -> (Ptr TreeIter -> IO TreeIter)
    -> (Ptr TreePath -> IO TreePath)
    -> Bool
    -> self
    -> (TreeIter -> TreePath -> IO ())
    -> IO (ConnectId self)
    forall obj a' a b' b.
    GObjectClass obj =>
    String
    -> (Ptr a' -> IO a)
    -> (Ptr b' -> IO b)
    -> Bool
    -> obj
    -> (a -> b -> IO ())
    -> IO (ConnectId obj)
    connect_BOXED_BOXED__NONE String
    "row-collapsed" Ptr TreeIter -> IO TreeIter
    forall a. Storable a => Ptr a -> IO a
    peek Ptr TreePath -> IO TreePath
    readNTP)

    -- %hash c:4350 d:4f94
    -- | The number of columns of the treeview has changed.
    --
    columnsChanged :: TreeViewClass self => Signal self (IO ())
    columnsChanged :: forall self. TreeViewClass self => Signal self (IO ())
    columnsChanged = (Bool -> self -> IO () -> IO (ConnectId self))
    -> Signal self (IO ())
    forall object handler.
    (Bool -> object -> handler -> IO (ConnectId object))
    -> Signal object handler
    Signal (String -> Bool -> self -> IO () -> IO (ConnectId self)
    forall obj.
    GObjectClass obj =>
    String -> Bool -> obj -> IO () -> IO (ConnectId obj)
    connect_NONE__NONE String
    "columns-changed")

    -- %hash c:6487 d:5b57
    -- | The position of the cursor (focused cell) has changed.
    --
    cursorChanged :: TreeViewClass self => Signal self (IO ())
    cursorChanged :: forall self. TreeViewClass self => Signal self (IO ())
    cursorChanged = (Bool -> self -> IO () -> IO (ConnectId self))
    -> Signal self (IO ())
    forall object handler.
    (Bool -> object -> handler -> IO (ConnectId object))
    -> Signal object handler
    Signal (String -> Bool -> self -> IO () -> IO (ConnectId self)
    forall obj.
    GObjectClass obj =>
    String -> Bool -> obj -> IO () -> IO (ConnectId obj)
    connect_NONE__NONE String
    "cursor-changed")

    --------------------
    -- Deprecated Signals

    foreign import ccall safe "gtk_tree_view_new"
      gtk_tree_view_new :: (IO (Ptr Widget))

    foreign import ccall safe "gtk_tree_view_new_with_model"
      gtk_tree_view_new_with_model :: ((Ptr TreeModel) -> (IO (Ptr Widget)))

    foreign import ccall unsafe "gtk_tree_view_get_model"
      gtk_tree_view_get_model :: ((Ptr TreeView) -> (IO (Ptr TreeModel)))

    foreign import ccall safe "gtk_tree_view_set_model"
      gtk_tree_view_set_model :: ((Ptr TreeView) -> ((Ptr TreeModel) -> (IO ())))

    foreign import ccall unsafe "gtk_tree_view_get_selection"
      gtk_tree_view_get_selection :: ((Ptr TreeView) -> (IO (Ptr TreeSelection)))

    foreign import ccall unsafe "gtk_tree_view_get_hadjustment"
      gtk_tree_view_get_hadjustment :: ((Ptr TreeView) -> (IO (Ptr Adjustment)))

    foreign import ccall safe "gtk_tree_view_set_hadjustment"
      gtk_tree_view_set_hadjustment :: ((Ptr TreeView) -> ((Ptr Adjustment) -> (IO ())))

    foreign import ccall unsafe "gtk_tree_view_get_vadjustment"
      gtk_tree_view_get_vadjustment :: ((Ptr TreeView) -> (IO (Ptr Adjustment)))

    foreign import ccall safe "gtk_tree_view_set_vadjustment"
      gtk_tree_view_set_vadjustment :: ((Ptr TreeView) -> ((Ptr Adjustment) -> (IO ())))

    foreign import ccall unsafe "gtk_tree_view_get_headers_visible"
      gtk_tree_view_get_headers_visible :: ((Ptr TreeView) -> (IO CInt))

    foreign import ccall safe "gtk_tree_view_set_headers_visible"
      gtk_tree_view_set_headers_visible :: ((Ptr TreeView) -> (CInt -> (IO ())))

    foreign import ccall safe "gtk_tree_view_columns_autosize"
      gtk_tree_view_columns_autosize :: ((Ptr TreeView) -> (IO ()))

    foreign import ccall safe "gtk_tree_view_set_headers_clickable"
      gtk_tree_view_set_headers_clickable :: ((Ptr TreeView) -> (CInt -> (IO ())))

    foreign import ccall unsafe "gtk_tree_view_get_rules_hint"
      gtk_tree_view_get_rules_hint :: ((Ptr TreeView) -> (IO CInt))

    foreign import ccall safe "gtk_tree_view_set_rules_hint"
      gtk_tree_view_set_rules_hint :: ((Ptr TreeView) -> (CInt -> (IO ())))

    foreign import ccall safe "gtk_tree_view_append_column"
      gtk_tree_view_append_column :: ((Ptr TreeView) -> ((Ptr TreeViewColumn) -> (IO CInt)))

    foreign import ccall safe "gtk_tree_view_remove_column"
      gtk_tree_view_remove_column :: ((Ptr TreeView) -> ((Ptr TreeViewColumn) -> (IO CInt)))

    foreign import ccall safe "gtk_tree_view_insert_column"
      gtk_tree_view_insert_column :: ((Ptr TreeView) -> ((Ptr TreeViewColumn) -> (CInt -> (IO CInt))))

    foreign import ccall unsafe "gtk_tree_view_get_column"
      gtk_tree_view_get_column :: ((Ptr TreeView) -> (CInt -> (IO (Ptr TreeViewColumn))))

    foreign import ccall unsafe "gtk_tree_view_get_columns"
      gtk_tree_view_get_columns :: ((Ptr TreeView) -> (IO (Ptr ())))

    foreign import ccall safe "gtk_tree_view_move_column_after"
      gtk_tree_view_move_column_after :: ((Ptr TreeView) -> ((Ptr TreeViewColumn) -> ((Ptr TreeViewColumn) -> (IO ()))))

    foreign import ccall unsafe "gtk_tree_view_set_expander_column"
      gtk_tree_view_set_expander_column :: ((Ptr TreeView) -> ((Ptr TreeViewColumn) -> (IO ())))

    foreign import ccall unsafe "gtk_tree_view_get_expander_column"
      gtk_tree_view_get_expander_column :: ((Ptr TreeView) -> (IO (Ptr TreeViewColumn)))

    foreign import ccall safe "gtk_tree_view_set_column_drag_function"
      gtk_tree_view_set_column_drag_function :: ((Ptr TreeView) -> ((FunPtr ((Ptr TreeView) -> ((Ptr TreeViewColumn) -> ((Ptr TreeViewColumn) -> ((Ptr TreeViewColumn) -> ((Ptr ()) -> (IO CInt))))))) -> ((Ptr ()) -> ((FunPtr ((Ptr ()) -> (IO ()))) -> (IO ())))))

    foreign import ccall safe "gtk_tree_view_scroll_to_point"
      gtk_tree_view_scroll_to_point :: ((Ptr TreeView) -> (CInt -> (CInt -> (IO ()))))

    foreign import ccall safe "gtk_tree_view_scroll_to_cell"
      gtk_tree_view_scroll_to_cell :: ((Ptr TreeView) -> ((Ptr NativeTreePath) -> ((Ptr TreeViewColumn) -> (CInt -> (CFloat -> (CFloat -> (IO ())))))))

    foreign import ccall safe "gtk_tree_view_set_cursor"
      gtk_tree_view_set_cursor :: ((Ptr TreeView) -> ((Ptr NativeTreePath) -> ((Ptr TreeViewColumn) -> (CInt -> (IO ())))))

    foreign import ccall safe "gtk_tree_view_set_cursor_on_cell"
      gtk_tree_view_set_cursor_on_cell :: ((Ptr TreeView) -> ((Ptr NativeTreePath) -> ((Ptr TreeViewColumn) -> ((Ptr CellRenderer) -> (CInt -> (IO ()))))))

    foreign import ccall unsafe "gtk_tree_view_get_cursor"
      gtk_tree_view_get_cursor :: ((Ptr TreeView) -> ((Ptr NativeTreePath) -> ((Ptr TreeViewColumn) -> (IO ()))))

    foreign import ccall safe "gtk_tree_view_row_activated"
      gtk_tree_view_row_activated :: ((Ptr TreeView) -> ((Ptr NativeTreePath) -> ((Ptr TreeViewColumn) -> (IO ()))))

    foreign import ccall safe "gtk_tree_view_expand_all"
      gtk_tree_view_expand_all :: ((Ptr TreeView) -> (IO ()))

    foreign import ccall safe "gtk_tree_view_collapse_all"
      gtk_tree_view_collapse_all :: ((Ptr TreeView) -> (IO ()))

    foreign import ccall safe "gtk_tree_view_expand_to_path"
      gtk_tree_view_expand_to_path :: ((Ptr TreeView) -> ((Ptr NativeTreePath) -> (IO ())))

    foreign import ccall safe "gtk_tree_view_expand_row"
      gtk_tree_view_expand_row :: ((Ptr TreeView) -> ((Ptr NativeTreePath) -> (CInt -> (IO CInt))))

    foreign import ccall safe "gtk_tree_view_collapse_row"
      gtk_tree_view_collapse_row :: ((Ptr TreeView) -> ((Ptr NativeTreePath) -> (IO CInt)))

    foreign import ccall safe "gtk_tree_view_map_expanded_rows"
      gtk_tree_view_map_expanded_rows :: ((Ptr TreeView) -> ((FunPtr ((Ptr TreeView) -> ((Ptr NativeTreePath) -> ((Ptr ()) -> (IO ()))))) -> ((Ptr ()) -> (IO ()))))

    foreign import ccall unsafe "gtk_tree_view_row_expanded"
      gtk_tree_view_row_expanded :: ((Ptr TreeView) -> ((Ptr NativeTreePath) -> (IO CInt)))

    foreign import ccall unsafe "gtk_tree_view_get_reorderable"
      gtk_tree_view_get_reorderable :: ((Ptr TreeView) -> (IO CInt))

    foreign import ccall safe "gtk_tree_view_set_reorderable"
      gtk_tree_view_set_reorderable :: ((Ptr TreeView) -> (CInt -> (IO ())))

    foreign import ccall unsafe "gtk_tree_view_get_path_at_pos"
      gtk_tree_view_get_path_at_pos :: ((Ptr TreeView) -> (CInt -> (CInt -> ((Ptr NativeTreePath) -> ((Ptr TreeViewColumn) -> ((Ptr CInt) -> ((Ptr CInt) -> (IO CInt))))))))

    foreign import ccall unsafe "gtk_tree_view_get_cell_area"
      gtk_tree_view_get_cell_area :: ((Ptr TreeView) -> ((Ptr NativeTreePath) -> ((Ptr TreeViewColumn) -> ((Ptr ()) -> (IO ())))))

    foreign import ccall unsafe "gtk_tree_view_get_background_area"
      gtk_tree_view_get_background_area :: ((Ptr TreeView) -> ((Ptr NativeTreePath) -> ((Ptr TreeViewColumn) -> ((Ptr ()) -> (IO ())))))

    foreign import ccall unsafe "gtk_tree_view_get_visible_rect"
      gtk_tree_view_get_visible_rect :: ((Ptr TreeView) -> ((Ptr ()) -> (IO ())))

    foreign import ccall unsafe "gtk_tree_view_convert_bin_window_to_tree_coords"
      gtk_tree_view_convert_bin_window_to_tree_coords :: ((Ptr TreeView) -> (CInt -> (CInt -> ((Ptr CInt) -> ((Ptr CInt) -> (IO ()))))))

    foreign import ccall unsafe "gtk_tree_view_convert_bin_window_to_widget_coords"
      gtk_tree_view_convert_bin_window_to_widget_coords :: ((Ptr TreeView) -> (CInt -> (CInt -> ((Ptr CInt) -> ((Ptr CInt) -> (IO ()))))))

    foreign import ccall unsafe "gtk_tree_view_convert_tree_to_bin_window_coords"
      gtk_tree_view_convert_tree_to_bin_window_coords :: ((Ptr TreeView) -> (CInt -> (CInt -> ((Ptr CInt) -> ((Ptr CInt) -> (IO ()))))))

    foreign import ccall unsafe "gtk_tree_view_convert_tree_to_widget_coords"
      gtk_tree_view_convert_tree_to_widget_coords :: ((Ptr TreeView) -> (CInt -> (CInt -> ((Ptr CInt) -> ((Ptr CInt) -> (IO ()))))))

    foreign import ccall unsafe "gtk_tree_view_convert_widget_to_bin_window_coords"
      gtk_tree_view_convert_widget_to_bin_window_coords :: ((Ptr TreeView) -> (CInt -> (CInt -> ((Ptr CInt) -> ((Ptr CInt) -> (IO ()))))))

    foreign import ccall unsafe "gtk_tree_view_convert_widget_to_tree_coords"
      gtk_tree_view_convert_widget_to_tree_coords :: ((Ptr TreeView) -> (CInt -> (CInt -> ((Ptr CInt) -> ((Ptr CInt) -> (IO ()))))))

    foreign import ccall unsafe "gtk_tree_view_get_enable_search"
      gtk_tree_view_get_enable_search :: ((Ptr TreeView) -> (IO CInt))

    foreign import ccall safe "gtk_tree_view_set_enable_search"
      gtk_tree_view_set_enable_search :: ((Ptr TreeView) -> (CInt -> (IO ())))

    foreign import ccall unsafe "gtk_tree_view_get_search_column"
      gtk_tree_view_get_search_column :: ((Ptr TreeView) -> (IO CInt))

    foreign import ccall safe "gtk_tree_view_set_search_column"
      gtk_tree_view_set_search_column :: ((Ptr TreeView) -> (CInt -> (IO ())))

    foreign import ccall safe "gtk_tree_view_set_search_equal_func"
      gtk_tree_view_set_search_equal_func :: ((Ptr TreeView) -> ((FunPtr ((Ptr TreeModel) -> (CInt -> ((Ptr CChar) -> ((Ptr TreeIter) -> ((Ptr ()) -> (IO CInt))))))) -> ((Ptr ()) -> ((FunPtr ((Ptr ()) -> (IO ()))) -> (IO ())))))

    foreign import ccall safe "gtk_tree_view_get_fixed_height_mode"
      gtk_tree_view_get_fixed_height_mode :: ((Ptr TreeView) -> (IO CInt))

    foreign import ccall safe "gtk_tree_view_set_fixed_height_mode"
      gtk_tree_view_set_fixed_height_mode :: ((Ptr TreeView) -> (CInt -> (IO ())))

    foreign import ccall safe "gtk_tree_view_get_hover_selection"
      gtk_tree_view_get_hover_selection :: ((Ptr TreeView) -> (IO CInt))

    foreign import ccall safe "gtk_tree_view_set_hover_selection"
      gtk_tree_view_set_hover_selection :: ((Ptr TreeView) -> (CInt -> (IO ())))

    foreign import ccall safe "gtk_tree_view_get_hover_expand"
      gtk_tree_view_get_hover_expand :: ((Ptr TreeView) -> (IO CInt))

    foreign import ccall safe "gtk_tree_view_set_hover_expand"
      gtk_tree_view_set_hover_expand :: ((Ptr TreeView) -> (CInt -> (IO ())))

    foreign import ccall safe "gtk_tree_view_get_headers_clickable"
      gtk_tree_view_get_headers_clickable :: ((Ptr TreeView) -> (IO CInt))

    foreign import ccall safe "gtk_tree_view_get_visible_range"
      gtk_tree_view_get_visible_range :: ((Ptr TreeView) -> ((Ptr NativeTreePath) -> ((Ptr NativeTreePath) -> (IO CInt))))

    foreign import ccall unsafe "gtk_target_table_new_from_list"
      gtk_target_table_new_from_list :: ((Ptr TargetList) -> ((Ptr CInt) -> (IO (Ptr ()))))

    foreign import ccall safe "gtk_tree_view_enable_model_drag_dest"
      gtk_tree_view_enable_model_drag_dest :: ((Ptr TreeView) -> ((Ptr ()) -> (CInt -> (CInt -> (IO ())))))

    foreign import ccall unsafe "gtk_target_table_free"
      gtk_target_table_free :: ((Ptr ()) -> (CInt -> (IO ())))

    foreign import ccall safe "gtk_tree_view_enable_model_drag_source"
      gtk_tree_view_enable_model_drag_source :: ((Ptr TreeView) -> (CInt -> ((Ptr ()) -> (CInt -> (CInt -> (IO ()))))))

    foreign import ccall safe "gtk_tree_view_unset_rows_drag_source"
      gtk_tree_view_unset_rows_drag_source :: ((Ptr TreeView) -> (IO ()))

    foreign import ccall safe "gtk_tree_view_unset_rows_drag_dest"
      gtk_tree_view_unset_rows_drag_dest :: ((Ptr TreeView) -> (IO ()))

    foreign import ccall safe "gtk_tree_view_get_search_entry"
      gtk_tree_view_get_search_entry :: ((Ptr TreeView) -> (IO (Ptr Entry)))

    foreign import ccall safe "gtk_tree_view_set_search_entry"
      gtk_tree_view_set_search_entry :: ((Ptr TreeView) -> ((Ptr Entry) -> (IO ())))

    foreign import ccall safe "gtk_tree_view_set_row_separator_func"
      gtk_tree_view_set_row_separator_func :: ((Ptr TreeView) -> ((FunPtr ((Ptr TreeModel) -> ((Ptr TreeIter) -> ((Ptr ()) -> (IO CInt))))) -> ((Ptr ()) -> ((FunPtr ((Ptr ()) -> (IO ()))) -> (IO ())))))

    foreign import ccall safe "gtk_tree_view_get_rubber_banding"
      gtk_tree_view_get_rubber_banding :: ((Ptr TreeView) -> (IO CInt))

    foreign import ccall safe "gtk_tree_view_set_rubber_banding"
      gtk_tree_view_set_rubber_banding :: ((Ptr TreeView) -> (CInt -> (IO ())))

    foreign import ccall safe "gtk_tree_view_get_enable_tree_lines"
      gtk_tree_view_get_enable_tree_lines :: ((Ptr TreeView) -> (IO CInt))

    foreign import ccall safe "gtk_tree_view_set_enable_tree_lines"
      gtk_tree_view_set_enable_tree_lines :: ((Ptr TreeView) -> (CInt -> (IO ())))

    foreign import ccall safe "gtk_tree_view_get_grid_lines"
      gtk_tree_view_get_grid_lines :: ((Ptr TreeView) -> (IO CInt))

    foreign import ccall safe "gtk_tree_view_set_grid_lines"
      gtk_tree_view_set_grid_lines :: ((Ptr TreeView) -> (CInt -> (IO ())))

    foreign import ccall safe "gtk_tree_view_set_tooltip_row"
      gtk_tree_view_set_tooltip_row :: ((Ptr TreeView) -> ((Ptr Tooltip) -> ((Ptr NativeTreePath) -> (IO ()))))

    foreign import ccall safe "gtk_tree_view_set_tooltip_cell"
      gtk_tree_view_set_tooltip_cell :: ((Ptr TreeView) -> ((Ptr Tooltip) -> ((Ptr NativeTreePath) -> ((Ptr TreeViewColumn) -> ((Ptr CellRenderer) -> (IO ()))))))

    foreign import ccall safe "gtk_tree_view_get_tooltip_context"
      gtk_tree_view_get_tooltip_context :: ((Ptr TreeView) -> ((Ptr CInt) -> ((Ptr CInt) -> (CInt -> ((Ptr TreeModel) -> ((Ptr NativeTreePath) -> ((Ptr TreeIter) -> (IO CInt))))))))

    foreign import ccall unsafe "gtk_tree_view_grid_lines_get_type"
      gtk_tree_view_grid_lines_get_type :: CULong

    foreign import ccall unsafe "gtk_tree_view_get_tooltip_column"
      gtk_tree_view_get_tooltip_column :: ((Ptr TreeView) -> (IO CInt))

    foreign import ccall safe "gtk_tree_view_set_tooltip_column"
      gtk_tree_view_set_tooltip_column :: ((Ptr TreeView) -> (CInt -> (IO ())))