
The language interpreted by formsview (i.e., by the Modula-3 FormsVBT
runtime interface) is defined in the FormsVBT Reference Manual.  Some
of the properties can be changed at runtime.
    
The following universal properties are supported:

        BgColor
        Color
        DarkShadow
        Font
        Labelfont
        LightShadow
        Name
        ShadowSize

A Macro definition can appear anywhere, as if it were a universal
property. The syntax for defining a macro is:
    
        (Macro <name> [BOA] <formals> <expression>)

            Example:

                (Macro Boxed (x)
                  `(Border (Pen 2) (Rim (Pen 16) ,x)))

            The syntax for calling a macro is

                (<name> (<formal> <actual>) (<formal> <actual>) ...)

            Example:

                (Boxed (x (Text (BgColor "Red") "Warning")))

            That expands into

                (Border (Pen 2)
                    (Rim (Pen 16)
                        (Text (BgColor "Red") "Warning"))))

            If the keyword BOA ("by order of arguments") appears
            in the macro definition, then the arguments are
            positional and not named. Example:

                (Macro Ht BOA (n v) `(Shape (Height ,n) ,v))

            Given that definition,
		(Ht 20 (Button "Go!"))
	    expands into
	        (Shape (Height 20) (Button "Go!"))
            
            Macros must be defined before they are called. The effect
            of using a macro to redefine an existing name (e.g., VBox)
            is undefined. The expressions should expand into legal
            forms, including Macros.  Nested backquotes are permitted.
            Within a backquote, you may use "," to insert a value,
            or ",@" to append a list of values.  Example:

                (Macro V (items) `(VBox (Color "Red") ,@items))
                (V (items ("abc" "def")))

            The second form expands into

                (VBox (Color "Red") "abc" "def")

Font and LabelFont take string-arguments, e.g., 

    "fixed"
    "-*-new century schoolbook-*-r-*-*-*-120-*-*-*-*-*-*"
    
They also take their own property lists for the individual
metrics:

	Foundry
	Family
	WeightName
	Slant
	Width
	PointSize
	HRes
	VRes
	Spacing
	AvgWidth
	Encoding
	Registry

PointSize is a cardinal, and it actually represents TENTHS of a point,
so a 12-point would be specified as (PointSize 120).  All the other
metrics are text.  The defaults are:

(Font	(Foundry	"*")
	(Family		"fixed")
	(WeightName	"medium")
	(Slant		"r")
	(Width		"semicondensed")
	(PointSize 	100)
	(HRes 		"*")
	(VRes 		"*")
	(Spacing	"*")
	(AvgWidth 	"*")
	(Encoding 	"iso8859")
	(Registry 	"1"))
(LabelFont
	(Foundry	"*")
	(Family		"helvetica")
	(WeightName	"bold")
	(Slant		"r")
	(Width		"*")
	(PointSize 	100)
	(HRes 		"*")
	(VRes 		"*")
	(Spacing	"*")
	(AvgWidth 	"*")
	(Encoding 	"iso8859")
	(Registry 	"1"))
	
Most users will specify only Family, WeightName,
and PointSize.  Examples:

    (Font (Family "courier") (WeightName "Bold"))
    (LabelFont (Family "Times") (PointSize 240))

The chart below lists the components and the properties they support.
See the FormsVBT Reference Manual for details.

        Audio => Value, Volume, Mute, IgnoreMapping
        Bar => SizeRange
        Boolean => Inverting, CheckMark, CheckBox, MenuStyle, Value
        Border => Pen, Pattern
        Browser => Value, Select, Items, From, Quick
        Button    
        Choice => Inverting, CheckMark, CheckBox, MenuStyle, Value
        CloseButton => For
        DirMenu => For [filebrowser]
        FileBrowser => ReadOnly, Suffixes
        Fill => SizeRange
        Filter => Passive, Dormant, Vanish, Active
        Frame => ShadowStyle
        Generic
        Glue => SizeRange
        Guard
        HBox
        HPackSplit => HGap, VGap, Background
        HTile => Targets
        Helper => For [filebrowser]
        Insert => Main
        IntApply => For, Property
        LinkButton => For
        LinkMButton => For
        Macro
        MButton
        Menu
        MultiBrowser => Value, Select, Items, From, Quick
        Numeric => AllowEmpty, HideButtons, Value, Min, Max
        PageButton => For [TSplit], Back
        PageMButton => For [TSplit], Back
        Pixmap => Main
        PopButton => For [ZChild or ZChassis]
        PopMButton => For [ZChild or ZChassis]
        Radio => Value
        Ridge => Main, ShadowStyle
        Rim => Pen, Pattern
        Scale => HScale, VScale
        Scroller => Unrelated, Vertical, Min, Max, Value, Thumb, Step
        Shape => Height, Width, Main
        Source
        Stable
        TSplit => Value, Which, Circular, Flex
        Target
        Text => Main, Margin, LeftAlign, RightAlign, From
        TextEdit => From, Value, ReadOnly
        Texture => Main, LocalAlign
        TrillButton
        TypeIn => Value, ExpandOnDemand, ReadOnly, Scrollable
        VBox
        VPackSplit => HGap, VGap, Background
        VTile => Targets
        Video => Quality, Colors, Width, Height, Synchronous,
          MSecs, Paused, FixedSize
        Viewport => Step; HorAndVer, HorOnly, or VerOnly.
        ZBackground
        ZChassis => At, Open, Title, NoClose
        ZChild   => At, Open
        ZGrow
        ZMove
        ZSplit


Copyright  1992-1993, Digital Equipment Corporation.
Copyright  1996-2000, Critical Mass, Inc.
See File COPYRIGHT-CMASS for details.
