Guest

coolio

By: a guest on Aug 12th, 2009  |  syntax: None  |  size: 2.88 KB  |  hits: 493  |  expires: Never
download  |  raw  |  embed  |  report abuse
Copied
  1. #!/usr/bin/env python
  2.  
  3. import pygtk
  4. pygtk.require('2.0')
  5. import gtk
  6. import os
  7.  
  8. class DoTheLogOut:
  9.  
  10.     # Cancel/exit
  11.     def delete_event(self, widget, event, data=None):
  12.         gtk.main_quit()
  13.         return False
  14.  
  15.     # Logout
  16.     def logout(self, widget):
  17.         os.system("openbox --exit")
  18.  
  19.     # Reboot
  20.     def reboot(self, widget):
  21.         os.system("gdm-control --reboot && openbox --exit")
  22.  
  23.     # Shutdown
  24.     def shutdown(self, widget):
  25.         os.system("gdm-control --shutdown && openbox --exit")
  26.  
  27.     def __init__(self):
  28.         # Create stock items: labels + icons
  29.         stock_items = (
  30.         ("my-cancel", "Cancel", 0, 0, None),
  31.         ("my-logout", "Log Out", 0, 0, None),
  32.         ("my-reboot", "Reboot", 0, 0, None),
  33.         ("my-shutdown", "Shutdown", 0, 0, None),
  34.         )
  35.  
  36.         stock_aliases = (
  37.         ("my-cancel", gtk.STOCK_CLOSE),
  38.         ("my-logout", gtk.STOCK_UNDO),
  39.         ("my-reboot", gtk.STOCK_REFRESH),
  40.         ("my-shutdown", gtk.STOCK_STOP),
  41.         )
  42.  
  43.         gtk.stock_add(stock_items)
  44.  
  45.         factory = gtk.IconFactory()
  46.         factory.add_default()
  47.  
  48.         style = gtk.Style()
  49.  
  50.         for item, alias in stock_aliases:
  51.             icon_set = style.lookup_icon_set(alias)
  52.             factory.add(item, icon_set)
  53.  
  54.         # Create a new window
  55.         self.window = gtk.Window(gtk.WINDOW_TOPLEVEL)
  56.         self.window.set_title("Exit? Choose an option:")
  57.         self.window.set_resizable(False)
  58.         self.window.set_position(1)
  59.         self.window.connect("delete_event", self.delete_event)
  60.         self.window.set_border_width(20)
  61.  
  62.         # Create a box to pack widgets into
  63.         self.box1 = gtk.HBox(False, 0)
  64.         self.window.add(self.box1)
  65.  
  66.         # Create cancel button
  67.         self.button1 = gtk.Button(stock="my-cancel")
  68.         self.button1.set_border_width(10)
  69.         self.button1.connect("clicked", self.delete_event, "Changed me mind :)")
  70.         self.box1.pack_start(self.button1, True, True, 0)
  71.         self.button1.show()
  72.  
  73.         # Create logout button
  74.         self.button2 = gtk.Button(stock="my-logout")
  75.         self.button2.set_border_width(10)
  76.         self.button2.connect("clicked", self.logout)
  77.         self.box1.pack_start(self.button2, True, True, 0)
  78.         self.button2.show()
  79.  
  80.         # Create reboot button
  81.         self.button3 = gtk.Button(stock="my-reboot")
  82.         self.button3.set_border_width(10)
  83.         self.button3.connect("clicked", self.reboot)
  84.         self.box1.pack_start(self.button3, True, True, 0)
  85.         self.button3.show()
  86.  
  87.         # Create shutdown button
  88.         self.button4 = gtk.Button(stock="my-shutdown")
  89.         self.button4.set_border_width(10)
  90.         self.button4.connect("clicked", self.shutdown)
  91.         self.box1.pack_start(self.button4, True, True, 0)
  92.         self.button4.show()
  93.  
  94.         self.box1.show()
  95.         self.window.show()
  96.  
  97. def main():
  98.     gtk.main()
  99.  
  100. if __name__ == "__main__":
  101.     gogogo = DoTheLogOut()
  102.     main()