- #!/usr/bin/env python
- import pygtk
- pygtk.require('2.0')
- import gtk
- import os
- class DoTheLogOut:
- # Cancel/exit
- def delete_event(self, widget, event, data=None):
- gtk.main_quit()
- return False
- # Logout
- def logout(self, widget):
- os.system("openbox --exit")
- # Reboot
- def reboot(self, widget):
- os.system("gdm-control --reboot && openbox --exit")
- # Shutdown
- def shutdown(self, widget):
- os.system("gdm-control --shutdown && openbox --exit")
- def __init__(self):
- # Create stock items: labels + icons
- stock_items = (
- ("my-cancel", "Cancel", 0, 0, None),
- ("my-logout", "Log Out", 0, 0, None),
- ("my-reboot", "Reboot", 0, 0, None),
- ("my-shutdown", "Shutdown", 0, 0, None),
- )
- stock_aliases = (
- ("my-cancel", gtk.STOCK_CLOSE),
- ("my-logout", gtk.STOCK_UNDO),
- ("my-reboot", gtk.STOCK_REFRESH),
- ("my-shutdown", gtk.STOCK_STOP),
- )
- gtk.stock_add(stock_items)
- factory = gtk.IconFactory()
- factory.add_default()
- style = gtk.Style()
- for item, alias in stock_aliases:
- icon_set = style.lookup_icon_set(alias)
- factory.add(item, icon_set)
- # Create a new window
- self.window = gtk.Window(gtk.WINDOW_TOPLEVEL)
- self.window.set_title("Exit? Choose an option:")
- self.window.set_resizable(False)
- self.window.set_position(1)
- self.window.connect("delete_event", self.delete_event)
- self.window.set_border_width(20)
- # Create a box to pack widgets into
- self.box1 = gtk.HBox(False, 0)
- self.window.add(self.box1)
- # Create cancel button
- self.button1 = gtk.Button(stock="my-cancel")
- self.button1.set_border_width(10)
- self.button1.connect("clicked", self.delete_event, "Changed me mind :)")
- self.box1.pack_start(self.button1, True, True, 0)
- self.button1.show()
- # Create logout button
- self.button2 = gtk.Button(stock="my-logout")
- self.button2.set_border_width(10)
- self.button2.connect("clicked", self.logout)
- self.box1.pack_start(self.button2, True, True, 0)
- self.button2.show()
- # Create reboot button
- self.button3 = gtk.Button(stock="my-reboot")
- self.button3.set_border_width(10)
- self.button3.connect("clicked", self.reboot)
- self.box1.pack_start(self.button3, True, True, 0)
- self.button3.show()
- # Create shutdown button
- self.button4 = gtk.Button(stock="my-shutdown")
- self.button4.set_border_width(10)
- self.button4.connect("clicked", self.shutdown)
- self.box1.pack_start(self.button4, True, True, 0)
- self.button4.show()
- self.box1.show()
- self.window.show()
- def main():
- gtk.main()
- if __name__ == "__main__":
- gogogo = DoTheLogOut()
- main()