wigwam is a bundle of tricks for itcl_wish that magically enables the
Tk widgets to be regarded as [incr tcl] classes. The illusion is
accomplished by transparently creating wrapper classes that are
functionally equivalent to the widgets. The use of a wrapper name,
viz. itcl_button, itcl_canvas, etc., as a command or in an inherit
statement is sufficient to spark auto-loading into life and cause
generation on the fly.

While it would be possible, with no advantage, to use the wrappers in
place of the widgets, e.g.

	itcl_button .b -text help -command "puts help"

the real gain comes from the potential for subclassing, e.g.

        itcl_class PrintButton {
            inherit itcl_button

            constructor {args} {
                eval itcl_button::constructor $args
            }

            method print {} {
                puts "$text"
            }
        }
	PrintButton .pb -text hello -command {$this print}

Of even greater interest is likely to be the possibility of creating
compound widgets by subclassing itcl_frame, e.g.

    itcl_class Control {
        inherit itcl_frame
        
        constructor {args} {
            eval itcl_frame::constructor $args
        
            label $this.value
            scale $this.slider -showvalue false
            switch $orient {
                vertical {pack $this.value $this.slider -side left -fill y}
                default  {$this.slider configure -orient horizontal
                          pack $this.value $this.slider -fill x}
            }
            bind $this.slider <Button1-Motion> "$this update"
            update
        }
            
        method update {} {
            $this.value configure -text [$this.slider get]
        }

        public orient {horizontal}
    }
    Control .c -orient vertical


This release is compatible with itcl-1.5 and can be obtained from
harbor.ecn.purdue.edu in /pub/tcl/code/wigwam-1.5.tar.gz.

The distribution contains some sample classes that have been written
using the wrappers. Examples belonging to the first category are:

    BasicEntry
        A base class for entry widgets that adds provision for the
        specification of a command to be executed when Return is 
        pressed.
    
    Scanvas
        A canvas with scan scrolling enabled.

and to the second 

    FileNominator
        A file selector similar to the one in JKW's Xaw aXe editor.
    
    Viewport
        A container that adds scrolling to an arbitrary scrollable
        widget. 


Nautilus, the [incr tcl] browser/debugger by LFM, is written using
wigwam technology.

Wigwam is an acronym of "wrappers for [incr tcl] graphics by Wight and
Marshall".

-------
       Jim Wight <j.k.wight@newcastle.ac.uk>
Lindsay Marshall <lindsay.marshall@newcastle.ac.uk>
