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.
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