# pylint: disable=C0111,R0903 """Displays the status of watson (time-tracking tool) Requires the following executable: * watson """ import bumblebee.input import bumblebee.output import bumblebee.engine import bumblebee.util import bumblebee.popup_v2 import logging import re import functools class Module(bumblebee.engine.Module): def __init__(self, engine, config): super(Module, self).__init__(engine, config, bumblebee.output.Widget(full_text=self.text)) self._tracking = False self._project = "" engine.input.register_callback(self, button=bumblebee.input.LEFT_MOUSE, cmd=self.toggle) def toggle(self, widget): self._project = "hit" if self._tracking: bumblebee.util.execute("watson stop") else: bumblebee.util.execute("watson restart") self._tracking = not self._tracking def text(self, widget): if self._tracking: return self._project else: return "Paused" def update(self, widgets): output = bumblebee.util.execute("watson status") if re.match('No project started', output): self._tracking = False return self._tracking = True m = re.search(r'Project (.+) started', output) self._project = m.group(1) # def state(self, widget): return "on" if self._tracking else "off" # return [widget.get("status", None), widget.get("period", None)] # vim: tabstop=8 expandtab shiftwidth=4 softtabstop=4