Package Gnumed :: Package timelinelib :: Package wxgui :: Package frames :: Package mainframe :: Module alertcontroller
[frames] | no frames]

Source Code for Module Gnumed.timelinelib.wxgui.frames.mainframe.alertcontroller

 1  # Copyright (C) 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018  Rickard Lindberg, Roger Lindberg 
 2  # 
 3  # This file is part of Timeline. 
 4  # 
 5  # Timeline is free software: you can redistribute it and/or modify 
 6  # it under the terms of the GNU General Public License as published by 
 7  # the Free Software Foundation, either version 3 of the License, or 
 8  # (at your option) any later version. 
 9  # 
10  # Timeline is distributed in the hope that it will be useful, 
11  # but WITHOUT ANY WARRANTY; without even the implied warranty of 
12  # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the 
13  # GNU General Public License for more details. 
14  # 
15  # You should have received a copy of the GNU General Public License 
16  # along with Timeline.  If not, see <http://www.gnu.org/licenses/>. 
17   
18   
19  import wx 
20   
21  from timelinelib.wxgui.dialogs.textdisplay.view import TextDisplayDialog 
22   
23   
24 -class AlertController(object):
25
26 - def __init__(self, main_frame):
27 self._main_frame = main_frame
28
29 - def display_events_alerts(self, all_events, time_type, dialog=None):
30 self._active = True 31 self._dialog = dialog 32 self.time_type = time_type 33 for event in [event for event in all_events 34 if event.get_data("alert") is not None]: 35 alert = event.get_data("alert") 36 if self._time_has_expired(alert[0]): 37 self._display_and_delete_event_alert(event, alert)
38
39 - def _display_and_delete_event_alert(self, event, alert):
40 self._display_alert_dialog(alert, event) 41 event.set_data("alert", None) 42 if self._main_frame.ok_to_edit(): 43 try: 44 event.save() 45 finally: 46 self._main_frame.edit_ends()
47
48 - def _time_has_expired(self, time):
49 return time <= self.time_type.now()
50
51 - def _display_alert_dialog(self, alert, event):
52 text = self._format_alert_text(alert, event) 53 if self._dialog is None: 54 self._dialog = TextDisplayDialog("Alert") 55 wx.Bell() 56 self._dialog.SetText(text) 57 self._dialog.SetWindowStyleFlag(self._dialog.GetWindowStyleFlag() | wx.STAY_ON_TOP) 58 self._dialog.ShowModal() 59 self._dialog.Destroy()
60
61 - def _format_alert_text(self, alert, event):
62 text1 = "Trigger time: %s\n\n" % alert[0] 63 text2 = "Event: %s\n\n" % event.get_label(self.time_type) 64 text = "%s%s%s" % (text1, text2, alert[1]) 65 return text
66