| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
|
|
|
|
| |
| |
| |
|
|
| 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 |
| } |
| } |
|
|
| |
| |
| |
| |
| |
| |
| |
| |
| 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 |
| } |
| } |
|
|
| |
| |
| |
| |
| proc tixScrolledListBox:config-takefocus {w value} { |
| upvar #0 $w data |
| $data(w:listbox) config -takefocus $value |
| } |
|
|
|
|
| |
| |
| |
| |
|
|
|
|
| |
| |
| |
| |
| 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 |
|
|
| |
| |
| update idletasks |
| } |
|
|
| |
| |
| |
| |
| 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 |
| } |
| } |
|
|
| |
| |
| |
| 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 |
| } |
| } |
|
|