Spaces:
Running
Running
# -*- mode: TCL; fill-column: 75; tab-width: 8; coding: iso-latin-1-unix -*- | |
# | |
# $Id: SHList.tcl,v 1.7 2004/04/09 21:37:33 hobbs Exp $ | |
# | |
# SHList.tcl -- | |
# | |
# This file implements Scrolled HList widgets | |
# | |
# Copyright (c) 1993-1999 Ioi Kim Lam. | |
# Copyright (c) 2000-2001 Tix Project Group. | |
# Copyright (c) 2004 ActiveState | |
# | |
# See the file "license.terms" for information on usage and redistribution | |
# of this file, and for a DISCLAIMER OF ALL WARRANTIES. | |
# | |
tixWidgetClass tixScrolledHList { | |
-classname TixScrolledHList | |
-superclass tixScrolledWidget | |
-method { | |
} | |
-flag { | |
-highlightbackground -highlightcolor -highlightthickness | |
} | |
-configspec { | |
{-highlightbackground -highlightBackground HighlightBackground #d9d9d9} | |
{-highlightcolor -highlightColor HighlightColor black} | |
{-highlightthickness -highlightThickness HighlightThickness 2} | |
} | |
-default { | |
{.scrollbar auto} | |
{*f1.borderWidth 1} | |
{*hlist.Background #c3c3c3} | |
{*hlist.highlightBackground #d9d9d9} | |
{*hlist.relief sunken} | |
{*hlist.takeFocus 1} | |
{*Scrollbar.takeFocus 0} | |
} | |
-forcecall { | |
-highlightbackground -highlightcolor -highlightthickness | |
} | |
} | |
proc tixScrolledHList:ConstructWidget {w} { | |
upvar #0 $w data | |
tixChainMethod $w ConstructWidget | |
set data(pw:f1) [frame $w.f1 -takefocus 0] | |
set data(w:hlist) \ | |
[tixHList $w.f1.hlist -bd 0 -takefocus 1 -highlightthickness 0] | |
pack $data(w:hlist) -in $data(pw:f1) -expand yes -fill both -padx 0 -pady 0 | |
set data(w:hsb) [scrollbar $w.hsb -orient horizontal -takefocus 0] | |
set data(w:vsb) [scrollbar $w.vsb -orient vertical -takefocus 0] | |
set data(pw:client) $data(pw:f1) | |
} | |
proc tixScrolledHList:SetBindings {w} { | |
upvar #0 $w data | |
tixChainMethod $w SetBindings | |
$data(w:hlist) config \ | |
-xscrollcommand [list $data(w:hsb) set] \ | |
-yscrollcommand [list $data(w:vsb) set] \ | |
-sizecmd [list tixScrolledWidget:Configure $w] | |
$data(w:hsb) config -command [list $data(w:hlist) xview] | |
$data(w:vsb) config -command [list $data(w:hlist) yview] | |
} | |
#---------------------------------------------------------------------- | |
# | |
# option configs | |
#---------------------------------------------------------------------- | |
proc tixScrolledHList:config-takefocus {w value} { | |
upvar #0 $w data | |
$data(w:hlist) config -takefocus $value | |
} | |
proc tixScrolledHList:config-highlightbackground {w value} { | |
upvar #0 $w data | |
$data(pw:f1) config -highlightbackground $value | |
} | |
proc tixScrolledHList:config-highlightcolor {w value} { | |
upvar #0 $w data | |
$data(pw:f1) config -highlightcolor $value | |
} | |
proc tixScrolledHList:config-highlightthickness {w value} { | |
upvar #0 $w data | |
$data(pw:f1) config -highlightthickness $value | |
} | |
#---------------------------------------------------------------------- | |
# | |
# Widget commands | |
#---------------------------------------------------------------------- | |
#---------------------------------------------------------------------- | |
# | |
# Private Methods | |
#---------------------------------------------------------------------- | |
# virtual | |
# | |
proc tixScrolledHList:RepackHook {w} { | |
upvar #0 $w data | |
tixChainMethod $w RepackHook | |
} | |
#---------------------------------------------------------------------- | |
# virtual functions to query the client window's scroll requirement | |
#---------------------------------------------------------------------- | |
proc tixScrolledHList:GeometryInfo {w mW mH} { | |
upvar #0 $w data | |
if {[winfo class $w.f1] eq "Frame"} { | |
set extra [expr {[$w.f1 cget -bd]+[$w.f1 cget -highlightthickness]}] | |
} else { | |
set extra 0 | |
} | |
set mW [expr {$mW - $extra*2}] | |
set mH [expr {$mH - $extra*2}] | |
if {$mW < 1} { | |
set mW 1 | |
} | |
if {$mH < 1} { | |
set mH 1 | |
} | |
return [$data(w:hlist) geometryinfo $mW $mH] | |
} | |