From 03a36673c7796a2df8c0752e1ae68dcf6d4d0ffd Mon Sep 17 00:00:00 2001 From: Florian Pritz Date: Tue, 17 Mar 2009 21:11:39 +0100 Subject: moved python scripts --- shutdown.py | 97 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 97 insertions(+) create mode 100755 shutdown.py (limited to 'shutdown.py') diff --git a/shutdown.py b/shutdown.py new file mode 100755 index 0000000..6138a79 --- /dev/null +++ b/shutdown.py @@ -0,0 +1,97 @@ +#!/usr/bin/env python +#---------------------------------------------------- +# Version: 0.1.1 +# Author: Florian "Bluewind" Pritz +# +# Copyright (C) 2008-2009 Florian Pritz +# +# Licensed under GNU General Public License v3 +# (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() -- cgit v1.2.3-24-g4f1b