1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24 from common import *
25 from widget import Widget
26
28 """ A slider widget
29
30 Use a callback to read out the slider value every time the marker
31 is moved.
32
33 New Attributes
34 ==============
35
36 - orientation: 1 = horizontal, 0=vertical
37 - scale_start: float: default 0.0
38 - scale_end: float: default 1.0
39 - step_length: float: default scale_end/10
40 - marker_length: int: default 10
41 FIXME:
42 - update docstrings
43 """
44
45 HORIZONTAL = fife.Slider.HORIZONTAL
46 VERTICAL = fife.Slider.VERTICAL
47
48 ATTRIBUTES = Widget.ATTRIBUTES + [ IntAttr('orientation'),
49 FloatAttr('scale_start'),
50 FloatAttr('scale_end'),
51 FloatAttr('step_length'),
52 IntAttr('marker_length')
53 ]
54 DEFAULT_HEXPAND = 1
55 DEFAULT_VEXPAND = 0
56
57 DEFAULT_SIZE = 10,10
58 DEFAULT_MIN_SIZE = 10,10
59
60 DEFAULT_SCALE_START = 0.0
61 DEFAULT_SCALE_END = 1.0
62 DEFAULT_STEP_LENGTH = 0.1
63 DEFAULT_MARKER_LENGTH = 10
64 DEFAULT_ORIENTATION = HORIZONTAL
65
66 - def __init__(self,
67 parent = None,
68 name = None,
69 size = None,
70 min_size = None,
71 max_size = None,
72 helptext = None,
73 position = None,
74 style = None,
75 hexpand = None,
76 vexpand = None,
77 font = None,
78 base_color = None,
79 background_color = None,
80 foreground_color = None,
81 selection_color = None,
82 border_size = None,
83 position_technique = None,
84 is_focusable = None,
85 comment = None,
86 scale_start = None,
87 scale_end = None,
88 step_length = None,
89 marker_length = None,
90 orientation = None):
91
92 self.real_widget = fife.Slider(scale_start or self.DEFAULT_SCALE_START, scale_end or self.DEFAULT_SCALE_END)
93 self.orientation = self.DEFAULT_ORIENTATION
94 self.step_length = self.DEFAULT_STEP_LENGTH
95 self.marker_length = self.DEFAULT_MARKER_LENGTH
96
97 super(Slider, self).__init__(parent=parent,
98 name=name,
99 size=size,
100 min_size=min_size,
101 max_size=max_size,
102 helptext=helptext,
103 position=position,
104 style=style,
105 hexpand=hexpand,
106 vexpand=vexpand,
107 font=font,
108 base_color=base_color,
109 background_color=background_color,
110 foreground_color=foreground_color,
111 selection_color=selection_color,
112 border_size=border_size,
113 position_technique=position_technique,
114 is_focusable=is_focusable,
115 comment=comment)
116
117 if orientation is not None: self.orientation = orientation
118 if scale_start is not None: self.scale_start = scale_start
119 if scale_end is not None: self.scale_end = scale_end
120 if step_length is not None: self.step_lenght = step_length
121 if marker_length is not None: self.marker_length = marker_length
122
123 self.accepts_data = True
124 self._realSetData = self._setValue
125 self._realGetData = self._getValue
126
127 - def clone(self, prefix):
128 sliderClone = Slider(None,
129 self._createNameWithPrefix(prefix),
130 self.size,
131 self.min_size,
132 self.max_size,
133 self.helptext,
134 self.position,
135 self.style,
136 self.hexpand,
137 self.vexpand,
138 self.font,
139 self.base_color,
140 self.background_color,
141 self.foreground_color,
142 self.selection_color,
143 self.border_size,
144 self.position_technique,
145 self.is_focusable,
146 self.comment,
147 self.scale_start,
148 self.scale_end,
149 self.step_length,
150 self.marker_length,
151 self.orientation)
152 return sliderClone
153
155 """setScale(self, double scaleStart, double scaleEnd)"""
156 if type(start) != float:
157 raise RuntimeError("Slider expects float for start scale")
158 if type(end) != float:
159 raise RuntimeError("Slider expects float for end scale")
160 self.real_widget.setScale(start, end)
161
163 """getScaleStart(self) -> double"""
164 return self.real_widget.getScaleStart()
165
167 """setScaleStart(self, double scaleStart)"""
168 if type(start) != float:
169 raise RuntimeError("Slider expects float for start scale")
170 self.real_widget.setScaleStart(start)
171 scale_start = property(_getScaleStart, _setScaleStart)
172
174 """getScaleEnd(self) -> double"""
175 return self.real_widget.getScaleEnd()
176
178 """setScaleEnd(self, double scaleEnd)"""
179 if type(end) != float:
180 raise RuntimeError("Slider expects float for end scale")
181 self.real_widget.setScaleEnd(end)
182 scale_end = property(_getScaleEnd, _setScaleEnd)
183
185 """getValue(self) -> double"""
186 return self.real_widget.getValue()
187
189 """setValue(self, double value)"""
190 if type(value) != float:
191 raise RuntimeError("Slider only accepts float values")
192 self.real_widget.setValue(value)
193 value = property(_getValue, _setValue)
194
200
202 """getMarkerLength(self) -> int"""
203 return self.real_widget.getMarkerLength()
204 marker_length = property(_getMarkerLength, _setMarkerLength)
205
209
211 """getOrientation(self) -> int"""
212 return self.real_widget.getOrientation()
213 orientation = property(_getOrientation, _setOrientation)
214
216 """setStepLength(self, double length)"""
217 if type(length) != float:
218 raise RuntimeError("Slider only accepts floats for step length")
219 self.real_widget.setStepLength(length)
220
222 """getStepLength(self) -> double"""
223 return self.real_widget.getStepLength()
224 step_length = property(_getStepLength, _setStepLength)
225