.. wxPython Phoenix documentation

   This file was generated by Phoenix's sphinx generator and associated
   tools, do not edit by hand.

   Copyright: (c) 2011-2020 by Total Control Software
   License:   wxWindows License

.. include:: headings.inc



.. _wx.propgrid.PGEditor:

==========================================================================================================================================
|phoenix_title|  **wx.propgrid.PGEditor**
==========================================================================================================================================

Base class for custom :ref:`wx.propgrid.PropertyGrid`  editors. 
         









.. note:: 

   

   - Names of built-in property editors are: TextCtrl, Choice, ComboBox, CheckBox, TextCtrlAndButton, and ChoiceAndButton. Additional editors include SpinCtrl and DatePickerCtrl, but using them requires calling :meth:`wx.propgrid.PropertyGrid.RegisterAdditionalEditors <wx.propgrid.PropertyGridInterface.RegisterAdditionalEditors>`   prior use. 
   - Pointer to built-in editor is available as PGEditor_EditorName (e.g. PGEditor_TextCtrl). 
   - Before you start using new editor you just created, you need to register it using static function :meth:`wx.propgrid.PropertyGrid.RegisterEditorClass` , with code like this: ::

    editorPointer = wx.propgrid.PropertyGrid.RegisterEditorClass(MyEditorClass(), "MyEditor")

   After that, :ref:`wx.propgrid.PropertyGrid`  will take ownership of the given object, but you should still store editorPointer somewhere, so you can pass it to :meth:`wx.propgrid.PGProperty.SetEditor` , or return it from `PGEditor.DoGetEditorClass().` 










|

|class_hierarchy| Class Hierarchy
=================================

.. raw:: html

   <div id="toggleBlock" onclick="return toggleVisibility(this)" class="closed" style="cursor:pointer;">
   <img id="toggleBlock-trigger" src="_static/images/closed.png"/>
   Inheritance diagram for class <strong>PGEditor</strong>:
   </div>
   <div id="toggleBlock-summary" style="display:block;"></div>
   <div id="toggleBlock-content" style="display:none;">
   <p class="graphviz">
   <center><img src="_static/images/inheritance/wx.propgrid.PGEditor_inheritance.svg" alt="Inheritance diagram of PGEditor" usemap="#dummy" class="inheritance"/></center>
   <script type="text/javascript">toggleVisibilityOnLoad(document.getElementById('toggleBlock'))</script>
   <map id="dummy" name="dummy"> <area shape="rect" id="node1" href="wx.propgrid.PGEditor.html" title="Base class for custom wx.propgrid.PropertyGrid  editors." alt="" coords="5,82,186,111"/> <area shape="rect" id="node2" href="wx.Object.html" title="This is the root class of many of the wxWidgets classes." alt="" coords="46,5,145,34"/> </map> 
   </p>
   </div>

|


|sub_classes| Known Subclasses
==============================

:ref:`wx.propgrid.PGCheckBoxEditor`, :ref:`wx.propgrid.PGChoiceEditor`, :ref:`wx.propgrid.PGTextCtrlEditor`

|


|method_summary| Methods Summary
================================

================================================================================ ================================================================================
:meth:`~wx.propgrid.PGEditor.__init__`                                           Constructor.
:meth:`~wx.propgrid.PGEditor.CanContainCustomImage`                              Returns ``True`` if control itself can contain the custom image.
:meth:`~wx.propgrid.PGEditor.CreateControls`                                     Instantiates editor controls.
:meth:`~wx.propgrid.PGEditor.DeleteItem`                                         Deletes item from existing control.
:meth:`~wx.propgrid.PGEditor.DrawValue`                                          Draws value for given property.
:meth:`~wx.propgrid.PGEditor.GetName`                                            Returns pointer to the name of the editor.
:meth:`~wx.propgrid.PGEditor.GetValueFromControl`                                Returns value from control, via parameter `variant`.
:meth:`~wx.propgrid.PGEditor.InsertItem`                                         Inserts item to existing control.
:meth:`~wx.propgrid.PGEditor.OnEvent`                                            Handles events.
:meth:`~wx.propgrid.PGEditor.OnFocus`                                            Extra processing when control gains focus.
:meth:`~wx.propgrid.PGEditor.SetControlAppearance`                               Called by property grid to set new appearance for the control.
:meth:`~wx.propgrid.PGEditor.SetControlIntValue`                                 Sets control's value specifically from int (applies to choice etc.).
:meth:`~wx.propgrid.PGEditor.SetControlStringValue`                              Sets control's value specifically from string.
:meth:`~wx.propgrid.PGEditor.SetValueToUnspecified`                              Sets value in control to unspecified.
:meth:`~wx.propgrid.PGEditor.UpdateControl`                                      Loads value from property to the control.
================================================================================ ================================================================================


|


|property_summary| Properties Summary
=====================================

================================================================================ ================================================================================
:attr:`~wx.propgrid.PGEditor.Name`                                               See :meth:`~wx.propgrid.PGEditor.GetName`
:attr:`~wx.propgrid.PGEditor.m_clientData`                                       A public C++ attribute of type ````.
================================================================================ ================================================================================


|


|api| Class API
===============


.. class:: wx.propgrid.PGEditor(Object)

   **Possible constructors**::

       PGEditor() -> None
       
   
   Base class for custom PropertyGrid editors.



   .. method:: __init__(self)

      Constructor. 
                 

      :rtype: `None`     








   .. method:: CanContainCustomImage(self)

      Returns ``True`` if control itself can contain the custom image. 
                 

      Default implementation returns ``False``. 
                 

      :rtype: `bool`








   .. method:: CreateControls(self, propgrid, property, pos, size)

      Instantiates editor controls. 
                 




      :param `propgrid`: :ref:`wx.propgrid.PropertyGrid`  to which the property belongs (use as parent for control).  
      :type `propgrid`: wx.propgrid.PropertyGrid
      :param `property`: Property for which this method is called.  
      :type `property`: wx.propgrid.PGProperty
      :param `pos`: Position, inside :ref:`wx.propgrid.PropertyGrid`, to create control(s) to.  
      :type `pos`: wx.Point
      :param `size`: Initial size for control(s).  
      :type `size`: wx.Size












      :rtype: :ref:`wx.propgrid.PGWindowList`




                  



      .. note:: 

   

         - It is not necessary to call :meth:`wx.EvtHandler.Bind`   for interesting editor events. All events from controls are automatically forwarded to :meth:`wx.propgrid.PGEditor.OnEvent`   and :meth:`wx.propgrid.PGProperty.OnEvent` .  











   .. method:: DeleteItem(self, ctrl, index)

      Deletes item from existing control. 
                 

      Default implementation does nothing. 
                 


      :param `ctrl`: 
      :type `ctrl`: wx.Window
      :param `index`: 
      :type `index`: int




      :rtype: `None`     








   .. method:: DrawValue(self, dc, rect, property, text)

      Draws value for given property. 
                 


      :param `dc`: 
      :type `dc`: wx.DC
      :param `rect`: 
      :type `rect`: wx.Rect
      :param `property`: 
      :type `property`: wx.propgrid.PGProperty
      :param `text`: 
      :type `text`: string




      :rtype: `None`     








   .. method:: GetName(self)

      Returns pointer to the name of the editor. 
                 

      For example, PGEditor_TextCtrl has name "TextCtrl". If you don't need to access your custom editor by string name, then you do not need to implement this function. 
                 

      :rtype: `str`








   .. method:: GetValueFromControl(self, property, ctrl)

      Returns value from control, via parameter `variant`. 
                 

      Usually ends up calling property's StringToValue() or IntToValue(). Returns ``True`` if value was different. 
                 


      :param `property`: 
      :type `property`: wx.propgrid.PGProperty
      :param `ctrl`: 
      :type `ctrl`: wx.Window




      :rtype: :ref:`Tuple[bool, PGVariant]`








   .. method:: InsertItem(self, ctrl, label, index)

      Inserts item to existing control. 
                 

      Index -1 means end of list. Default implementation does nothing. Returns index of item added. 
                 


      :param `ctrl`: 
      :type `ctrl`: wx.Window
      :param `label`: 
      :type `label`: string
      :param `index`: 
      :type `index`: int




      :rtype: `int`








   .. method:: OnEvent(self, propgrid, property, wnd_primary, event)

      Handles events. 
                 

      Returns ``True`` if value in control was modified (see :meth:`wx.propgrid.PGProperty.OnEvent`   for more information). 


                


      :param `propgrid`: 
      :type `propgrid`: wx.propgrid.PropertyGrid
      :param `property`: 
      :type `property`: wx.propgrid.PGProperty
      :param `wnd_primary`: 
      :type `wnd_primary`: wx.Window
      :param `event`: 
      :type `event`: wx.Event




      :rtype: `bool`







      .. note:: 

         :ref:`wx.propgrid.PropertyGrid`  will automatically unfocus the editor when  ``wxEVT_TEXT_ENTER``   is received and when it results in property value being modified. This happens regardless of editor type (i.e. behaviour is same for any  :ref:`wx.TextCtrl`  and :ref:`wx.ComboBox`  based editor).   








   .. method:: OnFocus(self, property, wnd)

      Extra processing when control gains focus. 
                 

      For example, :ref:`wx.TextCtrl`  based controls should select all text. 
                 


      :param `property`: 
      :type `property`: wx.propgrid.PGProperty
      :param `wnd`: 
      :type `wnd`: wx.Window




      :rtype: `None`     








   .. method:: SetControlAppearance(self, pg, property, ctrl, appearance, oldAppearance, unspecified)

      Called by property grid to set new appearance for the control. 
                 

      Default implementation sets foreground colour, background colour, font, plus text for :ref:`wx.TextCtrl`  and :ref:`wx.ComboCtrl`. 




      :param `pg`: Property grid to which the edited property belongs.  
      :type `pg`: wx.propgrid.PropertyGrid
      :param `property`: Edited property to which the editor control belongs.  
      :type `property`: wx.propgrid.PGProperty
      :param `ctrl`: Editor control.  
      :type `ctrl`: wx.Window
      :param `appearance`: New appearance to be applied.  
      :type `appearance`: wx.propgrid.PGCell
      :param `oldAppearance`: Previously applied appearance. Used to detect which control attributes need to be changed (e.g. so we only change background colour if really needed).  
      :type `oldAppearance`: wx.propgrid.PGCell
      :param `unspecified`: If ``True`` tells this function that the new appearance represents an unspecified property value.   
      :type `unspecified`: bool
















      :rtype: `None`     




                  





   .. method:: SetControlIntValue(self, property, ctrl, value)

      Sets control's value specifically from int (applies to choice etc.). 
                 


      :param `property`: 
      :type `property`: wx.propgrid.PGProperty
      :param `ctrl`: 
      :type `ctrl`: wx.Window
      :param `value`: 
      :type `value`: int




      :rtype: `None`     








   .. method:: SetControlStringValue(self, property, ctrl, txt)

      Sets control's value specifically from string. 
                 


      :param `property`: 
      :type `property`: wx.propgrid.PGProperty
      :param `ctrl`: 
      :type `ctrl`: wx.Window
      :param `txt`: 
      :type `txt`: string




      :rtype: `None`     








   .. method:: SetValueToUnspecified(self, property, ctrl)

      Sets value in control to unspecified. 
                 


      :param `property`: 
      :type `property`: wx.propgrid.PGProperty
      :param `ctrl`: 
      :type `ctrl`: wx.Window




      :rtype: `None`     








   .. method:: UpdateControl(self, property, ctrl)

      Loads value from property to the control. 
                 


      :param `property`: 
      :type `property`: wx.propgrid.PGProperty
      :param `ctrl`: 
      :type `ctrl`: wx.Window




      :rtype: `None`     








   .. attribute:: Name

      See :meth:`~wx.propgrid.PGEditor.GetName`


   .. attribute:: m_clientData

      A public C++ attribute of type ````.

