#!/usr/bin/env python #---------------------------------------------------- # Version: 0.1.1 # Author: Florian "Bluewind" Pritz # # Licensed under WTFPL v2 # (see COPYING for full license text) # #---------------------------------------------------- # Display a small shutdown Dialog #---------------------------------------------------- # NOTE: # Please change the image paths to mach your icons. # Otherwise the script will crash. import gtk import os def create_bbox(title=None, spacing=0, layout=gtk.BUTTONBOX_SPREAD): bbox = gtk.VButtonBox() bbox.set_spacing(spacing) buttons = (('Cancel', 'gtk-cancel'), ('Suspend', 'gnome-session-suspend'), ('Reboot', 'gnome-session-reboot'), ('Halt', 'gnome-session-halt') ) for text, stock_id in buttons: image = gtk.Image() image.set_from_stock(stock_id, gtk.ICON_SIZE_LARGE_TOOLBAR) b = gtk.Button(text) b.set_image(image) b.set_data("user_data", text) b.connect("clicked", click, b) b.set_size_request(100, -1) b.set_alignment(0,1) bbox.add(b) return bbox def click(self, button): ret = button.get_data("user_data") self.hide() self.destroy() gtk.main_quit() if ret == "Reboot": os.system("sudo shutdown -r now") if ret == "Suspend": os.system("sudo pm-suspend") if ret == "Halt": os.system("sudo shutdown -h now") class ButtonBox(gtk.Window): def __init__(self, parent=None): # Create the toplevel window gtk.Window.__init__(self) try: self.set_screen(parent.get_screen()) except AttributeError: self.connect('destroy', lambda *w: gtk.main_quit()) self.set_title("Shutdown") #self.set_decorated(False) self.set_position(gtk.WIN_POS_CENTER) hbox = gtk.HBox() hbox.set_border_width(10) self.add(hbox) hbox.pack_start(create_bbox(None, 8, gtk.BUTTONBOX_START), padding=0) self.show_all() def register_iconsets(icon_info): iconfactory = gtk.IconFactory() stock_ids = gtk.stock_list_ids() for stock_id, file in icon_info: # only load image files when our stock_id is not present if stock_id not in stock_ids: pixbuf = gtk.gdk.pixbuf_new_from_file(file) iconset = gtk.IconSet(pixbuf) iconfactory.add(stock_id, iconset) iconfactory.add_default() register_iconsets([('gnome-session-suspend', '/usr/share/icons/hydroxygen/128x128/apps/gnome-session-suspend.png'), ('gnome-session-halt', '/usr/share/icons/hydroxygen/128x128/apps/gnome-session-halt.png'), ('gnome-session-reboot', '/usr/share/icons/hydroxygen/128x128/apps/gnome-session-reboot.png') ]) ButtonBox() gtk.main()