plucky (3) Toplevel.3itk.gz

Provided by: itk3-doc_3.4.2-4_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