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

📄 box.tk

📁 openPBS的开放源代码
💻 TK
📖 第 1 页 / 共 2 页
字号:
  set lboxwidths [box $f lboxwidths]  set lboxheights [box $f lboxheights]  foreach labelinfo $entrylabels {	set elabel [lindex $labelinfo 0]	set type [lindex $labelinfo 1] 	set args [lrange $labelinfo 2 end]	frame $f.b.e.$k	switch -exact -- $type {      	  MENU_ENTRY     {		menuEntry $f.b.e.$k create -menuvalues $args -title $elabel \					-textvariable [set boxName](entryval,$k)  		set [set boxName](entry,$k) ""      	  }	  default {		set lboxwidth [lindex $lboxwidths $k]  		set einfo [buildFullEntrybox $f.b.e.$k [string length $elabel] \				$elabel $lboxwidth "" bottom 0 top right 0 c]  		set eframew [lindex $einfo 0]  		set elabelw [lindex $einfo 1]  		set eentryw  [lindex $einfo 2]		global sel$eentryw		set sel$eentryw 0  		$eentryw configure -textvariable [set boxName](entryval,$k)  		$elabelw configure -anchor nw  		set [set boxName](entry,$k) $eentryw  		bind_entry_overselect $eentryw		register_default_action $eentryw $f.b.e.add	  }	}	set packlist "$packlist $f.b.e.$k"	incr k  }  set [set boxName](ncols) $k  set [set boxName](nrows) 0  if {[string compare packlist ""] != 0} {  	eval pack [string trim $packlist] -side left -anchor nw  }  boxSetTabbing $f# build the listbox  set packlist ""  set k 0  set lboxlabels [box $f lboxlabels]   set llen [llength $lboxlabels]  foreach llabel $lboxlabels {	frame $f.b.l.$k	set lboxwidth [lindex $lboxwidths $k]	set lboxheight [lindex $lboxheights $k]	if {[expr $k + 1] != $llen} {  		set listBoxInfo [buildFullListbox $f.b.l.$k \		       ${lboxwidth}x${lboxheight} $llabel xscroll 0 0 0]	} else {  		set listBoxInfo [buildFullListbox $f.b.l.$k \		       ${lboxwidth}x${lboxheight} $llabel xyscroll 0 0 0]  		set [set boxName](vscroll) [lindex $listBoxInfo 4]	}  	set hostsListbox          [lindex $listBoxInfo 3]  	set hostsListboxSelButton [lindex $listBoxInfo 2]  	set hostsListboxLabel     [lindex $listBoxInfo 1]  	bind_listbox_single_select $hostsListbox  	bind_listbox_select $hostsListbox $f  	set [set boxName](lbox,$k) $hostsListbox  	set packlist "$packlist $f.b.l.$k"	incr k  }  if {[string compare packlist ""] != 0} {  	eval pack [string trim $packlist] -side left -anchor nw  }   boxSetScroll $f## build the buttons  set noUpdateButton [box $f noUpdateButton]  if {$noUpdateButton} {  	set buttonList [list  {delete "delete"}]  } else {  	set buttonList [list  {delete "delete"} {info "update"}]  }  set cmdButtons [buildCmdButtons $f.b.b [list $buttonList] y 0 11 1 1 0 0]  set cmdButtonFrame  [lindex $cmdButtons 0]  set cmdButtonDelete [lindex $cmdButtons 1]    if {!$noUpdateButton} {  	set cmdButtonUpd   [lindex $cmdButtons 2]  	set [set boxName](updateButton) $cmdButtonUpd  }  $cmdButtonDelete configure -command "boxDelete $f \"[box $f remCmd]\""    set fwidth [expr [lindex [$hostsListbox configure -height] end]*$canvas(bigLabelFontHeight)]   if {[string compare [box $f orient] x] == 0} {  	pack $f.b.e -pady [expr $fwidth/2] -padx 0 -side left -anchor nw  	pack  $f.b.l $f.b.b -side left -anchor nw \			-padx $canvas(bigLabelFontWidth)  } else {  	pack $f.b.e -side top -anchor nw -pady 0 -padx 0        pack $f.b.l $f.b.b -side left -after $f.b.e -pady 3m -anchor nw -padx 0  }  pack $f.t -anchor nw -side top -fill both -expand 1  pack $f.b -anchor nw -side top -fill none -expand 0}proc boxesUnset {} {	global sysinfo	if [info exists sysinfo(boxes)] {		foreach b $sysinfo(boxes) {			box $b unset		}	}	set sysinfo(boxes) ""}proc boxAdd {frame_name {addfunc ""}} {	global tk_version dialog	set entrylabels [box $frame_name entrylabels]	set keylist [box $frame_name key]	set ncols [box $frame_name ncols]	set keyval ""	set keys ""	for {set i 0} {$i < $ncols} {incr i} {		 box $frame_name -entryval $i \			[cleanstr [box $frame_name entryval $i]]		set kindex [lsearch -regexp $keylist "(^| )$i"]		if {$kindex != -1} {			set entryval [box $frame_name entryval $i]			if {[string compare $entryval ""] == 0} {				set entrylab [lindex $entrylabels $i]				set entryw [box $frame_name entry $i]				popupInfoBox [box $frame_name grabBox] \				  "Can't have an empty \"$entrylab\" entry!!!" \				  			500 $entryw				return						}			set klist [split [lindex $keylist $kindex] ":"]			set k [lindex $klist 0]			lappend keys $k			set kmatchval [lindex $klist 1]			lappend keyval $entryval			if {[string compare $kmatchval ""] != 0 && \			    		[regexp "^($kmatchval)$" $entryval]} {				set kunique($k) 1			} else {				set kunique($k) 0			}		}	}	set nrows [box $frame_name nrows]	for {set i 0} {$i < $nrows} {incr i} {		set boxval ""		for {set j 0} {$j < $ncols} {incr j} {			if {[lsearch -exact $keys $j] != -1} {							set entryv [box $frame_name entryval $j]				set entryw [box $frame_name entryval $j]				set lbox [box $frame_name lbox $j]				if {$kunique($j)} {				    if {![lboxvalue_isUnique $lbox $entryv]} {					popupInfoBox [box $frame_name grabBox] \					"\"$entryv\" already specified in one of the fields!" 500 $entryw					return				    }				}				lappend boxval [$lbox get $i]			}		}		if {[lcomp $keyval $boxval] == 0} {			popupInfoBox [box $frame_name grabBox] \			"Unable to add entry: key \"[concat $keyval]\" was duplicated!" 500 [box $frame_name entry 0]			return		}	}	for {set i 0} {$i < [box $frame_name ncols]} {incr i} {		set lbox [box $frame_name lbox $i]		set entry [box $frame_name entry $i]		global sel$entry		$lbox insert end [box $frame_name entryval $i]		set sel$entry 1	}	box $frame_name -nrows +1	boxSelect $frame_name end	if {[string compare $addfunc ""] != 0} {		eval $addfunc	}}proc boxDelete {frame_name {remfunc ""}} {	for {set i 0} {$i < [box $frame_name ncols]} {incr i} {		set lbox [box $frame_name lbox $i]		set selindex [$lbox curselection]		if {[string compare $selindex ""] != 0} {			box $frame_name -entryvalDeleted [$lbox get $selindex]			$lbox delete $selindex			boxSelect $frame_name $selindex		}	}	box $frame_name -nrows -1	if {[string compare $remfunc ""] != 0} {		eval $remfunc	}}proc boxGetCurselect {frame_name index} {	set selindex [box $frame_name selindex]	if {$selindex == -1} {		return	}	set lbox [box $frame_name lbox $index]	catch {$lbox get $selindex} value	return $value}proc boxSelect {frame_name index} {	global tk_version	set nrows [box $frame_name nrows]	if { $index == -1 } {		set lbox [box $frame_name lbox 0] 		global cmd$lbox		if [info exists cmd$lbox] {                	eval [set cmd$lbox]        	}		return	}	set boxName [box $frame_name getBoxArray]	global $boxName        set [set boxName](selindex) $index	set selindex $index	for {set i 0} {$i < [box $frame_name ncols]} {incr i} {		set lbox [box $frame_name lbox $i]		set entry [box $frame_name entry $i]	        if { $tk_version < 4.0 } {          		$lbox select from $selindex        	} else {			catch {$lbox selection clear [$lbox curselection]}			$lbox select set $selindex $selindex		}		set boxval [$lbox get $selindex]		if {[string compare $boxval ""] != 0} {			box $frame_name -entryval $i $boxval		}		if {$i == 0 && [string compare $entry ""] != 0} {			focus $entry			$entry select from 0			$entry select to end			if {$tk_version >= 4.0} {      				$entry xview moveto 1			}		}		global cmd$lbox        		if [info exists cmd$lbox] {                	eval [set cmd$lbox]        	}	}}proc boxSetScroll {frame_name} {	global tk_version	set vscroll [box $frame_name vscroll]	if {[string compare $vscroll ""] == 0} {		return	}	set lboxes ""	for {set i 0} {$i < [box $frame_name ncols]} {incr i} {		set lbox [box $frame_name lbox $i]		$lbox configure -yscrollcommand "$vscroll set"		lappend lboxes $lbox	}	$vscroll configure -command "boxAdjScrollView [list $lboxes]"}proc boxSetTabbing {f} {	for {set i 0} {$i < [box $f ncols]} {incr i} {		set entry [box $f entry $i]		if {[string compare $entry ""] == 0} {			continue		}		set nentry [box $f entry [expr $i+1]]		if {[string compare $nentry ""] == 0} {			set nentry $entry		} 		set pentry [box $f entry [expr $i-1]]		if {[string compare $pentry ""] == 0} {			set pentry $entry		}		bind_entry_tab $entry $nentry $pentry	}}proc boxAdjScrollView {args} {        set lboxes [lindex $args 0]        set params [lrange $args 1 end]        foreach b $lboxes {                eval $b yview $params        }}

⌨️ 快捷键说明

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