# -*- mode: TCL; fill-column: 75; tab-width: 8; coding: iso-latin-1-unix -*- # # $Id: SText.tcl,v 1.4 2001/12/09 05:04:02 idiscovery Exp $ # # SText.tcl -- # # This file implements Scrolled Text widgets # # Copyright (c) 1993-1999 Ioi Kim Lam. # Copyright (c) 2000-2001 Tix Project Group. # # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # tixWidgetClass tixScrolledText { -classname TixScrolledText -superclass tixScrolledWidget -method { } -flag { } -static { } -configspec { } -default { {.scrollbar both} {*Scrollbar.takeFocus 0} } -forcecall { -scrollbar } } proc tixScrolledText:ConstructWidget {w} { upvar #0 $w data global tcl_platform tixChainMethod $w ConstructWidget set data(w:text) \ [text $w.text] set data(w:hsb) \ [scrollbar $w.hsb -orient horizontal] set data(w:vsb) \ [scrollbar $w.vsb -orient vertical] if {$data(-sizebox) && $tcl_platform(platform) == "windows"} { # set data(w:sizebox) [ide_sizebox $w.sizebox] } set data(pw:client) $data(w:text) } proc tixScrolledText:SetBindings {w} { upvar #0 $w data tixChainMethod $w SetBindings $data(w:text) config \ -xscrollcommand "tixScrolledText:XScroll $w"\ -yscrollcommand "tixScrolledText:YScroll $w" $data(w:hsb) config -command "$data(w:text) xview" $data(w:vsb) config -command "$data(w:text) yview" } #---------------------------------------------------------------------- # # option configs #---------------------------------------------------------------------- proc tixScrolledText:config-takefocus {w value} { upvar #0 $w data $data(w:text) config -takefocus $value } proc tixScrolledText:config-scrollbar {w value} { upvar #0 $w data if {[string match "auto*" $value]} { set value "both" } set data(-scrollbar) $value tixChainMethod $w config-scrollbar $value return $value } #---------------------------------------------------------------------- # # Widget commands #---------------------------------------------------------------------- #---------------------------------------------------------------------- # # Private Methods #---------------------------------------------------------------------- #---------------------------------------------------------------------- # virtual functions to query the client window's scroll requirement #---------------------------------------------------------------------- proc tixScrolledText:GeometryInfo {w mW mH} { upvar #0 $w data return [list "$data(x,first) $data(x,last)" "$data(y,first) $data(y,last)"] } proc tixScrolledText:XScroll {w first last} { upvar #0 $w data set data(x,first) $first set data(x,last) $last $data(w:hsb) set $first $last tixWidgetDoWhenIdle tixScrolledWidget:Configure $w } proc tixScrolledText:YScroll {w first last} { upvar #0 $w data set data(y,first) $first set data(y,last) $last $data(w:vsb) set $first $last tixWidgetDoWhenIdle tixScrolledWidget:Configure $w }