module View (View(..),Info(..),onGrid,isGridOpen ,info) where import qualified Graphics.UI.WX as WX import qualified View.Component.Grid as Grid import qualified View.Component.TextWindow as TextWindow import qualified View.Component.Notebook as Notebook data View = View { frame :: WX.Frame () , formulaInput :: TextWindow.TextWindow , notebook :: Notebook.Notebook , current :: WX.Var (Maybe Grid.Grid) } data Info = Info { numDataRows :: IO Int , numDataColumns :: IO Int } onGrid :: View -> (Grid.Grid -> IO a) -> IO a onGrid view f = WX.varGet (current view) >>= \(Just grid) -> f grid isGridOpen :: View -> IO Bool isGridOpen view = do current <- WX.varGet $ current view return $ case current of Nothing -> False _ -> True info :: View -> Info info view = Info { numDataRows = onGrid view Grid.numDataRows , numDataColumns = onGrid view Grid.numDataColumns }