rendered paste bodyimport wx
import pprint
class MenuGenerator(wx.Menu, wx.Frame):
def __init__(self):
wx.Menu.__init__(self)
self.menuDict = {}
self.menuBar = wx.MenuBar()
def GetMenuBar(self):
return self.menuBar
def NewTopMenu(self, newMenu):
menu = wx.Menu()
self.menuDict[newMenu] = {
"menu": menu,
"parent": self.menuBar,
}
return menu
def NewMenu(self, parent, newMenu, status=None, handler=None, image=None):
menu = wx.Menu()
self.menuDict[newMenu] = {
"name": newMenu,
"menu": wx.Menu(),
"parent": parent,
"status": status,
"handler": handler,
"image": image,
}
return menu
def ConstructMenu(self):
for menu, values in self.menuDict.items():
if values["parent"] == self.menuBar:
self.menuBar.Append(values["menu"], menu)
else:
if values["image"] is not None:
menuItem = wx.MenuItem(values["menu"], wx.NewId(),values["name"], values["status"])
menuItem.SetBitmap(wx.Image(values["image"], wx.BITMAP_TYPE_PNG).ConvertToBitmap())
values["parent"].AppendItem(menuItem)
else:
menuItem = values["parent"].Append(wx.NewId(), values["name"], values["status"])
if values["handler"] is not None:
# problems here. It doesn't work!
self.Bind(wx.EVT_MENU, values["handler"], menuItem)
def Print(self):
pprint.pprint(self.menuDict)