Skip to content

Commit 1196332

Browse files
authored
Merge pull request #394 from badetitou/slider
Add back Slider Widget
2 parents af84bd3 + 2a1eb4e commit 1196332

16 files changed

Lines changed: 89 additions & 69 deletions

src/BaselineOfToplo/BaselineOfToplo.class.st

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -177,6 +177,11 @@ BaselineOfToplo >> registerPackages: spec [
177177
#'Toplo-Widget-Button' #'Toplo-Widget-Image'
178178
#'Toplo-Widget-Menu' #'Toplo-Widget-Tag' #'Toplo-Theme' ) ].
179179

180+
spec package: #'Toplo-Widget-Slider' with: [
181+
spec requires:
182+
#( #Toplo ) ].
183+
184+
180185
spec
181186
package: #'Toplo-Widget-Select-Tests'
182187
with: [ spec requires: #( #Toplo #'Toplo-Widget-Select' ) ].

src/Toplo-Sliders/package.st

Lines changed: 0 additions & 1 deletion
This file was deleted.

src/Toplo-Sliders/ToNewBasicHorizontalSlider.class.st renamed to src/Toplo-Widget-Slider/ToBasicHorizontalSlider.class.st

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
11
Class {
2-
#name : #ToNewBasicHorizontalSlider,
3-
#superclass : #ToNewBasicSlider,
4-
#category : #'Toplo-Sliders-Core'
2+
#name : #ToBasicHorizontalSlider,
3+
#superclass : #ToBasicSlider,
4+
#category : #'Toplo-Widget-Slider-Core'
55
}
66

77
{ #category : #examples }
8-
ToNewBasicHorizontalSlider class >> simpleExample [
8+
ToBasicHorizontalSlider class >> simpleExample [
99

1010
<script>
1111
| slider textElt space |
@@ -25,7 +25,7 @@ ToNewBasicHorizontalSlider class >> simpleExample [
2525
]
2626

2727
{ #category : #'api - transformations' }
28-
ToNewBasicHorizontalSlider >> moveKnobTo: aPosition [
28+
ToBasicHorizontalSlider >> moveKnobTo: aPosition [
2929

3030
| newPos newPosX |
3131
newPos := aPosition.
@@ -41,13 +41,13 @@ ToNewBasicHorizontalSlider >> moveKnobTo: aPosition [
4141
]
4242

4343
{ #category : #'instance creation' }
44-
ToNewBasicHorizontalSlider >> newRawSkin [
44+
ToBasicHorizontalSlider >> newRawSkin [
4545

46-
^ ToNewBasicHorizontalSliderSkin new
46+
^ ToBasicHorizontalSliderSkin new
4747
]
4848

4949
{ #category : #'api - transformations' }
50-
ToNewBasicHorizontalSlider >> valueAtCoord: aPosition [
50+
ToBasicHorizontalSlider >> valueAtCoord: aPosition [
5151

5252
| valueDiff value coeff posX |
5353
posX := aPosition x.
@@ -57,11 +57,11 @@ ToNewBasicHorizontalSlider >> valueAtCoord: aPosition [
5757
/ (posX - (sliderKnob width / 2)).
5858
value := minValue + (valueDiff / coeff).
5959

60-
^ (value roundTo: 1) asFloat
60+
^ (value roundTo: self quantum) asFloat
6161
]
6262

6363
{ #category : #'api - transformations' }
64-
ToNewBasicHorizontalSlider >> valueToCoord: aValue [
64+
ToBasicHorizontalSlider >> valueToCoord: aValue [
6565

6666
| current total coeff |
6767
current := aValue - self minValue.

src/Toplo-Sliders/ToNewBasicHorizontalSliderSkin.class.st renamed to src/Toplo-Widget-Slider/ToBasicHorizontalSliderSkin.class.st

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
11
Class {
2-
#name : #ToNewBasicHorizontalSliderSkin,
2+
#name : #ToBasicHorizontalSliderSkin,
33
#superclass : #ToRawSkin,
4-
#category : #'Toplo-Sliders-Core'
4+
#category : #'Toplo-Widget-Slider-Core'
55
}
66

77
{ #category : #initialization }
8-
ToNewBasicHorizontalSliderSkin >> initializeBarForElement: element [
8+
ToBasicHorizontalSliderSkin >> initializeBarForElement: element [
99

1010

1111
| sliderBar |
@@ -20,7 +20,7 @@ ToNewBasicHorizontalSliderSkin >> initializeBarForElement: element [
2020
]
2121

2222
{ #category : #initialization }
23-
ToNewBasicHorizontalSliderSkin >> initializeKnobForElement: element [
23+
ToBasicHorizontalSliderSkin >> initializeKnobForElement: element [
2424

2525
| sliderKnob pt |
2626
sliderKnob := element sliderKnob.
@@ -30,7 +30,7 @@ ToNewBasicHorizontalSliderSkin >> initializeKnobForElement: element [
3030
sliderKnob
3131
geometry: BlCircleGeometry new;
3232
background: Color lightRed;
33-
size: pt;
33+
extent: pt;
3434
transformDo: [ :t | t translateBy: pt negated x / 2 @ 0 ].
3535
sliderKnob whenLayoutedDoOnce: [
3636
sliderKnob constraintsDo: [ :c |
@@ -39,10 +39,11 @@ ToNewBasicHorizontalSliderSkin >> initializeKnobForElement: element [
3939
]
4040

4141
{ #category : #'event handling' }
42-
ToNewBasicHorizontalSliderSkin >> installSkinEvent: anEvent [
42+
ToBasicHorizontalSliderSkin >> installSkinEvent: anEvent [
4343
"Be careful, adding padding makes the knob imprecise"
44+
4445
anEvent elementDo: [ :elt |
45-
elt size: 200 @ 50.
46+
elt extent: 200 @ 50.
4647
elt layout: BlFrameLayout new.
4748
elt clipChildren: false.
4849
self initializeBarForElement: elt.

src/Toplo-Sliders/ToNewBasicSlider.class.st renamed to src/Toplo-Widget-Slider/ToBasicSlider.class.st

Lines changed: 41 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -6,34 +6,35 @@ This slider aims to be the foundation of a new slider for Toplo, its design is s
66
This slider was influenced by the `ToDesignSlider` and the `ToOldBasicSlider`.
77
"
88
Class {
9-
#name : #ToNewBasicSlider,
9+
#name : #ToBasicSlider,
1010
#superclass : #ToElement,
1111
#instVars : [
1212
'minValue',
1313
'maxValue',
1414
'currentValue',
1515
'sliderBar',
1616
'sliderKnob',
17-
'newValueCallback'
17+
'newValueCallback',
18+
'quantum'
1819
],
19-
#category : #'Toplo-Sliders-Core'
20+
#category : #'Toplo-Widget-Slider-Core'
2021
}
2122

2223
{ #category : #private }
23-
ToNewBasicSlider >> currentValue [
24+
ToBasicSlider >> currentValue [
2425

2526
^ currentValue
2627
]
2728

2829
{ #category : #private }
29-
ToNewBasicSlider >> currentValue: aNumber [
30+
ToBasicSlider >> currentValue: aNumber [
3031

3132
currentValue := aNumber.
3233
self newValueCallback ifNotNil: [ :e | e value: currentValue ]
3334
]
3435

3536
{ #category : #initialization }
36-
ToNewBasicSlider >> initialize [
37+
ToBasicSlider >> initialize [
3738

3839
super initialize.
3940
self initializeDefaultValues.
@@ -43,22 +44,23 @@ ToNewBasicSlider >> initialize [
4344
]
4445

4546
{ #category : #'private - building' }
46-
ToNewBasicSlider >> initializeBar [
47+
ToBasicSlider >> initializeBar [
4748

4849
sliderBar := ToElement new.
4950
self addChild: sliderBar
5051
]
5152

5253
{ #category : #accessing }
53-
ToNewBasicSlider >> initializeDefaultValues [
54+
ToBasicSlider >> initializeDefaultValues [
5455

5556
maxValue := 100.0.
5657
minValue := 0.0.
5758
currentValue := 0.0.
59+
quantum := 1
5860
]
5961

6062
{ #category : #initialization }
61-
ToNewBasicSlider >> initializeEvents [
63+
ToBasicSlider >> initializeEvents [
6264

6365
self
6466
addEventHandlerOn: BlMouseDownEvent
@@ -74,110 +76,122 @@ ToNewBasicSlider >> initializeEvents [
7476
]
7577

7678
{ #category : #'private - building' }
77-
ToNewBasicSlider >> initializeKnob [
79+
ToBasicSlider >> initializeKnob [
7880

7981
sliderKnob := ToElement new.
8082
self addChild: sliderKnob
8183
]
8284

8385
{ #category : #'api - values' }
84-
ToNewBasicSlider >> maxValue [
86+
ToBasicSlider >> maxValue [
8587

8688
^ maxValue
8789
]
8890

8991
{ #category : #'api - values' }
90-
ToNewBasicSlider >> maxValue: anObject [
92+
ToBasicSlider >> maxValue: anObject [
9193

9294
maxValue := anObject
9395
]
9496

9597
{ #category : #'api - values' }
96-
ToNewBasicSlider >> minValue [
98+
ToBasicSlider >> minValue [
9799

98100
^ minValue
99101
]
100102

101103
{ #category : #'api - values' }
102-
ToNewBasicSlider >> minValue: aNumber [
104+
ToBasicSlider >> minValue: aNumber [
103105

104106
minValue := aNumber.
105107
]
106108

107109
{ #category : #'api - transformations' }
108-
ToNewBasicSlider >> moveKnobTo: aPosition [
110+
ToBasicSlider >> moveKnobTo: aPosition [
109111

110112
self subclassResponsibility
111113
]
112114

113115
{ #category : #'instance creation' }
114-
ToNewBasicSlider >> newRawSkin [
116+
ToBasicSlider >> newRawSkin [
115117

116118
self subclassResponsibility
117119
]
118120

119121
{ #category : #private }
120-
ToNewBasicSlider >> newValueCallback [
122+
ToBasicSlider >> newValueCallback [
121123

122124
^ newValueCallback
123125
]
124126

125127
{ #category : #'api - values' }
126-
ToNewBasicSlider >> newValueCallback: anObject [
128+
ToBasicSlider >> newValueCallback: anObject [
127129

128130
newValueCallback := anObject
129131
]
130132

133+
{ #category : #accessing }
134+
ToBasicSlider >> quantum [
135+
136+
^ quantum
137+
]
138+
139+
{ #category : #accessing }
140+
ToBasicSlider >> quantum: anObject [
141+
142+
quantum := anObject
143+
]
144+
131145
{ #category : #'api - slider' }
132-
ToNewBasicSlider >> setToMaxValue [
146+
ToBasicSlider >> setToMaxValue [
133147

134148
self setValue: self maxValue.
135149
]
136150

137151
{ #category : #'api - slider' }
138-
ToNewBasicSlider >> setToMinValue [
152+
ToBasicSlider >> setToMinValue [
139153

140154
self setValue: self minValue
141155
]
142156

143157
{ #category : #'api - slider' }
144-
ToNewBasicSlider >> setValue: aValue [
158+
ToBasicSlider >> setValue: aValue [
145159

146160
self moveKnobTo: (self valueToCoord: aValue).
147161
]
148162

149163
{ #category : #accessing }
150-
ToNewBasicSlider >> sliderBar [
164+
ToBasicSlider >> sliderBar [
151165

152166
^ sliderBar
153167
]
154168

155169
{ #category : #accessing }
156-
ToNewBasicSlider >> sliderBar: anObject [
170+
ToBasicSlider >> sliderBar: anObject [
157171

158172
sliderBar := anObject
159173
]
160174

161175
{ #category : #accessing }
162-
ToNewBasicSlider >> sliderKnob [
176+
ToBasicSlider >> sliderKnob [
163177

164178
^ sliderKnob
165179
]
166180

167181
{ #category : #accessing }
168-
ToNewBasicSlider >> sliderKnob: anObject [
182+
ToBasicSlider >> sliderKnob: anObject [
169183

170184
sliderKnob := anObject
171185
]
172186

173187
{ #category : #'api - transformations' }
174-
ToNewBasicSlider >> valueAtCoord: aPosition [
188+
ToBasicSlider >> valueAtCoord: aPosition [
175189

176190
self subclassResponsibility
177191
]
178192

179193
{ #category : #'api - transformations' }
180-
ToNewBasicSlider >> valueToCoord: aValue [
194+
ToBasicSlider >> valueToCoord: aValue [
181195

182196
self subclassResponsibility
183197
]

src/Toplo-Sliders/ToNewBasicVerticalSlider.class.st renamed to src/Toplo-Widget-Slider/ToBasicVerticalSlider.class.st

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
11
Class {
2-
#name : #ToNewBasicVerticalSlider,
3-
#superclass : #ToNewBasicSlider,
4-
#category : #'Toplo-Sliders-Core'
2+
#name : #ToBasicVerticalSlider,
3+
#superclass : #ToBasicSlider,
4+
#category : #'Toplo-Widget-Slider-Core'
55
}
66

77
{ #category : #examples }
8-
ToNewBasicVerticalSlider class >> simpleExample [
8+
ToBasicVerticalSlider class >> simpleExample [
99

1010
<script>
1111
| slider textElt space |
@@ -26,7 +26,7 @@ ToNewBasicVerticalSlider class >> simpleExample [
2626
]
2727

2828
{ #category : #'api - transformations' }
29-
ToNewBasicVerticalSlider >> moveKnobTo: aPosition [
29+
ToBasicVerticalSlider >> moveKnobTo: aPosition [
3030

3131
| newPos newPosY |
3232
newPos := aPosition.
@@ -44,13 +44,13 @@ ToNewBasicVerticalSlider >> moveKnobTo: aPosition [
4444
]
4545

4646
{ #category : #'instance creation' }
47-
ToNewBasicVerticalSlider >> newRawSkin [
47+
ToBasicVerticalSlider >> newRawSkin [
4848

49-
^ ToNewBasicVerticalSliderSkin new
49+
^ ToBasicVerticalSliderSkin new
5050
]
5151

5252
{ #category : #'api - transformations' }
53-
ToNewBasicVerticalSlider >> valueAtCoord: aPosition [
53+
ToBasicVerticalSlider >> valueAtCoord: aPosition [
5454

5555
| valueDiff value coeff posY |
5656
posY := aPosition y.
@@ -62,11 +62,11 @@ ToNewBasicVerticalSlider >> valueAtCoord: aPosition [
6262
/ (posY - (sliderKnob height / 2))).
6363
value := maxValue - (valueDiff / coeff).
6464

65-
^ (value roundTo: 1) asFloat
65+
^ (value roundTo: self quantum) asFloat
6666
]
6767

6868
{ #category : #'api - transformations' }
69-
ToNewBasicVerticalSlider >> valueToCoord: aValue [
69+
ToBasicVerticalSlider >> valueToCoord: aValue [
7070

7171
| current total coeff |
7272
current := aValue - self minValue.

0 commit comments

Comments
 (0)