{-# LANGUAGE CPP #-} -- -*-haskell-*- -- GIMP Toolkit (GTK) Widget ToolPalette -- -- Author : Andy Stewart -- -- Created: 08 Sep 2010 -- -- Copyright (C) 2010 Andy Stewart -- -- 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 tool palette with categories -- -- * Module available since Gtk+ version 2.20 -- -- TODO: -- -- gtk_tool_palette_add_drag_dest -- gtk_tool_palette_get_drag_item -- gtk_tool_palette_get_drag_target_group -- gtk_tool_palette_get_drag_target_item -- gtk_tool_palette_get_drop_group -- gtk_tool_palette_get_drop_item -- module Graphics.UI.Gtk.MenuComboToolbar.ToolPalette ( -- * Detail -- | A 'ToolPalette' allows you to add 'ToolItems' to a palette-like container with different -- categories and drag and drop support. -- -- A 'ToolPalette' is created with a call to 'toolPaletteNew'. -- -- 'ToolItems' cannot be added directly to a 'ToolPalette' - instead they are added to a -- 'ToolItemGroup' which can than be added to a 'ToolPalette'. To add a 'ToolItemGroup' to a -- 'ToolPalette', use 'containerAdd'. -- -- The easiest way to use drag and drop with 'ToolPalette' is to call 'toolPaletteAddDragDest' -- with the desired drag source palette and the desired drag target widget. Then -- 'toolPaletteGetDragItem' can be used to get the dragged item in the 'dragDataReceived' -- signal handler of the drag target. -- * Class Hierarchy -- | -- @ -- | 'GObject' -- | +----'Object' -- | +----'Widget' -- | +----'Container' -- | +----'ToolPalette' -- @ #if GTK_CHECK_VERSION(2,20,0) -- * Types ToolPalette, ToolPaletteClass, castToToolPalette, toToolPalette, -- * Enums ToolPaletteDragTargets (..), -- * Constructors toolPaletteNew, -- * Methods toolPaletteUnsetIconSize, toolPaletteUnsetStyle, toolPaletteGetHAdjustment, toolPaletteGetVAdjustment, -- * Attributes toolPaletteSetGroupPosition, toolPaletteGetGroupPosition, toolPaletteIconSize, toolPaletteIconSizeSet, toolPaletteToolbarStyle, -- * Child Attributes toolPaletteChildExclusive, toolPaletteChildExpand, -- * Signals toolPaletteSetScrollAdjustments, #endif ) where import Control.Monad (liftM) import System.Glib.FFI import System.Glib.Attributes import System.Glib.Properties import Graphics.UI.Gtk.General.Structs (IconSize (..)) import Graphics.UI.Gtk.General.Enums (ToolbarStyle (..)) import Graphics.UI.Gtk.Abstract.Object (makeNewObject) {#import Graphics.UI.Gtk.Types#} {#import Graphics.UI.Gtk.Signals#} {# context lib="gtk" prefix="gtk" #} #if GTK_CHECK_VERSION(2,20,0) -- | Flags used to specify the supported drag targets. {# enum ToolPaletteDragTargets {underscoreToCase} deriving (Eq) #} -- | Creates a new tool palette. -- -- * Available since Gtk+ version 2.20 -- toolPaletteNew :: IO ToolPalette toolPaletteNew = makeNewObject mkToolPalette $ liftM (castPtr :: Ptr Widget -> Ptr ToolPalette) $ {#call gtk_tool_palette_new #} -- | Unsets the tool palette icon size set with 'toolPaletteSetIconSize', so that user -- preferences will be used to determine the icon size. -- -- * Available since Gtk+ version 2.20 -- toolPaletteUnsetIconSize :: ToolPaletteClass self => self -> IO () toolPaletteUnsetIconSize palette = {#call gtk_tool_palette_unset_icon_size #} (toToolPalette palette) -- | Unsets a toolbar style set with 'toolPaletteSetStyle', so that user preferences will be used -- to determine the toolbar style. -- -- * Available since Gtk+ version 2.20 -- toolPaletteUnsetStyle :: ToolPaletteClass self => self -> IO () toolPaletteUnsetStyle palette = {#call gtk_tool_palette_unset_style #} (toToolPalette palette) -- | Gets the horizontal adjustment of the tool palette. -- -- * Available since Gtk+ version 2.20 -- toolPaletteGetHAdjustment :: ToolPaletteClass self => self -> IO Adjustment toolPaletteGetHAdjustment palette = makeNewObject mkAdjustment $ {# call gtk_tool_palette_get_hadjustment #} (toToolPalette palette) -- | Gets the vertical adjustment of the tool palette. -- -- * Available since Gtk+ version 2.20 -- toolPaletteGetVAdjustment :: ToolPaletteClass self => self -> IO Adjustment toolPaletteGetVAdjustment palette = makeNewObject mkAdjustment $ {# call gtk_tool_palette_get_vadjustment #} (toToolPalette palette) -- | Gets the position of group in palette as index. See 'toolPaletteSetGroupPosition'. -- -- * Available since Gtk+ version 2.20 -- toolPaletteGetGroupPosition :: (ToolPaletteClass palette, ToolItemGroupClass group) => palette -> group -> IO Int -- ^ returns the index of group or -1 if group is not a child of palette toolPaletteGetGroupPosition palette group = liftM fromIntegral $ {#call gtk_tool_palette_get_group_position #} (toToolPalette palette) (toToolItemGroup group) -- | Sets the position of the group as an index of the tool palette. If position is 0 the group will -- become the first child, if position is -1 it will become the last child. -- -- * Available since Gtk+ version 2.20 -- toolPaletteSetGroupPosition :: (ToolPaletteClass palette, ToolItemGroupClass group) => palette -> group -> Int -> IO () toolPaletteSetGroupPosition palette group position = {#call gtk_tool_palette_set_group_position #} (toToolPalette palette) (toToolItemGroup group) (fromIntegral position) -- | The size of the icons in a tool palette is normally determined by the 'toolbarIconSize' -- setting. When this property is set, it overrides the setting. -- -- This should only be used for special-purpose tool palettes, normal application tool palettes should -- respect the user preferences for the size of icons. -- -- Default value: 'IconSizeSmallToolbar' -- -- * Available since Gtk+ version 2.20 -- toolPaletteIconSize :: ToolPaletteClass self => Attr self IconSize toolPaletteIconSize = newAttrFromEnumProperty "icon-size" {# call pure unsafe gtk_icon_size_get_type #} -- | Is 'True' if the 'iconSize' property has been set. -- -- Default value: 'False' -- -- * Available since Gtk+ version 2.20 -- toolPaletteIconSizeSet :: ToolPaletteClass self => Attr self Bool toolPaletteIconSizeSet = newAttrFromBoolProperty "icon-size-set" -- | The style of items in the tool palette. -- -- Default value: 'ToolbarIcons' -- -- * Available since Gtk+ version 2.20 -- toolPaletteToolbarStyle :: ToolPaletteClass self => Attr self ToolbarStyle toolPaletteToolbarStyle = newAttrFromEnumProperty "toolbar-style" {# call pure unsafe gtk_toolbar_style_get_type #} -- | Whether the item group should be the only one that is expanded at a given time. -- -- Default value: 'False' -- -- * Available since Gtk+ version 2.20 -- toolPaletteChildExclusive :: ToolPaletteClass self => Attr self Bool toolPaletteChildExclusive = newAttrFromBoolProperty "exclusive" -- | Whether the item group should receive extra space when the palette grows. at a given time. -- -- Default value: 'False' -- -- * Available since Gtk+ version 2.20 -- toolPaletteChildExpand :: ToolPaletteClass self => Attr self Bool toolPaletteChildExpand = newAttrFromBoolProperty "expand" -- | Set the scroll adjustments for the viewport. Usually scrolled containers like 'ScrolledWindow' will -- emit this signal to connect two instances of 'Scrollbar' to the scroll directions of the -- 'Toolpalette'. -- -- * Available since Gtk+ version 2.20 -- toolPaletteSetScrollAdjustments :: ToolPaletteClass self => Signal self (Adjustment -> Adjustment -> IO ()) toolPaletteSetScrollAdjustments = Signal (connect_OBJECT_OBJECT__NONE "set-scroll-adjustments") #endif