~ubuntu-branches/ubuntu/karmic/alarm-clock/karmic

« back to all changes in this revision

Viewing changes to alarm-clock/CheckAlarmThread.py

  • Committer: Bazaar Package Importer
  • Author(s): Marco Rodrigues
  • Date: 2008-12-12 16:06:12 UTC
  • mfrom: (7.1.2 sid)
  • Revision ID: james.westby@ubuntu.com-20081212160612-1260171ufoj0v3ww
Tags: 0.9.18-2
* debian/control:
  + Add gstreamer0.10-plugins-base to
    Depends. Closes: #485386.
* debian/watch:
  + Fix URL to new hosting address.

Show diffs side-by-side

added added

removed removed

Lines of Context:
7
7
import gtk
8
8
from gettext import gettext as _
9
9
class CheckAlarmThread(Thread):
10
 
        def __init__(self, status, main,StatusIcon,alarm_model, row, treesel, GUI, PREFIX):
 
10
        def __init__(self, status, main,StatusIcon,alarm_model, row, treesel, GUI, PREFIX, MainClass):
11
11
                Thread.__init__(self)
12
12
                self.setDaemon(True)
 
13
                self.MainClass = MainClass
13
14
                self.today = []
14
15
                self.CheckTodayAlarms()
15
16
                self.status = status
26
27
                self.RefreshList = False
27
28
                self.Removed = False
28
29
                self.x = 0
 
30
        
 
31
 
29
32
        def run(self):
30
33
                self.CheckOldAlarms()
31
34
 
38
41
                        self.status.push(0, time.strftime(_("Current time: %c")))
39
42
                        gtk.gdk.threads_leave() 
40
43
 
 
44
                        Count = 0
 
45
 
41
46
                        for tup in self.today:
 
47
                                Count += 1
42
48
                                if tup[0] == time.localtime().tm_hour and\
43
49
                                tup[1] == time.localtime().tm_min and\
44
50
                                time.localtime().tm_sec == 0:
45
51
                                        FileHandler = file(os.getenv("HOME")\
46
 
                                        + "/.config/alarm-clock/alarms")
 
52
                                        + "/.config/alarm-clock/alarms", 'r')
47
53
                                        AlarmContents = FileHandler.readlines()
48
54
                                        FileHandler.close()
49
55
                                        gtk.gdk.threads_enter()
50
 
                                        self.GUI().RunAlarm(eval(AlarmContents[tup[2]]))
 
56
                                        self.MainClass.UpdateList = False
 
57
                                        self.GUI().RunAlarm(eval(AlarmContents[tup[2]]), Count, self.RemoveOldAlarm,
 
58
                                        self.MainClass.LoadConfigFiles, self.MainClass.ChangeAlarmPrefs,
 
59
                                        self.ChangeUpdateList)
 
60
 
 
61
                                        if eval(AlarmContents[tup[2]])[2] == 0 and not eval(AlarmContents[tup[2]])[19]:
 
62
                                                self.RemoveOldAlarm(Count, True)
 
63
                                                self.MainClass.LoadConfigFiles()
 
64
 
51
65
                                        gtk.gdk.threads_leave()
52
66
                                        time.sleep(1)
 
67
                                        if not eval(AlarmContents[tup[2]])[19]:
 
68
                                                self.MainClass.UpdateList = True
53
69
 
54
70
                        if time.localtime().tm_hour == 0 and time.localtime().tm_min == 0 and time.localtime().tm_sec < 1 and self.RefreshList == False:
55
71
                                self.RefreshList = True
60
76
 
61
77
                        if self.RefreshList == True:
62
78
                                gtk.gdk.threads_enter()
63
 
                                self.LoadConfigFiles()
 
79
                                self.MainClass.LoadConfigFiles()
64
80
                                gtk.gdk.threads_leave()
65
81
                                self.RefreshList = False
66
82
 
71
87
                        self.CheckTodayBirthdays(self.st)
72
88
                        self.CheckTodayAlarms()
73
89
 
74
 
 
75
 
        def CheckOldAlarms(self):
 
90
        def ChangeUpdateList(self, Value):
 
91
                self.MainClass.UpdateList = Value
 
92
 
 
93
        def CheckOldAlarms(self, obj=None):
 
94
                if self.MainClass.UpdateList == False:
 
95
                        return
 
96
 
 
97
 
76
98
                self.AlFile = file(os.getenv("HOME") + "/.config/alarm-clock/alarms", "r")
77
99
 
 
100
 
78
101
                self.x = self.x + 1
79
102
                if self.x == 4:
80
103
                        if self.Removed == True:
94
117
                                continue
95
118
 
96
119
 
97
 
 
98
120
                        self.Date = self.OldLine[3]
99
121
                        self.Time = self.OldLine[1]
100
122
 
115
137
                                self.RemoveOldAlarm(self.Cnt)
116
138
                                self.Cnt = self.Cnt + 1
117
139
                                self.Removed = True
 
140
                                self.MainClass.LoadConfigFiles()
118
141
                                continue
119
142
 
120
143
                        if self.Diff.days == 0:
122
145
                                        self.RemoveOldAlarm(self.Cnt)
123
146
                                        self.Cnt = self.Cnt + 1
124
147
                                        self.Removed = True
 
148
                                        self.MainClass.LoadConfigFiles()
125
149
                                        continue
126
150
                
127
151
 
128
152
                        self.Cnt = self.Cnt + 1                 
129
153
 
130
154
 
131
 
        def RemoveOldAlarm(self,no):
 
155
        def RemoveOldAlarm(self,no, nosave = False):
132
156
                self.row = no
133
157
                self.fbuf = file(os.getenv("HOME") + "/.config/alarm-clock/alarms", "r")
134
158
                self.lines = self.fbuf.readlines()
137
161
                for line in self.lines:
138
162
                        if self.counter == self.row:
139
163
                                self.counter = self.counter + 1
140
 
                                OldFile = file(os.getenv("HOME") + '/.config/alarm-clock/old-alarms', 'a')
141
 
                                print >> OldFile, line
142
 
                                OldFile.close()
 
164
                                if not nosave == True:
 
165
                                        OldFile = file(os.getenv("HOME") + '/.config/alarm-clock/old-alarms', 'a')
 
166
                                        OldFile.write(line)
 
167
                                        OldFile.close()
143
168
                                continue
144
169
                        self.new_lines.append(line)
145
170
                        self.counter = self.counter + 1
153
178
                        self.fbuf.write(line)
154
179
                self.fbuf.close()
155
180
 
156
 
 
157
 
 
158
 
        def ParseTupletToList(self,line):
159
 
                self.string = eval(line)
160
 
 
161
 
 
162
 
                self.weekdays = self.string[4][0]
163
 
                self.months = self.string[4][1]
164
 
 
165
 
                self.t_weekday = time.localtime().tm_wday
166
 
                self.t_month = time.localtime().tm_mon
167
 
                self.t_day = time.localtime().tm_mday
168
 
 
169
 
 
170
 
 
171
 
 
172
 
 
173
 
 
174
 
                self.t = re.search('(\d+):(\d+)', self.string[1])
175
 
 
176
 
                self.h = "%s" % self.t.group(1)
177
 
 
178
 
                if int (self.t.group(2)) < 10:
179
 
                        self.m = "0%s" % self.t.group(2)
180
 
                else:
181
 
                        self.m = "%s" % self.t.group(2)
182
 
 
183
 
                self.time = "BAD"
184
 
 
185
 
 
186
 
 
187
 
 
188
 
                self.Good = False
189
 
                self.Ex = False
190
 
                self.weekdays = self.string[4][0]
191
 
                self.months = self.string[4][1]
192
 
 
193
 
                if self.weekdays[self.t_weekday] == True and self.months[self.t_month - 1] == True:
194
 
                        self.Good = True
195
 
 
196
 
                for t in self.string[5]:
197
 
                        if t[0] == self.t_month and t[1] == self.t_day:         
198
 
                                self.Good = False
199
 
                                self.Ex = True
200
 
 
201
 
 
202
 
 
203
 
 
204
 
                if self.Good == True and self.string[2] == 1:
205
 
                        self.time = _("%s:%s - Today") % (self.h, self.m)
206
 
                else:
207
 
                        if self.Ex == True:
208
 
                                self.time = _("%s:%s - Cancelled") % (self.h, self.m)
209
 
                        else:
210
 
                                self.time = "%s:%s" % (self.h, self.m)
211
 
 
212
 
 
213
 
 
214
 
 
215
 
 
216
 
 
217
 
 
218
 
 
219
 
 
220
 
 
221
 
                icon = None
222
 
                        
223
 
 
224
 
                if self.string[2] == 1:
225
 
                        self.AlarmType = _("Scheduled")
226
 
                        self.datetime = "%s" % self.time
227
 
                        icon = self.MainWindowGlade.get_widget('main_window').render_icon('gtk-refresh', gtk.ICON_SIZE_SMALL_TOOLBAR)
228
 
                else:
229
 
                        self.AlarmType = _("Single")
230
 
                        self.date_data = re.search('(\d+)/(\d+)/(\d+)', self.string[3])
231
 
                        icon = self.MainWindowGlade.get_widget('main_window').render_icon('gtk-jump-to', gtk.ICON_SIZE_SMALL_TOOLBAR)
232
 
 
233
 
 
234
 
                        if int(self.date_data.group(3)) < 10:
235
 
                                self.day = "0%s" % self.date_data.group(3)
236
 
                        else:
237
 
                                self.day = self.date_data.group(3)
238
 
 
239
 
                        if int (self.date_data.group(2)) < 9:
240
 
 
241
 
                                self.month = "0%i" % (int(self.date_data.group(2)) + 1)
242
 
                        else:
243
 
                                self.month = "%i" % (int(self.date_data.group(2)) + 1)
244
 
                        self.datetime = "%s %s/%s/%s" % (self.time, self.day, self.month, self.date_data.group(1))                      
245
 
 
246
 
                self.alarm_model.append([self.AlarmType, icon, self.datetime, self.string[0]])
247
 
 
248
 
 
249
 
 
250
 
 
251
 
 
252
 
 
253
 
 
254
 
        def LoadConfigFiles(self):
255
 
 
256
 
                if os.path.isdir(os.getenv("HOME") + "/.config/alarm-clock/") == False:
257
 
                        os.mkdir (os.getenv("HOME") + "/.config/alarm-clock")
258
 
 
259
 
                if os.path.isfile(os.getenv("HOME") + "/.config/alarm-clock/configuration") == False:
260
 
                        self.fc = file(os.getenv("HOME") + "/.config/alarm-clock/configuration", "w")
261
 
                        print >> self.fc, [MainWindow.get_position(), MainWindow.get_size()]
262
 
                        self.fc.close()
263
 
                if os.path.isfile(os.getenv("HOME") + "/.config/alarm-clock/alarms") == False:
264
 
                        self.af = file(os.getenv("HOME") + "/.config/alarm-clock/alarms", "w")
265
 
                        self.ClearAlarmValues()
266
 
                        self.af.close()
267
 
                if os.path.isfile(os.getenv("HOME") + "/.config/alarm-clock/templates") == False:
268
 
                        self.af = file(os.getenv("HOME") + "/.config/alarm-clock/templates", "w")
269
 
                        self.af.close()
270
 
 
271
 
 
272
 
                self.ConfigFile = file(os.getenv("HOME") + "/.config/alarm-clock/configuration", "rw")
273
 
                self.AlarmFile = file(os.getenv("HOME") + "/.config/alarm-clock/alarms", "rw")
274
 
 
275
 
                for line in self.ConfigFile:
276
 
                        self.configlist = eval(line)
277
 
 
278
 
                self.alarm_model.clear()
279
 
                self.i = 0
280
 
                for line in self.AlarmFile:
281
 
                        self.i = self.i + 1
282
 
                        self.ParseTupletToList(line)
283
 
                
284
 
 
285
 
 
286
 
 
287
 
 
288
 
                if self.i == 0:
289
 
                        self.MainWindowGlade.get_widget('notebook').set_current_page(1)
290
 
                        self.MainWindowGlade.get_widget('remove_alarm_toolbutton').set_sensitive(False)
291
 
                        self.MainWindowGlade.get_widget('test_alarm_toolbutton').set_sensitive(False)
292
 
                        self.MainWindowGlade.get_widget('alarm_properties_toolbutton').set_sensitive(False)
293
 
                        self.MainWindowGlade.get_widget('edit_remove').set_sensitive(False)
294
 
 
295
 
                else:
296
 
                        self.MainWindowGlade.get_widget('notebook').set_current_page(0)
297
 
                        self.MainWindowGlade.get_widget('remove_alarm_toolbutton').set_sensitive(True)
298
 
                        self.MainWindowGlade.get_widget('alarm_properties_toolbutton').set_sensitive(True)
299
 
                        self.MainWindowGlade.get_widget('edit_remove').set_sensitive(True)
300
 
                        self.MainWindowGlade.get_widget('test_alarm_toolbutton').set_sensitive(True)
301
 
 
302
 
 
303
 
                if self.row > 0:
304
 
                        if self.row >= self.i:
305
 
                                self.TreeSelection.select_path(self.i - 1,)
306
 
                        else:
307
 
                                self.TreeSelection.select_path(self.row,)
308
 
                if self.row == 0:
309
 
                        self.TreeSelection.select_path(0,)
310
 
 
311
181
        def CheckTodayBirthdays(self, StatusIcon):
312
182
                self.BirthdaysNames = []
313
183
                self.BDay = False
337
207
                        StatusIcon.set_from_file(self.Prefix + '/scalable/alarm-clock.svg')
338
208
 
339
209
        def CheckTodayAlarms(self):
 
210
 
340
211
                self.today = []
341
212
                self.f = file(os.getenv("HOME") + "/.config/alarm-clock/alarms")
342
213
 
388
259
                        self.linenumber = self.linenumber + 1
389
260
 
390
261
 
391
 
 
392
 
 
393