Your IP : 18.222.98.91


Current Path : /opt/alt/python35/lib64/python3.5/idlelib/__pycache__/
Upload File :
Current File : //opt/alt/python35/lib64/python3.5/idlelib/__pycache__/ClassBrowser.cpython-35.opt-1.pyc



��YfW�@sdZddlZddlZddlZddlmZddlmZddlm	Z	m
Z
mZddlm
Z
daGdd�d�ZGd	d
�d
e
�ZGdd�de
�ZGd
d�de
�Zdd�ZedkrddlmZee�dS)a�Class browser.

XXX TO DO:

- reparse when source changed (maybe just a button would be OK?)
    (or recheck on window popup)
- add popup menu with more options (e.g. doc strings, base classes, imports)
- show function argument list? (have to do pattern matching on source)
- should the classes and methods lists also be in the module's menu bar?
- add base classes to class browser tree
�N)�PyShell)�ListedToplevel)�TreeNode�TreeItem�ScrolledCanvas)�idleConfc@sReZdZddd�Zddd�Zdd�Zd	d
�Zdd�ZdS)
�ClassBrowserFcCsX|stjja||_tjj|d|jd�|_||_	|j
|�dS)zH
        _htest - bool, change box when location running htest.
        rz.pyN)r�flist�open�	file_open�name�os�path�join�file�_htest�init)�selfr	rrr�r�9/opt/alt/python35/lib64/python3.5/idlelib/ClassBrowser.py�__init__s	#	zClassBrowser.__init__NcCs|jj�|jj�dS)N)�topZdestroy�node)rZeventrrr�close)s
zClassBrowser.closecCs5||_tjj�t|j�|_}|jd|j�|j	d|j�|j
r�|jd|jj�|jj
�df�|j�|j�tj�}tj|d�d}t|d|dd	d
d�}|jjddd
d�|j�}t|jd|�|_}|j�|j�dS)NZWM_DELETE_WINDOWz<Escape>z+%d+%d��Znormal�
backgroundZbgZhighlightthicknessrZ	takefocus��expandZfillZboth)r	�pyclbrZ_modules�clearr�rootrZprotocolrZbindrZgeometryZwinfo_rootxZwinfo_rooty�settitleZ	focus_setrZCurrentThemeZGetHighlightr�frameZpack�rootnoderZcanvasr�updater)rr	rZthemerZsc�itemrrrrr-s$	
		$


zClassBrowser.initcCs+|jjd|j�|jjd�dS)NzClass Browser - z
Class Browser)rZwm_titlerZwm_iconname)rrrrr!DszClassBrowser.settitlecCs
t|j�S)N)�ModuleBrowserTreeItemr)rrrrr#HszClassBrowser.rootnode)�__name__�
__module__�__qualname__rrrr!r#rrrrrs
rc@sdeZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	dS)r&cCs
||_dS)N)r)rrrrrrMszModuleBrowserTreeItem.__init__cCstjj|j�S)N)r
r�basenamer)rrrr�GetTextPszModuleBrowserTreeItem.GetTextcCsdS)N�pythonr)rrrr�GetIconNameSsz!ModuleBrowserTreeItem.GetIconNamecCsFg}x9|j�D]+}t||j|j�}|j|�qW|S)N)�listclasses�ClassBrowserTreeItem�classesr�append)r�sublistrr%rrr�
GetSubListVs
z ModuleBrowserTreeItem.GetSubListcCsYtjj|jdd��dkr)dStjj|j�sBdStjj|j�dS)N�z.py���)r
r�normcaser�existsrr	r
)rrrr�
OnDoubleClick]s
%z#ModuleBrowserTreeItem.OnDoubleClickcCs#tjj|jdd��dkS)Nr4z.pyr5)r
rr6r)rrrr�IsExpandabledsz"ModuleBrowserTreeItem.IsExpandablec
Cs�tjj|j�\}}tjj|�\}}tjj|�dkrOgSy tj||gtj�}Wnt	k
r�gSYnXg}i|_
x�|j�D]�\}}|j|kr�|}	t
|d�rj|jrjg}
xm|jD]b}t|�td�kr|}n.|j}|j|jkrBd|j|f}|
j|�q�W|	ddj|
�}	|j|j|	f�||j
|	<q�W|j�g}
x!|D]\}}	|
j|	�q�W|
S)Nz.py�super�z%s.%sz(%s)z, )r
r�splitr�splitextr6rZ
readmodule_ex�sys�ImportErrorr0�items�module�hasattrr:�typerr1r�lineno�sort)r�dirrrZext�dictr@�key�cl�sZsupersZsupZsname�listr%rrrr.gs< 
				
z!ModuleBrowserTreeItem.listclassesN)
r'r(r)rr+r-r3r8r9r.rrrrr&Ksr&c@sdeZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	dS)r/cCsr||_||_||_y|j|j|_Wn!ttfk
rUd|_YnXt|jtj�|_	dS)N)
rr0rrI�
IndexError�KeyError�
isinstancerZFunction�
isfunction)rrr0rrrrr�s			zClassBrowserTreeItem.__init__cCs'|jrd|jdSd|jSdS)Nzdef z(...)zclass )rOr)rrrrr+�s	zClassBrowserTreeItem.GetTextcCs|jr
dSdSdS)Nr,Zfolder)rO)rrrrr-�s	z ClassBrowserTreeItem.GetIconNamecCs6|jr2y|jjSWntk
r1dSYnXdS)NF)rI�methods�AttributeError)rrrrr9�s
	
z!ClassBrowserTreeItem.IsExpandablecCsS|js
gSg}x9|j�D]+}t||j|j�}|j|�q W|S)N)rI�listmethods�MethodBrowserTreeItemrr1)rr2rr%rrrr3�s	zClassBrowserTreeItem.GetSubListcCsWtjj|j�sdSt|j�}t|jd�rS|jj}|j|�dS)NrD)	r
rr7rrrBrIrD�gotoline)r�editrDrrrr8�sz"ClassBrowserTreeItem.OnDoubleClickcCs�|js
gSg}x3|jjj�D]\}}|j||f�q&W|j�g}x!|D]\}}|j|�q`W|S)N)rIrPr@r1rE)rr@rrDrKr%rrrrR�s	
z ClassBrowserTreeItem.listmethodsN)
r'r(r)rr+r-r9r3r8rRrrrrr/�s
	r/c@sLeZdZdd�Zdd�Zdd�Zdd�Zd	d
�ZdS)rScCs||_||_||_dS)N)rrIr)rrrIrrrrr�s		zMethodBrowserTreeItem.__init__cCsd|jdS)Nzdef z(...))r)rrrrr+�szMethodBrowserTreeItem.GetTextcCsdS)Nr,r)rrrrr-�sz!MethodBrowserTreeItem.GetIconNamecCsdS)Nrr)rrrrr9�sz"MethodBrowserTreeItem.IsExpandablecCsFtjj|j�sdSt|j�}|j|jj|j�dS)N)	r
rr7rrrTrIrPr)rrUrrrr8�sz#MethodBrowserTreeItem.OnDoubleClickN)r'r(r)rr+r-r9r8rrrrrS�s
rScCs�y
t}WnOtk
r[tjd}tjdd�rJtjd}n
tjd}YnXtjj|�\}}tjj|�d}tj	|�}|j
at|||gdd�dS)NrrrT)
�__file__�	NameErrorr>�argvr
rr<r=rZPyShellFileListr
rr)�parentrrFrr	rrr�_class_browser�s


	rZ�__main__)�run)�__doc__r
r>rZidlelibrZidlelib.WindowListrZidlelib.TreeWidgetrrrZidlelib.configHandlerrrrr&r/rSrZr'Zidlelib.idle_test.htestr\rrrr�<module>s 2=<

?>