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