def __init__(self, parent, input_values, # Temporary workaround for bug #332 filename, id_): self.box = wx.BoxSizer(wx.HORIZONTAL) self.slabel = wx.StaticText(parent, label='Start day:') self.box.Add(self.slabel, flag=wx.ALIGN_CENTER_VERTICAL | wx.RIGHT, border=4) self.startw = WeekDayHourCtrl(parent) self.startw.set_values(input_values['start_weekday'], input_values['start_hour'], input_values['start_minute']) self.box.Add(self.startw.get_main_panel())
class StartWeekDay(object): def __init__(self, parent, input_values, # Temporary workaround for bug #332 filename, id_): self.box = wx.BoxSizer(wx.HORIZONTAL) self.slabel = wx.StaticText(parent, label='Start day:') self.box.Add(self.slabel, flag=wx.ALIGN_CENTER_VERTICAL | wx.RIGHT, border=4) self.startw = WeekDayHourCtrl(parent) self.startw.set_values(input_values['start_weekday'], input_values['start_hour'], input_values['start_minute']) self.box.Add(self.startw.get_main_panel()) def get_main_window(self): return self.box def get_first_column_width(self): return self.slabel.GetSizeTuple()[0] def set_first_column_width(self, width): sminh = self.slabel.GetMinHeight() self.slabel.SetMinSize((width, sminh)) def get_values(self, values): return {'start_relative_week_time': self.startw.get_relative_unix_week_time(), 'start_relative_time': self.startw.get_relative_time(), 'start_weekday': self.startw.get_day(), 'start_hour': self.startw.get_hour(), 'start_minute': self.startw.get_minute()}
def _compute_values(cls, standard, rule): # Remember to support also time zones that differ from UTC by not # exact hours (e.g. Australia/Adelaide) if not rule: now = _datetime.datetime.now() nextdate = _datetime.datetime(now.year, now.month, now.day, now.hour) + _datetime.timedelta(hours=1) refstart = int(_time.mktime(nextdate.timetuple())) - \ UTCOffset.compute2_current() currw = nextdate.weekday() values = { 'reference_start': refstart, 'interval': 604800, 'overlaps': 0, 'bgap': 604800 - 3600, 'end_relative_time': 3600, 'alarm_relative_time': 0, 'end_type': 0, 'alarm_type': 0, 'time_standard': standard, } else: values = { 'reference_start': rule[0], 'interval': rule[1], 'overlaps': rule[2], 'bgap': rule[3], 'end_relative_time': rule[4] if rule[4] is not None else 3600, 'alarm_relative_time': rule[5] if rule[5] is not None else 0, 'end_type': rule[6][1], 'alarm_type': rule[6][2], 'time_standard': standard, } currw = _datetime.datetime.utcfromtimestamp( values['reference_start']).weekday() values['end_relative_number'], values['end_relative_unit'] = \ TimeSpanCtrl.compute_widget_values( values['end_relative_time']) # ralarm could be negative values['alarm_relative_number'], values['alarm_relative_unit'] = \ TimeSpanCtrl.compute_widget_values( max((0, values['alarm_relative_time']))) rrstart = values['reference_start'] % 86400 rrend = rrstart + values['end_relative_time'] values['end_next_day'] = False # End time could be set after 23:59 of the start day if rrend > 86399: rrend = rrend % 86400 values['end_next_day'] = True rralarm = rrstart - values['alarm_relative_time'] values['alarm_previous_day'] = False # Alarm time could be set before 00:00 of the start day if rralarm < 0: rralarm = 86400 - abs(rralarm) % 86400 values['alarm_previous_day'] = True values.update({ 'start_weekday': WeekDayHourCtrl.compute_widget_day(currw), 'start_hour': rrstart // 3600, 'start_minute': rrstart % 3600 // 60, 'end_hour': rrend // 3600, 'end_minute': rrend % 3600 // 60, 'alarm_hour': rralarm // 3600, 'alarm_minute': rralarm % 3600 // 60, }) return values