| Portability | portable (depends on GHC) |
|---|---|
| Stability | provisional |
| Maintainer | gtk2hs-users@lists.sourceforge.net |
| Safe Haskell | None |
Graphics.UI.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.
- data CustomStore private row
- data TreeModelFlags
- data TreeModelIface row = TreeModelIface {
- treeModelIfaceGetFlags :: IO [TreeModelFlags]
- treeModelIfaceGetIter :: TreePath -> IO (Maybe TreeIter)
- treeModelIfaceGetPath :: TreeIter -> IO TreePath
- treeModelIfaceGetRow :: TreeIter -> IO row
- treeModelIfaceIterNext :: TreeIter -> IO (Maybe TreeIter)
- treeModelIfaceIterChildren :: Maybe TreeIter -> IO (Maybe TreeIter)
- treeModelIfaceIterHasChild :: TreeIter -> IO Bool
- treeModelIfaceIterNChildren :: Maybe TreeIter -> IO Int
- treeModelIfaceIterNthChild :: Maybe TreeIter -> Int -> IO (Maybe TreeIter)
- treeModelIfaceIterParent :: TreeIter -> IO (Maybe TreeIter)
- treeModelIfaceRefNode :: TreeIter -> IO ()
- treeModelIfaceUnrefNode :: TreeIter -> IO ()
- data DragSourceIface model row = DragSourceIface {
- treeDragSourceRowDraggable :: model row -> TreePath -> IO Bool
- treeDragSourceDragDataGet :: model row -> TreePath -> SelectionDataM Bool
- treeDragSourceDragDataDelete :: model row -> TreePath -> IO Bool
- data DragDestIface model row = DragDestIface {
- treeDragDestRowDropPossible :: model row -> TreePath -> SelectionDataM Bool
- treeDragDestDragDataReceived :: model row -> TreePath -> SelectionDataM Bool
- customStoreNew :: (TreeModelClass (model row), TypedTreeModelClass model) => private -> (CustomStore private row -> model row) -> TreeModelIface row -> Maybe (DragSourceIface model row) -> Maybe (DragDestIface model row) -> IO (model row)
- customStoreGetRow :: TypedTreeModelClass model => model row -> TreeIter -> IO row
- customStoreSetColumn :: TypedTreeModelClass model => model row -> ColumnId row ty -> (row -> ty) -> IO ()
- customStoreGetPrivate :: CustomStore private row -> private
- customStoreGetStamp :: CustomStore private row -> IO CInt
- customStoreInvalidateIters :: CustomStore private row -> IO ()
- treeModelGetRow :: TypedTreeModelClass model => model row -> TreeIter -> IO row
- treeModelSetColumn :: TypedTreeModelClass model => model row -> ColumnId row ty -> (row -> ty) -> IO ()
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 of
TreeStore.
Instances
| GObjectClass (CustomStore private row) | |
| TreeModelClass (CustomStore private row) |
data TreeModelFlags Source
These flags indicate various properties of a
TreeModel.
- If a model has
TreeModelItersPersistset, iterators remain valid after aTreeModelsignal was emitted. - The
TreeModelListOnlyflag is set if the rows are arranged in a simple flat list. This is set in theListStoreimplementation.
Constructors
| TreeModelItersPersist | |
| TreeModelListOnly |
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
| |
Arguments
| :: (TreeModelClass (model row), TypedTreeModelClass model) | |
| => private | Any private data the store needs to store. Usually an |
| -> (CustomStore private row -> model row) | |
| -> TreeModelIface row | Functions necessary to implement the |
| -> 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 rowSource
Extract a row of the given model at the given TreeIter.
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 -> privateSource
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 CIntSource
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 rowSource
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 () |