B
    Rf¹_r"  ã               @   s.  d Z ddlT ddlZdd„ Zee_[dd„ Zee_[eejƒe_	d	d
„ Z
e
e_[
eƒ ZG dd„ deƒZG dd„ deeƒZe e¡Ze e¡Ze ed¡Ze ed¡Ze ed¡Ze ed¡Z e e!d¡Z"e e#d¡Z$e e%d¡Z&e e'd¡Z(e e)d¡Z*e e+d¡Z,e e-d¡Z.e e/d¡Z0e e1d¡Z2e e3d¡Z4e e5d¡Z6e e7d¡Z8e e9d¡Z:e e;d¡Z<e e=d¡Z>e e?d¡Z@eZAeZBeZCe!ZDe#ZEe%ZFe'ZGe)ZHe+ZIe-ZJe/ZKe1ZLe3ZMe5ZNe7ZOe?ZPe9ZQe;ZRe=ZSe eT¡ZUe eV¡ZWe eX¡ZYe eZ¡Z[e e\¡Z]e e^¡Z_e e`¡ZaeTZbeVZceXZdeZZee\Zfe^Zge`ZhdS )zÐ
The classes in this module provide views and data models for viewing tabular
or hierarchical data in a more advanced way than what is provided by classes
such as :ref:`wx.ListCtrl`, :ref:`wx.TreeCtrl`, etc.
é   )Ú*é    Nc             C   s.   ddl }|j |¡}|  |¡ |r*| ¡  dS )z½
    Associates a :class:`DataViewModel` with the control.
    Ownership of the model object is passed to C++, however it
    is reference counted so it can be shared with other views.
    r   N)Z	wx.siplibZsiplibZ	ispyownedZ_AssociateModelZDecRef)ÚselfZmodelÚwxZ
wasPyOwned© r   ú*lib/python3.7/site-packages/wx/dataview.pyÚ_DataViewCtrl_AssociateModel   s
    
r   c                s   ‡ fdd„t ˆ  ¡ ƒD ƒS )z+
    Returns a list of column objects.
    c                s   g | ]}ˆ   |¡‘qS r   )Z	GetColumn)Ú.0Úi)r   r   r   ú
<listcomp>$   s    z,_DataViewCtrl_GetColumns.<locals>.<listcomp>)ÚrangeZGetColumnCount)r   r   )r   r   Ú_DataViewCtrl_GetColumns    s    r   c             C   s   dt t| ƒƒ S )NzDataViewItemArray: )ÚreprÚlist)r   r   r   r   Ú_DataViewItemArray___repr__(   s    r   c               @   s0   e Zd ZdZdd„ Zdd„ Zdd„ Zdd	„ Zd
S )ÚDataViewItemObjectMapperaà  
    This class provides a mechanism for mapping between Python objects and the
    :class:`DataViewItem` objects used by the :class:`DataViewModel` for tracking the items in
    the view. The ID used for the item is the id() of the Python object. Use
    :meth:`ObjectToItem` to create a :class:`DataViewItem` using a Python object as its ID,
    and use :meth:`ItemToObject` to fetch that Python object again later for a given
    :class:`DataViewItem`.
    
    By default a regular dictionary is used to implement the ID to object
    mapping. Optionally a WeakValueDictionary can be useful when there will be
    a high turnover of objects and maintaining an extra reference to the
    objects would be unwise.  If weak references are used then the objects
    associated with data items must be weak-referenceable.  (Things like
    stock lists and dictionaries are not.)  See :meth:`UseWeakRefs`.
    
    This class is used in :class:`PyDataViewModel` as a mixin for convenience.
    c             C   s   t ƒ | _d| _d S )NF)ÚdictÚmapperÚusingWeakRefs)r   r   r   r   Ú__init__@   s    z!DataViewItemObjectMapper.__init__c             C   s<   ddl }t|ƒ}x||jkr(||j8 }qW || j|< t|ƒS )zc
        Create a :class:`DataViewItem` for the object, and remember the ID-->obj mapping.
        r   N)ÚsysÚidÚmaxsizer   ÚDataViewItem)r   Úobjr   Úoidr   r   r   ÚObjectToItemD   s    
z%DataViewItemObjectMapper.ObjectToItemc             C   s   t | ¡ ƒ}| j| S )zF
        Retrieve the object that was used to create an item.
        )ÚintZGetIDr   )r   Úitemr   r   r   r   ÚItemToObjectP   s    z%DataViewItemObjectMapper.ItemToObjectc             C   sF   || j krdS |r$ddl}| ¡ }ntƒ }| | j¡ || _|| _ dS )zk
        Switch to or from using a weak value dictionary for keeping the ID to
        object map.
        Nr   )r   ÚweakrefÚWeakValueDictionaryr   Úupdater   )r   Úflagr    Znewmapr   r   r   ÚUseWeakRefsW   s    

z$DataViewItemObjectMapper.UseWeakRefsN)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r   r   r$   r   r   r   r   r   .   s
   r   c               @   s   e Zd ZdZdd„ ZdS )ÚPyDataViewModelz^
    A convenience class that is a :class:`DataViewModel` combined with an object mapper.
    c             C   s   t  | ¡ t | ¡ d S )N)ÚDataViewModelr   r   )r   r   r   r   r   l   s    
zPyDataViewModel.__init__N)r%   r&   r'   r(   r   r   r   r   r   r)   h   s   r)   z"Use DataViewCustomRenderer instead)ir(   Z	_dataviewr   r   ZDataViewCtrlZAssociateModelr   Z
GetColumnsÚpropertyZColumnsr   ZDataViewItemArrayÚ__repr__r   ZNullDataViewItemÚobjectr   r*   r)   Z
deprecatedZDataViewIndexListModelZPyDataViewIndexListModelZDataViewVirtualListModelZPyDataViewVirtualListModelZDataViewCustomRendererZPyDataViewCustomRendererZPyEventBinderZ wxEVT_DATAVIEW_SELECTION_CHANGEDZEVT_DATAVIEW_SELECTION_CHANGEDZwxEVT_DATAVIEW_ITEM_ACTIVATEDZEVT_DATAVIEW_ITEM_ACTIVATEDZwxEVT_DATAVIEW_ITEM_COLLAPSEDZEVT_DATAVIEW_ITEM_COLLAPSEDZwxEVT_DATAVIEW_ITEM_EXPANDEDZEVT_DATAVIEW_ITEM_EXPANDEDZwxEVT_DATAVIEW_ITEM_COLLAPSINGZEVT_DATAVIEW_ITEM_COLLAPSINGZwxEVT_DATAVIEW_ITEM_EXPANDINGZEVT_DATAVIEW_ITEM_EXPANDINGZ!wxEVT_DATAVIEW_ITEM_START_EDITINGZEVT_DATAVIEW_ITEM_START_EDITINGZ#wxEVT_DATAVIEW_ITEM_EDITING_STARTEDZ!EVT_DATAVIEW_ITEM_EDITING_STARTEDZ wxEVT_DATAVIEW_ITEM_EDITING_DONEZEVT_DATAVIEW_ITEM_EDITING_DONEZ!wxEVT_DATAVIEW_ITEM_VALUE_CHANGEDZEVT_DATAVIEW_ITEM_VALUE_CHANGEDZ wxEVT_DATAVIEW_ITEM_CONTEXT_MENUZEVT_DATAVIEW_ITEM_CONTEXT_MENUZ"wxEVT_DATAVIEW_COLUMN_HEADER_CLICKZ EVT_DATAVIEW_COLUMN_HEADER_CLICKZ(wxEVT_DATAVIEW_COLUMN_HEADER_RIGHT_CLICKZ&EVT_DATAVIEW_COLUMN_HEADER_RIGHT_CLICKZwxEVT_DATAVIEW_COLUMN_SORTEDZEVT_DATAVIEW_COLUMN_SORTEDZwxEVT_DATAVIEW_COLUMN_REORDEREDZEVT_DATAVIEW_COLUMN_REORDEREDZwxEVT_DATAVIEW_ITEM_BEGIN_DRAGZEVT_DATAVIEW_ITEM_BEGIN_DRAGZ!wxEVT_DATAVIEW_ITEM_DROP_POSSIBLEZEVT_DATAVIEW_ITEM_DROP_POSSIBLEZwxEVT_DATAVIEW_ITEM_DROPZEVT_DATAVIEW_ITEM_DROPZwxEVT_DATAVIEW_CACHE_HINTZEVT_DATAVIEW_CACHE_HINTZ(wxEVT_COMMAND_DATAVIEW_SELECTION_CHANGEDZ%wxEVT_COMMAND_DATAVIEW_ITEM_ACTIVATEDZ%wxEVT_COMMAND_DATAVIEW_ITEM_COLLAPSEDZ$wxEVT_COMMAND_DATAVIEW_ITEM_EXPANDEDZ&wxEVT_COMMAND_DATAVIEW_ITEM_COLLAPSINGZ%wxEVT_COMMAND_DATAVIEW_ITEM_EXPANDINGZ)wxEVT_COMMAND_DATAVIEW_ITEM_START_EDITINGZ+wxEVT_COMMAND_DATAVIEW_ITEM_EDITING_STARTEDZ(wxEVT_COMMAND_DATAVIEW_ITEM_EDITING_DONEZ)wxEVT_COMMAND_DATAVIEW_ITEM_VALUE_CHANGEDZ(wxEVT_COMMAND_DATAVIEW_ITEM_CONTEXT_MENUZ*wxEVT_COMMAND_DATAVIEW_COLUMN_HEADER_CLICKZ0wxEVT_COMMAND_DATAVIEW_COLUMN_HEADER_RIGHT_CLICKZ$wxEVT_COMMAND_DATAVIEW_COLUMN_SORTEDZ'wxEVT_COMMAND_DATAVIEW_COLUMN_REORDEREDZ!wxEVT_COMMAND_DATAVIEW_CACHE_HINTZ&wxEVT_COMMAND_DATAVIEW_ITEM_BEGIN_DRAGZ)wxEVT_COMMAND_DATAVIEW_ITEM_DROP_POSSIBLEZ wxEVT_COMMAND_DATAVIEW_ITEM_DROPZ wxEVT_TREELIST_SELECTION_CHANGEDZEVT_TREELIST_SELECTION_CHANGEDZwxEVT_TREELIST_ITEM_EXPANDINGZEVT_TREELIST_ITEM_EXPANDINGZwxEVT_TREELIST_ITEM_EXPANDEDZEVT_TREELIST_ITEM_EXPANDEDZwxEVT_TREELIST_ITEM_CHECKEDZEVT_TREELIST_ITEM_CHECKEDZwxEVT_TREELIST_ITEM_ACTIVATEDZEVT_TREELIST_ITEM_ACTIVATEDZ wxEVT_TREELIST_ITEM_CONTEXT_MENUZEVT_TREELIST_ITEM_CONTEXT_MENUZwxEVT_TREELIST_COLUMN_SORTEDZEVT_TREELIST_COLUMN_SORTEDZ(wxEVT_COMMAND_TREELIST_SELECTION_CHANGEDZ%wxEVT_COMMAND_TREELIST_ITEM_EXPANDINGZ$wxEVT_COMMAND_TREELIST_ITEM_EXPANDEDZ#wxEVT_COMMAND_TREELIST_ITEM_CHECKEDZ%wxEVT_COMMAND_TREELIST_ITEM_ACTIVATEDZ(wxEVT_COMMAND_TREELIST_ITEM_CONTEXT_MENUZ$wxEVT_COMMAND_TREELIST_COLUMN_SORTEDr   r   r   r   Ú<module>
   sŽ   :	








