# # Messagedialog # ---------------------------------------------------------------------- # Implements a message dialog composite widget. The Messagedialog is # derived from the Dialog class and is composed of an image and text # component. The image will accept both images as well as bitmaps. # The text can extend mutliple lines by embedding newlines. # # ---------------------------------------------------------------------- # AUTHOR: Mark L. Ulferts EMAIL: mulferts@spd.dsccc.com # # @(#) $Id: messagedialog.itk,v 1.3 2006/09/11 20:35:55 irby Exp $ # ---------------------------------------------------------------------- # Copyright (c) 1995 DSC Technologies Corporation # ====================================================================== # Permission to use, copy, modify, distribute and license this software # and its documentation for any purpose, and without fee or written # agreement with DSC, is hereby granted, provided that the above copyright # notice appears in all copies and that both the copyright notice and # warranty disclaimer below appear in supporting documentation, and that # the names of DSC Technologies Corporation or DSC Communications # Corporation not be used in advertising or publicity pertaining to the # software without specific, written prior permission. # # DSC DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING # ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, AND NON- # INFRINGEMENT. THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, AND THE # AUTHORS AND DISTRIBUTORS HAVE NO OBLIGATION TO PROVIDE MAINTENANCE, # SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. IN NO EVENT SHALL # DSC BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR # ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, # WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTUOUS ACTION, # ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS # SOFTWARE. # ====================================================================== # # Default resources. # option add *Messagedialog.title "Message Dialog" widgetDefault option add *Messagedialog.textPadX 20 widgetDefault option add *Messagedialog.textPadY 20 widgetDefault option add *Messagedialog.master "." widgetDefault # # Usual options. # itk::usual Messagedialog { keep -background -cursor -font -foreground -modality } # ------------------------------------------------------------------ # MESSAGEDIALOG # ------------------------------------------------------------------ class iwidgets::Messagedialog { inherit iwidgets::Dialog constructor {args} {} itk_option define -imagepos imagePos Position w } # # Provide a lowercased access method for the Messagedialog class. # proc ::iwidgets::messagedialog {pathName args} { uplevel ::iwidgets::Messagedialog $pathName $args } # ------------------------------------------------------------------ # CONSTRUCTOR # ------------------------------------------------------------------ body iwidgets::Messagedialog::constructor {args} { # # Create a frame to be centered and used as padding. # itk_component add frame { frame $itk_interior.frame } { keep -background -cursor } pack $itk_component(frame) -anchor center -expand yes # # Create the image component which may be either a bitmap or image. # itk_component add image { label $itk_component(frame).image } { keep -background -bitmap -cursor -foreground -image } pack $itk_component(image) -anchor center # # Create the text message component. The message may extend over # several lines by embedding '\n' characters. # itk_component add msg { label $itk_component(frame).msg } { keep -anchor -background -cursor -font -foreground -text \ -justify -wraplength rename -padx -textpadx textPadX Pad rename -pady -textpady textPadY Pad } pack $itk_component(msg) -side right # # Hide the apply and help buttons. # hide Apply hide Help # # Explicitly handle configs that may have been ignored earlier. # eval itk_initialize $args } # ------------------------------------------------------------------ # OPTIONS # ------------------------------------------------------------------ # ------------------------------------------------------------------ # OPTION: -imagepos # # Specifies the image position relative to the message: n, s, # e, or w. The default is w. # ------------------------------------------------------------------ configbody iwidgets::Messagedialog::imagepos { switch $itk_option(-imagepos) { n { pack configure $itk_component(msg) \ -side top -anchor center pack configure $itk_component(image) -side top \ -anchor center -before $itk_component(msg) } s { pack configure $itk_component(msg) \ -side top -anchor center pack configure $itk_component(image) -side top \ -anchor center -after $itk_component(msg) } e { pack configure $itk_component(msg) \ -side left -anchor center pack configure $itk_component(image) -side left \ -anchor center -after $itk_component(msg) } w { pack configure $itk_component(msg) \ -side left -anchor center pack configure $itk_component(image) -side left \ -anchor center -before $itk_component(msg) } default { error "bad imagepos option \"$itk_option(-imagepos)\":\ should be n, e, s, or w" } } }