Maintainer | rakatan@gmail.com |
---|---|
Stability | provisional |
Portability | portable (depends on GHC) |
Safe Haskell | None |
Language | Haskell2010 |
Standard model to store hierarchical data.
- data TreeStore a
- treeStoreNew :: Forest a -> IO (TreeStore a)
- treeStoreNewDND :: Forest a -> Maybe (DragSourceIface TreeStore a) -> Maybe (DragDestIface TreeStore a) -> IO (TreeStore a)
- treeStoreDefaultDragSourceIface :: DragSourceIface TreeStore row
- treeStoreDefaultDragDestIface :: DragDestIface TreeStore row
- treeStoreGetValue :: TreeStore a -> TreePath -> IO a
- treeStoreSetValue :: TreeStore a -> TreePath -> a -> IO ()
- treeStoreChange :: TreeStore a -> TreePath -> (a -> a) -> IO Bool
- treeStoreChangeM :: TreeStore a -> TreePath -> (a -> IO a) -> IO Bool
- treeStoreInsertForest :: TreeStore a -> TreePath -> Int -> Forest a -> IO ()
- treeStoreInsert :: TreeStore a -> TreePath -> Int -> a -> IO ()
- treeStoreInsertTree :: TreeStore a -> TreePath -> Int -> Tree a -> IO ()
- treeStoreRemove :: TreeStore a -> TreePath -> IO Bool
- treeStoreClear :: TreeStore a -> IO ()
- treeStoreGetTree :: TreeStore a -> TreePath -> IO (Tree a)
Types
A store for hierarchical data.
Constructors
treeStoreNew :: Forest a -> IO (TreeStore a) Source
Create a new list store.
- The given rose tree determines the initial content and may be the empty
list. Each
Tree
in the forest corresponds to one top-level node.
:: Forest a | the inital tree stored in this model |
-> Maybe (DragSourceIface TreeStore a) | an optional interface for drags |
-> Maybe (DragDestIface TreeStore a) | an optional interface to handle drops |
-> IO (TreeStore a) |
Create a new list store.
- In addition to
treeStoreNew
, this function takes an two interfaces to implement user-defined drag-and-drop functionality.
Implementation of Interfaces
treeStoreDefaultDragSourceIface :: DragSourceIface TreeStore row Source
Default drag functions for
TreeStore
. These functions allow the rows of
the model to serve as drag source. Any row is allowed to be dragged and the
data set in the SelectionDataM
object is set with treeSetRowDragData
,
i.e. it contains the model and the TreePath
to the row.
treeStoreDefaultDragDestIface :: DragDestIface TreeStore row Source
Default drop functions for TreeStore
. These
functions accept a row and insert the row into the new location if it is
dragged into a tree view
that uses the same model.
Methods
treeStoreGetValue :: TreeStore a -> TreePath -> IO a Source
Extract one node from the current model. Fails if the given
TreePath
refers to a non-existent node.
treeStoreSetValue :: TreeStore a -> TreePath -> a -> IO () Source
Set a node in the store.
treeStoreChange :: TreeStore a -> TreePath -> (a -> a) -> IO Bool Source
Change a node in the store.
- Returns
True
if the node was found. For a monadic version, seetreeStoreChangeM
.
treeStoreChangeM :: TreeStore a -> TreePath -> (a -> IO a) -> IO Bool Source
Change a node in the store.
- Returns
True
if the node was found. For a purely functional version, seetreeStoreChange
.
:: TreeStore a | the store |
-> TreePath |
|
-> Int |
|
-> Forest a | the list of trees to be inserted |
-> IO () |
Insert nodes into the store.
- The given list of nodes is inserted into given parent at
pos
. If the parent existed, the function returnsJust path
wherepath
is the position of the newly inserted elements. Ifpos
is negative or greater or equal to the number of children of the node atpath
, the new nodes are appended to the list.
:: TreeStore a | the store |
-> TreePath |
|
-> Int |
|
-> a | the value to be inserted |
-> IO () |
Insert a single node into the store.
- This function inserts a single node without children into the tree.
Its arguments are similar to those of
treeStoreInsert
.
:: TreeStore a | the store |
-> TreePath |
|
-> Int |
|
-> Tree a | the value to be inserted |
-> IO () |
Insert a node into the store.
treeStoreRemove :: TreeStore a -> TreePath -> IO Bool Source
Remove a node from the store.
- The node denoted by the path is removed, along with all its children.
The function returns
True
if the given node was found.
treeStoreClear :: TreeStore a -> IO () Source
treeStoreGetTree :: TreeStore a -> TreePath -> IO (Tree a) Source