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):
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()