Import build of Tcl/Tk 8.6.10
This commit is contained in:
@@ -1,295 +1,295 @@
|
||||
# -*- mode: TCL; fill-column: 75; tab-width: 8; coding: iso-latin-1-unix -*-
|
||||
#
|
||||
# $Id: SListBox.tcl,v 1.5 2004/03/28 02:44:57 hobbs Exp $
|
||||
#
|
||||
# SListBox.tcl --
|
||||
#
|
||||
# This file implements Scrolled Listbox 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.
|
||||
#
|
||||
|
||||
|
||||
# ToDo:
|
||||
# -anchor (none)
|
||||
#
|
||||
|
||||
tixWidgetClass tixScrolledListBox {
|
||||
-classname TixScrolledListBox
|
||||
-superclass tixScrolledWidget
|
||||
-method {
|
||||
}
|
||||
-flag {
|
||||
-anchor -browsecmd -command -state
|
||||
}
|
||||
-static {
|
||||
-anchor
|
||||
}
|
||||
-configspec {
|
||||
{-anchor anchor Anchor w}
|
||||
{-browsecmd browseCmd BrowseCmd ""}
|
||||
{-command command Command ""}
|
||||
{-state state State normal}
|
||||
{-takefocus takeFocus TakeFocus 1 tixVerifyBoolean}
|
||||
}
|
||||
-default {
|
||||
{.scrollbar auto}
|
||||
{*borderWidth 1}
|
||||
{*listbox.highlightBackground #d9d9d9}
|
||||
{*listbox.relief sunken}
|
||||
{*listbox.background #c3c3c3}
|
||||
{*listbox.takeFocus 1}
|
||||
{*Scrollbar.takeFocus 0}
|
||||
}
|
||||
}
|
||||
|
||||
proc tixScrolledListBox:InitWidgetRec {w} {
|
||||
upvar #0 $w data
|
||||
|
||||
tixChainMethod $w InitWidgetRec
|
||||
|
||||
set data(x-first) 0
|
||||
set data(x-last) 1
|
||||
set data(y-first) 0
|
||||
set data(y-last) 1
|
||||
}
|
||||
|
||||
proc tixScrolledListBox:ConstructWidget {w} {
|
||||
upvar #0 $w data
|
||||
|
||||
tixChainMethod $w ConstructWidget
|
||||
|
||||
set data(w:listbox) \
|
||||
[listbox $w.listbox]
|
||||
set data(w:hsb) \
|
||||
[scrollbar $w.hsb -orient horizontal]
|
||||
set data(w:vsb) \
|
||||
[scrollbar $w.vsb -orient vertical ]
|
||||
|
||||
set data(pw:client) $data(w:listbox)
|
||||
}
|
||||
|
||||
proc tixScrolledListBox:SetBindings {w} {
|
||||
upvar #0 $w data
|
||||
|
||||
tixChainMethod $w SetBindings
|
||||
|
||||
$data(w:listbox) config \
|
||||
-xscrollcommand "tixScrolledListBox:XView $w"\
|
||||
-yscrollcommand "tixScrolledListBox:YView $w"
|
||||
|
||||
$data(w:hsb) config -command "$data(w:listbox) xview"
|
||||
$data(w:vsb) config -command "$data(w:listbox) yview"
|
||||
|
||||
bind $w <Configure> "+tixScrolledListBox:Configure $w"
|
||||
bind $w <FocusIn> "focus $data(w:listbox)"
|
||||
|
||||
bindtags $data(w:listbox) \
|
||||
"$data(w:listbox) TixListboxState Listbox TixListbox [winfo toplevel $data(w:listbox)] all"
|
||||
tixSetMegaWidget $data(w:listbox) $w
|
||||
}
|
||||
|
||||
proc tixScrolledListBoxBind {} {
|
||||
tixBind TixListboxState <1> {
|
||||
if {[set [tixGetMegaWidget %W](-state)] eq "disabled"} {
|
||||
break
|
||||
}
|
||||
}
|
||||
tixBind TixListbox <1> {
|
||||
if {[string is true -strict [%W cget -takefocus]]} {
|
||||
focus %W
|
||||
}
|
||||
tixScrolledListBox:Browse [tixGetMegaWidget %W]
|
||||
}
|
||||
|
||||
tixBind TixListboxState <B1-Motion> {
|
||||
if {[set [tixGetMegaWidget %W](-state)] eq "disabled"} {
|
||||
break
|
||||
}
|
||||
}
|
||||
tixBind TixListbox <B1-Motion> {
|
||||
tixScrolledListBox:Browse [tixGetMegaWidget %W]
|
||||
}
|
||||
|
||||
tixBind TixListboxState <Up> {
|
||||
if {[set [tixGetMegaWidget %W](-state)] eq "disabled"} {
|
||||
break
|
||||
}
|
||||
}
|
||||
tixBind TixListbox <Up> {
|
||||
tixScrolledListBox:KeyBrowse [tixGetMegaWidget %W]
|
||||
}
|
||||
|
||||
tixBind TixListboxState <Down> {
|
||||
if {[set [tixGetMegaWidget %W](-state)] eq "disabled"} {
|
||||
break
|
||||
}
|
||||
}
|
||||
tixBind TixListbox <Down> {
|
||||
tixScrolledListBox:KeyBrowse [tixGetMegaWidget %W]
|
||||
}
|
||||
|
||||
tixBind TixListboxState <Return> {
|
||||
if {[set [tixGetMegaWidget %W](-state)] eq "disabled"} {
|
||||
break
|
||||
}
|
||||
}
|
||||
tixBind TixListbox <Return> {
|
||||
tixScrolledListBox:KeyInvoke [tixGetMegaWidget %W]
|
||||
}
|
||||
|
||||
|
||||
tixBind TixListboxState <Double-1> {
|
||||
if {[set [tixGetMegaWidget %W](-state)] eq "disabled"} {
|
||||
break
|
||||
}
|
||||
}
|
||||
tixBind TixListbox <Double-1> {
|
||||
tixScrolledListBox:Invoke [tixGetMegaWidget %W]
|
||||
}
|
||||
|
||||
tixBind TixListboxState <ButtonRelease-1> {
|
||||
if {[set [tixGetMegaWidget %W](-state)] eq "disabled"} {
|
||||
break
|
||||
}
|
||||
}
|
||||
tixBind TixListbox <ButtonRelease-1> {
|
||||
tixScrolledListBox:Browse [tixGetMegaWidget %W]
|
||||
}
|
||||
}
|
||||
|
||||
proc tixScrolledListBox:Browse {w} {
|
||||
upvar #0 $w data
|
||||
|
||||
if {$data(-browsecmd) != ""} {
|
||||
set bind(specs) {%V}
|
||||
set bind(%V) [$data(w:listbox) get \
|
||||
[$data(w:listbox) nearest [tixEvent flag y]]]
|
||||
tixEvalCmdBinding $w $data(-browsecmd) bind
|
||||
}
|
||||
}
|
||||
|
||||
proc tixScrolledListBox:KeyBrowse {w} {
|
||||
upvar #0 $w data
|
||||
|
||||
if {$data(-browsecmd) != ""} {
|
||||
set bind(specs) {%V}
|
||||
set bind(%V) [$data(w:listbox) get active]
|
||||
tixEvalCmdBinding $w $data(-browsecmd) bind
|
||||
}
|
||||
}
|
||||
|
||||
# tixScrolledListBox:Invoke --
|
||||
#
|
||||
# The user has invoked the listbox by pressing either the <Returh>
|
||||
# key or double-clicking. Call the user-supplied -command function.
|
||||
#
|
||||
# For both -browsecmd and -command, it is the responsibility of the
|
||||
# user-supplied function to determine the current selection of the listbox
|
||||
#
|
||||
proc tixScrolledListBox:Invoke {w} {
|
||||
upvar #0 $w data
|
||||
|
||||
if {$data(-command) != ""} {
|
||||
set bind(specs) {%V}
|
||||
set bind(%V) [$data(w:listbox) get \
|
||||
[$data(w:listbox) nearest [tixEvent flag y]]]
|
||||
tixEvalCmdBinding $w $data(-command) bind
|
||||
}
|
||||
}
|
||||
|
||||
proc tixScrolledListBox:KeyInvoke {w} {
|
||||
upvar #0 $w data
|
||||
|
||||
if {$data(-command) != ""} {
|
||||
set bind(specs) {%V}
|
||||
set bind(%V) [$data(w:listbox) get active]
|
||||
tixEvalCmdBinding $w $data(-command) bind
|
||||
}
|
||||
}
|
||||
|
||||
#----------------------------------------------------------------------
|
||||
#
|
||||
# option configs
|
||||
#----------------------------------------------------------------------
|
||||
proc tixScrolledListBox:config-takefocus {w value} {
|
||||
upvar #0 $w data
|
||||
$data(w:listbox) config -takefocus $value
|
||||
}
|
||||
|
||||
|
||||
#----------------------------------------------------------------------
|
||||
#
|
||||
# Widget commands
|
||||
#----------------------------------------------------------------------
|
||||
|
||||
|
||||
#----------------------------------------------------------------------
|
||||
#
|
||||
# Private Methods
|
||||
#----------------------------------------------------------------------
|
||||
proc tixScrolledListBox:XView {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 tixScrolledListBox:YView {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
|
||||
|
||||
# Somehow an update here must be used to advoid osscilation
|
||||
#
|
||||
update idletasks
|
||||
}
|
||||
|
||||
#
|
||||
#----------------------------------------------------------------------
|
||||
# virtual functions to query the client window's scroll requirement
|
||||
#----------------------------------------------------------------------
|
||||
proc tixScrolledListBox:GeometryInfo {w mW mH} {
|
||||
upvar #0 $w data
|
||||
|
||||
return [list \
|
||||
[list $data(x-first) $data(x-last)]\
|
||||
[list $data(y-first) $data(y-last)]]
|
||||
}
|
||||
|
||||
proc tixScrolledListBox:Configure {w} {
|
||||
upvar #0 $w data
|
||||
|
||||
tixWidgetDoWhenIdle tixScrolledListBox:TrickScrollbar $w
|
||||
|
||||
if {$data(-anchor) eq "e"} {
|
||||
$data(w:listbox) xview 100000
|
||||
}
|
||||
}
|
||||
|
||||
# This procedure is necessary because listbox does not call x,y scroll command
|
||||
# when its size is changed
|
||||
#
|
||||
proc tixScrolledListBox:TrickScrollbar {w} {
|
||||
upvar #0 $w data
|
||||
|
||||
set inc [$data(w:listbox) select include 0]
|
||||
|
||||
$data(w:listbox) select set 0
|
||||
if {!$inc} {
|
||||
$data(w:listbox) select clear 0
|
||||
}
|
||||
}
|
||||
# -*- mode: TCL; fill-column: 75; tab-width: 8; coding: iso-latin-1-unix -*-
|
||||
#
|
||||
# $Id: SListBox.tcl,v 1.5 2004/03/28 02:44:57 hobbs Exp $
|
||||
#
|
||||
# SListBox.tcl --
|
||||
#
|
||||
# This file implements Scrolled Listbox 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.
|
||||
#
|
||||
|
||||
|
||||
# ToDo:
|
||||
# -anchor (none)
|
||||
#
|
||||
|
||||
tixWidgetClass tixScrolledListBox {
|
||||
-classname TixScrolledListBox
|
||||
-superclass tixScrolledWidget
|
||||
-method {
|
||||
}
|
||||
-flag {
|
||||
-anchor -browsecmd -command -state
|
||||
}
|
||||
-static {
|
||||
-anchor
|
||||
}
|
||||
-configspec {
|
||||
{-anchor anchor Anchor w}
|
||||
{-browsecmd browseCmd BrowseCmd ""}
|
||||
{-command command Command ""}
|
||||
{-state state State normal}
|
||||
{-takefocus takeFocus TakeFocus 1 tixVerifyBoolean}
|
||||
}
|
||||
-default {
|
||||
{.scrollbar auto}
|
||||
{*borderWidth 1}
|
||||
{*listbox.highlightBackground #d9d9d9}
|
||||
{*listbox.relief sunken}
|
||||
{*listbox.background #c3c3c3}
|
||||
{*listbox.takeFocus 1}
|
||||
{*Scrollbar.takeFocus 0}
|
||||
}
|
||||
}
|
||||
|
||||
proc tixScrolledListBox:InitWidgetRec {w} {
|
||||
upvar #0 $w data
|
||||
|
||||
tixChainMethod $w InitWidgetRec
|
||||
|
||||
set data(x-first) 0
|
||||
set data(x-last) 1
|
||||
set data(y-first) 0
|
||||
set data(y-last) 1
|
||||
}
|
||||
|
||||
proc tixScrolledListBox:ConstructWidget {w} {
|
||||
upvar #0 $w data
|
||||
|
||||
tixChainMethod $w ConstructWidget
|
||||
|
||||
set data(w:listbox) \
|
||||
[listbox $w.listbox]
|
||||
set data(w:hsb) \
|
||||
[scrollbar $w.hsb -orient horizontal]
|
||||
set data(w:vsb) \
|
||||
[scrollbar $w.vsb -orient vertical ]
|
||||
|
||||
set data(pw:client) $data(w:listbox)
|
||||
}
|
||||
|
||||
proc tixScrolledListBox:SetBindings {w} {
|
||||
upvar #0 $w data
|
||||
|
||||
tixChainMethod $w SetBindings
|
||||
|
||||
$data(w:listbox) config \
|
||||
-xscrollcommand "tixScrolledListBox:XView $w"\
|
||||
-yscrollcommand "tixScrolledListBox:YView $w"
|
||||
|
||||
$data(w:hsb) config -command "$data(w:listbox) xview"
|
||||
$data(w:vsb) config -command "$data(w:listbox) yview"
|
||||
|
||||
bind $w <Configure> "+tixScrolledListBox:Configure $w"
|
||||
bind $w <FocusIn> "focus $data(w:listbox)"
|
||||
|
||||
bindtags $data(w:listbox) \
|
||||
"$data(w:listbox) TixListboxState Listbox TixListbox [winfo toplevel $data(w:listbox)] all"
|
||||
tixSetMegaWidget $data(w:listbox) $w
|
||||
}
|
||||
|
||||
proc tixScrolledListBoxBind {} {
|
||||
tixBind TixListboxState <1> {
|
||||
if {[set [tixGetMegaWidget %W](-state)] eq "disabled"} {
|
||||
break
|
||||
}
|
||||
}
|
||||
tixBind TixListbox <1> {
|
||||
if {[string is true -strict [%W cget -takefocus]]} {
|
||||
focus %W
|
||||
}
|
||||
tixScrolledListBox:Browse [tixGetMegaWidget %W]
|
||||
}
|
||||
|
||||
tixBind TixListboxState <B1-Motion> {
|
||||
if {[set [tixGetMegaWidget %W](-state)] eq "disabled"} {
|
||||
break
|
||||
}
|
||||
}
|
||||
tixBind TixListbox <B1-Motion> {
|
||||
tixScrolledListBox:Browse [tixGetMegaWidget %W]
|
||||
}
|
||||
|
||||
tixBind TixListboxState <Up> {
|
||||
if {[set [tixGetMegaWidget %W](-state)] eq "disabled"} {
|
||||
break
|
||||
}
|
||||
}
|
||||
tixBind TixListbox <Up> {
|
||||
tixScrolledListBox:KeyBrowse [tixGetMegaWidget %W]
|
||||
}
|
||||
|
||||
tixBind TixListboxState <Down> {
|
||||
if {[set [tixGetMegaWidget %W](-state)] eq "disabled"} {
|
||||
break
|
||||
}
|
||||
}
|
||||
tixBind TixListbox <Down> {
|
||||
tixScrolledListBox:KeyBrowse [tixGetMegaWidget %W]
|
||||
}
|
||||
|
||||
tixBind TixListboxState <Return> {
|
||||
if {[set [tixGetMegaWidget %W](-state)] eq "disabled"} {
|
||||
break
|
||||
}
|
||||
}
|
||||
tixBind TixListbox <Return> {
|
||||
tixScrolledListBox:KeyInvoke [tixGetMegaWidget %W]
|
||||
}
|
||||
|
||||
|
||||
tixBind TixListboxState <Double-1> {
|
||||
if {[set [tixGetMegaWidget %W](-state)] eq "disabled"} {
|
||||
break
|
||||
}
|
||||
}
|
||||
tixBind TixListbox <Double-1> {
|
||||
tixScrolledListBox:Invoke [tixGetMegaWidget %W]
|
||||
}
|
||||
|
||||
tixBind TixListboxState <ButtonRelease-1> {
|
||||
if {[set [tixGetMegaWidget %W](-state)] eq "disabled"} {
|
||||
break
|
||||
}
|
||||
}
|
||||
tixBind TixListbox <ButtonRelease-1> {
|
||||
tixScrolledListBox:Browse [tixGetMegaWidget %W]
|
||||
}
|
||||
}
|
||||
|
||||
proc tixScrolledListBox:Browse {w} {
|
||||
upvar #0 $w data
|
||||
|
||||
if {$data(-browsecmd) != ""} {
|
||||
set bind(specs) {%V}
|
||||
set bind(%V) [$data(w:listbox) get \
|
||||
[$data(w:listbox) nearest [tixEvent flag y]]]
|
||||
tixEvalCmdBinding $w $data(-browsecmd) bind
|
||||
}
|
||||
}
|
||||
|
||||
proc tixScrolledListBox:KeyBrowse {w} {
|
||||
upvar #0 $w data
|
||||
|
||||
if {$data(-browsecmd) != ""} {
|
||||
set bind(specs) {%V}
|
||||
set bind(%V) [$data(w:listbox) get active]
|
||||
tixEvalCmdBinding $w $data(-browsecmd) bind
|
||||
}
|
||||
}
|
||||
|
||||
# tixScrolledListBox:Invoke --
|
||||
#
|
||||
# The user has invoked the listbox by pressing either the <Returh>
|
||||
# key or double-clicking. Call the user-supplied -command function.
|
||||
#
|
||||
# For both -browsecmd and -command, it is the responsibility of the
|
||||
# user-supplied function to determine the current selection of the listbox
|
||||
#
|
||||
proc tixScrolledListBox:Invoke {w} {
|
||||
upvar #0 $w data
|
||||
|
||||
if {$data(-command) != ""} {
|
||||
set bind(specs) {%V}
|
||||
set bind(%V) [$data(w:listbox) get \
|
||||
[$data(w:listbox) nearest [tixEvent flag y]]]
|
||||
tixEvalCmdBinding $w $data(-command) bind
|
||||
}
|
||||
}
|
||||
|
||||
proc tixScrolledListBox:KeyInvoke {w} {
|
||||
upvar #0 $w data
|
||||
|
||||
if {$data(-command) != ""} {
|
||||
set bind(specs) {%V}
|
||||
set bind(%V) [$data(w:listbox) get active]
|
||||
tixEvalCmdBinding $w $data(-command) bind
|
||||
}
|
||||
}
|
||||
|
||||
#----------------------------------------------------------------------
|
||||
#
|
||||
# option configs
|
||||
#----------------------------------------------------------------------
|
||||
proc tixScrolledListBox:config-takefocus {w value} {
|
||||
upvar #0 $w data
|
||||
$data(w:listbox) config -takefocus $value
|
||||
}
|
||||
|
||||
|
||||
#----------------------------------------------------------------------
|
||||
#
|
||||
# Widget commands
|
||||
#----------------------------------------------------------------------
|
||||
|
||||
|
||||
#----------------------------------------------------------------------
|
||||
#
|
||||
# Private Methods
|
||||
#----------------------------------------------------------------------
|
||||
proc tixScrolledListBox:XView {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 tixScrolledListBox:YView {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
|
||||
|
||||
# Somehow an update here must be used to advoid osscilation
|
||||
#
|
||||
update idletasks
|
||||
}
|
||||
|
||||
#
|
||||
#----------------------------------------------------------------------
|
||||
# virtual functions to query the client window's scroll requirement
|
||||
#----------------------------------------------------------------------
|
||||
proc tixScrolledListBox:GeometryInfo {w mW mH} {
|
||||
upvar #0 $w data
|
||||
|
||||
return [list \
|
||||
[list $data(x-first) $data(x-last)]\
|
||||
[list $data(y-first) $data(y-last)]]
|
||||
}
|
||||
|
||||
proc tixScrolledListBox:Configure {w} {
|
||||
upvar #0 $w data
|
||||
|
||||
tixWidgetDoWhenIdle tixScrolledListBox:TrickScrollbar $w
|
||||
|
||||
if {$data(-anchor) eq "e"} {
|
||||
$data(w:listbox) xview 100000
|
||||
}
|
||||
}
|
||||
|
||||
# This procedure is necessary because listbox does not call x,y scroll command
|
||||
# when its size is changed
|
||||
#
|
||||
proc tixScrolledListBox:TrickScrollbar {w} {
|
||||
upvar #0 $w data
|
||||
|
||||
set inc [$data(w:listbox) select include 0]
|
||||
|
||||
$data(w:listbox) select set 0
|
||||
if {!$inc} {
|
||||
$data(w:listbox) select clear 0
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user