blob: a97440d24b011b0291467ad7dc3b06a917a69bf6 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
|
# scale.tcl - Copyright © 2004 Pat Thoyts <patthoyts@users.sourceforge.net>
#
# Bindings for the TScale widget
namespace eval ttk::scale {
variable State
array set State {
dragging 0
}
}
bind TScale <Button-1> { ttk::scale::Press %W %x %y }
bind TScale <B1-Motion> { ttk::scale::Drag %W %x %y }
bind TScale <ButtonRelease-1> { ttk::scale::Release %W %x %y }
bind TScale <Button-2> { ttk::scale::Jump %W %x %y }
bind TScale <B2-Motion> { ttk::scale::Drag %W %x %y }
bind TScale <ButtonRelease-2> { ttk::scale::Release %W %x %y }
bind TScale <Button-3> { ttk::scale::Jump %W %x %y }
bind TScale <B3-Motion> { ttk::scale::Drag %W %x %y }
bind TScale <ButtonRelease-3> { ttk::scale::Release %W %x %y }
## Keyboard navigation bindings:
#
bind TScale <<LineStart>> { %W set [%W cget -from] }
bind TScale <<LineEnd>> { %W set [%W cget -to] }
bind TScale <<PrevChar>> { ttk::scale::Increment %W -1 }
bind TScale <<PrevLine>> { ttk::scale::Increment %W -1 }
bind TScale <<NextChar>> { ttk::scale::Increment %W 1 }
bind TScale <<NextLine>> { ttk::scale::Increment %W 1 }
bind TScale <<PrevWord>> { ttk::scale::Increment %W -10 }
bind TScale <<PrevPara>> { ttk::scale::Increment %W -10 }
bind TScale <<NextWord>> { ttk::scale::Increment %W 10 }
bind TScale <<NextPara>> { ttk::scale::Increment %W 10 }
proc ttk::scale::Press {w x y} {
variable State
set State(dragging) 0
switch -glob -- [$w identify $x $y] {
*track -
*trough {
set inc [expr {([$w get $x $y] <= [$w get]) ^ ([$w cget -from] > [$w cget -to]) ? -1 : 1}]
ttk::Repeatedly Increment $w $inc
}
*slider {
set State(dragging) 1
set State(initial) [$w get]
}
}
}
# scale::Jump -- Button-2/3 binding for scale acts like
# Press except that clicking in the trough jumps to the
# clicked position.
proc ttk::scale::Jump {w x y} {
variable State
set State(dragging) 0
switch -glob -- [$w identify $x $y] {
*track -
*trough {
$w set [$w get $x $y]
set State(dragging) 1
set State(initial) [$w get]
}
*slider {
Press $w $x $y
}
}
}
proc ttk::scale::Drag {w x y} {
variable State
if {$State(dragging)} {
$w set [$w get $x $y]
}
}
proc ttk::scale::Release {w x y} {
variable State
set State(dragging) 0
ttk::CancelRepeat
}
proc ttk::scale::Increment {w delta} {
if {![winfo exists $w]} return
if {([$w cget -from] > [$w cget -to])} {
set delta [expr {-$delta}]
}
$w set [expr {[$w get] + $delta}]
}
|