📄 box.tk
字号:
# OpenPBS (Portable Batch System) v2.3 Software License# # Copyright (c) 1999-2000 Veridian Information Solutions, Inc.# All rights reserved.# # ---------------------------------------------------------------------------# For a license to use or redistribute the OpenPBS software under conditions# other than those described below, or to purchase support for this software,# please contact Veridian Systems, PBS Products Department ("Licensor") at:# # www.OpenPBS.org +1 650 967-4675 sales@OpenPBS.org# 877 902-4PBS (US toll-free)# ---------------------------------------------------------------------------# # This license covers use of the OpenPBS v2.3 software (the "Software") at# your site or location, and, for certain users, redistribution of the# Software to other sites and locations. Use and redistribution of# OpenPBS v2.3 in source and binary forms, with or without modification,# are permitted provided that all of the following conditions are met.# After December 31, 2001, only conditions 3-6 must be met:# # 1. Commercial and/or non-commercial use of the Software is permitted# provided a current software registration is on file at www.OpenPBS.org.# If use of this software contributes to a publication, product, or# service, proper attribution must be given; see www.OpenPBS.org/credit.html# # 2. Redistribution in any form is only permitted for non-commercial,# non-profit purposes. There can be no charge for the Software or any# software incorporating the Software. Further, there can be no# expectation of revenue generated as a consequence of redistributing# the Software.# # 3. Any Redistribution of source code must retain the above copyright notice# and the acknowledgment contained in paragraph 6, this list of conditions# and the disclaimer contained in paragraph 7.# # 4. Any Redistribution in binary form must reproduce the above copyright# notice and the acknowledgment contained in paragraph 6, this list of# conditions and the disclaimer contained in paragraph 7 in the# documentation and/or other materials provided with the distribution.# # 5. Redistributions in any form must be accompanied by information on how to# obtain complete source code for the OpenPBS software and any# modifications and/or additions to the OpenPBS software. The source code# must either be included in the distribution or be available for no more# than the cost of distribution plus a nominal fee, and all modifications# and additions to the Software must be freely redistributable by any party# (including Licensor) without restriction.# # 6. All advertising materials mentioning features or use of the Software must# display the following acknowledgment:# # "This product includes software developed by NASA Ames Research Center,# Lawrence Livermore National Laboratory, and Veridian Information# Solutions, Inc.# Visit www.OpenPBS.org for OpenPBS software support,# products, and information."# # 7. DISCLAIMER OF WARRANTY# # THIS SOFTWARE IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND. ANY EXPRESS# OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES# OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, AND NON-INFRINGEMENT# ARE EXPRESSLY DISCLAIMED.# # IN NO EVENT SHALL VERIDIAN CORPORATION, ITS AFFILIATED COMPANIES, OR THE# U.S. GOVERNMENT OR ANY OF ITS AGENCIES BE LIABLE FOR ANY DIRECT OR INDIRECT,# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA,# OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF# LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING# NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,# EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.# # This license will be governed by the laws of the Commonwealth of Virginia,# without reference to its choice of law rules.# NOTE: we restrict to one element keys only for efficiency!proc box {frame_name {args}} { set boxName [string trim $frame_name "."] global $boxName canvas sysinfo set configure 0 set argc [llength $args] for {set i 0} {$i < $argc} {incr i} { switch -exact -- [lindex $args $i] { configure { set configure 1 } -title { set [set boxName](title) [lindex $args [incr i]] } title { if { ]} { return "" } return [set [set boxName](title)] } -class { set [set boxName](class) [lindex $args [incr i]] } class { if { ]} { return Plain } return [set [set boxName](class)] } titlelabel { if { ]} { return "" } return [set [set boxName](titlelabel)] } -key { set [set boxName](key) [lindex $args [incr i]] } key { if { ]} { return 0 } return [set [set boxName](key)] } -entrylabels { set [set boxName](entrylabels) [lindex $args [incr i]] } entrylabels { if { ]} { return "" } return [set [set boxName](entrylabels)] } -lboxlabels { set [set boxName](lboxlabels) [lindex $args [incr i]] } lboxlabels { if { ]} { return "" } return [set [set boxName](lboxlabels)] } -lboxwidths { set [set boxName](lboxwidths) [lindex $args [incr i]] } lboxwidths { if { ]} { return 0 } return [set [set boxName](lboxwidths)] } -lboxheights { set [set boxName](lboxheights) [lindex $args [incr i]] } lboxheights { if { ]} { return 0 } return [set [set boxName](lboxheights)] } -orient { set [set boxName](orient) [lindex $args [incr i]] } orient { if { ]} { return "x" } return [set [set boxName](orient)] } -grabBox { set [set boxName](grabBox) [lindex $args [incr i]] } grabBox { if { ]} { return "" } return [set [set boxName](grabBox)] } -selindex { set [set boxName](selindex) [lindex $args [incr i]] } selindex { if { ]} { return -1 } return [set [set boxName](selindex)] } vscroll { if { ]} { return "" } return [set [set boxName](vscroll)] } ncols { if { ]} { return 1 } return [set [set boxName](ncols)] } -nrows { set lbox [box $frame_name lbox 0] if { [string compare $lbox ""] != 0 } { set [set boxName](nrows) [$lbox size] } incr [set boxName](nrows) [lindex $args [incr i]] return [set [set boxName](nrows)] } nrows { set lbox [box $frame_name lbox 0] if { [string compare $lbox ""] == 0 } { return 0 } set [set boxName](nrows) [$lbox size] return [set [set boxName](nrows)] } lbox { set index [lindex $args [incr i]] if {]} { return "" } return [set [set boxName](lbox,$index)] } entry { set index [lindex $args [incr i]] if {]} { return "" } return [set [set boxName](entry,$index)] } -entryval { set index [lindex $args [incr i]] set eval [lindex $args [incr i]] set [set boxName](entryval,$index) $eval return [set [set boxName](entryval,$index)] } entryval { set index [lindex $args [incr i]] if {]} { return "" } return [set [set boxName](entryval,$index)] } -entryvalDeleted { set [set boxName](entryvalDeleted) [lindex $args [incr i]] return } entryvalDeleted { if { ]} { return "" } return [set [set boxName](entryvalDeleted)] } -noUpdateButton { set [set boxName](noUpdateButton) [lindex $args [incr i]] } noUpdateButton { if { ]} { return 0 } return [set [set boxName](noUpdateButton)] } -addCmd { set [set boxName](addCmd) [lindex $args [incr i]] } addCmd { if { ]} { return "" } return [set [set boxName](addCmd)] } -remCmd { set [set boxName](remCmd) [lindex $args [incr i]] } remCmd { if { ]} { return "" } return [set [set boxName](remCmd)] } updateButton { if { ]} { return "" } return [set [set boxName](updateButton)] } create { catch {unset $boxName} } unset { catch {unset $boxName} return } getBoxArray { return "[set boxName]" } } } # create one frame to hold everything set f [frame $frame_name -class [box $frame_name class]] if { ![info exists sysinfo(boxes)] || \ [lsearch -exact $sysinfo(boxes) $f] == -1 } { lappend sysinfo(boxes) $f } $f configure -relief ridge -borderwidth 2 frame $f.t -class CmdFrame -relief raised -borderwidth 2 frame $f.b -relief flat frame $f.b.e -relief flat frame $f.b.l -relief ridge -bd 4 frame $f.b.b -relief flat label $f.t.label -text [box $f title] -justify center pack $f.t.label -anchor nw -side left -expand 1 -fill both set [set boxName](titlelabel) $f.t.label## build the entry widget ## build the add button button $f.b.e.add -text add -height 2 \ -command "boxAdd $f \"[box $f addCmd]\"" if {[string compare [box $f orient] x] == 0} { pack $f.b.e.add -side right -anchor c -pady 1m } else { pack $f.b.e.add -side bottom -anchor c -pady 1m } set k 0 set packlist "" set entrylabels [box $f entrylabels]
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -