Phoenix Logo

phoenix_title wx.propgrid.PGMultiButton

This class can be used to have multiple buttons in a property editor.

You will need to create a new property editor class, override CreateControls, and have it return wx.propgrid.PGMultiButton instance in wx.propgrid.PGWindowList.SetSecondary .

For instance, here we add three buttons to a TextCtrl editor:

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)

Further to use this editor, code like this can be used:

# 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)

class_hierarchy Class Hierarchy

Inheritance diagram for class PGMultiButton:


method_summary Methods Summary

__init__ Constructor.
Add Adds new button, with given label.
AddBitmapButton A simple wrapper around the PGMultiButton.Add method, for backwards compatibility.
AddButton A simple wrapper around the PGMultiButton.Add method, for backwards compatibility.
Finalize Call this in CreateControls() of your custom editor class after all buttons have been added.
GetButton Returns pointer to one of the buttons.
GetButtonId Returns Id of one of the buttons.
GetCount Returns number of buttons.
GetPrimarySize Returns size of primary editor control, as appropriately reduced by number of buttons present.

property_summary Properties Summary

Count See GetCount
PrimarySize See GetPrimarySize

api Class API



class wx.propgrid.PGMultiButton(Window)

Possible constructors:

PGMultiButton(pg, sz)

This class can be used to have multiple buttons in a property editor.


Methods



__init__(self, pg, sz)

Constructor.

Parameters:


Add(self, *args, **kw)

overload Overloaded Implementations:



Add (self, label, id=-2)

Adds new button, with given label.

Parameters:
  • label (string) –
  • id (int) –



Add (self, bitmap, id=-2)

Adds new bitmap button.

Parameters:





AddBitmapButton(self, bitmap, id=-2)

A simple wrapper around the PGMultiButton.Add method, for backwards compatibility.



AddButton(self, label, id=-2)

A simple wrapper around the PGMultiButton.Add method, for backwards compatibility.



Finalize(self, propGrid, pos)

Call this in CreateControls() of your custom editor class after all buttons have been added.

Parameters:


GetButton(self, i)

Returns pointer to one of the buttons.

Parameters:i (int) –
Return type:Window


GetButtonId(self, i)

Returns Id of one of the buttons.

This is utility function to be used in event handlers.

Parameters:i (int) –
Return type:int


GetCount(self)

Returns number of buttons.

Return type:int


GetPrimarySize(self)

Returns size of primary editor control, as appropriately reduced by number of buttons present.

Return type:Size

Properties



Count

See GetCount



PrimarySize

See GetPrimarySize