olemis

olemis

Jan 15th, 2010
89
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.38 KB | None | 0 0
  1. import wx, wx.grid
  2.  
  3. UI_MENU = [
  4.                     ('Load from &file ...', True, None),
  5.                     ('&Save to file ...', True, None)
  6.                    ]
  7.  
  8. def populate_menus(par, skel, evsrc):
  9.   if isinstance(par, wx.MenuBar) :
  10.     for md in skel :
  11.         menu = wx.Menu()
  12.         populate_menus(menu, md[-1], evsrc)
  13.         par.Append(menu, md[0])
  14.   else :
  15.     for md in skel :
  16.         args = md[:-2]
  17.         submd = md[-1]
  18.         if submd :
  19.           subm = wx.Menu()
  20.           populate_menus(subm, submd, evsrc)
  21.           par.AppendMenu(-1, md[0], subm)
  22.         else :
  23.           menu = par.Append(-1, *args)
  24.  
  25. class MainForm(wx.Frame):
  26.   def __init__(self, parent, id):
  27.     pnlMain = wx.Panel(self, -1)
  28.     szrMain = wx.GridBagSizer(hgap=5, vgap=5)
  29.  
  30.     self.domlist = lc = wx.grid.Grid(pnlMain, -1, style=wx.WANTS_CHARS)
  31.     mdl = wx.grid.PyGridTableBase(self)
  32.     lc.SetTable(mdl, True, wx.grid.Grid.SelectRows)
  33.     lc.SetRowLabelSize(0);
  34.     lc.AutoSizeColumns();
  35.     szrMain.Add(lc, pos=(1, 0), span=(1,4), flag=wx.EXPAND | wx.FIXED_MINSIZE)
  36.     szrMain.AddGrowableCol(2)
  37.     szrMain.AddGrowableRow(1)
  38.     pnlMain.SetSizer(szrMain)
  39.     pnlMain.Layout()
  40.     self.Fit()
  41.     lc.Bind(wx.EVT_CONTEXT_MENU, self.OnGridPopup)
  42.  
  43.   def OnGridPopup(self, event):
  44.     menu = wx.Menu()
  45.     populate_menus(menu, UI_MENU, self)
  46.     self.domlist.PopupMenu(menu)
  47.  
  48.  
Add Comment
Please, Sign In to add comment