All pastes #146218 Raw Edit

Someone

public text v1 · immutable
#146218 ·published 2006-08-23 12:45 UTC
rendered paste body
# call: self.CreateMenu(self.MenuTuple())

def MenuTuple(self):
	return (
			("p1", 
				("p1c1", "p1c2", self.OnQuit),
				("p1c12", "p1c22", self.OnQuit),
				("p1c13", "p1c23", self.OnQuit),
			),
			("p2",
				("p2c1", "p2c2", self.OnQuit),
				("p2c12p1", 
					("p2c12p1c1", "p2c12p1c2", self.OnQuit),
				),
			)
		)	
					
def CreateMenu(self, data):
	menu = {}
	menuBar = wx.MenuBar()
	if self.isTuple(data):
		for elements in data:
			parent, childs = elements[0], elements[1:]
			menu[parent] = wx.Menu()
			menuBar.Append(menu[parent], parent)		
			for elements in childs:
				if self.isTuple(elements[1]):
					subParent, childs = elements[0], elements[1:]
					menu[subParent] = wx.Menu()
					menu[parent].AppendMenu(wx.NewId(),subParent,menu[subParent])
					for elements in childs:
						label, status, handler = elements
						menuItem = menu[subParent].Append(wx.NewId(), label, status)
						self.Bind(wx.EVT_MENU, handler, menuItem)
				else:
					label, status, handler = elements
					menuItem = menu[parent].Append(wx.NewId(), label, status)
					self.Bind(wx.EVT_MENU, handler, menuItem)
		self.SetMenuBar(menuBar)

def isTuple(obj):
	import types
	return type(obj) == types.TupleType