packages feed

lgtk-0.1: main/Main.hs

{-# LANGUAGE RankNTypes #-}
import Control.Monad
import Control.Monad.Trans
import Prelude hiding ((.), id)

import Control.MLens.ExtRef.Pure
import GUI.MLens.Gtk.IO
import GUI.MLens.Gtk

import GUI.MLens.Gtk.Demos.Tri
import GUI.MLens.Gtk.Demos.IntListEditor
import GUI.MLens.Gtk.Demos.TEditor

realize :: (forall i . I (Ext i IO)) -> IO ()
realize e = runExt_ mapI e >>= runI

main :: IO ()
main = realize $ Notebook
    [ (,) "IntListEditor" $ Action $ do
        state <- lift $ liftM (mapMLens lift) $ join $ liftM memoMLens $ fileRef "intListEditorState.txt"
        settings <- lift $ liftM (mapMLens lift) $ join $ liftM memoMLens $ fileRef "intListEditorSettings.txt"
        return $ intListEditor state settings
    , (,) "Tri" tri
    , (,) "T-Editor1" tEditor1
    , (,) "T-Editor3" $ Action $ newRef (iterate (Node Leaf) Leaf !! 10) >>= tEditor3
    ]