| Maintainer | gtk2hs-users@lists.sourceforge.net | 
|---|---|
| Stability | provisional | 
| Portability | portable (depends on GHC) | 
| Safe Haskell | None | 
| Language | Haskell98 | 
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.
Synopsis
- 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 or
   TreeStore.
Instances
| GObjectClass (CustomStore private row) Source # | |
| Defined in Graphics.UI.Gtk.ModelView.CustomStore Methods toGObject :: CustomStore private row -> GObject # unsafeCastGObject :: GObject -> CustomStore private row # | |
| TreeModelClass (CustomStore private row) Source # | |
| Defined in Graphics.UI.Gtk.ModelView.CustomStore | |
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 | 
Instances
| Bounded TreeModelFlags Source # | |
| Defined in Graphics.UI.Gtk.ModelView.CustomStore | |
| Enum TreeModelFlags Source # | |
| Defined in Graphics.UI.Gtk.ModelView.CustomStore Methods succ :: TreeModelFlags -> TreeModelFlags # pred :: TreeModelFlags -> TreeModelFlags # toEnum :: Int -> TreeModelFlags # fromEnum :: TreeModelFlags -> Int # enumFrom :: TreeModelFlags -> [TreeModelFlags] # enumFromThen :: TreeModelFlags -> TreeModelFlags -> [TreeModelFlags] # enumFromTo :: TreeModelFlags -> TreeModelFlags -> [TreeModelFlags] # enumFromThenTo :: TreeModelFlags -> TreeModelFlags -> TreeModelFlags -> [TreeModelFlags] # | |
| Flags TreeModelFlags Source # | |
| Defined in Graphics.UI.Gtk.ModelView.CustomStore | |
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 row Source #
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 -> 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 #
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 () |