) 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
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