#!/usr/bin/env python

import sys
import os
import gtk
import gobject


class Popup (gtk.Window):
	def __init__ (self, status, widget):
		gtk.Window.__init__ (self)
		self.set_decorated (False)
		self.set_skip_taskbar_hint (True)
		self.set_skip_pager_hint (True)
		self.set_keep_above (True)
		self.set_resizable (False)		
		ebox = gtk.EventBox ()
		ebox.set_visible_window (True)
		ebox.set_above_child (True)
		ebox.add (label)
		ebox.modify_bg (gtk.STATE_NORMAL, gtk.gdk.Color (65535, 65535, 56576))
		ebox.set_border_width (1)
		ebox.show ()
		self.add (ebox)
		self.show ()
		scr, rect, orient = widget.get_geometry ()
		wdir = (rect.x > scr.get_width () / 2) and -1 or 1
		hdir = (rect.y > scr.get_height () / 2) and -1 or 1
		width, height = self.get_size ()
		self.modify_bg (gtk.STATE_NORMAL, gtk.gdk.Color (0,0,0))
		self.move (rect.x + (width / 2) * wdir, rect.y + (height / 2) * hdir)
                self.volume = alsa.Mixer('Master').getvolume()[0]

class VolumeStatusIcon(gtk.StatusIcon):
	def __init__(self):
		gtk.StatusIcon.__init__(self)
		menu = '''
		<ui>
			<menubar name="Menubar">
				<menu action="Menu">
					<menuitem action="About"/>
					<separator/>
					<menuitem action="Quit"/>
				</menu>
			</menubar>
		</ui>
		'''
		actions = [
			('Menu',None, 'Menu'),
			
			
			('About', gtk.STOCK_ABOUT, '_About...', None, 'About Volume Applet', self.on_about),
			('Quit', gtk.STOCK_QUIT, '_Quit...', None, 'Quit Volume Applet', gtk.main_quit)]
		ag = gtk.ActionGroup('Actions')
		ag.add_actions(actions)
		self.manager = gtk.UIManager()
		self.manager.insert_action_group(ag, 0)
		self.manager.add_ui_from_string(menu)
		self.menu = self.manager.get_widget('/Menubar/Menu/About').props.parent
		self.set_from_file('/usr/share/icons/gnome/22x22/status/audio-volume-high.png')
		self.set_tooltip('Volume Control')
		self.set_visible(True)
		self.connect('activate', self.on_activate)
		self.connect('popup-menu', self.on_popup_menu)
	
	def on_activate(self, data):
		tst="gnome-volume-control"
		os.spawnlp (os.P_NOWAIT, tst, tst)

	def on_popup_menu(self, status, button, time):
		self.menu.popup(None, None, None, button, time)


	def on_about(self, data):
		dialog = gtk.AboutDialog()
		dialog.set_name('Gnome-Volume-Control')
		dialog.set_version('0.0.0')
		dialog.set_comments('A System Tray Volume Controller Thing')
		dialog.set_logo(gtk.gdk.pixbuf_new_from_file_at_size('/usr/share/icons/gnome/scalable/status/audio-volume-high.svg', 64, 64))
		dialog.run()
		dialog.destroy()

if __name__ == '__main__':
	VolumeStatusIcon()
	gtk.main()

