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

📄 utils.tcl

📁 是TCL的另外一个编译(解释)器
💻 TCL
📖 第 1 页 / 共 2 页
字号:
# ------------------------------------------------------------------------------#  utils.tcl#  This file is part of Unifix BWidget Toolkit#  $Id: utils.tcl,v 1.5 2002/01/28 21:56:32 patthoyts Exp $# ------------------------------------------------------------------------------#  Index of commands:#     - GlobalVar::exists#     - GlobalVar::setvarvar#     - GlobalVar::getvarvar#     - BWidget::assert#     - BWidget::clonename#     - BWidget::get3dcolor#     - BWidget::XLFDfont#     - BWidget::place#     - BWidget::grab#     - BWidget::focus# ------------------------------------------------------------------------------namespace eval GlobalVar {    proc use {} {}}namespace eval BWidget {    variable _top    variable _gstack {}    variable _fstack {}    proc use {} {}}# ------------------------------------------------------------------------------#  Command GlobalVar::exists# ------------------------------------------------------------------------------proc GlobalVar::exists { varName } {    return [uplevel \#0 [list info exists $varName]]}# ------------------------------------------------------------------------------#  Command GlobalVar::setvar# ------------------------------------------------------------------------------proc GlobalVar::setvar { varName value } {    return [uplevel \#0 [list set $varName $value]]}# ------------------------------------------------------------------------------#  Command GlobalVar::getvar# ------------------------------------------------------------------------------proc GlobalVar::getvar { varName } {    return [uplevel \#0 [list set $varName]]}# ------------------------------------------------------------------------------#  Command GlobalVar::tracevar# ------------------------------------------------------------------------------proc GlobalVar::tracevar { cmd varName args } {    return [uplevel \#0 trace $cmd [list $varName] $args]}# ------------------------------------------------------------------------------#  Command BWidget::lreorder# ------------------------------------------------------------------------------proc BWidget::lreorder { list neworder } {    set pos     0    set newlist {}    foreach e $neworder {        if { [lsearch -exact $list $e] != -1 } {            lappend newlist $e            set tabelt($e)  1        }    }    set len [llength $newlist]    if { !$len } {        return $list    }    if { $len == [llength $list] } {        return $newlist    }    set pos 0    foreach e $list {        if { ![info exists tabelt($e)] } {            set newlist [linsert $newlist $pos $e]        }        incr pos    }    return $newlist}# ------------------------------------------------------------------------------#  Command BWidget::assert# ------------------------------------------------------------------------------proc BWidget::assert { exp {msg ""}} {    set res [uplevel 1 expr $exp]    if { !$res} {        if { $msg == "" } {            return -code error "Assertion failed: {$exp}"        } else {            return -code error $msg        }    }}# ------------------------------------------------------------------------------#  Command BWidget::clonename# ------------------------------------------------------------------------------proc BWidget::clonename { menu } {    set path     ""    set menupath ""    set found    0    foreach widget [lrange [split $menu "."] 1 end] {        if { $found || [winfo class "$path.$widget"] == "Menu" } {            set found 1            append menupath "#" $widget            append path "." $menupath        } else {            append menupath "#" $widget            append path "." $widget        }        }    return $path}# ------------------------------------------------------------------------------#  Command BWidget::getname# ------------------------------------------------------------------------------proc BWidget::getname { name } {    if { [string length $name] } {        set text [option get . "${name}Name" ""]        if { [string length $text] } {            return [parsetext $text]        }    }    return {} }# ------------------------------------------------------------------------------#  Command BWidget::parsetext# ------------------------------------------------------------------------------proc BWidget::parsetext { text } {    set result ""    set index  -1    set start  0    while { [string length $text] } {        set idx [string first "&" $text]        if { $idx == -1 } {            append result $text            set text ""        } else {            set char [string index $text [expr {$idx+1}]]            if { $char == "&" } {                append result [string range $text 0 $idx]                set    text   [string range $text [expr {$idx+2}] end]                set    start  [expr {$start+$idx+1}]            } else {                append result [string range $text 0 [expr {$idx-1}]]                set    text   [string range $text [expr {$idx+1}] end]                incr   start  $idx                set    index  $start            }        }    }    return [list $result $index]}# ------------------------------------------------------------------------------#  Command BWidget::get3dcolor# ------------------------------------------------------------------------------proc BWidget::get3dcolor { path bgcolor } {    foreach val [winfo rgb $path $bgcolor] {        lappend dark [expr {60*$val/100}]        set tmp1 [expr {14*$val/10}]        if { $tmp1 > 65535 } {            set tmp1 65535        }        set tmp2 [expr {(65535+$val)/2}]        lappend light [expr {($tmp1 > $tmp2) ? $tmp1:$tmp2}]    }    return [list [eval format "#%04x%04x%04x" $dark] [eval format "#%04x%04x%04x" $light]]}# ------------------------------------------------------------------------------#  Command BWidget::XLFDfont# ------------------------------------------------------------------------------proc BWidget::XLFDfont { cmd args } {    switch -- $cmd {        create {            set font "-*-*-*-*-*-*-*-*-*-*-*-*-*-*"        }        configure {            set font [lindex $args 0]            set args [lrange $args 1 end]        }        default {            return -code error "XLFDfont: commande incorrecte: $cmd"        }    }    set lfont [split $font "-"]    if { [llength $lfont] != 15 } {        return -code error "XLFDfont: description XLFD incorrecte: $font"    }    foreach {option value} $args {        switch -- $option {            -foundry { set index 1 }            -family  { set index 2 }            -weight  { set index 3 }            -slant   { set index 4 }            -size    { set index 7 }            default  { return -code error "XLFDfont: option incorrecte: $option" }        }        set lfont [lreplace $lfont $index $index $value]    }    return [join $lfont "-"]}# ------------------------------------------------------------------------------#  Command BWidget::place# ------------------------------------------------------------------------------

⌨️ 快捷键说明

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