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