packages feed

sifflet-1.0: sifflet.hs

module Main (main) where

import Data.IORef

import Sifflet.Data.TreeLayout
import Sifflet.Examples
import Sifflet.Language.Expr
import Sifflet.UI

-- ---------------------------------------------------------------------
-- | Environment

initialEnv :: Env
initialEnv = exampleEnv

-- | Default toolkit

defaultVPUIToolkitsWithExamples :: [(String, VPToolkit)]
defaultVPUIToolkitsWithExamples =
    let toolkits =
            -- each item has name, width, list of rows tools
            [VPToolkit "Base" 500 (functionToolsFromLists baseFunctionsRows),
             VPToolkit "Examples" 500 
                           (functionToolsFromLists [exampleFunctionNames]),
             VPToolkit "My Functions" 500 (functionToolsFromLists [[]])]
    in zip (map toolkitName toolkits) toolkits

-- | Main function

main :: IO ()
main = do
  {
    -- scim-bridge causes many errors, so don't use it
    suppressScimBridge

  -- Initialize GTK
  ; _ <- initGUI

    -- create the user interface
  ; vpui <- vpuiNew wstyle initialEnv
  ; let vpui' = vpui {vpuiToolkits = defaultVPUIToolkitsWithExamples}
        workId = "Sifflet Workspace"
  ; uiref <- newIORef vpui'
    -- Create wome windows
  ; let cbmgr = mkCBMgr uiref
  ; vpui'' <- showWorkWin vpui' workId cbmgr
  ; writeIORef uiref vpui''

  ; showFunctionPadWindow cbmgr vpui'' >>= writeIORef uiref
    -- run GTK
  ; mainGUI
  ; return ()
}