proc MessageDlg::create { path args } { global tcl_platform
array set maps [list MessageDlg {} :cmd {} .frame.msg {} tkMBox {}] array set maps [Widget::parseArgs MessageDlg $args] Widget::initFromODB MessageDlg "$path#Message" $maps(MessageDlg)
array set dialogArgs $maps(:cmd)
set type [Widget::cget "$path#Message" -type] set icon [Widget::cget "$path#Message" -icon]
set defb -1 set canb -1 switch -- $type { abortretryignore {set lbut {abort retry ignore}} ok {set lbut {ok}; set defb 0 } okcancel {set lbut {ok cancel}; set defb 0; set canb 1} retrycancel {set lbut {retry cancel}; set defb 0; set canb 1} yesno {set lbut {yes no}; set defb 0; set canb 1} yesnocancel {set lbut {yes no cancel}; set defb 0; set canb 2} user {set lbut [Widget::cget "$path#Message" -buttons]} }
# If the user didn't specify a default button, use our type-specific # default, adding its flag/value to the "user" settings and to the tkMBox # settings if { ![info exists dialogArgs(-default)] } { lappend maps(:cmd) -default $defb lappend maps(tkMBox) -default $defb } if { ![info exists dialogArgs(-cancel)] } { lappend maps(:cmd) -cancel $canb }
# Same with title as with default if { ![info exists dialogArgs(-title)] } { set frame [frame $path -class MessageDlg] set title [option get $frame "${icon}Title" MessageDlg] destroy $frame if { $title == "" } { set title "Message" } lappend maps(:cmd) -title $title lappend maps(tkMBox) -title $title }
# Create the "user" type dialog if { $type == "user" } { if { $icon != "none" } { set image [Bitmap::get $icon] } else { set image "" } eval Dialog::create $path $maps(:cmd) -image $image -modal local \ -side bottom -anchor c foreach but $lbut { Dialog::add $path -text $but -name $but } set frame [Dialog::getframe $path]
eval message $frame.msg $maps(.frame.msg) \ -relief flat -borderwidth 0 -highlightthickness 0 \ -textvariable {{}} pack $frame.msg -side left -padx 3m -pady 1m -fill x -expand yes
set res [Dialog::draw $path] destroy $path } else { # Do some translation of args into tk_messageBox syntax, then create # the tk_messageBox array set tkMBoxArgs $maps(tkMBox) set tkMBoxArgs(-default) [lindex $lbut $tkMBoxArgs(-default)] if { ![string equal $icon "none"] } { set tkMBoxArgs(-icon) $icon } if { [info exists tkMBoxArgs(-parent)] } { if { ![winfo exists $tkMBoxArgs(-parent)] } { unset tkMBoxArgs(-parent) } } set tkMBoxArgs(-type) $type set res [eval tk_messageBox [array get tkMBoxArgs]] set res [lsearch $lbut $res] } Widget::destroy "$path#Message" return $res
}
|