~gdesklets-desklet-team/gdesklets/0.36

« back to all changes in this revision

Viewing changes to config/ConfigFloat.py

  • Committer: Robert Pastierovic
  • Date: 2007-10-07 10:08:42 UTC
  • Revision ID: pastierovic@gmail.com-20071007100842-fdvp2vzmqgh1j87k
merged 0.3x branch and basic documentation and some other changes

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
from ConfigWidget import ConfigWidget
 
2
from utils.datatypes import *
 
3
 
 
4
import gtk
 
5
 
 
6
class ConfigFloat(ConfigWidget):
 
7
 
 
8
    def __init__(self, name, getter, setter, caller, int_only = False):
 
9
 
 
10
        self.__int_only = int_only
 
11
 
 
12
        ConfigWidget.__init__(self, name, getter, setter, caller)
 
13
 
 
14
        self._register_property("min", TYPE_FLOAT, self._setp_lhd,
 
15
                                self._getp, 0.0, doc = "Lower bound")
 
16
        self._register_property("max", TYPE_FLOAT, self._setp_lhd,
 
17
                                self._getp, 9999.0, doc = "Upper bound")
 
18
        self._register_property("digits", TYPE_INT, self._setp_lhd,
 
19
                                self._getp, 2,
 
20
                                doc = "Numbers of decimal digits")
 
21
        self._register_property("increment", TYPE_FLOAT, self._setp_increment,
 
22
                                self._getp, 1, doc = "Size of increments")
 
23
        self._register_property("value", TYPE_FLOAT, self._setp_value,
 
24
                                self._getp, 0.0, doc = "Value")
 
25
 
 
26
 
 
27
 
 
28
    def get_widgets(self):
 
29
 
 
30
        low = self.get_prop("min")
 
31
        high = self.get_prop("max")
 
32
        digits = self.get_prop("digits")
 
33
 
 
34
        self.__label = gtk.Label("")
 
35
        self.__label.show()
 
36
        entry = gtk.Entry()
 
37
        entry.show()
 
38
        align = gtk.Alignment(0.0, 0.5, 0.0, 0.0)
 
39
        align.show()
 
40
        align.add(self.__label)
 
41
 
 
42
        adjustment = gtk.Adjustment(0, low, high, 1, 1, 0)
 
43
        if (self.__int_only):
 
44
            self.__spin_button = gtk.SpinButton(adjustment, 1, 0)
 
45
        else:
 
46
            self.__spin_button = gtk.SpinButton(adjustment, 1, digits)
 
47
        self.__spin_button.set_numeric(True)
 
48
        self.__spin_button.show()
 
49
 
 
50
        self.__spin_button.connect("value-changed", self.__on_change)
 
51
 
 
52
        return (align, self.__spin_button)
 
53
 
 
54
 
 
55
    def __on_change(self, src):
 
56
 
 
57
        if (self.__int_only):
 
58
            value = src.get_value_as_int()
 
59
        else:
 
60
            value = src.get_value()
 
61
            
 
62
        self._set_config(value)
 
63
 
 
64
 
 
65
    def _set_enabled(self, value): self.__spin_button.set_sensitive(value)
 
66
    def _set_label(self, value): self.__label.set_text(value)
 
67
 
 
68
 
 
69
    def _setp_lhd(self, key, value):
 
70
 
 
71
        low, high = self.__spin_button.get_range()
 
72
        if (key == "min"):
 
73
            self.__spin_button.set_range(value, high)
 
74
        elif (key == "max"):
 
75
            self.__spin_button.set_range(low, value)
 
76
        elif (key == "digits"):
 
77
            self.__spin_button.set_digits(value)
 
78
 
 
79
        self._setp(key, value)
 
80
 
 
81
 
 
82
    def _setp_increment(self, key, value):
 
83
 
 
84
        self.__spin_button.set_increments(value, value * 10);
 
85
        self._setp(key, value)
 
86
 
 
87
    def _setp_value(self, key, value):
 
88
 
 
89
        self.__spin_button.set_value(value)
 
90
        self._setp(key, value)