Reviewers: ced, Description: Add of two signals to the calendar: zoom-changed and page-changed. These signals are useful e.g. for an external toolbar.
Please review this at http://codereview.tryton.org/405001/ Affected files: M GooCalendar/Calendar.py Index: GooCalendar/Calendar.py =================================================================== --- a/GooCalendar/Calendar.py +++ b/GooCalendar/Calendar.py @@ -70,7 +70,7 @@ self.selected_date = new_date[:3] page_changed = False if self.zoom == "month": - page_changed = old_date[1] != new_date[1] + page_changed = old_date[:2] != new_date[:2] if self.zoom == "week": page_changed = True # Good enough for now... @@ -79,6 +79,7 @@ if old_day is None or page_changed: self.update() self.emit('day-selected', self.get_selected_date()) + self.emit('page-changed', self.get_selected_date()) return # This is fast: Update only the old and newly selected days. @@ -127,9 +128,12 @@ self.select(date) def set_zoom(self, level): + if level == self.zoom: + return assert level in self.ZOOM_LEVELS self.zoom = level self.update() + self.on_change_zoom_event() def get_selected_date(self): return datetime.datetime(*self.selected_date) @@ -552,6 +556,9 @@ self.select(date + datetime.timedelta(1)) return True + def on_change_zoom_event(self): + self.emit('zoom_changed', self.zoom) + def on_event_item_button_press_event(self, item, rect, event): self.emit('event-clicked', item.event) @@ -568,3 +575,13 @@ gobject.SIGNAL_RUN_FIRST, gobject.TYPE_NONE, (gobject.TYPE_PYOBJECT,)) +gobject.signal_new('zoom_changed', + Calendar, + gobject.SIGNAL_RUN_FIRST, + gobject.TYPE_NONE, + (gobject.TYPE_PYOBJECT,)) +gobject.signal_new('page_changed', + Calendar, + gobject.SIGNAL_RUN_FIRST, + gobject.TYPE_NONE, + (gobject.TYPE_PYOBJECT,)) -- [email protected] mailing list
