Mercurial > gui
diff togglePanel.urs @ 8:90be8b8917d5
Add a widget that opens and closes a panel.
author | Karn Kallio <kkallio@eka> |
---|---|
date | Fri, 17 Jun 2011 10:12:05 -0430 |
parents | |
children | 16447dc6a68c |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/togglePanel.urs Fri Jun 17 10:12:05 2011 -0430 @@ -0,0 +1,34 @@ +(* 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 -> Type +(* The type of appearing and disappearing panels. The argument + * is the type of the content. *) + +type formatCtl = {FormatPanel : xbody -> xbody -> xbody, + (* 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 -> xbody, + (* This should accept the transaction representing the opening of + * the panel and produce an xml control having this as action. *) + + CloseCtl : transaction unit -> xbody} + (* This should accept the transaction representing the closing of + * the panel and produce an xml control having this as action. *) + +val defaultFormat : formatCtl +(* Some reasonable default formats for the layout and controls. *) + +val create : t ::: Type -> Gui.gui t -> formatCtl -> t -> bool -> transaction (togglePanel t) +(* Given instructions for formatting the display, some content and whether to start in + * the open state get such a togglePanel. *) + +val gui_togglePanel : t ::: Type -> Gui.gui t -> Gui.gui (togglePanel t) +(* The togglePanel is itself a widget. It can be pretty printed to a piece + * of xml with a use of toXml. *)