packages feed

lhae-0.0.2: src/View.hs

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
                 }