gtk3-0.13.1: Graphics/UI/Gtk/ModelView/IconView.chs
{-# LANGUAGE CPP #-}
-- -*-haskell-*-
-- GIMP Toolkit (GTK) Widget IconView
--
-- Author : Duncan Coutts
--
-- Created: 25 March 2005
--
-- Copyright (C) 2005-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 which displays a list of icons in a grid
--
-- * Module available since Gtk+ version 2.6
--
module Graphics.UI.Gtk.ModelView.IconView (
-- * Detail
--
-- | 'IconView' provides an alternative view on a list model. It displays the
-- model as a grid of icons with labels. Like 'TreeView', it allows to select
-- one or multiple items (depending on the selection mode, see
-- 'iconViewSetSelectionMode'). In addition to selection with the arrow keys,
-- 'IconView' supports rubberband selection, which is controlled by dragging
-- the pointer.
-- * Class Hierarchy
--
-- |
-- @
-- | 'GObject'
-- | +----'Object'
-- | +----'Widget'
-- | +----'Container'
-- | +----IconView
-- @
#if GTK_CHECK_VERSION(2,6,0)
-- * Types
IconView,
IconViewClass,
castToIconView, gTypeIconView,
toIconView,
-- * Constructors
iconViewNew,
iconViewNewWithModel,
-- * Methods
iconViewSetModel,
iconViewGetModel,
iconViewSetTextColumn,
iconViewGetTextColumn,
iconViewSetMarkupColumn,
iconViewGetMarkupColumn,
iconViewSetPixbufColumn,
iconViewGetPixbufColumn,
iconViewGetPathAtPos,
iconViewSelectedForeach,
iconViewSetSelectionMode,
iconViewGetSelectionMode,
#if GTK_MAJOR_VERSION < 3
iconViewSetOrientation,
iconViewGetOrientation,
#endif
iconViewSetColumns,
iconViewGetColumns,
iconViewSetItemWidth,
iconViewGetItemWidth,
iconViewSetSpacing,
iconViewGetSpacing,
iconViewSetRowSpacing,
iconViewGetRowSpacing,
iconViewSetColumnSpacing,
iconViewGetColumnSpacing,
iconViewSetMargin,
iconViewGetMargin,
iconViewSelectPath,
iconViewUnselectPath,
iconViewPathIsSelected,
iconViewGetSelectedItems,
iconViewSelectAll,
iconViewUnselectAll,
iconViewItemActivated,
#if GTK_CHECK_VERSION(2,8,0)
iconViewGetItemAtPos,
iconViewSetCursor,
iconViewGetCursor,
iconViewScrollToPath,
iconViewGetVisibleRange,
#if GTK_CHECK_VERSION(2,10,0)
iconViewEnableModelDragSource,
iconViewEnableModelDragDest,
iconViewUnsetModelDragSource,
iconViewUnsetModelDragDest,
#endif
iconViewSetReorderable,
iconViewGetReorderable,
#endif
#if GTK_CHECK_VERSION(2,22,0)
iconViewGetItemRow,
iconViewGetItemColumn,
#endif
-- * Attributes
iconViewSelectionMode,
iconViewTextColumn,
iconViewMarkupColumn,
iconViewPixbufColumn,
iconViewModel,
iconViewColumns,
iconViewItemWidth,
iconViewSpacing,
iconViewRowSpacing,
iconViewColumnSpacing,
iconViewMargin,
iconViewOrientation,
#if GTK_CHECK_VERSION(2,8,0)
iconViewReorderable,
#endif
#if GTK_CHECK_VERSION(2,22,0)
iconViewItemOrientation,
#endif
-- * Signals
setIconViewScrollAdjustments,
itemActivated,
selectionChanged
#endif
) where
import Control.Monad (liftM)
import System.Glib.FFI
import System.Glib.UTFString
import System.Glib.Attributes
import System.Glib.Properties
import System.Glib.GList (fromGList)
import System.Glib.Flags
import Graphics.UI.Gtk.Abstract.Object (makeNewObject)
import Graphics.UI.Gtk.Gdk.Enums (DragAction(..))
import Graphics.UI.Gtk.Gdk.Events (Modifier(..))
{#import Graphics.UI.Gtk.Types#}
{#import Graphics.UI.Gtk.Signals#}
{#import Graphics.UI.Gtk.General.Enums#} (Orientation, SelectionMode)
{#import Graphics.UI.Gtk.ModelView.TreeModel#}
{#import Graphics.UI.Gtk.ModelView.Types#}
{#import Graphics.UI.Gtk.General.DNDTypes#} (TargetList(..))
{# context lib="gtk" prefix="gtk" #}
#if GTK_CHECK_VERSION(2,6,0)
--------------------
-- Constructors
-- | Creates a new 'IconView' widget
--
iconViewNew :: IO IconView
iconViewNew =
makeNewObject mkIconView $
liftM (castPtr :: Ptr Widget -> Ptr IconView) $
{# call gtk_icon_view_new #}
-- %hash c:dbf4
-- | Creates a new 'IconView' widget with the model @model@ and defines
-- how to extract a string and a pixbuf from the model.
--
iconViewNewWithModel :: TreeModelClass model =>
model -- ^ @model@ - The model.
-> IO IconView
iconViewNewWithModel model =
makeNewObject mkIconView $
liftM (castPtr :: Ptr Widget -> Ptr IconView) $
{# call gtk_icon_view_new_with_model #}
(toTreeModel model)
--------------------
-- Methods
-- %hash c:5ba8 d:c5c8
-- | Sets the model for a 'IconView'. If the @iconView@ already has a model
-- set, it will remove it before setting the new model. If @model@ is
-- @Nothing@, then it will unset the old model.
--
iconViewSetModel :: (IconViewClass self, TreeModelClass model) => self
-> Maybe model -- ^ @model@ - The model.
-> IO ()
iconViewSetModel self model =
{# call gtk_icon_view_set_model #}
(toIconView self)
(maybe (TreeModel nullForeignPtr) toTreeModel model)
-- %hash c:6709 d:c0c5
-- | Returns the model the 'IconView' is based on. Returns @Nothing@ if the
-- model is unset.
--
iconViewGetModel :: IconViewClass self => self
-> IO (Maybe TreeModel) -- ^ returns a 'TreeModel', or @Nothing@ if none is
-- currently being used.
iconViewGetModel self =
maybeNull (makeNewGObject mkTreeModel) $
{# call unsafe gtk_icon_view_get_model #}
(toIconView self)
-- %hash c:c3fe d:fb7b
-- | Sets the column of the text for entries in the 'IconView'. If a markup
-- source is set using 'iconViewSetMarkupSource', then the text source is
-- ignored.
--
iconViewSetTextColumn :: (IconViewClass self, GlibString string) => self
-> ColumnId row string -- ^ @column@ - A column in the currently used model.
-> IO ()
iconViewSetTextColumn self column =
{# call gtk_icon_view_set_text_column #}
(toIconView self)
((fromIntegral . columnIdToNumber) column)
-- | Returns the column with text for @iconView@.
--
iconViewGetTextColumn :: (IconViewClass self, GlibString string) => self
-> IO (ColumnId row string) -- ^ returns the text column, or 'invalidColumnId' if it's unset.
iconViewGetTextColumn self =
liftM (makeColumnIdString . fromIntegral) $
{# call gtk_icon_view_get_text_column #}
(toIconView self)
-- %hash c:995f d:801c
-- | Sets the column of the text for entries in the 'IconView' as a markup
-- string (see 'Graphics.Rendering.Pango.Markup'). A text source that is set
-- using 'iconViewSetTextSource' is ignored once a markup source is set.
--
iconViewSetMarkupColumn :: (IconViewClass self, GlibString markup) => self
-> ColumnId row markup -- ^ @column@ - A column in the currently used model.
-> IO ()
iconViewSetMarkupColumn self column =
{# call gtk_icon_view_set_markup_column #}
(toIconView self)
((fromIntegral . columnIdToNumber) column)
-- | Returns the column with markup text for @iconView@.
--
iconViewGetMarkupColumn :: (IconViewClass self, GlibString markup) => self
-> IO (ColumnId row markup) -- ^ returns the markup column, or 'invalidColumnId' if it's unset.
iconViewGetMarkupColumn self =
liftM (makeColumnIdString . fromIntegral) $
{# call gtk_icon_view_get_markup_column #}
(toIconView self)
-- %hash c:4079 d:bf8
-- | Sets the column of the 'Graphics.UI.Gtk.Gdk.Pixbuf' for entries in the
-- 'IconView'.
--
iconViewSetPixbufColumn :: IconViewClass self => self
-> ColumnId row Pixbuf -- ^ @column@ - A column in the currently used model.
-> IO ()
iconViewSetPixbufColumn self column =
{# call gtk_icon_view_set_pixbuf_column #}
(toIconView self)
((fromIntegral . columnIdToNumber) column)
-- | Returns the column with pixbufs for @iconView@.
--
iconViewGetPixbufColumn :: IconViewClass self => self
-> IO (ColumnId row Pixbuf) -- ^ returns the pixbuf column, or 'invalidColumnId' if it's unset.
iconViewGetPixbufColumn self =
liftM (makeColumnIdPixbuf . fromIntegral) $
{# call gtk_icon_view_get_pixbuf_column #}
(toIconView self)
-- %hash c:2486 d:5e7
-- | Finds the path at the point (@x@, @y@), relative to widget coordinates.
-- See 'iconViewGetItemAtPos', if you are also interested in the cell at the
-- specified position.
--
iconViewGetPathAtPos :: IconViewClass self => self
-> Int -- ^ @x@ - The x position to be identified
-> Int -- ^ @y@ - The y position to be identified
-> IO TreePath -- ^ returns The 'TreePath' corresponding to the icon or @[]@
-- if no icon exists at that position.
iconViewGetPathAtPos self x y =
{# call gtk_icon_view_get_path_at_pos #}
(toIconView self)
(fromIntegral x)
(fromIntegral y)
>>= fromTreePath
-- %hash c:dfc5
-- | Calls a function for each selected icon. Note that the model or selection
-- cannot be modified from within this function.
--
iconViewSelectedForeach :: IconViewClass self => self
-> (TreePath -> IO ()) -- ^ @(\path -> ...)@ - The funcion to call for each
-- selected icon.
-> IO ()
iconViewSelectedForeach self func = do
funcPtr <- mkIconViewForeachFunc (\_ tpPtr _ -> do
path <- peekTreePath tpPtr
func path
)
{# call gtk_icon_view_selected_foreach #}
(toIconView self)
funcPtr
nullPtr
freeHaskellFunPtr funcPtr
{# pointer IconViewForeachFunc #}
foreign import ccall "wrapper" mkIconViewForeachFunc ::
(Ptr IconView -> Ptr NativeTreePath -> Ptr () -> IO ()) -> IO IconViewForeachFunc
-- | Sets the selection mode of the @iconView@.
--
iconViewSetSelectionMode :: IconViewClass self => self
-> SelectionMode -- ^ @mode@ - The selection mode
-> IO ()
iconViewSetSelectionMode self mode =
{# call gtk_icon_view_set_selection_mode #}
(toIconView self)
((fromIntegral . fromEnum) mode)
-- | Gets the selection mode of the @iconView@.
--
iconViewGetSelectionMode :: IconViewClass self => self
-> IO SelectionMode -- ^ returns the current selection mode
iconViewGetSelectionMode self =
liftM (toEnum . fromIntegral) $
{# call gtk_icon_view_get_selection_mode #}
(toIconView self)
#if GTK_MAJOR_VERSION < 3
-- | Sets the ::orientation property which determines whether the labels are
-- drawn beside the icons instead of below.
--
iconViewSetOrientation :: IconViewClass self => self
-> Orientation -- ^ @orientation@ - the relative position of texts and icons
-> IO ()
iconViewSetOrientation self orientation =
{# call gtk_icon_view_set_orientation #}
(toIconView self)
((fromIntegral . fromEnum) orientation)
-- | Returns the value of the ::orientation property which determines whether
-- the labels are drawn beside the icons instead of below.
--
iconViewGetOrientation :: IconViewClass self => self
-> IO Orientation -- ^ returns the relative position of texts and icons
iconViewGetOrientation self =
liftM (toEnum . fromIntegral) $
{# call gtk_icon_view_get_orientation #}
(toIconView self)
#endif
-- %hash c:7d23 d:d4e7
-- | Sets the ::columns property which determines in how many columns the
-- icons are arranged. If @columns@ is -1, the number of columns will be chosen
-- automatically to fill the available area.
--
iconViewSetColumns :: IconViewClass self => self
-> Int -- ^ @columns@ - the number of columns
-> IO ()
iconViewSetColumns self columns =
{# call gtk_icon_view_set_columns #}
(toIconView self)
(fromIntegral columns)
-- %hash c:f0f6 d:fc0e
-- | Returns the value of the ::columns property.
--
iconViewGetColumns :: IconViewClass self => self
-> IO Int -- ^ returns the number of columns, or -1
iconViewGetColumns self =
liftM fromIntegral $
{# call gtk_icon_view_get_columns #}
(toIconView self)
-- %hash c:643e d:b756
-- | Sets the ::item-width property which specifies the width to use for each
-- item. If it is set to -1, the icon view will automatically determine a
-- suitable item size.
--
iconViewSetItemWidth :: IconViewClass self => self
-> Int -- ^ @itemWidth@ - the width for each item
-> IO ()
iconViewSetItemWidth self itemWidth =
{# call gtk_icon_view_set_item_width #}
(toIconView self)
(fromIntegral itemWidth)
-- %hash c:9f27 d:8569
-- | Returns the value of the ::item-width property.
--
iconViewGetItemWidth :: IconViewClass self => self
-> IO Int -- ^ returns the width of a single item, or -1
iconViewGetItemWidth self =
liftM fromIntegral $
{# call gtk_icon_view_get_item_width #}
(toIconView self)
-- %hash c:7e61 d:3186
-- | Sets the ::spacing property which specifies the space which is inserted
-- between the cells (i.e. the icon and the text) of an item.
--
iconViewSetSpacing :: IconViewClass self => self
-> Int -- ^ @spacing@ - the spacing
-> IO ()
iconViewSetSpacing self spacing =
{# call gtk_icon_view_set_spacing #}
(toIconView self)
(fromIntegral spacing)
-- %hash c:5bc1 d:a1d2
-- | Returns the value of the ::spacing property.
--
iconViewGetSpacing :: IconViewClass self => self
-> IO Int -- ^ returns the space between cells
iconViewGetSpacing self =
liftM fromIntegral $
{# call gtk_icon_view_get_spacing #}
(toIconView self)
-- %hash c:dd08 d:730c
-- | Sets the ::row-spacing property which specifies the space which is
-- inserted between the rows of the icon view.
--
iconViewSetRowSpacing :: IconViewClass self => self
-> Int -- ^ @rowSpacing@ - the row spacing
-> IO ()
iconViewSetRowSpacing self rowSpacing =
{# call gtk_icon_view_set_row_spacing #}
(toIconView self)
(fromIntegral rowSpacing)
-- %hash c:a040 d:bc37
-- | Returns the value of the ::row-spacing property.
--
iconViewGetRowSpacing :: IconViewClass self => self
-> IO Int -- ^ returns the space between rows
iconViewGetRowSpacing self =
liftM fromIntegral $
{# call gtk_icon_view_get_row_spacing #}
(toIconView self)
-- %hash c:3042 d:b4f8
-- | Sets the ::column-spacing property which specifies the space which is
-- inserted between the columns of the icon view.
--
iconViewSetColumnSpacing :: IconViewClass self => self
-> Int -- ^ @columnSpacing@ - the column spacing
-> IO ()
iconViewSetColumnSpacing self columnSpacing =
{# call gtk_icon_view_set_column_spacing #}
(toIconView self)
(fromIntegral columnSpacing)
-- %hash c:3818 d:c1cd
-- | Returns the value of the ::column-spacing property.
--
iconViewGetColumnSpacing :: IconViewClass self => self
-> IO Int -- ^ returns the space between columns
iconViewGetColumnSpacing self =
liftM fromIntegral $
{# call gtk_icon_view_get_column_spacing #}
(toIconView self)
-- %hash c:990 d:d43c
-- | Sets the ::margin property which specifies the space which is inserted at
-- the top, bottom, left and right of the icon view.
--
iconViewSetMargin :: IconViewClass self => self
-> Int -- ^ @margin@ - the margin
-> IO ()
iconViewSetMargin self margin =
{# call gtk_icon_view_set_margin #}
(toIconView self)
(fromIntegral margin)
-- %hash c:a116 d:6fab
-- | Returns the value of the ::margin property.
--
iconViewGetMargin :: IconViewClass self => self
-> IO Int -- ^ returns the space at the borders
iconViewGetMargin self =
liftM fromIntegral $
{# call gtk_icon_view_get_margin #}
(toIconView self)
-- %hash c:77b3
-- | Selects the row at @path@.
--
iconViewSelectPath :: IconViewClass self => self
-> TreePath -- ^ @path@ - The 'TreePath' to be selected.
-> IO ()
iconViewSelectPath self path =
withTreePath path $ \path ->
{# call gtk_icon_view_select_path #}
(toIconView self)
path
-- %hash c:7e5f
-- | Unselects the row at @path@.
--
iconViewUnselectPath :: IconViewClass self => self
-> TreePath -- ^ @path@ - The 'TreePath' to be unselected.
-> IO ()
iconViewUnselectPath self path =
withTreePath path $ \path ->
{# call gtk_icon_view_unselect_path #}
(toIconView self)
path
-- %hash c:8ea0
-- | Returns @True@ if the icon pointed to by @path@ is currently selected. If
-- @icon@ does not point to a valid location, @False@ is returned.
--
iconViewPathIsSelected :: IconViewClass self => self
-> TreePath -- ^ @path@ - A 'TreePath' to check selection on.
-> IO Bool -- ^ returns @True@ if @path@ is selected.
iconViewPathIsSelected self path =
liftM toBool $
withTreePath path $ \path ->
{# call gtk_icon_view_path_is_selected #}
(toIconView self)
path
-- %hash c:90f8 d:9c43
-- | Creates a list of paths of all selected items. Additionally, if you are
-- planning on modifying the model after calling this function, you may want
-- to convert the returned list into a list of 'TreeRowReference's. To do
-- this, you can use 'treeRowReferenceNew'.
--
iconViewGetSelectedItems :: IconViewClass self => self
-> IO [TreePath] -- ^ returns a list of 'TreePath's, one for each selected row.
iconViewGetSelectedItems self =
{# call gtk_icon_view_get_selected_items #}
(toIconView self)
>>= fromGList
>>= mapM fromTreePath
-- | Selects all the icons. @iconView@ must has its selection mode set to
-- 'SelectionMultiple'.
--
iconViewSelectAll :: IconViewClass self => self -> IO ()
iconViewSelectAll self =
{# call gtk_icon_view_select_all #}
(toIconView self)
-- | Unselects all the icons.
--
iconViewUnselectAll :: IconViewClass self => self -> IO ()
iconViewUnselectAll self =
{# call gtk_icon_view_unselect_all #}
(toIconView self)
-- %hash c:6916
-- | Activates the item determined by @path@.
--
iconViewItemActivated :: IconViewClass self => self
-> TreePath -- ^ @path@ - The 'TreePath' to be activated
-> IO ()
iconViewItemActivated self path =
withTreePath path $ \path ->
{# call gtk_icon_view_item_activated #}
(toIconView self)
path
#if GTK_CHECK_VERSION(2,8,0)
-- %hash c:3122 d:346e
-- | Finds the path at the point (@x@, @y@), relative to widget coordinates.
-- In contrast to 'iconViewGetPathAtPos', this function also obtains the cell
-- at the specified position.
--
-- * Available since Gtk+ version 2.8
--
iconViewGetItemAtPos :: IconViewClass self => self
-> Int -- ^ @x@ - The x position to be identified
-> Int -- ^ @y@ - The y position to be identified
-> IO (Maybe (TreePath, CellRenderer))
-- specified position
iconViewGetItemAtPos self x y =
alloca $ \pathPtrPtr -> alloca $ \crPtrPtr -> do
success <- liftM toBool $ {# call gtk_icon_view_get_item_at_pos #}
(toIconView self)
(fromIntegral x)
(fromIntegral y)
(castPtr pathPtrPtr)
(castPtr crPtrPtr)
if not success then return Nothing else do
pathPtr <- peek pathPtrPtr
crPtr <- peek crPtrPtr
path <- fromTreePath pathPtr
cr <- makeNewGObject mkCellRenderer (return crPtr)
return (Just (path, cr))
-- %hash c:357b d:32d6
-- | Given @Left path@ as argument , sets the current keyboard focus to be at
-- @path@, and selects it. This is useful when you want to focus the user's
-- attention on a particular item. If @Right cell@ is given, then focus is
-- given to the cell specified by it. Additionally, if @startEditing@ is
-- @True@, then editing should be started in the specified cell.
--
-- This function is often followed by
-- 'Graphics.UI.Gtk.Abstract.Widget.widgetGrabFocus' in order to give keyboard
-- focus to the widget. Please note that editing can only happen when the
-- widget is realized.
--
-- * Available since Gtk+ version 2.8
--
iconViewSetCursor :: (IconViewClass self, CellRendererClass cell) => self
-> (Either TreePath cell) -- ^ the path or the cell
-> Bool -- ^ @startEditing@ - @True@ if the specified cell should start
-- being edited.
-> IO ()
iconViewSetCursor self (Left path) startEditing =
withTreePath path $ \path ->
{# call gtk_icon_view_set_cursor #}
(toIconView self)
path
(CellRenderer nullForeignPtr)
(fromBool startEditing)
iconViewSetCursor self (Right cell) startEditing =
{# call gtk_icon_view_set_cursor #}
(toIconView self)
(NativeTreePath nullPtr)
(toCellRenderer cell)
(fromBool startEditing)
-- %hash c:3307 d:9cf8
-- | Return a @path@ and a @cell@ with the current cursor path and cell. If the
-- cursor isn't currently set, then @[]@ will be returned for the @path@. If no cell currently has focus,
-- then @cell@ will be @Nothing@.
--
-- * Available since Gtk+ version 2.8
--
iconViewGetCursor :: IconViewClass self => self
-> IO (TreePath, Maybe CellRenderer) -- ^ returns a @path@ to the cursor and a @cell@ if the widget has the input focus
iconViewGetCursor self =
alloca $ \pathPtrPtr -> alloca $ \crPtrPtr -> do
{# call gtk_icon_view_get_cursor #}
(toIconView self)
(castPtr pathPtrPtr)
(castPtr crPtrPtr)
pathPtr <- peek pathPtrPtr
crPtr <- peek crPtrPtr
path <- fromTreePath pathPtr
cr <- if crPtr==nullPtr then return Nothing else
liftM Just $ makeNewGObject mkCellRenderer (return crPtr)
return (path, cr)
-- %hash c:1c9e d:20c5
-- | Moves the alignments of @iconView@ to the position specified by @path@.
-- @rowAlign@ determines where the row is placed, and @colAlign@ determines
-- where @column@ is placed. Both are expected to be between 0.0 and 1.0. 0.0
-- means left\/top alignment, 1.0 means right\/bottom alignment, 0.5 means
-- center.
--
-- If @useAlign@ is @False@, then the alignment arguments are ignored, and the
-- tree does the minimum amount of work to scroll the item onto the screen.
-- This means that the item will be scrolled to the edge closest to its
-- current position. If the item is currently visible on the screen, nothing
-- is done.
--
-- This function only works if the model is set, and @path@ is a valid row on
-- the model. If the model changes before the @iconView@ is realized, the
-- centered path will be modified to reflect this change.
--
-- * Available since Gtk+ version 2.8
--
iconViewScrollToPath :: IconViewClass self => self
-> TreePath -- ^ @path@ - The path of the item to move to.
-> Bool -- ^ @useAlign@ - whether to use alignment arguments, or @False@.
-> Float -- ^ @rowAlign@ - The vertical alignment of the item specified by
-- @path@.
-> Float -- ^ @colAlign@ - The horizontal alignment of the item specified
-- by @path@.
-> IO ()
iconViewScrollToPath self path useAlign rowAlign colAlign =
withTreePath path $ \path ->
{# call gtk_icon_view_scroll_to_path #}
(toIconView self)
path
(fromBool useAlign)
(realToFrac rowAlign)
(realToFrac colAlign)
-- %hash c:8354 d:f7f3
-- | Retrieve the first and last visible path.
-- Note that there may be invisible paths inbetween.
--
-- * Available since Gtk+ version 2.8
--
iconViewGetVisibleRange :: IconViewClass self => self
-> IO (Maybe (TreePath, TreePath))
-- ^ returns the first and last visible path, the return value
-- @Nothing@ if every element is visible
iconViewGetVisibleRange self = alloca $ \fPtrPtr -> alloca $ \lPtrPtr -> do
success <- liftM toBool $ {# call gtk_icon_view_get_visible_range #}
(toIconView self)
(castPtr fPtrPtr)
(castPtr lPtrPtr)
if not success then return Nothing else do
fPtr <- peek fPtrPtr
lPtr <- peek lPtrPtr
f <- fromTreePath fPtr
l <- fromTreePath lPtr
return (Just (f,l))
#if GTK_CHECK_VERSION(2,10,0)
-- %hash c:bd16 d:3f4f
-- | Turns @iconView@ into a drag source for automatic DND.
--
-- * Available since Gtk+ version 2.10
--
iconViewEnableModelDragSource :: IconViewClass self => self
-> [Modifier] -- ^ @startButtonMask@ - Mask of allowed buttons
-- to start drag
-> TargetList -- ^ @targets@ - the list of targets that the
-- the view will support
-> [DragAction] -- ^ @actions@ - flags denoting the possible actions
-- for a drag from this widget
-> IO ()
iconViewEnableModelDragSource self startButtonMask targets actions =
alloca $ \nTargetsPtr -> do
tlPtr <- {#call unsafe gtk_target_table_new_from_list#} targets nTargetsPtr
nTargets <- peek nTargetsPtr
{# call gtk_icon_view_enable_model_drag_source #}
(toIconView self)
((fromIntegral . fromFlags) startButtonMask)
tlPtr
nTargets
((fromIntegral . fromFlags) actions)
{#call unsafe gtk_target_table_free#} tlPtr nTargets
-- %hash c:b14d d:23d7
-- | Turns @iconView@ into a drop destination for automatic DND.
--
-- * Available since Gtk+ version 2.10
--
iconViewEnableModelDragDest :: IconViewClass self => self
-> TargetList -- ^ @targets@ - the list of targets that the
-- the view will support
-> [DragAction] -- ^ @actions@ - flags denoting the possible actions
-- for a drop into this widget
-> IO ()
iconViewEnableModelDragDest self targets actions =
alloca $ \nTargetsPtr -> do
tlPtr <- {#call unsafe gtk_target_table_new_from_list#} targets nTargetsPtr
nTargets <- peek nTargetsPtr
{# call gtk_icon_view_enable_model_drag_dest #}
(toIconView self)
tlPtr
nTargets
((fromIntegral . fromFlags) actions)
-- %hash c:25b0 d:5a6b
-- | Undoes the effect of 'iconViewEnableModelDragSource'.
--
-- * Available since Gtk+ version 2.10
--
iconViewUnsetModelDragSource :: IconViewClass self => self -> IO ()
iconViewUnsetModelDragSource self =
{# call gtk_icon_view_unset_model_drag_source #}
(toIconView self)
-- %hash c:d76d d:f18a
-- | Undoes the effect of 'iconViewEnableModelDragDest'.
--
-- * Available since Gtk+ version 2.10
--
iconViewUnsetModelDragDest :: IconViewClass self => self -> IO ()
iconViewUnsetModelDragDest self =
{# call gtk_icon_view_unset_model_drag_dest #}
(toIconView self)
#endif
-- %hash c:c270 d:b94d
-- | Check if icons can be moved around.
--
-- * Set whether the user can use drag and drop (DND) to reorder the rows in
-- the store. This works on both 'TreeStore' and 'ListStore' models. If @ro@
-- is @True@, then the user can reorder the model by dragging and dropping
-- rows. The developer can listen to these changes by connecting to the
-- model's signals. If you need to control which rows may be dragged or
-- where rows may be dropped, you can override the
-- 'Graphics.UI.Gtk.ModelView.CustomStore.treeDragSourceRowDraggable'
-- function in the default DND implementation of the model.
--
-- * Available since Gtk+ version 2.8
--
iconViewSetReorderable :: IconViewClass self => self
-> Bool -- ^ @reorderable@ - @True@, if the list of items can be reordered.
-> IO ()
iconViewSetReorderable self reorderable =
{# call gtk_icon_view_set_reorderable #}
(toIconView self)
(fromBool reorderable)
-- %hash c:532 d:1d07
-- | Retrieves whether the user can reorder the list via drag-and-drop. See
-- 'iconViewSetReorderable'.
--
-- * Available since Gtk+ version 2.8
--
iconViewGetReorderable :: IconViewClass self => self
-> IO Bool -- ^ returns @True@ if the list can be reordered.
iconViewGetReorderable self =
liftM toBool $
{# call gtk_icon_view_get_reorderable #}
(toIconView self)
#endif
#if GTK_CHECK_VERSION(2,22,0)
-- | Gets the row in which the item path is currently displayed. Row numbers start at 0.
--
-- * Available since Gtk+ version 2.22
--
iconViewGetItemRow :: IconViewClass self => self
-> TreePath -- ^ @path@ the 'TreePath' of the item
-> IO Int -- ^ returns The row in which the item is displayed
iconViewGetItemRow self path =
liftM fromIntegral $
withTreePath path $ \path ->
{# call gtk_icon_view_get_item_row #}
(toIconView self)
path
-- | Gets the column in which the item path is currently displayed. Column numbers start at 0.
--
-- * Available since Gtk+ version 2.22
--
iconViewGetItemColumn :: IconViewClass self => self
-> TreePath -- ^ @path@ the 'TreePath' of the item
-> IO Int -- ^ returns The column in which the item is displayed
iconViewGetItemColumn self path =
liftM fromIntegral $
withTreePath path $ \path ->
{# call gtk_icon_view_get_item_column #}
(toIconView self)
path
#endif
--------------------
-- Attributes
-- | The ::selection-mode property specifies the selection mode of icon view.
-- If the mode is 'SelectionMultiple', rubberband selection is enabled, for the
-- other modes, only keyboard selection is possible.
--
-- Default value: 'SelectionSingle'
--
iconViewSelectionMode :: IconViewClass self => Attr self SelectionMode
iconViewSelectionMode = newAttr
iconViewGetSelectionMode
iconViewSetSelectionMode
-- %hash c:4ce5 d:c77a
-- | The 'iconViewPixbufColumn' property contains the number of the model column
-- containing the pixbufs which are displayed. Setting this property to
-- 'invalidColumnId' turns off the display of pixbufs.
--
-- Default value: 'invalidColumnId'
--
iconViewPixbufColumn :: IconViewClass self => Attr self (ColumnId row Pixbuf)
iconViewPixbufColumn = newAttr
iconViewGetPixbufColumn
iconViewSetPixbufColumn
-- %hash c:702a d:f7ed
-- | The 'iconViewTextColumn' property contains the number of the model column
-- containing the texts which are displayed. If this property and the
-- 'iconViewMarkupColumn' property are both set to 'invalidColumnId', no texts
-- are displayed.
--
-- Default value: 'invalidColumnId'
--
iconViewTextColumn :: (IconViewClass self, GlibString string) => Attr self (ColumnId row string)
iconViewTextColumn = newAttr
iconViewGetTextColumn
iconViewSetTextColumn
-- %hash c:37cb d:ee83
-- | The 'iconViewMarkupColumn' property contains the number of the model column
-- containing markup information to be displayed. If this property and the
-- 'iconViewTextColumn' property are both set to column numbers, it overrides the text
-- column. If both are set to 'invalidColumnId', no texts are displayed.
--
-- Default value: 'invalidColumnId'
--
iconViewMarkupColumn :: (IconViewClass self, GlibString markup) => Attr self (ColumnId row markup)
iconViewMarkupColumn = newAttr
iconViewGetMarkupColumn
iconViewSetMarkupColumn
-- %hash c:723d
-- | The model for the icon view.
--
iconViewModel :: (IconViewClass self, TreeModelClass model)
=> ReadWriteAttr self (Maybe TreeModel) (Maybe model)
iconViewModel = newAttr
iconViewGetModel
iconViewSetModel
-- %hash c:6347
-- | The columns property contains the number of the columns in which the
-- items should be displayed. If it is -1, the number of columns will be chosen
-- automatically to fill the available area.
--
-- Allowed values: >= -1
--
-- Default value: -1
--
iconViewColumns :: IconViewClass self => Attr self Int
iconViewColumns = newAttrFromIntProperty "columns"
-- %hash c:d0fe d:42c5
-- | The item-width property specifies the width to use for each item. If it
-- is set to -1, the icon view will automatically determine a suitable item
-- size.
--
-- Allowed values: >= -1
--
-- Default value: -1
--
iconViewItemWidth :: IconViewClass self => Attr self Int
iconViewItemWidth = newAttrFromIntProperty "item-width"
-- %hash c:3813 d:23f9
-- | The spacing property specifies the space which is inserted between the
-- cells (i.e. the icon and the text) of an item.
--
-- Allowed values: >= 0
--
-- Default value: 0
--
iconViewSpacing :: IconViewClass self => Attr self Int
iconViewSpacing = newAttrFromIntProperty "spacing"
-- %hash c:6a28 d:8e65
-- | The row-spacing property specifies the space which is inserted between
-- the rows of the icon view.
--
-- Allowed values: >= 0
--
-- Default value: 6
--
iconViewRowSpacing :: IconViewClass self => Attr self Int
iconViewRowSpacing = newAttrFromIntProperty "row-spacing"
-- %hash c:56a d:2971
-- | The column-spacing property specifies the space which is inserted between
-- the columns of the icon view.
--
-- Allowed values: >= 0
--
-- Default value: 6
--
iconViewColumnSpacing :: IconViewClass self => Attr self Int
iconViewColumnSpacing = newAttrFromIntProperty "column-spacing"
-- %hash c:89de d:8e41
-- | The margin property specifies the space which is inserted at the edges of
-- the icon view.
--
-- Allowed values: >= 0
--
-- Default value: 6
--
iconViewMargin :: IconViewClass self => Attr self Int
iconViewMargin = newAttrFromIntProperty "margin"
-- %hash c:b606 d:31c3
-- | The orientation property specifies how the cells (i.e. the icon and the
-- text) of the item are positioned relative to each other.
--
-- Default value: 'OrientationVertical'
--
iconViewOrientation :: IconViewClass self => Attr self Orientation
iconViewOrientation = newAttrFromEnumProperty "orientation"
{# call pure unsafe gtk_orientation_get_type #}
#if GTK_CHECK_VERSION(2,8,0)
-- %hash c:f17b d:54d0
-- | The reorderable property specifies if the items can be reordered by DND.
--
-- Default value: @False@
--
-- * Available since Gtk+ version 2.8
--
iconViewReorderable :: IconViewClass self => Attr self Bool
iconViewReorderable = newAttrFromBoolProperty "reorderable"
#endif
#if GTK_CHECK_VERSION(2,22,0)
-- | The item-orientation property specifies how the cells (i.e. the icon and the text) of the item are
-- positioned relative to each other.
--
-- Default value: 'OrientationVertical'
--
-- * Available since Gtk+ version 2.22
--
iconViewItemOrientation :: IconViewClass self => Attr self Orientation
iconViewItemOrientation = newAttrFromEnumProperty "item-orientation"
{# call pure unsafe gtk_orientation_get_type #}
#endif
--------------------
-- Signals
-- %hash c:4671 d:af3f
-- | New scroll adjustment have been set for this widget.
--
setIconViewScrollAdjustments :: IconViewClass self => Signal self (Adjustment -> Adjustment -> IO ())
setIconViewScrollAdjustments = Signal (connect_OBJECT_OBJECT__NONE "set-scroll-adjustments")
-- %hash c:4090 d:af3f
-- | A specific element has been activated (by pressing enter or double clicking).
--
itemActivated :: IconViewClass self => Signal self (TreePath -> IO ())
itemActivated = Signal (connect_BOXED__NONE "item-activated" (peekTreePath . castPtr))
-- %hash c:6098 d:af3f
-- | The selected item changed.
--
selectionChanged :: IconViewClass self => Signal self (IO ())
selectionChanged = Signal (connect_NONE__NONE "selection-changed")
#endif