Repurposed the popup calendar for a display only calendar
authorEd Page <eopage@byu.net>
Thu, 16 Apr 2009 14:13:48 +0000 (09:13 -0500)
committerEd Page <eopage@byu.net>
Thu, 16 Apr 2009 14:13:48 +0000 (09:13 -0500)
src/gtk_toolbox.py

index fdfcc44..02ea6a6 100644 (file)
@@ -312,29 +312,35 @@ class MessageBox2(gtk.MessageDialog):
 
 class PopupCalendar(object):
 
-       def __init__(self, parent, eventTarget = coroutines.null_sink()):
-               self._eventTarget = eventTarget
-
-               self.__calendar = gtk.Calendar()
-               self.__calendar.connect("day-selected-double-click", self._on_date_select)
-
-               self.__popupWindow = gtk.Window(type = gtk.WINDOW_POPUP)
-               self.__popupWindow.set_title("")
-               self.__popupWindow.add(self.__calendar)
-               self.__popupWindow.set_transient_for(parent)
-               self.__popupWindow.set_modal(True)
+       def __init__(self, parent, displayDate):
+               self._displayDate = displayDate
+
+               self._calendar = gtk.Calendar()
+               self._calendar.select_month(self._displayDate.month, self._displayDate.year)
+               self._calendar.select_day(self._displayDate.day)
+               self._calendar.set_display_options(
+                       gtk.CALENDAR_SHOW_HEADING |
+                       gtk.CALENDAR_SHOW_DAY_NAMES |
+                       gtk.CALENDAR_NO_MONTH_CHANGE |
+                       0
+               )
+               self._calendar.connect("day-selected", self._on_day_selected)
 
-       def get_date(self):
-               year, month, day = self.__calendar.get_date()
-               month += 1 # Seems to be 0 indexed
-               return datetime.date(year, month, day)
+               self._popupWindow = gtk.Window()
+               self._popupWindow.set_title("")
+               self._popupWindow.add(self._calendar)
+               self._popupWindow.set_transient_for(parent)
+               self._popupWindow.set_modal(True)
 
        def run(self):
-               self.__popupWindow.show_all()
+               self._popupWindow.show_all()
 
-       def _on_date_select(self, *args):
-               self.__popupWindow.hide()
-               self._eventTarget.send((self, self.get_date()))
+       def _on_day_selected(self, *args):
+               try:
+                       self._calendar.select_month(self._displayDate.month, self._displayDate.year)
+                       self._calendar.select_day(self._displayDate.day)
+               except StandardError, e:
+                       warnings.warn(e.message)
 
 
 class EditTaskDialog(object):
@@ -514,4 +520,10 @@ if __name__ == "__main__":
                win.connect("destroy", lambda w: gtk.main_quit())
 
                win.show_all()
-               gtk.main()
+
+       if False:
+               cal = PopupCalendar(None, datetime.datetime.now())
+               cal._popupWindow.connect("destroy", lambda w: gtk.main_quit())
+               cal.run()
+
+       gtk.main()