Provided by: tk-itk4-doc_4.1.0-3.1_all bug

NAME

       Toplevel - base class for mega-widgets in a top-level window

INHERITANCE

       itk::Archetype <- itk::Toplevel

STANDARD OPTIONS

       background      cursor

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

WIDGET-SPECIFIC OPTIONS

       Name:   title
       Class:  Title
       Command-Line Switch:    -title

              Sets  the title that the window manager displays in the title bar above the window.
              The default title is the null string.
_________________________________________________________________

DESCRIPTION

       The Toplevel class inherits everything from the Archetype class, and adds  a  Tk  toplevel
       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 Toplevel class is implemented with a Tk toplevel,  mega-widgets  in
       the  Toplevel  class  have their own toplevel window.  This class is used to create dialog
       boxes and other pop-up windows.

COMPONENTS

       Name:           hull
       Class:          Toplevel

              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 MessageInfo mega-widget.  It creates a pop-up message
       that the user can dismiss by pushing the "Dismiss" button.
              option add *MessageInfo.title "Notice" widgetDefault

              itcl::class MessageInfo {
                  inherit itk::Toplevel

                  constructor {args} {
                      itk_component add dismiss {
                          button $itk_interior.dismiss -text "Dismiss"                 -command "destroy $itk_component(hull)"
                      }
                      pack $itk_component(dismiss) -side bottom -pady 4

                      itk_component add separator {
                          frame $itk_interior.sep -height 2 -borderwidth 1 -relief sunken
                      }
                      pack $itk_component(separator) -side bottom -fill x -padx 4

                      itk_component add icon {
                          label $itk_interior.icon -bitmap info
                      }
                      pack $itk_component(icon) -side left -padx 8 -pady 8

                      itk_component add infoFrame {
                          frame $itk_interior.info
                      }
                      pack $itk_component(infoFrame) -side left -expand yes             -fill both -padx 4 -pady 4

                      itk_component add message {
                          label $itk_interior.mesg -width 20
                      } {
                          usual
                          rename -text -message message Text
                      }
                      pack $itk_component(message) -expand yes -fill both

                      eval itk_initialize $args

                      after idle [code $this centerOnScreen]
                  }

                  protected method centerOnScreen {} {
                      update idletasks
                      set wd [winfo reqwidth $itk_component(hull)]
                      set ht [winfo reqheight $itk_component(hull)]
                      set x [expr ([winfo screenwidth $itk_component(hull)]-$wd)/2]
                      set y [expr ([winfo screenheight $itk_component(hull)]-$ht)/2]
                      wm geometry $itk_component(hull) +$x+$y
                  }
              }

              itk::usual MessageInfo {
                  keep -background -cursor -foreground -font
                  keep -activebackground -activeforeground -disabledforeground
                  keep -highlightcolor -highlightthickness
              }

              #
              # EXAMPLE:  Create a notice window:
              #
              MessageInfo .m -message "File not found:\n/usr/local/bin/foo"

KEYWORDS

       itk, Archetype, Widget, mega-widget