m &UIc@sLdkZdkZdkTdkZdkZdklZdZy%eii eii e eZ Wne j o eZ nXeiie o e Zn(eiiepedefnedZdfdYZdfd YZd efd YZd fd YZdZdZedjo endS(N(t*(sidleConftIconsscan't find icon directory (%r)c Cs7t}dk}|itii|d}|ig}d} }x|D]}tii tii|d}td|d|} |i| t|d| ddd d }|id | d |t|d |}|id | dd ||d}|djo| d} d}qQqQW||_ dS(s'Utility to display the available icons.Ns*.gifitfiletmastertimagetbditrelieftraisedtrowtcolumnttexti i(tTktroottglobtostpathtjointicondirtlisttsorttimagesRR Rtsplitexttbasenametnamet PhotoImageRtappendtLabeltlabeltgrid( RRR R R RRRRRR((t//data/zmath/lib/python2.4/idlelib/TreeWidget.pyt listicons%s*    "    tTreeNodecBstZdZdZdZddZddZdZdZ ddZ dd Z dd Z d Z d Zd ZdZdZdZddZddZddZddZRS(NcCsS||_||_||_d|_t|_g|_d|_ |_ h|_ dS(Nt collapsed( tcanvastselftparenttitemtstatetFalsetselectedtchildrentNonetxtyt iconimages(R"R!R#R$((Rt__init__>s      cCs<x,|iD] }|ii||iq Wd|_dS(N(R"R(tctremovetdestroyR)R#(R"R.((RR0Hs  cCsy|i|SWntj onXtii|\}}|pd}tii t ||}t d|i d|}||i|<|S(Ns.gifRR(R"R,RtKeyErrorRRRRtextRtICONDIRtfullnameRR!R(R"RR2RR4R((Rt geticonimageNs  cCsP|iodSn|it|_|ii|i|i|idS(N( R"R't deselectalltTrueR!tdeletetimage_idtdrawicontdrawtext(R"tevent((RtselectZs    cCsF|ipdSnt|_|ii|i|i|idS(N(R"R'R&R!R8R9R:R;(R"R<((Rtdeselectcs    cCs)|io|iin |idS(N(R"R#R6t deselecttree(R"((RR6ks cCs:|io|inx|iD]}|iq"WdS(N(R"R'R>R(tchildR?(R"R@((RR?qs   cCs9|idjo|in |i|iidS(Ntexpandedtbreak(R"R%tcollapsetexpandR$t OnDoubleClick(R"R<((Rtflipws   cCsM|iipdSn|idjo!d|_|i|indS(NRA(R"R$t _IsExpandableR%tupdatetview(R"R<((RRDs   cCs+|idjod|_|indS(NR (R"R%RH(R"R<((RRCs c Cs|id} |iid}|| }|iid}|ii }|ii|}|| jo||jodSn|ii |id\} }} }| |jo||jo| ||}n| }t||}|ii|dS(Niiit scrollregion(R"R+ttoptlastvisiblechildtbottomtheightR!tcanvasyt visible_topt winfo_heighttvisible_heighttvisible_bottomt_getintstx0ty0tx1ty1tfractiontfloatt yview_moveto( R"RSRMRPRNRYRRRXRVRURWRK((RRIs  %cCs7|io%|idjo|idiSn|SdS(NRAi(R"R(R%RL(R"((RRLscCs|io|iin|id}d|id<|ii|iit|idd|iit\}}}}|ii ddd||f||ids cCsdS(N(R)(R*((Rtsi (R*R+R"R:R;R%R(R$t _GetSubListtsublistt __class__R!R@Rtcxtcytcylastt create_lineR`RGticonnameRCtcallbackRDR5Rt create_imagetidttag_bindt tag_lower( R"R*R+RoRpRiRrR$RlRkRmR@R((RR`sF        +  #!% cCs|io*|iip|iipd}n|iipd}|i|}|ii |i |i ddd|}||_ |ii|d|i|ii|d|idS(Nt openfoldertfoldertanchortnwRs<1>s (R"R'R$tGetSelectedIconNamet GetIconNamet imagenameR5RR!RqR*R+RrR9RsR=RF(R"R{RRr((RR:s *' c Cs|idd} |id} |ii}|o|ii | | ddd|}|ii |d|i |ii |d|i |ii|\} }}}t|dd } n|iipd }y |iWntj on X|iy |i}Wn=tj o1t|id|d d d ddd|_nXtiddd}|io |iiti |dn|iiti |d|ii!| | ddd|i}|ii"d|i#|ii"d|i ||_$dS(NiiRwRxR s<1>s ii s RitpadxitpadytmaintThemeRthilitetnormaltwindow(%R"R*ttextxR+ttextyR$t GetLabelTextt labeltextR!t create_textRrRsR=RFRaRURVRWRXtmaxtGetTextR tentrytAttributeErrort edit_finishRRtidleConft GetOptiontthemeR'Rbt GetHighlightt create_windowtbindtselect_or_editttext_id( R"RWRRRrRR RXRVRURR((RR;s:     /  cCs<|io!|iio|i|n|i|dS(N(R"R'R$t IsEditableteditR<R=(R"R<((RRscCst|idddddd|_|iid|id|iidt|iidd|ii|ii d |i |ii d |i dS( NRithighlightthicknessitwidthR tipadxiss( tEntryR"RRtinserttselection_rangetENDtpackt focus_setRRt edit_cancel(R"R<((RRs$ cCsy|i}|`Wntj o dSnX|i}|i|o*||iijo|ii|n|ii}||i d<|i |i i dS(NR ( R"RRtgetR R0R$RtSetTextRR;R!R(R"R<RR ((RRs       cCsRy|i}|`Wntj o dSnX|i|i|iidS(N(R"RRR0R;R!R(R"R<R((RR&s     (t__name__t __module__R-R0R5R)R=R>R6R?RFRDRCRIRLRHR`R:R;RRRR(((RR<s(          ) "  tTreeItemcBstZdZdZdZdZeZdZdZ dZ dZ dZ d Z d Zd Zd ZRS( sAbstract class representing tree items. Methods should typically be overridden, otherwise a default action is used. cCsdS(s)Constructor. Do whatever you need to do.N((R"((RR-:scCsdS(sReturn text string to display.N((R"((RR=scCsdS(s>Return label text string to display in front of text (if any).N((R"((RR@scCs*|idjo|i|_n|iS(s%Do not override! Called by TreeNode.N(R"t expandableR)t IsExpandable(R"((RRGEscCsdS(s"Return whether there are subitems.iN((R"((RRKscCs9|ipgSn|i}|p d|_n|S(s%Do not override! Called by TreeNode.iN(R"Rt GetSubListRiR(R"Ri((RRhOs   cCsdS(s-Return whether the item's text may be edited.N((R"((RRXscCsdS(s+Change the item's text (if it is editable).N((R"R ((RR[scCsdS(s-Return name of icon to be displayed normally.N((R"((RRz^scCsdS(s2Return name of icon to be displayed when selected.N((R"((RRyascCsdS(s%Return list of items forming sublist.N((R"((RRdscCsdS(s%Called on a double-click on the item.N((R"((RREgs(RRt__doc__R-RRR)RRGRRhRRRzRyRRE(((RR1s           t FileTreeItemcBsMtZdZdZdZdZdZdZdZdZ RS(s4Example TreeItem subclass -- browse the file system.cCs ||_dS(N(RR"(R"R((RR-qscCstii|ip|iS(N(RRRR"(R"((RRtscCstii|idjS(Nt(RRRR"(R"((RRwscCstii|i}tii||}tii|tii|ijodSny ti|i|||_Wntij onXdS(N( RRtdirnameR"tnewpathRR trenameterror(R"R R((RRzs( cCs|ipdSndS(Ntpython(R"R(R"((RRzs cCstii|iS(N(RRtisdirR"(R"((RRscCsyti|i}Wntij o gSnX|idg}x9|D]1}t tii |i|}|i |qPW|S(NcCs%ttii|tii|S(N(tcmpRRtnormcasetatb(RR((RRgs( RtlistdirR"RtnamesRRRiRRRR$R(R"RRiR$R((RRs ( RRRR-RRRRzRR(((RRms      tScrolledCanvascBs>tZdZdZdZdZdZdZRS(NcKs|idpd|ds ss s (toptsthas_keyRR"tFrametframet rowconfiguretcolumnconfiguretCanvasR!Rt ScrollbarRRtsettyviewtxviewRtpage_upt page_downtunit_upt unit_downt zoom_heightR(R"RR((RR-s, cCs|iidddS(NitpageRB(R"R!t yview_scroll(R"R<((RRscCs|iidddS(NiRRB(R"R!R(R"R<((RRscCs|iidddS(NitunitRB(R"R!R(R"R<((RRscCs|iidddS(NiRRB(R"R!R(R"R<((RRscCsti|idS(NRB(t ZoomHeightRR"R(R"R<((RRs(RRR-RRRRR(((RRs      cCsdk}t|i}|idddd|it|dddddd}|iid dd d t d }t |i d|}|idS( NRitbgtyellowtwhiteRt takefocusiRDRctbothsC:/windows/desktop(tPyShelltToplevelR RbRRtscRRRR$RR!R)tnodeRD(RR$RRR ((Rttests   cCst}|iddt|dddd}|idddd tti}t |d|}|i |idS( NRiRRRRDiRcR(R R RbRR!RRRtcurdirR$RR)RRHR(RR!R$R ((Rttest2s  t__main__(RtsystTkintertimpRt configHandlerRR3RRRt__file__t_icondirt NameErrorRt RuntimeErrorRRRRRRRR(RRRRRRRRRRR3RRR((Rt?s.     %   <.,