~izidor/gtg/small_features

« back to all changes in this revision

Viewing changes to GTG/plugins/urgency_color/urgency_color.py

  • Committer: Bertrand Rousseau
  • Date: 2012-07-13 17:27:54 UTC
  • mfrom: (1181.5.10 urgency-color-api)
  • Revision ID: bertrand.rousseau@gmail.com-20120713172754-oiy09kbwngxuhukg
Merge fixes for bugs #906516, #1002160 (task urgency plugin), by Wolter Hellmund

Show diffs side-by-side

added added

removed removed

Lines of Context:
26
26
    PLUGIN_NAME = 'Urgency Color'
27
27
    DEFAULT_PREFS = {
28
28
        'reddays': 30,
29
 
        'color_green': '#cfff84',
30
 
        'color_yellow': '#ffed84',
31
 
        'color_red': '#ff9784'}
 
29
        'color_low': '#cfff84',
 
30
        'color_normal': '#ffed84',
 
31
        'color_high': '#ff9784',
 
32
        'color_overdue': '#b8b8b8'}
32
33
 
33
34
    def __init__(self):
34
35
        self._plugin_api = None
41
42
        self.prefs_load()
42
43
        self.prefs_init()
43
44
        # Set color function
 
45
        self._refresh_task_color()
 
46
 
 
47
    def _refresh_task_color(self):
44
48
        self._plugin_api.set_bgcolor_func(self.bgcolor)
45
49
 
46
50
    def _get_color(self, colindex):
47
51
        if colindex == 0:
48
 
            return self._pref_data['color_green']
 
52
            return self._pref_data['color_low']
49
53
        elif colindex == 1:
50
 
            return self._pref_data['color_yellow']
 
54
            return self._pref_data['color_normal']
51
55
        elif colindex == 2:
52
 
            return self._pref_data['color_red']
 
56
            return self._pref_data['color_high']
 
57
        elif colindex == 3:
 
58
            return self._pref_data['color_overdue']
53
59
        else:
54
60
            return None
55
61
 
67
73
                color = 1
68
74
            if daysleft <= reddays:
69
75
                color = 2
 
76
            if daysleft < 0:
 
77
                color = 3
70
78
            # This list should be implemented in the settings
71
79
            #print "Giving color"
72
80
            return self._get_color(color)
106
114
        #   Spin button
107
115
        self.spinbutton_reddays = self.builder.get_object('spinbutton_reddays')
108
116
 
109
 
        #   Colorbutton - RED
110
 
        self.colorbutton_red = self.builder.get_object('colorbutton_red')
111
 
 
112
 
        #   Colorbutton - YELLOW
113
 
        self.colorbutton_yellow = self.builder.get_object('colorbutton_yellow')
114
 
 
115
 
        #   Colorbutton - GREEN
116
 
        self.colorbutton_green = self.builder.get_object('colorbutton_green')
 
117
        #   Colorbutton - OVERDUE
 
118
        self.colorbutton_overdue = self.builder.get_object('colorbutton_overdue')
 
119
 
 
120
        #   Colorbutton - HIGH
 
121
        self.colorbutton_high = self.builder.get_object('colorbutton_high')
 
122
 
 
123
        #   Colorbutton - NORMAL
 
124
        self.colorbutton_normal = self.builder.get_object('colorbutton_normal')
 
125
 
 
126
        #   Colorbutton - LOW
 
127
        self.colorbutton_low = self.builder.get_object('colorbutton_low')
117
128
 
118
129
        #   Buttons
119
130
        self.button_apply = self.builder.get_object('button_apply')
132
143
                self.on_prefs_reset,
133
144
            'on_prefs_spinbutton_reddays_changed':
134
145
                self.on_prefs_spinbutton_reddays_changed,
135
 
            'on_prefs_colorbutton_red_changed':
136
 
                self.on_prefs_colorbutton_red_changed,
137
 
            'on_prefs_colorbutton_yellow_changed':
138
 
                self.on_prefs_colorbutton_yellow_changed,
139
 
            'on_prefs_colorbutton_green_changed':
140
 
                self.on_prefs_colorbutton_green_changed}
 
146
            'on_prefs_colorbutton_overdue_changed':
 
147
                self.on_prefs_colorbutton_overdue_changed,
 
148
            'on_prefs_colorbutton_high_changed':
 
149
                self.on_prefs_colorbutton_high_changed,
 
150
            'on_prefs_colorbutton_normal_changed':
 
151
                self.on_prefs_colorbutton_normal_changed,
 
152
            'on_prefs_colorbutton_low_changed':
 
153
                self.on_prefs_colorbutton_low_changed}
141
154
        self.builder.connect_signals(SIGNAL_CONNECTIONS_DIC)
142
155
 
143
156
    def prefs_update_widgets(self):
144
157
        """ Synchronizes the widgets with the data in _pref_data """
145
158
        # Spin button
146
159
        self.spinbutton_reddays.set_value(self._pref_data['reddays'])
147
 
        # Colorbutton - RED
148
 
        self.colorbutton_red.set_color( \
149
 
            gtk.gdk.color_parse(self._pref_data['color_red']))
150
 
        # Colorbutton - YELLOW
151
 
        self.colorbutton_yellow.set_color( \
152
 
            gtk.gdk.color_parse(self._pref_data['color_yellow']))
153
 
        # Colorbutton - GREEN
154
 
        self.colorbutton_green.set_color( \
155
 
            gtk.gdk.color_parse(self._pref_data['color_green']))
 
160
        # Colorbutton - OVERDUE
 
161
        self.colorbutton_overdue.set_color( \
 
162
            gtk.gdk.color_parse(self._pref_data['color_overdue']))
 
163
        # Colorbutton - HIGH
 
164
        self.colorbutton_high.set_color( \
 
165
            gtk.gdk.color_parse(self._pref_data['color_high']))
 
166
        # Colorbutton - NORMAL
 
167
        self.colorbutton_normal.set_color( \
 
168
            gtk.gdk.color_parse(self._pref_data['color_normal']))
 
169
        # Colorbutton - LOW
 
170
        self.colorbutton_low.set_color( \
 
171
            gtk.gdk.color_parse(self._pref_data['color_low']))
156
172
 
157
173
    def on_prefs_cancel(self, widget=None, data=None):
158
174
        self.prefs_update_widgets()
162
178
    def on_prefs_apply(self, widget=None, data=None):
163
179
        self._pref_data = self._pref_data_potential
164
180
        self.prefs_store()
 
181
        self._refresh_task_color()
165
182
        self.prefs_window.hide()
166
183
 
167
184
    def on_prefs_reset(self, widget=None, data=None):
176
193
        if not data or not isinstance(data, dict):
177
194
            self._pref_data = dict(self.DEFAULT_PREFS)
178
195
        else:
179
 
            self._pref_data = data
 
196
            # CORRECT NAMES FROM OLD PREFERENCES
 
197
            # This is a dirty fix and thus should be removed in a
 
198
            # distant future, when nobody has "red", "yellow" or "green"
 
199
            # settings
 
200
            namepairs = {'red':'high','yellow':'normal','green':'low'}
 
201
            for key,val in data.iteritems():
 
202
                for oldname,newname in namepairs.iteritems():
 
203
                    if key == "color_"+oldname:
 
204
                        data['color_'+newname] = data.pop(key)
 
205
            # Add new preferences where not present
 
206
            for setting in self.DEFAULT_PREFS.iterkeys():
 
207
                if setting not in data:
 
208
                    data[setting] = self.DEFAULT_PREFS[setting]
 
209
            self._pref_data = dict(data)
 
210
 
180
211
 
181
212
    def prefs_store(self):
182
213
        self._plugin_api.save_configuration_object( \
188
219
        self._pref_data_potential['reddays'] = \
189
220
            self.spinbutton_reddays.get_value()
190
221
 
191
 
    def on_prefs_colorbutton_red_changed(self, widget=None, data=None):
192
 
        self._pref_data_potential['color_red'] = \
193
 
            self.colorbutton_red.get_color().to_string()
194
 
 
195
 
    def on_prefs_colorbutton_yellow_changed(self, widget=None, data=None):
196
 
        self._pref_data_potential['color_yellow'] = \
197
 
            self.colorbutton_yellow.get_color().to_string()
198
 
 
199
 
    def on_prefs_colorbutton_green_changed(self, widget=None, data=None):
200
 
        self._pref_data_potential['color_green'] = \
201
 
            self.colorbutton_green.get_color().to_string()
 
222
    def on_prefs_colorbutton_overdue_changed(self, widget=None, data=None):
 
223
        self._pref_data_potential['color_overdue'] = \
 
224
            self.colorbutton_overdue.get_color().to_string()
 
225
 
 
226
    def on_prefs_colorbutton_high_changed(self, widget=None, data=None):
 
227
        self._pref_data_potential['color_high'] = \
 
228
            self.colorbutton_high.get_color().to_string()
 
229
 
 
230
    def on_prefs_colorbutton_normal_changed(self, widget=None, data=None):
 
231
        self._pref_data_potential['color_normal'] = \
 
232
            self.colorbutton_normal.get_color().to_string()
 
233
 
 
234
    def on_prefs_colorbutton_low_changed(self, widget=None, data=None):
 
235
        self._pref_data_potential['color_low'] = \
 
236
            self.colorbutton_low.get_color().to_string()