X-Git-Url: https://git.stderr.nl/gitweb?a=blobdiff_plain;f=FPPrac.hs;h=47b3cad30e0c80c06efa2445adeebc50b9ab7e62;hb=b4799aaeb1d9b38300143aa3e70d3bd36307a781;hp=e56c60458dd3fa75e655bd00c7505969b9dd922f;hpb=68c76988596d764cc11eb7b7d9c7d25823892b78;p=matthijs%2Fprojects%2Ffpprac.git diff --git a/FPPrac.hs b/FPPrac.hs index e56c604..47b3cad 100644 --- a/FPPrac.hs +++ b/FPPrac.hs @@ -98,10 +98,8 @@ testProg = Main } data IState = forall s. IS - { {-sFrame :: Frame () - , sPanel :: Panel () - , buffer :: MemoryDC () - , -}postponed :: IORef [Request] + { window :: Gtk.Window + , postponed :: IORef [Request] , usrState :: IORef s , usrProg :: TinaStep s } @@ -134,20 +132,27 @@ runTina :: TinaProgram -> IO () runTina Main {..} = do usrState <- newIORef initialState postponed <- newIORef (GfxText (rgb 0 0 0) (pt 50 50) "foo" : GfxClear :initialRequests) - let state = IS { usrProg = eventHandler, .. } - runGUI {-(sz windowWidth windowHeight) -}state + let state = IS { window = undefined, usrProg = eventHandler, .. } + runGUI windowWidth windowHeight state -runGUI :: {-Size ->-} IState -> IO () -runGUI s = do +runGUI :: Int -> Int -> IState -> IO () +runGUI w h 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.windowTitle := "FP Practicum" + , Gtk.windowDefaultWidth := w + , Gtk.windowDefaultHeight := h + ] Gtk.onDestroy window Gtk.mainQuit + + -- Add the window to the state + let state = s { window = window } -- Show the window and start the Gtk mainloop. Gtk.widgetShowAll window