def __init__(self, time_picker, on_change):
     self.time_picker = time_picker
     self.original_bg = self.time_picker.GetBackgroundColour()
     self.separator = BosparanianTimeType().event_time_string(
         BosparanianTimeType().now())[2]
     self.hour_part = 0
     self.minute_part = 1
     self.last_selection = None
     self.on_change = on_change
Пример #2
0
 def _parse_timetype(self, text, tmp_dict):
     self.db.set_time_type(None)
     valid_time_types = (GregorianTimeType(), BosparanianTimeType(),
                         NumTimeType())
     for timetype in valid_time_types:
         if text == timetype.get_name():
             self.db.set_time_type(timetype)
             if timetype.get_name() == BosparanianTimeType().get_name():
                 set_date_formatter(BosparanianDateFormatter())
             else:
                 set_date_formatter(DefaultDateFormatter())
             break
     if self.db.get_time_type() is None:
         raise ParseException("Invalid timetype '%s' found." % text)
 def decrement_month(date):
     year, month, day = date
     if month > 1:
         return self._set_valid_day(year, month - 1, day)
     elif year > BosparanianUtils.from_time(
             BosparanianTimeType().get_min_time()[0]).year:
         return self._set_valid_day(year - 1, 13, day)
     return date
 def increment_day(date):
     year, month, day = date
     time = BosparanianUtils.from_date(year, month, day).to_time()
     if time < BosparanianTimeType().get_max_time(
     )[0] - delta_from_days(1):
         return BosparanianUtils.from_time(
             time + delta_from_days(1)).to_date_tuple()
     return date
 def __init__(self, parent, show_time=True, config=None, on_change=None):
     wx.Panel.__init__(self, parent)
     self.config = config
     self._create_gui(on_change)
     self.controller = BosparanianDateTimePickerController(
         self.date_picker, self.time_picker,
         BosparanianTimeType().now)
     self.show_time(show_time)
     self.parent = parent
    def on_down(self):
        def decrement_year(date):
            year, month, day = date
            if year > BosparanianUtils.from_time(
                    BosparanianTimeType().get_min_time()[0]).year:
                return self._set_valid_day(year - 1, month, day)
            return date

        def decrement_month(date):
            year, month, day = date
            if month > 1:
                return self._set_valid_day(year, month - 1, day)
            elif year > BosparanianUtils.from_time(
                    BosparanianTimeType().get_min_time()[0]).year:
                return self._set_valid_day(year - 1, 13, day)
            return date

        def decrement_day(date):
            year, month, day = date
            if day > 1:
                return self._set_valid_day(year, month, day - 1)
            elif month > 1:
                return self._set_valid_day(year, month - 1, 30)
            elif year > BosparanianUtils.from_time(
                    BosparanianTimeType().get_min_time()[0]).year:
                return self._set_valid_day(year - 1, 13, 5)
            return date

        if not self._current_date_is_valid():
            return
        selection = self.date_picker.GetSelection()
        current_date = self.get_value()
        if self._insertion_point_in_region(self.region_year):
            new_date = decrement_year(current_date)
        elif self._insertion_point_in_region(self.region_month):
            new_date = decrement_month(current_date)
        else:
            year, month, day = current_date
            BosparanianUtils.from_date(year, month, day)
            if BosparanianUtils.from_date(
                    year, month,
                    day).to_time() == BosparanianTimeType().get_min_time()[0]:
                return
            new_date = decrement_day(current_date)
            self._save_preferred_day(new_date)
        if current_date != new_date:
            self._set_new_date_and_restore_selection(new_date, selection)
        self._on_change()
    def on_up(self):
        max_year = BosparanianUtils.from_time(
            BosparanianTimeType().get_max_time()[0]).year

        def increment_year(date):
            year, month, day = date
            if year < max_year - 1:
                return self._set_valid_day(year + 1, month, day)
            return date

        def increment_month(date):
            year, month, day = date
            if month < 13:
                return self._set_valid_day(year, month + 1, day)
            elif year < max_year - 1:
                return self._set_valid_day(year + 1, 1, day)
            return date

        def increment_day(date):
            year, month, day = date
            time = BosparanianUtils.from_date(year, month, day).to_time()
            if time < BosparanianTimeType().get_max_time(
            )[0] - delta_from_days(1):
                return BosparanianUtils.from_time(
                    time + delta_from_days(1)).to_date_tuple()
            return date

        if not self._current_date_is_valid():
            return
        selection = self.date_picker.GetSelection()
        current_date = self.get_value()
        if self._insertion_point_in_region(self.region_year):
            new_date = increment_year(current_date)
        elif self._insertion_point_in_region(self.region_month):
            new_date = increment_month(current_date)
        else:
            new_date = increment_day(current_date)
            self._save_preferred_day(new_date)
        if current_date != new_date:
            self._set_new_date_and_restore_selection(new_date, selection)
        self._on_change()
 def _ensure_within_allowed_period(self, date):
     year, month, day = date
     time = Bosparanian(year, month, day, 0, 0, 0).to_time()
     if (time >= BosparanianTimeType().get_max_time()[0]
             or time < BosparanianTimeType().get_min_time()[0]):
         raise ValueError()