summaryrefslogtreecommitdiffstats
path: root/powermanager/gpmhelper.py
diff options
context:
space:
mode:
Diffstat (limited to 'powermanager/gpmhelper.py')
-rw-r--r--powermanager/gpmhelper.py147
1 files changed, 0 insertions, 147 deletions
diff --git a/powermanager/gpmhelper.py b/powermanager/gpmhelper.py
deleted file mode 100644
index 65094f7..0000000
--- a/powermanager/gpmhelper.py
+++ /dev/null
@@ -1,147 +0,0 @@
-#!/usr/bin/python
-# -*- coding: UTF-8 -*-
-"""
-Copyright 2008 Sebastian Kügler, Canonical Ltd, Luka Renko
-
-Authors:
- Andreas Wenning <awen@awen.dk>
-
-This program is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2 of the License, or
-(at your option) any later version.
-
-"""
-
-"""
-A frontend to HAL's power features for KDE - Helper application
-This application listens for HAL signals and issues dcop-calls to the
-kde-power-manager that originally started it. To avoid the need for
-kde-power-manager to shut it's helper down, this application
-will automatically shut down if it's kde-power-manager isn't running.
-"""
-
-import dbus, sys, time
-from dbus.mainloop.glib import DBusGMainLoop
-import gobject
-from dcopext import DCOPClient, DCOPObj, DCOPApp
-
-class GPMHelper():
- def mother_alive(self):
- """Check that our mother is still alive"""
- found = False
- for name in self.dcop.registeredApplications():
- name = str(name)
- if name == self.motherName:
- found = True
- if not found:
- """No mother; commit suicide"""
- print "guidance-power-manager not alive; exiting"
- loop.quit()
-
- """Called when signal is received"""
- def signal_recv(self, *args):
- if args[0] == "ButtonPressed":
- if args[1] == "brightness-up":
- if time.time()-0.02 <= self.last_brightness_up <= time.time():
- """Most likely an extra brightness-up call, discarding"""
- print "Extra brightness-up call discarded"
- return
- try:
- ok, foo = self.mother.brightnessUp()
- if not ok:
- print "brightnessUp-call failed"
- return self.mother_alive()
- self.last_brightness_up = time.time()
- except:
- print "brightnessUp-call failed"
- return self.mother_alive()
- elif args[1] == "brightness-down":
- if time.time()-0.02 <= self.last_brightness_down <= time.time():
- """Most likely an extra brightness-down call, discarding"""
- print "Extra brightness-down call discarded"
- return
- try:
- ok, foo = self.mother.brightnessDown()
- if not ok:
- print "brightnessDown-call failed"
- return self.mother_alive()
- self.last_brightness_down = time.time()
- except:
- print "brightnessDown-call failed"
- return self.mother_alive()
- elif args[1] == "sleep":
- if time.time()-1 <= self.last_sleep <= time.time():
- """Most likely an extra sleep-call, discarding"""
- print "Extra sleep-call discarded"
- return
- try:
- ok, foo = self.mother.suspend()
- if not ok:
- print "suspend-call failed"
- return self.mother_alive()
- self.last_sleep = time.time()
- except:
- print "suspend-call failed"
- return self.mother_alive()
- elif args[1] == "hibernate":
- if time.time()-1 <= self.last_hibernate <= time.time():
- """Most likely an extra hibernate-call, discarding"""
- print "Extra hibernate-call discarded"
- return
- try:
- ok, foo = self.mother.hibernate()
- if not ok:
- print "hibernate-call failed"
- return self.mother_alive()
- self.last_hibernate = time.time()
- except:
- print "hibernate failed"
- return self.mother_alive()
-
- def __init__(self):
- """Connect to HAL"""
- self.dbus_loop = DBusGMainLoop(set_as_default=True)
- self.bus = dbus.SystemBus(mainloop=self.dbus_loop)
- hal_manager_obj = self.bus.get_object("org.freedesktop.Hal",u'/org/freedesktop/Hal/Manager')
- self.hal_manager = dbus.Interface(hal_manager_obj, "org.freedesktop.Hal.Manager")
-
- """Find button-devices and to connect to"""
- button_devices = self.hal_manager.FindDeviceByCapability("button")
- for device in button_devices:
- self.bus.add_signal_receiver(self.signal_recv,
- "Condition",
- "org.freedesktop.Hal.Device",
- "org.freedesktop.Hal",
- device)
- """Let's find our mother"""
- self.dcop = DCOPClient()
- self.dcop.attach()
- found = False
- for name in self.dcop.registeredApplications():
- name = str(name)
- if name.startswith('guidance-'):
- self.motherName = name
- try:
- self.mother = DCOPObj(name, self.dcop, 'power-manager')
- found = True
- except:
- """Do nothing, catched by found=False"""
- break
- if not found:
- """No mother; commit suicide"""
- print "No guidance-power-manager is running"
- sys.exit()
-
- """Some laptops issue double sleep/hibernate-calls, we need to discard one in that case"""
- self.last_sleep = 0
- self.last_hibernate = 0
-
- """And multiple brightness calls is also possible"""
- self.last_brightness_up = 0
- self.last_brightness_down = 0
-
-if __name__ == "__main__":
- gpmh = GPMHelper()
- loop = gobject.MainLoop()
- loop.run()