#!/usr/bin/python

import wx

class MItem(wx.MenuItem):
    def __init__(self, parent, label):
        wx.MenuItem.__init__(self, parent, -1, label)
        self.data = None
    
    def SetData(self, data):
        #Store custom data
        self.data = data
        
    def GetData(self):
        #Get custom data
        return self.data

class MyFrame(wx.Frame):
    def __init__(self, parent, id, title):
        wx.Frame.__init__(self, parent, id, title, wx.DefaultPosition, wx.Size(350, 300))
        self.Bind(wx.EVT_CONTEXT_MENU, self.OnContextMenu)
        self.Centre()
        
    def OnContextMenu(self, event):
        menu = wx.Menu()
        
        sm = wx.Menu()
        
        item = MItem(sm, "one")
        item.SetHelp("Help goes here")
        #Store custom data
        item.SetData([1,2,3])
        
        sm.AppendItem(item)
        menu.AppendMenu(-1, "Test Submenu", sm)
        
        self.Bind(wx.EVT_MENU, self.OnPopup, item)
        self.PopupMenu(menu)
        menu.Destroy()
        
    def OnPopup(self, event=None):
        help = event.GetEventObject().FindItemById(event.GetId()).GetHelp()
        data = event.GetEventObject().FindItemById(event.GetId()).GetData()
        print help, data
        


class MyApp(wx.App):
    def OnInit(self):
        frame = MyFrame(None, -1, 'wx.MenuItem Test')
        frame.Show(True)
        self.SetTopWindow(frame)
        return True

app = MyApp(0)
app.MainLoop()