HEX

Warning: set_time_limit() [function.set-time-limit]: Cannot set time limit - prohibited by configuration in /home/u547966/brikov.ru/www/wp-content/plugins/admin-menu-editor/menu-editor.php on line 745
Server: Apache
System: Linux 4.19.0-0.bpo.9-amd64 x86_64 at red40
User: u547966 (5490)
PHP: 5.3.29-mh2
Disabled: syslog, dl, popen, proc_open, proc_nice, proc_get_status, proc_close, proc_terminate, posix_mkfifo, chown, chgrp, accelerator_reset, opcache_reset, accelerator_get_status, opcache_get_status, pcntl_alarm, pcntl_fork, pcntl_waitpid, pcntl_wait, pcntl_wifexited, pcntl_wifstopped, pcntl_wifsignaled, pcntl_wifcontinued, pcntl_wexitstatus, pcntl_wtermsig, pcntl_wstopsig, pcntl_signal, pcntl_signal_dispatch, pcntl_get_last_error, pcntl_strerror, pcntl_sigprocmask, pcntl_sigwaitinfo, pcntl_sigtimedwait, pcntl_exec, pcntl_getpriority, pcntl_setpriority
Upload Files
File: //usr/lib/python3.5/idlelib/__pycache__/ClassBrowser.cpython-35.pyc


FaW@sdZddlZddlZddlZddlmZddlmZddlm	Z	m
Z
mZddlm
Z
daGdddZGd	d
d
e
ZGddde
ZGd
dde
ZddZedkrddlmZeedS)aClass 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)TreeNodeTreeItemScrolledCanvas)idleConfc@sReZdZdddZdddZddZd	d
ZddZdS)
ClassBrowserFcCsX|stjja||_tjj|d|jd|_||_	|j
|dS)zH
        _htest - bool, change box when location running htest.
        rz.pyN)rflistopen	file_opennameospathjoinfile_htestinit)selfr	rrrr*/usr/lib/python3.5/idlelib/ClassBrowser.py__init__s	#	zClassBrowser.__init__NcCs|jj|jjdS)N)topZdestroynode)rZeventrrrclose)s
zClassBrowser.closecCs5||_tjjt|j|_}|jd|j|j	d|j|j
r|jd|jj|jj
df|j|jtj}tj|dd}t|d|dd	d
d}|jjddd
d|j}t|jd||_}|j|jdS)NZWM_DELETE_WINDOWz<Escape>z+%d+%dZnormal
backgroundZbgZhighlightthicknessrZ	takefocusexpandZfillZboth)r	pyclbrZ_modulesclearrrootrZprotocolrZbindrZgeometryZwinfo_rootxZwinfo_rootysettitleZ	focus_setrZCurrentThemeZGetHighlightrframeZpackrootnoderZcanvasrupdater)rr	rZthemerZscitemrrrrr-s$	
		$


zClassBrowser.initcCs+|jjd|j|jjddS)NzClass Browser - z
Class Browser)rZwm_titlerZwm_iconname)rrrrr!DszClassBrowser.settitlecCs
t|jS)N)ModuleBrowserTreeItemr)rrrrr#HszClassBrowser.rootnode)__name__
__module____qualname__rrrr!r#rrrrrs
rc@sdeZdZddZddZddZddZd	d
ZddZd
dZ	dS)r&cCs
||_dS)N)r)rrrrrrMszModuleBrowserTreeItem.__init__cCstjj|jS)N)r
rbasenamer)rrrrGetTextPszModuleBrowserTreeItem.GetTextcCsdS)Npythonr)rrrrGetIconNameSsz!ModuleBrowserTreeItem.GetIconNamecCsFg}x9|jD]+}t||j|j}|j|qW|S)N)listclassesClassBrowserTreeItemclassesrappend)rsublistrr%rrr
GetSubListVs
z ModuleBrowserTreeItem.GetSubListcCsYtjj|jdddkr)dStjj|jsBdStjj|jdS)Nz.py)r
rnormcaserexistsrr	r
)rrrr
OnDoubleClick]s
%z#ModuleBrowserTreeItem.OnDoubleClickcCs#tjj|jdddkS)Nr4z.pyr5)r
rr6r)rrrrIsExpandabledsz"ModuleBrowserTreeItem.IsExpandablec
Cstjj|j\}}tjj|\}}tjj|dkrOgSy tj||gtj}Wnt	k
rgSYnXg}i|_
x|jD]\}}|j|kr|}	t
|drj|jrjg}
xm|jD]b}t|tdkr|}n.|j}|j|jkrBd|j|f}|
j|qW|	ddj|
}	|j|j|	f||j
|	<qW|jg}
x!|D]\}}	|
j|	qW|
S)Nz.pysuperz%s.%sz(%s)z, )r
rsplitrsplitextr6rZ
readmodule_exsysImportErrorr0itemsmodulehasattrr:typerr1rlinenosort)rdirrrZextdictr@keyclsZsupersZsupZsnamelistr%rrrr.gs< 
				
z!ModuleBrowserTreeItem.listclassesN)
r'r(r)rr+r-r3r8r9r.rrrrr&Ksr&c@sdeZdZddZddZddZddZd	d
ZddZd
dZ	dS)r/cCsr||_||_||_y|j|j|_Wn!ttfk
rUd|_YnXt|jtj|_	dS)N)
rr0rrI
IndexErrorKeyError
isinstancerZFunction
isfunction)rrr0rrrrrs			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)rImethodsAttributeError)rrrrr9s
	
z!ClassBrowserTreeItem.IsExpandablecCsS|js
gSg}x9|jD]+}t||j|j}|j|q W|S)N)rIlistmethodsMethodBrowserTreeItemrr1)rr2rr%rrrr3s	zClassBrowserTreeItem.GetSubListcCsWtjj|jsdSt|j}t|jdrS|jj}|j|dS)NrD)	r
rr7rrrBrIrDgotoline)reditrDrrrr8sz"ClassBrowserTreeItem.OnDoubleClickcCs|js
gSg}x3|jjjD]\}}|j||fq&W|jg}x!|D]\}}|j|q`W|S)N)rIrPr@r1rE)rr@rrDrKr%rrrrRs	
z ClassBrowserTreeItem.listmethodsN)
r'r(r)rr+r-r9r3r8rRrrrrr/s
	r/c@sLeZdZddZddZddZddZd	d
ZdS)rScCs||_||_||_dS)N)rrIr)rrrIrrrrrs		zMethodBrowserTreeItem.__init__cCsd|jdS)Nzdef z(...))r)rrrrr+szMethodBrowserTreeItem.GetTextcCsdS)Nr,r)rrrrr-sz!MethodBrowserTreeItem.GetIconNamecCsdS)Nrr)rrrrr9sz"MethodBrowserTreeItem.IsExpandablecCsFtjj|jsdSt|j}|j|jj|jdS)N)	r
rr7rrrTrIrPr)rrUrrrr8sz#MethodBrowserTreeItem.OnDoubleClickN)r'r(r)rr+r-r9r8rrrrrSs
rScCsy
t}WnOtk
r[tjd}tjddrJtjd}n
tjd}YnXtjj|\}}tjj|d}tj	|}|j
at|||gdddS)NrrrT)
__file__	NameErrorr>argvr
rr<r=rZPyShellFileListr
rr)parentrrFrr	rrr_class_browsers


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