X-Git-Url: https://git.stderr.nl/gitweb?p=matthijs%2Fprojects%2Ffpprac.git;a=blobdiff_plain;f=FPPrac.hs;fp=FPPrac.hs;h=c8512d74b8f5af309f9f6b8d48a5cc386c5384db;hp=ddf421ebf8821c191cfb8c2fd85fb5786c9c4b42;hb=fbdbd46e0d75f68e9da179fd08e045632c7faeb0;hpb=cb9aa250052bfae8f8c34cb74701f0c381ada2c6 diff --git a/FPPrac.hs b/FPPrac.hs index ddf421e..c8512d7 100644 --- a/FPPrac.hs +++ b/FPPrac.hs @@ -9,6 +9,11 @@ module FPPrac ( ) where import qualified Graphics.UI.Gtk as Gtk +import Graphics.UI.Gtk (AttrOp(..)) -- For the := constructor +import qualified Graphics.Rendering.Cairo as Cairo +import qualified Graphics.UI.Gtk.Gdk.EventM as EventM + +import Control.Monad.Trans -- for liftIO import Data.IORef import Control.Applicative import Control.Monad @@ -133,7 +138,33 @@ runTina Main {..} = do runGUI {-(sz windowWidth windowHeight) -}state runGUI :: {-Size ->-} IState -> IO () -runGUI s = do return () +runGUI s = do + -- Init GTK. + Gtk.initGUI + + -- Create a window, which will make the mainloop terminated when + -- it is closed. + window <- Gtk.windowNew + Gtk.set window [ Gtk.containerBorderWidth := 10 + , Gtk.windowTitle := "FP Practicum" ] + Gtk.onDestroy window Gtk.mainQuit + + Gtk.on window Gtk.exposeEvent $ do + --(w,h) <- Gtk.eventWindowSize + dw <- EventM.eventWindow + liftIO $ do + Gtk.renderWithDrawable dw $ do + --translate (w/2) (h/2) + --scale (w/drawSide) (h/drawSide) + Cairo.arc 100 100 50 0 (2*pi) + Cairo.fill + return True + + -- Show the window and start the Gtk mainloop. + Gtk.widgetShowAll window + Gtk.mainGUI + + {- runGUI s IS {..} = do sFrame <- frame