⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 msgbox.tcl

📁 genesis 2000 v9.1软件下载
💻 TCL
字号:
# msgbox.tcl --##	Implements messageboxes for platforms that do not have native#	messagebox support.## SCCS: @(#) msgbox.tcl 1.8 97/07/28 17:20:01## Copyright (c) 1994-1997 Sun Microsystems, Inc.## See the file "license.terms" for information on usage and redistribution# of this file, and for a DISCLAIMER OF ALL WARRANTIES.## tkMessageBox --##	Pops up a messagebox with an application-supplied message with#	an icon and a list of buttons. This procedure will be called#	by tk_messageBox if the platform does not have native#	messagebox support, or if the particular type of messagebox is#	not supported natively.##	This procedure is a private procedure shouldn't be called#	directly. Call tk_messageBox instead.##	See the user documentation for details on what tk_messageBox does.#proc tkMessageBox {args} {    global tkPriv tcl_platform    set w tkPrivMsgBox    upvar #0 $w data    #    # The default value of the title is space (" ") not the empty string    # because for some window managers, a     #		wm title .foo ""    # causes the window title to be "foo" instead of the empty string.    #    set specs {	{-default "" "" ""}        {-icon "" "" "info"}        {-message "" "" ""}        {-parent "" "" .}        {-title "" "" " "}        {-type "" "" "ok"}    }    tclParseConfigSpec $w $specs "" $args    if {[lsearch {info warning error question} $data(-icon)] == -1} {	error "invalid icon \"$data(-icon)\", must be error, info, question or warning"    }    if {$tcl_platform(platform) == "macintosh"} {	if {$data(-icon) == "error"} {	    set data(-icon) "stop"	} elseif {$data(-icon) == "warning"} {	    set data(-icon) "caution"	} elseif {$data(-icon) == "info"} {	    set data(-icon) "note"	}    }    if ![winfo exists $data(-parent)] {	error "bad window path name \"$data(-parent)\""    }    case $data(-type) {	abortretryignore {	    set buttons {		{abort  -width 6 -text Abort -under 0}		{retry  -width 6 -text Retry -under 0}		{ignore -width 6 -text Ignore -under 0}	    }	}	ok {	    set buttons {		{ok -width 6 -text OK -under 0}	    }	    if {$data(-default) == ""} {		set data(-default) "ok"	    }	}	okcancel {	    set buttons {		{ok     -width 6 -text OK     -under 0}		{cancel -width 6 -text Cancel -under 0}	    }	}	retrycancel {	    set buttons {		{retry  -width 6 -text Retry  -under 0}		{cancel -width 6 -text Cancel -under 0}	    }	}	yesno {	    set buttons {		{yes    -width 6 -text Yes -under 0}		{no     -width 6 -text No  -under 0}	    }	}	yesnocancel {	    set buttons {		{yes    -width 6 -text Yes -under 0}		{no     -width 6 -text No  -under 0}		{cancel -width 6 -text Cancel -under 0}	    }	}	default {	    error "invalid message box type \"$data(-type)\", must be abortretryignore, ok, okcancel, retrycancel, yesno or yesnocancel"	}    }    if [string compare $data(-default) ""] {	set valid 0	foreach btn $buttons {	    if ![string compare [lindex $btn 0] $data(-default)] {		set valid 1		break	    }	}	if !$valid {	    error "invalid default button \"$data(-default)\""	}    }    # 2. Set the dialog to be a child window of $parent    #    #    if [string compare $data(-parent) .] {	set w $data(-parent).__tk__messagebox    } else {	set w .__tk__messagebox    }    # 3. Create the top-level window and divide it into top    # and bottom parts.    catch {destroy $w}    toplevel $w -class Dialog    wm title $w $data(-title)    wm iconname $w Dialog    wm protocol $w WM_DELETE_WINDOW { }    wm transient $w $data(-parent)    if {$tcl_platform(platform) == "macintosh"} {	unsupported1 style $w dBoxProc    }    frame $w.bot    pack $w.bot -side bottom -fill both    frame $w.top    pack $w.top -side top -fill both -expand 1    if {$tcl_platform(platform) != "macintosh"} {	$w.bot configure -relief raised -bd 1	$w.top configure -relief raised -bd 1    }    # 4. Fill the top part with bitmap and message (use the option    # database for -wraplength so that it can be overridden by    # the caller).    option add *Dialog.msg.wrapLength 3i widgetDefault    label $w.msg -justify left -text $data(-message)    catch {$w.msg configure -font \		-Adobe-Times-Medium-R-Normal--*-180-*-*-*-*-*-*    }    pack $w.msg -in $w.top -side right -expand 1 -fill both -padx 3m -pady 3m    if {$data(-icon) != ""} {	label $w.bitmap -bitmap $data(-icon)	pack $w.bitmap -in $w.top -side left -padx 3m -pady 3m    }    # 5. Create a row of buttons at the bottom of the dialog.    set i 0    foreach but $buttons {	set name [lindex $but 0]	set opts [lrange $but 1 end]	if ![string compare $opts {}] {	    # Capitalize the first letter of $name	    set capName \		[string toupper \		    [string index $name 0]][string range $name 1 end]	    set opts [list -text $capName]	}	eval button $w.$name $opts -command [list "set tkPriv(button) $name"]	if ![string compare $name $data(-default)] {	    $w.$name configure -default active	}	pack $w.$name -in $w.bot -side left -expand 1 \	    -padx 3m -pady 2m	# create the binding for the key accelerator, based on the underline	#	set underIdx [$w.$name cget -under]	if {$underIdx >= 0} {	    set key [string index [$w.$name cget -text] $underIdx]	    bind $w <Alt-[string tolower $key]>  "$w.$name invoke"	    bind $w <Alt-[string toupper $key]>  "$w.$name invoke"	}	incr i    }    # 6. Create a binding for <Return> on the dialog if there is a    # default button.    if [string compare $data(-default) ""] {	bind $w <Return> "tkButtonInvoke $w.$data(-default)"    }    # 7. Withdraw the window, then update all the geometry information    # so we know how big it wants to be, then center the window in the    # display and de-iconify it.    wm withdraw $w    update idletasks    set x [expr [winfo screenwidth $w]/2 - [winfo reqwidth $w]/2 \	    - [winfo vrootx [winfo parent $w]]]    set y [expr [winfo screenheight $w]/2 - [winfo reqheight $w]/2 \	    - [winfo vrooty [winfo parent $w]]]    wm geom $w +$x+$y    wm deiconify $w    # 8. Set a grab and claim the focus too.    set oldFocus [focus]    set oldGrab [grab current $w]    if {$oldGrab != ""} {	set grabStatus [grab status $oldGrab]    }    grab $w    if [string compare $data(-default) ""] {	focus $w.$data(-default)    } else {	focus $w    }    # 9. Wait for the user to respond, then restore the focus and    # return the index of the selected button.  Restore the focus    # before deleting the window, since otherwise the window manager    # may take the focus away so we can't redirect it.  Finally,    # restore any grab that was in effect.    tkwait variable tkPriv(button)    catch {focus $oldFocus}    destroy $w    if {$oldGrab != ""} {	if {$grabStatus == "global"} {	    grab -global $oldGrab	} else {	    grab $oldGrab	}    }    return $tkPriv(button)}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -