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