Skip to content
Projeler
Gruplar
Parçacıklar
Yardım
Yükleniyor...
Oturum aç / Kaydol
Gezinmeyi değiştir
C
cpython
Proje
Proje
Ayrıntılar
Etkinlik
Cycle Analytics
Depo (repository)
Depo (repository)
Dosyalar
Kayıtlar (commit)
Dallar (branch)
Etiketler
Katkıda bulunanlar
Grafik
Karşılaştır
Grafikler
Konular (issue)
0
Konular (issue)
0
Liste
Pano
Etiketler
Kilometre Taşları
Birleştirme (merge) Talepleri
0
Birleştirme (merge) Talepleri
0
CI / CD
CI / CD
İş akışları (pipeline)
İşler
Zamanlamalar
Grafikler
Paketler
Paketler
Wiki
Wiki
Parçacıklar
Parçacıklar
Üyeler
Üyeler
Collapse sidebar
Close sidebar
Etkinlik
Grafik
Grafikler
Yeni bir konu (issue) oluştur
İşler
Kayıtlar (commit)
Konu (issue) Panoları
Kenar çubuğunu aç
Batuhan Osman TASKAYA
cpython
Commits
4de12876
Kaydet (Commit)
4de12876
authored
Eki 25, 1990
tarafından
Guido van Rossum
Dosyalara gözat
Seçenekler
Dosyalara Gözat
İndir
Eposta Yamaları
Sade Fark
Generalized.
üst
ceae528b
Show whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
264 additions
and
56 deletions
+264
-56
Sliders.py
Lib/lib-stdwin/Sliders.py
+132
-28
Sliders.py
Lib/stdwin/Sliders.py
+132
-28
No files found.
Lib/lib-stdwin/Sliders.py
Dosyayı görüntüle @
4de12876
# Module 'Sliders'
# Module 'Sliders'
#
#
#
Sliders are somewhat like buttons but have an extra hook that is
#
XXX Should split caller interface, appearance and reactivity better
# called whenever their value is changed.
import
stdwin
import
stdwin
from
stdwinevents
import
*
from
stdwinevents
import
*
import
rect
import
rect
from
minmax
import
min
,
max
from
minmax
import
min
,
max
from
Buttons
import
ClassicButton
from
Buttons
import
*
# Field indices in event detail
# Field indices in event detail
...
@@ -22,53 +22,157 @@ _MASK = 3
...
@@ -22,53 +22,157 @@ _MASK = 3
# It looks like a button but dragging the mouse left or right
# It looks like a button but dragging the mouse left or right
# changes the controlled value.
# changes the controlled value.
#
#
class
DragSlider
()
=
ClassicButton
():
class
DragSlider
Reactivity
()
=
NoReactivity
():
#
#
# INVARIANTS maintained by the define and setval methods:
def
mouse_down
(
self
,
detail
):
h
,
v
=
hv
=
detail
[
_HV
]
if
self
.
enabled
and
self
.
mousetest
(
hv
):
self
.
anchor
=
h
self
.
oldval
=
self
.
val
self
.
active
=
1
#
#
# self.min <= self.val <= self.max
def
mouse_move
(
self
,
detail
):
# self.text = `self.val`
if
self
.
active
:
h
,
v
=
detail
[
_HV
]
self
.
setval
(
self
.
oldval
+
(
h
-
self
.
anchor
))
#
#
# (Notice that unlike in Python ranges, the end point belongs
def
mouse_up
(
self
,
detail
):
# to the range.)
if
self
.
active
:
h
,
v
=
detail
[
_HV
]
self
.
setval
(
self
.
oldval
+
(
h
-
self
.
anchor
))
self
.
active
=
0
#
class
DragSliderAppearance
()
=
ButtonAppearance
():
#
#
def
define
(
self
,
(
win
,
bounds
)):
def
define
(
self
,
(
win
,
bounds
)):
self
.
min
=
0
self
.
min
=
0
self
.
val
=
50
self
.
val
=
-
1
# Changed by next setval call
self
.
max
=
100
self
.
max
=
100
self
.
setval_hook
=
0
self
.
setval_hook
=
0
self
.
pretext
=
self
.
postext
=
''
self
.
pretext
=
self
.
postext
=
''
self
.
text
=
self
.
pretext
+
`self.val`
+
self
.
postext
self
=
ClassicButton
.
define
(
self
,
(
win
,
bounds
,
''
))
self
=
ClassicButton
.
define
(
self
,
(
win
,
bounds
,
self
.
text
)
)
self
.
setval
(
50
)
return
self
return
self
#
#
# INVARIANTS maintained by the setval method:
#
# self.min <= self.val <= self.max
# self.text = self.pretext + `self.val` + self.postext
#
# (Notice that unlike in Python ranges, the end point belongs
# to the range.)
#
def
setval
(
self
,
val
):
def
setval
(
self
,
val
):
val
=
min
(
self
.
max
,
max
(
self
.
min
,
val
))
val
=
min
(
self
.
max
,
max
(
self
.
min
,
val
))
if
val
<>
self
.
val
:
if
val
<>
self
.
val
:
self
.
val
=
val
self
.
val
=
val
self
.
text
=
self
.
pretext
+
`self.val`
+
self
.
postext
self
.
setval_trigger
()
# (The trigger may change val, pretext and postext)
self
.
settext
(
self
.
pretext
+
`self.val`
+
self
.
postext
)
#
def
setval_trigger
(
self
):
if
self
.
setval_hook
:
if
self
.
setval_hook
:
self
.
setval_hook
(
self
)
self
.
setval_hook
(
self
)
self
.
redraw
()
#
#
def
settext
(
self
,
text
):
pass
# shouldn't be called at all
class
DragSlider
()
=
DragSliderReactivity
(),
DragSliderAppearance
():
pass
# Auxiliary class for DragSlider incorporated in ComplexSlider
#
class
_SubDragSlider
()
=
DragSlider
():
def
define
(
self
,
(
win
,
bounds
,
parent
)):
self
.
parent
=
parent
return
DragSlider
.
define
(
self
,
(
win
,
bounds
))
def
setval_trigger
(
self
):
self
.
parent
.
val
=
self
.
val
self
.
parent
.
setval_trigger
()
# Auxiliary class for ClassicButton incorporated in ComplexSlider
#
class
_SubClassicButton
()
=
ClassicButton
():
def
define
(
self
,
(
win
,
bounds
,
text
,
step
,
parent
)):
self
.
parent
=
parent
self
.
step
=
step
return
ClassicButton
.
define
(
self
,
(
win
,
bounds
,
text
))
def
down_trigger
(
self
):
self
.
parent
.
setval
(
self
.
parent
.
val
+
self
.
step
)
self
.
delay
=
5
self
.
win
.
settimer
(
self
.
delay
)
def
move_trigger
(
self
):
self
.
win
.
settimer
(
self
.
delay
)
def
timer_trigger
(
self
):
self
.
delay
=
1
self
.
parent
.
setval
(
self
.
parent
.
val
+
self
.
step
)
self
.
win
.
settimer
(
self
.
delay
)
# A complex slider is a wrapper around three buttons:
# One to step down, a dragslider, and one to step up.
#
class
ComplexSlider
()
=
LabelAppearance
(),
NoReactivity
():
#
def
define
(
self
,
(
win
,
bounds
)):
#
self
.
win
=
win
self
.
bounds
=
bounds
self
.
setval_hook
=
0
#
(
left
,
top
),
(
right
,
bottom
)
=
bounds
size
=
bottom
-
top
#
downbox
=
(
left
,
top
),
(
left
+
size
,
bottom
)
sliderbox
=
(
left
+
size
,
top
),
(
right
-
size
,
bottom
)
upbox
=
(
right
-
size
,
top
),
(
right
,
bottom
)
#
self
.
downbutton
=
\
_SubClassicButton
()
.
define
(
win
,
downbox
,
'-'
,
-
1
,
self
)
#
self
.
sliderbutton
=
\
_SubDragSlider
()
.
define
(
win
,
sliderbox
,
self
)
#
self
.
upbutton
=
\
_SubClassicButton
()
.
define
(
win
,
upbox
,
'+'
,
1
,
self
)
#
self
.
min
=
self
.
sliderbutton
.
min
self
.
val
=
self
.
sliderbutton
.
val
self
.
max
=
self
.
sliderbutton
.
max
self
.
pretext
=
self
.
sliderbutton
.
pretext
self
.
postext
=
self
.
sliderbutton
.
postext
#
self
.
children
=
\
[
self
.
downbutton
,
self
.
sliderbutton
,
self
.
upbutton
]
#
return
self
#
#
def
mouse_down
(
self
,
detail
):
def
mouse_down
(
self
,
detail
):
h
,
v
=
hv
=
detail
[
_HV
]
for
b
in
self
.
children
:
if
self
.
enabled
and
self
.
mousetest
(
hv
):
b
.
mouse_down
(
detail
)
self
.
anchor
=
h
self
.
oldval
=
self
.
val
self
.
active
=
1
#
#
def
mouse_move
(
self
,
detail
):
def
mouse_move
(
self
,
detail
):
if
self
.
active
:
for
b
in
self
.
children
:
h
,
v
=
detail
[
_HV
]
b
.
mouse_move
(
detail
)
self
.
setval
(
self
.
oldval
+
(
h
-
self
.
anchor
))
#
#
def
mouse_up
(
self
,
detail
):
def
mouse_up
(
self
,
detail
):
if
self
.
active
:
for
b
in
self
.
children
:
h
,
v
=
detail
[
_HV
]
b
.
mouse_up
(
detail
)
self
.
setval
(
self
.
oldval
+
(
h
-
self
.
anchor
))
#
self
.
active
=
0
def
timer
(
self
):
for
b
in
self
.
children
:
b
.
timer
()
#
def
draw
(
self
,
area
):
for
b
in
self
.
children
:
b
.
draw
(
area
)
#
def
setval
(
self
,
val
):
self
.
sliderbutton
.
min
=
self
.
min
self
.
sliderbutton
.
max
=
self
.
max
self
.
sliderbutton
.
pretext
=
self
.
pretext
self
.
sliderbutton
.
postext
=
self
.
postext
self
.
sliderbutton
.
setval
(
val
)
#
def
setval_trigger
(
self
):
if
self
.
setval_hook
:
self
.
setval_hook
(
self
)
#
#
Lib/stdwin/Sliders.py
Dosyayı görüntüle @
4de12876
# Module 'Sliders'
# Module 'Sliders'
#
#
#
Sliders are somewhat like buttons but have an extra hook that is
#
XXX Should split caller interface, appearance and reactivity better
# called whenever their value is changed.
import
stdwin
import
stdwin
from
stdwinevents
import
*
from
stdwinevents
import
*
import
rect
import
rect
from
minmax
import
min
,
max
from
minmax
import
min
,
max
from
Buttons
import
ClassicButton
from
Buttons
import
*
# Field indices in event detail
# Field indices in event detail
...
@@ -22,53 +22,157 @@ _MASK = 3
...
@@ -22,53 +22,157 @@ _MASK = 3
# It looks like a button but dragging the mouse left or right
# It looks like a button but dragging the mouse left or right
# changes the controlled value.
# changes the controlled value.
#
#
class
DragSlider
()
=
ClassicButton
():
class
DragSlider
Reactivity
()
=
NoReactivity
():
#
#
# INVARIANTS maintained by the define and setval methods:
def
mouse_down
(
self
,
detail
):
h
,
v
=
hv
=
detail
[
_HV
]
if
self
.
enabled
and
self
.
mousetest
(
hv
):
self
.
anchor
=
h
self
.
oldval
=
self
.
val
self
.
active
=
1
#
#
# self.min <= self.val <= self.max
def
mouse_move
(
self
,
detail
):
# self.text = `self.val`
if
self
.
active
:
h
,
v
=
detail
[
_HV
]
self
.
setval
(
self
.
oldval
+
(
h
-
self
.
anchor
))
#
#
# (Notice that unlike in Python ranges, the end point belongs
def
mouse_up
(
self
,
detail
):
# to the range.)
if
self
.
active
:
h
,
v
=
detail
[
_HV
]
self
.
setval
(
self
.
oldval
+
(
h
-
self
.
anchor
))
self
.
active
=
0
#
class
DragSliderAppearance
()
=
ButtonAppearance
():
#
#
def
define
(
self
,
(
win
,
bounds
)):
def
define
(
self
,
(
win
,
bounds
)):
self
.
min
=
0
self
.
min
=
0
self
.
val
=
50
self
.
val
=
-
1
# Changed by next setval call
self
.
max
=
100
self
.
max
=
100
self
.
setval_hook
=
0
self
.
setval_hook
=
0
self
.
pretext
=
self
.
postext
=
''
self
.
pretext
=
self
.
postext
=
''
self
.
text
=
self
.
pretext
+
`self.val`
+
self
.
postext
self
=
ClassicButton
.
define
(
self
,
(
win
,
bounds
,
''
))
self
=
ClassicButton
.
define
(
self
,
(
win
,
bounds
,
self
.
text
)
)
self
.
setval
(
50
)
return
self
return
self
#
#
# INVARIANTS maintained by the setval method:
#
# self.min <= self.val <= self.max
# self.text = self.pretext + `self.val` + self.postext
#
# (Notice that unlike in Python ranges, the end point belongs
# to the range.)
#
def
setval
(
self
,
val
):
def
setval
(
self
,
val
):
val
=
min
(
self
.
max
,
max
(
self
.
min
,
val
))
val
=
min
(
self
.
max
,
max
(
self
.
min
,
val
))
if
val
<>
self
.
val
:
if
val
<>
self
.
val
:
self
.
val
=
val
self
.
val
=
val
self
.
text
=
self
.
pretext
+
`self.val`
+
self
.
postext
self
.
setval_trigger
()
# (The trigger may change val, pretext and postext)
self
.
settext
(
self
.
pretext
+
`self.val`
+
self
.
postext
)
#
def
setval_trigger
(
self
):
if
self
.
setval_hook
:
if
self
.
setval_hook
:
self
.
setval_hook
(
self
)
self
.
setval_hook
(
self
)
self
.
redraw
()
#
#
def
settext
(
self
,
text
):
pass
# shouldn't be called at all
class
DragSlider
()
=
DragSliderReactivity
(),
DragSliderAppearance
():
pass
# Auxiliary class for DragSlider incorporated in ComplexSlider
#
class
_SubDragSlider
()
=
DragSlider
():
def
define
(
self
,
(
win
,
bounds
,
parent
)):
self
.
parent
=
parent
return
DragSlider
.
define
(
self
,
(
win
,
bounds
))
def
setval_trigger
(
self
):
self
.
parent
.
val
=
self
.
val
self
.
parent
.
setval_trigger
()
# Auxiliary class for ClassicButton incorporated in ComplexSlider
#
class
_SubClassicButton
()
=
ClassicButton
():
def
define
(
self
,
(
win
,
bounds
,
text
,
step
,
parent
)):
self
.
parent
=
parent
self
.
step
=
step
return
ClassicButton
.
define
(
self
,
(
win
,
bounds
,
text
))
def
down_trigger
(
self
):
self
.
parent
.
setval
(
self
.
parent
.
val
+
self
.
step
)
self
.
delay
=
5
self
.
win
.
settimer
(
self
.
delay
)
def
move_trigger
(
self
):
self
.
win
.
settimer
(
self
.
delay
)
def
timer_trigger
(
self
):
self
.
delay
=
1
self
.
parent
.
setval
(
self
.
parent
.
val
+
self
.
step
)
self
.
win
.
settimer
(
self
.
delay
)
# A complex slider is a wrapper around three buttons:
# One to step down, a dragslider, and one to step up.
#
class
ComplexSlider
()
=
LabelAppearance
(),
NoReactivity
():
#
def
define
(
self
,
(
win
,
bounds
)):
#
self
.
win
=
win
self
.
bounds
=
bounds
self
.
setval_hook
=
0
#
(
left
,
top
),
(
right
,
bottom
)
=
bounds
size
=
bottom
-
top
#
downbox
=
(
left
,
top
),
(
left
+
size
,
bottom
)
sliderbox
=
(
left
+
size
,
top
),
(
right
-
size
,
bottom
)
upbox
=
(
right
-
size
,
top
),
(
right
,
bottom
)
#
self
.
downbutton
=
\
_SubClassicButton
()
.
define
(
win
,
downbox
,
'-'
,
-
1
,
self
)
#
self
.
sliderbutton
=
\
_SubDragSlider
()
.
define
(
win
,
sliderbox
,
self
)
#
self
.
upbutton
=
\
_SubClassicButton
()
.
define
(
win
,
upbox
,
'+'
,
1
,
self
)
#
self
.
min
=
self
.
sliderbutton
.
min
self
.
val
=
self
.
sliderbutton
.
val
self
.
max
=
self
.
sliderbutton
.
max
self
.
pretext
=
self
.
sliderbutton
.
pretext
self
.
postext
=
self
.
sliderbutton
.
postext
#
self
.
children
=
\
[
self
.
downbutton
,
self
.
sliderbutton
,
self
.
upbutton
]
#
return
self
#
#
def
mouse_down
(
self
,
detail
):
def
mouse_down
(
self
,
detail
):
h
,
v
=
hv
=
detail
[
_HV
]
for
b
in
self
.
children
:
if
self
.
enabled
and
self
.
mousetest
(
hv
):
b
.
mouse_down
(
detail
)
self
.
anchor
=
h
self
.
oldval
=
self
.
val
self
.
active
=
1
#
#
def
mouse_move
(
self
,
detail
):
def
mouse_move
(
self
,
detail
):
if
self
.
active
:
for
b
in
self
.
children
:
h
,
v
=
detail
[
_HV
]
b
.
mouse_move
(
detail
)
self
.
setval
(
self
.
oldval
+
(
h
-
self
.
anchor
))
#
#
def
mouse_up
(
self
,
detail
):
def
mouse_up
(
self
,
detail
):
if
self
.
active
:
for
b
in
self
.
children
:
h
,
v
=
detail
[
_HV
]
b
.
mouse_up
(
detail
)
self
.
setval
(
self
.
oldval
+
(
h
-
self
.
anchor
))
#
self
.
active
=
0
def
timer
(
self
):
for
b
in
self
.
children
:
b
.
timer
()
#
def
draw
(
self
,
area
):
for
b
in
self
.
children
:
b
.
draw
(
area
)
#
def
setval
(
self
,
val
):
self
.
sliderbutton
.
min
=
self
.
min
self
.
sliderbutton
.
max
=
self
.
max
self
.
sliderbutton
.
pretext
=
self
.
pretext
self
.
sliderbutton
.
postext
=
self
.
postext
self
.
sliderbutton
.
setval
(
val
)
#
def
setval_trigger
(
self
):
if
self
.
setval_hook
:
self
.
setval_hook
(
self
)
#
#
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment