module Main where import TestSample ( myConfig, Config(..) ) import Control.EventDriven ( initializeTalker, putEvent_ ) import Graphics.UI.Gtk import Data.IORef import Data.Maybe putEvent__ tkref ev = do tk <- readIORef tkref mtk <- putEvent_ ( ebind myConfig ) ( output myConfig ) tk ev case mtk of Nothing -> mainQuit Just ntk -> writeIORef tkref ntk main :: IO () main = do talker <- newIORef $ initializeTalker ( initV myConfig ) ( kbind myConfig ) initGUI window <- windowNew vbox <- vBoxNew True 1 succB <- buttonNew showB <- buttonNew quitB <- buttonNew set window [ containerChild := vbox ] boxPackStart vbox succB PackNatural 0 boxPackStart vbox showB PackNatural 0 boxPackStart vbox quitB PackNatural 0 set succB [ buttonLabel := "succ" ] set showB [ buttonLabel := "show" ] set quitB [ buttonLabel := "quit" ] onClicked succB $ do putStrLn "succ" putEvent__ talker "succ" onClicked showB $ do putStrLn "show" putEvent__ talker "show" onClicked quitB $ do putStrLn "quit" putEvent__ talker "quit" onDestroy window mainQuit widgetShowAll window mainGUI