Package screenlets :: Package options :: Module number_option
[hide private]
[frames] | no frames]

Source Code for Module screenlets.options.number_option

 1  #  
 2  # Copyright (C) 2009 Martin Owens (DoctorMO) <doctormo@gmail.com> 
 3  # 
 4  # This program is free software; you can redistribute it and/or modify 
 5  # it under the terms of the GNU General Public License as published by 
 6  # the Free Software Foundation; either version 3 of the License, or 
 7  # (at your option) any later version. 
 8  #  
 9  # This program is distributed in the hope that it will be useful, 
10  # but WITHOUT ANY WARRANTY; without even the implied warranty of 
11  # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the 
12  # GNU General Public License for more details. 
13  #  
14  # You should have received a copy of the GNU General Public License 
15  # along with this program; if not, write to the Free Software 
16  # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA 
17  #  
18  """ 
19  Integer and Float options, these classes will display a spin box. 
20  """ 
21   
22  import gtk, sys 
23   
24  from screenlets.options import _ 
25  from base import Option 
26   
27 -class IntOption(Option):
28 """An Option for integer options.""" 29 min = -100000 30 max = 100000 31 increment = 1 32
33 - def on_import(self, strvalue):
34 """When a integer is imported from the config.""" 35 try: 36 if strvalue[0]=='-': 37 return int(float(strvalue[1:])) * -1 38 return int(float(strvalue)) 39 except: 40 sys.stderr.write(_("Error during on_import - option: %s.\n") % self.name) 41 return 0 42 43 return int(strvalue)
44
45 - def on_export(self, value):
46 """When a string is exported to the config.""" 47 return str(value)
48
49 - def generate_widget(self, value):
50 """Generate a spin button for integer options""" 51 self.widget = gtk.SpinButton() 52 self.widget.set_increments(self.increment, int(self.max / self.increment)) 53 if self.min != None and self.max != None: 54 self.widget.set_range(self.min, self.max) 55 self.set_value(value) 56 self.widget.connect("value-changed", self.has_changed) 57 return self.widget
58
59 - def set_value(self, value):
60 """Set the int value, including the value of the widget.""" 61 self.value = value 62 self.widget.set_value(value)
63
64 - def has_changed(self, widget):
65 """Executed when the widget event kicks off.""" 66 self.value = int(widget.get_value()) 67 super(IntOption, self).has_changed()
68 69
70 -class FloatOption(IntOption):
71 """An option for float numbers.""" 72 digits = 0 73
74 - def on_import (self, strvalue):
75 """Called when FloatOption gets imported. Converts str to float.""" 76 if strvalue[0]=='-': 77 return float(strvalue[1:]) * -1.0 78 return float(strvalue)
79
80 - def generate_widget(self, value):
81 """Do the same as int but add the number of ditgits""" 82 super(FloatOption, self).generate_widget(value) 83 self.widget.set_digits(self.digits) 84 return self.widget
85
86 - def has_changed(self, widget):
87 """Executed when the widget event kicks off.""" 88 self.value = float(widget.get_value()) 89 super(IntOption, self).has_changed()
90