PNG  IHDR;IDATxܻn0K )(pA 7LeG{ §㻢|ذaÆ 6lذaÆ 6lذaÆ 6lom$^yذag5bÆ 6lذaÆ 6lذa{ 6lذaÆ `}HFkm,mӪôô! x|'ܢ˟;E:9&ᶒ}{v]n&6 h_tڠ͵-ҫZ;Z$.Pkž)!o>}leQfJTu іچ\X=8Rن4`Vwl>nG^is"ms$ui?wbs[m6K4O.4%/bC%t Mז -lG6mrz2s%9s@-k9=)kB5\+͂Zsٲ Rn~GRC wIcIn7jJhۛNCS|j08yiHKֶۛkɈ+;SzL/F*\Ԕ#"5m2[S=gnaPeғL lذaÆ 6l^ḵaÆ 6lذaÆ 6lذa; _ذaÆ 6lذaÆ 6lذaÆ RIENDB`  pYW@sdZddlZddlZddlZddlmZddlmZddlm Z m Z m Z ddl m Z daGdddZGd d d e ZGd d 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 Zd d 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+/opt/python35/lib/python3.5/ClassBrowser.py__init__s   # zClassBrowser.__init__NcCs|jj|jjdS)N)topZdestroynode)reventrrrclose)s zClassBrowser.closecCs5||_tjjt|j|_}|jd|j|j d|j|j r|j d|jj |jj df|j|jtj}tj|dd}t|d|dd d d }|jjd d d d|j}t|jd||_}|j|jdS)NZWM_DELETE_WINDOWzz+%d+%dZnormal backgroundbgZhighlightthicknessrZ takefocusexpandfillZboth)r pyclbrZ_modulesclearrrootrprotocolrbindrZgeometryZ winfo_rootxZ winfo_rootysettitleZ focus_setrZ CurrentThemeZ GetHighlightrframepackrootnoderZcanvasrupdater)rr rZthemerZscitemrrrrr-s$    $     zClassBrowser.initcCs+|jjd|j|jjddS)NzClass Browser - z Class Browser)rZwm_titler Z wm_iconname)rrrrr&DszClassBrowser.settitlecCs t|jS)N)ModuleBrowserTreeItemr)rrrrr)HszClassBrowser.rootnode)__name__ __module__ __qualname__rrrr&r)rrrrrs   rc@sdeZdZddZddZddZddZd d Zd d Zd dZ dS)r,cCs ||_dS)N)r)rrrrrrMszModuleBrowserTreeItem.__init__cCstjj|jS)N)r rbasenamer)rrrrGetTextPszModuleBrowserTreeItem.GetTextcCsdS)Npythonr)rrrr GetIconNameSsz!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)Nr:z.pyr;)r rr<r)rrrr IsExpandabledsz"ModuleBrowserTreeItem.IsExpandablec Cstjj|j\}}tjj|\}}tjj|dkrOgSy tj||gtj}Wnt k rgSYnXg}i|_ x|j D]\}}|j |kr|} t |drj|jrjg} xm|jD]b} t| tdkr| } n.| j} | j |j krBd| j | f} | j| qW| ddj| } |j|j| f||j | r?r4rrrrr,Ks       r,c@sdeZdZddZddZddZddZd d Zd d Zd dZ dS)r5c Csr||_||_||_y|j|j|_Wn!ttfk rUd|_YnXt|jtj|_ dS)N) r r6rrP IndexErrorKeyError isinstancer!ZFunction isfunction)rr r6rrrrrs   zClassBrowserTreeItem.__init__cCs'|jrd|jdSd|jSdS)Nzdef z(...)zclass )rWr )rrrrr1s zClassBrowserTreeItem.GetTextcCs|jr dSdSdS)Nr2Zfolder)rW)rrrrr3s z ClassBrowserTreeItem.GetIconNamec Cs6|jr2y|jj SWntk r1dSYnXdS)NF)rPmethodsAttributeError)rrrrr?s   z!ClassBrowserTreeItem.IsExpandablecCsS|js gSg}x9|jD]+}t||j|j}|j|q W|S)N)rP listmethodsMethodBrowserTreeItemrr7)rr8r r+rrrr9s zClassBrowserTreeItem.GetSubListcCsWtjj|jsdSt|j}t|jdrS|jj}|j|dS)NrJ) r rr=rr rHrPrJgotoline)reditrJrrrr>s  z"ClassBrowserTreeItem.OnDoubleClickcCs|js gSg}x3|jjjD]\}}|j||fq&W|jg}x!|D]\}}|j|q`W|S)N)rPrXrFr7rK)rrFr rJrSr+rrrrZs  z ClassBrowserTreeItem.listmethodsN) r-r.r/rr1r3r?r9r>rZrrrrr5s     r5c@sLeZdZddZddZddZddZd d Zd S) r[cCs||_||_||_dS)N)r rPr)rr rPrrrrrs  zMethodBrowserTreeItem.__init__cCsd|jdS)Nzdef z(...))r )rrrrr1szMethodBrowserTreeItem.GetTextcCsdS)Nr2r)rrrrr3sz!MethodBrowserTreeItem.GetIconNamecCsdS)Nrr)rrrrr?sz"MethodBrowserTreeItem.IsExpandablecCsFtjj|jsdSt|j}|j|jj|jdS)N) r rr=rr r\rPrXr )rr]rrrr>sz#MethodBrowserTreeItem.OnDoubleClickN)r-r.r/rr1r3r?r>rrrrr[s     r[cCsy t}WnOtk r[tjd}tjddrJtjd}n tjd}YnXtjj|\}}tjj|d}tj |}|j a t |||gdddS)NrrrT) __file__ NameErrorrDargvr rrBrCrZPyShellFileListr r r)parentrrLr r rrr_class_browsers    rb__main__)run)__doc__r rDr!ZidlelibrZidlelib.WindowListrZidlelib.TreeWidgetrrrZidlelib.configHandlerrr rr,r5r[rbr-Zidlelib.idle_test.htestrdrrrr s    2=<