Exemple #1
0
    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())
Exemple #2
0
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