diff options
author | Paul Fox <pgf@laptop.org> | 2010-03-02 19:17:12 (GMT) |
---|---|---|
committer | Sayamindu Dasgupta <sayamindu@gmail.com> | 2010-03-02 19:17:52 (GMT) |
commit | 03d85c730d4bf9f1ce66dab900126500c1c81767 (patch) | |
tree | 2143ed55e7cdc2caa517353a7b41b2709fd0c1f4 /extensions/cpsection/power/model.py | |
parent | 7613aec1ba6a0ad637a30ce6667d80e4c6ab5283 (diff) |
Let power control panel auto-adapt to whether powerd or ohmd is in use.
Diffstat (limited to 'extensions/cpsection/power/model.py')
-rw-r--r-- | extensions/cpsection/power/model.py | 31 |
1 files changed, 30 insertions, 1 deletions
diff --git a/extensions/cpsection/power/model.py b/extensions/cpsection/power/model.py index c76035d..c02984a 100644 --- a/extensions/cpsection/power/model.py +++ b/extensions/cpsection/power/model.py @@ -17,20 +17,36 @@ from gettext import gettext as _ import gconf - import dbus +import os +import logging OHM_SERVICE_NAME = 'org.freedesktop.ohm' OHM_SERVICE_PATH = '/org/freedesktop/ohm/Keystore' OHM_SERVICE_IFACE = 'org.freedesktop.ohm.Keystore' +POWERD_FLAG_DIR = '/etc/powerd/flags' +POWERD_INHIBIT_FLAG = '/etc/powerd/flags/inhibit-suspend' + +_logger = logging.getLogger('ControlPanel - Power') + + class ReadError(Exception): def __init__(self, value): self.value = value def __str__(self): return repr(self.value) +def using_powerd(): + # directory exists if powerd running, and it's recent + # enough to be controllable. + return os.access(POWERD_FLAG_DIR, os.W_OK) + def get_automatic_pm(): + if using_powerd(): + return not os.access(POWERD_INHIBIT_FLAG, os.R_OK) + + # ohmd client = gconf.client_get_default() return client.get_bool('/desktop/sugar/power/automatic') @@ -40,6 +56,19 @@ def print_automatic_pm(): def set_automatic_pm(enabled): """Automatic suspends on/off.""" + if using_powerd(): + # powerd + if not os.access(POWERD_INHIBIT_FLAG, os.W_OK): + _logger.debug('File %s is not writeable' % POWERD_INHIBIT_FLAG) + return 0 + if enabled == 'off' or enabled == 0: + fd = open(POWERD_INHIBIT_FLAG, 'w') + fd.close() + else: + os.unlink(POWERD_INHIBIT_FLAG) + return 0 + + # ohmd bus = dbus.SystemBus() proxy = bus.get_object(OHM_SERVICE_NAME, OHM_SERVICE_PATH) keystore = dbus.Interface(proxy, OHM_SERVICE_IFACE) |