{-# LINE 2 "./Graphics/UI/Gtk/MenuComboToolbar/Toolbar.chs" #-}
-- -*-haskell-*-
-- GIMP Toolkit (GTK) Widget Toolbar
--
-- Author : Axel Simon
--
-- Created: 23 May 2001
--
-- Copyright (C) 1999-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.
--
-- |
-- Maintainer : gtk2hs-users@lists.sourceforge.net
-- Stability : provisional
-- Portability : portable (depends on GHC)
--
-- Create bars of buttons and other widgets
--
module Graphics.UI.Gtk.MenuComboToolbar.Toolbar (
-- * Detail
--
-- | This widget underwent a significant overhaul in gtk 2.4 and the
-- recommended api changed substantially. The old interface is still supported
-- but it is not recommended.
--
-- * The following information applies to the new interface only.
--
-- A toolbar is created with a call to 'toolbarNew'.
--
-- A toolbar can contain instances of a subclass of 'ToolItem'. To add a
-- 'ToolItem' to the a toolbar, use 'toolbarInsert'. To remove an item from the
-- toolbar use 'containerRemove'. To add a button to the toolbar, add an
-- instance of 'ToolButton'.
--
-- Toolbar items can be visually grouped by adding instances of
-- 'SeparatorToolItem' to the toolbar. If a 'SeparatorToolItem' has the
-- \"expand\" property set to @True@ and the \"draw\" property set to @False@
-- the effect is to force all following items to the end of the toolbar.
--
-- Creating a context menu for the toolbar can be done using
-- 'onPopupContextMenu'.
{-# LINE 72 "./Graphics/UI/Gtk/MenuComboToolbar/Toolbar.chs" #-}
-- * Class Hierarchy
-- |
-- @
-- | 'GObject'
-- | +----'Object'
-- | +----'Widget'
-- | +----'Container'
-- | +----Toolbar
-- @

-- * Types
  Toolbar,
  ToolbarClass,
  castToToolbar, gTypeToolbar,
  toToolbar,
  Orientation(..),
  ToolbarStyle(..),

-- * Constructors
  toolbarNew,

-- * Methods
{-# LINE 112 "./Graphics/UI/Gtk/MenuComboToolbar/Toolbar.chs" #-}
  toolbarSetStyle,
  toolbarGetStyle,
  toolbarUnsetStyle,




  IconSize(..),



  toolbarGetIconSize,

  toolbarInsert,
  toolbarGetItemIndex,
  toolbarGetNItems,
  toolbarGetNthItem,
  toolbarGetDropIndex,
  toolbarSetDropHighlightItem,
  toolbarSetShowArrow,
  toolbarGetShowArrow,
  ReliefStyle(..),
  toolbarGetReliefStyle,


-- * Attributes




  toolbarShowArrow,






  toolbarStyle,

-- * Child Attributes
  toolbarChildExpand,
  toolbarChildHomogeneous,

-- * Signals
  onOrientationChanged,
  afterOrientationChanged,
  onStyleChanged,
  afterStyleChanged,
  onPopupContextMenu,
  afterPopupContextMenu,
  ) where

import Control.Monad (liftM)
{-# LINE 174 "./Graphics/UI/Gtk/MenuComboToolbar/Toolbar.chs" #-}
import System.Glib.FFI
import System.Glib.Attributes
import System.Glib.Properties
import Graphics.UI.Gtk.Abstract.Object (makeNewObject)
import Graphics.UI.Gtk.Types
{-# LINE 179 "./Graphics/UI/Gtk/MenuComboToolbar/Toolbar.chs" #-}
import Graphics.UI.Gtk.Signals
{-# LINE 180 "./Graphics/UI/Gtk/MenuComboToolbar/Toolbar.chs" #-}
import Graphics.UI.Gtk.Abstract.ContainerChildProperties
import Graphics.UI.Gtk.General.Enums (Orientation(..), ToolbarStyle(..),
                                         ReliefStyle(..))
import Graphics.UI.Gtk.General.Structs (






                                         IconSize(..))


{-# LINE 193 "./Graphics/UI/Gtk/MenuComboToolbar/Toolbar.chs" #-}

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

-- | Creates a new toolbar.
--
toolbarNew :: IO Toolbar
toolbarNew :: IO Toolbar
toolbarNew =
  (ForeignPtr Toolbar -> Toolbar, FinalizerPtr Toolbar)
-> IO (Ptr Toolbar) -> IO Toolbar
forall obj.
GObjectClass obj =>
(ForeignPtr obj -> obj, FinalizerPtr obj) -> IO (Ptr obj) -> IO obj
makeNewObject (ForeignPtr Toolbar -> Toolbar, FinalizerPtr Toolbar)
forall {a}. (ForeignPtr Toolbar -> Toolbar, FinalizerPtr a)
mkToolbar (IO (Ptr Toolbar) -> IO Toolbar) -> IO (Ptr Toolbar) -> IO Toolbar
forall a b. (a -> b) -> a -> b
$
  (Ptr Widget -> Ptr Toolbar) -> IO (Ptr Widget) -> IO (Ptr Toolbar)
forall (m :: * -> *) a1 r. Monad m => (a1 -> r) -> m a1 -> m r
liftM (Ptr Widget -> Ptr Toolbar
forall a b. Ptr a -> Ptr b
castPtr :: Ptr Widget -> Ptr Toolbar) (IO (Ptr Widget) -> IO (Ptr Toolbar))
-> IO (Ptr Widget) -> IO (Ptr Toolbar)
forall a b. (a -> b) -> a -> b
$
  IO (Ptr Widget)
gtk_toolbar_new
{-# LINE 204 "./Graphics/UI/Gtk/MenuComboToolbar/Toolbar.chs" #-}

--------------------
-- Methods
{-# LINE 474 "./Graphics/UI/Gtk/MenuComboToolbar/Toolbar.chs" #-}
-- | Alters the view of the toolbar to display either icons only, text only, or
-- both.
--
toolbarSetStyle :: ToolbarClass self => self -> ToolbarStyle -> IO ()
toolbarSetStyle :: forall self. ToolbarClass self => self -> ToolbarStyle -> IO ()
toolbarSetStyle self
self ToolbarStyle
style =
  (\(Toolbar ForeignPtr Toolbar
arg1) CInt
arg2 -> ForeignPtr Toolbar -> (Ptr Toolbar -> IO ()) -> IO ()
forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
withForeignPtr ForeignPtr Toolbar
arg1 ((Ptr Toolbar -> IO ()) -> IO ())
-> (Ptr Toolbar -> IO ()) -> IO ()
forall a b. (a -> b) -> a -> b
$ \Ptr Toolbar
argPtr1 ->Ptr Toolbar -> CInt -> IO ()
gtk_toolbar_set_style Ptr Toolbar
argPtr1 CInt
arg2)
{-# LINE 480 "./Graphics/UI/Gtk/MenuComboToolbar/Toolbar.chs" #-}
    (toToolbar self)
    ((Int -> CInt
forall a b. (Integral a, Num b) => a -> b
fromIntegral (Int -> CInt) -> (ToolbarStyle -> Int) -> ToolbarStyle -> CInt
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ToolbarStyle -> Int
forall a. Enum a => a -> Int
fromEnum) ToolbarStyle
style)

-- | Retrieves whether the toolbar has text, icons, or both. See
-- 'toolbarSetStyle'.
--
toolbarGetStyle :: ToolbarClass self => self -> IO ToolbarStyle
toolbarGetStyle :: forall self. ToolbarClass self => self -> IO ToolbarStyle
toolbarGetStyle self
self =
  (CInt -> ToolbarStyle) -> IO CInt -> IO ToolbarStyle
forall (m :: * -> *) a1 r. Monad m => (a1 -> r) -> m a1 -> m r
liftM (Int -> ToolbarStyle
forall a. Enum a => Int -> a
toEnum (Int -> ToolbarStyle) -> (CInt -> Int) -> CInt -> ToolbarStyle
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 ToolbarStyle) -> IO CInt -> IO ToolbarStyle
forall a b. (a -> b) -> a -> b
$
  (\(Toolbar ForeignPtr Toolbar
arg1) -> ForeignPtr Toolbar -> (Ptr Toolbar -> IO CInt) -> IO CInt
forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
withForeignPtr ForeignPtr Toolbar
arg1 ((Ptr Toolbar -> IO CInt) -> IO CInt)
-> (Ptr Toolbar -> IO CInt) -> IO CInt
forall a b. (a -> b) -> a -> b
$ \Ptr Toolbar
argPtr1 ->Ptr Toolbar -> IO CInt
gtk_toolbar_get_style Ptr Toolbar
argPtr1)
{-# LINE 490 "./Graphics/UI/Gtk/MenuComboToolbar/Toolbar.chs" #-}
    (toToolbar self)

-- | Unsets a toolbar style set with 'toolbarSetStyle', so that user
-- preferences will be used to determine the toolbar style.
--
toolbarUnsetStyle :: ToolbarClass self => self -> IO ()
toolbarUnsetStyle :: forall self. ToolbarClass self => self -> IO ()
toolbarUnsetStyle self
self =
  (\(Toolbar ForeignPtr Toolbar
arg1) -> ForeignPtr Toolbar -> (Ptr Toolbar -> IO ()) -> IO ()
forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
withForeignPtr ForeignPtr Toolbar
arg1 ((Ptr Toolbar -> IO ()) -> IO ())
-> (Ptr Toolbar -> IO ()) -> IO ()
forall a b. (a -> b) -> a -> b
$ \Ptr Toolbar
argPtr1 ->Ptr Toolbar -> IO ()
gtk_toolbar_unset_style Ptr Toolbar
argPtr1)
{-# LINE 498 "./Graphics/UI/Gtk/MenuComboToolbar/Toolbar.chs" #-}
    (toToolbar self)
{-# LINE 541 "./Graphics/UI/Gtk/MenuComboToolbar/Toolbar.chs" #-}
-- | Retrieves the icon size for the toolbar. See 'toolbarSetIconSize'.
--
toolbarGetIconSize :: ToolbarClass self => self -> IO IconSize
toolbarGetIconSize :: forall self. ToolbarClass self => self -> IO IconSize
toolbarGetIconSize self
self =
  (CInt -> IconSize) -> IO CInt -> IO IconSize
forall (m :: * -> *) a1 r. Monad m => (a1 -> r) -> m a1 -> m r
liftM (Int -> IconSize
forall a. Enum a => Int -> a
toEnum (Int -> IconSize) -> (CInt -> Int) -> CInt -> IconSize
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 IconSize) -> IO CInt -> IO IconSize
forall a b. (a -> b) -> a -> b
$
  (\(Toolbar ForeignPtr Toolbar
arg1) -> ForeignPtr Toolbar -> (Ptr Toolbar -> IO CInt) -> IO CInt
forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
withForeignPtr ForeignPtr Toolbar
arg1 ((Ptr Toolbar -> IO CInt) -> IO CInt)
-> (Ptr Toolbar -> IO CInt) -> IO CInt
forall a b. (a -> b) -> a -> b
$ \Ptr Toolbar
argPtr1 ->Ptr Toolbar -> IO CInt
gtk_toolbar_get_icon_size Ptr Toolbar
argPtr1)
{-# LINE 547 "./Graphics/UI/Gtk/MenuComboToolbar/Toolbar.chs" #-}
    (toToolbar self)


-- | Insert a 'ToolItem' into the toolbar at position @pos@. If @pos@ is 0 the
-- item is prepended to the start of the toolbar. If @pos@ is negative, the
-- item is appended to the end of the toolbar.
--
-- * Available since Gtk version 2.4
--
toolbarInsert :: (ToolbarClass self, ToolItemClass item) => self
 -> item -- ^ @item@ - a 'ToolItem'
 -> Int -- ^ @pos@ - the position of the new item
 -> IO ()
toolbarInsert :: forall self item.
(ToolbarClass self, ToolItemClass item) =>
self -> item -> Int -> IO ()
toolbarInsert self
self item
item Int
pos =
  (\(Toolbar ForeignPtr Toolbar
arg1) (ToolItem ForeignPtr ToolItem
arg2) CInt
arg3 -> ForeignPtr Toolbar -> (Ptr Toolbar -> IO ()) -> IO ()
forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
withForeignPtr ForeignPtr Toolbar
arg1 ((Ptr Toolbar -> IO ()) -> IO ())
-> (Ptr Toolbar -> IO ()) -> IO ()
forall a b. (a -> b) -> a -> b
$ \Ptr Toolbar
argPtr1 ->ForeignPtr ToolItem -> (Ptr ToolItem -> IO ()) -> IO ()
forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
withForeignPtr ForeignPtr ToolItem
arg2 ((Ptr ToolItem -> IO ()) -> IO ())
-> (Ptr ToolItem -> IO ()) -> IO ()
forall a b. (a -> b) -> a -> b
$ \Ptr ToolItem
argPtr2 ->Ptr Toolbar -> Ptr ToolItem -> CInt -> IO ()
gtk_toolbar_insert Ptr Toolbar
argPtr1 Ptr ToolItem
argPtr2 CInt
arg3)
{-# LINE 562 "./Graphics/UI/Gtk/MenuComboToolbar/Toolbar.chs" #-}
    (toToolbar self)
    (item -> ToolItem
forall o. ToolItemClass o => o -> ToolItem
toToolItem item
item)
    (Int -> CInt
forall a b. (Integral a, Num b) => a -> b
fromIntegral Int
pos)

-- | Returns the position of @item@ on the toolbar, starting from 0. It is an
-- error if @item@ is not a child of the toolbar.
--
-- * Available since Gtk version 2.4
--
toolbarGetItemIndex :: (ToolbarClass self, ToolItemClass item) => self
 -> item -- ^ @item@ - a 'ToolItem' that is a child of @toolbar@
 -> IO Int -- ^ returns the position of item on the toolbar.
toolbarGetItemIndex :: forall self item.
(ToolbarClass self, ToolItemClass item) =>
self -> item -> IO Int
toolbarGetItemIndex self
self item
item =
  (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
$
  (\(Toolbar ForeignPtr Toolbar
arg1) (ToolItem ForeignPtr ToolItem
arg2) -> ForeignPtr Toolbar -> (Ptr Toolbar -> IO CInt) -> IO CInt
forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
withForeignPtr ForeignPtr Toolbar
arg1 ((Ptr Toolbar -> IO CInt) -> IO CInt)
-> (Ptr Toolbar -> IO CInt) -> IO CInt
forall a b. (a -> b) -> a -> b
$ \Ptr Toolbar
argPtr1 ->ForeignPtr ToolItem -> (Ptr ToolItem -> IO CInt) -> IO CInt
forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
withForeignPtr ForeignPtr ToolItem
arg2 ((Ptr ToolItem -> IO CInt) -> IO CInt)
-> (Ptr ToolItem -> IO CInt) -> IO CInt
forall a b. (a -> b) -> a -> b
$ \Ptr ToolItem
argPtr2 ->Ptr Toolbar -> Ptr ToolItem -> IO CInt
gtk_toolbar_get_item_index Ptr Toolbar
argPtr1 Ptr ToolItem
argPtr2)
{-# LINE 577 "./Graphics/UI/Gtk/MenuComboToolbar/Toolbar.chs" #-}
    (toToolbar self)
    (item -> ToolItem
forall o. ToolItemClass o => o -> ToolItem
toToolItem item
item)

-- | Returns the number of items on the toolbar.
--
-- * Available since Gtk version 2.4
--
toolbarGetNItems :: ToolbarClass self => self -> IO Int
toolbarGetNItems :: forall self. ToolbarClass self => self -> IO Int
toolbarGetNItems 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
$
  (\(Toolbar ForeignPtr Toolbar
arg1) -> ForeignPtr Toolbar -> (Ptr Toolbar -> IO CInt) -> IO CInt
forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
withForeignPtr ForeignPtr Toolbar
arg1 ((Ptr Toolbar -> IO CInt) -> IO CInt)
-> (Ptr Toolbar -> IO CInt) -> IO CInt
forall a b. (a -> b) -> a -> b
$ \Ptr Toolbar
argPtr1 ->Ptr Toolbar -> IO CInt
gtk_toolbar_get_n_items Ptr Toolbar
argPtr1)
{-# LINE 588 "./Graphics/UI/Gtk/MenuComboToolbar/Toolbar.chs" #-}
    (toToolbar self)

-- | Returns the @n@\'th item on toolbar, or @Nothing@ if the toolbar does not
-- contain an @n@'th item.
--
-- * Available since Gtk+ version 2.4
--
toolbarGetNthItem :: ToolbarClass self => self
 -> Int -- ^ @n@ - A position on the toolbar
 -> IO (Maybe ToolItem) -- ^ returns The @n@'th 'ToolItem' on the toolbar, or
                        -- @Nothing@ if there isn't an @n@\'th item.
toolbarGetNthItem :: forall self.
ToolbarClass self =>
self -> Int -> IO (Maybe ToolItem)
toolbarGetNthItem self
self Int
n =
  (IO (Ptr ToolItem) -> IO ToolItem)
-> IO (Ptr ToolItem) -> IO (Maybe ToolItem)
forall a. (IO (Ptr a) -> IO a) -> IO (Ptr a) -> IO (Maybe a)
maybeNull ((ForeignPtr ToolItem -> ToolItem, FinalizerPtr ToolItem)
-> IO (Ptr ToolItem) -> IO ToolItem
forall obj.
GObjectClass obj =>
(ForeignPtr obj -> obj, FinalizerPtr obj) -> IO (Ptr obj) -> IO obj
makeNewObject (ForeignPtr ToolItem -> ToolItem, FinalizerPtr ToolItem)
forall {a}. (ForeignPtr ToolItem -> ToolItem, FinalizerPtr a)
mkToolItem) (IO (Ptr ToolItem) -> IO (Maybe ToolItem))
-> IO (Ptr ToolItem) -> IO (Maybe ToolItem)
forall a b. (a -> b) -> a -> b
$
  (\(Toolbar ForeignPtr Toolbar
arg1) CInt
arg2 -> ForeignPtr Toolbar
-> (Ptr Toolbar -> IO (Ptr ToolItem)) -> IO (Ptr ToolItem)
forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
withForeignPtr ForeignPtr Toolbar
arg1 ((Ptr Toolbar -> IO (Ptr ToolItem)) -> IO (Ptr ToolItem))
-> (Ptr Toolbar -> IO (Ptr ToolItem)) -> IO (Ptr ToolItem)
forall a b. (a -> b) -> a -> b
$ \Ptr Toolbar
argPtr1 ->Ptr Toolbar -> CInt -> IO (Ptr ToolItem)
gtk_toolbar_get_nth_item Ptr Toolbar
argPtr1 CInt
arg2)
{-# LINE 602 "./Graphics/UI/Gtk/MenuComboToolbar/Toolbar.chs" #-}
    (toToolbar self)
    (Int -> CInt
forall a b. (Integral a, Num b) => a -> b
fromIntegral Int
n)

-- | Returns the position corresponding to the indicated point on toolbar.
-- This is useful when dragging items to the toolbar: this function returns the
-- position a new item should be inserted.
--
-- * Available since Gtk version 2.4
--
toolbarGetDropIndex :: ToolbarClass self => self
 -> (Int, Int) -- ^ @(x, y)@ - coordinate of a point on the toolbar. Note that
           -- @(x, y)@ are in toolbar coordinates, not window coordinates.
 -> IO Int -- ^ returns The position corresponding to the point @(x, y)@ on
           -- the toolbar.
toolbarGetDropIndex :: forall self. ToolbarClass self => self -> (Int, Int) -> IO Int
toolbarGetDropIndex self
self (Int
x,Int
y) =
  (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
$
  (\(Toolbar ForeignPtr Toolbar
arg1) CInt
arg2 CInt
arg3 -> ForeignPtr Toolbar -> (Ptr Toolbar -> IO CInt) -> IO CInt
forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
withForeignPtr ForeignPtr Toolbar
arg1 ((Ptr Toolbar -> IO CInt) -> IO CInt)
-> (Ptr Toolbar -> IO CInt) -> IO CInt
forall a b. (a -> b) -> a -> b
$ \Ptr Toolbar
argPtr1 ->Ptr Toolbar -> CInt -> CInt -> IO CInt
gtk_toolbar_get_drop_index Ptr Toolbar
argPtr1 CInt
arg2 CInt
arg3)
{-# LINE 619 "./Graphics/UI/Gtk/MenuComboToolbar/Toolbar.chs" #-}
    (toToolbar 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)

-- | Highlights the toolbar to give an idea of what it would look like if @item@
-- was added to toolbar at the position indicated by @index@. If @item@ is
-- @Nothing@, highlighting is turned off (and the index is ignored).
--
-- The @toolItem@ passed to this function must not be part of any widget
-- hierarchy. When an item is set as a drop highlight item it can not added to
-- any widget hierarchy or used as highlight item for another toolbar.
--
-- * Available since Gtk version 2.4
--
toolbarSetDropHighlightItem :: (ToolbarClass self, ToolItemClass toolItem) => self
 -> Maybe toolItem -- ^ @toolItem@ - a 'ToolItem', or @Nothing@ to turn of
                   -- highlighting
 -> Int -- ^ @index@ - a position on the toolbar
 -> IO ()
toolbarSetDropHighlightItem :: forall self toolItem.
(ToolbarClass self, ToolItemClass toolItem) =>
self -> Maybe toolItem -> Int -> IO ()
toolbarSetDropHighlightItem self
self Maybe toolItem
toolItem Int
index =
  (\(Toolbar ForeignPtr Toolbar
arg1) (ToolItem ForeignPtr ToolItem
arg2) CInt
arg3 -> ForeignPtr Toolbar -> (Ptr Toolbar -> IO ()) -> IO ()
forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
withForeignPtr ForeignPtr Toolbar
arg1 ((Ptr Toolbar -> IO ()) -> IO ())
-> (Ptr Toolbar -> IO ()) -> IO ()
forall a b. (a -> b) -> a -> b
$ \Ptr Toolbar
argPtr1 ->ForeignPtr ToolItem -> (Ptr ToolItem -> IO ()) -> IO ()
forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
withForeignPtr ForeignPtr ToolItem
arg2 ((Ptr ToolItem -> IO ()) -> IO ())
-> (Ptr ToolItem -> IO ()) -> IO ()
forall a b. (a -> b) -> a -> b
$ \Ptr ToolItem
argPtr2 ->Ptr Toolbar -> Ptr ToolItem -> CInt -> IO ()
gtk_toolbar_set_drop_highlight_item Ptr Toolbar
argPtr1 Ptr ToolItem
argPtr2 CInt
arg3)
{-# LINE 640 "./Graphics/UI/Gtk/MenuComboToolbar/Toolbar.chs" #-}
    (toToolbar self)
    (ToolItem -> (toolItem -> ToolItem) -> Maybe toolItem -> ToolItem
forall b a. b -> (a -> b) -> Maybe a -> b
maybe (ForeignPtr ToolItem -> ToolItem
ToolItem ForeignPtr ToolItem
forall a. ForeignPtr a
nullForeignPtr) toolItem -> ToolItem
forall o. ToolItemClass o => o -> ToolItem
toToolItem Maybe toolItem
toolItem)
    (Int -> CInt
forall a b. (Integral a, Num b) => a -> b
fromIntegral Int
index)

-- | Sets whether to show an overflow menu when the toolbar doesn't have room
-- for all items on it. If @True@, items that there are not room are available
-- through an overflow menu.
--
-- * Available since Gtk version 2.4
--
toolbarSetShowArrow :: ToolbarClass self => self -> Bool -> IO ()
toolbarSetShowArrow :: forall self. ToolbarClass self => self -> Bool -> IO ()
toolbarSetShowArrow self
self Bool
showArrow =
  (\(Toolbar ForeignPtr Toolbar
arg1) CInt
arg2 -> ForeignPtr Toolbar -> (Ptr Toolbar -> IO ()) -> IO ()
forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
withForeignPtr ForeignPtr Toolbar
arg1 ((Ptr Toolbar -> IO ()) -> IO ())
-> (Ptr Toolbar -> IO ()) -> IO ()
forall a b. (a -> b) -> a -> b
$ \Ptr Toolbar
argPtr1 ->Ptr Toolbar -> CInt -> IO ()
gtk_toolbar_set_show_arrow Ptr Toolbar
argPtr1 CInt
arg2)
{-# LINE 653 "./Graphics/UI/Gtk/MenuComboToolbar/Toolbar.chs" #-}
    (toToolbar self)
    (Bool -> CInt
forall a. Num a => Bool -> a
fromBool Bool
showArrow)

-- | Returns whether the toolbar has an overflow menu. See
-- 'toolbarSetShowArrow'.
--
-- * Available since Gtk+ version 2.4
--
toolbarGetShowArrow :: ToolbarClass self => self -> IO Bool
toolbarGetShowArrow :: forall self. ToolbarClass self => self -> IO Bool
toolbarGetShowArrow 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
$
  (\(Toolbar ForeignPtr Toolbar
arg1) -> ForeignPtr Toolbar -> (Ptr Toolbar -> IO CInt) -> IO CInt
forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
withForeignPtr ForeignPtr Toolbar
arg1 ((Ptr Toolbar -> IO CInt) -> IO CInt)
-> (Ptr Toolbar -> IO CInt) -> IO CInt
forall a b. (a -> b) -> a -> b
$ \Ptr Toolbar
argPtr1 ->Ptr Toolbar -> IO CInt
gtk_toolbar_get_show_arrow Ptr Toolbar
argPtr1)
{-# LINE 665 "./Graphics/UI/Gtk/MenuComboToolbar/Toolbar.chs" #-}
    (toToolbar self)

-- | Returns the relief style of buttons on the toolbar. See 'buttonSetRelief'.
--
-- * Available since Gtk+ version 2.4
--
toolbarGetReliefStyle :: ToolbarClass self => self -> IO ReliefStyle
toolbarGetReliefStyle :: forall self. ToolbarClass self => self -> IO ReliefStyle
toolbarGetReliefStyle self
self =
  (CInt -> ReliefStyle) -> IO CInt -> IO ReliefStyle
forall (m :: * -> *) a1 r. Monad m => (a1 -> r) -> m a1 -> m r
liftM (Int -> ReliefStyle
forall a. Enum a => Int -> a
toEnum (Int -> ReliefStyle) -> (CInt -> Int) -> CInt -> ReliefStyle
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 ReliefStyle) -> IO CInt -> IO ReliefStyle
forall a b. (a -> b) -> a -> b
$
  (\(Toolbar ForeignPtr Toolbar
arg1) -> ForeignPtr Toolbar -> (Ptr Toolbar -> IO CInt) -> IO CInt
forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
withForeignPtr ForeignPtr Toolbar
arg1 ((Ptr Toolbar -> IO CInt) -> IO CInt)
-> (Ptr Toolbar -> IO CInt) -> IO CInt
forall a b. (a -> b) -> a -> b
$ \Ptr Toolbar
argPtr1 ->Ptr Toolbar -> IO CInt
gtk_toolbar_get_relief_style Ptr Toolbar
argPtr1)
{-# LINE 675 "./Graphics/UI/Gtk/MenuComboToolbar/Toolbar.chs" #-}
    (toToolbar self)


--------------------
-- Attributes
{-# LINE 693 "./Graphics/UI/Gtk/MenuComboToolbar/Toolbar.chs" #-}
-- | How to draw the toolbar.
--
-- Default value: 'ToolbarIcons'
--
toolbarStyle :: ToolbarClass self => Attr self ToolbarStyle
toolbarStyle :: forall self. ToolbarClass self => Attr self ToolbarStyle
toolbarStyle = String -> GType -> Attr self ToolbarStyle
forall gobj enum.
(GObjectClass gobj, Enum enum) =>
String -> GType -> Attr gobj enum
newAttrFromEnumProperty String
"toolbar-style"
  GType
gtk_toolbar_style_get_type
{-# LINE 700 "./Graphics/UI/Gtk/MenuComboToolbar/Toolbar.chs" #-}


-- | If an arrow should be shown if the toolbar doesn't fit.
--
-- Default value: @True@
--
toolbarShowArrow :: ToolbarClass self => Attr self Bool
toolbarShowArrow :: forall self. ToolbarClass self => Attr self Bool
toolbarShowArrow = (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. ToolbarClass self => self -> IO Bool
toolbarGetShowArrow
  self -> Bool -> IO ()
forall self. ToolbarClass self => self -> Bool -> IO ()
toolbarSetShowArrow
{-# LINE 725 "./Graphics/UI/Gtk/MenuComboToolbar/Toolbar.chs" #-}
--------------------
-- Child Attributes

-- | Whether the item should receive extra space when the toolbar grows.
--
-- Default value: @True@
--
toolbarChildExpand :: (ToolbarClass self, WidgetClass child) => child -> Attr self Bool
toolbarChildExpand :: forall self child.
(ToolbarClass self, WidgetClass child) =>
child -> Attr self Bool
toolbarChildExpand = String -> child -> Attr self Bool
forall container child.
(ContainerClass container, WidgetClass child) =>
String -> child -> Attr container Bool
newAttrFromContainerChildBoolProperty String
"expand"

-- | Whether the item should be the same size as other homogeneous items.
--
-- Default value: @True@
--
toolbarChildHomogeneous :: (ToolbarClass self, WidgetClass child) => child -> Attr self Bool
toolbarChildHomogeneous :: forall self child.
(ToolbarClass self, WidgetClass child) =>
child -> Attr self Bool
toolbarChildHomogeneous = String -> child -> Attr self Bool
forall container child.
(ContainerClass container, WidgetClass child) =>
String -> child -> Attr container Bool
newAttrFromContainerChildBoolProperty String
"homogeneous"

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

-- | Emitted when the orientation of the toolbar changes.
--
onOrientationChanged, afterOrientationChanged :: ToolbarClass self => self
 -> (Orientation -> IO ())
 -> IO (ConnectId self)
onOrientationChanged :: forall self.
ToolbarClass self =>
self -> (Orientation -> IO ()) -> IO (ConnectId self)
onOrientationChanged = String
-> Bool -> self -> (Orientation -> IO ()) -> IO (ConnectId self)
forall a obj.
(Enum a, GObjectClass obj) =>
String -> Bool -> obj -> (a -> IO ()) -> IO (ConnectId obj)
connect_ENUM__NONE String
"orientation-changed" Bool
False
afterOrientationChanged :: forall self.
ToolbarClass self =>
self -> (Orientation -> IO ()) -> IO (ConnectId self)
afterOrientationChanged = String
-> Bool -> self -> (Orientation -> IO ()) -> IO (ConnectId self)
forall a obj.
(Enum a, GObjectClass obj) =>
String -> Bool -> obj -> (a -> IO ()) -> IO (ConnectId obj)
connect_ENUM__NONE String
"orientation-changed" Bool
True

-- | Emitted when the style of the toolbar changes.
--
onStyleChanged, afterStyleChanged :: ToolbarClass self => self
 -> (ToolbarStyle -> IO ())
 -> IO (ConnectId self)
onStyleChanged :: forall self.
ToolbarClass self =>
self -> (ToolbarStyle -> IO ()) -> IO (ConnectId self)
onStyleChanged = String
-> Bool -> self -> (ToolbarStyle -> IO ()) -> IO (ConnectId self)
forall a obj.
(Enum a, GObjectClass obj) =>
String -> Bool -> obj -> (a -> IO ()) -> IO (ConnectId obj)
connect_ENUM__NONE String
"style-changed" Bool
False
afterStyleChanged :: forall self.
ToolbarClass self =>
self -> (ToolbarStyle -> IO ()) -> IO (ConnectId self)
afterStyleChanged = String
-> Bool -> self -> (ToolbarStyle -> IO ()) -> IO (ConnectId self)
forall a obj.
(Enum a, GObjectClass obj) =>
String -> Bool -> obj -> (a -> IO ()) -> IO (ConnectId obj)
connect_ENUM__NONE String
"style-changed" Bool
True

-- | Emitted when the user right-clicks the toolbar or uses the keybinding to
-- display a popup menu.
--
-- Application developers should handle this signal if they want to display
-- a context menu on the toolbar. The context-menu should appear at the
-- coordinates given by @x@ and @y@. The mouse button number is given by the
-- @button@ parameter. If the menu was popped up using the keyboard, @button@
-- is -1.
--
onPopupContextMenu, afterPopupContextMenu :: ToolbarClass self => self
 -> (Int -> Int -> Int -> IO Bool) -- ^ @(\x y button -> ...)@ - The handler
                                   -- should return True if the signal was
                                   -- handled, False if not.
 -> IO (ConnectId self)
onPopupContextMenu :: forall self.
ToolbarClass self =>
self -> (Int -> Int -> Int -> IO Bool) -> IO (ConnectId self)
onPopupContextMenu = String
-> Bool
-> self
-> (Int -> Int -> Int -> IO Bool)
-> IO (ConnectId self)
forall obj.
GObjectClass obj =>
String
-> Bool
-> obj
-> (Int -> Int -> Int -> IO Bool)
-> IO (ConnectId obj)
connect_INT_INT_INT__BOOL String
"popup-context-menu" Bool
False
afterPopupContextMenu :: forall self.
ToolbarClass self =>
self -> (Int -> Int -> Int -> IO Bool) -> IO (ConnectId self)
afterPopupContextMenu = String
-> Bool
-> self
-> (Int -> Int -> Int -> IO Bool)
-> IO (ConnectId self)
forall obj.
GObjectClass obj =>
String
-> Bool
-> obj
-> (Int -> Int -> Int -> IO Bool)
-> IO (ConnectId obj)
connect_INT_INT_INT__BOOL String
"popup-context-menu" Bool
True

foreign import ccall unsafe "gtk_toolbar_new"
  gtk_toolbar_new :: (IO (Ptr Widget))

foreign import ccall safe "gtk_toolbar_set_style"
  gtk_toolbar_set_style :: ((Ptr Toolbar) -> (CInt -> (IO ())))

foreign import ccall safe "gtk_toolbar_get_style"
  gtk_toolbar_get_style :: ((Ptr Toolbar) -> (IO CInt))

foreign import ccall safe "gtk_toolbar_unset_style"
  gtk_toolbar_unset_style :: ((Ptr Toolbar) -> (IO ()))

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

foreign import ccall safe "gtk_toolbar_insert"
  gtk_toolbar_insert :: ((Ptr Toolbar) -> ((Ptr ToolItem) -> (CInt -> (IO ()))))

foreign import ccall unsafe "gtk_toolbar_get_item_index"
  gtk_toolbar_get_item_index :: ((Ptr Toolbar) -> ((Ptr ToolItem) -> (IO CInt)))

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

foreign import ccall unsafe "gtk_toolbar_get_nth_item"
  gtk_toolbar_get_nth_item :: ((Ptr Toolbar) -> (CInt -> (IO (Ptr ToolItem))))

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

foreign import ccall safe "gtk_toolbar_set_drop_highlight_item"
  gtk_toolbar_set_drop_highlight_item :: ((Ptr Toolbar) -> ((Ptr ToolItem) -> (CInt -> (IO ()))))

foreign import ccall safe "gtk_toolbar_set_show_arrow"
  gtk_toolbar_set_show_arrow :: ((Ptr Toolbar) -> (CInt -> (IO ())))

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

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

foreign import ccall unsafe "gtk_toolbar_style_get_type"
  gtk_toolbar_style_get_type :: CULong