.. wxPython Phoenix documentation

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

   Copyright: (c) 2011-2018 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 (eg. 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.png" 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,83,169,112"/> <area shape="rect" id="node2" href="wx.Object.html" title="This is the root class of many of the wxWidgets classes." alt="" coords="43,5,131,35"/> </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()
       
   
   Base class for custom PropertyGrid editors.



   .. method:: __init__(self)

      Constructor.                   





   .. 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:: 

   

         - Primary control shall use id ``PG_SUBID1``, and secondary (button) control shall use ``PG_SUBID2``. 
         - Unlike in previous version of :ref:`wx.propgrid.PropertyGrid`, it is no longer necessary to call :meth:`wx.EvtHandler.Connect`   for interesting editor events. Instead, all events from control are now 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







   .. 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







   .. method:: GetName(self)

      Returns pointer to the name of the editor.                  

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

      :rtype: `string`








   .. 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: `tuple`







      :returns: 

         ( `bool`, `variant` ) 








   .. 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 (ie. 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







   .. 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`. 

      The parameter `appearance`  represents the new appearance to be applied. 

      The parameter `oldAppearance`  is the previously applied appearance. Used to detect which control attributes need to be changed (e.g. so we only change background colour if really needed). 

      Finally, the parameter `unspecified`  if ``True`` tells this function that the new appearance represents an unspecified property value.                  


      :param `pg`: 
      :type `pg`: wx.propgrid.PropertyGrid
      :param `property`: 
      :type `property`: wx.propgrid.PGProperty
      :param `ctrl`: 
      :type `ctrl`: wx.Window
      :param `appearance`: 
      :type `appearance`: wx.propgrid.PGCell
      :param `oldAppearance`: 
      :type `oldAppearance`: wx.propgrid.PGCell
      :param `unspecified`: 
      :type `unspecified`: bool







   .. 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







   .. 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







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

      Sets value in control to unspecified.                  


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







   .. 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







   .. attribute:: Name

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


   .. attribute:: m_clientData

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