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

📄 scrollw.tcl

📁 Linux下的MSN聊天程序源码
💻 TCL
字号:
# -----------------------------------------------------------------------------#  scrollw.tcl#  This file is part of Unifix BWidget Toolkit#  $Id: scrollw.tcl 6194 2006-03-12 09:12:55Z kakaroto $# -----------------------------------------------------------------------------#  Index of commands:#     - ScrolledWindow::create#     - ScrolledWindow::getframe#     - ScrolledWindow::setwidget#     - ScrolledWindow::configure#     - ScrolledWindow::cget#     - ScrolledWindow::_set_hframe#     - ScrolledWindow::_set_vscroll#     - ScrolledWindow::_setData#     - ScrolledWindow::_setSBSize#     - ScrolledWindow::_realize# -----------------------------------------------------------------------------namespace eval ScrolledWindow {    Widget::define ScrolledWindow scrollw    Widget::declare ScrolledWindow {	{-background  TkResource ""   0 button}	{-scrollbar   Enum	 both 0 {none both vertical horizontal}}	{-auto	      Enum	 both 0 {none both vertical horizontal}}	{-sides	      Enum	 se   0 {ne en nw wn se es sw ws}}	{-size	      Int	 0    1 "%d >= 0"}	{-ipad	      Int	 0    1 "%d >= 0"}	{-managed     Boolean	 1    1}	{-relief      TkResource flat 0 frame}	{-borderwidth TkResource 0    0 frame}	{-bg	      Synonym	 -background}	{-bd	      Synonym	 -borderwidth}    }    Widget::addmap ScrolledWindow "" :cmd {-relief {} -borderwidth {}}}# -----------------------------------------------------------------------------#  Command ScrolledWindow::create# -----------------------------------------------------------------------------proc ScrolledWindow::create { path args } {    Widget::init ScrolledWindow $path $args    Widget::getVariable $path data	#set bg     [Widget::cget $path -background]    set sbsize [Widget::cget $path -size]    set sw     [frame $path \	    -relief flat -borderwidth 0 \		    -highlightthickness 0 -takefocus 0];#-background $bg ]    scrollbar $path.hscroll \	    -highlightthickness 0 -takefocus 0 \	    -orient	 horiz	\	    -relief	 sunken	\	;#-bg	 $bg    scrollbar $path.vscroll \	    -highlightthickness 0 -takefocus 0 \	    -orient	 vert	\	    -relief	 sunken	\	;#-bg	 $bg    set data(realized) 0    _setData $path \	    [Widget::cget $path -scrollbar] \	    [Widget::cget $path -auto] \	    [Widget::cget $path -sides]    if {[Widget::cget $path -managed]} {	set data(hsb,packed) $data(hsb,present)	set data(vsb,packed) $data(vsb,present)    } else {	set data(hsb,packed) 0	set data(vsb,packed) 0    }    if {$sbsize} {	$path.vscroll configure -width $sbsize	$path.hscroll configure -width $sbsize    } else {	set sbsize [$path.vscroll cget -width]    }    set data(ipad) [Widget::cget $path -ipad]    if {$data(hsb,packed)} {	grid $path.hscroll -column 1 -row $data(hsb,row) \		-sticky ew -ipady $data(ipad)    }    if {$data(vsb,packed)} {	grid $path.vscroll -column $data(vsb,column) -row 1 \		-sticky ns -ipadx $data(ipad)    }    grid columnconfigure $path 1 -weight 1    grid rowconfigure	 $path 1 -weight 1    bind $path <Configure> [list ScrolledWindow::_realize $path]    bind $path <Destroy>   [list ScrolledWindow::_destroy $path]    return [Widget::create ScrolledWindow $path]}# -----------------------------------------------------------------------------#  Command ScrolledWindow::getframe# -----------------------------------------------------------------------------proc ScrolledWindow::getframe { path } {    return $path}# -----------------------------------------------------------------------------#  Command ScrolledWindow::setwidget# -----------------------------------------------------------------------------proc ScrolledWindow::setwidget { path widget } {    Widget::getVariable $path data    if {[info exists data(widget)] && [winfo exists $data(widget)]	&& ![string equal $data(widget) $widget]} {	grid remove $data(widget)	$data(widget) configure -xscrollcommand "" -yscrollcommand ""    }    set data(widget) $widget    grid $widget -in $path -row 1 -column 1 -sticky news    $path.hscroll configure -command [list $widget xview]    $path.vscroll configure -command [list $widget yview]    $widget configure \	    -xscrollcommand [list ScrolledWindow::_set_hscroll $path] \	    -yscrollcommand [list ScrolledWindow::_set_vscroll $path]}# -----------------------------------------------------------------------------#  Command ScrolledWindow::configure# -----------------------------------------------------------------------------proc ScrolledWindow::configure { path args } {    Widget::getVariable $path data    set res [Widget::configure $path $args]    if { [Widget::hasChanged $path -background bg] } {	$path configure -background $bg	catch {$path.hscroll configure -background $bg}	catch {$path.vscroll configure -background $bg}    }    if {[Widget::hasChanged $path -scrollbar scrollbar] | \	    [Widget::hasChanged $path -auto	 auto]	| \	    [Widget::hasChanged $path -sides	 sides]} {	_setData $path $scrollbar $auto $sides	foreach {vmin vmax} [$path.hscroll get] { break }	set data(hsb,packed) [expr {$data(hsb,present) && \		(!$data(hsb,auto) || ($vmin != 0 || $vmax != 1))}]	foreach {vmin vmax} [$path.vscroll get] { break }	set data(vsb,packed) [expr {$data(vsb,present) && \		(!$data(vsb,auto) || ($vmin != 0 || $vmax != 1))}]	set data(ipad) [Widget::cget $path -ipad]	if {$data(hsb,packed)} {	    grid $path.hscroll -column 1 -row $data(hsb,row) \		    -sticky ew -ipady $data(ipad)	}	if {$data(vsb,packed)} {	    grid $path.vscroll -column $data(vsb,column) -row 1 \		    -sticky ns -ipadx $data(ipad)	}    }    return $res}# -----------------------------------------------------------------------------#  Command ScrolledWindow::cget# -----------------------------------------------------------------------------proc ScrolledWindow::cget { path option } {    return [Widget::cget $path $option]}# -----------------------------------------------------------------------------#  Command ScrolledWindow::_set_hscroll# -----------------------------------------------------------------------------proc ScrolledWindow::_set_hscroll { path vmin vmax } {    Widget::getVariable $path data    if {$data(realized) && $data(hsb,present)} {	if {$data(hsb,auto)} {	    if {$data(hsb,packed) && $vmin == 0 && $vmax == 1} {		if {![info exists data(hlock)]} {		    set data(hsb,packed) 0		    grid remove $path.hscroll		}	    } elseif {!$data(hsb,packed) && ($vmin != 0 || $vmax != 1)} {		set data(hsb,packed) 1		grid $path.hscroll -column 1 -row $data(hsb,row) \			-sticky ew -ipady $data(ipad)		set data(hlock) 1		update idletasks		unset data(hlock)	    }	}	$path.hscroll set $vmin $vmax    }}# -----------------------------------------------------------------------------#  Command ScrolledWindow::_set_vscroll# -----------------------------------------------------------------------------proc ScrolledWindow::_set_vscroll { path vmin vmax } {    Widget::getVariable $path data    if {$data(realized) && $data(vsb,present)} {	if {$data(vsb,auto)} {	    if {$data(vsb,packed) && $vmin == 0 && $vmax == 1} {		if {![info exists data(vlock)]} {		    set data(vsb,packed) 0		    grid remove $path.vscroll		}	    } elseif {!$data(vsb,packed) && ($vmin != 0 || $vmax != 1) } {		set data(vsb,packed) 1		grid $path.vscroll -column $data(vsb,column) -row 1 \			-sticky ns -ipadx $data(ipad)		set data(vlock) 1		update idletasks		unset data(vlock)	    }	}	$path.vscroll set $vmin $vmax    }}proc ScrolledWindow::_setData {path scrollbar auto sides} {    Widget::getVariable $path data    set sb    [lsearch {none horizontal vertical both} $scrollbar]    set auto  [lsearch {none horizontal vertical both} $auto]    set data(hsb,present)  [expr {($sb & 1) != 0}]    set data(hsb,auto)	   [expr {($auto & 1) != 0}]    set data(hsb,row)	   [expr {[string match *n* $sides] ? 0 : 2}]    set data(vsb,present)  [expr {($sb & 2) != 0}]    set data(vsb,auto)	   [expr {($auto & 2) != 0}]    set data(vsb,column)   [expr {[string match *w* $sides] ? 0 : 2}]}# -----------------------------------------------------------------------------#  Command ScrolledWindow::_realize# -----------------------------------------------------------------------------proc ScrolledWindow::_realize { path } {    Widget::getVariable $path data    bind $path <Configure> {}    set data(realized) 1}# -----------------------------------------------------------------------------#  Command ScrolledWindow::_destroy# -----------------------------------------------------------------------------proc ScrolledWindow::_destroy { path } {    Widget::destroy $path}

⌨️ 快捷键说明

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