Portability | portable (depends on GHC) |
---|---|
Stability | provisional |
Maintainer | gtk2hs-users@lists.sourceforge.net |
Safe Haskell | None |
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
.
GObjectClass (CustomStore private row) | |
TreeModelClass (CustomStore private row) |
data TreeModelFlags Source
These flags indicate various properties of a
TreeModel
.
- If a model has
TreeModelItersPersist
set, iterators remain valid after aTreeModel
signal was emitted. - The
TreeModelListOnly
flag is set if the rows are arranged in a simple flat list. This is set in theListStore
implementation.
data TreeModelIface row Source
The TreeModelIface
structure contains all functions that are required
to implement an application-specific TreeModel
.
TreeModelIface | |
|
data DragSourceIface model row Source
A structure containing functions that enable this widget to be used as a source in drag-and-drop.
DragSourceIface | |
|
data DragDestIface model row Source
A structure containing functions that enable this widget to be used as a target in drag-and-drop.
DragDestIface | |
|
:: (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
.
:: 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
:: 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 () |