remove GSource used by TimeoutAlert

For an object of class TimeoutAlert, an OK response occurs on timeout,
even if user has clicked a button.

Remove the timeout when the user clicks a button.

A new method _response is added which overrides the parent method.
This commit is contained in:
James Cameron 2015-10-15 11:17:41 +11:00
parent e16f8ec61b
commit cfeabdc3af

View File

@ -402,16 +402,20 @@ class TimeoutAlert(Alert):
self.add_button(Gtk.ResponseType.OK, _('Continue'), self._timeout_text) self.add_button(Gtk.ResponseType.OK, _('Continue'), self._timeout_text)
self._timeout_text.show() self._timeout_text.show()
GLib.timeout_add_seconds(1, self.__timeout) self._timeout_sid = GLib.timeout_add(1000, self.__timeout)
def __timeout(self): def __timeout(self):
self._timeout -= 1 self._timeout -= 1
self._timeout_text.set_text(self._timeout) self._timeout_text.set_text(self._timeout)
if self._timeout == 0: if self._timeout == 0:
self._response(Gtk.ResponseType.OK) Alert._response(self, Gtk.ResponseType.OK)
return False return False
return True return True
def _response(self, *args):
GLib.source_remove(self._timeout_sid)
Alert._response(self, *args)
class NotifyAlert(Alert): class NotifyAlert(Alert):
""" """