# pylint: disable=C0111,R0903

"""Enable/disable automatic screen locking.

Requires the following executables:
    * xset
    * notify-send
"""

import bumblebee.input
import bumblebee.output
import bumblebee.engine

class Module(bumblebee.engine.Module):
    def __init__(self, engine, config):
        super(Module, self).__init__(engine, config,
            bumblebee.output.Widget(full_text=self.caffeine)
        )
        engine.input.register_callback(self, button=bumblebee.input.LEFT_MOUSE,
            cmd=self._toggle
        )

    def caffeine(self, widget):
        return ""

    def state(self, widget):
        if self._active():
            return "activated"
        return "deactivated"

    def _active(self):
        for line in bumblebee.util.execute("xset q").split("\n"):
            if "timeout" in line:
                timeout = int(line.split(" ")[4])
                if timeout == 0:
                    return True
                return False
        return False

    def _toggle(self, widget):
        if self._active():
            bumblebee.util.execute("xset s default")
            bumblebee.util.execute("notify-send \"Out of coffee\"")
        else:
            bumblebee.util.execute("xset s off")
            bumblebee.util.execute("notify-send \"Consuming caffeine\"")

# vim: tabstop=8 expandtab shiftwidth=4 softtabstop=4