first pass over propgrid code snippets

This commit is contained in:
Robin Dunn
2016-09-08 12:29:28 -07:00
parent 93b269ca82
commit fc85531951
17 changed files with 117 additions and 0 deletions

View File

@@ -0,0 +1,9 @@
class MyPropertyClass(wx.propgrid.DirProperty):
...
def DoGetValidator(self):
validator = MyValidator(...)
... prepare validator...
return validator

View File

@@ -0,0 +1,10 @@
class MyPropertyClass(wx.propgrid.FileProperty):
...
def DoGetValidator(self):
validator = MyValidator(...)
... prepare validator...
return validator

View File

@@ -0,0 +1,9 @@
class MyPropertyClass(wx.propgrid.FloatProperty):
...
def DoGetValidator(self):
validator = MyValidator(...)
... prepare validator...
return validator

View File

@@ -0,0 +1,9 @@
class MyPropertyClass(wx.propgrid.IntProperty):
...
def DoGetValidator(self):
validator = MyValidator(...)
... prepare validator...
return validator

View File

@@ -0,0 +1,2 @@
editorPointer = wx.propgrid.PropertyGrid.RegisterEditorClass(MyEditorClass(), "MyEditor")

View File

@@ -0,0 +1,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)

View File

@@ -0,0 +1,12 @@
# Register editor class - needs only to be called once
multiButtonEditor = SampleMultiButtonEditor()
wx.propgrid.PropertyGrid.RegisterEditorClass(multiButtonEditor)
# Insert the property that will have multiple buttons
propGrid.Append(
wx.propgrid.LongStringProperty("MultipleButtons", wx.propgrid.PG_LABEL))
# Change property to use editor created in the previous code segment
propGrid.SetPropertyEditor("MultipleButtons", multiButtonEditor)

View File

@@ -0,0 +1,10 @@
class MyPropertyClass(wx.propgrid.PGProperty):
...
def DoGetValidator(self):
validator = MyValidator(...)
... prepare validator...
return validator

View File

@@ -0,0 +1,9 @@
class MyPropertyClass(wx.propgrid.UIntProperty):
...
def DoGetValidator(self):
validator = MyValidator(...)
... prepare validator...
return validator