Package fife :: Package extensions :: Package pychan :: Package widgets' :: Module slider
[hide private]
[frames] | no frames]

Source Code for Module fife.extensions.pychan.widgets'.slider

  1  # -*- coding: utf-8 -*- 
  2   
  3  # #################################################################### 
  4  #  Copyright (C) 2005-2011 by the FIFE team 
  5  #  http://www.fifengine.net 
  6  #  This file is part of FIFE. 
  7  # 
  8  #  FIFE is free software; you can redistribute it and/or 
  9  #  modify it under the terms of the GNU Lesser General Public 
 10  #  License as published by the Free Software Foundation; either 
 11  #  version 2.1 of the License, or (at your option) any later version. 
 12  # 
 13  #  This library is distributed in the hope that it will be useful, 
 14  #  but WITHOUT ANY WARRANTY; without even the implied warranty of 
 15  #  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
 16  #  Lesser General Public License for more details. 
 17  # 
 18  #  You should have received a copy of the GNU Lesser General Public 
 19  #  License along with this library; if not, write to the 
 20  #  Free Software Foundation, Inc., 
 21  #  51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA 
 22  # #################################################################### 
 23   
 24  from common import * 
 25  from widget import Widget 
 26   
27 -class Slider(Widget):
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
154 - def _setScale(self, start, end):
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
162 - def _getScaleStart(self):
163 """getScaleStart(self) -> double""" 164 return self.real_widget.getScaleStart()
165
166 - def _setScaleStart(self, start):
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
173 - def _getScaleEnd(self):
174 """getScaleEnd(self) -> double""" 175 return self.real_widget.getScaleEnd()
176
177 - def _setScaleEnd(self, end):
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
184 - def _getValue(self):
185 """getValue(self) -> double""" 186 return self.real_widget.getValue()
187
188 - def _setValue(self, value):
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
195 - def _setMarkerLength(self, length):
196 """setMarkerLength(self, int length)""" 197 if type(length) != int: 198 raise RuntimeError("Slider only accepts int for Marker lenght") 199 self.real_widget.setMarkerLength(length)
200
201 - def _getMarkerLength(self):
202 """getMarkerLength(self) -> int""" 203 return self.real_widget.getMarkerLength()
204 marker_length = property(_getMarkerLength, _setMarkerLength) 205
206 - def _setOrientation(self, orientation):
207 """setOrientation(self, Orientation orientation)""" 208 self.real_widget.setOrientation(orientation)
209
210 - def _getOrientation(self):
211 """getOrientation(self) -> int""" 212 return self.real_widget.getOrientation()
213 orientation = property(_getOrientation, _setOrientation) 214
215 - def _setStepLength(self, length):
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
221 - def _getStepLength(self):
222 """getStepLength(self) -> double""" 223 return self.real_widget.getStepLength()
224 step_length = property(_getStepLength, _setStepLength)
225