예제 #1
0
 def navigate(tp):
     start = BosparanianUtils.from_time(curret_period.start_time)
     end = BosparanianUtils.from_time(curret_period.end_time)
     start_months = start.year * 13 + start.month
     end_months = end.year * 13 + end.month
     month_diff = end_months - start_months
     month_delta = month_diff * direction
     new_start_year, new_start_month = _months_to_year_and_month(
         start_months + month_delta)
     new_end_year, new_end_month = _months_to_year_and_month(end_months +
                                                             month_delta)
     try:
         new_start = start.replace(year=new_start_year,
                                   month=new_start_month)
         new_end = end.replace(year=new_end_year, month=new_end_month)
         start = new_start.to_time()
         end = new_end.to_time()
         if end > curret_period.time_type.get_max_time()[0]:
             raise ValueError()
         if start < curret_period.time_type.get_min_time()[0]:
             raise ValueError()
     except ValueError:
         if direction < 0:
             raise TimeOutOfRangeLeftError()
         else:
             raise TimeOutOfRangeRightError()
     return tp.update(start, end)
예제 #2
0
def move_period_num_months(period, num):
    try:
        delta = num
        years = abs(delta) / 13
        bosparanian_start = BosparanianUtils.from_time(period.start_time)
        bosparanian_end = BosparanianUtils.from_time(period.end_time)
        if num < 0:
            years = -years
        delta = delta - 13 * years
        if delta < 0:
            start_month = bosparanian_start.month + 13 + delta
            end_month = bosparanian_end.month + 13 + delta
            if start_month > 13:
                start_month -= 13
                end_month -= 13
            if start_month > bosparanian_start.month:
                years -= 1
        else:
            start_month = bosparanian_start.month + delta
            end_month = bosparanian_start.month + delta
            if start_month > 13:
                start_month -= 13
                end_month -= 13
                years += 1
        start_year = bosparanian_start.year + years
        end_year = bosparanian_start.year + years
        start_time = bosparanian_start.replace(year=start_year,
                                               month=start_month)
        end_time = bosparanian_end.replace(year=end_year, month=end_month)
        return TimePeriod(period.time_type, start_time.to_time(),
                          end_time.to_time())
    except ValueError:
        return None
 def set_value(self, time):
     if time == None:
         time = self.now_fn()
     self.date_picker.set_value(
         BosparanianUtils.from_time(time).to_date_tuple())
     self.time_picker.set_value(
         BosparanianUtils.from_time(time).to_time_tuple())
예제 #4
0
def _whole_number_of_months(period):
    start, end = BosparanianUtils.from_time(
        period.start_time), BosparanianUtils.from_time(period.end_time)
    start_months = start.year * 13 + start.month
    end_months = end.year * 13 + end.month
    month_diff = end_months - start_months
    return (start.is_first_of_month() and end.is_first_of_month()
            and month_diff > 0)
예제 #5
0
 def label(self, time, major=False):
     if major:
         day_of_week = time.get_day_of_week()
         time = BosparanianUtils.from_time(time)
         return "%s %s %s %s" % (
             bosp_abbreviated_name_of_weekday(day_of_week), time.day,
             bosp_abbreviated_name_of_month(
                 time.month), format_year(time.year))
     return (bosp_abbreviated_name_of_weekday(time.get_day_of_week()) +
             " %s" % BosparanianUtils.from_time(time).day)
예제 #6
0
def move_period_num_years(period, num):
    try:
        delta = num
        start_year = BosparanianUtils.from_time(period.start_time).year
        end_year = BosparanianUtils.from_time(period.end_time).year
        start_time = BosparanianUtils.from_time(
            period.start_time).replace(year=start_year + delta)
        end_time = BosparanianUtils.from_time(
            period.end_time).replace(year=end_year + delta)
        return TimePeriod(period.time_type, start_time.to_time(),
                          end_time.to_time())
    except ValueError:
        return None
 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 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()
예제 #9
0
def fit_decade_fn(main_frame, current_period, navigation_fn):
    mean = BosparanianUtils.from_time(current_period.mean_time())
    start = BosparanianUtils.from_date(int(mean.year / 10) * 10, 1,
                                       1).to_time()
    end = BosparanianUtils.from_date(int(mean.year / 10) * 10 + 10, 1,
                                     1).to_time()
    navigation_fn(lambda tp: tp.update(start, end))
예제 #10
0
 def label(self, time, major=False):
     time = BosparanianUtils.from_time(time)
     if major:
         return "%s %s %s: %s:%s" % (
             time.day, bosp_abbreviated_name_of_month(time.month),
             format_year(time.year), time.hour, time.minute)
     return str(time.minute)
예제 #11
0
 def label(self, time, major=False):
     time = BosparanianUtils.from_time(time)
     if major:
         return "%s %s" % (bosp_name_of_month(
             time.month), format_year(time.year))
     if time.month == 13:
         return bosp_abbreviated_name_of_month(time.month)
     return bosp_name_of_month(time.month)
예제 #12
0
 def start(self, time):
     q = self.get_quarter(time)
     if q == 0:
         m = 13
     else:
         m = (q - 1) * 3 + 1
     return BosparanianUtils.from_date(
         BosparanianUtils.from_time(time).year, m, 1).to_time()
예제 #13
0
 def _time_range_string(self, start, end):
     start = BosparanianUtils.from_time(start)
     end = BosparanianUtils.from_time(end)
     if start.year == end.year:
         if start.month == end.month:
             return "%s-%s %s %s" % (start.day, end.day,
                                     bosp_abbreviated_name_of_month(
                                         start.month),
                                     format_year(start.year))
         return "%s %s-%s %s %s" % (
             start.day, bosp_abbreviated_name_of_month(start.month),
             end.day, bosp_abbreviated_name_of_month(
                 end.month), format_year(start.year))
     return "%s %s %s-%s %s %s" % (
         start.day, bosp_abbreviated_name_of_month(
             start.month), format_year(start.year), end.day,
         bosp_abbreviated_name_of_month(end.month), format_year(end.year))
 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 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
예제 #16
0
def fit_month_fn(main_frame, current_period, navigation_fn):
    mean = BosparanianUtils.from_time(current_period.mean_time())
    start = BosparanianUtils.from_date(mean.year, mean.month, 1).to_time()
    if mean.month == 13:
        end = BosparanianUtils.from_date(mean.year + 1, 1, 1).to_time()
    else:
        end = BosparanianUtils.from_date(mean.year, mean.month + 1,
                                         1).to_time()
    navigation_fn(lambda tp: tp.update(start, end))
예제 #17
0
def fit_week_fn(main_frame, current_period, navigation_fn):
    mean = BosparanianUtils.from_time(current_period.mean_time())
    start = BosparanianUtils.from_date(mean.year, mean.month,
                                       mean.day).to_time()
    weekday = start.get_day_of_week()
    start = start - delta_from_days(weekday)
    if not main_frame.week_starts_on_monday():
        start = start - delta_from_days(1)
    end = start + delta_from_days(7)
    navigation_fn(lambda tp: tp.update(start, end))
예제 #18
0
def fit_century_fn(main_frame, current_period, navigation_fn):
    mean = BosparanianUtils.from_time(current_period.mean_time())
    if mean.year > get_century_max_year():
        year = get_century_max_year()
    else:
        year = max(get_min_year_containing_praios_1(),
                   int(mean.year / 100) * 100)
    start = BosparanianUtils.from_date(year, 1, 1).to_time()
    end = BosparanianUtils.from_date(year + 100, 1, 1).to_time()
    navigation_fn(lambda tp: tp.update(start, end))
예제 #19
0
 def label(self, time, major=False):
     if major:
         # TODO: This only works for English. Possible to localize?
         time = BosparanianUtils.from_time(time)
         start_year = self._century_start_year(time.year)
         century = (start_year + 100) / 100
         if century <= 0:
             century -= 1
         return str(century) + " century BF"
     return ""
예제 #20
0
 def navigate(tp):
     year_delta = direction * _calculate_year_diff(curret_period)
     bosparanian_start = BosparanianUtils.from_time(
         curret_period.start_time)
     bosparanian_end = BosparanianUtils.from_time(curret_period.end_time)
     new_start_year = bosparanian_start.year + year_delta
     new_end_year = bosparanian_end.year + year_delta
     try:
         new_start = bosparanian_start.replace(
             year=new_start_year).to_time()
         new_end = bosparanian_end.replace(year=new_end_year).to_time()
         if new_end > curret_period.time_type.get_max_time()[0]:
             raise ValueError()
         if new_start < curret_period.time_type.get_min_time()[0]:
             raise ValueError()
     except ValueError:
         if direction < 0:
             raise TimeOutOfRangeLeftError()
         else:
             raise TimeOutOfRangeRightError()
     return tp.update(new_start, new_end)
    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()
예제 #22
0
 def start(self, time):
     bosparanian_time = BosparanianUtils.from_time(time)
     new_bosparanian = BosparanianUtils.from_date(
         self._decade_start_year(bosparanian_time.year), 1, 1)
     return new_bosparanian.to_time()
 def set_value(self, time):
     if time == None:
         time = self.now_fn()
     self.date_picker.set_value(BosparanianUtils.from_time(time).to_date_tuple())
     self.time_picker.set_value(BosparanianUtils.from_time(time).to_time_tuple())
예제 #24
0
def get_century_max_year():
    return BosparanianUtils.from_time(
        BosparanianTimeType().get_max_time()[0]).year - 100
예제 #25
0
 def start(self, time):
     bosparanian_time = BosparanianUtils.from_time(time)
     new_bosparanian = BosparanianUtils.from_date(bosparanian_time.year,
                                                  bosparanian_time.month,
                                                  bosparanian_time.day)
     return new_bosparanian.to_time()
 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
예제 #27
0
def fit_day_fn(main_frame, current_period, navigation_fn):
    mean = BosparanianUtils.from_time(current_period.mean_time())
    start = BosparanianUtils.from_date(mean.year, mean.month,
                                       mean.day).to_time()
    end = start + delta_from_days(1)
    navigation_fn(lambda tp: tp.update(start, end))
예제 #28
0
 def increment(self, time):
     days_in_month = BosparanianUtils.from_time(time).days_in_month()
     return time + delta_from_days(days_in_month)
예제 #29
0
 def get_quarter(self, time):
     m = BosparanianUtils.from_time(time).month
     if m == 13:
         return 0
     return (m - 1) // 3 + 1
예제 #30
0
 def start(self, time):
     time = BosparanianUtils.from_time(time)
     return BosparanianUtils.from_date(self._century_start_year(time.year),
                                       1, 1).to_time()
예제 #31
0
 def increment(self, time):
     bosparanian_time = BosparanianUtils.from_time(time)
     return bosparanian_time.replace(year=bosparanian_time.year +
                                     1).to_time()
예제 #32
0
 def label(self, time, major=False):
     return format_year(BosparanianUtils.from_time(time).year)
예제 #33
0
 def increment(self, time):
     gregorian_time = BosparanianUtils.from_time(time)
     return gregorian_time.replace(year=gregorian_time.year + 100).to_time()
예제 #34
0
 def label(self, time, major=False):
     time = BosparanianUtils.from_time(time)
     return format_decade(self._decade_start_year(time.year))