📄 color.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.proc getNextNodeColorInUse {} { global canvas if {![info exists canvas(nodeColorINUSE_index)]} { set canvas(nodeColorINUSE_index) -1 } set newindex [expr ($canvas(nodeColorINUSE_index)+1) % \ [llength $canvas(nodeColorINUSEexclusive)]] set canvas(nodeColorINUSE_index) $newindex set retcolor [lindex $canvas(nodeColorINUSEexclusive) $newindex] if {[string compare $retcolor ""] == 0} { set retcolor white } return $retcolor}proc assignNodeColorInUse {job {defcolor ""}} { global sysinfo set retcolor "" if [info exists sysinfo(color,$job)] { set retcolor $sysinfo(color,$job) } else { if {[string compare $defcolor ""] == 0} { set retcolor [getNextNodeColorInUse] } else { set retcolor $defcolor } set sysinfo(color,$job) $retcolor } if [info exists sysinfo(colorCnt,$job)] { set sysinfo(colorCnt,$job) [expr $sysinfo(colorCnt,$job) + 1] } else { set sysinfo(colorCnt,$job) 1 } return $retcolor}proc unsetNodeColorInUseMapping {} { global sysinfo canvas foreach s [array names sysinfo] { set s_list [split $s ","] set head [lindex $s_list 0] if {[string compare $head "color"] == 0 || \ [string compare $head "colorCnt"] == 0 } { unset sysinfo($s) } } set canvas(nodeColorINUSE_index) -1}proc colorBarPopulate {startx starty maplist tag} { global canvas set i 0 foreach stat $maplist { set color [lindex $stat 0] set label [lindex $stat 1] if {$i == 0} { set x1 $startx } else { set pos [$canvas(colorBarCanvas) bbox $previd] set x1 [expr [lindex $pos 2] + $canvas(smallLabelFontWidth)] } set y1 $starty set x2 [expr $x1 + $canvas(smallTextFontWidth)] set y2 [expr $y1 + $canvas(smallTextFontHeight)] set rid [$canvas(colorBarCanvas) create rect $x1 $y1 $x2 $y2 \ -fill $color -tags [list $tag all]] set pos [$canvas(colorBarCanvas) bbox $rid] set x1 [expr [lindex $pos 2] + 2] set y1 [lindex $pos 1] set previd [$canvas(colorBarCanvas) create text $x1 $y1 \ -anchor nw -text "$label" \ -font $canvas(smallLabelFont) \ -tags [list $tag all]] incr i }} proc colorBarCreate {frame_name} { global sysinfo canvas canvas $frame_name.c -confine 1 \ -height [expr 2*$canvas(smallLabelFontHeight)] \ -borderwidth 2 \ -relief ridge \ -width $canvas(systemMaxWidth) \ -xscrollcommand [list $frame_name.xscroll set] \ -scrollregion [list 0 0 $canvas(systemMaxWidth) \ $canvas(bigTextFontHeight)] set canvas(colorBarCanvas) $frame_name.c lappend nodestatus "$canvas(nodeColorFREE) FREE" \ "$canvas(nodeColorDOWN) DOWN" \ "$canvas(nodeColorOFFL) OFFL" \ "$canvas(nodeColorRSVD) RSVD" \ "$canvas(nodeColorNOINFO) NOINFO" \ "$canvas(nodeColorINUSEshared) INUSE/SHARED" colorBarPopulate [expr 2*$canvas(smallLabelFontWidth)] $canvas(bigBd) \ $nodestatus fixed scrollbar $frame_name.xscroll -orient horizontal \ -relief flat \ -borderwidth $canvas(bigBd) \ -background $canvas(bigScrollBg) \ -width $canvas(smallLabelFontHeight) \ -command [list $frame_name.c xview] set canvas(colorBarScroll) $frame_name.xscroll pack $frame_name.c -side left -anchor nw -fill x -expand true \ -padx 1m -pady 1m set pos [$canvas(colorBarCanvas) bbox all] set x1 [lindex $pos 0] set y1 [lindex $pos 1] set x2 [lindex $pos 2] set y2 [lindex $pos 3] set width [expr ($x2 - $x1) + 2*$canvas(smallLabelFontWidth)] set height [expr ($y2 - $y1) + 2*$canvas(smallLabelFontHeight)] $canvas(colorBarCanvas) configure -scrollregion "0 0 $width $height" if {$width > $canvas(systemMaxWidth)} { catch {pack $canvas(colorBarScroll) -side right -anchor se \ -expand true -pady [expr $canvas(smallLabelFontHeight)/2]} }}proc colorBarUpdate {} { global sysinfo canvas foreach s [array names sysinfo] { set s_list [split $s ","] set head [lindex $s_list 0] if {[string compare $head "color"] == 0} { set job [lindex $s_list 1] if {[string compare $job TIMESHARED] != 0} { lappend color($sysinfo($s)) \ $job.$sysinfo(colorCnt,$job)nodes } } } set inuse "" if {[string compare $canvas(nodeColorINUSEshared) \ $canvas(nodeColorINUSEexclusive)] != 0 } { foreach c [array names color] { set jobs [join $color($c) ","] lappend inuse "$c {INUSE($jobs)}" } } set pos [$canvas(colorBarCanvas) bbox fixed] set x [lindex $pos 0] set y [lindex $pos 3] catch {$canvas(colorBarCanvas) delete variable} colorBarPopulate $x [expr $y + $canvas(bigBd)] $inuse variable set pos [$canvas(colorBarCanvas) bbox all] set x1 [lindex $pos 0] set y1 [lindex $pos 1] set x2 [lindex $pos 2] set y2 [lindex $pos 3] set width [expr ($x2 - $x1) + 2*$canvas(smallLabelFontWidth)] set height [expr ($y2 - $y1) + 2*$canvas(smallLabelFontHeight)] $canvas(colorBarCanvas) configure -scrollregion "0 0 $width $height" if {$width > $canvas(systemMaxWidth)} { catch {pack $canvas(colorBarScroll) -side right -anchor se \ -expand true -pady [expr $canvas(smallLabelFontHeight)/2]} } else { catch {pack forget $canvas(colorBarScroll)} }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -