From fbdbd46e0d75f68e9da179fd08e045632c7faeb0 Mon Sep 17 00:00:00 2001 From: Matthijs Kooijman Date: Sun, 23 Aug 2009 18:06:09 +0200 Subject: [PATCH] Make runGUI create a window again. Events are not yet handled, backbuffering for drawing operations isn't supported yet either. --- FPPrac.hs | 33 ++++++++++++++++++++++++++++++++- 1 file changed, 32 insertions(+), 1 deletion(-) 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 -- 2.30.2