gi-gtk-hs-0.3.16: A wrapper for gi-gtk, adding a few more idiomatic API parts on top
Stabilityprovisional
Portabilityportable (depends on GHC)
Safe HaskellSafe-Inferred
LanguageHaskell2010

Data.GI.Gtk.ModelView.CustomStore

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.

newtype 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.

Constructors

CustomStore (ManagedPtr (CustomStore private row)) 

Instances

Instances details
GObject (CustomStore private row) Source # 
Instance details

Defined in Data.GI.Gtk.ModelView.CustomStore

TypedObject (CustomStore private row) Source # 
Instance details

Defined in Data.GI.Gtk.ModelView.CustomStore

Methods

glibType :: IO GType #

HasParentTypes (CustomStore private row) Source # 
Instance details

Defined in Data.GI.Gtk.ModelView.CustomStore

type ParentTypes (CustomStore private row) Source # 
Instance details

Defined in Data.GI.Gtk.ModelView.CustomStore

type ParentTypes (CustomStore private row) = '[TreeModel]

data TreeModelFlags #

Instances

Instances details
Enum TreeModelFlags 
Instance details

Defined in GI.Gtk.Flags

Show TreeModelFlags 
Instance details

Defined in GI.Gtk.Flags

Eq TreeModelFlags 
Instance details

Defined in GI.Gtk.Flags

Ord TreeModelFlags 
Instance details

Defined in GI.Gtk.Flags

BoxedFlags TreeModelFlags 
Instance details

Defined in GI.Gtk.Flags

IsGFlag TreeModelFlags 
Instance details

Defined in GI.Gtk.Flags

TypedObject TreeModelFlags 
Instance details

Defined in GI.Gtk.Flags

Methods

glibType :: IO GType #

HasParentTypes TreeModelFlags 
Instance details

Defined in GI.Gtk.Flags

type ParentTypes TreeModelFlags 
Instance details

Defined in GI.Gtk.Flags

type ParentTypes TreeModelFlags = '[] :: [Type]

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

:: (MonadIO m, IsTreeModel (model row), IsTypedTreeModel 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.

-> m (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 :: (MonadIO m, IsTypedTreeModel model) => model row -> TreeIter -> m row Source #

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

customStoreSetColumn Source #

Arguments

:: (MonadIO m, IsTypedTreeModel 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

-> m () 

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 :: MonadIO m => CustomStore private row -> m Int32 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 :: MonadIO m => CustomStore private row -> m () Source #

Create a new stamp. See customStoreGetStamp.