📄 cluster.tk
字号:
set array [string trimleft $clusterframe .] global $array if {![info exists ${array}(cpus_assn)]} { return "" } return [set ${array}(cpus_assn)]}proc clusterVprocsAssnPut {clusterframe vprocs_assn} { set array [string trimleft $clusterframe .] global $array set ${array}(vprocs_assn) $vprocs_assn}proc clusterVprocsAssnGet {clusterframe} { set array [string trimleft $clusterframe .] global $array if {![info exists ${array}(vprocs_assn)]} { return "" } return [set ${array}(vprocs_assn)]}proc clusterCpusMaxPut {clusterframe cpus_max} { set array [string trimleft $clusterframe .] global $array set ${array}(cpus_max) $cpus_max}proc clusterCpusMaxGet {clusterframe} { set array [string trimleft $clusterframe .] global $array if {![info exists ${array}(cpus_max)]} { return "" } return [set ${array}(cpus_max)]}proc clusterPrint clusterframe { if {[string compare $clusterframe ""] == 0} { return } puts "cluster frame: $clusterframe===================================>" puts "Name: [clusterNameGet $clusterframe]" puts "Canvas: [clusterCanvasGet $clusterframe]" puts "Canvas Frame: [clusterCanvasFrameGet $clusterframe]" puts "Refresh Flag: [clusterRefreshGet $clusterframe]" puts "Label Frame: [clusterLabelFrameGet $clusterframe]" puts "Label: [clusterLabelGet $clusterframe]" puts "Label Text: [clusterLabelTextGet $clusterframe]" puts "FooterHeader: [clusterFooterHeaderGet $clusterframe]" puts "StatusBar: [clusterStatusBarGet $clusterframe]" puts "StatusBar Frame: [clusterStatusBarFrameGet $clusterframe]" puts "Xscroll: [clusterXscrollGet $clusterframe]" puts "Xscroll Frame: [clusterXscrollFrameGet $clusterframe]" puts "Yscroll: [clusterYscrollGet $clusterframe]" puts "Yscroll Frame: [clusterYscrollFrameGet $clusterframe]" puts "Display Width: [clusterDisplayWidthGet $clusterframe]" puts "Display Height: [clusterDisplayHeightGet $clusterframe]" puts "Canvas Width: [clusterCanvasWidthGet $clusterframe]" puts "Canvas Height: [clusterCanvasHeightGet $clusterframe]" puts "ScrollRegion's Width: [clusterScrollRegionWidthGet $clusterframe]" puts "ScrollRegion's Height: [clusterScrollRegionHeightGet $clusterframe]" puts "Xpos: [clusterXposGet $clusterframe]" puts "Ypos: [clusterYposGet $clusterframe]" puts "Next Frame: [clusterNextGet $clusterframe]" puts "Offset Width: [clusterOffsetWidthGet $clusterframe]" puts "Main Frame: [clusterMainFrameGet $clusterframe]" puts "System Frame: [clusterSystemFrameGet $clusterframe]" puts "Nodes List: [clusterNodesListGet $clusterframe]" puts "Total Pool: [clusterTotPoolGet $clusterframe]" puts "Use Pool: [clusterUsePoolGet $clusterframe]" puts "Avail Pool: [clusterAvailPoolGet $clusterframe]" puts "Offline Pool: [clusterOfflinePoolGet $clusterframe]" puts "Down Pool: [clusterDownPoolGet $clusterframe]" puts "Reserved Pool: [clusterReservedPoolGet $clusterframe]" puts "Unknown Pool: [clusterUnkPoolGet $clusterframe]" puts "Cpus Assn: [clusterCpusAssnGet $clusterframe]" puts "Virtual Processors Assn: [clusterVprocsAssnGet $clusterframe]" puts "Cpus Max: [clusterCpusMaxGet $clusterframe]"}proc clusterCreate {frame clusterName clusterLabel nlist footerHeader viewType} { global canvas set retwidth 0 set retheight 0 clusterNamePut $frame $clusterName frame $frame -class Medium frame $frame.l -class MediumLabel -borderwidth 0 -relief flat frame $frame.m -class MediumCanvas -borderwidth 0 -relief flat frame $frame.m.c -borderwidth 0 frame $frame.m.y -borderwidth 0 frame $frame.m.x -borderwidth 0 frame $frame.s -class MediumLabel -borderwidth 0 -relief flat label $frame.l.label -text $clusterLabel \ -justify center set labelWidth [expr \ 2*$canvas(medBd) + 2*$canvas(medLabelBd) + \ $canvas(medLabelFontWidth)*[string length $clusterLabel]] set labelHeight [expr $canvas(medBd) + 2*$canvas(medLabelBd) \ + $canvas(medLabelFontHeight)] clusterLabelTextPut $frame $clusterLabel label $frame.s.label -font $canvas(medLabelFont) \ -text $footerHeader \ -justify center set footerWidth [expr \ 2*$canvas(medBd) + \ 2*$canvas(medLabelBd) + \ $canvas(medLabelFontWidth)*[string length $footerHeader]] set footerHeight [expr 2*$canvas(medLabelBd) + \ $canvas(medBd) + \ 2*$canvas(medLabelFontHeight)] canvas $frame.m.c.canvas -confine 1 set canvasFrameWidth [expr $canvas(medBd) + \ 2*$canvas(medCanvasBd)] set canvasFrameHeight [expr 2*$canvas(medCanvasBd)] set totwidth 0 set totheight 0 set x1 0 set y1 0 set pw 0 set ph 0 if {$footerWidth > $labelWidth} { set maxWidth $footerWidth } else { set maxWidth $labelWidth } clusterNodesListPut $frame $nlist set llen [llength $nlist] set prevNode "" set rowNodes "" clusterTotPoolPut $frame $llen clusterUsePoolPut $frame 0 clusterAvailPoolPut $frame 0 clusterOfflinePoolPut $frame 0 clusterDownPoolPut $frame 0 clusterReservedPoolPut $frame 0 clusterUnkPoolPut $frame 0 clusterCpusAssnPut $frame 0 clusterVprocsAssnPut $frame 0 clusterCpusMaxPut $frame 0 set sysframe [clusterSystemFrameGet $frame] set j 0 for {set i 0} {$i < $llen} {incr i} { set nodeinfo [lindex $nlist $i] set nodename [lindex $nodeinfo 0] set nodelabel $nodename set nodetype [lindex $nodeinfo 1] clusterStatsUpdate $frame \ [systemNodeStatusGet $sysframe $nodename] + set pos [nodeCreate $frame.m.c.$i $nodename $nodelabel \ $frame $nodetype $viewType] set w [lindex $pos 0] set h [lindex $pos 1] if { $i == 0 } { set rowNodes $frame.m.c.$i incr totwidth $w incr totheight $h } elseif { [expr $j % $canvas(clusterNumBoxesPerRow)] == 0 || \ [expr $totwidth + $w] > $canvas(clusterMaxWidth) } { set rowOffset [expr ($maxWidth - $totwidth) / 2] if {$rowOffset > 0} { foreach fr $rowNodes { nodeOffsetWidthPut $fr $rowOffset } } set rowNodes $frame.m.c.$i set x1 0 incr y1 $ph incr totheight $h if {$totwidth > $maxWidth} { set maxWidth $totwidth } set totwidth $w set j 0 } else { lappend rowNodes $frame.m.c.$i # same row incr x1 $pw incr totwidth $w if {[string compare $prevNode ""] != 0} { nodeNextPut $prevNode $frame.m.c.$i } } pack forget $frame.m.c.$i set wid [$frame.m.c.canvas create window $x1 $y1 \ -window $frame.m.c.$i -anchor nw \ -tags $frame.m.c.$i -width $w -height $h] nodeXposPut $frame.m.c.$i $x1 nodeYposPut $frame.m.c.$i $y1 set pw $w set ph $h set prevNode $frame.m.c.$i incr j } if {[string compare $rowNodes ""] != 0} { set rowOffset [expr ($maxWidth - $totwidth) / 2] if {$rowOffset > 0} { foreach fr $rowNodes { nodeOffsetWidthPut $fr $rowOffset } } } if {$maxWidth > $totwidth} { set totwidth $maxWidth } scrollbar $frame.m.x.xscroll -orient horizontal \ -width $canvas(medLabelFontHeight) \ -background $canvas(medScrollBg) \ -relief $canvas(medScrollRelief) \ -borderwidth $canvas(medScrollBd) \ -command [list $frame.m.c.canvas xview] set scrollHeight [expr \ 2*[lindex [$frame.m.x.xscroll configure -borderwidth] end] \ + [lindex [$frame.m.x.xscroll configure -width] end]] $frame.m.x configure -height $scrollHeight scrollbar $frame.m.y.yscroll -orient vertical \ -width $canvas(medLabelFontHeight) \ -background $canvas(medScrollBg) \ -relief $canvas(medScrollRelief) \ -borderwidth $canvas(medScrollBd) \ -command [list $frame.m.c.canvas yview] set scrollWidth [expr \ $canvas(medBd) + \ 2*[lindex [$frame.m.y.yscroll configure -borderwidth] end] \ + [lindex [$frame.m.y.yscroll configure -width] end]] $frame.m.y configure -width $scrollWidth clusterFooterHeaderPut $frame $footerHeader clusterLabelPut $frame $frame.l.label clusterLabelFramePut $frame $frame.l clusterCanvasPut $frame $frame.m.c.canvas clusterCanvasFramePut $frame $frame.m.c clusterXscrollPut $frame $frame.m.x.xscroll clusterXscrollFramePut $frame $frame.m.x clusterYscrollPut $frame $frame.m.y.yscroll clusterYscrollFramePut $frame $frame.m.y clusterStatusBarPut $frame $frame.s.label clusterStatusBarFramePut $frame $frame.s clusterMainFramePut $frame $frame.m clusterScrollRegionWidthPut $frame $totwidth set scrollRegionWidth $totwidth clusterScrollRegionHeightPut $frame $totheight set scrollRegionHeight $totheight clusterXposPut $frame 0 clusterYposPut $frame 0 clusterNextPut $frame "" clusterOffsetWidthPut $frame 0 clusterRefreshPut $frame 0 set retwidth [expr $canvasFrameWidth + $totwidth + $scrollWidth] if {$labelWidth > $retwidth && \ $labelWidth > $footerWidth} { set retwidth $labelWidth } elseif {$footerWidth > $retwidth && \ $footerWidth > $labelWidth} { set retwidth $footerWidth } clusterCanvasWidthPut $frame $totwidth clusterDisplayWidthPut $frame $retwidth set canvWidth $totwidth if { $retwidth > $canvas(clusterMaxWidth) } { set canvWidth [expr $canvas(clusterMaxWidth) - \ $canvasFrameWidth - $scrollWidth] if {$canvWidth > 0} { clusterDisplayWidthPut $frame $canvas(clusterMaxWidth) clusterCanvasWidthPut $frame $canvWidth set retwidth $canvas(clusterMaxWidth) } } set retheight [expr $labelHeight + $canvasFrameHeight + $totheight + \ $scrollHeight + $footerHeight] clusterCanvasHeightPut $frame $totheight clusterDisplayHeightPut $frame $retheight set canvHeight $totheight if { $retheight > $canvas(clusterMaxHeight) } { set canvHeight [expr $canvas(clusterMaxHeight) - \ $labelHeight - $canvasFrameHeight - \ $scrollHeight - $footerHeight] if {$canvHeight > 0} { clusterDisplayHeightPut $frame $canvas(clusterMaxHeight) clusterCanvasHeightPut $frame $canvHeight set retheight $canvas(clusterMaxHeight) } } set canvWidth [clusterCanvasWidthGet $frame] set canvHeight [clusterCanvasHeightGet $frame] $frame.m.c.canvas configure -width $canvWidth -height $canvHeight \ -xscrollcommand [list $frame.m.x.xscroll set] \ -yscrollcommand [list $frame.m.y.yscroll set] \ -scrollregion [list 0 0 $scrollRegionWidth $scrollRegionHeight] if {$canvWidth > 0 && $scrollRegionWidth > $canvWidth} { pack $frame.m.x.xscroll -side bottom -fill x -padx 0 -pady 0 \ -ipadx 0 -ipady 0 } if {$canvHeight > 0 && $scrollRegionHeight > $canvHeight} { pack $frame.m.y.yscroll -side right -fill y -padx 0 -pady 0 \ -ipadx 0 -ipady 0 -anchor nw } pack $frame.l.label -fill both -expand true -padx 0 -pady 0 \ -ipadx 0 -ipady 0 pack $frame.m.c.canvas -fill both -expand true -padx 0 -pady 0 \ -ipadx 0 -ipady 0
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -