All pastes #146760 Raw Edit

Anonymous

public text v1 · immutable
#146760 ·published 2006-08-23 21:03 UTC
rendered paste body
import 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)