import Graphics.UI.Gtk
import Data.IORef

main :: IO ()
main = do
  initGUI
  window <- windowNew
  window `onDestroy` mainQuit
  windowSetTitle window "Simple Windowed App"
  set window [ containerBorderWidth:= 10 ]

  hbox <- hBoxNew True 5

  set window [ containerChild:= hbox ]

  lab <- labelNew (Just "There have been no clicks yet")
  button <- buttonNewWithLabel "Click me"
  set hbox [ containerChild:= lab ]
  set hbox [ containerChild:= button ]

  m <- newIORef 0

  onClicked button $ do
    v <- readIORef m
    writeIORef m (v+1)
    set lab [ labelText:= "There have been " ++ show (v+1) ++ " clicks" ]

  widgetShowAll window

  mainGUI