All pastes #147445 Raw Edit

Stuff

public text v1 · immutable
#147445 ·published 2006-08-24 11:48 UTC
rendered paste body
import wx
import pprint

# Usage in main Frame
#		gen = MenuGenerator()
#		fileMenu = gen.NewTopMenu("File")
#		gen.NewMenu(fileMenu, "Quit", handler=self.OnQuit)
#		gen.ConstructMenu()
#		self.SetMenuBar(gen.GetMenuBar())

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):
		wxMenu = wx.Menu()
		self.menuDict[newMenu] = 	{ 
							"name": newMenu,
							"wxMenu": wxMenu,
							"parent": self.menuBar,
						}
		return wxMenu
	
	def NewMenu(self, parent, newMenu, status="", handler=None, image=None):
		wxMenu = wx.Menu()
		self.menuDict[newMenu] = 	{ 
							"name": newMenu,
							"wxMenu": wxMenu,
							"parent": parent,
							"status": status,
							"handler": handler,
							"image": image,
						}
		return wxMenu

	def ConstructMenu(self):
		for newMenu, menuData in self.menuDict.items():
			if menuData["parent"] == self.menuBar:
				self.menuBar.Append(menuData["wxMenu"],  menuData["name"])
			else:
				if menuData["image"] is not None:
					menuItem = self.MenuImager(menuData["wxMenu"], menuData["name"], menuData["status"], menuData["image"])
					menuData["parent"].AppendItem(menuItem)
				else:
					menuItem = menuData["parent"].Append(wx.NewId(), menuData["name"], menuData["status"])
				if menuData["handler"] is not None:
					self.Bind(wx.EVT_MENU, menuData["handler"], menuItem)

	def MenuImager(self, menu, name, status, image):
		menuItem = wx.MenuItem(menu, wx.NewId(),name, status)
		menuItem.SetBitmap(wx.Image(image, wx.BITMAP_TYPE_PNG).ConvertToBitmap())
		return menuItem

	def Print(self):
		pprint.pprint(self.menuDict)