Widget(3itk)

NAME
Widget - base class for mega-widgets within a frame

INHERITANCE
itk::Archetype <- itk::Widget

STANDARD OPTIONS

background	cursor

See the "options" manual entry for details on the standard options.

DESCRIPTION

The Widget class inherits everything from the Archetype class, and adds a Tk frame called the "hull" component to represent the body of the mega-widget. The window class name for the hull is set to the most-specific class name for the mega-widget. The protected variable itk_interior contains the window path name for the "hull" component. Derived classes specialize this widget by packing other widget components into the hull.

Since the hull for the Widget class is implemented with a Tk frame, mega-widgets in the Widget class can be packed into other frames and toplevels.

COMPONENTS

Name:	hull
Class:	Frame

    The "hull" component acts as the body for the entire mega-widget. Other components are packed into the hull to further specialize the widget.

EXAMPLE

The following example implements a simple TextDisplay mega-widget. It creates a read-only display of text with a text widget and a scrollbar.
    option add *TextDisplay.wrap none widgetDefault
    option add *TextDisplay.textBackground ivory widgetDefault
    option add *TextDisplay.width 40 widgetDefault
    option add *TextDisplay.height 10 widgetDefault

    itcl::class TextDisplay {
        inherit itk::Widget

        constructor {args} {
            itk_component add text {
                text $itk_interior.info -state disabled                 -yscrollcommand [code $itk_interior.sbar set]
            } {
                usual
                keep -tabs -wrap -width -height
                rename -background -textbackground textBackground Background
            }
            pack $itk_component(text) -side left -expand yes -fill both

            itk_component add scrollbar {
                scrollbar $itk_interior.sbar                 -command [code $itk_interior.info yview]
            }
            pack $itk_component(scrollbar) -side right -fill y

            eval itk_initialize $args
        }

        public method display {info}
        public method append {info}
    }

    itcl::body TextDisplay::display {info} {
        $itk_component(text) configure -state normal
        $itk_component(text) delete 1.0 end
        $itk_component(text) insert 1.0 $info
        $itk_component(text) configure -state disabled
    }

    itcl::body TextDisplay::append {info} {
        $itk_component(text) configure -state normal
        $itk_component(text) insert end $info
        $itk_component(text) configure -state disabled
    }

    itk::usual TextDisplay {
        keep -background -cursor -foreground -font
        keep -activebackground -activerelief
        keep -highlightcolor -highlightthickness
        keep -insertbackground -insertborderwidth -insertwidth
        keep -insertontime -insertofftime
        keep -selectbackground -selectborderwidth -selectforeground
        keep -textbackground -troughcolor
    }

    #
    # EXAMPLE:  Display the /etc/passwd file
    #
    TextDisplay .file -background red
    pack .file

    .file display [exec cat /etc/passwd]

KEYWORDS
itk, Archetype, Widget, mega-widget