141 lines
3.7 KiB
Tcl
141 lines
3.7 KiB
Tcl
|
# -*- 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]
|
||
|
}
|