The Menu package provides for simple menus built on top
of sketch.
A "menu set" is created and the user programme can add
one or more menus to the set. Each menu may be anchored
by a button which is always visible (akin to the 'file'
pull down on many popular GUI applications), or can be
'popped up' at the desire of the user programme.
Each menu is a set of 3-D buttons. When the mouse
pointer is positioned on a button, and a mouse button
is depressed and released, and event percolates through
the menu system to generate an event structure onto the
channel whch has been associated with the button.
The user application can associate one channel per menu,
one channel for all menus, or even one channel per button
as is desired. Each menu button is given a unique ID when
created, so any combination of the above is possible.
Menu buttons can be a set of radio buttons, sticky (click
once to depress, click a second time to release), or
spring buttons (button never stays depressed). The
buttons in a single menu may be a combination of these
variouse types (though only one group of radio buttons
per menu is permitted).
The property menu is an extension to a normal menu which
allows the user programme to define the menu with a
set of Json, and then can query the state of each of the
properties maintains. Properties are simple boolean (on
or off) settings and are represnted in the list by
sticky buttons which can be set to on/off when the menu
is created; allowing the user programme the ability to
load and set the initial state.