eASSKrSSK7 SSKJrJr SSKJr SSKJr Sr \RR\RR\ 5\ 5r\RR!\5(a\r O-\RR!\ 5(d \"S\ <S35e\ 4S jrSS jr"S S 5r"S S5r"SS\5r"SS5rSr\S:XaSSKJr \"SSSS9 SSKJr \"\5 gg!\a \ rNf=f)N)*)Frame Scrollbar)idleConf) zoomheightIconszcan't find icon directory ()c*[5nSSKnUR[RR UR U5S55nUR 5 /nS=pVUHn[RR[RRU55Sn[XqS9n URU 5 [XSSS9n U RXVS9 [XS 9n U RUS-US9 US-nUS :dMUS -nSnM XAl g) z'Utility to display the available icons.rNz*.gif)filemasterraised)imagebdrelief)rowcolumn)text )Tkglobospathjoinescapesortsplitextbasename PhotoImageappendLabelgridimages) icondirrootrlistr$rrr namerlabels 2/opt/imh/python3.13/lib/python3.13/idlelib/tree.py listiconsr+%s 4D 99RWW\\$++g"6@ ADIIK FCww 0 0 67:2 edAh? s *d& s1uV ,! R<a%CFKc[RURS:[RURS:H0nX R (aSOSnUc UR OUnUR[US5 g)a Handle scrollwheel event. For wheel up, event.delta = 120*n on Windows, -1*n on darwin, where n can be > 1 if one scrolls fast. Flicking the wheel generates up to maybe 20 events with n up to 10 or more 1. Macs use wheel down (delta = 1*n) to scroll up, so positive delta means to scroll up on both systems. X-11 sends Control-Button-4,5 events instead. The widget parameter is needed so browser label bindings can pass the underlying canvas. This function depends on widget.yview to not be overridden by a subclass. runitsbreak) EventType MouseWheeldelta ButtonPressnumtypewidgetyviewSCROLL)eventr9upliness r* wheel_eventr?;sb"    a   a 1BZZ.BaE#^U\\F LL( r,c\rSrSrSrSrSrSrSSjrSSjr S r S r SS jr SS jr SS jrSrSrSrSrSrSrSSjrSSjrSSjrSSjrSrg)TreeNodeTrc|XlX lX0lSUlSUl/UlS=UlUl0Ulg)N collapsedF) canvasparentitemstateselectedchildrenxy iconimages)selfrErFrGs r*__init__TreeNode.__init__Xs;       r,cURSSH.nURRU5 UR5 M0 SUlgN)rJremovedestroyrF)rNcs r*rTTreeNode.destroybs9q!A MM  # IIK" r,c.URU$![a Of=f[RR U5up#U=(d Sn[RR [ X#-5n[URUS9nXPRU'U$)Nz.gif)r r ) rMKeyErrorrrrrICONDIRr rE)rNr(r extfullnamers r* geticonimageTreeNode.geticonimagehs~ ??4( (   GG$$T* mV77<<4$++H= % s  NcUR(agUR5 SUlURRUR5 UR 5 UR 5 g)NT)rI deselectallrEdeleteimage_iddrawicondrawtextrNr<s r*selectTreeNode.selecttsG ==    4==)  r,cUR(dgSUlURRUR5 UR 5 UR 5 g)NF)rIrEr`rarbrcrds r*deselectTreeNode.deselect}s;}}   4==)  r,c|UR(aURR5 gUR5 grR)rFr_ deselecttreerNs r*r_TreeNode.deselectalls% ;; KK # # %    r,cUR(aUR5 URHnUR5 M grR)rIrhrJrk)rNchilds r*rkTreeNode.deselecttrees, == MMO]]E    #r,cURS:XaUR5 OUR5 URR 5 g)Nexpandedr2)rHcollapseexpandrG OnDoubleClickrds r*flip TreeNode.flips3 :: # MMO KKM !r,cURR5(dgURS:wa(SUlUR5 UR 5 gg)Nrr)rG _IsExpandablerHupdateviewrds r*rtTreeNode.expandsByy&&((  :: ##DJ KKM IIK $r,cTURS:waSUlUR5 gg)NrD)rHrzrds r*rsTreeNode.collapses# :: $$DJ KKM %r,cURS- nUR5RS-nX!- nURRS5nURR 5nURRU5nXA::aX&::agURR URS5upxpX:a X5::aX-U- n OUn [ U 5U - n URRU 5 g)Nrr scrollregion)rLlastvisiblechildrEcanvasy winfo_height_getintsfloat yview_moveto) rNtopbottomheight visible_topvisible_heightvisible_bottomx0y0x1y1fractions r*r{ TreeNode.viewsffqj&&(**R/kk))!, 113,,^<  &": --dkk..IJ  &":|n4HH?R'   *r,cUR(a-URS:XaURSR5$U$)Nrr)rJrHrrls r*rTreeNode.lastvisiblechilds1 ==TZZ:5==$557 7Kr,cUR(aURR5 gURSnSURS'URR5 URR[5 UR SS5 URR [5up#pEURRSSXE4S9 XRS'g)Ncursorwatchrr)r)rFrzrEr`ALLdrawbbox configure)rN oldcursorrrrrs r*rzTreeNode.updates ;; KK    H-I$+DKK ! KK   KK  s # IIaO![[--c2NBB KK ! !1b~ ! >$-KK !r,c zXsUlUlUR5 UR5 URS:waU[ R -$UR(dtURR5nU(dU[ R -$UH:nURURX5nURRU5 M< US-nU[ R -nSnURHnUnURRUS-US-XgS-SS9 URXg5nURR5(dM\URS:XaSn UR n OS n UR"n UR%U 5n URR'US-US-U S 9n URR)U S U 5 URR)U S S 5 M URRUS-US-US-US-SS9n URR+U 5 U$)Nrrr rgray50)fill minusnodeplusnode)r<1> cgrR)rKs r*TreeNode.draw..sr,r)rKrLrbrcrHrAdyrJrG _GetSubList __class__rEr! create_linerryrsrtr\ create_imagetag_bind tag_lower) rNrKrLsublistrGrocxcycylasticonnamecallbackrids r*r TreeNode.draws   :: #x{{? "}}ii++-G8;;&t{{D? $$U+ rT _]]EF KK # #AaCAra4h # GB#Bzz''));;*,*H$~~H)H$||H))(3[[--ac6!85-I $$R9 $$R~F# [[ $ $QqS!B$!VAX% b! r,c UR(aEURR5=(d# URR5=(d SnO#URR5=(d SnUR U5nUR R URURSUS9nX0l UR RUSUR5 UR RUSUR5 g)N openfolderfoldernw)anchorrrr) rIrGGetSelectedIconName GetIconNamer\rErrKrLrarrerv)rN imagenamerrs r*rbTreeNode.drawicons ==668&..0&%  --/;8I!!), [[ % %dffdffT % O  R 4 Rtyy9r,c `^TRS-S- nTRS- nTRR5nU(aTRR XSUS9nTRR USTR5 TRR USTR5 TRRU5upVpx[US5S -nTRR5=(d S n TR TR5 TR ["R$"5n TR&(a1TRR)["R*"U S55 O0TRR)["R*"U S55 TRR-XSTRS9nTRR/STR05 TRR/STR5 TRR/SU4Sj5 TRR2S:Xa@TRR/SU4Sj5 TRR/SU4Sj5 UTl[6R8S :Xa=TRRU5n [SU SU S- S- 5[6lgg![a GNf=f![a [!TRU S S S S 9TlGNf=f)Nrr r.r)rrrrrz rr)rrpadxpadyhilitenormal)rwindow c0>[UTR5$rRr?rEerNs r*r#TreeNode.drawtext.. s+a2Mr,x11 c0>[UTR5$rRrrs r*rr"K4;;4Or, c0>[UTR5$rRrrs r*rr#rr,)rKrLrG GetLabelTextrE create_textrrervrmaxGetTextentry edit_finishAttributeErrorr)r"r CurrentThemerIr GetHighlight create_windowbindselect_or_edit_windowingsystemtext_idrAr) rNtextxtexty labeltextrrrrrrthemecoordss ` r*rcTreeNode.drawtextsor ! qII**, ((d.7)9B KK UDKK 8 KK \499 =![[--b1NBBCL2%Eyy  "1k  JJ     M JJ%%' == JJ !6!6uh!G H JJ !6!6uh!G H [[ & &u.24::'G t223  dii0 (MN :: & &% / JJOOL*O P JJOOL*O P ;;! [[%%b)Fb&)fQi"7!"; K2 L2 L?L&L-,L-cUR(a1URR5(aURU5 gUR U5 grR)rIrG IsEditableeditrerds r*rTreeNode.select_or_edit+s3 ==TYY1133 IIe  KK r,c[URSSSS9UlURRSURS5 URR S[ 5 URR SS9 URR5 URRSUR5 URRSUR5 g) Nrr )rhighlightthicknesswidthrr0)ipadxzz) Entryr)rinsertselection_rangeENDpack focus_setrr edit_cancelrds r*r TreeNode.edit1s4::!K  !TZZ/0 ""1c* a    D$4$45  D$4$45r,cURnU?UR5nUR5 U(a8X0RR 5:waURR U5 URR 5nX0RS'UR5 URR5 g![a gf=f)Nr) rrgetrTrGrSetTextr)rcrEr)rNr<rrs r*rTreeNode.edit_finish:s JJE yy{  DII--// II  d #yy  "! 6     sC CCcURnU?UR5 UR5 URR 5 g![a gf=frR)rrrTrcrEr)rNr<rs r*rTreeNode.edit_cancelIsM JJE         sA AA) rErJrrMrarGr)rFrIrHrrKrLrR)__name__ __module__ __qualname____firstlineno__rrOrTr\rerhr_rkrvrtrsr{rrzrrbrcrrrr__static_attributes__rr,r*rArATsm B  !  +" .'R :)=V 6   r,rAcd\rSrSrSrSrSrSrSrSr Sr S r S r S r S rS rSrSrSrg)TreeItemiTzvAbstract class representing tree items. Methods should typically be overridden, otherwise a default action is used. cg)z)Constructor. Do whatever you need to do.Nrrls r*rOTreeItem.__init__]r,cg)zReturn text string to display.Nrrls r*rTreeItem.GetText`r r,cg)z>Return label text string to display in front of text (if any).Nrrls r*rTreeItem.GetLabelTextcr r,Nc^URcUR5UlUR$)%Do not override! Called by TreeNode.) expandable IsExpandablerls r*ryTreeItem._IsExpandablehs& ?? ""//1DOr,cg)z"Return whether there are subitems.r rrls r*rTreeItem.IsExpandablensr,cpUR5(d/$UR5nU(dSUlU$)rr)r GetSubListr)rNrs r*rTreeItem._GetSubListrs1  ""I//#DOr,cg)z-Return whether the item's text may be edited.Nrrls r*rTreeItem.IsEditable{r r,cg)z+Change the item's text (if it is editable).Nr)rNrs r*rTreeItem.SetText~r r,cg)z-Return name of icon to be displayed normally.Nrrls r*rTreeItem.GetIconNamer r,cg)z2Return name of icon to be displayed when selected.Nrrls r*rTreeItem.GetSelectedIconNamer r,cg)z%Return list of items forming sublist.Nrrls r*rTreeItem.GetSubListr r,cg)z%Called on a double-click on the item.Nrrls r*ruTreeItem.OnDoubleClickr r,)r)rrrr__doc__rOrrrryrrrrrrrrurrr,r*r r TsL8-MJ <:<A44r,r cB\rSrSrSrSrSrSrSrSr Sr S r S r g ) FileTreeItemiz4Example TreeItem subclass -- browse the file system.cXlgrRr)rNrs r*rOFileTreeItem.__init__s r,cz[RRUR5=(d UR$rRrrrrls r*rFileTreeItem.GetTexts$ww *7dii7r,cZ[RRUR5S:g$)Nr/rls r*rFileTreeItem.IsEditables ww *b00r,c[RRUR5n[RRX!5n[RRU5[RRUR5:wag[R"URU5 X lg![ a gf=frR)rrdirnamerrenameOSError)rNrnewpaths r*rFileTreeItem.SetTexts''//$)),'',,w- 77??7 #rwwtyy'A A   IIdii )I   s'B== C  C c0UR5(dgg)Npython)rrls r*rFileTreeItem.GetIconNames  ""#r,cT[RRUR5$rR)rrisdirrls r*rFileTreeItem.IsExpandablesww}}TYY''r,cX[R"UR5nUR [RR S9 /nUHGn[ [RRURU55nURU5 MI U$![a /s$f=f)N)key) rlistdirrr7rnormcaser*rr!)rNnamesrr(rGs r*rFileTreeItem.GetSubLists JJtyy)E  )) *D TYY =>D NN4  I s B B)(B)r,N) rrrrr(rOrrrrrrrrr,r*r*r*s(>81 ( r,r*c8\rSrSrSrSrSrSrSrSr Sr g ) ScrolledCanvasic SU;aSUS'Xl[U5UlURRSSS9 URR SSS9 [ UR40UD6UlUR RSSSS9 [URSS 9Ul URRSSS S9 [URS S S 9Ul URRSSSS9 URRUR S'UR RURS'URRUR S'UR RURS'UR RSUR5 UR RSUR 5 UR RSUR"5 UR RSUR$5 UR RS[&5 UR R(S:Xa@UR RS[&5 UR RS[&5 UR RSUR*5 UR R-5 g)Nyscrollincrementrrr )weightnsew)rrstickyvbar)r(nsehbar horizontal)r(orientewsyscrollcommandcommandxscrollcommandz z zz rrrrz )r rframe rowconfigurecolumnconfigureCanvasrEr#rrMrOsetr:xviewrpage_up page_downunit_up unit_downr?r zoom_heightr)rNr optss r*rOScrolledCanvas.__init__s  T )')D# $ 6]  !, ""1Q"/TZZ040  Qq8djjv6  1Qu5djjvlK  1Qu5(,  $%#{{00 )(,  $%#{{00 )  5 t~~6 T\\2 t~~6 5 ;; ' '5 0 KK  \; 7 KK  \; 7 (8(89 r,c<URRSS5 g)Nrpager2rE yview_scrollrds r*r\ScrolledCanvas.page_up   V,r,c<URRSS5 g)Nr rdr2rerds r*r]ScrolledCanvas.page_down   F+r,c<URRSS5 g)Nrunitr2rerds r*r^ScrolledCanvas.unit_uprhr,c<URRSS5 g)Nr rmr2rerds r*r_ScrolledCanvas.unit_downrkr,cD[R"UR5 g)Nr2)rr`r rds r*r`ScrolledCanvas.zoom_heightst{{+r,)rErVrOr rMN) rrrrrOr\r]r^r_r`rrr,r*rGrGs  8r,rGcx[U5n[[UR5R S5SS5up#URSUS-US-4-5 [ USSSS9nUR RSS [S 9 [[5n[URSU5nUR5 g) N+r z+%d+%d2whiter)bgr takefocusboth)rtrside)ToplevelmapintgeometrysplitrGrVrLEFTr*rYrArErt)rFrrKrLscrGnodes r* _tree_widgetrs 6 C sFOO%++C04 5DALLQrT1S5M)* A KBHHMMdM3  D BIItT *DKKMr,__main__)mainzidlelib.idle_test.test_treerF) verbosityexit)runrR)rtkinter tkinter.ttkrridlelib.configridlelibrrYrrr5__file___icondir NameErrorr> RuntimeErrorr+r?rAr r*rGrrunittestridlelib.idle_test.htestrrr,r*rs" (# ww||BGGOOH5w?H77==G w   4WKqA BB,2} } @7474x)8)\,,^ z &!%@+  uHs5DD  D