From d3228cc8beb0fafcdcd5850ddfa9e95d9a1e26c4 Mon Sep 17 00:00:00 2001 From: enkore Date: Tue, 19 Feb 2013 01:59:59 +0100 Subject: [PATCH] Reworked that (again) --- i3pystatus/thunderbird.py | 19 +++++++++---------- 1 file changed, 9 insertions(+), 10 deletions(-) diff --git a/i3pystatus/thunderbird.py b/i3pystatus/thunderbird.py index 1bee801..3336a5c 100644 --- a/i3pystatus/thunderbird.py +++ b/i3pystatus/thunderbird.py @@ -7,15 +7,17 @@ # The plugin must be active and thunderbird running for the module to work # properly. -import dbus, gobject -from dbus.mainloop.glib import DBusGMainLoop import json import threading import time +from functools import partial -from i3pystatus import AsyncModule +import dbus, gobject +from dbus.mainloop.glib import DBusGMainLoop -class ThunderbirdMailChecker(AsyncModule): +from i3pystatus import IntervalModule + +class ThunderbirdMailChecker(IntervalModule): """ This class listens for dbus signals emitted by the dbus-sender extension for thunderbird. @@ -24,8 +26,8 @@ class ThunderbirdMailChecker(AsyncModule): settings = { "format": "%d new email" } - unread = set() + interval = 1 def __init__(self, settings=None): if settings is not None: @@ -43,10 +45,7 @@ class ThunderbirdMailChecker(AsyncModule): dbus.mainloop.glib.threads_init() self.context = loop.get_context() - def mainloop(self): - while True: - self.context.iteration(False) - time.sleep(1) + self.run = partial(self.context.iteration, False) def new_msg(self, id, author, subject): if id not in self.unread: @@ -59,7 +58,7 @@ class ThunderbirdMailChecker(AsyncModule): self._output() def _output(self): - self.context.iteration(False) + self.run() unread = len(self.unread) if unread: