Renamed some of the hooks, added a config option to enable blur or not

This commit is contained in:
Andrew Williams
2009-01-11 22:07:37 +00:00
parent 3ab22f5e0b
commit e1aa378f66
2 changed files with 42 additions and 23 deletions

View File

@@ -2,15 +2,18 @@
import gtk, os import gtk, os
from PIL import Image, ImageFilter from PIL import Image, ImageFilter
import ConfigParser
import StringIO import StringIO
class OpenboxLogout(): class OpenboxLogout():
def __init__(self): def __init__(self, config=None):
self.load_config(config)
self.window = gtk.Window() self.window = gtk.Window()
self.window.set_title("Log Out ..") self.window.set_title("Log Out ..")
self.window.connect("destroy", self.doquit) self.window.connect("destroy", self.quit)
self.window.connect("key-press-event", self.onkeypress) self.window.connect("key-press-event", self.on_keypress)
self.window.set_size_request(620,200) self.window.set_size_request(620,200)
self.window.modify_bg(gtk.STATE_NORMAL, gtk.gdk.color_parse("black")) self.window.modify_bg(gtk.STATE_NORMAL, gtk.gdk.color_parse("black"))
self.window.set_decorated(gtk.FALSE) self.window.set_decorated(gtk.FALSE)
@@ -52,23 +55,27 @@ class OpenboxLogout():
pb = gtk.gdk.Pixbuf(gtk.gdk.COLORSPACE_RGB,False,8,sz[0],sz[1]) pb = gtk.gdk.Pixbuf(gtk.gdk.COLORSPACE_RGB,False,8,sz[0],sz[1])
pb = pb.get_from_drawable(w,w.get_colormap(),0,0,0,0,sz[0],sz[1]) pb = pb.get_from_drawable(w,w.get_colormap(),0,0,0,0,sz[0],sz[1])
# Convert Pixbuf to PIL Image if self.blur_background == True:
width,height = pb.get_width(),pb.get_height() # Convert Pixbuf to PIL Image
pilimg = Image.fromstring("RGB",(width,height),pb.get_pixels() ) width,height = pb.get_width(),pb.get_height()
pilimg = Image.fromstring("RGB",(width,height),pb.get_pixels() )
# Blur the image # Blur the image
pilimg = pilimg.filter(ImageFilter.BLUR) pilimg = pilimg.filter(ImageFilter.BLUR)
# "Convert" the PIL to Pixbuf via PixbufLoader
buf = StringIO.StringIO()
pilimg.save(buf, "ppm")
del pilimg
loader = gtk.gdk.PixbufLoader("pnm")
loader.write(buf.getvalue())
pixbuf = loader.get_pixbuf()
# "Convert" the PIL to Pixbuf via PixbufLoader # Cleanup IO
buf = StringIO.StringIO() buf.close()
pilimg.save(buf, "ppm") loader.close()
loader = gtk.gdk.PixbufLoader("pnm") else:
loader.write(buf.getvalue()) pixbuf = pb
pixbuf = loader.get_pixbuf()
# Cleanup IO
buf.close()
loader.close()
pixmap, mask = pixbuf.render_pixmap_and_mask() pixmap, mask = pixbuf.render_pixmap_and_mask()
# width, height = pixmap.get_size() # width, height = pixmap.get_size()
@@ -80,6 +87,16 @@ class OpenboxLogout():
del pixbuf del pixbuf
del pixmap del pixmap
def load_config(self, config):
if config == None:
config = '/etc/cb-openbox-logout.conf'
parser = ConfigParser.SafeConfigParser()
parser.read(config)
self.blur_background = parser.get("looks", "blurbackground")
def on_window_state_change(self, widget, event, *args): def on_window_state_change(self, widget, event, *args):
if event.new_window_state & gtk.gdk.WINDOW_STATE_FULLSCREEN: if event.new_window_state & gtk.gdk.WINDOW_STATE_FULLSCREEN:
self.window_in_fullscreen = True self.window_in_fullscreen = True
@@ -106,7 +123,7 @@ class OpenboxLogout():
# Cette fonction est invoquee quand on clique sur un bouton. # Cette fonction est invoquee quand on clique sur un bouton.
def clic_bouton(self, widget, data=None): def clic_bouton(self, widget, data=None):
if (data=='esc'): if (data=='esc'):
self.doquit() self.quit()
elif (data=='logout'): elif (data=='logout'):
os.system('openbox --exit') os.system('openbox --exit')
elif (data=='reboot'): elif (data=='reboot'):
@@ -115,11 +132,11 @@ class OpenboxLogout():
os.system('gdm-control --shutdown && openbox --exit') os.system('gdm-control --shutdown && openbox --exit')
def onkeypress(self, widget=None, event=None, data=None): def on_keypress(self, widget=None, event=None, data=None):
if event.keyval == gtk.keysyms.Escape: if event.keyval == gtk.keysyms.Escape:
self.doquit() self.quit()
def doquit(self, widget=None, data=None): def quit(self, widget=None, data=None):
gtk.main_quit() gtk.main_quit()
def run(self): def run(self):
@@ -127,5 +144,5 @@ class OpenboxLogout():
gtk.main() gtk.main()
if __name__ == "__main__": if __name__ == "__main__":
app = OpenboxLogout() app = OpenboxLogout('openbox-logout.conf')
app.run() app.run()

2
openbox-logout.conf Normal file
View File

@@ -0,0 +1,2 @@
[looks]
blurbackground = False