module Graphics.UI.Gtk.Reactive.TreeView where
import Control.Monad.IO.Class (liftIO)
import Control.Monad (void)
import Data.ReactiveValue
import Graphics.UI.Gtk
import Graphics.UI.Gtk.Helpers.TreeView
treeViewSelectedRowsReactive :: TreeView -> ReactiveFieldRead IO [TreePath]
treeViewSelectedRowsReactive tv = ReactiveFieldRead getter notifier
where getter = treeViewGetSelectedPath tv
notifier p = void (tv `on` cursorChanged $ liftIO p)
treeViewGetSelectedReactive :: TreeView -> ListStore a -> ReactiveFieldRead IO (Maybe a)
treeViewGetSelectedReactive tv ls = ReactiveFieldRead getter notifier
where getter = treeViewGetSelected tv ls
notifier p = void (tv `on` cursorChanged $ liftIO p)