# Bryan Schumaker

import ocarina

gtk      = ocarina.gtk
Menu     = gtk.Menu
MenuItem = gtk.MenuItem

common_items = []
lib_items    = []
plist_items  = []
queue_items  = []

def add_menu_item(items, text, func):
	items.append( (text, func) )
	items.sort()

def add_common_menu_item(text, func):
	add_menu_item(common_items, text, func)

def add_lib_menu_item(text, func):
	add_menu_item(lib_items, text, func)

def add_plist_menu_item(text, func):
	add_menu_item(plist_items, text, func)

def add_queue_menu_item(text, func):
	add_menu_item(queue_items, text, func)

def make_menu_item(text, func):
	item = MenuItem(text)
	item.connect("activate", func)
	item.show()
	return item

def make_menu(items, button, time):
	show = False
	if len(items) > 0:
		show = True
	menu = Menu()

	if len(common_items) > 0:
		show = True
		for (text, func) in common_items:
			menu.append(make_menu_item(text, func))
		if len(items) > 0:
			div = MenuItem()
			div.show()
			menu.append(div)

	for (text, func) in items:
		menu.append(make_menu_item(text, func))
	if show == True:
		menu.popup(None, None, None, button, time)

def make_lib_menu(button, time):
	make_menu(lib_items, button, time)

def make_plist_menu(button, time):
	make_menu(plist_items, button, time)

def make_queue_menu(button, time):
	make_menu(queue_items, button, time)
