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

Reply via email to