NAME
Toplevel - base class for mega-widgets in a top-level win
dow
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-wid
get. It creates a pop-up message that the user can
option add *MessageInfo.title "Notice" widgetDefault
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
}
}
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
Man(1) output converted with
man2html