Mercurial > gui
view togglePanel.urs @ 21:30f9a763f5fb
Tweak TogglePanel signature
author | Adam Chlipala <adam@chlipala.net> |
---|---|
date | Sat, 24 Sep 2011 17:35:33 -0400 |
parents | 554e342665fe |
children | 5905b56e0cd9 |
line wrap: on
line source
(* TogglePanel provides a panel or section of xml which appears and * disappears when the user activates an associated control. The * panel may contain another gui widget as content. *) con togglePanel :: Type -> {Unit} -> Type (* The type of appearing and disappearing panels. The arguments * are as for [Gui.gui]. *) con formatCtl = fn ctx :: {Unit} => [body ~ ctx] => {FormatPanel : xml (body ++ ctx) [] [] -> xml (body ++ ctx) [] [] -> xml (body ++ ctx) [] [], (* Allows for formatting the panel. The first two parameters * represent "holes" for the control and panel respectively while * the result should be the desired XML laying out the whole structure. * The controls can be formatted with the options below. * The panel part appears and disappears according to the use * of the controls. *) OpenCtl : transaction unit -> xml (body ++ ctx) [] [], (* This should accept the transaction representing the opening of * the panel and produce an XML control having this as action. *) CloseCtl : transaction unit -> xml (body ++ ctx) [] []} (* This should accept the transaction representing the closing of * the panel and produce an xml control having this as action. *) (* Some reasonable default formats for the layout and controls. *) val defaultFormat : formatCtl [] val create : t ::: Type -> ctx ::: {Unit} -> formatCtl ctx (* Formatting instructions *) -> t (* Enclosed widget *) -> bool (* Start in open state? *) -> transaction (togglePanel t ctx) val gui_togglePanel : t ::: Type -> ctx ::: {Unit} -> Gui.gui t ctx -> Gui.gui (togglePanel t ctx) ctx (* The togglePanel is itself a widget. It can be pretty printed to a piece * of XML with a use of [toXml]. *)