176
202
self.Toolbar.unset_style()
178
204
self.ConnectSignals()
180
AlarmThread = CheckAlarmThread.CheckAlarmThread\
205
self.UpdateList = True
206
self.AlarmThread = CheckAlarmThread.CheckAlarmThread\
181
207
(MainWindowGlade.get_widget('status_bar'),\
182
208
MainWindowGlade,StatusIcon,self.alarm_model, self.row,\
183
self.MainTreeViewSelection, StartGUI, PREFIX)
209
self.MainTreeViewSelection, StartGUI, PREFIX, self)
211
self.AlarmThread.start()
187
213
pynotify.init("Alarm-Clock")
189
215
def AddTree(self):
192
216
self.alarm_model = gtk.ListStore(gobject.TYPE_STRING, gtk.gdk.Pixbuf, gobject.TYPE_STRING, gobject.TYPE_STRING)
194
self.MainTreeView = gtk.TreeView(self.alarm_model)
195
self.AlarmScrolledWindow = MainWindowGlade.get_widget('alarms_main_scroll')
196
self.AlarmScrolledWindow.add(self.MainTreeView)
197
self.MainTreeView.show()
199
self.MainTreeView.set_enable_search(True)
200
self.MainTreeView.set_search_column(2)
204
self.summary_renderer = gtk.CellRendererText()
205
self.summary_renderer.set_property('editable', True)
206
self.summary_column = gtk.TreeViewColumn(_("Name"), self.summary_renderer, text=3)
207
self.summary_column.set_expand(True)
212
self.type_renderer = gtk.CellRendererPixbuf()
213
self.type_renderer_text = gtk.CellRendererText()
218
MainTreeView = gtk.TreeView(self.alarm_model)
219
AlarmScrolledWindow = MainWindowGlade.get_widget('alarms_main_scroll')
220
AlarmScrolledWindow.add(MainTreeView)
223
MainTreeView.set_enable_search(True)
224
MainTreeView.set_search_column(2)
228
summary_renderer = gtk.CellRendererText()
229
summary_renderer.set_property('editable', True)
230
self.summary_column = gtk.TreeViewColumn(_("Name"), summary_renderer, text=3)
235
type_renderer = gtk.CellRendererPixbuf()
236
type_renderer_text = gtk.CellRendererText()
215
238
self.type_column = gtk.TreeViewColumn(_("Type"))
217
self.type_column.pack_start(self.type_renderer, expand=False)
218
self.type_column.add_attribute(self.type_renderer, 'pixbuf', 1)
220
self.type_column.pack_start(self.type_renderer_text, expand=True)
221
self.type_column.add_attribute(self.type_renderer_text, 'text', 0)
225
self.type_column.set_min_width(140)
229
self.date_renderer = gtk.CellRendererText()
230
self.date_column = gtk.TreeViewColumn(_("Date and Time"), self.date_renderer, text=2)
231
self.date_column.set_min_width(180)
235
self.MainTreeView.append_column(self.summary_column)
236
self.MainTreeView.append_column(self.type_column)
237
self.MainTreeView.append_column(self.date_column)
238
self.MainTreeViewSelection = self.MainTreeView.get_selection()
240
self.type_column.pack_start(type_renderer, expand=False)
241
self.type_column.add_attribute(type_renderer, 'pixbuf', 1)
243
self.type_column.pack_start(type_renderer_text, expand=True)
244
self.type_column.add_attribute(type_renderer_text, 'text', 0)
250
date_renderer = gtk.CellRendererText()
251
self.date_column = gtk.TreeViewColumn(_("Date and Time"), date_renderer, text=2)
257
# time_remaining_renderer = gtk.CellRendererText()
258
# self.time_remaining_column = gtk.TreeViewColumn(_("Time remaining"), time_remaining_renderer, text=3)
263
SizesFile = file(os.getenv("HOME") + "/.config/alarm-clock/columns", "r")
264
Sizes = eval(SizesFile.readlines()[0])
267
Sizes = [150, 150, 100, 100]
268
self.summary_column.set_expand(True)
278
MainTreeView.append_column(self.summary_column)
279
self.summary_column.set_sizing(gtk.TREE_VIEW_COLUMN_FIXED)
280
self.summary_column.set_fixed_width(Sizes[0])
281
self.summary_column.set_resizable(True)
282
self.summary_column.set_expand(False)
285
MainTreeView.append_column(self.type_column)
286
self.type_column.set_sizing(gtk.TREE_VIEW_COLUMN_FIXED)
287
self.type_column.set_fixed_width(Sizes[1])
288
self.type_column.set_resizable(True)
291
MainTreeView.append_column(self.date_column)
292
self.date_column.set_sizing(gtk.TREE_VIEW_COLUMN_FIXED)
293
self.date_column.set_fixed_width(Sizes[2])
294
self.date_column.set_resizable(True)
297
# MainTreeView.append_column(self.time_remaining_column)
298
# self.time_remaining_column.set_sizing(gtk.TREE_VIEW_COLUMN_FIXED)
299
# self.time_remaining_column.set_fixed_width(Sizes[0])
300
# self.time_remaining_column.set_resizable(True)
307
self.MainTreeViewSelection = MainTreeView.get_selection()
240
self.MainTreeView.connect("button_press_event", self.MainTreeButton)
241
self.MainTreeView.connect("key_press_event", self.MainTreeKey)
242
self.summary_renderer.connect("edited", self.EditingCell)
309
MainTreeView.connect("button_press_event", self.MainTreeButton)
310
MainTreeView.connect("key_press_event", self.MainTreeKey)
311
summary_renderer.connect("edited", self.EditingCell)
244
313
def EditingCell(self, Widget, RowNumber, NewValue):
245
314
AlarmsFile = file(os.getenv("HOME") + "/.config/alarm-clock/alarms", "r")
289
356
if button.type == gtk.gdk._2BUTTON_PRESS:
290
357
self.ChangeAlarmPrefs(None)
291
358
if button.button == 3:
292
self.pop = gtk.Menu()
294
self.add_alarm = gtk.ImageMenuItem(_("Add new alarm..."), False)
295
self.add_image = gtk.Image()
296
self.add_image.set_from_stock("gtk-add", gtk.ICON_SIZE_MENU)
297
self.add_alarm.set_image(self.add_image)
299
self.add_counter = gtk.ImageMenuItem(_("Add new counter..."), False)
300
self.add_cntr_image = gtk.Image()
301
self.add_cntr_image.set_from_stock("gtk-add", gtk.ICON_SIZE_MENU)
302
self.add_counter.set_image(self.add_cntr_image)
304
self.sep1 = gtk.SeparatorMenuItem()
305
self.sep2 = gtk.SeparatorMenuItem()
307
self.remove_alarm = gtk.ImageMenuItem(_("Remove this alarm"), False)
308
self.remove_image = gtk.Image()
309
self.remove_image.set_from_stock("gtk-remove", gtk.ICON_SIZE_MENU)
310
self.remove_alarm.set_image(self.remove_image)
312
self.alarm_properties = gtk.ImageMenuItem("gtk-properties", False)
315
self.pop.add(self.add_alarm)
316
self.pop.add(self.add_counter)
317
self.pop.add(self.sep1)
318
self.pop.add(self.remove_alarm)
319
self.pop.add(self.sep2)
320
self.pop.add(self.alarm_properties)
323
self.add_alarm.connect("activate", self.AddAlarmDialog)
324
self.add_counter.connect("activate", self.AddSimpleCounterDialog)
325
self.remove_alarm.connect("activate", self.RemoveAlarmDialog)
326
self.alarm_properties.connect("activate", self.ChangeAlarmPrefs)
329
self.pop.popup(None, None, None, button.button, button.time)
361
add_alarm = gtk.ImageMenuItem(_("Add new alarm..."), False)
362
add_image = gtk.Image()
363
add_image.set_from_stock("gtk-add", gtk.ICON_SIZE_MENU)
364
add_alarm.set_image(add_image)
366
add_counter = gtk.ImageMenuItem(_("Add new counter..."), False)
367
add_cntr_image = gtk.Image()
368
add_cntr_image.set_from_stock("gtk-add", gtk.ICON_SIZE_MENU)
369
add_counter.set_image(add_cntr_image)
371
sep1 = gtk.SeparatorMenuItem()
372
sep2 = gtk.SeparatorMenuItem()
374
remove_alarm = gtk.ImageMenuItem(_("Remove this alarm"), False)
375
remove_image = gtk.Image()
376
remove_image.set_from_stock("gtk-remove", gtk.ICON_SIZE_MENU)
377
remove_alarm.set_image(remove_image)
379
alarm_properties = gtk.ImageMenuItem("gtk-properties", False)
385
pop.add(remove_alarm)
387
pop.add(alarm_properties)
390
add_alarm.connect("activate", self.AddAlarmDialog)
391
add_counter.connect("activate", self.AddSimpleCounterDialog)
392
remove_alarm.connect("activate", self.RemoveAlarmDialog)
393
alarm_properties.connect("activate", self.ChangeAlarmPrefs)
396
pop.popup(None, None, None, button.button, button.time)
331
398
def MainTreeKey (self,widget,key):
332
399
key = gtk.gdk.keyval_name(key.keyval)
336
403
if (key == "Return" or key == "KP_Return"):
337
404
self.ChangeAlarmPrefs(None)
406
def ShowMissedAlarms(self, widget):
407
AlarmModel = gtk.ListStore(gobject.TYPE_STRING, gtk.gdk.Pixbuf, gobject.TYPE_STRING, gobject.TYPE_STRING)
410
AlarmFile = file(os.getenv("HOME") + "/.config/alarm-clock/old-alarms", "r")
412
for line in AlarmFile:
414
self.ParseTupletToList(line, AlarmModel)
418
MissedGlade = gtk.glade.XML(PREFIX + '/glade/main.glade', 'missed_alarms_dialog')
419
MissedWindow = MissedGlade.get_widget('missed_alarms_dialog')
420
MissedTree = MissedGlade.get_widget('missed_tree')
422
MissedWindow.set_transient_for(MainWindow)
424
self.summary_renderer = gtk.CellRendererText()
425
self.summary_renderer.set_property('editable', True)
426
self.summary_column = gtk.TreeViewColumn(_("Name"), self.summary_renderer, text=3)
427
self.summary_column.set_expand(True)
432
self.type_renderer = gtk.CellRendererPixbuf()
433
self.type_renderer_text = gtk.CellRendererText()
435
self.type_column = gtk.TreeViewColumn(_("Type"))
437
self.type_column.pack_start(self.type_renderer, expand=False)
438
self.type_column.add_attribute(self.type_renderer, 'pixbuf', 1)
440
self.type_column.pack_start(self.type_renderer_text, expand=True)
441
self.type_column.add_attribute(self.type_renderer_text, 'text', 0)
445
self.type_column.set_min_width(140)
449
self.date_renderer = gtk.CellRendererText()
450
self.date_column = gtk.TreeViewColumn(_("Date and Time"), self.date_renderer, text=2)
451
self.date_column.set_min_width(180)
455
MissedTree.append_column(self.summary_column)
456
MissedTree.append_column(self.type_column)
457
MissedTree.append_column(self.date_column)
474
if len(AlarmModel) == 0:
475
MissedGlade.get_widget('clear_button').set_sensitive(False)
478
MissedTree.set_model(AlarmModel)
480
self.Model = AlarmModel
482
MissedWindow.set_icon_from_file(PREFIX + '/scalable/alarm-clock.svg')
484
Signals = { "clear_alarms" : self.ClearOld,
485
"close_old" : self.CloseOld }
487
MissedGlade.signal_autoconnect(Signals)
491
def ClearOld(self, button):
492
button.set_sensitive(False)
495
os.remove(os.getenv("HOME") + "/.config/alarm-clock/old-alarms")
500
def CloseOld(self, button):
501
button.get_toplevel().destroy()
503
def ReportBug(self, menu):
504
os.system('xdg-open \"https://bugs.launchpad.net/alarmclock\"')
340
506
def ConnectSignals(self):
341
507
self.Signals = { "show_about" : self.ShowAboutDialog,
753
954
# Saving changes!
755
956
self.AlarmBuffer[0] = self.NameEntry.get_text()
756
self.AlarmBuffer[1] = "%i:%i" % (self.AlarmProps.get_widget('alarm_props_hour_spin').get_value(), self.AlarmProps.get_widget('alarm_props_minute_spin').get_value())
958
if os.path.exists(os.getenv("HOME") + "/.config/alarm-clock/twelve"):
959
AMPM = self.TimeCombo.get_active()
960
Hour = self.AlarmProps.get_widget('alarm_props_hour_spin').get_value()
961
Min = self.AlarmProps.get_widget('alarm_props_minute_spin').get_value()
964
self.AlarmBuffer[1] = "%i:%i" % (12, Min)
966
self.AlarmBuffer[1] = "%i:%i" % (Hour + 12, Min)
969
self.AlarmBuffer[1] = "%i:%i" % (0, Min)
971
self.AlarmBuffer[1] = "%i:%i" % (Hour, Min)
972
if not os.path.exists(os.getenv("HOME") + "/.config/alarm-clock/twelve"):
973
self.AlarmBuffer[1] = "%i:%i" % (self.AlarmProps.get_widget('alarm_props_hour_spin').get_value(), self.AlarmProps.get_widget('alarm_props_minute_spin').get_value())
757
978
if self.SingleRadio.get_active():
758
979
self.AlarmBuffer[2] = 0
759
980
if self.ScheduleRadio.get_active():
855
1076
# Saving changes!
857
1078
self.AlarmBuffer[0] = self.NameEntry.get_text()
858
self.AlarmBuffer[1] = "%i:%i" % (self.AlarmProps.get_widget('alarm_props_hour_spin').get_value(), self.AlarmProps.get_widget('alarm_props_minute_spin').get_value())
1080
if os.path.exists(os.getenv("HOME") + "/.config/alarm-clock/twelve"):
1081
AMPM = self.TimeCombo.get_active()
1082
Hour = self.AlarmProps.get_widget('alarm_props_hour_spin').get_value()
1083
Min = self.AlarmProps.get_widget('alarm_props_minute_spin').get_value()
1086
self.AlarmBuffer[1] = "%i:%i" % (12, Min)
1088
self.AlarmBuffer[1] = "%i:%i" % (Hour + 12, Min)
1091
self.AlarmBuffer[1] = "%i:%i" % (0, Min)
1093
self.AlarmBuffer[1] = "%i:%i" % (Hour, Min)
1096
if not os.path.exists(os.getenv("HOME") + "/.config/alarm-clock/twelve"):
1097
self.AlarmBuffer[1] = "%i:%i" % (self.AlarmProps.get_widget('alarm_props_hour_spin').get_value(), self.AlarmProps.get_widget('alarm_props_minute_spin').get_value())
859
1102
if self.SingleRadio.get_active():
860
1103
self.AlarmBuffer[2] = 0
861
1104
if self.ScheduleRadio.get_active():
903
1146
self.RefreshTemplateList()
904
1147
self.TemplateSelection.select_path(self.row,)
906
def StopTheSound(self,obj):
907
MainWindowGlade.get_widget('stop_sound').set_sensitive(False)
1149
def StopTheSound(self, obj = None, x = None):
1150
if type(obj) == bool:
1152
MainWindowGlade.get_widget('stop_sound').set_sensitive(True)
1154
MainWindowGlade.get_widget('stop_sound').set_sensitive(False)
908
1155
FadeStopped = True
909
1156
PlayerInstance.set_state(gst.STATE_NULL)
910
1157
PlayerInstance.set_property("volume", 0)
1158
StatusIcon.set_blinking(False)
913
1161
def StatusClicked(self,obj):
1162
if StatusIcon.get_blinking() == True:
1163
StatusIcon.set_blinking(False)
914
1167
if self.main_hidden:
915
1169
self.fc = file(os.getenv("HOME") + "/.config/alarm-clock/configuration", "r")
916
1170
self.Pos = self.fc.readline()
918
self.Pos = eval(self.Pos)
919
MainWindow.move(self.Pos[0][0], self.Pos[0][1])
920
MainWindow.resize(self.Pos[1][0], self.Pos[1][1])
1173
self.Pos = eval(self.Pos)
1174
MainWindow.move(self.Pos[0][0], self.Pos[0][1])
1175
MainWindow.resize(self.Pos[1][0], self.Pos[1][1])
921
1178
MainWindow.present()
922
1179
self.main_hidden = False
928
1185
self.main_hidden = True
930
1187
def StatusPopup(self,obj,v1,v2):
931
self.pop = gtk.Menu()
933
self.show_win = gtk.CheckMenuItem(_("Show main window on screen"), True)
934
self.show_win.set_active(self.main_hidden == False)
936
self.add_alarm = gtk.ImageMenuItem(_("Add new alarm..."), False)
937
self.add_image = gtk.Image()
938
self.add_image.set_from_stock("gtk-add", gtk.ICON_SIZE_MENU)
939
self.add_alarm.set_image(self.add_image)
941
self.add_counter = gtk.ImageMenuItem(_("Add new counter..."), False)
942
self.add_cntr_image = gtk.Image()
943
self.add_cntr_image.set_from_stock("gtk-add", gtk.ICON_SIZE_MENU)
944
self.add_counter.set_image(self.add_cntr_image)
1191
show_win = gtk.CheckMenuItem(_("Show main window on screen"), True)
1192
show_win.set_active(self.main_hidden == False)
1194
add_alarm = gtk.ImageMenuItem(_("Add new alarm..."), False)
1195
add_image = gtk.Image()
1196
add_image.set_from_stock("gtk-add", gtk.ICON_SIZE_MENU)
1197
add_alarm.set_image(add_image)
1199
add_counter = gtk.ImageMenuItem(_("Add new counter..."), False)
1200
add_cntr_image = gtk.Image()
1201
add_cntr_image.set_from_stock("gtk-add", gtk.ICON_SIZE_MENU)
1202
add_counter.set_image(add_cntr_image)
948
self.sep1 = gtk.SeparatorMenuItem()
949
self.sep2 = gtk.SeparatorMenuItem()
950
self.quit_a = gtk.ImageMenuItem("gtk-quit", False)
952
self.pop.add(self.show_win)
953
self.pop.add(self.sep1)
954
self.pop.add(self.add_alarm)
955
self.pop.add(self.add_counter)
956
self.pop.add(self.sep2)
957
self.pop.add(self.quit_a)
960
self.quit_a.connect("activate", self.QuitApplication)
961
self.add_alarm.connect("activate", self.AddAlarmDialog)
962
self.show_win.connect("activate", self.StatusClicked)
963
self.add_counter.connect("activate", self.AddSimpleCounterDialog)
966
self.pop.popup(None, None, gtk.status_icon_position_menu, v1, v2, StatusIcon)
1206
sep1 = gtk.SeparatorMenuItem()
1207
sep2 = gtk.SeparatorMenuItem()
1208
quit_a = gtk.ImageMenuItem("gtk-quit", False)
1213
pop.add(add_counter)
1218
quit_a.connect("activate", self.QuitApplication)
1219
add_alarm.connect("activate", self.AddAlarmDialog)
1220
show_win.connect("activate", self.StatusClicked)
1221
add_counter.connect("activate", self.AddSimpleCounterDialog)
1224
pop.popup(None, None, gtk.status_icon_position_menu, v1, v2, StatusIcon)
968
1226
def ShowAboutDialog(self,obj):
969
self.AboutDialog = gtk.AboutDialog()
970
self.AboutDialog.set_name (_("Alarm Clock"))
971
self.AboutDialog.set_version(Version.get_version())
972
self.AboutDialog.set_copyright(_("(c) 2008 Tomasz Sałaciński\n"
1227
AboutDialog = gtk.AboutDialog()
1228
AboutDialog.set_name (_("Alarm Clock"))
1229
AboutDialog.set_version(Version.get_version())
1230
AboutDialog.set_copyright(_("(c) 2008 Tomasz Sałaciński\n"
973
1231
"<tsalacinski@gmail.com>\n"
975
1233
"For Kamila:)"))
976
self.AboutDialog.set_icon_from_file(PREFIX + '/scalable/alarm-clock.svg')
977
self.AboutDialog.set_transient_for(MainWindow)
978
self.AboutDialog.set_position(gtk.WIN_POS_CENTER_ON_PARENT)
979
self.AboutDialog.set_website("http://www.alarm-clock.54.pl")
980
self.Authors = [_("Programming"), "\tTomasz Sałaciński", _("Packaging and a lot of help"), "\tMarco Rodrigues"]
981
self.AboutDialog.set_authors(self.Authors)
982
self.LogoPixbuf = gtk.gdk.pixbuf_new_from_file(PREFIX + '/scalable/alarm-clock.svg')
983
self.AboutDialog.set_logo(self.LogoPixbuf)
1234
AboutDialog.set_icon_from_file(PREFIX + '/scalable/alarm-clock.svg')
1235
AboutDialog.set_transient_for(MainWindow)
1236
AboutDialog.set_position(gtk.WIN_POS_CENTER_ON_PARENT)
1237
AboutDialog.set_website("http://www.alarm-clock.54.pl")
1238
Authors = [_("Programming"), "\tTomasz Sałaciński", _("Packaging and a lot of help"), "\tMarco Rodrigues"]
1239
AboutDialog.set_authors(Authors)
1240
LogoPixbuf = gtk.gdk.pixbuf_new_from_file(PREFIX + '/scalable/alarm-clock.svg')
1241
AboutDialog.set_logo(LogoPixbuf)
986
1244
Alarm Clock is free software; you can redistribute it and/or modify
987
1245
it under the terms of the GNU General Public License as published by
988
1246
the Free Software Foundation; either version 2 of the License, or
1019
1276
def QuitApplication(self,obj):
1020
1277
self.fc = file(os.getenv("HOME") + "/.config/alarm-clock/configuration", "w")
1021
1278
print >> self.fc, [MainWindow.get_position(), MainWindow.get_size()]
1279
self.SizesFile = file(os.getenv("HOME") + "/.config/alarm-clock/columns", "w")
1281
# print >> self.SizesFile, [self.summary_column.get_width(), self.type_column.get_width(),
1282
# self.date_column.get_width(), self.time_remaining_column.get_width()]
1284
print >> self.SizesFile, [self.summary_column.get_width(), self.type_column.get_width(),
1285
self.date_column.get_width(), 0]
1287
self.SizesFile.close()
1289
os.remove(os.getenv("HOME") + "/.config/alarm-clock/lock")
1022
1293
self.fc.close()
1295
TerminalFile = file(os.getenv("HOME") + "/.config/alarm-clock/terminal", "w")
1296
TerminalFile.write(self.TerminalCommand)
1297
TerminalFile.close()
1023
1301
PlayerInstance.set_state(gst.STATE_NULL)
1024
1302
gtk.gdk.threads_leave()
1025
1303
gtk.main_quit()
1027
def ChangeAlarmPrefs(self,obj):
1305
def ChangeAlarmPrefs(self,obj, HaveNumber = None):
1028
1306
self.LoadCurrentAlarm()
1029
1307
self.value = self.AlarmPrefs().run()
1032
1310
# Saving changes!
1034
1312
self.AlarmBuffer[0] = self.NameEntry.get_text()
1035
self.AlarmBuffer[1] = "%i:%i" % (self.AlarmProps.get_widget('alarm_props_hour_spin').get_value(), self.AlarmProps.get_widget('alarm_props_minute_spin').get_value())
1314
if os.path.exists(os.getenv("HOME") + "/.config/alarm-clock/twelve"):
1315
AMPM = self.TimeCombo.get_active()
1316
Hour = self.AlarmProps.get_widget('alarm_props_hour_spin').get_value()
1317
Min = self.AlarmProps.get_widget('alarm_props_minute_spin').get_value()
1320
self.AlarmBuffer[1] = "%i:%i" % (12, Min)
1322
self.AlarmBuffer[1] = "%i:%i" % (Hour + 12, Min)
1325
self.AlarmBuffer[1] = "%i:%i" % (0, Min)
1327
self.AlarmBuffer[1] = "%i:%i" % (Hour, Min)
1330
if not os.path.exists(os.getenv("HOME") + "/.config/alarm-clock/twelve"):
1331
self.AlarmBuffer[1] = "%i:%i" % (self.AlarmProps.get_widget('alarm_props_hour_spin').get_value(), self.AlarmProps.get_widget('alarm_props_minute_spin').get_value())
1036
1335
if self.SingleRadio.get_active():
1037
1336
self.AlarmBuffer[2] = 0
1038
1337
if self.ScheduleRadio.get_active():
1162
1466
self.f = file(os.getenv("HOME") + "/.config/alarm-clock/templates", "r")
1163
1467
self.line = self.f.readlines()
1164
1468
self.AlarmBuffer = eval(self.line[self.AddAlarmTemplateCombo.get_active()])
1166
self.value = self.AlarmPrefs().run()
1167
if self.value == gtk.RESPONSE_OK:
1170
self.f = file(os.getenv("HOME") + "/.config/alarm-clock/alarms", "a")
1171
self.AlarmBuffer[0] = self.NameEntry.get_text()
1172
self.AlarmBuffer[1] = "%i:%i" % (self.AlarmProps.get_widget('alarm_props_hour_spin').get_value(), self.AlarmProps.get_widget('alarm_props_minute_spin').get_value())
1173
if self.SingleRadio.get_active():
1174
self.AlarmBuffer[2] = 0
1175
if self.ScheduleRadio.get_active():
1176
self.AlarmBuffer[2] = 1
1178
if self.TodayRadio.get_active():
1179
self.AlarmBuffer[2] = 0
1180
self.AlarmBuffer[3] = "%s/%s/%s" % (datetime.datetime.now().year,
1181
datetime.datetime.now().month - 1, datetime.datetime.now().day)
1183
if self.TomorrowRadio.get_active():
1184
self.AlarmBuffer[2] = 0
1185
self.Today = datetime.datetime.now() + datetime.timedelta(days=1)
1186
self.AlarmBuffer[3] = "%s/%s/%s" % (self.Today.year,
1187
self.Today.month - 1, self.Today.day)
1189
if self.SoundCheck.get_active():
1190
self.AlarmBuffer[7] = True
1192
self.AlarmBuffer[7] = False
1193
if self.PassiveCheck.get_active():
1194
self.AlarmBuffer[15] = True
1196
self.AlarmBuffer[15] = False
1197
if self.DialogCheck.get_active():
1198
self.AlarmBuffer[19] = True
1200
self.AlarmBuffer[19] = False
1201
if self.CmdCheck.get_active():
1202
self.AlarmBuffer[27] = True
1204
self.AlarmBuffer[27] = False
1205
if self.StdCheck.get_active():
1206
self.AlarmBuffer[32] = True
1208
self.AlarmBuffer[32] = False
1211
print >> self.f, self.AlarmBuffer
1217
self.LoadConfigFiles()
1219
self.MainTreeViewSelection.select_path(self.row)
1220
self.AlarmPropsWidget.destroy()
1470
self.AlarmPrefs().connect("response", self.ResponseDialog)
1225
1472
if self.AddAlarmNew.get_active():
1226
1473
self.AddDialogWidget.destroy()
1227
1474
self.ClearAlarmValues()
1229
1475
self.AlarmPrefs().connect("response", self.ResponseDialog)
1231
1477
if self.AddCounter.get_active():
1232
1478
self.AddDialogWidget.destroy()
1233
1479
self.AddSimpleCounterDialog()
1240
1482
self.AddDialogWidget.destroy()
1247
1489
# Saving changes!
1248
1490
self.f = file(os.getenv("HOME") + "/.config/alarm-clock/alarms", "a")
1249
1491
self.AlarmBuffer[0] = self.NameEntry.get_text()
1250
self.AlarmBuffer[1] = "%i:%i" % (self.AlarmProps.get_widget('alarm_props_hour_spin').get_value(), self.AlarmProps.get_widget('alarm_props_minute_spin').get_value())
1493
if os.path.exists(os.getenv("HOME") + "/.config/alarm-clock/twelve"):
1494
AMPM = self.TimeCombo.get_active()
1495
Hour = self.AlarmProps.get_widget('alarm_props_hour_spin').get_value()
1496
Min = self.AlarmProps.get_widget('alarm_props_minute_spin').get_value()
1499
self.AlarmBuffer[1] = "%i:%i" % (12, Min)
1501
self.AlarmBuffer[1] = "%i:%i" % (Hour + 12, Min)
1504
self.AlarmBuffer[1] = "%i:%i" % (0, Min)
1506
self.AlarmBuffer[1] = "%i:%i" % (Hour, Min)
1507
if not os.path.exists(os.getenv("HOME") + "/.config/alarm-clock/twelve"):
1508
self.AlarmBuffer[1] = "%i:%i" % (self.AlarmProps.get_widget('alarm_props_hour_spin').get_value(), self.AlarmProps.get_widget('alarm_props_minute_spin').get_value())
1251
1513
if self.SingleRadio.get_active():
1252
1514
self.AlarmBuffer[2] = 0
1253
1515
if self.ScheduleRadio.get_active():
1496
1759
self.AlarmBuffer[10] = self.sp_Glade.get_widget('constant_volume_radio').get_active()
1498
self.AlarmBuffer[11] = self.sp_Glade.get_widget('constant_volume_scale').get_value()
1499
self.AlarmBuffer[12] = self.sp_Glade.get_widget('vol_init_scale').get_value()
1500
self.AlarmBuffer[13] = self.sp_Glade.get_widget('vol_final_scale').get_value()
1501
self.AlarmBuffer[14] = self.sp_Glade.get_widget('vol_duration_scale').get_value()
1502
self.AlarmBuffer[40] = self.sp_Glade.get_widget('after_fade_scale').get_value()
1503
self.AlarmBuffer[41] = self.sp_Glade.get_widget('repeat_volume_scale').get_value()
1762
self.AlarmBuffer[12] = self.sp_Glade.get_widget('initial_volume_spin').get_value()
1763
self.AlarmBuffer[13] = self.sp_Glade.get_widget('final_volume_spin').get_value()
1764
self.AlarmBuffer[14] = self.sp_Glade.get_widget('duration_sec_spin').get_value()
1765
self.AlarmBuffer[40] = self.sp_Glade.get_widget('duration_fade_spin').get_value()
1766
self.AlarmBuffer[11] = self.sp_Glade.get_widget('constant_volume_spin').get_value()
1768
Times = self.sp_Glade.get_widget('repeat_value_spin').get_value()
1770
self.AlarmBuffer[41] = -1
1772
self.AlarmBuffer[41] = Times
1504
1773
self.sp.destroy()
1776
# 7 - Boolean - whatever to play sound
1777
# 8 - Boolean - Use custom sound file
1778
# 9 - String - path to sound file
1779
# 10 - Boolean - Constant (True) or Fade (False)
1780
# 11 - Integer - Constant volume value
1781
# 12 - Integer - Fade (Initial volume)
1782
# 13 - Integer - Fade (Final volume)
1783
# 14 - Integer - Fade (Duration in seconds)
1784
# 40 - Integer - Fade (Duration after fade)
1785
# 41 - Integer - Repeat times
1508
1792
self.sp.destroy()
1795
def CheckSpinButtons(self, Spin):
1796
self.sp_Glade.get_widget('constant_volume_scale').set_value(self.sp_Glade.get_widget('constant_volume_spin').get_value())
1797
self.sp_Glade.get_widget('repeat_volume_scale').set_value(self.sp_Glade.get_widget('repeat_value_spin').get_value())
1798
self.sp_Glade.get_widget('vol_init_scale').set_value(self.sp_Glade.get_widget('initial_volume_spin').get_value())
1799
self.sp_Glade.get_widget('vol_final_scale').set_value(self.sp_Glade.get_widget('final_volume_spin').get_value())
1800
self.sp_Glade.get_widget('vol_duration_scale').set_value(self.sp_Glade.get_widget('duration_sec_spin').get_value())
1801
self.sp_Glade.get_widget('after_fade_scale').set_value(self.sp_Glade.get_widget('duration_fade_spin').get_value())
1510
1803
def CheckSoundPrefsWindow(self,obj):
1511
1804
self.buf = self.sp_Glade.get_widget('custom_sound_file_check').get_active()
1512
1805
self.sp_Glade.get_widget('soundfile_label').set_sensitive(self.buf)
1514
1807
self.buf = self.sp_Glade.get_widget('constant_volume_radio').get_active()
1515
1808
self.sp_Glade.get_widget('constant_volume_label').set_sensitive(self.buf)
1516
1809
self.sp_Glade.get_widget('constant_volume_scale').set_sensitive(self.buf)
1517
self.sp_Glade.get_widget('constant_volume_percent').set_sensitive(self.buf)
1810
self.sp_Glade.get_widget('constant_volume_spin').set_sensitive(self.buf)
1519
1812
self.sp_Glade.get_widget('repeat_volume_label').set_sensitive(self.buf)
1520
1813
self.sp_Glade.get_widget('repeat_volume_scale').set_sensitive(self.buf)
1521
self.sp_Glade.get_widget('repeat_volume_secs').set_sensitive(self.buf)
1814
self.sp_Glade.get_widget('repeat_value_spin').set_sensitive(self.buf)
1523
1816
self.buf = self.sp_Glade.get_widget('fade_volume_radio').get_active()
1525
1818
self.sp_Glade.get_widget('vol_init_label').set_sensitive(self.buf)
1526
1819
self.sp_Glade.get_widget('vol_init_scale').set_sensitive(self.buf)
1527
self.sp_Glade.get_widget('vol_init_percent').set_sensitive(self.buf)
1820
self.sp_Glade.get_widget('initial_volume_spin').set_sensitive(self.buf)
1528
1821
self.sp_Glade.get_widget('vol_final_label').set_sensitive(self.buf)
1529
1822
self.sp_Glade.get_widget('vol_final_scale').set_sensitive(self.buf)
1530
self.sp_Glade.get_widget('vol_final_percent').set_sensitive(self.buf)
1823
self.sp_Glade.get_widget('final_volume_spin').set_sensitive(self.buf)
1531
1824
self.sp_Glade.get_widget('vol_duration_label').set_sensitive(self.buf)
1532
1825
self.sp_Glade.get_widget('vol_duration_scale').set_sensitive(self.buf)
1533
self.sp_Glade.get_widget('vol_duration_secs').set_sensitive(self.buf)
1826
self.sp_Glade.get_widget('duration_sec_spin').set_sensitive(self.buf)
1534
1827
self.sp_Glade.get_widget('after_fade_label').set_sensitive(self.buf)
1535
1828
self.sp_Glade.get_widget('after_fade_scale').set_sensitive(self.buf)
1536
self.sp_Glade.get_widget('after_fade_secs').set_sensitive(self.buf)
1829
self.sp_Glade.get_widget('duration_fade_spin').set_sensitive(self.buf)
1538
1831
def CheckSoundPrefsSliders(self,obj,val1, val2):
1539
self.sp_Glade.get_widget('constant_volume_percent').set_text("%i %%" % self.sp_Glade.get_widget('constant_volume_scale').get_value())
1541
self.sp_Glade.get_widget('repeat_volume_secs').set_text("%i" % self.sp_Glade.get_widget('repeat_volume_scale').get_value())
1543
if self.sp_Glade.get_widget('repeat_volume_scale').get_value() == 0:
1544
self.sp_Glade.get_widget('repeat_volume_secs').set_text(_("Unlimited"))
1546
self.sp_Glade.get_widget('vol_init_percent').set_text("%i %%" % self.sp_Glade.get_widget('vol_init_scale').get_value())
1547
self.sp_Glade.get_widget('vol_final_percent').set_text("%i %%" % self.sp_Glade.get_widget('vol_final_scale').get_value())
1548
self.sp_Glade.get_widget('vol_duration_secs').set_text("%i s" % self.sp_Glade.get_widget('vol_duration_scale').get_value())
1549
self.sp_Glade.get_widget('after_fade_secs').set_text("%i s" % self.sp_Glade.get_widget('after_fade_scale').get_value())
1833
self.sp_Glade.get_widget('constant_volume_spin').set_value(self.sp_Glade.get_widget('constant_volume_scale').get_value())
1835
self.sp_Glade.get_widget('repeat_value_spin').set_value(self.sp_Glade.get_widget('repeat_volume_scale').get_value())
1837
self.sp_Glade.get_widget('initial_volume_spin').set_value(self.sp_Glade.get_widget('vol_init_scale').get_value())
1838
self.sp_Glade.get_widget('final_volume_spin').set_value(self.sp_Glade.get_widget('vol_final_scale').get_value())
1839
self.sp_Glade.get_widget('duration_sec_spin').set_value(self.sp_Glade.get_widget('vol_duration_scale').get_value())
1840
self.sp_Glade.get_widget('duration_fade_spin').set_value(self.sp_Glade.get_widget('after_fade_scale').get_value())
1551
1842
def PassivePrefsActive(self,obj):
1552
1843
self.pw_Glade = gtk.glade.XML(PREFIX + '/glade/main.glade', 'passive_window_properties')
2152
2440
self.AlarmBuffer[4] = self.Final
2442
def CheckMonths(self):
2443
self.Tuplet2 = [self.ScheduleProps.get_widget('m1').get_active(),
2444
self.ScheduleProps.get_widget('m2').get_active(),
2445
self.ScheduleProps.get_widget('m3').get_active(),
2446
self.ScheduleProps.get_widget('m4').get_active(),
2447
self.ScheduleProps.get_widget('m5').get_active(),
2448
self.ScheduleProps.get_widget('m6').get_active(),
2449
self.ScheduleProps.get_widget('m7').get_active(),
2450
self.ScheduleProps.get_widget('m8').get_active(),
2451
self.ScheduleProps.get_widget('m9').get_active(),
2452
self.ScheduleProps.get_widget('m10').get_active(),
2453
self.ScheduleProps.get_widget('m11').get_active(),
2454
self.ScheduleProps.get_widget('m12').get_active()]
2458
for Item in self.Tuplet2:
2464
def CheckDays(self):
2465
self.Tuplet2 = [self.ScheduleProps.get_widget('w1').get_active(),
2466
self.ScheduleProps.get_widget('w2').get_active(),
2467
self.ScheduleProps.get_widget('w3').get_active(),
2468
self.ScheduleProps.get_widget('w4').get_active(),
2469
self.ScheduleProps.get_widget('w5').get_active(),
2470
self.ScheduleProps.get_widget('w6').get_active(),
2471
self.ScheduleProps.get_widget('w7').get_active()]
2475
for Item in self.Tuplet2:
2154
2484
def SchedulePrefsActive(self,obj):
2155
2485
self.Al = self.AlarmBuffer[5]
2156
2486
self.ScheduleProps = gtk.glade.XML(PREFIX + '/glade/main.glade', 'schedule_dialog')
2180
2510
self.RefreshExceptionList()
2182
self.SchedSignals = { "add_exception" : self.AddExceptionDialog,
2512
SchedSignals = { "add_exception" : self.AddExceptionDialog,
2183
2513
"remove_exception" : self.RemoveExceptionDialog,
2184
2514
"load_exc_click" : self.LoadExceptionList,
2185
2515
"save_exc_click" : self.SaveExceptionList,
2186
2516
"SelectAllWeekdays" : self.SelectAllWeekdays,
2187
2517
"DeselectAllWeekdays" : self.DeselectAllWeekdays,
2188
2518
"SelectAllMonths" : self.SelectAllMoths,
2189
"DeselectAllMonths" : self.DeselectAllMonhts, }
2191
self.ScheduleProps.signal_autoconnect(self.SchedSignals)
2196
self.result = self.SchedulePropsWidget.run()
2198
if self.result == gtk.RESPONSE_OK:
2199
self.AlarmBuffer[5] = self.Al
2203
self.SchedulePropsWidget.destroy()
2519
"DeselectAllMonths" : self.DeselectAllMonhts,
2520
"SchedCancel" : self.SchedCancel,
2521
"SchedOK" : self.SchedOK }
2523
self.ScheduleProps.signal_autoconnect(SchedSignals)
2528
self.result = self.SchedulePropsWidget.show()
2530
def SchedCancel(self, obj):
2531
self.SchedulePropsWidget.destroy()
2533
def SchedOK(self, obj):
2534
if self.CheckMonths() == False:
2535
Dialog = gtk.MessageDialog(self.SchedulePropsWidget,
2536
gtk.DIALOG_MODAL | gtk.DIALOG_DESTROY_WITH_PARENT, gtk.MESSAGE_WARNING,
2537
gtk.BUTTONS_OK, None)
2538
Dialog.set_markup(_("<b>Month list is empty</b>"))
2539
Dialog.format_secondary_text(_("You need to select at least one month to proceed."))
2544
if self.CheckDays() == False:
2545
Dialog = gtk.MessageDialog(self.SchedulePropsWidget,
2546
gtk.DIALOG_MODAL | gtk.DIALOG_DESTROY_WITH_PARENT, gtk.MESSAGE_WARNING,
2547
gtk.BUTTONS_OK, None)
2548
Dialog.set_markup(_("<b>Days list is empty</b>"))
2549
Dialog.format_secondary_text(_("You need to select at least one day to proceed."))
2554
self.AlarmBuffer[5] = self.Al
2556
self.SchedulePropsWidget.destroy()
2207
2558
def SelectAllWeekdays(self, Button):
2208
2559
for x in range(1,8):
2265
2631
self.SingleRadio.set_active(True)
2266
2632
self.PrefsSchedule.set_sensitive(False)
2634
if os.path.exists(os.getenv("HOME") + "/.config/alarm-clock/twelve"):
2635
HBox = self.AlarmProps.get_widget('alarm_time_hbox')
2636
self.TimeCombo = gtk.combo_box_new_text()
2637
self.TimeCombo.append_text(_("AM"))
2638
self.TimeCombo.append_text(_("PM"))
2639
HBox.pack_start(self.TimeCombo, False, False, 0)
2640
self.TimeCombo.set_active(0)
2641
self.TimeCombo.show()
2642
self.AlarmHourSpin.set_range(1, 12)
2269
2644
# Setting values
2270
2645
self.time_data = re.search('(\d+):(\d+)', self.AlarmBuffer[1])
2271
self.AlarmProps.get_widget('alarm_props_hour_spin').set_value(int (self.time_data.group(1)))
2272
self.AlarmProps.get_widget('alarm_props_minute_spin').set_value(int (self.time_data.group(2)))
2646
time_hour = int (self.time_data.group(1))
2647
time_min = int (self.time_data.group(2))
2649
if os.path.exists(os.getenv("HOME") + "/.config/alarm-clock/twelve"):
2651
time_hour = time_hour - 12
2652
self.TimeCombo.set_active(1)
2654
self.TimeCombo.set_active(0)
2656
self.AlarmProps.get_widget('alarm_props_hour_spin').set_value(time_hour)
2657
self.AlarmProps.get_widget('alarm_props_minute_spin').set_value(time_min)
2273
2658
self.AlarmProps.get_widget('alarm_props_short_name_entry').set_text(self.AlarmBuffer[0])
2275
2660
if self.AlarmBuffer[2] == 0:
2402
2787
# 36 - Integer - Confirmation timeout in seconds
2792
# Checking for the current time of day and week
2794
Month = datetime.datetime.now().month
2795
Weekday = datetime.datetime.now().weekday()
2405
2798
self.AlarmBuffer = [_("Untitled"),
2406
2799
"%s:%s" % (time.localtime().tm_hour, time.localtime().tm_min + 1),
2408
2801
"%i/%i/%i" % (time.localtime().tm_year, time.localtime().tm_mon - 1, time.localtime().tm_mday),
2409
[[False, False, False, False, False, False, False], [False, False, False, False, False, False, False, False, False, False, False, False]],
2802
[[False, False, False, False, False, False, False],
2803
[False, False, False, False, False, False, False, False, False, False, False, False]],
2842
self.AlarmBuffer[4][0][Weekday] = True
2843
self.AlarmBuffer[4][1][Month - 1] = True
2448
2845
def SingleDayPrefs(self,obj):
2449
self.SingleDate = gtk.glade.XML(PREFIX + '/glade/main.glade', 'single_day_dialog')
2450
self.SingleDateWidget = self.SingleDate.get_widget('single_day_dialog')
2451
self.SingleDateWidget.set_icon_from_file(PREFIX + '/scalable/alarm-clock.svg')
2452
self.date_data = re.search('(\d+)/(\d+)/(\d+)', self.AlarmBuffer[3])
2453
self.SingleDate.get_widget('calendar').select_month(int (self.date_data.group(2)), int (self.date_data.group(1)))
2454
self.SingleDate.get_widget('calendar').select_day(int (self.date_data.group(3)))
2457
if self.SingleDateWidget.run() == gtk.RESPONSE_CANCEL:
2458
self.SingleDateWidget.destroy()
2846
SingleDate = gtk.glade.XML(PREFIX + '/glade/main.glade', 'single_day_dialog')
2847
SingleDateWidget = SingleDate.get_widget('single_day_dialog')
2848
SingleDateWidget.set_icon_from_file(PREFIX + '/scalable/alarm-clock.svg')
2849
date_data = re.search('(\d+)/(\d+)/(\d+)', self.AlarmBuffer[3])
2850
SingleDate.get_widget('calendar').select_month(int (date_data.group(2)), int (date_data.group(1)))
2851
SingleDate.get_widget('calendar').select_day(int (date_data.group(3)))
2854
if SingleDateWidget.run() == gtk.RESPONSE_CANCEL:
2855
SingleDateWidget.destroy()
2461
self.AlarmBuffer[3] = "%s/%s/%s" % self.SingleDate.get_widget('calendar').get_date()
2462
self.SingleDateWidget.destroy()
2858
self.AlarmBuffer[3] = "%s/%s/%s" % SingleDate.get_widget('calendar').get_date()
2859
SingleDateWidget.destroy()
2468
2865
def LoadConfigFiles(self):
2866
if self.UpdateList == False:
2470
2869
if os.path.isdir(os.getenv("HOME") + "/.config/alarm-clock/") == False:
2471
2870
os.mkdir (os.getenv("HOME") + "/.config/alarm-clock")
2473
2873
if os.path.isfile(os.getenv("HOME") + "/.config/alarm-clock/configuration") == False:
2474
2874
self.fc = file(os.getenv("HOME") + "/.config/alarm-clock/configuration", "w")
2475
2875
print >> self.fc, [MainWindow.get_position(), MainWindow.get_size()]
2530
def ParseTupletToList(self,line):
2531
self.string = eval(line)
2533
self.weekdays = self.string[4][0]
2534
self.months = self.string[4][1]
2536
self.t_weekday = time.localtime().tm_wday
2537
self.t_month = time.localtime().tm_mon
2538
self.t_day = time.localtime().tm_mday
2541
self.t = re.search('(\d+):(\d+)', self.string[1])
2543
self.h = "%s" % self.t.group(1)
2545
if int (self.t.group(2)) < 10:
2546
self.m = "0%s" % self.t.group(2)
2548
self.m = "%s" % self.t.group(2)
2557
self.weekdays = self.string[4][0]
2558
self.months = self.string[4][1]
2560
if self.weekdays[self.t_weekday] == True and self.months[self.t_month - 1] == True:
2563
for t in self.string[5]:
2564
if t[0] == self.t_month and t[1] == self.t_day:
2571
if self.Good == True and self.string[2] == 1:
2572
self.time = _("%s:%s - Today") % (self.h, self.m)
2575
self.time = _("%s:%s - Cancelled") % (self.h, self.m)
2933
def ParseTupletToList(self,line, model = None):
2935
model = self.alarm_model
2938
weekdays = string[4][0]
2939
months = string[4][1]
2941
t_weekday = time.localtime().tm_wday
2942
t_month = time.localtime().tm_mon
2943
t_day = time.localtime().tm_mday
2946
t = re.search('(\d+):(\d+)', string[1])
2948
h = "%s" % t.group(1)
2950
if int (t.group(2)) < 10:
2951
m = "0%s" % t.group(2)
2953
m = "%s" % t.group(2)
2962
weekdays = string[4][0]
2963
months = string[4][1]
2965
if weekdays[t_weekday] == True and months[t_month - 1] == True:
2969
if x[0] == t_month and x[1] == t_day:
2973
if not os.path.exists(os.getenv("HOME") + "/.config/alarm-clock/twelve"):
2974
TimeData = "%s:%s" % (h, m)
2979
# Playing with 12-hour clock...
2993
TimeData = "%i:%s %s" % (Hour, m, Addition)
2998
if Good and string[2] == 1:
2999
ttime = _("%s - Today") % TimeData
3002
ttime = _("%s- Cancelled") % TimeData
2577
self.time = "%s:%s" % (self.h, self.m)
2591
if self.string[2] == 1:
2592
self.AlarmType = _("Scheduled")
2593
self.datetime = "%s" % self.time
3010
AlarmType = _("Scheduled")
3011
ddatetime = "%s" % ttime
2594
3012
icon = MainWindow.render_icon('gtk-refresh', gtk.ICON_SIZE_SMALL_TOOLBAR)
2596
self.AlarmType = _("Single")
2597
self.date_data = re.search('(\d+)/(\d+)/(\d+)', self.string[3])
3014
AlarmType = _("Single")
3015
self.date_data = re.search('(\d+)/(\d+)/(\d+)', string[3])
2598
3016
icon = MainWindow.render_icon('gtk-jump-to', gtk.ICON_SIZE_SMALL_TOOLBAR)
2601
3019
if int(self.date_data.group(3)) < 10:
2602
self.day = "0%s" % self.date_data.group(3)
3020
day = "0%s" % self.date_data.group(3)
2604
self.day = self.date_data.group(3)
3022
day = self.date_data.group(3)
2606
3024
if int (self.date_data.group(2)) < 9:
2608
self.month = "0%i" % (int(self.date_data.group(2)) + 1)
3026
month = "0%i" % (int(self.date_data.group(2)) + 1)
2610
self.month = "%i" % (int(self.date_data.group(2)) + 1)
2611
self.datetime = "%s %s/%s/%s" % (self.time, self.day, self.month, self.date_data.group(1))
2613
self.alarm_model.append([self.AlarmType, icon, self.datetime, self.string[0]])
3028
month = "%i" % (int(self.date_data.group(2)) + 1)
3031
LocaleDate = time.strftime("%x", (int(self.date_data.group(1)), int(month), int(day), 0, 0, 0, 0, 0, 0))
3033
ddatetime = "%s %s" % (ttime, LocaleDate)
3036
model.append([AlarmType, icon, ddatetime, string[0]])
2749
3172
self.LoadCurrentAlarm()
2750
3173
self.RunAlarm(self.AlarmBuffer)
2752
def RunAlarm(self,Al):
3175
def RunAlarm(self,Al, Count = False, Remover = False, Loader = False, Prefs = False, UpdateList = None):
3176
StatusIcon.set_blinking(True)
2758
3182
self.sndfile = Al[9]
2760
3184
self.sndfile = "%s/sound/ring.wav" % PREFIX
2763
PlayerInstance.set_property('uri', "file://" + self.sndfile)
2764
MainWindowGlade.get_widget('stop_sound').set_sensitive(True)
2771
self.thread = RepeatSoundThread.RepeatSound(Times, MainWindowGlade.get_widget('stop_sound'), Al[11], PlayerInstance)
3196
if not PlayerInstance.get_state()[1] == gst.STATE_NULL:
3197
self.Info = _("Cannot play sound, because other alarm is playing!")
3198
self.msgDialog = gtk.MessageDialog(None, 0, gtk.MESSAGE_ERROR,
3199
gtk.BUTTONS_CLOSE, _("Error"))
3200
self.msgDialog.format_secondary_text(self.Info)
3201
self.msgDialog.run()
3202
self.msgDialog.destroy()
3206
self.WhatPlaying = "R"
3207
PlayerInstance.set_property('uri', "file://" + self.sndfile)
3208
MainWindowGlade.get_widget('stop_sound').set_sensitive(True)
3209
thread = RepeatSoundThread.RepeatSound(Times, MainWindowGlade.get_widget('stop_sound'), Al[11], PlayerInstance, self, self.sndfile)
2777
3215
RepeatAfter = Al[40]
2779
3217
RepeatAfter = 0
2780
FadingVolumeThread = VolumeFadeThread.VolumeFade(Al[12], Al[13], Al[14], MainWindowGlade.get_widget('stop_sound'), RepeatAfter, PlayerInstance)
2781
FadingVolumeThread.start()
2784
# 7 - Boolean - whatever to play sound
2785
# 8 - Boolean - Use custom sound file
2786
# 9 - String - path to sound file
2787
# 10 - Boolean - Constant (True) or Fade (False)
2788
# 11 - Integer - Constant volume value
2789
# 12 - Integer - Fade (Initial volume)
2790
# 13 - Integer - Fade (Final volume)
2791
# 14 - Integer - Fade (Duration in seconds)
3222
if not PlayerInstance.get_state()[1] == gst.STATE_NULL:
3223
self.Info = _("Cannot play sound, because other alarm is playing!")
3224
self.msgDialog = gtk.MessageDialog(None, 0, gtk.MESSAGE_ERROR,
3225
gtk.BUTTONS_CLOSE, _("Error"))
3226
self.msgDialog.format_secondary_text(self.Info)
3227
self.msgDialog.run()
3228
self.msgDialog.destroy()
3232
self.WhatPlaying = "F"
3233
PlayerInstance.set_property('uri', "file://" + self.sndfile)
3234
MainWindowGlade.get_widget('stop_sound').set_sensitive(True)
3235
FadingVolumeThread = VolumeFadeThread.VolumeFade(Al[12], Al[13], Al[14], MainWindowGlade.get_widget('stop_sound'), RepeatAfter, PlayerInstance, self)
3236
FadingVolumeThread.start()
2804
3239
# PASSIVE WINDOW START
2807
self.n = pynotify.Notification (Al[37], Al[18])
3242
self.n = pynotify.Notification (Al[37], Al[18], "dialog-warning")
2808
3243
if Al[16] == 0:
2809
3244
self.n.set_urgency(pynotify.URGENCY_LOW)
2810
3245
if Al[16] == 1:
2828
3269
# DIALOG WINDOW START
3275
try: UpdateList(False)
2834
self.dlg_G = gtk.glade.XML(Al[21], 'alarm_dialog')
2835
self.dl = self.dlg_G.get_widget('alarm_dialog')
2836
self.dl.set_icon_from_file(PREFIX + '/scalable/alarm-clock.svg')
2837
self.dl.set_title(Al[38])
2838
self.dlg_G.get_widget('alarm_label').set_text(Al[25])
3280
dlg_G = gtk.glade.XML(Al[21], 'alarm_dialog')
3281
dl = dlg_G.get_widget('alarm_dialog')
3282
dl.set_icon_from_file(PREFIX + '/scalable/alarm-clock.svg')
3283
dl.set_title(Al[38])
3284
dlg_G.get_widget('alarm_label').set_text(Al[25])
2842
self.msg = gtk.MessageDialog(None, gtk.DIALOG_MODAL | gtk.DIALOG_DESTROY_WITH_PARENT, gtk.MESSAGE_ERROR, gtk.BUTTONS_CLOSE, "")
2843
self.msg.set_markup(_("The GLADE file <b>%s</b> is incorrect. It should contain a dialog called \"alarm_dialog\" and a label called \"alarm_label\".") % Al[21])
3288
msg = gtk.MessageDialog(None, gtk.DIALOG_MODAL | gtk.DIALOG_DESTROY_WITH_PARENT, gtk.MESSAGE_ERROR, gtk.BUTTONS_CLOSE, "")
3289
msg.set_markup(_("The GLADE file <b>%s</b> is incorrect. It should contain a dialog called \"alarm_dialog\" and a label called \"alarm_label\".") % Al[21])
2851
self.dl_Glade = gtk.glade.XML(PREFIX + '/glade/main.glade', 'alarm_dialog')
2853
self.dc = { "close_dialog" : self.CloseDialogPopup,
2854
"snooze_clicked" : self.SnoozeClicked, }
2856
self.dl_Glade.signal_autoconnect(self.dc)
2858
self.dl = self.dl_Glade.get_widget('alarm_dialog')
2859
self.dl.set_icon_from_file(PREFIX + '/scalable/alarm-clock.svg')
2860
self.text = self.dl_Glade.get_widget('text_label')
2861
self.color = gtk.gdk.Color()
2863
self.alarm_event = self.dl_Glade.get_widget('alarm_event')
2864
self.colors = re.search("(\d+),(\d+),(\d+)", Al[23])
2865
self.color.red = int (self.colors.group(1))
2866
self.color.green = int (self.colors.group(2))
2867
self.color.blue = int (self.colors.group(3))
2868
self.alarm_event.modify_bg(gtk.STATE_NORMAL, self.color)
2870
self.colors = re.search("(\d+),(\d+),(\d+)", Al[22])
2871
self.color.red = int (self.colors.group(1))
2872
self.color.green = int (self.colors.group(2))
2873
self.color.blue = int (self.colors.group(3))
3297
dl_Glade = gtk.glade.XML(PREFIX + '/glade/main.glade', 'alarm_dialog')
3298
snoozebutton = dl_Glade.get_widget('snooze_button')
3301
MainWindowGlade.get_widget('stop_sound').set_sensitive(True)
3302
self.SnoozeClicked(Al, Count, Remover, Loader, Prefs, UpdateList)
3304
self.StopTheSound(True)
3323
Remover(Count, True)
3328
dc = { "snooze_clicked" : Snooze,
3329
"edit_clicked" : Edit,
3330
"stop_clicked" : Stop }
3332
dl_Glade.signal_autoconnect(dc)
3334
dl = dl_Glade.get_widget('alarm_dialog')
3335
dl.set_icon_from_file(PREFIX + '/scalable/alarm-clock.svg')
3336
text = dl_Glade.get_widget('text_label')
3337
color = gtk.gdk.Color()
3339
alarm_event = dl_Glade.get_widget('alarm_event')
3340
colors = re.search("(\d+),(\d+),(\d+)", Al[23])
3341
color.red = int (colors.group(1))
3342
color.green = int (colors.group(2))
3343
color.blue = int (colors.group(3))
3344
alarm_event.modify_bg(gtk.STATE_NORMAL, color)
3346
colors = re.search("(\d+),(\d+),(\d+)", Al[22])
3347
color.red = int (colors.group(1))
3348
color.green = int (colors.group(2))
3349
color.blue = int (colors.group(3))
2877
3353
if Al[24] >= 1:
2878
self.val = Al[24] - 1
2879
self.tin = "<big>" * self.val
2880
self.tout = "</big>" * self.val
3356
tout = "</big>" * val
2883
self.tin = "<small>"
2884
self.tout = "</small>"
2886
self.text_to_enter = "<span foreground='%s'>%s%s%s</span>" % (self.color.to_string(), self.tin, Al[25], self.tout)
2888
self.text.set_markup(self.text_to_enter)
2889
self.dl.set_title(Al[38])
3362
text_to_enter = "<span foreground='%s'>%s%s%s</span>" % (color.to_string(), tin, Al[25], tout)
3364
text.set_markup(text_to_enter)
3365
dl.set_title(Al[38])
2891
3367
if Al[39] == 0:
2892
self.dl_Glade.get_widget('snooze_button').hide()
3368
dl_Glade.get_widget('snooze_button').hide()
3370
snoozebutton.grab_default()
3373
dl.set_keep_above(True)
2897
3374
if Al[26] == True:
2898
self.dl.fullscreen()
3377
dl.set_focus_on_map(True)
3378
dl.set_urgency_hint(True)
2900
3382
print _("Error: cannot create dialog window.")
3385
try: UpdateList(True)
2904
3388
# COMMAND START