Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import wx, wx.grid
- UI_MENU = [
- ('Load from &file ...', True, None),
- ('&Save to file ...', True, None)
- ]
- def populate_menus(par, skel, evsrc):
- if isinstance(par, wx.MenuBar) :
- for md in skel :
- menu = wx.Menu()
- populate_menus(menu, md[-1], evsrc)
- par.Append(menu, md[0])
- else :
- for md in skel :
- args = md[:-2]
- submd = md[-1]
- if submd :
- subm = wx.Menu()
- populate_menus(subm, submd, evsrc)
- par.AppendMenu(-1, md[0], subm)
- else :
- menu = par.Append(-1, *args)
- class MainForm(wx.Frame):
- def __init__(self, parent, id):
- pnlMain = wx.Panel(self, -1)
- szrMain = wx.GridBagSizer(hgap=5, vgap=5)
- self.domlist = lc = wx.grid.Grid(pnlMain, -1, style=wx.WANTS_CHARS)
- mdl = wx.grid.PyGridTableBase(self)
- lc.SetTable(mdl, True, wx.grid.Grid.SelectRows)
- lc.SetRowLabelSize(0);
- lc.AutoSizeColumns();
- szrMain.Add(lc, pos=(1, 0), span=(1,4), flag=wx.EXPAND | wx.FIXED_MINSIZE)
- szrMain.AddGrowableCol(2)
- szrMain.AddGrowableRow(1)
- pnlMain.SetSizer(szrMain)
- pnlMain.Layout()
- self.Fit()
- lc.Bind(wx.EVT_CONTEXT_MENU, self.OnGridPopup)
- def OnGridPopup(self, event):
- menu = wx.Menu()
- populate_menus(menu, UI_MENU, self)
- self.domlist.PopupMenu(menu)
Add Comment
Please, Sign In to add comment