diff popupNav.urs @ 6:f17b869fbb71

Shifting some generic theme navigation menu code to the library.
author Karn Kallio <kkallio@eka>
date Tue, 26 Apr 2011 20:27:04 -0430
parents
children 48a4180171b0
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/popupNav.urs	Tue Apr 26 20:27:04 2011 -0430
@@ -0,0 +1,29 @@
+(* POPUPNAV provides a simple navigation menu which opens and
+ * closes when the user clicks on an associated control. *)
+
+con popupNav :: Type -> Type
+(* The type of popping open navigation menus. *)
+
+type formatCtl = {FormatMenu : xbody -> xbody -> xbody,
+                  (* Allows for formatting the menu.  The first two parameters
+                   * represent "holes" for the control and menu items and
+                   * the result should be the desired menu xml.  The controls
+                   * can be formatted with the options below, and the menu items
+                   * will be placed as a chain of <li><a> ....</a></li>. *)
+
+                  OpenCtl : transaction unit -> xbody,
+                  (* This should accept the transaction representing the opening of
+                   * the menu and produce an xml control having this as action. *)
+
+                  CloseCtl : transaction unit -> xbody}
+                  (* This should accept the transaction representing the closing of
+                   * the menu and produce an xml control having this as action. *)
+
+val defaultFormat : formatCtl
+(* Some reasonable default formats for the menu layout and controls. *)
+
+val create : t ::: Type -> formatCtl -> Navbar.mode t -> Navbar.navBar t -> transaction (popupNav t)
+(* Given instructions for formatting the display and a navbar, get a popup navigation. *)
+
+val render : t ::: Type -> Navbar.mode t -> popupNav t -> xbody
+(* Pretty prints a popup navigation as a piece of xml. *)