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