1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46
|
class SampleMultiButtonEditor(wx.propgrid.PGTextCtrlEditor):
def GetName(self):
return "SampleMultiButtonEditor"
def CreateControls(self, propGrid, aProperty, pos, size):
# Create and populate buttons-subwindow
buttons = wx.propgrid.PGMultiButton(propGrid, size)
# Add two regular buttons
buttons.Add("...")
buttons.Add("A")
# Add a bitmap button
buttons.Add(wx.ArtProvider.GetBitmap(wx.ART_FOLDER))
# Create the 'primary' editor control (textctrl in self case)
wndList = wx.propgrid.PGTextCtrlEditor.CreateControls(
propGrid, aProperty, pos, buttons.GetPrimarySize())
# Finally, move buttons-subwindow to correct position and make sure
# returned wx.propgrid.PGWindowList contains our custom button list.
buttons.Finalize(propGrid, pos)
wndList.SetSecondary(buttons)
return wndList
def OnEvent(self, propGrid, aProperty, ctrl, event):
if event.GetEventType() == wx.wxEVT_BUTTON:
buttons = propGrid.GetEditorControlSecondary()
if event.GetId() == buttons.GetButtonId(0):
# Do something when the first button is pressed
# Return true if the action modified the value in editor.
...
if event.GetId() == buttons.GetButtonId(1):
# Do something when the second button is pressed
...
if event.GetId() == buttons.GetButtonId(2):
# Do something when the third button is pressed
...
return wx.propgrid.PGTextCtrlEditor.OnEvent(propGrid, aProperty, ctrl, event)
|