Systray icon

#!/usr/bin/python
# -*- coding: utf-8 -*-

# [SNIPPET_NAME: Systray icon]
# [SNIPPET_CATEGORIES: PyGTK]
# [SNIPPET_DESCRIPTION: Shows a system tray icon with a menu  ]
# [SNIPPET_AUTHOR: João Pinto <[email protected]>]
# [SNIPPET_LICENSE: GPL]
#


import gtk


class SystrayIconApp:
	def __init__(self):
		self.tray = gtk.StatusIcon()
		self.tray.set_from_stock(gtk.STOCK_ABOUT) 
		self.tray.connect('popup-menu', self.on_right_click)
		self.tray.set_tooltip(('Sample tray app'))
		

    	def on_right_click(self, icon, event_button, event_time):
		self.make_menu(event_button, event_time)

    	def make_menu(self, event_button, event_time):
		menu = gtk.Menu()

		# show about dialog
		about = gtk.MenuItem("About")
		about.show()
		menu.append(about)
		about.connect('activate', self.show_about_dialog)

		# add quit item
		quit = gtk.MenuItem("Quit")
		quit.show()
		menu.append(quit)
		quit.connect('activate', gtk.main_quit)

		menu.popup(None, None, gtk.status_icon_position_menu,
		           event_button, event_time, self.tray)

	def  show_about_dialog(self, widget):
		about_dialog = gtk.AboutDialog()
		about_dialog.set_destroy_with_parent (True)
		about_dialog.set_icon_name ("SystrayIcon")
		about_dialog.set_name('SystrayIcon')
		about_dialog.set_version('0.1')
		about_dialog.set_copyright("(C) 2010 João Pinto")
		about_dialog.set_comments(("Program to demonstrate a system tray icon"))
		about_dialog.set_authors(['João Pinto <[email protected]>'])
		about_dialog.run()
		about_dialog.destroy()

if __name__ == "__main__":
	SystrayIconApp()
	gtk.main()