sifflet-2.3.0: Simple, visual, functional language for learning about recursion.

Safe HaskellNone




data VPUI Source

VPUI: Sifflet (formerly VisiProg) User Interface The initialEnv is apt to contain "builtin" functions; it's preserved here so that when writing to a file, we can skip the functions that were in the initial env.




vpuiWindows :: Map WinId VPUIWindow

all the windows of the program

vpuiToolkits :: [(String, VPToolkit)]

ordered association list, collections of tools

vpuiInitialDir :: FilePath
vpuiCurrentDir :: FilePath
vpuiCurrentFile :: Maybe FilePath

the file opened or to save

vpuiStyle :: Style

for windows, canvases, editors

vpuiInitialEnv :: Env

initial value of global environment

vpuiGlobalEnv :: Env

the global environment

vpuiFileEnv :: Env

global env as of last file open or save, used to detect unsaved changes

vpuiDebugging :: Bool

include debug commands in context menu?

vpuiFileChanged :: VPUI -> Bool Source

Tell whether the global environmkent has changed since the last file open or save

vpuiUserEnvAList :: VPUI -> [(String, Value)] Source

Extract from the environment the part defined by the user But you probably want to use Graphics.UI.Sifflet.Window.UserFunctions instead of this.

Operations on a VPUI involving its window

vpuiInsertWindow :: VPUI -> WinId -> VPUIWindow -> VPUI Source

Insert a window in the window map

vpuiTryGetWindow :: VPUI -> WinId -> Maybe VPUIWindow Source

Try to get the VPUIWindow with the given window ID, return Just result or Nothing

vpuiGetWindow :: VPUI -> WinId -> VPUIWindow Source

Get the VPUIWindow with the given window ID; it is an error if this fails.

vpuiUpdateWindow :: VPUI -> WinId -> (VPUIWindow -> VPUIWindow) -> VPUI Source

Apply an update function to a VPUIWindow with given window ID; it is an error if this fails.

vpuiReplaceWindow :: VPUI -> WinId -> VPUIWindow -> VPUI Source

Replace a VPUIWindow with given window ID; it is an error if this fails.

vpuiUpdateWindowIO :: WinId -> (VPUIWindow -> IO VPUIWindow) -> VPUI -> IO VPUI Source

Apply an update IO action to a VPUIWindow with given window ID; it is an error if this fails.

vpuiRemoveVPUIWindow :: WinId -> VPUI -> VPUI Source

Remove a window from the windows map; it has already been destroyed in the GUI

Operations on a window involving its canvas

vpuiWindowLookupCanvas :: VPUIWindow -> Maybe VCanvas Source

Try to find canvas; fail gracefully

vpuiWindowGetCanvas :: VPUIWindow -> VCanvas Source

Find canvas or fail dramatically

Operation on a VPUI involving the canvas of its window

vpuiModCanvas :: VPUI -> WinId -> (VCanvas -> VCanvas) -> VPUI Source

Update the canvas of the specified window, without IO

vpuiModCanvasIO :: VPUI -> WinId -> (VCanvas -> IO VCanvas) -> IO VPUI Source

Update the canvas of the specified window, with IO

Other operations on a window

data VPToolkit Source

Toolkit functions are organized in groups (rows) for presentation in a toolbox



data Toolbox Source

A Toolbox is a framed VBox with a set of Toolbars attached



data Tool Source



data ToolContext Source

ToolContext: The way a tool should be applied depends on where it is being used

type ToolOp = VPUI -> WinId -> ToolContext -> [Modifier] -> Double -> Double -> IO VPUI Source

ToolOp a is intended for a = VPUIWindow or VCanvas type ToolOp a = VPUI -> a -> ToolContext -> [Modifier] -> Double -> Double -> IO a

toToolOpVW :: CanvasToolOp -> ToolOp Source

A helper for making toolOps from actions on VCanvas

data Workspace Source




wsRootWidget :: VBox

container of the rest

wsCanvas :: VCanvas

the canvas

wsButtonBar :: HBox
wsStatusbar :: Statusbar
wsArgToolSpecs :: [ArgSpec]

none if not editing

data VCanvas Source

A canvas that can display multiple boxes representing expressions or function definitions or calls

data Dragging Source

A Dragging keeps track of the object (node) being dragged and the current mouse position.