Mercurial > gui
view navbar.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 | d314d2ec3300 |
line wrap: on
line source
(* NAVBAR provides services to construct and pretty print to xml typical * menu items (of a visible text and a url link) and menu bars assembled * from them. It is intended to be used as a low-level component in * constructing navigation related widgets and theme parts. *) type navItem (* Items in the navigation menu. *) con navBar :: Type -> Type (* A menu bar of navigation links. Up to one link may be active. *) type build type print (* These track the current navbar mode. *) class mode (* To make sure we always print the navbar correctly. *) val navToXml_build : mode build val navToXml_print : mode print (* How to print both modes. *) val printingNavBar : navBar build -> navBar print (* This switches the navbar from building mode to printing mode. Normally not * necessary to call this, but is in the signature in case the programmer will * pass the same navbar to several components wanting to print it. Then by * using this first multiple (redundant) calls to List.rev can be avoided. * Mode tracking makes this optimization safe. *) val emptyNavBar : navBar build (* An empty menu bar. *) val mkNavItem : string -> url -> navItem (* Make a menu item with visible text given by the string and linking to url. *) val navAdd : navItem -> navBar build -> navBar build (* Add an unactive item to the right end of the navbar. *) val navAddActive : navItem -> navBar build -> navBar build (* Add an active item to the right end of the navbar. If there already * was an active item it will be deactivated. *) val navItemToXml : option css_class -> navItem -> xbody (* Pretty print a navItem with an optional style to a piece of <a>...</a> xml. *) val navBarToXml : t ::: Type -> mode t -> navBar t -> xbody (* Pretty print the navigation menu as a piece of xml made of * a chain <li><a>...</a></li> repeated. *) style active style last (* CSS classes to mark the active and last menu item. *)