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

📄 font.tcl

📁 Linux下的MSN聊天程序源码
💻 TCL
📖 第 1 页 / 共 2 页
字号:
                     -values   $_families($fams) \                     -textvariable SelectFont::$path\(family\) \                     -editable 0 \                     -modifycmd [list SelectFont::_update $path]]        set lbs [ComboBox::create $path.size \                     -highlightthickness 0 -takefocus 0 -background $bg \                     -width    4 \                     -values   $_sizes \                     -textvariable SelectFont::$path\(size\) \                     -editable 0 \                     -modifycmd [list SelectFont::_update $path]]        pack $lbf -side left -anchor w        pack $lbs -side left -anchor w -padx 4        foreach st $_styles {            button $path.$st \                -highlightthickness 0 -takefocus 0 -padx 0 -pady 0 -bd 2 \                -background $bg \                -image  [Bitmap::get $st] \                -command [list SelectFont::_modstyle $path $st]            pack $path.$st -side left -anchor w        }        set data(label) ""        set data(lbf)   $lbf        set data(lbs)   $lbs        _getfont $path	return [Widget::create SelectFont $path]    }    return $path}# ----------------------------------------------------------------------------#  Command SelectFont::configure# ----------------------------------------------------------------------------proc SelectFont::configure { path args } {    set _styles [Widget::getoption "$path#SelectFont" -styles]    set res [Widget::configure "$path#SelectFont" $args]    if { [Widget::hasChanged "$path#SelectFont" -font font] } {        _getfont $path    }    if { [Widget::hasChanged "$path#SelectFont" -background bg] } {        switch -- [Widget::getoption "$path#SelectFont" -type] {            dialog {                Dialog::configure $path -background $bg                set topf [Dialog::getframe $path].topf                $topf configure -background $bg                foreach labf {labf1 labf2} {                    LabelFrame::configure $topf.$labf -background $bg                    set subf [LabelFrame::getframe $topf.$labf]                    ScrolledWindow::configure $subf.sw -background $bg                    $subf.sw.lb configure -background $bg                }                LabelFrame::configure $topf.labf3 -background $bg                set subf [LabelFrame::getframe $topf.labf3]                foreach w [winfo children $subf] {                    $w configure -background $bg                }            }            toolbar {                $path configure -background $bg                ComboBox::configure $path.font -background $bg                ComboBox::configure $path.size -background $bg                foreach st $_styles {                    $path.$st configure -background $bg                }            }        }    }    return $res}# ----------------------------------------------------------------------------#  Command SelectFont::cget# ----------------------------------------------------------------------------proc SelectFont::cget { path option } {    return [Widget::cget "$path#SelectFont" $option]}# ----------------------------------------------------------------------------#  Command SelectFont::loadfont# ----------------------------------------------------------------------------proc SelectFont::loadfont {{which all}} {    variable _families    # initialize families    if {![info exists _families(all)]} {	set _families(all) [lsort -dictionary [font families]]    }    if {[regexp {fixed|variable} $which] \	    && ![info exists _families($which)]} {	# initialize families	set _families(fixed) {}	set _families(variable) {}	foreach family $_families(all) {	    if { [font metrics [list $family] -fixed] } {		lappend _families(fixed) $family	    } else {		lappend _families(variable) $family	    }	}    }    return}# ----------------------------------------------------------------------------#  Command SelectFont::_draw# ----------------------------------------------------------------------------proc SelectFont::_draw { path } {    variable $path    upvar 0  $path data    $data(lbf) selection clear 0 end    $data(lbf) selection set $data(family)    $data(lbf) activate $data(family)    $data(lbf) see $data(family)    $data(lbs) selection clear 0 end    $data(lbs) selection set $data(size)    $data(lbs) activate $data(size)    $data(lbs) see $data(size)    _update $path    if { [Dialog::draw $path] == 1 } {        set result [Widget::getoption "$path#SelectFont" -font]    	set color $data(fontcolor)		if { $color == "" } {		set color #000000	}    } else {        set result ""	set color ""    }        unset data    Widget::destroy "$path#SelectFont"    destroy $path        if { $color != -1 } {    	return [list $result $color]    } else {    	return $result    }}# ----------------------------------------------------------------------------#  Command SelectFont::_modstyle# ----------------------------------------------------------------------------proc SelectFont::_modstyle { path style } {    variable $path    upvar 0  $path data    if { $data($style) == 1 } {        $path.$style configure -relief raised        set data($style) 0    } else {        $path.$style configure -relief sunken        set data($style) 1    }    _update $path}# ----------------------------------------------------------------------------#  Command SelectFont::_update# ----------------------------------------------------------------------------proc SelectFont::_update { path } {    variable _families    variable _sizes    variable _styleOff    variable $path    upvar 0  $path data    set type [Widget::getoption "$path#SelectFont" -type]    set _styles [Widget::getoption "$path#SelectFont" -styles]    if { [Widget::getoption "$path#SelectFont" -querysystem] } {	set fams [Widget::getoption "$path#SelectFont" -families]    } else {	set fams "preset"	append fams [Widget::getoption "$path#SelectFont" -families]    }    if { $type == "dialog" } {        set curs [$path:cmd cget -cursor]        $path:cmd configure -cursor watch    }    if { [Widget::getoption "$path#SelectFont" -type] == "dialog" } {        set font [list [lindex $_families($fams) $data(family)] \		[lindex $_sizes $data(size)]]    } else {        set font [list $data(family) $data(size)]    }    foreach st $_styles {        if { $data($st) } {            lappend font $st        } elseif {[info exists _styleOff($st)]} {	    # This adds the default bold/italic value to a font	    #lappend font $_styleOff($st)	}    }    Widget::setoption "$path#SelectFont" -font $font    if { $type == "dialog" } {        $data(label) configure -font $font        $path:cmd configure -cursor $curs	if { ($data(fontcolor) != "") && ($data(fontcolor) != -1) } {		$data(label) configure -foreground $data(fontcolor)		$data(frc) configure -bg $data(fontcolor)	} elseif { $data(fontcolor) == "" }  {		#If no color is selected, restore previous one		set data(fontcolor) [$data(label) cget -foreground]	}    } elseif { [set cmd [Widget::getoption "$path#SelectFont" -command]] != "" } {        uplevel \#0 $cmd    }}# ----------------------------------------------------------------------------#  Command SelectFont::_getfont# ----------------------------------------------------------------------------proc SelectFont::_getfont { path } {    variable _families    variable _sizes    variable $path    upvar 0  $path data    array set font [font actual [Widget::getoption "$path#SelectFont" -font]]    set data(bold)       [expr {![string equal $font(-weight) "normal"]}]    set data(italic)     [expr {![string equal $font(-slant)  "roman"]}]    set data(underline)  $font(-underline)    set data(overstrike) $font(-overstrike)    set _styles [Widget::getoption "$path#SelectFont" -styles]    if { [Widget::getoption "$path#SelectFont" -querysystem] } {	set fams [Widget::getoption "$path#SelectFont" -families]    } else {	set fams "preset"	append fams [Widget::getoption "$path#SelectFont" -families]    }    if { [Widget::getoption "$path#SelectFont" -type] == "dialog" } {        set idxf [lsearch $_families($fams) $font(-family)]        set idxs [lsearch $_sizes    $font(-size)]        set data(family) [expr {$idxf >= 0 ? $idxf : 0}]        set data(size)   [expr {$idxs >= 0 ? $idxs : 0}]    } else {        set data(family) $font(-family)        set data(size)   $font(-size)        foreach st $_styles {            $path.$st configure -relief [expr {$data($st) ? "sunken":"raised"}]        }    }}# ----------------------------------------------------------------------------#  Command SelectFont::_destroy# ----------------------------------------------------------------------------proc SelectFont::_destroy { path } {    variable $path    upvar 0  $path data    unset data    Widget::destroy "$path#SelectFont"}

⌨️ 快捷键说明

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