    {-# LINE 2 "./Graphics/UI/Gtk/MenuComboToolbar/ComboBox.chs" #-}
    -- -*-haskell-*-
    -- GIMP Toolkit (GTK) Widget ComboBox
    --
    -- Author : Duncan Coutts
    --
    -- Created: 25 April 2004
    --
    -- Copyright (C) 2004-2007 Duncan Coutts, 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.
    --
    -- |
    -- Maintainer : gtk2hs-users@lists.sourceforge.net
    -- Stability : provisional
    -- Portability : portable (depends on GHC)
    --
    -- A widget used to choose from a list of items.
    --
    -- * Module available since Gtk+ version 2.4
    --
    module Graphics.UI.Gtk.MenuComboToolbar.ComboBox (

    -- * Detail
    --
    -- | A 'ComboBox' is a widget that allows the user to choose from a list of
    -- valid choices. The 'ComboBox' displays the selected choice. When activated,
    -- the 'ComboBox' displays a popup which allows the user to make a new choice.
    -- The style in which the selected value is displayed, and the style of the
    -- popup is determined by the current theme. It may be similar to a
    -- 'OptionMenu', or similar to a Windows-style combo box.
    --
    -- Unlike its predecessors 'Combo' and 'OptionMenu', the 'ComboBox' uses the
    -- model-view pattern; the list of valid choices is specified in the form of a
    -- tree model, and the display of the choices can be adapted to the data in
    -- the model by using cell renderers, as you would in a tree view. This is
    -- possible since 'ComboBox' implements the 'CellLayout' interface. The tree
    -- model holding the valid choices is not restricted to a flat list, it can be
    -- a real tree, and the popup will reflect the tree structure.
    --
    -- In addition to the general model-view API, 'ComboBox' offers the function
    -- 'comboBoxNewText' which creates a text-only combo box.

    -- * Class Hierarchy
    --
    -- |
    -- @
    -- | 'GObject'
    -- | +----'Object'
    -- | +----'Widget'
    -- | +----'Container'
    -- | +----'Bin'
    -- | +----ComboBox
    -- | +----'ComboBoxEntry'
    -- @

    -- * Types
      ComboBox,
      ComboBoxClass,
      castToComboBox, gTypeComboBox,
      toComboBox,
      ComboBoxText,

    -- * Constructors
      comboBoxNew,

      comboBoxNewWithEntry,

      comboBoxNewText,
      comboBoxNewWithModel,

      comboBoxNewWithModelAndEntry,

    -- * Methods

    -- ** Simple Text API
      comboBoxSetModelText,
      comboBoxGetModelText,
      comboBoxAppendText,
      comboBoxInsertText,
      comboBoxPrependText,
      comboBoxRemoveText,
      comboBoxGetActiveText,

    -- ** Standard API

      comboBoxGetWrapWidth,

      comboBoxSetWrapWidth,

      comboBoxGetRowSpanColumn,

      comboBoxSetRowSpanColumn,

      comboBoxGetColumnSpanColumn,

      comboBoxSetColumnSpanColumn,
      comboBoxGetActive,
      comboBoxSetActive,
      comboBoxGetActiveIter,
      comboBoxSetActiveIter,
      comboBoxGetModel,
      comboBoxSetModel,
      comboBoxPopup,
      comboBoxPopdown,

      comboBoxSetRowSeparatorSource,
      comboBoxSetAddTearoffs,
      comboBoxGetAddTearoffs,

      comboBoxSetTitle,
      comboBoxGetTitle,

      comboBoxSetFocusOnClick,
      comboBoxGetFocusOnClick,

    -- * Attributes
      comboBoxModel,
      comboBoxWrapWidth,

      comboBoxRowSpanColumn,
      comboBoxColumnSpanColumn,

      comboBoxActive,

      comboBoxAddTearoffs,
      comboBoxHasFrame,
      comboBoxFocusOnClick,

      comboBoxTearoffTitle,
      comboBoxPopupShown,
      comboBoxTitle,

      comboBoxGetHasEntry,
      comboBoxSetEntryTextColumn,
      comboBoxGetEntryTextColumn,

    -- * Signals
      changed,

    -- * Deprecated

      ) where

    import Control.Monad (liftM)
    import Data.Text (Text)

    import System.Glib.FFI
    import System.Glib.UTFString
    import System.Glib.Attributes
    import System.Glib.Properties
    import Graphics.UI.Gtk.Abstract.Object (makeNewObject)
    import Graphics.UI.Gtk.Types hiding (ListStore)
    import Graphics.UI.Gtk.ModelView.Types (receiveTreeIter,
                                                comboQuark)
    import Graphics.UI.Gtk.Signals
    {-# LINE 176 "./Graphics/UI/Gtk/MenuComboToolbar/ComboBox.chs" #-}
    import Graphics.UI.Gtk.ModelView.CustomStore
    {-# LINE 177 "./Graphics/UI/Gtk/MenuComboToolbar/ComboBox.chs" #-}
    import Graphics.UI.Gtk.ModelView.TreeModel
    {-# LINE 178 "./Graphics/UI/Gtk/MenuComboToolbar/ComboBox.chs" #-}
    import Graphics.UI.Gtk.ModelView.ListStore ( ListStore, listStoreNew,
      listStoreInsert, listStorePrepend, listStoreAppend, listStoreRemove,
      listStoreSafeGetValue )
    import Graphics.UI.Gtk.ModelView.CellLayout ( cellLayoutSetAttributes,
                                                  cellLayoutPackStart, cellLayoutClear )
    import Graphics.UI.Gtk.ModelView.CellRendererText ( cellRendererTextNew,
                                                        cellText)

    {-# LINE 186 "./Graphics/UI/Gtk/MenuComboToolbar/ComboBox.chs" #-}

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

    -- | Creates a new empty 'ComboBox'.
    --
    comboBoxNew :: IO ComboBox
    comboBoxNew :: IO ComboBox
    comboBoxNew =
      (ForeignPtr ComboBox -> ComboBox, FinalizerPtr ComboBox)
    -> IO (Ptr ComboBox) -> IO ComboBox
    forall obj.
    GObjectClass obj =>
    (ForeignPtr obj -> obj, FinalizerPtr obj) -> IO (Ptr obj) -> IO obj
    makeNewObject (ForeignPtr ComboBox -> ComboBox, FinalizerPtr ComboBox)
    forall {a}. (ForeignPtr ComboBox -> ComboBox, FinalizerPtr a)
    mkComboBox (IO (Ptr ComboBox) -> IO ComboBox)
    -> IO (Ptr ComboBox) -> IO ComboBox
    forall a b. (a -> b) -> a -> b
    $
      (Ptr Widget -> Ptr ComboBox)
    -> IO (Ptr Widget) -> IO (Ptr ComboBox)
    forall (m :: * -> *) a1 r. Monad m => (a1 -> r) -> m a1 -> m r
    liftM (Ptr Widget -> Ptr ComboBox
    forall a b. Ptr a -> Ptr b
    castPtr :: Ptr Widget -> Ptr ComboBox) (IO (Ptr Widget) -> IO (Ptr ComboBox))
    -> IO (Ptr Widget) -> IO (Ptr ComboBox)
    forall a b. (a -> b) -> a -> b
    $
      IO (Ptr Widget)
    gtk_combo_box_new
    {-# LINE 198 "./Graphics/UI/Gtk/MenuComboToolbar/ComboBox.chs" #-}

    -- | Creates a new empty 'ComboBox' with an entry.
    --
    -- * Available since Gtk+ version 2.24
    --
    comboBoxNewWithEntry :: IO ComboBox
    comboBoxNewWithEntry :: IO ComboBox
    comboBoxNewWithEntry =
      (ForeignPtr ComboBox -> ComboBox, FinalizerPtr ComboBox)
    -> IO (Ptr ComboBox) -> IO ComboBox
    forall obj.
    GObjectClass obj =>
    (ForeignPtr obj -> obj, FinalizerPtr obj) -> IO (Ptr obj) -> IO obj
    makeNewObject (ForeignPtr ComboBox -> ComboBox, FinalizerPtr ComboBox)
    forall {a}. (ForeignPtr ComboBox -> ComboBox, FinalizerPtr a)
    mkComboBox (IO (Ptr ComboBox) -> IO ComboBox)
    -> IO (Ptr ComboBox) -> IO ComboBox
    forall a b. (a -> b) -> a -> b
    $
      (Ptr Widget -> Ptr ComboBox)
    -> IO (Ptr Widget) -> IO (Ptr ComboBox)
    forall (m :: * -> *) a1 r. Monad m => (a1 -> r) -> m a1 -> m r
    liftM (Ptr Widget -> Ptr ComboBox
    forall a b. Ptr a -> Ptr b
    castPtr :: Ptr Widget -> Ptr ComboBox) (IO (Ptr Widget) -> IO (Ptr ComboBox))
    -> IO (Ptr Widget) -> IO (Ptr ComboBox)
    forall a b. (a -> b) -> a -> b
    $
      IO (Ptr Widget)
    gtk_combo_box_new_with_entry
    {-# LINE 209 "./Graphics/UI/Gtk/MenuComboToolbar/ComboBox.chs" #-}

    -- | Convenience function which constructs a new text combo box that is a
    -- 'ComboBox' just displaying strings. This function internally calls
    -- 'comboBoxSetModelText' after creating a new combo box.
    --
    comboBoxNewText :: IO ComboBox
    comboBoxNewText :: IO ComboBox
    comboBoxNewText = do
      combo <- IO ComboBox
    comboBoxNew
      comboBoxSetModelText combo
      return combo

    -- %hash c:2570
    -- | Creates a new 'ComboBox' with the model initialized to @model@.
    --
    comboBoxNewWithModel :: TreeModelClass model =>
        model -- ^ @model@ - A 'TreeModel'.
     -> IO ComboBox
    comboBoxNewWithModel :: forall model. TreeModelClass model => model -> IO ComboBox
    comboBoxNewWithModel model
    model =
      (ForeignPtr ComboBox -> ComboBox, FinalizerPtr ComboBox)
    -> IO (Ptr ComboBox) -> IO ComboBox
    forall obj.
    GObjectClass obj =>
    (ForeignPtr obj -> obj, FinalizerPtr obj) -> IO (Ptr obj) -> IO obj
    makeNewObject (ForeignPtr ComboBox -> ComboBox, FinalizerPtr ComboBox)
    forall {a}. (ForeignPtr ComboBox -> ComboBox, FinalizerPtr a)
    mkComboBox (IO (Ptr ComboBox) -> IO ComboBox)
    -> IO (Ptr ComboBox) -> IO ComboBox
    forall a b. (a -> b) -> a -> b
    $
      (Ptr Widget -> Ptr ComboBox)
    -> IO (Ptr Widget) -> IO (Ptr ComboBox)
    forall (m :: * -> *) a1 r. Monad m => (a1 -> r) -> m a1 -> m r
    liftM (Ptr Widget -> Ptr ComboBox
    forall a b. Ptr a -> Ptr b
    castPtr :: Ptr Widget -> Ptr ComboBox) (IO (Ptr Widget) -> IO (Ptr ComboBox))
    -> IO (Ptr Widget) -> IO (Ptr ComboBox)
    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_combo_box_new_with_model Ptr TreeModel
    argPtr1)
    {-# LINE 231 "./Graphics/UI/Gtk/MenuComboToolbar/ComboBox.chs" #-}
        (toTreeModel model)

    -- | Creates a new empty 'ComboBox' with an entry and with the model initialized to @model@.
    --
    -- * Available since Gtk+ version 2.24
    --
    comboBoxNewWithModelAndEntry :: TreeModelClass model =>
        model -- ^ @model@ - A 'TreeModel'.
     -> IO ComboBox
    comboBoxNewWithModelAndEntry :: forall model. TreeModelClass model => model -> IO ComboBox
    comboBoxNewWithModelAndEntry model
    model =
      (ForeignPtr ComboBox -> ComboBox, FinalizerPtr ComboBox)
    -> IO (Ptr ComboBox) -> IO ComboBox
    forall obj.
    GObjectClass obj =>
    (ForeignPtr obj -> obj, FinalizerPtr obj) -> IO (Ptr obj) -> IO obj
    makeNewObject (ForeignPtr ComboBox -> ComboBox, FinalizerPtr ComboBox)
    forall {a}. (ForeignPtr ComboBox -> ComboBox, FinalizerPtr a)
    mkComboBox (IO (Ptr ComboBox) -> IO ComboBox)
    -> IO (Ptr ComboBox) -> IO ComboBox
    forall a b. (a -> b) -> a -> b
    $
      (Ptr Widget -> Ptr ComboBox)
    -> IO (Ptr Widget) -> IO (Ptr ComboBox)
    forall (m :: * -> *) a1 r. Monad m => (a1 -> r) -> m a1 -> m r
    liftM (Ptr Widget -> Ptr ComboBox
    forall a b. Ptr a -> Ptr b
    castPtr :: Ptr Widget -> Ptr ComboBox) (IO (Ptr Widget) -> IO (Ptr ComboBox))
    -> IO (Ptr Widget) -> IO (Ptr ComboBox)
    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_combo_box_new_with_model_and_entry Ptr TreeModel
    argPtr1)
    {-# LINE 245 "./Graphics/UI/Gtk/MenuComboToolbar/ComboBox.chs" #-}
        (toTreeModel model)

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

    -- the text API

    -- | Create a combo box that holds strings.
    --
    -- This function stores a 'Graphics.UI.Gtk.ModelView.ListStore' with the
    -- widget and sets the model to the list store. The widget can contain only
    -- strings. The model can be retrieved with 'comboBoxGetModel'. The list
    -- store can be retrieved with 'comboBoxGetModelText'.
    -- Any existing model or renderers are removed before setting the new text
    -- model.
    -- Note that the functions 'comboBoxAppendText', 'comboBoxInsertText',
    -- 'comboBoxPrependText', 'comboBoxRemoveText' and 'comboBoxGetActiveText'
    -- can be called on a combo box only once 'comboBoxSetModelText' is called.
    --
    type ComboBoxText = Text

    comboBoxSetModelText :: ComboBoxClass self => self -> IO (ListStore ComboBoxText)
    comboBoxSetModelText :: forall self.
    ComboBoxClass self =>
    self -> IO (ListStore ComboBoxText)
    comboBoxSetModelText self
    combo = do
      ComboBox -> IO ()
    forall self. CellLayoutClass self => self -> IO ()
    cellLayoutClear (self -> ComboBox
    forall o. ComboBoxClass o => o -> ComboBox
    toComboBox self
    combo)
      store <- [ComboBoxText] -> IO (ListStore ComboBoxText)
    forall a. [a] -> IO (ListStore a)
    listStoreNew ([] :: [ComboBoxText])
      comboBoxSetModel combo (Just store)

      let colId = Int -> ColumnId row ComboBoxText
    forall string row. GlibString string => Int -> ColumnId row string
    makeColumnIdString Int
    0
      customStoreSetColumn store colId id
      comboBoxSetEntryTextColumn (toComboBox combo) colId

      ren <- cellRendererTextNew
      cellLayoutPackStart (toComboBox combo) ren True
      cellLayoutSetAttributes (toComboBox combo) ren store (\ComboBoxText
    a -> [Attr CellRendererText ComboBoxText
    forall cr string.
    (CellRendererTextClass cr, GlibString string) =>
    Attr cr string
    cellText Attr CellRendererText ComboBoxText
    -> ComboBoxText -> AttrOp CellRendererText
    forall o a b. ReadWriteAttr o a b -> b -> AttrOp o
    := ComboBoxText
    a])
      objectSetAttribute comboQuark combo (Just store)
      return store

    -- | Retrieve the model that was created with 'comboBoxSetModelText'.
    --
    comboBoxGetModelText :: ComboBoxClass self => self -> IO (ListStore ComboBoxText)
    comboBoxGetModelText :: forall self.
    ComboBoxClass self =>
    self -> IO (ListStore ComboBoxText)
    comboBoxGetModelText self
    self = do
      (Just store) <- Quark -> ComboBox -> IO (Maybe (ListStore ComboBoxText))
    forall o a. GObjectClass o => Quark -> o -> IO (Maybe a)
    objectGetAttributeUnsafe Quark
    comboQuark (self -> ComboBox
    forall o. ComboBoxClass o => o -> ComboBox
    toComboBox self
    self)
      return store

    -- %hash c:7228 d:5c35
    -- | Appends @string@ to the list of strings stored in @comboBox@. Note that
    -- you can only use this function with combo boxes constructed with
    -- 'comboBoxNewText'. Returns the index of the appended text.
    --
    comboBoxAppendText :: ComboBoxClass self => self -> ComboBoxText -> IO Int
    comboBoxAppendText :: forall self. ComboBoxClass self => self -> ComboBoxText -> IO Int
    comboBoxAppendText self
    self ComboBoxText
    text = do
      store <- self -> IO (ListStore ComboBoxText)
    forall self.
    ComboBoxClass self =>
    self -> IO (ListStore ComboBoxText)
    comboBoxGetModelText self
    self
      listStoreAppend store text

    -- %hash c:41de d:8ab0
    -- | Inserts @string@ at @position@ in the list of strings stored in
    -- @comboBox@. Note that you can only use this function with combo boxes
    -- constructed with 'comboBoxNewText'.
    --
    comboBoxInsertText :: ComboBoxClass self => self
     -> Int -- ^ @position@ - An index to insert @text@.
     -> ComboBoxText -- ^ @text@ - A string.
     -> IO ()
    comboBoxInsertText :: forall self.
    ComboBoxClass self =>
    self -> Int -> ComboBoxText -> IO ()
    comboBoxInsertText self
    self Int
    position ComboBoxText
    text = do
      store <- self -> IO (ListStore ComboBoxText)
    forall self.
    ComboBoxClass self =>
    self -> IO (ListStore ComboBoxText)
    comboBoxGetModelText self
    self
      listStoreInsert store position text

    -- %hash c:98ea d:9fab
    -- | Prepends @string@ to the list of strings stored in @comboBox@. Note that
    -- you can only use this function with combo boxes constructed with
    -- 'comboBoxNewText'.
    --
    comboBoxPrependText :: ComboBoxClass self => self -> ComboBoxText -> IO ()
    comboBoxPrependText :: forall self. ComboBoxClass self => self -> ComboBoxText -> IO ()
    comboBoxPrependText self
    self ComboBoxText
    text = do
      store <- self -> IO (ListStore ComboBoxText)
    forall self.
    ComboBoxClass self =>
    self -> IO (ListStore ComboBoxText)
    comboBoxGetModelText self
    self
      listStorePrepend store text

    -- %hash c:7ff6 d:ffbf
    -- | Removes the string at @position@ from @comboBox@. Note that you can only
    -- use this function with combo boxes constructed with 'comboBoxNewText'.
    --
    comboBoxRemoveText :: ComboBoxClass self => self
     -> Int -- ^ @position@ - Index of the item to remove.
     -> IO ()
    comboBoxRemoveText :: forall self. ComboBoxClass self => self -> Int -> IO ()
    comboBoxRemoveText self
    self Int
    position = do
      store <- self -> IO (ListStore ComboBoxText)
    forall self.
    ComboBoxClass self =>
    self -> IO (ListStore ComboBoxText)
    comboBoxGetModelText self
    self
      listStoreRemove store position

    -- | Returns the currently active string in @comboBox@ or @Nothing@ if none is
    -- selected. Note that you can only use this function with combo boxes
    -- constructed with 'comboBoxNewText'.
    --
    comboBoxGetActiveText :: ComboBoxClass self => self -> IO (Maybe ComboBoxText)
    comboBoxGetActiveText :: forall self. ComboBoxClass self => self -> IO (Maybe ComboBoxText)
    comboBoxGetActiveText self
    self = do
      activeId <- self -> IO Int
    forall self. ComboBoxClass self => self -> IO Int
    comboBoxGetActive self
    self
      if activeId < 0
        then return Nothing
        else do
          listStore <- comboBoxGetModelText self
          listStoreSafeGetValue listStore activeId

    -- %hash d:566e
    -- | Returns the wrap width which is used to determine the number of columns
    -- for the popup menu. If the wrap width is larger than 1, the combo box is in
    -- table mode.
    --
    -- * Available since Gtk+ version 2.6
    --
    comboBoxGetWrapWidth :: ComboBoxClass self => self -> IO Int
    comboBoxGetWrapWidth :: forall self. ComboBoxClass self => self -> IO Int
    comboBoxGetWrapWidth self
    self =
      (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
    $
      (\(ComboBox ForeignPtr ComboBox
    arg1) -> ForeignPtr ComboBox -> (Ptr ComboBox -> IO CInt) -> IO CInt
    forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
    withForeignPtr ForeignPtr ComboBox
    arg1 ((Ptr ComboBox -> IO CInt) -> IO CInt)
    -> (Ptr ComboBox -> IO CInt) -> IO CInt
    forall a b. (a -> b) -> a -> b
    $ \Ptr ComboBox
    argPtr1 ->Ptr ComboBox -> IO CInt
    gtk_combo_box_get_wrap_width Ptr ComboBox
    argPtr1)
    {-# LINE 359 "./Graphics/UI/Gtk/MenuComboToolbar/ComboBox.chs" #-}
        (toComboBox self)

    -- | Sets the wrap width of the combo box to be @width@. The wrap width is
    -- basically the preferred number of columns when you want the popup to be
    -- laid out in a table.
    --
    comboBoxSetWrapWidth :: ComboBoxClass self => self -> Int -> IO ()
    comboBoxSetWrapWidth :: forall self. ComboBoxClass self => self -> Int -> IO ()
    comboBoxSetWrapWidth self
    self Int
    width =
      (\(ComboBox ForeignPtr ComboBox
    arg1) CInt
    arg2 -> ForeignPtr ComboBox -> (Ptr ComboBox -> IO ()) -> IO ()
    forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
    withForeignPtr ForeignPtr ComboBox
    arg1 ((Ptr ComboBox -> IO ()) -> IO ())
    -> (Ptr ComboBox -> IO ()) -> IO ()
    forall a b. (a -> b) -> a -> b
    $ \Ptr ComboBox
    argPtr1 ->Ptr ComboBox -> CInt -> IO ()
    gtk_combo_box_set_wrap_width Ptr ComboBox
    argPtr1 CInt
    arg2)
    {-# LINE 369 "./Graphics/UI/Gtk/MenuComboToolbar/ComboBox.chs" #-}
        (toComboBox self)
        (Int -> CInt
    forall a b. (Integral a, Num b) => a -> b
    fromIntegral Int
    width)

    -- | Gets the column with row span information for @comboBox@.
    --
    -- * Available since Gtk+ version 2.6
    --
    comboBoxGetRowSpanColumn :: ComboBoxClass self => self -> IO (ColumnId row Int)
    comboBoxGetRowSpanColumn :: forall self row.
    ComboBoxClass self =>
    self -> IO (ColumnId row Int)
    comboBoxGetRowSpanColumn self
    self =
      (CInt -> ColumnId row Int) -> IO CInt -> IO (ColumnId row Int)
    forall (m :: * -> *) a1 r. Monad m => (a1 -> r) -> m a1 -> m r
    liftM (Int -> ColumnId row Int
    forall row. Int -> ColumnId row Int
    makeColumnIdInt (Int -> ColumnId row Int)
    -> (CInt -> Int) -> CInt -> ColumnId row Int
    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 Int))
    -> IO CInt -> IO (ColumnId row Int)
    forall a b. (a -> b) -> a -> b
    $
      (\(ComboBox ForeignPtr ComboBox
    arg1) -> ForeignPtr ComboBox -> (Ptr ComboBox -> IO CInt) -> IO CInt
    forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
    withForeignPtr ForeignPtr ComboBox
    arg1 ((Ptr ComboBox -> IO CInt) -> IO CInt)
    -> (Ptr ComboBox -> IO CInt) -> IO CInt
    forall a b. (a -> b) -> a -> b
    $ \Ptr ComboBox
    argPtr1 ->Ptr ComboBox -> IO CInt
    gtk_combo_box_get_row_span_column Ptr ComboBox
    argPtr1)
    {-# LINE 381 "./Graphics/UI/Gtk/MenuComboToolbar/ComboBox.chs" #-}
        (toComboBox self)

    -- %hash d:f80b
    -- | Sets the column with row span information for @comboBox@ to be @rowSpan@.
    -- The row span column contains integers which indicate how many rows an item
    -- should span.
    --
    comboBoxSetRowSpanColumn :: ComboBoxClass self => self -> ColumnId row Int -> IO ()
    comboBoxSetRowSpanColumn :: forall self row.
    ComboBoxClass self =>
    self -> ColumnId row Int -> IO ()
    comboBoxSetRowSpanColumn self
    self ColumnId row Int
    rowSpan =
      (\(ComboBox ForeignPtr ComboBox
    arg1) CInt
    arg2 -> ForeignPtr ComboBox -> (Ptr ComboBox -> IO ()) -> IO ()
    forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
    withForeignPtr ForeignPtr ComboBox
    arg1 ((Ptr ComboBox -> IO ()) -> IO ())
    -> (Ptr ComboBox -> IO ()) -> IO ()
    forall a b. (a -> b) -> a -> b
    $ \Ptr ComboBox
    argPtr1 ->Ptr ComboBox -> CInt -> IO ()
    gtk_combo_box_set_row_span_column Ptr ComboBox
    argPtr1 CInt
    arg2)
    {-# LINE 392 "./Graphics/UI/Gtk/MenuComboToolbar/ComboBox.chs" #-}
        (toComboBox self)
        ((Int -> CInt
    forall a b. (Integral a, Num b) => a -> b
    fromIntegral (Int -> CInt)
    -> (ColumnId row Int -> Int) -> ColumnId row Int -> CInt
    forall b c a. (b -> c) -> (a -> b) -> a -> c
    . ColumnId row Int -> Int
    forall row ty. ColumnId row ty -> Int
    columnIdToNumber) ColumnId row Int
    rowSpan)

    -- | Gets the source of the column span information for the combo box.
    --
    -- * Available since Gtk+ version 2.6
    --
    comboBoxGetColumnSpanColumn :: ComboBoxClass self => self -> IO (ColumnId row Int)
    comboBoxGetColumnSpanColumn :: forall self row.
    ComboBoxClass self =>
    self -> IO (ColumnId row Int)
    comboBoxGetColumnSpanColumn self
    self =
      (CInt -> ColumnId row Int) -> IO CInt -> IO (ColumnId row Int)
    forall (m :: * -> *) a1 r. Monad m => (a1 -> r) -> m a1 -> m r
    liftM (Int -> ColumnId row Int
    forall row. Int -> ColumnId row Int
    makeColumnIdInt (Int -> ColumnId row Int)
    -> (CInt -> Int) -> CInt -> ColumnId row Int
    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 Int))
    -> IO CInt -> IO (ColumnId row Int)
    forall a b. (a -> b) -> a -> b
    $
      (\(ComboBox ForeignPtr ComboBox
    arg1) -> ForeignPtr ComboBox -> (Ptr ComboBox -> IO CInt) -> IO CInt
    forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
    withForeignPtr ForeignPtr ComboBox
    arg1 ((Ptr ComboBox -> IO CInt) -> IO CInt)
    -> (Ptr ComboBox -> IO CInt) -> IO CInt
    forall a b. (a -> b) -> a -> b
    $ \Ptr ComboBox
    argPtr1 ->Ptr ComboBox -> IO CInt
    gtk_combo_box_get_column_span_column Ptr ComboBox
    argPtr1)
    {-# LINE 404 "./Graphics/UI/Gtk/MenuComboToolbar/ComboBox.chs" #-}
        (toComboBox self)

    -- %hash d:4303
    -- | Sets the source of the column span information for the combo box. The
    -- column span source contains integers which indicate how many columns an
    -- item should span.
    --
    comboBoxSetColumnSpanColumn :: ComboBoxClass self => self -> ColumnId row Int -> IO ()
    comboBoxSetColumnSpanColumn :: forall self row.
    ComboBoxClass self =>
    self -> ColumnId row Int -> IO ()
    comboBoxSetColumnSpanColumn self
    self ColumnId row Int
    columnSpan =
      (\(ComboBox ForeignPtr ComboBox
    arg1) CInt
    arg2 -> ForeignPtr ComboBox -> (Ptr ComboBox -> IO ()) -> IO ()
    forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
    withForeignPtr ForeignPtr ComboBox
    arg1 ((Ptr ComboBox -> IO ()) -> IO ())
    -> (Ptr ComboBox -> IO ()) -> IO ()
    forall a b. (a -> b) -> a -> b
    $ \Ptr ComboBox
    argPtr1 ->Ptr ComboBox -> CInt -> IO ()
    gtk_combo_box_set_column_span_column Ptr ComboBox
    argPtr1 CInt
    arg2)
    {-# LINE 415 "./Graphics/UI/Gtk/MenuComboToolbar/ComboBox.chs" #-}
        (toComboBox self)
        ((Int -> CInt
    forall a b. (Integral a, Num b) => a -> b
    fromIntegral (Int -> CInt)
    -> (ColumnId row Int -> Int) -> ColumnId row Int -> CInt
    forall b c a. (b -> c) -> (a -> b) -> a -> c
    . ColumnId row Int -> Int
    forall row ty. ColumnId row ty -> Int
    columnIdToNumber) ColumnId row Int
    columnSpan)

    -- %hash c:e719 d:e6a
    -- | Returns the index of the currently active item, or -1 if there is no
    -- active item. If the model is a non-flat treemodel, and the active item is
    -- not an immediate child of the root of the tree, this function returns
    -- @'treePathGetIndices' path !! 0@, where @path@ is the 'TreePath' of the
    -- active item.
    --
    comboBoxGetActive :: ComboBoxClass self => self
     -> IO Int -- ^ returns An integer which is the index of the currently active
               -- item, or -1 if there's no active item.
    comboBoxGetActive :: forall self. ComboBoxClass self => self -> IO Int
    comboBoxGetActive self
    self =
      (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
    $
      (\(ComboBox ForeignPtr ComboBox
    arg1) -> ForeignPtr ComboBox -> (Ptr ComboBox -> IO CInt) -> IO CInt
    forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
    withForeignPtr ForeignPtr ComboBox
    arg1 ((Ptr ComboBox -> IO CInt) -> IO CInt)
    -> (Ptr ComboBox -> IO CInt) -> IO CInt
    forall a b. (a -> b) -> a -> b
    $ \Ptr ComboBox
    argPtr1 ->Ptr ComboBox -> IO CInt
    gtk_combo_box_get_active Ptr ComboBox
    argPtr1)
    {-# LINE 431 "./Graphics/UI/Gtk/MenuComboToolbar/ComboBox.chs" #-}
        (toComboBox self)

    -- %hash c:3572 d:fbed
    -- | Sets the active item of @comboBox@ to be the item at @index@.
    --
    comboBoxSetActive :: ComboBoxClass self => self
     -> Int -- ^ @index@ - An index in the model passed during construction, or -1
            -- to have no active item.
     -> IO ()
    comboBoxSetActive :: forall self. ComboBoxClass self => self -> Int -> IO ()
    comboBoxSetActive self
    self Int
    index =
      (\(ComboBox ForeignPtr ComboBox
    arg1) CInt
    arg2 -> ForeignPtr ComboBox -> (Ptr ComboBox -> IO ()) -> IO ()
    forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
    withForeignPtr ForeignPtr ComboBox
    arg1 ((Ptr ComboBox -> IO ()) -> IO ())
    -> (Ptr ComboBox -> IO ()) -> IO ()
    forall a b. (a -> b) -> a -> b
    $ \Ptr ComboBox
    argPtr1 ->Ptr ComboBox -> CInt -> IO ()
    gtk_combo_box_set_active Ptr ComboBox
    argPtr1 CInt
    arg2)
    {-# LINE 442 "./Graphics/UI/Gtk/MenuComboToolbar/ComboBox.chs" #-}
        (toComboBox self)
        (Int -> CInt
    forall a b. (Integral a, Num b) => a -> b
    fromIntegral Int
    index)

    -- %hash c:744a d:e897
    -- | Returns a 'TreeIter' that points to the current active item, if it
    -- exists, or @Nothing@ if there is no current active item.
    --
    comboBoxGetActiveIter :: ComboBoxClass self => self -> IO (Maybe TreeIter)
    comboBoxGetActiveIter :: forall self. ComboBoxClass self => self -> IO (Maybe TreeIter)
    comboBoxGetActiveIter self
    self =
      (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
    $ \Ptr TreeIter
    iterPtr ->
      (\(ComboBox ForeignPtr ComboBox
    arg1) Ptr TreeIter
    arg2 -> ForeignPtr ComboBox -> (Ptr ComboBox -> IO CInt) -> IO CInt
    forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
    withForeignPtr ForeignPtr ComboBox
    arg1 ((Ptr ComboBox -> IO CInt) -> IO CInt)
    -> (Ptr ComboBox -> IO CInt) -> IO CInt
    forall a b. (a -> b) -> a -> b
    $ \Ptr ComboBox
    argPtr1 ->Ptr ComboBox -> Ptr TreeIter -> IO CInt
    gtk_combo_box_get_active_iter Ptr ComboBox
    argPtr1 Ptr TreeIter
    arg2)
    {-# LINE 453 "./Graphics/UI/Gtk/MenuComboToolbar/ComboBox.chs" #-}
        (toComboBox self)
        Ptr TreeIter
    iterPtr

    -- %hash c:9a70
    -- | Sets the current active item to be the one referenced by @iter@. @iter@
    -- must correspond to a path of depth one.
    --
    comboBoxSetActiveIter :: ComboBoxClass self => self
     -> TreeIter -- ^ @iter@ - The 'TreeIter'.
     -> IO ()
    comboBoxSetActiveIter :: forall self. ComboBoxClass self => self -> TreeIter -> IO ()
    comboBoxSetActiveIter self
    self TreeIter
    iter =
      TreeIter -> (Ptr TreeIter -> IO ()) -> IO ()
    forall a b. Storable a => a -> (Ptr a -> IO b) -> IO b
    with TreeIter
    iter ((Ptr TreeIter -> IO ()) -> IO ())
    -> (Ptr TreeIter -> IO ()) -> IO ()
    forall a b. (a -> b) -> a -> b
    $ \Ptr TreeIter
    iterPtr ->
      (\(ComboBox ForeignPtr ComboBox
    arg1) Ptr TreeIter
    arg2 -> ForeignPtr ComboBox -> (Ptr ComboBox -> IO ()) -> IO ()
    forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
    withForeignPtr ForeignPtr ComboBox
    arg1 ((Ptr ComboBox -> IO ()) -> IO ())
    -> (Ptr ComboBox -> IO ()) -> IO ()
    forall a b. (a -> b) -> a -> b
    $ \Ptr ComboBox
    argPtr1 ->Ptr ComboBox -> Ptr TreeIter -> IO ()
    gtk_combo_box_set_active_iter Ptr ComboBox
    argPtr1 Ptr TreeIter
    arg2)
    {-# LINE 466 "./Graphics/UI/Gtk/MenuComboToolbar/ComboBox.chs" #-}
        (toComboBox self)
        Ptr TreeIter
    iterPtr

    -- %hash c:2460
    -- | Returns the 'TreeModel' which is acting as data source for @comboBox@.
    --
    comboBoxGetModel :: ComboBoxClass self
     => self
     -> IO (Maybe TreeModel) -- ^ returns A 'TreeModel' which was passed during
                             -- construction.
    comboBoxGetModel :: forall self. ComboBoxClass self => self -> IO (Maybe TreeModel)
    comboBoxGetModel 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
    $
      (\(ComboBox ForeignPtr ComboBox
    arg1) -> ForeignPtr ComboBox
    -> (Ptr ComboBox -> IO (Ptr TreeModel)) -> IO (Ptr TreeModel)
    forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
    withForeignPtr ForeignPtr ComboBox
    arg1 ((Ptr ComboBox -> IO (Ptr TreeModel)) -> IO (Ptr TreeModel))
    -> (Ptr ComboBox -> IO (Ptr TreeModel)) -> IO (Ptr TreeModel)
    forall a b. (a -> b) -> a -> b
    $ \Ptr ComboBox
    argPtr1 ->Ptr ComboBox -> IO (Ptr TreeModel)
    gtk_combo_box_get_model Ptr ComboBox
    argPtr1)
    {-# LINE 479 "./Graphics/UI/Gtk/MenuComboToolbar/ComboBox.chs" #-}
        (toComboBox self)

    -- %hash c:f5d0
    -- | Sets the model used by @comboBox@ to be @model@. Will unset a previously
    -- set model (if applicable). If model is @Nothing@, then it will unset the
    -- model.
    --
    -- Note that this function does not clear the cell renderers, you have to call
    -- 'comboBoxCellLayoutClear' yourself if you need to set up different cell
    -- renderers for the new model.
    --
    comboBoxSetModel :: (ComboBoxClass self, TreeModelClass model) => self ->
      Maybe model -> IO ()
    comboBoxSetModel :: forall self model.
    (ComboBoxClass self, TreeModelClass model) =>
    self -> Maybe model -> IO ()
    comboBoxSetModel self
    self Maybe model
    model =
      (\(ComboBox ForeignPtr ComboBox
    arg1) (TreeModel ForeignPtr TreeModel
    arg2) -> ForeignPtr ComboBox -> (Ptr ComboBox -> IO ()) -> IO ()
    forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
    withForeignPtr ForeignPtr ComboBox
    arg1 ((Ptr ComboBox -> IO ()) -> IO ())
    -> (Ptr ComboBox -> IO ()) -> IO ()
    forall a b. (a -> b) -> a -> b
    $ \Ptr ComboBox
    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 ComboBox -> Ptr TreeModel -> IO ()
    gtk_combo_box_set_model Ptr ComboBox
    argPtr1 Ptr TreeModel
    argPtr2)
    {-# LINE 494 "./Graphics/UI/Gtk/MenuComboToolbar/ComboBox.chs" #-}
        (toComboBox 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)

    -- | Pops up the menu or dropdown list of the combo box.
    --
    -- This function is mostly intended for use by accessibility technologies;
    -- applications should have little use for it.
    --
    comboBoxPopup :: ComboBoxClass self => self -> IO ()
    comboBoxPopup :: forall self. ComboBoxClass self => self -> IO ()
    comboBoxPopup self
    self =
      (\(ComboBox ForeignPtr ComboBox
    arg1) -> ForeignPtr ComboBox -> (Ptr ComboBox -> IO ()) -> IO ()
    forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
    withForeignPtr ForeignPtr ComboBox
    arg1 ((Ptr ComboBox -> IO ()) -> IO ())
    -> (Ptr ComboBox -> IO ()) -> IO ()
    forall a b. (a -> b) -> a -> b
    $ \Ptr ComboBox
    argPtr1 ->Ptr ComboBox -> IO ()
    gtk_combo_box_popup Ptr ComboBox
    argPtr1)
    {-# LINE 505 "./Graphics/UI/Gtk/MenuComboToolbar/ComboBox.chs" #-}
        (toComboBox self)

    -- %hash c:32a4 d:463e
    -- | Hides the menu or dropdown list of @comboBox@.
    --
    -- This function is mostly intended for use by accessibility technologies;
    -- applications should have little use for it.
    --
    comboBoxPopdown :: ComboBoxClass self => self -> IO ()
    comboBoxPopdown :: forall self. ComboBoxClass self => self -> IO ()
    comboBoxPopdown self
    self =
      (\(ComboBox ForeignPtr ComboBox
    arg1) -> ForeignPtr ComboBox -> (Ptr ComboBox -> IO ()) -> IO ()
    forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
    withForeignPtr ForeignPtr ComboBox
    arg1 ((Ptr ComboBox -> IO ()) -> IO ())
    -> (Ptr ComboBox -> IO ()) -> IO ()
    forall a b. (a -> b) -> a -> b
    $ \Ptr ComboBox
    argPtr1 ->Ptr ComboBox -> IO ()
    gtk_combo_box_popdown Ptr ComboBox
    argPtr1)
    {-# LINE 516 "./Graphics/UI/Gtk/MenuComboToolbar/ComboBox.chs" #-}
        (toComboBox self)

    -- %hash c:6fec d:a050
    -- | Installs a mapping from the model to a row separator flag, which is used
    -- to determine whether a row should be drawn as a separator. If the row
    -- separator mapping is @Nothing@, no separators are drawn. This is the
    -- default value.
    --
    -- * Available since Gtk+ version 2.6
    --
    comboBoxSetRowSeparatorSource :: (ComboBoxClass self,
                                      TreeModelClass (model row),
                                      TypedTreeModelClass model)
     => self -- ^ the 'ComboBox' widget
     -> Maybe (model row, row -> Bool)
     -- ^ The model and a function to extract a Boolean from it.
     -> IO ()
    comboBoxSetRowSeparatorSource :: forall self (model :: * -> *) row.
    (ComboBoxClass self, TreeModelClass (model row),
     TypedTreeModelClass model) =>
    self -> Maybe (model row, row -> Bool) -> IO ()
    comboBoxSetRowSeparatorSource self
    self Maybe (model row, row -> Bool)
    Nothing =
      (\(ComboBox ForeignPtr ComboBox
    arg1) FunPtr (Ptr TreeModel -> Ptr TreeIter -> Ptr () -> IO CInt)
    arg2 Ptr ()
    arg3 FunPtr (Ptr () -> IO ())
    arg4 -> ForeignPtr ComboBox -> (Ptr ComboBox -> IO ()) -> IO ()
    forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
    withForeignPtr ForeignPtr ComboBox
    arg1 ((Ptr ComboBox -> IO ()) -> IO ())
    -> (Ptr ComboBox -> IO ()) -> IO ()
    forall a b. (a -> b) -> a -> b
    $ \Ptr ComboBox
    argPtr1 ->Ptr ComboBox
    -> FunPtr (Ptr TreeModel -> Ptr TreeIter -> Ptr () -> IO CInt)
    -> Ptr ()
    -> FunPtr (Ptr () -> IO ())
    -> IO ()
    gtk_combo_box_set_row_separator_func Ptr ComboBox
    argPtr1 FunPtr (Ptr TreeModel -> Ptr TreeIter -> Ptr () -> IO CInt)
    arg2 Ptr ()
    arg3 FunPtr (Ptr () -> IO ())
    arg4)
    {-# LINE 536 "./Graphics/UI/Gtk/MenuComboToolbar/ComboBox.chs" #-}
        (toComboBox 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
    comboBoxSetRowSeparatorSource self
    self (Just (model row
    model, row -> Bool
    extract)) = do
      funPtr <- (Ptr TreeModel -> Ptr TreeIter -> Ptr () -> IO CInt)
    -> IO (FunPtr (Ptr TreeModel -> Ptr TreeIter -> Ptr () -> IO CInt))
    mkRowSeparatorFunc ((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
    iterPtr Ptr ()
    _ -> do
            iter <- Ptr TreeIter -> IO TreeIter
    forall a. Storable a => Ptr a -> IO a
    peek Ptr TreeIter
    iterPtr
            value <- customStoreGetRow model iter
            return (fromBool $ extract value)
      (\(ComboBox ForeignPtr ComboBox
    arg1) FunPtr (Ptr TreeModel -> Ptr TreeIter -> Ptr () -> IO CInt)
    arg2 Ptr ()
    arg3 FunPtr (Ptr () -> IO ())
    arg4 -> ForeignPtr ComboBox -> (Ptr ComboBox -> IO ()) -> IO ()
    forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
    withForeignPtr ForeignPtr ComboBox
    arg1 ((Ptr ComboBox -> IO ()) -> IO ())
    -> (Ptr ComboBox -> IO ()) -> IO ()
    forall a b. (a -> b) -> a -> b
    $ \Ptr ComboBox
    argPtr1 ->Ptr ComboBox
    -> FunPtr (Ptr TreeModel -> Ptr TreeIter -> Ptr () -> IO CInt)
    -> Ptr ()
    -> FunPtr (Ptr () -> IO ())
    -> IO ()
    gtk_combo_box_set_row_separator_func Ptr ComboBox
    argPtr1 FunPtr (Ptr TreeModel -> Ptr TreeIter -> Ptr () -> IO CInt)
    arg2 Ptr ()
    arg3 FunPtr (Ptr () -> IO ())
    arg4)
    {-# LINE 543 "./Graphics/UI/Gtk/MenuComboToolbar/ComboBox.chs" #-}
        (toComboBox self) funPtr (castFunPtrToPtr funPtr) destroyFunPtr

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

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

    -- %hash c:5bf8
    -- | Sets whether the popup menu should have a tearoff menu item.
    --
    -- * Available since Gtk+ version 2.6
    --
    comboBoxSetAddTearoffs :: ComboBoxClass self => self
     -> Bool -- ^ @addTearoffs@ - @True@ to add tearoff menu items
     -> IO ()
    comboBoxSetAddTearoffs :: forall self. ComboBoxClass self => self -> Bool -> IO ()
    comboBoxSetAddTearoffs self
    self Bool
    addTearoffs =
      (\(ComboBox ForeignPtr ComboBox
    arg1) CInt
    arg2 -> ForeignPtr ComboBox -> (Ptr ComboBox -> IO ()) -> IO ()
    forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
    withForeignPtr ForeignPtr ComboBox
    arg1 ((Ptr ComboBox -> IO ()) -> IO ())
    -> (Ptr ComboBox -> IO ()) -> IO ()
    forall a b. (a -> b) -> a -> b
    $ \Ptr ComboBox
    argPtr1 ->Ptr ComboBox -> CInt -> IO ()
    gtk_combo_box_set_add_tearoffs Ptr ComboBox
    argPtr1 CInt
    arg2)
    {-# LINE 560 "./Graphics/UI/Gtk/MenuComboToolbar/ComboBox.chs" #-}
        (toComboBox self)
        (Bool -> CInt
    forall a. Num a => Bool -> a
    fromBool Bool
    addTearoffs)

    -- | Gets the current value of the :add-tearoffs property.
    --
    comboBoxGetAddTearoffs :: ComboBoxClass self => self -> IO Bool
    comboBoxGetAddTearoffs :: forall self. ComboBoxClass self => self -> IO Bool
    comboBoxGetAddTearoffs 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
    $
      (\(ComboBox ForeignPtr ComboBox
    arg1) -> ForeignPtr ComboBox -> (Ptr ComboBox -> IO CInt) -> IO CInt
    forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
    withForeignPtr ForeignPtr ComboBox
    arg1 ((Ptr ComboBox -> IO CInt) -> IO CInt)
    -> (Ptr ComboBox -> IO CInt) -> IO CInt
    forall a b. (a -> b) -> a -> b
    $ \Ptr ComboBox
    argPtr1 ->Ptr ComboBox -> IO CInt
    gtk_combo_box_get_add_tearoffs Ptr ComboBox
    argPtr1)
    {-# LINE 569 "./Graphics/UI/Gtk/MenuComboToolbar/ComboBox.chs" #-}
        (toComboBox self)

    -- %hash c:64db d:ecde
    -- | Sets the menu's title in tearoff mode.
    --
    -- * Available since Gtk+ version 2.10
    --
    comboBoxSetTitle :: (ComboBoxClass self, GlibString string) => self
     -> string -- ^ @title@ - a title for the menu in tearoff mode.
     -> IO ()
    comboBoxSetTitle :: forall self string.
    (ComboBoxClass self, GlibString string) =>
    self -> string -> IO ()
    comboBoxSetTitle self
    self string
    title =
      string -> (CString -> IO ()) -> IO ()
    forall a. string -> (CString -> IO a) -> IO a
    forall s a. GlibString s => s -> (CString -> IO a) -> IO a
    withUTFString string
    title ((CString -> IO ()) -> IO ()) -> (CString -> IO ()) -> IO ()
    forall a b. (a -> b) -> a -> b
    $ \CString
    titlePtr ->
      (\(ComboBox ForeignPtr ComboBox
    arg1) CString
    arg2 -> ForeignPtr ComboBox -> (Ptr ComboBox -> IO ()) -> IO ()
    forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
    withForeignPtr ForeignPtr ComboBox
    arg1 ((Ptr ComboBox -> IO ()) -> IO ())
    -> (Ptr ComboBox -> IO ()) -> IO ()
    forall a b. (a -> b) -> a -> b
    $ \Ptr ComboBox
    argPtr1 ->Ptr ComboBox -> CString -> IO ()
    gtk_combo_box_set_title Ptr ComboBox
    argPtr1 CString
    arg2)
    {-# LINE 583 "./Graphics/UI/Gtk/MenuComboToolbar/ComboBox.chs" #-}
        (toComboBox self)
        CString
    titlePtr

    -- %hash c:9f54 d:e396
    -- | Gets the current title of the menu in tearoff mode. See
    -- 'comboBoxSetAddTearoffs'.
    --
    -- * Available since Gtk+ version 2.10
    --
    comboBoxGetTitle :: (ComboBoxClass self, GlibString string) => self
     -> IO string -- ^ returns the menu's title in tearoff mode.
    comboBoxGetTitle :: forall self string.
    (ComboBoxClass self, GlibString string) =>
    self -> IO string
    comboBoxGetTitle self
    self =
      (\(ComboBox ForeignPtr ComboBox
    arg1) -> ForeignPtr ComboBox -> (Ptr ComboBox -> IO CString) -> IO CString
    forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
    withForeignPtr ForeignPtr ComboBox
    arg1 ((Ptr ComboBox -> IO CString) -> IO CString)
    -> (Ptr ComboBox -> IO CString) -> IO CString
    forall a b. (a -> b) -> a -> b
    $ \Ptr ComboBox
    argPtr1 ->Ptr ComboBox -> IO CString
    gtk_combo_box_get_title Ptr ComboBox
    argPtr1)
    {-# LINE 596 "./Graphics/UI/Gtk/MenuComboToolbar/ComboBox.chs" #-}
        (toComboBox self)
      IO CString -> (CString -> IO string) -> IO string
    forall a b. IO a -> (a -> IO b) -> IO b
    forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
    >>= CString -> IO string
    forall s. GlibString s => CString -> IO s
    peekUTFString

    -- | Returns whether the combo box has an entry.
    --
    -- * Available since Gtk+ version 2.24
    --
    comboBoxGetHasEntry :: ComboBoxClass self => self
     -> IO Bool -- ^ returns whether there is an entry in @self@.
    comboBoxGetHasEntry :: forall self. ComboBoxClass self => self -> IO Bool
    comboBoxGetHasEntry 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
    $
      (\(ComboBox ForeignPtr ComboBox
    arg1) -> ForeignPtr ComboBox -> (Ptr ComboBox -> IO CInt) -> IO CInt
    forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
    withForeignPtr ForeignPtr ComboBox
    arg1 ((Ptr ComboBox -> IO CInt) -> IO CInt)
    -> (Ptr ComboBox -> IO CInt) -> IO CInt
    forall a b. (a -> b) -> a -> b
    $ \Ptr ComboBox
    argPtr1 ->Ptr ComboBox -> IO CInt
    gtk_combo_box_get_has_entry Ptr ComboBox
    argPtr1)
    {-# LINE 610 "./Graphics/UI/Gtk/MenuComboToolbar/ComboBox.chs" #-}
        (toComboBox self)

    -- | Sets the model column which combo_box should use to get strings from
    -- to be @textColumn@. The column text_column in the model of @comboBox@
    -- must be of type ComboBoxText.
    --
    -- This is only relevant if @comboBox@ has been created with "has-entry"
    -- as True.
    --
    -- * Available since Gtk+ version 2.24
    --
    comboBoxSetEntryTextColumn :: ComboBoxClass comboBox => comboBox
     -> ColumnId row ComboBoxText -- ^ @textColumn@ - A column in model to get the strings from for the internal entry.
     -> IO ()
    comboBoxSetEntryTextColumn :: forall comboBox row.
    ComboBoxClass comboBox =>
    comboBox -> ColumnId row ComboBoxText -> IO ()
    comboBoxSetEntryTextColumn comboBox
    comboBox ColumnId row ComboBoxText
    textColumn =
      (\(ComboBox ForeignPtr ComboBox
    arg1) CInt
    arg2 -> ForeignPtr ComboBox -> (Ptr ComboBox -> IO ()) -> IO ()
    forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
    withForeignPtr ForeignPtr ComboBox
    arg1 ((Ptr ComboBox -> IO ()) -> IO ())
    -> (Ptr ComboBox -> IO ()) -> IO ()
    forall a b. (a -> b) -> a -> b
    $ \Ptr ComboBox
    argPtr1 ->Ptr ComboBox -> CInt -> IO ()
    gtk_combo_box_set_entry_text_column Ptr ComboBox
    argPtr1 CInt
    arg2)
    {-# LINE 626 "./Graphics/UI/Gtk/MenuComboToolbar/ComboBox.chs" #-}
        (toComboBox comboBox)
        ((Int -> CInt
    forall a b. (Integral a, Num b) => a -> b
    fromIntegral (Int -> CInt)
    -> (ColumnId row ComboBoxText -> Int)
    -> ColumnId row ComboBoxText
    -> CInt
    forall b c a. (b -> c) -> (a -> b) -> a -> c
    . ColumnId row ComboBoxText -> Int
    forall row ty. ColumnId row ty -> Int
    columnIdToNumber) ColumnId row ComboBoxText
    textColumn)

    -- | Returns the column which @comboBox@ is using to get the strings from to
    -- display in the internal entry.
    --
    -- * Available since Gtk+ version 2.24
    --
    comboBoxGetEntryTextColumn :: ComboBoxClass comboBox => comboBox
     -> IO (ColumnId row ComboBoxText) -- ^ returns a column in the data source model of @comboBox@.
    comboBoxGetEntryTextColumn :: forall comboBox row.
    ComboBoxClass comboBox =>
    comboBox -> IO (ColumnId row ComboBoxText)
    comboBoxGetEntryTextColumn comboBox
    comboBox =
      (CInt -> ColumnId row ComboBoxText)
    -> IO CInt -> IO (ColumnId row ComboBoxText)
    forall (m :: * -> *) a1 r. Monad m => (a1 -> r) -> m a1 -> m r
    liftM (Int -> ColumnId row ComboBoxText
    forall string row. GlibString string => Int -> ColumnId row string
    makeColumnIdString (Int -> ColumnId row ComboBoxText)
    -> (CInt -> Int) -> CInt -> ColumnId row ComboBoxText
    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 ComboBoxText))
    -> IO CInt -> IO (ColumnId row ComboBoxText)
    forall a b. (a -> b) -> a -> b
    $
      (\(ComboBox ForeignPtr ComboBox
    arg1) -> ForeignPtr ComboBox -> (Ptr ComboBox -> IO CInt) -> IO CInt
    forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
    withForeignPtr ForeignPtr ComboBox
    arg1 ((Ptr ComboBox -> IO CInt) -> IO CInt)
    -> (Ptr ComboBox -> IO CInt) -> IO CInt
    forall a b. (a -> b) -> a -> b
    $ \Ptr ComboBox
    argPtr1 ->Ptr ComboBox -> IO CInt
    gtk_combo_box_get_entry_text_column Ptr ComboBox
    argPtr1)
    {-# LINE 639 "./Graphics/UI/Gtk/MenuComboToolbar/ComboBox.chs" #-}
        (toComboBox comboBox)

    -- %hash c:fe18
    -- | Sets whether the combo box will grab focus when it is clicked with the
    -- mouse. Making mouse clicks not grab focus is useful in places like toolbars
    -- where you don't want the keyboard focus removed from the main area of the
    -- application.
    --
    -- * Available since Gtk+ version 2.6
    --
    comboBoxSetFocusOnClick :: ComboBoxClass self => self
     -> Bool -- ^ @focusOnClick@ - whether the combo box grabs focus when clicked
              -- with the mouse
     -> IO ()
    comboBoxSetFocusOnClick :: forall self. ComboBoxClass self => self -> Bool -> IO ()
    comboBoxSetFocusOnClick self
    self Bool
    focusOnClick =
      (\(ComboBox ForeignPtr ComboBox
    arg1) CInt
    arg2 -> ForeignPtr ComboBox -> (Ptr ComboBox -> IO ()) -> IO ()
    forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
    withForeignPtr ForeignPtr ComboBox
    arg1 ((Ptr ComboBox -> IO ()) -> IO ())
    -> (Ptr ComboBox -> IO ()) -> IO ()
    forall a b. (a -> b) -> a -> b
    $ \Ptr ComboBox
    argPtr1 ->Ptr ComboBox -> CInt -> IO ()
    gtk_combo_box_set_focus_on_click Ptr ComboBox
    argPtr1 CInt
    arg2)
    {-# LINE 656 "./Graphics/UI/Gtk/MenuComboToolbar/ComboBox.chs" #-}
        (toComboBox self)
        (Bool -> CInt
    forall a. Num a => Bool -> a
    fromBool Bool
    focusOnClick)

    -- %hash c:9168
    -- | Returns whether the combo box grabs focus when it is clicked with the
    -- mouse. See 'comboBoxSetFocusOnClick'.
    --
    -- * Available since Gtk+ version 2.6
    --
    comboBoxGetFocusOnClick :: ComboBoxClass self => self
     -> IO Bool -- ^ returns @True@ if the combo box grabs focus when it is
                -- clicked with the mouse.
    comboBoxGetFocusOnClick :: forall self. ComboBoxClass self => self -> IO Bool
    comboBoxGetFocusOnClick 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
    $
      (\(ComboBox ForeignPtr ComboBox
    arg1) -> ForeignPtr ComboBox -> (Ptr ComboBox -> IO CInt) -> IO CInt
    forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
    withForeignPtr ForeignPtr ComboBox
    arg1 ((Ptr ComboBox -> IO CInt) -> IO CInt)
    -> (Ptr ComboBox -> IO CInt) -> IO CInt
    forall a b. (a -> b) -> a -> b
    $ \Ptr ComboBox
    argPtr1 ->Ptr ComboBox -> IO CInt
    gtk_combo_box_get_focus_on_click Ptr ComboBox
    argPtr1)
    {-# LINE 671 "./Graphics/UI/Gtk/MenuComboToolbar/ComboBox.chs" #-}
        (toComboBox self)

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

    -- %hash c:c23c
    -- | The model from which the combo box takes the values shown in the list.
    --
    comboBoxModel :: (ComboBoxClass self, TreeModelClass treeModel) => ReadWriteAttr self TreeModel treeModel
    comboBoxModel :: forall self treeModel.
    (ComboBoxClass self, TreeModelClass treeModel) =>
    ReadWriteAttr self TreeModel treeModel
    comboBoxModel = String -> GType -> ReadWriteAttr self TreeModel treeModel
    forall gobj gobj' gobj''.
    (GObjectClass gobj, GObjectClass gobj', GObjectClass gobj'') =>
    String -> GType -> ReadWriteAttr gobj gobj' gobj''
    newAttrFromObjectProperty String
    "model"
                      GType
    gtk_tree_model_get_type
    {-# LINE 685 "./Graphics/UI/Gtk/MenuComboToolbar/ComboBox.chs" #-}

    -- %hash c:ea5e
    -- | If wrap-width is set to a positive value, the list will be displayed in
    -- multiple columns, the number of columns is determined by wrap-width.
    --
    -- Allowed values: >= 0
    --
    -- Default value: 0
    --
    comboBoxWrapWidth :: ComboBoxClass self => Attr self Int
    comboBoxWrapWidth :: forall self. ComboBoxClass self => Attr self Int
    comboBoxWrapWidth = String -> Attr self Int
    forall gobj. GObjectClass gobj => String -> Attr gobj Int
    newAttrFromIntProperty String
    "wrap-width"

    -- %hash c:a445
    -- | The values of that column are used to determine how many rows a value in
    -- the list will span. Therefore, the values in the model column pointed to by
    -- this property must be greater than zero and not larger than wrap-width.
    --
    -- Default value: 'invalidColumnId'
    --
    -- * Available since Gtk+ version 2.6
    --
    comboBoxRowSpanColumn :: ComboBoxClass self => Attr self (ColumnId row Int)
    comboBoxRowSpanColumn :: forall self row. ComboBoxClass self => Attr self (ColumnId row Int)
    comboBoxRowSpanColumn = (self -> IO (ColumnId row Int))
    -> (self -> ColumnId row Int -> IO ())
    -> ReadWriteAttr self (ColumnId row Int) (ColumnId row Int)
    forall o a b.
    (o -> IO a) -> (o -> b -> IO ()) -> ReadWriteAttr o a b
    newAttr
      self -> IO (ColumnId row Int)
    forall self row.
    ComboBoxClass self =>
    self -> IO (ColumnId row Int)
    comboBoxGetRowSpanColumn
      self -> ColumnId row Int -> IO ()
    forall self row.
    ComboBoxClass self =>
    self -> ColumnId row Int -> IO ()
    comboBoxSetRowSpanColumn

    -- %hash c:7ec7
    -- | The values of that column are used to determine how many columns a value
    -- in the list will span.
    --
    -- Default value: 'invalidColumnId'
    --
    -- * Available since Gtk+ version 2.6
    --
    comboBoxColumnSpanColumn :: ComboBoxClass self => Attr self (ColumnId row Int)
    comboBoxColumnSpanColumn :: forall self row. ComboBoxClass self => Attr self (ColumnId row Int)
    comboBoxColumnSpanColumn = (self -> IO (ColumnId row Int))
    -> (self -> ColumnId row Int -> IO ())
    -> ReadWriteAttr self (ColumnId row Int) (ColumnId row Int)
    forall o a b.
    (o -> IO a) -> (o -> b -> IO ()) -> ReadWriteAttr o a b
    newAttr
      self -> IO (ColumnId row Int)
    forall self row.
    ComboBoxClass self =>
    self -> IO (ColumnId row Int)
    comboBoxGetColumnSpanColumn
      self -> ColumnId row Int -> IO ()
    forall self row.
    ComboBoxClass self =>
    self -> ColumnId row Int -> IO ()
    comboBoxSetColumnSpanColumn

    -- %hash c:f777 d:507b
    -- | The item which is currently active. This value only makes sense for
    -- a list model.
    --
    comboBoxActive :: ComboBoxClass self => Attr self Int
    comboBoxActive :: forall self. ComboBoxClass self => Attr self Int
    comboBoxActive = String -> Attr self Int
    forall gobj. GObjectClass gobj => String -> Attr gobj Int
    newAttrFromIntProperty String
    "active"

    -- %hash c:585b d:2096
    -- | The add-tearoffs property controls whether generated menus have tearoff
    -- menu items.
    --
    -- Note that this only affects menu style combo boxes.
    --
    -- Default value: @False@
    --
    -- * Available since Gtk+ version 2.6
    --
    comboBoxAddTearoffs :: ComboBoxClass self => Attr self Bool
    comboBoxAddTearoffs :: forall self. ComboBoxClass self => Attr self Bool
    comboBoxAddTearoffs = String -> Attr self Bool
    forall gobj. GObjectClass gobj => String -> Attr gobj Bool
    newAttrFromBoolProperty String
    "add-tearoffs"

    -- %hash d:94cc
    -- | The has-frame property controls whether a frame is drawn around the
    -- entry.
    --
    -- Default value: @True@
    --
    -- * Available since Gtk+ version 2.6
    --
    comboBoxHasFrame :: ComboBoxClass self => Attr self Bool
    comboBoxHasFrame :: forall self. ComboBoxClass self => Attr self Bool
    comboBoxHasFrame = String -> Attr self Bool
    forall gobj. GObjectClass gobj => String -> Attr gobj Bool
    newAttrFromBoolProperty String
    "has-frame"

    -- %hash c:4808
    -- | Whether the combo box grabs focus when it is clicked with the mouse.
    --
    -- Default value: @True@
    --
    comboBoxFocusOnClick :: ComboBoxClass self => Attr self Bool
    comboBoxFocusOnClick :: forall self. ComboBoxClass self => Attr self Bool
    comboBoxFocusOnClick = String -> Attr self Bool
    forall gobj. GObjectClass gobj => String -> Attr gobj Bool
    newAttrFromBoolProperty String
    "focus-on-click"

    -- %hash c:c1e3 d:ddac
    -- | A title that may be displayed by the window manager when the popup is
    -- torn-off.
    --
    -- Default value: \"\"
    --
    -- * Available since Gtk+ version 2.10
    --
    comboBoxTearoffTitle :: (ComboBoxClass self, GlibString string) => Attr self string
    comboBoxTearoffTitle :: forall self string.
    (ComboBoxClass self, GlibString string) =>
    Attr self string
    comboBoxTearoffTitle = String -> Attr self string
    forall gobj string.
    (GObjectClass gobj, GlibString string) =>
    String -> Attr gobj string
    newAttrFromStringProperty String
    "tearoff-title"

    -- %hash c:efa9 d:89e5
    -- | Whether the combo boxes dropdown is popped up. Note that this property is
    -- mainly useful because it allows you to connect to notify::popup-shown.
    --
    -- Default value: @False@
    --
    -- * Available since Gtk+ version 2.10
    --
    comboBoxPopupShown :: ComboBoxClass self => ReadAttr self Bool
    comboBoxPopupShown :: forall self. ComboBoxClass self => ReadAttr self Bool
    comboBoxPopupShown = String -> ReadAttr self Bool
    forall gobj. GObjectClass gobj => String -> ReadAttr gobj Bool
    readAttrFromBoolProperty String
    "popup-shown"

    -- %hash c:52a1 d:79e8
    -- | \'title\' property. See 'comboBoxGetTitle' and 'comboBoxSetTitle'
    --
    -- * Available since Gtk+ version 2.10
    --
    comboBoxTitle :: (ComboBoxClass self, GlibString string) => Attr self string
    comboBoxTitle :: forall self string.
    (ComboBoxClass self, GlibString string) =>
    Attr self string
    comboBoxTitle = (self -> IO string)
    -> (self -> string -> IO ()) -> ReadWriteAttr self string string
    forall o a b.
    (o -> IO a) -> (o -> b -> IO ()) -> ReadWriteAttr o a b
    newAttr
      self -> IO string
    forall self string.
    (ComboBoxClass self, GlibString string) =>
    self -> IO string
    comboBoxGetTitle
      self -> string -> IO ()
    forall self string.
    (ComboBoxClass self, GlibString string) =>
    self -> string -> IO ()
    comboBoxSetTitle

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

    -- %hash c:4cee d:36c9
    -- | The changed signal is emitted when the active item is changed. The can be
    -- due to the user selecting a different item from the list, or due to a call
    -- to 'comboBoxSetActiveIter'. It will also be emitted while typing into a
    -- 'ComboBoxEntry', as well as when selecting an item from the
    -- 'ComboBoxEntry''s list.
    --
    changed :: ComboBoxClass self => Signal self (IO ())
    changed :: forall self. ComboBoxClass self => Signal self (IO ())
    changed = (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
    "changed")

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

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

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

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

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

    foreign import ccall safe "gtk_combo_box_get_wrap_width"
      gtk_combo_box_get_wrap_width :: ((Ptr ComboBox) -> (IO CInt))

    foreign import ccall safe "gtk_combo_box_set_wrap_width"
      gtk_combo_box_set_wrap_width :: ((Ptr ComboBox) -> (CInt -> (IO ())))

    foreign import ccall safe "gtk_combo_box_get_row_span_column"
      gtk_combo_box_get_row_span_column :: ((Ptr ComboBox) -> (IO CInt))

    foreign import ccall safe "gtk_combo_box_set_row_span_column"
      gtk_combo_box_set_row_span_column :: ((Ptr ComboBox) -> (CInt -> (IO ())))

    foreign import ccall safe "gtk_combo_box_get_column_span_column"
      gtk_combo_box_get_column_span_column :: ((Ptr ComboBox) -> (IO CInt))

    foreign import ccall safe "gtk_combo_box_set_column_span_column"
      gtk_combo_box_set_column_span_column :: ((Ptr ComboBox) -> (CInt -> (IO ())))

    foreign import ccall safe "gtk_combo_box_get_active"
      gtk_combo_box_get_active :: ((Ptr ComboBox) -> (IO CInt))

    foreign import ccall safe "gtk_combo_box_set_active"
      gtk_combo_box_set_active :: ((Ptr ComboBox) -> (CInt -> (IO ())))

    foreign import ccall safe "gtk_combo_box_get_active_iter"
      gtk_combo_box_get_active_iter :: ((Ptr ComboBox) -> ((Ptr TreeIter) -> (IO CInt)))

    foreign import ccall safe "gtk_combo_box_set_active_iter"
      gtk_combo_box_set_active_iter :: ((Ptr ComboBox) -> ((Ptr TreeIter) -> (IO ())))

    foreign import ccall unsafe "gtk_combo_box_get_model"
      gtk_combo_box_get_model :: ((Ptr ComboBox) -> (IO (Ptr TreeModel)))

    foreign import ccall safe "gtk_combo_box_set_model"
      gtk_combo_box_set_model :: ((Ptr ComboBox) -> ((Ptr TreeModel) -> (IO ())))

    foreign import ccall safe "gtk_combo_box_popup"
      gtk_combo_box_popup :: ((Ptr ComboBox) -> (IO ()))

    foreign import ccall safe "gtk_combo_box_popdown"
      gtk_combo_box_popdown :: ((Ptr ComboBox) -> (IO ()))

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

    foreign import ccall safe "gtk_combo_box_set_add_tearoffs"
      gtk_combo_box_set_add_tearoffs :: ((Ptr ComboBox) -> (CInt -> (IO ())))

    foreign import ccall safe "gtk_combo_box_get_add_tearoffs"
      gtk_combo_box_get_add_tearoffs :: ((Ptr ComboBox) -> (IO CInt))

    foreign import ccall safe "gtk_combo_box_set_title"
      gtk_combo_box_set_title :: ((Ptr ComboBox) -> ((Ptr CChar) -> (IO ())))

    foreign import ccall safe "gtk_combo_box_get_title"
      gtk_combo_box_get_title :: ((Ptr ComboBox) -> (IO (Ptr CChar)))

    foreign import ccall safe "gtk_combo_box_get_has_entry"
      gtk_combo_box_get_has_entry :: ((Ptr ComboBox) -> (IO CInt))

    foreign import ccall safe "gtk_combo_box_set_entry_text_column"
      gtk_combo_box_set_entry_text_column :: ((Ptr ComboBox) -> (CInt -> (IO ())))

    foreign import ccall safe "gtk_combo_box_get_entry_text_column"
      gtk_combo_box_get_entry_text_column :: ((Ptr ComboBox) -> (IO CInt))

    foreign import ccall safe "gtk_combo_box_set_focus_on_click"
      gtk_combo_box_set_focus_on_click :: ((Ptr ComboBox) -> (CInt -> (IO ())))

    foreign import ccall safe "gtk_combo_box_get_focus_on_click"
      gtk_combo_box_get_focus_on_click :: ((Ptr ComboBox) -> (IO CInt))

    foreign import ccall unsafe "gtk_tree_model_get_type"
      gtk_tree_model_get_type :: CULong