From: Matthijs Kooijman Date: Mon, 24 Aug 2009 17:51:16 +0000 (+0200) Subject: Save the opened window in the state. X-Git-Url: https://git.stderr.nl/gitweb?a=commitdiff_plain;h=b4799aaeb1d9b38300143aa3e70d3bd36307a781;p=matthijs%2Fprojects%2Ffpprac.git Save the opened window in the state. --- diff --git a/FPPrac.hs b/FPPrac.hs index cfbf000..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,7 +132,7 @@ 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, .. } + let state = IS { window = undefined, usrProg = eventHandler, .. } runGUI windowWidth windowHeight state runGUI :: Int -> Int -> IState -> IO () @@ -145,12 +143,16 @@ runGUI w h s = do -- 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.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