From 80a93c9ae07bc148cae4e34647e679be8aa3022c Mon Sep 17 00:00:00 2001 From: Ed Page Date: Wed, 15 Apr 2009 22:41:29 -0500 Subject: [PATCH] Switching from a quick and dirty callback to using python signal stuff --- src/gtk_toolbox.py | 27 ++++++++++----------------- 1 file changed, 10 insertions(+), 17 deletions(-) diff --git a/src/gtk_toolbox.py b/src/gtk_toolbox.py index 210ce71..fada4ed 100644 --- a/src/gtk_toolbox.py +++ b/src/gtk_toolbox.py @@ -32,9 +32,9 @@ class ContextHandler(object): HOLD_TIMEOUT = 1000 MOVE_THRESHHOLD = 10 - def __init__(self, actionWidget, activationTarget = coroutines.null_sink()): + def __init__(self, actionWidget, eventTarget = coroutines.null_sink()): self._actionWidget = actionWidget - self._activationTarget = activationTarget + self._eventTarget = eventTarget self._actionPressId = None self._actionReleaseId = None @@ -64,7 +64,7 @@ class ContextHandler(object): widgetPosition[0] + position[0], widgetPosition[1] + position[1], ) - self._activationTarget.send((self._actionWidget, responsePosition)) + self._eventTarget.send((self._actionWidget, responsePosition)) def _clear(self): if self._holdTimerId is not None: @@ -304,7 +304,9 @@ class MessageBox2(gtk.MessageDialog): class PopupCalendar(object): - def __init__(self, parent): + 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) @@ -314,8 +316,6 @@ class PopupCalendar(object): self.__popupWindow.set_transient_for(parent) self.__popupWindow.set_modal(True) - self.callback = lambda: None - def get_date(self): year, month, day = self.__calendar.get_date() month += 1 # Seems to be 0 indexed @@ -326,10 +326,7 @@ class PopupCalendar(object): def _on_date_select(self, *args): self.__popupWindow.hide() - self.callback() - - def callback(self): - pass + self._eventTarget.send((self, self.get_date())) class EditTaskDialog(object): @@ -349,7 +346,7 @@ class EditTaskDialog(object): self._addButton = widgetTree.get_widget("edit-commitEditTaskButton") self._cancelButton = widgetTree.get_widget("edit-cancelEditTaskButton") - self._popupCalendar = PopupCalendar(self._dialog) + self._popupCalendar = PopupCalendar(self._dialog, coroutines.func_sink(self._update_duedate)) def enable(self, todoManager): self._populate_projects(todoManager) @@ -360,11 +357,7 @@ class EditTaskDialog(object): self._addButton.connect("clicked", self._on_add_clicked) self._cancelButton.connect("clicked", self._on_cancel_clicked) - self._popupCalendar.callback = self._update_duedate - def disable(self): - self._popupCalendar.callback = lambda: None - self._pasteTaskNameButton.disconnect("clicked", self._on_name_paste) self._dueDateProperties.disconnect("clicked", self._on_choose_duedate) self._clearDueDate.disconnect("clicked", self._on_clear_duedate) @@ -469,8 +462,8 @@ class EditTaskDialog(object): else: return str(index) - def _update_duedate(self): - date = self._popupCalendar.get_date() + def _update_duedate(self, eventData): + widget, date = eventData time = datetime.time() dueDate = datetime.datetime.combine(date, time) -- 1.7.9.5