gtk3-0.14.5: Binding to the Gtk+ 3 graphical user interface library

Maintainergtk2hs-users@lists.sourceforge.net
Stabilityprovisional
Portabilityportable (depends on GHC)
Safe HaskellNone
LanguageHaskell98

Graphics.UI.Gtk.ModelView.CustomStore

Contents

Description

Allows a custom data structure to be used with the TreeView and other widgets that follow the model-view-controller paradigm. The two models ListStore and TreeStore are based on the CustomStore. Even if no application-specific tree model should be implemented, this module is relevant in that it provides the functions customStoreSetColumn and customStoreGetRow functions.

Synopsis

The definition of a row-based store.

data CustomStore private row Source #

A CustomStore is an instance of a Gtk+ TreeModel and can thus be used for any widget that stores data in a TreeModel. The user may either create an instance of a CustomStore or use one of the pre-defined models ListStore or TreeStore.

Instances

GObjectClass (CustomStore private row) Source # 

Methods

toGObject :: CustomStore private row -> GObject #

unsafeCastGObject :: GObject -> CustomStore private row #

TreeModelClass (CustomStore private row) Source # 

data TreeModelFlags Source #

These flags indicate various properties of a TreeModel.

data TreeModelIface row Source #

The TreeModelIface structure contains all functions that are required to implement an application-specific TreeModel.

Constructors

TreeModelIface 

Fields

data DragSourceIface model row Source #

A structure containing functions that enable this widget to be used as a source in drag-and-drop.

Constructors

DragSourceIface 

Fields

data DragDestIface model row Source #

A structure containing functions that enable this widget to be used as a target in drag-and-drop.

Constructors

DragDestIface 

Fields

customStoreNew Source #

Arguments

:: (TreeModelClass (model row), TypedTreeModelClass model) 
=> private

Any private data the store needs to store. Usually an IORef.

-> (CustomStore private row -> model row) 
-> TreeModelIface row

Functions necessary to implement the TreeModel interface.

-> Maybe (DragSourceIface model row)

Functions to enable this store to generate drag events.

-> Maybe (DragDestIface model row)

Functions to enable this store to receive drag events.

-> IO (model row) 

Create a new store that implements the TreeModelIface interface and optionally the DragSourceIface and the DragDestIface. If the latter two are set to Nothing a dummy interface is substituted that rejects every drag and drop.

customStoreGetRow :: TypedTreeModelClass model => model row -> TreeIter -> IO row Source #

Extract a row of the given model at the given TreeIter.

customStoreSetColumn Source #

Arguments

:: TypedTreeModelClass model 
=> model row

the store in which to allocate a new column

-> ColumnId row ty

the column that should be set

-> (row -> ty)

the function that sets the property

-> IO () 

Set or update a column mapping. This function should be used before the model is installed into a widget since the number of defined columns are only checked once by widgets.

customStoreGetPrivate :: CustomStore private row -> private Source #

Return the private data stored in this CustomStore. The private data is meant as a container for the data stored in this model.

customStoreGetStamp :: CustomStore private row -> IO CInt Source #

Query the current value of the stamp that is used to create TreeIter iterators. The stamp is compared each time a view accesses this store. If the stamp doesn't match, a warning is emitted. The stamp should be updated each time a the data in the model changes. The rationale is that a view should never use a stale TreeIter, i.e., one that refers to an old model.

customStoreInvalidateIters :: CustomStore private row -> IO () Source #

Create a new stamp. See customStoreGetStamp.

treeModelGetRow :: TypedTreeModelClass model => model row -> TreeIter -> IO row Source #

treeModelSetColumn Source #

Arguments

:: TypedTreeModelClass model 
=> model row

the store in which to allocate a new column

-> ColumnId row ty

the column that should be set

-> (row -> ty)

the function that sets the property

-> IO ()