gtk3-0.13.8: Graphics/UI/Gtk/MenuComboToolbar/Toolbar.chs
{-# LANGUAGE CPP #-}
-- -*-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 signficant 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'.
#ifndef DISABLE_DEPRECATED
-- | * The following information applies to the old interface only.
--
-- 'Button's, 'RadioButton's and 'ToggleButton's can be added by refering to
-- stock images. Their size can be changed by calling 'toolbarSetIconSize'. In
-- contrast, normal widget cannot be added. Due to the bad interface of
-- "Toolbar" mnemonics of 'RadioButton's and 'ToggleButton's are not honored.
--
-- All the append, insert and prepend functions use an internal function to
-- do the actual work. In fact the interface is pretty skrewed up: To insert
-- icons by using stock items is definitely the best practice as all other
-- images cannot react to 'toolbarSetIconSize' and other theming actions. On
-- the other hand 'toolbarInsertStock' always generates simple 'Button's
-- but is the only function that is able to insert 'Mnemonic's on the label.
-- Our solution is to use 'StockItem's to specify all 'Images' of the
-- 'Buttons'. If the user inserts 'RadioButton's or 'ToggleButton's, the stock
-- image lookup is done manually. A mnemonic in the labels is sadly not
-- honored this way.
#endif
-- * Class Hierarchy
-- |
-- @
-- | 'GObject'
-- | +----'Object'
-- | +----'Widget'
-- | +----'Container'
-- | +----Toolbar
-- @
-- * Types
Toolbar,
ToolbarClass,
castToToolbar, gTypeToolbar,
toToolbar,
Orientation(..),
ToolbarStyle(..),
-- * Constructors
toolbarNew,
-- * Methods
#if GTK_MAJOR_VERSION < 3
#ifndef DISABLE_DEPRECATED
toolbarInsertNewButton,
toolbarAppendNewButton,
toolbarPrependNewButton,
toolbarInsertNewToggleButton,
toolbarAppendNewToggleButton,
toolbarPrependNewToggleButton,
toolbarInsertNewRadioButton,
toolbarAppendNewRadioButton,
toolbarPrependNewRadioButton,
toolbarInsertNewWidget,
toolbarAppendNewWidget,
toolbarPrependNewWidget,
#endif
toolbarSetOrientation,
toolbarGetOrientation,
#endif
toolbarSetStyle,
toolbarGetStyle,
toolbarUnsetStyle,
#if GTK_MAJOR_VERSION < 3
toolbarSetTooltips,
toolbarGetTooltips,
#endif
IconSize(..),
#ifndef DISABLE_DEPRECATED
toolbarSetIconSize,
#endif
toolbarGetIconSize,
#if GTK_CHECK_VERSION(2,4,0)
toolbarInsert,
toolbarGetItemIndex,
toolbarGetNItems,
toolbarGetNthItem,
toolbarGetDropIndex,
toolbarSetDropHighlightItem,
toolbarSetShowArrow,
toolbarGetShowArrow,
ReliefStyle(..),
toolbarGetReliefStyle,
#endif
-- * Attributes
#if GTK_MAJOR_VERSION < 3
toolbarOrientation,
#endif
#if GTK_CHECK_VERSION(2,4,0)
toolbarShowArrow,
#endif
#if GTK_CHECK_VERSION(2,8,0)
#if GTK_MAJOR_VERSION < 3
toolbarTooltips,
#endif
#endif
toolbarStyle,
-- * Child Attributes
toolbarChildExpand,
toolbarChildHomogeneous,
-- * Signals
onOrientationChanged,
afterOrientationChanged,
onStyleChanged,
afterStyleChanged,
onPopupContextMenu,
afterPopupContextMenu,
) where
import Control.Monad (liftM)
#if GTK_MAJOR_VERSION < 3
#ifndef DISABLE_DEPRECATED
import Data.Maybe (fromJust)
import qualified Data.Text as T (filter)
import Graphics.UI.Gtk.General.StockItems
import Graphics.UI.Gtk.Display.Image (imageNewFromStock)
import System.Glib.UTFString
#endif
#endif
import System.Glib.FFI
import System.Glib.Attributes
import System.Glib.Properties
import Graphics.UI.Gtk.Abstract.Object (makeNewObject)
{#import Graphics.UI.Gtk.Types#}
{#import Graphics.UI.Gtk.Signals#}
import Graphics.UI.Gtk.Abstract.ContainerChildProperties
import Graphics.UI.Gtk.General.Enums (Orientation(..), ToolbarStyle(..),
ReliefStyle(..))
import Graphics.UI.Gtk.General.Structs (
#if GTK_MAJOR_VERSION < 3
#ifndef DISABLE_DEPRECATED
toolbarChildToggleButton,
toolbarChildRadioButton,
#endif
#endif
IconSize(..))
{# context lib="gtk" prefix="gtk" #}
--------------------
-- Constructors
-- | Creates a new toolbar.
--
toolbarNew :: IO Toolbar
toolbarNew =
makeNewObject mkToolbar $
liftM (castPtr :: Ptr Widget -> Ptr Toolbar) $
{# call unsafe toolbar_new #}
--------------------
-- Methods
#if GTK_MAJOR_VERSION < 3
#ifndef DISABLE_DEPRECATED
-- Make tooltips or not?
--
mkToolText :: GlibString string => Maybe (string,string) -> (CString -> CString -> IO a) -> IO a
mkToolText Nothing fun = fun nullPtr nullPtr
mkToolText (Just (text,private)) fun = withUTFString text $ \txtPtr ->
withUTFString private $ \prvPtr -> fun txtPtr prvPtr
-- | Insert a new 'Button' into the 'Toolbar'.
--
-- The new 'Button' is created at position @pos@, counting from 0.
--
-- The icon and label for the button is referenced by @stockId@
-- which must be a valid entry in the 'Toolbar's Style or the
-- default 'IconFactory'.
--
-- If you whish to have 'Tooltips' added to this button you can
-- specify @Just (tipText, tipPrivate)@ , otherwise specify @Nothing@.
--
-- The newly created 'Button' is returned. Use this button to
-- add an action function with @\"connectToClicked\"@.
--
-- * Warning: this function is deprecated and should not be used in
-- newly-written code.
--
-- Removed in Gtk3.
toolbarInsertNewButton :: (ToolbarClass self, GlibString string) => self
-> Int
-> StockId
-> Maybe (string,string)
-> IO Button
toolbarInsertNewButton self pos stockId tooltips =
withUTFString stockId $ \stockPtr ->
mkToolText tooltips $ \textPtr privPtr ->
makeNewObject mkButton $ liftM castPtr $
{# call unsafe toolbar_insert_stock #}
(toToolbar self)
stockPtr
textPtr
privPtr
nullFunPtr
nullPtr
(fromIntegral pos)
-- | Append a new 'Button' to the 'Toolbar'.
--
-- See 'toolbarInsertNewButton' for details.
--
-- * Warning: this function is deprecated and should not be used in
-- newly-written code.
--
-- Removed in Gtk3.
toolbarAppendNewButton :: (ToolbarClass self, GlibString string) => self
-> StockId
-> Maybe (string, string)
-> IO Button
toolbarAppendNewButton self = toolbarInsertNewButton self (-1)
-- | Prepend a new 'Button' to the 'Toolbar'.
--
-- See 'toolbarInsertNewButton' for details.
--
-- * Warning: this function is deprecated and should not be used in
-- newly-written code.
--
-- Removed in Gtk3.
toolbarPrependNewButton :: (ToolbarClass self, GlibString string) => self
-> StockId
-> Maybe (string, string)
-> IO Button
toolbarPrependNewButton self = toolbarInsertNewButton self 0
-- | Insert a new 'ToggleButton' into the 'Toolbar'.
--
-- See 'toolbarInsertNewButton' for details.
--
-- * Warning: this function is deprecated and should not be used in
-- newly-written code.
--
-- Removed in Gtk3.
toolbarInsertNewToggleButton :: (ToolbarClass self, GlibString string) => self
-> Int
-> StockId
-> Maybe (string, string)
-> IO ToggleButton
toolbarInsertNewToggleButton self pos stockId tooltips = do
mItem <- stockLookupItem stockId
item <- case mItem of
(Just item) -> return item
Nothing -> liftM fromJust $ stockLookupItem stockMissingImage
let label = (T.filter (/= '_')) $ siLabel item
size <- toolbarGetIconSize (toToolbar self)
image <- imageNewFromStock stockId size
makeNewObject mkToggleButton $ liftM castPtr $
withUTFString label $ \lblPtr -> mkToolText tooltips $ \textPtr privPtr ->
{#call unsafe toolbar_insert_element#} (toToolbar self)
toolbarChildToggleButton (Widget nullForeignPtr) lblPtr
textPtr privPtr (toWidget image) nullFunPtr nullPtr (fromIntegral pos)
-- | Append a new 'ToggleButton' to the 'Toolbar'.
--
-- See 'toolbarInsertNewButton' for details.
--
-- * Warning: this function is deprecated and should not be used in
-- newly-written code.
--
-- Removed in Gtk3.
toolbarAppendNewToggleButton :: (ToolbarClass self, GlibString string) => self
-> StockId
-> Maybe (string, string)
-> IO ToggleButton
toolbarAppendNewToggleButton self = toolbarInsertNewToggleButton self (-1)
-- | Prepend a new 'ToggleButton' to the 'Toolbar'.
--
-- See 'toolbarInsertNewButton' for details.
--
-- * Warning: this function is deprecated and should not be used in
-- newly-written code.
--
-- Removed in Gtk3.
toolbarPrependNewToggleButton :: (ToolbarClass self, GlibString string) => self
-> StockId
-> Maybe (string, string)
-> IO ToggleButton
toolbarPrependNewToggleButton self = toolbarInsertNewToggleButton self 0
-- | Insert a new 'RadioButton' into the 'Toolbar'.
--
-- See 'toolbarInsertNewButton' for details.
--
-- * Warning: this function is deprecated and should not be used in
-- newly-written code.
--
-- The @parent@ argument must be set to another
-- 'RadioButton' in the group. If @Nothing@ is given,
-- a new group is generated (which is the desired behavious for the
-- first button of a group).
--
-- * Warning: this function is deprecated and should not be used in
-- newly-written code.
--
-- Removed in Gtk3.
toolbarInsertNewRadioButton :: (ToolbarClass self, RadioButtonClass rb, GlibString string) => self
-> Int
-> StockId
-> Maybe (string,string)
-> Maybe rb
-> IO RadioButton
toolbarInsertNewRadioButton self pos stockId tooltips rb = do
mItem <- stockLookupItem stockId
item <- case mItem of
(Just item) -> return item
Nothing -> liftM fromJust $ stockLookupItem stockMissingImage
let label = (T.filter (/= '_')) $ siLabel item
size <- toolbarGetIconSize (toToolbar self)
image <- imageNewFromStock stockId size
makeNewObject mkRadioButton $ liftM castPtr $
withUTFString label $ \lblPtr -> mkToolText tooltips $ \textPtr privPtr ->
{#call unsafe toolbar_insert_element#} (toToolbar self)
toolbarChildRadioButton (maybe (Widget nullForeignPtr) toWidget rb)
lblPtr textPtr privPtr (toWidget image) nullFunPtr nullPtr
(fromIntegral pos)
-- | Append a new 'RadioButton' to the 'Toolbar'.
--
-- See 'toolbarInsertNewButton' for details.
--
-- * Warning: this function is deprecated and should not be used in
-- newly-written code.
--
-- Removed in Gtk3.
toolbarAppendNewRadioButton :: (ToolbarClass self, RadioButtonClass rb, GlibString string) => self
-> StockId
-> Maybe (string, string)
-> Maybe rb
-> IO RadioButton
toolbarAppendNewRadioButton self = toolbarInsertNewRadioButton self (-1)
-- | Prepend a new 'RadioButton' to the 'Toolbar'.
--
-- See 'toolbarInsertNewButton' for details.
--
-- * Warning: this function is deprecated and should not be used in
-- newly-written code.
--
-- Removed in Gtk3.
toolbarPrependNewRadioButton :: (ToolbarClass self, RadioButtonClass rb, GlibString string) => self
-> StockId
-> Maybe (string, string)
-> Maybe rb
-> IO RadioButton
toolbarPrependNewRadioButton self = toolbarInsertNewRadioButton self 0
-- | Insert an arbitrary widget to the 'Toolbar'.
--
-- The 'Widget' should not be a button. Adding 'Button's
-- with the 'toolbarInsertButton',... functions with stock
-- objects is much better as it takes care of theme handling.
--
-- * Warning: this function is deprecated and should not be used in
-- newly-written code.
--
-- Removed in Gtk3.
toolbarInsertNewWidget :: (ToolbarClass self, WidgetClass w, GlibString string) => self
-> Int
-> w
-> Maybe (string,string)
-> IO ()
toolbarInsertNewWidget self pos w tooltips =
mkToolText tooltips $ \textPtr privPtr ->
{# call unsafe toolbar_insert_widget #}
(toToolbar self)
(toWidget w)
textPtr
privPtr
(fromIntegral pos)
-- | Append a new 'Widget' to the 'Toolbar'.
--
-- See 'toolbarInsertNewButton' for details.
--
-- * Warning: this function is deprecated and should not be used in
-- newly-written code.
--
-- Removed in Gtk3.
toolbarAppendNewWidget :: (ToolbarClass self, WidgetClass w, GlibString string) => self
-> w
-> Maybe (string, string)
-> IO ()
toolbarAppendNewWidget self = toolbarInsertNewWidget self (-1)
-- | Prepend a new 'Widget' to the 'Toolbar'.
--
-- See 'toolbarInsertNewButton' for details.
--
-- * Warning: this function is deprecated and should not be used in
-- newly-written code.
--
-- Removed in Gtk3.
toolbarPrependNewWidget :: (ToolbarClass self, WidgetClass w, GlibString string) => self
-> w
-> Maybe (string, string)
-> IO ()
toolbarPrependNewWidget self = toolbarInsertNewWidget self 0
#endif
-- | Sets whether a toolbar should appear horizontally or vertically.
--
-- Removed in Gtk3.
toolbarSetOrientation :: ToolbarClass self => self -> Orientation -> IO ()
toolbarSetOrientation self orientation =
{# call toolbar_set_orientation #}
(toToolbar self)
((fromIntegral . fromEnum) orientation)
-- | Retrieves the current orientation of the toolbar. See
-- 'toolbarSetOrientation'.
--
-- Removed in Gtk3.
toolbarGetOrientation :: ToolbarClass self => self -> IO Orientation
toolbarGetOrientation self =
liftM (toEnum . fromIntegral) $
{# call unsafe toolbar_get_orientation #}
(toToolbar self)
#endif
-- | Alters the view of the toolbar to display either icons only, text only, or
-- both.
--
toolbarSetStyle :: ToolbarClass self => self -> ToolbarStyle -> IO ()
toolbarSetStyle self style =
{# call toolbar_set_style #}
(toToolbar self)
((fromIntegral . fromEnum) style)
-- | Retrieves whether the toolbar has text, icons, or both. See
-- 'toolbarSetStyle'.
--
toolbarGetStyle :: ToolbarClass self => self -> IO ToolbarStyle
toolbarGetStyle self =
liftM (toEnum . fromIntegral) $
{# call toolbar_get_style #}
(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 self =
{# call toolbar_unset_style #}
(toToolbar self)
#if GTK_MAJOR_VERSION < 3
-- | Sets if the tooltips of a toolbar should be active or not.
--
-- Removed in Gtk3.
toolbarSetTooltips :: ToolbarClass self => self
-> Bool -- ^ @enable@ - set to @False@ to disable the tooltips, or @True@ to
-- enable them.
-> IO ()
toolbarSetTooltips self enable =
{# call toolbar_set_tooltips #}
(toToolbar self)
(fromBool enable)
-- | Retrieves whether tooltips are enabled. See 'toolbarSetTooltips'.
--
-- Removed in Gtk3.
toolbarGetTooltips :: ToolbarClass self => self -> IO Bool
toolbarGetTooltips self =
liftM toBool $
{# call unsafe toolbar_get_tooltips #}
(toToolbar self)
#endif
#ifndef DISABLE_DEPRECATED
-- | This function sets the size of stock icons in the toolbar. You can call
-- it both before you add the icons and after they\'ve been added. The size you
-- set will override user preferences for the default icon size.
--
-- It might be sensible to restrict oneself to 'IconSizeSmallToolbar' and
-- 'IconSizeLargeToolbar'.
--
-- * Warning: this function is deprecated and should not be used in
-- newly-written code.
--
toolbarSetIconSize :: ToolbarClass self => self -> IconSize -> IO ()
toolbarSetIconSize self iconSize =
{# call toolbar_set_icon_size #}
(toToolbar self)
((fromIntegral . fromEnum) iconSize)
#endif
-- | Retrieves the icon size for the toolbar. See 'toolbarSetIconSize'.
--
toolbarGetIconSize :: ToolbarClass self => self -> IO IconSize
toolbarGetIconSize self =
liftM (toEnum . fromIntegral) $
{# call unsafe toolbar_get_icon_size #}
(toToolbar self)
#if GTK_CHECK_VERSION(2,4,0)
-- | 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 self item pos =
{# call toolbar_insert #}
(toToolbar self)
(toToolItem item)
(fromIntegral 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 self item =
liftM fromIntegral $
{# call unsafe toolbar_get_item_index #}
(toToolbar self)
(toToolItem item)
-- | Returns the number of items on the toolbar.
--
-- * Available since Gtk version 2.4
--
toolbarGetNItems :: ToolbarClass self => self -> IO Int
toolbarGetNItems self =
liftM fromIntegral $
{# call unsafe toolbar_get_n_items #}
(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 self n =
maybeNull (makeNewObject mkToolItem) $
{# call unsafe toolbar_get_nth_item #}
(toToolbar self)
(fromIntegral 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 self (x,y) =
liftM fromIntegral $
{# call unsafe toolbar_get_drop_index #}
(toToolbar self)
(fromIntegral x)
(fromIntegral 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 self toolItem index =
{# call toolbar_set_drop_highlight_item #}
(toToolbar self)
(maybe (ToolItem nullForeignPtr) toToolItem toolItem)
(fromIntegral 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 self showArrow =
{# call toolbar_set_show_arrow #}
(toToolbar self)
(fromBool showArrow)
-- | Returns whether the toolbar has an overflow menu. See
-- 'toolbarSetShowArrow'.
--
-- * Available since Gtk+ version 2.4
--
toolbarGetShowArrow :: ToolbarClass self => self -> IO Bool
toolbarGetShowArrow self =
liftM toBool $
{# call unsafe toolbar_get_show_arrow #}
(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 self =
liftM (toEnum . fromIntegral) $
{# call unsafe toolbar_get_relief_style #}
(toToolbar self)
#endif
--------------------
-- Attributes
#if GTK_MAJOR_VERSION < 3
-- | The orientation of the toolbar.
--
-- Default value: 'OrientationHorizontal'
--
-- Removed in Gtk3.
toolbarOrientation :: ToolbarClass self => Attr self Orientation
toolbarOrientation = newAttr
toolbarGetOrientation
toolbarSetOrientation
#endif
-- | How to draw the toolbar.
--
-- Default value: 'ToolbarIcons'
--
toolbarStyle :: ToolbarClass self => Attr self ToolbarStyle
toolbarStyle = newAttrFromEnumProperty "toolbar-style"
{# call pure unsafe gtk_toolbar_style_get_type #}
#if GTK_CHECK_VERSION(2,4,0)
-- | If an arrow should be shown if the toolbar doesn't fit.
--
-- Default value: @True@
--
toolbarShowArrow :: ToolbarClass self => Attr self Bool
toolbarShowArrow = newAttr
toolbarGetShowArrow
toolbarSetShowArrow
#endif
#if GTK_MAJOR_VERSION < 3
-- | If the tooltips of the toolbar should be active or not.
--
-- Default value: @True@
--
-- Removed in Gtk3.
toolbarTooltips :: ToolbarClass self => Attr self Bool
toolbarTooltips = newAttr
toolbarGetTooltips
toolbarSetTooltips
#endif
--------------------
-- 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 = newAttrFromContainerChildBoolProperty "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 = newAttrFromContainerChildBoolProperty "homogeneous"
--------------------
-- Signals
-- | Emitted when the orientation of the toolbar changes.
--
onOrientationChanged, afterOrientationChanged :: ToolbarClass self => self
-> (Orientation -> IO ())
-> IO (ConnectId self)
onOrientationChanged = connect_ENUM__NONE "orientation-changed" False
afterOrientationChanged = connect_ENUM__NONE "orientation-changed" True
-- | Emitted when the style of the toolbar changes.
--
onStyleChanged, afterStyleChanged :: ToolbarClass self => self
-> (ToolbarStyle -> IO ())
-> IO (ConnectId self)
onStyleChanged = connect_ENUM__NONE "style-changed" False
afterStyleChanged = connect_ENUM__NONE "style-changed" 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 keybaord, @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 = connect_INT_INT_INT__BOOL "popup-context-menu" False
afterPopupContextMenu = connect_INT_INT_INT__BOOL "popup-context-menu" True