mò &U²Ic@s×dZdkZdkZdkZdkZdklZdklZl Z l Z dk l Z dfd„ƒYZ de fd„ƒYZd e fd „ƒYZd e fd „ƒYZd „Zedjo eƒndS(s„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(sListedToplevel(sTreeNodesTreeItemsScrolledCanvas(sidleConft ClassBrowsercBs8tZd„Zdd„Zd„Zd„Zd„ZRS(NcCs=||_tii|d|idƒ|_|i|ƒdS(Nis.py(tnametselftostpathtjointfiletinittflist(RRRR((t1/data/zmath/lib/python2.4/idlelib/ClassBrowser.pyt__init__s #cCs|iiƒ|iiƒdS(N(Rttoptdestroytnode(Rtevent((R tcloses cCs||_tiiƒt|iƒ|_}|id|i ƒ|i d|i ƒ|i ƒ|i ƒt idddƒ}t i|dƒd}t|d|d d d d ƒ}|iid d ddƒ|iƒ}t|id|ƒ|_}|iƒ|iƒdS(NtWM_DELETE_WINDOWstmaintThemeRtnormalt backgroundtbgthighlightthicknessit takefocusitexpandtfilltboth(RRtpyclbrt_modulestcleartListedTopleveltrootR tprotocolRtbindtsettitlet focus_settidleConft GetOptiontthemet GetHighlightRtScrolledCanvastsctframetpacktrootnodetitemtTreeNodetcanvastNoneR tupdateR(RRR R-R&RR)R ((R R#s      cCs+|iid|iƒ|iidƒdS(NsClass Browser - s Class Browser(RR twm_titleRt wm_iconname(R((R R"7scCs t|iƒS(N(tModuleBrowserTreeItemRR(R((R R,;s(t__name__t __module__R R0RRR"R,(((R Rs     R4cBsGtZd„Zd„Zd„Zd„Zd„Zd„Zd„ZRS(NcCs ||_dS(N(RR(RR((R R @scCstii|iƒS(N(RRtbasenameRR(R((R tGetTextCscCsdS(Ntpython((R((R t GetIconNameFscCsFg}x9|iƒD]+}t||i|iƒ}|i|ƒqW|S(N( tsublistRt listclassesRtClassBrowserTreeItemtclassesRR-tappend(RR-R;R((R t GetSubListIs  cCs]tii|idƒdjodSntii|iƒpdSntii|iƒdS(Niýÿÿÿs.py( RRtnormcaseRRtexiststPyShellRtopen(R((R t OnDoubleClickPs  cCstii|idƒdjS(Niýÿÿÿs.py(RRRARR(R((R t IsExpandableWscCsãtii|iƒ\}}tii|ƒ\} }tii |ƒdjogSny t i | |gt iƒ}Wntj o }gSnXg} h|_x |iƒD]û\} }|i| joß| }t|dƒo¢|io˜g}xt|iD]i}t|ƒtdƒjo |}n4|i}|i|ijod|i|f}n|i|ƒqøW|ddi|ƒ}n| i|i|fƒ||i|tkeytcltmoduletsthasattrRGtsuperstsupttypetsnameR?RtlinenotsorttlistR-(RRTRRLRORYRQRXR[RSRRRR^R-RVRJ((R R<ZsB         ( R5R6R R8R:R@RERFR<(((R R4>s      R=cBsGtZd„Zd„Zd„Zd„Zd„Zd„Zd„ZRS(NcCss||_||_||_y|i|i|_Wn"ttfj od|_nXt|it i ƒ|_ dS(N( RRR>RRTt IndexErrortKeyErrorR0t isinstanceRtFunctiont isfunction(RRR>R((R R }s   cCs,|iod|idSn d|iSdS(Nsdef s(...)sclass (RRcR(R((R R8‡s cCs|iodSndSdS(NR9tfolder(RRc(R((R R:s cCs<|io.y|ii SWq8tj o tSq8XndS(N(RRTtmethodstAttributeErrortFalse(R((R RF“s  cCsX|ipgSng}x9|iƒD]+}t||i|iƒ}|i|ƒq%W|S(N( RRTR;t listmethodsRtMethodBrowserTreeItemRR-R?(RR-R;R((R R@šs  cCsgtii|iƒpdSntii|iƒ}t |i dƒo|i i }|i |ƒndS(NR\( RRRBRRRCRRDteditRWRTR\tgotoline(RRjR\((R RE£s  cCs†|ipgSng}x3|iiiƒD]\}}|i||fƒq+W|iƒg}x!|D]\}}|i|ƒqeW|S(N( RRTRRReRR\R?R]R^R-(RRRRR^R-R\((R Rh«s    ( R5R6R R8R:RFR@RERh(((R R={s    RicBs5tZd„Zd„Zd„Zd„Zd„ZRS(NcCs||_||_||_dS(N(RRRTR(RRRTR((R R ¹s  cCsd|idS(Nsdef s(...)(RR(R((R R8¾scCsdS(NR9((R((R R:ÁscCsdS(Ni((R((R RFÄscCsQtii|iƒpdSntii|iƒ}|i |i i |i ƒdS(N( RRRBRRRCRRDRjRkRTReR(RRj((R REÇs(R5R6R R8R:RFRE(((R Ri·s     cCs¿y t}WnLtj o@tid}tidotid}qYtid}nXtii|ƒ\}}tii |ƒd}t t i ||gƒtitijo tƒndS(Nii(t__file__Rt NameErrorRNtargvRRRIRJRKRRRCRtstdint __stdin__tmainloop(RRRJ((R RÍs  t__main__(t__doc__RRNRRCt WindowListRt TreeWidgetR.tTreeItemR(t configHandlerR$RR4R=RiRR5(R$R(R.RiR4RRNRCRRvR=RRR((R t? s      (=<