ó
    ´OÂf •  ã                   óÐ   • S r SSKJrJrJr  SSKJrJrJrJ	r	J
r
Jr  SSKJr  SSKJr   " S S\5      rS r\\4S	 jr " S
 S\5      r " S S5      rS rS r\S:X  a  \" 5         gg)z
Graphically display a Tree.
é    )ÚIntVarÚMenuÚTk)Ú	BoxWidgetÚCanvasFrameÚCanvasWidgetÚ
OvalWidgetÚParenWidgetÚ
TextWidget)ÚTree)Úin_idlec                   ó�   • \ rS rSrSrS rS rS rS rS r	S r
S	 rS
 rS rS rS rS rS rS rS rS rS rS rS rS rSrg)ÚTreeSegmentWidgeté   aK  
A canvas widget that displays a single segment of a hierarchical
tree.  Each ``TreeSegmentWidget`` connects a single "node widget"
to a sequence of zero or more "subtree widgets".  By default, the
bottom of the node is connected to the top of each subtree by a
single line.  However, if the ``roof`` attribute is set, then a
single triangular "roof" will connect the node to all of its
children.

Attributes:
  - ``roof``: What sort of connection to draw between the node and
    its subtrees.  If ``roof`` is true, draw a single triangular
    "roof" over the subtrees.  If ``roof`` is false, draw a line
    between each subtree and the node.  Default value is false.
  - ``xspace``: The amount of horizontal space to leave between
    subtrees when managing this widget.  Default value is 10.
  - ``yspace``: The amount of space to place between the node and
    its children when managing this widget.  Default value is 15.
  - ``color``: The color of the lines connecting the node to its
    subtrees; and of the outline of the triangular roof.  Default
    value is ``'#006060'``.
  - ``fill``: The fill color for the triangular roof.  Default
    value is ``''`` (no fill).
  - ``width``: The width of the lines connecting the node to its
    subtrees; and of the outline of the triangular roof.  Default
    value is 1.
  - ``orientation``: Determines whether the tree branches downwards
    or rightwards.  Possible values are ``'horizontal'`` and
    ``'vertical'``.  The default value is ``'vertical'`` (i.e.,
    branch downwards).
  - ``draggable``: whether the widget can be dragged by the user.
c                 ó~  • X l         X0l        SU l        SU l        SU l        SU l        SU l        U Vs/ s H  oQR                  SSSSSS9PM     snU l        UR                  SSSSSS	9U l
        U R                  U5        U H  nU R                  U5        M     SU l        [        R                  " X40 UD6  g
s  snf )z1
:type node:
:type subtrees: list(CanvasWidgetI)
r   é
   é   Fú#006060©ÚfillÚ Úhidden)r   ÚstateÚoutlineN)Ú_labelÚ	_subtreesÚ_horizontalÚ_roofÚ_xspaceÚ_yspaceÚ_orderedÚcreate_lineÚ_linesÚcreate_polygonÚ_polygonÚ_add_child_widgetÚ	_managingr   Ú__init__)ÚselfÚcanvasÚlabelÚsubtreesÚattribsÚcÚsubtrees          Ú0/usr/lib/python3/dist-packages/nltk/draw/tree.pyr(   ÚTreeSegmentWidget.__init__@   sÎ   € ð
 ŒØ!Œð ˆÔØˆŒ
ØˆŒØˆŒØˆŒñ PXÓXÊxÈ!×)Ñ)¨!¨Q°°1¸9Ð)ÓEÉxÑXˆŒØ×-Ñ-Øˆq�r °9ð .ð 
ˆŒð
 	×Ñ˜uÔ%ÛˆGØ×"Ñ" 7Ö+ñ  ð ˆŒä×Ò˜dÑ6¨gÓ6ùò Ys   ´B:c                 ó\  • U R                  5       nUS:X  a“  X l        U R                  (       a>  U R                   H  nUR                  USS9  M     UR                  U R                  SS9  g U R                   H  nUR                  USS9  M     UR                  U R                  SS9  g US:X  a'  US:X  a  SU l        g US:X  a  S	U l        g [        S
5      eUS:X  a=  U R                   H  nUR                  XBS9  M     UR                  U R                  US9  g [        U[        5      (       a4  US	   S:X  a+  U R                  [        US   5         nUR                  XBS9  g US:X  a  UR                  U R                  US9  g US:X  aD  UR                  U R                  X05        U R                   H  nUR                  XAU05        M     g US;   a5  US:X  a  X l
        OUS:X  a  X l        U R                  U R                  5        g US:X  a  X l        g [        R                   " XU5        g )NÚroofr   )r   ÚnormalÚorientationÚ
horizontalé   Úverticalr   z*orientation must be horizontal or verticalÚcolorr   )r   r   Úwidth)ÚxspaceÚyspacer;   r<   Úordered)r*   r   r#   Ú
itemconfigr%   r   Ú
ValueErrorÚ
isinstanceÚtupleÚintr   r    Úupdater   r!   r   Ú__setitem__)r)   ÚattrÚvaluer*   Úls        r0   rD   ÚTreeSegmentWidget.__setitem___   së  € Ø—‘“ˆØ�6‹>ØŒJØ�z�zØŸœ�AØ×%Ñ% a¨xÐ%Ó8ñ %à×!Ñ! $§-¡-°xÐ!Ò@àŸœ�AØ×%Ñ% a¨xÐ%Ó8ñ %à×!Ñ! $§-¡-°xÐ!Ò@Ø�]Ó"Ø˜Ó$Ø#$�Õ Ø˜*Ó$Ø#$�Õ ä Ð!MÓNÐNØ�W‹_Ø—[”[�Ø×!Ñ! !Ð!Ó0ñ !à×Ñ˜dŸm™m°UÐÒ;Ü˜œe×$Ñ$¨¨a©°GÓ);à—‘œC  Q¡›LÑ)ˆAØ×Ñ˜aÐÒ,Ø�V‹^Ø×Ñ˜dŸm™m°%ÐÒ8Ø�W‹_Ø×Ñ˜dŸm™m¨d¨]Ô;Ø—[”[�Ø×!Ñ! !¨E ]Ö3ò !àÐ)Ó)Ø�xÓØ$•Ø˜Ó!Ø$”Ø�K‰K˜Ÿ™Õ$Ø�YÓØ!�Mä×$Ò$ T°Õ7ó    c                 ób  • US:X  a  U R                   $ US:X  a*  U R                  5       R                  U R                  U5      $ US:X  a*  U R                  5       R                  U R                  S5      $ [	        U[
        5      (       aD  US   S:X  a;  U R                  [        US   5         nU R                  5       R                  US5      $ US:X  a  U R                  $ US	:X  a  U R                  $ US
:X  a  U R                  (       a  ggUS:X  a  U R                  $ [        R                  " X5      $ )Nr3   r:   r9   r   r   r7   r   r;   r<   r5   r6   r8   r=   )r   r*   Úitemcgetr%   r@   rA   r#   rB   r   r    r   r!   r   Ú__getitem__)r)   rE   rG   s      r0   rL   ÚTreeSegmentWidget.__getitem__‹   s   € Ø�6‹>Ø—:‘:ÐØ�W‹_Ø—;‘;“=×)Ñ)¨$¯-©-¸Ó>Ð>Ø�W‹_Ø—;‘;“=×)Ñ)¨$¯-©-¸ÓCÐCÜ˜œe×$Ñ$¨¨a©°GÓ);Ø—‘œC  Q¡›LÑ)ˆAØ—;‘;“=×)Ñ)¨!¨VÓ4Ð4Ø�XÓØ—<‘<ÐØ�XÓØ—<‘<ÐØ�]Ó"Ø××Ø#à!Ø�YÓØ—=‘=Ð ä×+Ò+¨DÓ7Ð7rI   c                 ó   • U R                   $ ©N)r   ©r)   s    r0   r+   ÚTreeSegmentWidget.label£   s   € Ø�{‰{ÐrI   c                 ó    • U R                   S S  $ rO   )r   rP   s    r0   r,   ÚTreeSegmentWidget.subtrees¦   s   € Ø�~‰~™aÐ Ð rI   c                 óž   • U R                  U R                  5        U R                  U5        Xl        U R                  U R                  5        g)z"
Set the node label to ``label``.
N)Ú_remove_child_widgetr   r&   rC   )r)   r+   s     r0   Ú	set_labelÚTreeSegmentWidget.set_label©   s9   € ð 	×!Ñ! $§+¡+Ô.Ø×Ñ˜uÔ%ØŒØ�‰�D—K‘KÕ rI   c                 ó¼   • U R                   R                  U5      nX R                   U'   U R                  U5        U R                  U5        U R	                  U5        g)z3
Replace the child ``oldchild`` with ``newchild``.
N)r   ÚindexrU   r&   rC   )r)   ÚoldchildÚnewchildrY   s       r0   Úreplace_childÚTreeSegmentWidget.replace_child²   sL   € ð —‘×$Ñ$ XÓ.ˆØ (�‰�uÑØ×!Ñ! (Ô+Ø×Ñ˜xÔ(Ø�‰�HÕrI   c                 ó  • U R                   R                  U5      nU R                   U	 U R                  U5        U R                  5       R	                  U R
                  R                  5       5        U R                  U R                  5        g rO   )	r   rY   rU   r*   Údeleter#   ÚpoprC   r   )r)   ÚchildrY   s      r0   Úremove_childÚTreeSegmentWidget.remove_child¼   s_   € Ø—‘×$Ñ$ UÓ+ˆØ�N‰N˜5Ð!Ø×!Ñ! %Ô(Ø�‰‹×Ñ˜TŸ[™[Ÿ_™_Ó.Ô/Ø�‰�D—K‘KÕ rI   c           
      ó
  • U R                  5       nU R                  R                  X5        U R                  U5        U R                  R                  UR                  SSSSSS95        U R                  U R                  5        g )Nr   r   r   )	r*   r   Úinsertr&   r#   Úappendr"   rC   r   )r)   rY   ra   r*   s       r0   Úinsert_childÚTreeSegmentWidget.insert_childÃ   se   € Ø—‘“ˆØ�‰×Ñ˜eÔ+Ø×Ñ˜uÔ%Ø�‰×Ñ˜6×-Ñ-¨a°°A°q¸yÐ-ÐIÔJØ�‰�D—K‘KÕ rI   c                 óV   • U R                   (       a  U R                  /$ U R                  $ rO   )r   r%   r#   rP   s    r0   Ú_tagsÚTreeSegmentWidget._tagsÌ   s   € Ø�:�:Ø—M‘M�?Ð"à—;‘;ÐrI   c                 óø   • [        U[        5      (       a  UR                  5       R                  5       nOUR                  5       nU R                  (       a  US   US   US   -   S-  4$ US   US   -   S-  US   4$ )Nr   r7   é   ç       @é   )r@   r   r+   Úbboxr   )r)   ra   rp   s      r0   Ú_subtree_topÚTreeSegmentWidget._subtree_topÒ   sz   € Ü�eÔ.×/Ñ/Ø—;‘;“=×%Ñ%Ó'‰Dà—:‘:“<ˆDØ××Ø˜‘G˜d 1™g¨¨Q©Ñ/°3Ñ6Ð7Ð7à˜!‘W˜t A™wÑ&¨#Ñ-¨t°A©wÐ7Ð7rI   c                 ó¤   • U R                   R                  5       nU R                  (       a  US   US   US   -   S-  4$ US   US   -   S-  US   4$ )Nro   r7   rm   rn   r   )r   rp   r   )r)   rp   s     r0   Ú_node_bottomÚTreeSegmentWidget._node_bottomÜ   s_   € Ø�{‰{×ÑÓ!ˆØ××Ø˜‘G˜d 1™g¨¨Q©Ñ/°3Ñ6Ð7Ð7à˜!‘W˜t A™wÑ&¨#Ñ-¨t°A©wÐ7Ð7rI   c                 óø  • [        U R                  5      S:X  a  g U R                  R                  5       c  g XR                  L a  U R                  nOU/nU R                  (       a"  U R
                  (       d  U R                  U5      nU R                  5       u  p4U R                  S   R                  5       u  pVpxU R                  SS   HK  n	U	R                  5       n
[        XZS   5      n[        XjS   5      n[        XzS   5      n[        XŠS   5      nMM     U R                  (       a.  U R                  5       R                  U R                  X4XVXXX45	        O-U R                  5       R                  U R                  X4XVXvX45	        U Hq  n	U R                  5       u  p4U R                  U R                  R                  U	5         nU R!                  U	5      u  pÍU R                  5       R                  X³XLU5        Ms     g )Nr   r7   ro   rm   )Úlenr   r   rp   r!   r'   Ú_maintain_orderrt   ÚminÚmaxr   r*   Úcoordsr%   r#   rY   rq   )r)   ra   Úneed_updateÚnodexÚnodeyÚxminÚyminÚxmaxÚymaxr/   rp   ÚlineÚsubtreexÚsubtreeys                 r0   Ú_updateÚTreeSegmentWidget._updateã   s¢  € Üˆt�~‰~Ó !Ó#ØØ�;‰;×ÑÓÑ%Øð —K‘KÒØŸ.™.‰Kà ˜'ˆKà�=�= §§Ø×.Ñ.¨uÓ5ˆKð ×*Ñ*Ó,‰ˆØ#'§>¡>°!Ñ#4×#9Ñ#9Ó#;Ñ ˆ�TØ—~‘~ a bÓ)ˆGØ—<‘<“>ˆDÜ�t !™WÓ%ˆDÜ�t !™WÓ%ˆDÜ�t !™WÓ%ˆDÜ�t !™WÓ%ŠDñ *ð ××Ø�K‰K‹M× Ñ Ø—‘˜u¨T¸ÀUõð �K‰K‹M× Ñ Ø—‘˜u¨T¸ÀUôó
 #ˆGØ!×.Ñ.Ó0‰NˆUØ—;‘;˜tŸ~™~×3Ñ3°GÓ<Ñ=ˆDØ#'×#4Ñ#4°WÓ#=Ñ ˆXØ�K‰K‹M× Ñ  ¨e¸xÖHò	 #rI   c                 óh   • U R                   (       a  U R                  U5      $ U R                  U5      $ rO   )r   Ú_maintain_order_horizontalÚ_maintain_order_vertical)r)   ra   s     r0   rx   Ú!TreeSegmentWidget._maintain_order  s-   € Ø××Ø×2Ñ2°5Ó9Ð9à×0Ñ0°Ó7Ð7rI   c                 ó¾  • UR                  5       u  p#pEXR                  L ag  U R                   HK  nUR                  5       u  pxpšXPR                  -   U:”  d  M*  UR	                  SXPR                  -   U-
  5        MM     U R                  $ U/nU R                  R                  U5      nX@R                  -   n[        US-   [        U R                  5      5       H}  nU R                  U   R                  5       u  pxpšX×:”  d  M*  U R                  U   R	                  X×-
  S5        XÙU-
  U R                  -   -  nUR                  U R                  U   5        M     X R                  -
  n[        US-
  SS5       H}  nU R                  U   R                  5       u  pxpšXÙ:  d  M*  U R                  U   R	                  XÙ-
  S5        XÙU-
  U R                  -   -  nUR                  U R                  U   5        M     U R                  R                  5       u  pxpšX£U R                  -
  :”  a7  U R                  R	                  SX0R                  -
  U
-
  5        U R                  nU$ )Nr   r7   éÿÿÿÿ)
rp   r   r   r    ÚmoverY   r   Úrangerw   rf   )r)   ra   ÚleftÚtopÚrightÚbotr/   Úx1Úy1Úx2Úy2ÚmovedrY   ÚxÚis                  r0   rŠ   Ú*TreeSegmentWidget._maintain_order_vertical  sÿ  € Ø"'§*¡*£,Ñˆ�Eà—K‘KÒàŸ>œ>�Ø#*§<¡<£>Ñ �˜ØŸ™Ñ%¨Õ*Ø—L‘L  C¯,©,Ñ$6¸Ñ$;Ö<ñ *ð
 —>‘>Ð!à�GˆEØ—N‘N×(Ñ(¨Ó/ˆEð Ÿ™Ñ$ˆAÜ˜5 1™9¤c¨$¯.©.Ó&9Ö:�Ø#'§>¡>°!Ñ#4×#9Ñ#9Ó#;Ñ �˜Ø•6Ø—N‘N 1Ñ%×*Ñ*¨1©6°1Ô5Ø˜b™ 4§<¡<Ñ/Ñ/�AØ—L‘L §¡°Ñ!2Ö3ñ ;ð —|‘|Ñ#ˆAÜ˜5 1™9 b¨"Ö-�Ø#'§>¡>°!Ñ#4×#9Ñ#9Ó#;Ñ �˜Ø•6Ø—N‘N 1Ñ%×*Ñ*¨1©6°1Ô5Ø˜b™ 4§<¡<Ñ/Ñ/�AØ—L‘L §¡°Ñ!2Ö3ñ .ð  $Ÿ{™{×/Ñ/Ó1ÑˆR�RØ˜$Ÿ,™,Ñ&Ó&Ø—‘× Ñ   C¯,©,Ñ$6¸Ñ$;Ô<ØŸ™�ð ˆrI   c                 ó¼  • UR                  5       u  p#pEXR                  L af  U R                   HJ  nUR                  5       u  pxpšX@R                  -   U:”  d  M*  UR	                  X@R                  -   U-
  5        ML     U R                  $ U/nU R                  R                  U5      nXPR                  -   n[        US-   [        U R                  5      5       H}  nU R                  U   R                  5       u  pxpšXØ:”  d  M*  U R                  U   R	                  SXØ-
  5        XÚU-
  U R                  -   -  nUR                  U R                  U   5        M     X0R                  -
  n[        US-
  SS5       H}  nU R                  U   R                  5       u  pxpšXÚ:  d  M*  U R                  U   R	                  SXÚ-
  5        XÚU-
  U R                  -   -  nUR                  U R                  U   5        M     U R                  R                  5       u  pxpšX’U R                  -
  :”  a7  U R                  R	                  X R                  -
  U	-
  S5        U R                  nU$ )Nr7   r   r�   )
rp   r   r   r   rŽ   rY   r    r�   rw   rf   )r)   ra   r�   r‘   r’   r“   r/   r”   r•   r–   r—   r˜   rY   Úyrš   s                  r0   r‰   Ú,TreeSegmentWidget._maintain_order_horizontal<  sý  € Ø"'§*¡*£,Ñˆ�Eà—K‘KÒàŸ>œ>�Ø#*§<¡<£>Ñ �˜ØŸ<™<Ñ'¨"Õ,Ø—L‘L ¯©Ñ!5¸Ñ!:Ö;ñ *ð
 —>‘>Ð!à�GˆEØ—N‘N×(Ñ(¨Ó/ˆEð —l‘lÑ"ˆAÜ˜5 1™9¤c¨$¯.©.Ó&9Ö:�Ø#'§>¡>°!Ñ#4×#9Ñ#9Ó#;Ñ �˜Ø•6Ø—N‘N 1Ñ%×*Ñ*¨1¨a©fÔ5Ø˜b™ 4§<¡<Ñ/Ñ/�AØ—L‘L §¡°Ñ!2Ö3ñ ;ð —l‘lÑ"ˆAÜ˜5 1™9 b¨"Ö-�Ø#'§>¡>°!Ñ#4×#9Ñ#9Ó#;Ñ �˜Ø•6Ø—N‘N 1Ñ%×*Ñ*¨1¨a©fÔ5Ø˜b™ 4§<¡<Ñ/Ñ/�AØ—L‘L §¡°Ñ!2Ö3ñ .ð  $Ÿ{™{×/Ñ/Ó1ÑˆR�RØ˜4Ÿ<™<Ñ'Ó'Ø—‘× Ñ  ¯©Ñ!4°rÑ!9¸1Ô=ØŸ™�ð ˆrI   c                 óÒ  • U R                  5       u  pSnU R                   HY  nUR                  5       nXS   -
  U R                  -   nX5S   -
  nUR	                  Xg5        X5S   US   -
  U R
                  -   -  nM[     SnU R                   H  nX€R                  U5      S   -  nM     U[        U R                  5      -  nU R                   H  nUR	                  SX(-
  5        M     g )Né   r   r7   rm   ç        )rt   r   rp   r   rŽ   r    rq   rw   )	r)   r}   r~   r�   r/   Úsubtree_bboxÚdxÚdyÚcenters	            r0   Ú_manage_horizontalÚ$TreeSegmentWidget._manage_horizontalf  sÝ   € Ø×*Ñ*Ó,‰ˆð ˆØ—~”~ˆGØ"Ÿ<™<›>ˆLØ a™Ñ(¨4¯<©<Ñ7ˆBØ !‘_Ñ$ˆBØ�L‰L˜Ô Ø˜a‘ <°¡?Ñ2°T·\±\ÑAÑAŠAñ &ð ˆØ—~”~ˆGØ×'Ñ'¨Ó0°Ñ3Ñ3ŠFñ &à”#�d—n‘nÓ%Ñ%ˆð —~”~ˆGØ�L‰L˜˜E™NÖ+ò &rI   c                 óÎ  • U R                  5       u  pSnU R                   HY  nUR                  5       nX%S   -
  U R                  -   nX5S   -
  nUR	                  Xv5        X5S   US   -
  U R
                  -   -  nM[     SnU R                   H/  nX€R                  U5      S   [        U R                  5      -  -  nM1     U R                   H  nUR	                  X-
  S5        M     g )Nr   r7   ro   r¡   )rt   r   rp   r    rŽ   r   rq   rw   )	r)   r}   r~   r™   r/   r¢   r¤   r£   r¥   s	            r0   Ú_manage_verticalÚ"TreeSegmentWidget._manage_vertical|  sØ   € Ø×*Ñ*Ó,‰ˆð ˆØ—~”~ˆGØ"Ÿ<™<›>ˆLØ a™Ñ(¨4¯<©<Ñ7ˆBØ !‘_Ñ$ˆBØ�L‰L˜Ô Ø˜a‘ <°¡?Ñ2°T·\±\ÑAÑAŠAñ &ð ˆØ—~”~ˆGØ×'Ñ'¨Ó0°Ñ3´c¸$¿.¹.Ó6IÑIÑIŠFñ &ð —~”~ˆGØ�L‰L˜™¨Ö+ò &rI   c                 ó$  • SU l         U R                  5       u  p[        U R                  5      S:X  a  g U R                  (       a  U R                  5         OU R                  5         U R                   H  nU R                  U5        M     SU l         g )NTr   F)r'   rt   rw   r   r   r¦   r©   r†   )r)   r}   r~   r/   s       r0   Ú_manageÚTreeSegmentWidget._manage‘  ss   € ØˆŒØ×*Ñ*Ó,‰ˆÜˆt�~‰~Ó !Ó#Øà××Ø×#Ñ#Õ%à×!Ñ!Ô#ð —~”~ˆGØ�L‰L˜Ö!ñ &ð ˆ�rI   c                 ó<   • SU R                    SU R                   S3$ )Nz	[TreeSeg z: Ú])r   r   rP   s    r0   Ú__repr__ÚTreeSegmentWidget.__repr__¢  s    € Ø˜4Ÿ;™;˜- r¨$¯.©.Ð)9¸Ð;Ð;rI   )
r   r   r#   r'   r!   r%   r   r   r   r    N)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__r(   rD   rL   r+   r,   rV   r\   rb   rg   rj   rq   rt   r†   rx   rŠ   r‰   r¦   r©   r¬   r°   Ú__static_attributes__© rI   r0   r   r      sq   † ñòB7ò>*8òX8ò0ò!ò!òò!ò!òò8ò8ò'IòR8ò(òT(òT,ò,,ò*õ"<rI   r   c                 óÔ   • [        U[        5      (       aF  U" XR                  5       40 UD6nU V	s/ s H  n	[        U U	UUUUUU5      PM     n
n	[	        XU
40 UD6$ U" X40 UD6$ s  sn	f rO   )r@   r   r+   Ú_tree_to_treesegr   )r*   ÚtÚ	make_nodeÚ	make_leafÚtree_attribsÚnode_attribsÚleaf_attribsÚloc_attribsr+   ra   r,   s              r0   rº   rº   ¦  s’   € ô �!”T×ÑÙ˜&§'¡'£)Ñ<¨|Ñ<ˆñ ó
ò �ô ØØØØØØØØö	ñ ð 	ð 
ô ! °ÑI¸LÑIÐIá˜Ñ3 lÑ3Ð3ùò
s   ±A%c           
      ó"  • 0 n0 n0 n0 n[        UR                  5       5       HY  u  pšU	SS S:X  a	  X¥U	SS '   M  U	SS S:X  a	  X¦U	SS '   M)  U	SS S:X  a	  X§U	SS '   M;  U	SS S:X  a	  X¨U	SS '   MM  [        SU	-  5      e   [        U UUUUUUU5      $ )	a  
Convert a Tree into a ``TreeSegmentWidget``.

:param make_node: A ``CanvasWidget`` constructor or a function that
    creates ``CanvasWidgets``.  ``make_node`` is used to convert
    the Tree's nodes into ``CanvasWidgets``.  If no constructor
    is specified, then ``TextWidget`` will be used.
:param make_leaf: A ``CanvasWidget`` constructor or a function that
    creates ``CanvasWidgets``.  ``make_leaf`` is used to convert
    the Tree's leafs into ``CanvasWidgets``.  If no constructor
    is specified, then ``TextWidget`` will be used.
:param attribs: Attributes for the canvas widgets that make up the
    returned ``TreeSegmentWidget``.  Any attribute beginning with
    ``'tree_'`` will be passed to all ``TreeSegmentWidgets`` (with
    the ``'tree_'`` prefix removed.  Any attribute beginning with
    ``'node_'`` will be passed to all nodes.  Any attribute
    beginning with ``'leaf_'`` will be passed to all leaves.  And
    any attribute beginning with ``'loc_'`` will be passed to all
    text locations (for Trees).
Né   Útree_Únode_Úleaf_é   Úloc_zBad attribute: %s)ÚlistÚitemsr?   rº   )r*   r»   r¼   r½   r-   r¾   r¿   rÀ   rÁ   ÚkeyrF   s              r0   Útree_to_treesegmentrÌ   Ä  s×   € ð0 €LØ€LØ€LØ€Kä˜7Ÿ=™=›?Ö+‰
ˆØˆr�ˆ7�gÓØ$)˜˜Q˜R˜Ó!Ø��!ˆW˜ÓØ$)˜˜Q˜R˜Ó!Ø��!ˆW˜ÓØ$)˜˜Q˜R˜Ó!Ø��!ˆW˜ÓØ#(˜˜A˜B˜Ó äÐ0°3Ñ6Ó7Ð7ñ ,ô ØØ	ØØØØØØó	ð 	rI   c                   ó˜   • \ rS rSrSr\\4S jrS rS rSS jr	SS jr
SS jrSS	 jrSS
 jrSS jrS rS rS rS rS rS rS rSrg)Ú
TreeWidgetiý  a   
A canvas widget that displays a single Tree.
``TreeWidget`` manages a group of ``TreeSegmentWidgets`` that are
used to display a Tree.

Attributes:

  - ``node_attr``: Sets the attribute ``attr`` on all of the
    node widgets for this ``TreeWidget``.
  - ``node_attr``: Sets the attribute ``attr`` on all of the
    leaf widgets for this ``TreeWidget``.
  - ``loc_attr``: Sets the attribute ``attr`` on all of the
    location widgets for this ``TreeWidget`` (if it was built from
    a Tree).  Note that a location widget is a ``TextWidget``.

  - ``xspace``: The amount of horizontal space to leave between
    subtrees when managing this widget.  Default value is 10.
  - ``yspace``: The amount of space to place between the node and
    its children when managing this widget.  Default value is 15.

  - ``line_color``: The color of the lines connecting each expanded
    node to its subtrees.
  - ``roof_color``: The color of the outline of the triangular roof
    for collapsed trees.
  - ``roof_fill``: The fill color for the triangular roof for
    collapsed trees.
  - ``width``

  - ``orientation``: Determines whether the tree branches downwards
    or rightwards.  Possible values are ``'horizontal'`` and
    ``'vertical'``.  The default value is ``'vertical'`` (i.e.,
    branch downwards).

  - ``shapeable``: whether the subtrees can be independently
    dragged by the user.  THIS property simply sets the
    ``DRAGGABLE`` property on all of the ``TreeWidget``'s tree
    segments.
  - ``draggable``: whether the widget can be dragged by the user.
c                 óÐ  • X0l         X@l        X l        0 U l        0 U l        SS0U l        SU l        SU l        SU l        SU l	        SU l
        SU l        SU l        SU l        SU l        0 U l        0 U l        0 U l        / U l        / U l        U R)                  XS	5        U R+                  XS	5      U l        U R/                  U R,                  5        [0        R2                  " X40 UD6  g )
Nr9   z#008000z#008080r7   z#c0c0c0Fr   r8   r¸   )Ú
_make_nodeÚ
_make_leafÚ_treeÚ_nodeattribsÚ_leafattribsÚ_locattribsÚ_line_colorÚ_line_widthÚ_roof_colorÚ
_roof_fillÚ
_shapeabler   r    Ú_orientationr!   Ú_keysÚ_expanded_treesÚ_collapsed_treesÚ_nodesÚ_leavesÚ_make_collapsed_treesÚ_make_expanded_treeÚ_treesegr&   r   r(   )r)   r*   r»   r¼   r½   r-   s         r0   r(   ÚTreeWidget.__init__&  så   € ð $ŒØ#ŒØŒ
ð ˆÔØˆÔØ# YÐ/ˆÔØ$ˆÔØˆÔØ$ˆÔØ#ˆŒØˆŒØˆŒØˆŒØ&ˆÔØˆŒð ˆŒ
Ø!ˆÔØ "ˆÔØˆŒØˆŒà×"Ñ" 6¨bÔ1Ø×0Ñ0°¸BÓ?ˆŒØ×Ñ˜tŸ}™}Ô-ä×Ò˜dÑ6¨gÓ6rI   c                 ó    • U R                   U   $ ©a  
Return the ``TreeSegmentWidget`` for the specified subtree.

:param path_to_tree: A list of indices i1, i2, ..., in, where
    the desired widget is the widget corresponding to
    ``tree.children()[i1].children()[i2]....children()[in]``.
    For the root, the path is ``()``.
)rÝ   ©r)   Úpath_to_trees     r0   Úexpanded_treeÚTreeWidget.expanded_treeI  s   € ð ×#Ñ# LÑ1Ð1rI   c                 ó    • U R                   U   $ ræ   )rÞ   rç   s     r0   Úcollapsed_treeÚTreeWidget.collapsed_treeT  s   € ð ×$Ñ$ \Ñ2Ð2rI   c                 óð   • [        U R                  R                  5       5       H  nUR                  X5        M     [        U R                  R                  5       5       H  nUR                  X5        M     g©z%
Add a binding to all tree segments.
N)rÉ   rÝ   ÚvaluesÚ
bind_clickrÞ   ©r)   ÚcallbackÚbuttonÚtsegs       r0   Úbind_click_treesÚTreeWidget.bind_click_trees_  sX   € ô ˜×-Ñ-×4Ñ4Ó6Ö7ˆDØ�O‰O˜HÖ-ñ 8ä˜×.Ñ.×5Ñ5Ó7Ö8ˆDØ�O‰O˜HÖ-ò 9rI   c                 óð   • [        U R                  R                  5       5       H  nUR                  X5        M     [        U R                  R                  5       5       H  nUR                  X5        M     grï   )rÉ   rÝ   rð   Ú	bind_dragrÞ   rò   s       r0   Úbind_drag_treesÚTreeWidget.bind_drag_treesh  sX   € ô ˜×-Ñ-×4Ñ4Ó6Ö7ˆDØ�N‰N˜8Ö,ñ 8ä˜×.Ñ.×5Ñ5Ó7Ö8ˆDØ�N‰N˜8Ö,ò 9rI   c                 ó”   • U R                    H  nUR                  X5        M     U R                    H  nUR                  X5        M     g©z
Add a binding to all leaves.
N)rà   rñ   ©r)   ró   rô   Úleafs       r0   Úbind_click_leavesÚTreeWidget.bind_click_leavesq  s8   € ð —L”LˆDØ�O‰O˜HÖ-ñ !à—L”LˆDØ�O‰O˜HÖ-ò !rI   c                 ó”   • U R                    H  nUR                  X5        M     U R                    H  nUR                  X5        M     grý   )rà   rù   rþ   s       r0   Úbind_drag_leavesÚTreeWidget.bind_drag_leavesz  s8   € ð —L”LˆDØ�N‰N˜8Ö,ñ !à—L”LˆDØ�N‰N˜8Ö,ò !rI   c                 ó”   • U R                    H  nUR                  X5        M     U R                    H  nUR                  X5        M     g©z
Add a binding to all nodes.
N)rß   rñ   ©r)   ró   rô   Únodes       r0   Úbind_click_nodesÚTreeWidget.bind_click_nodesƒ  s8   € ð —K”KˆDØ�O‰O˜HÖ-ñ  à—K”KˆDØ�O‰O˜HÖ-ò  rI   c                 ó”   • U R                    H  nUR                  X5        M     U R                    H  nUR                  X5        M     gr  )rß   rù   r  s       r0   Úbind_drag_nodesÚTreeWidget.bind_drag_nodesŒ  s8   € ð —K”KˆDØ�N‰N˜8Ö,ñ  à—K”KˆDØ�N‰N˜8Ö,ò  rI   c           
      ó†  • [        U[        5      (       d  g U R                  nU R                  nU" XR	                  5       40 U R
                  D6nU R                  R                  U5        UR                  5        Vs/ s H  ou" X40 U R                  D6PM     nnU =R                  U-  sl
        [        UUUSU R                  U R                  U R                  S9n	X�R                  U'   X0R                   U	'   U	R#                  5         [%        ['        U5      5       H  n
X*   nU R)                  XX:4-   5        M     g s  snf )Nr7   )r3   r9   r   r:   )r@   r   rÐ   rÑ   r+   rÓ   rß   rf   ÚleavesrÔ   rà   r   rØ   rÙ   r×   rÞ   rÜ   Úhider�   rw   rá   )r)   r*   r»   rË   r¼   r½   r  rG   r  Útreesegrš   ra   s               r0   rá   Ú TreeWidget._make_collapsed_trees•  s  € Ü˜!œT×"Ñ"ØØ—O‘Oˆ	Ø—O‘Oˆ	á˜§¡£Ñ@¨d×.?Ñ.?Ñ@ˆØ�‰×Ñ˜4Ô ØEFÇXÁXÄZÓPÂZÀ�)˜FÑ;¨×):Ñ):Ô;ÁZˆÐPØ�Š˜Ñ�Ü#ØØØØØ×"Ñ"Ø—‘Ø×"Ñ"ñ
ˆð &-×Ñ˜cÑ"Ø!�
‰
�7Ñà�‰Œô ”s˜1“v–ˆAØ‘DˆEØ×&Ñ& v°c¸D±jÖAò ùò% Qs   Á=D>c           	      ó0  • U R                   nU R                  n[        U[        5      (       aµ  U" XR	                  5       40 U R
                  D6nU R                  R                  U5        Un[        [        U5      5       Vs/ s H  nU R                  XU   X84-   5      PM     n	n[        XX�R                  U R                  S9n
X R                  U'   X0R                  U
'   U
$ U" X40 U R                   D6nU R"                  R                  U5        U$ s  snf )N)r9   r:   )rÐ   rÑ   r@   r   r+   rÓ   rß   rf   r�   rw   râ   r   rÖ   r×   rÝ   rÜ   rÔ   rà   )r)   r*   r»   rË   r¼   r½   r  Úchildrenrš   r,   r  rÿ   s               r0   râ   ÚTreeWidget._make_expanded_tree³  s  € Ø—O‘Oˆ	Ø—O‘Oˆ	ä�aœ×ÑÙ˜V§W¡W£YÑD°$×2CÑ2CÑDˆDØ�K‰K×Ñ˜tÔ$ØˆHô œs 8›}Ô-óâ-�Að ×(Ñ(¨¸!±¸cÀD¹jÖIÙ-ð ð ô (Ø˜h×.>Ñ.>Àd×FVÑFVñˆGð )0× Ñ  Ñ%Ø"%�J‰J�wÑØˆNá˜VÑ<¨$×*;Ñ*;Ñ<ˆDØ�L‰L×Ñ Ô%ØˆKùòs   Â"Dc                 óž  • US S S:X  a  U R                    H
  nX#USS  '   M     g US S S:X  a  U R                   H
  nX$USS  '   M     g US:X  a5  X l        [        U R                  R                  5       5       H  nX%S'   M	     g US:X  ac  X l        [        U R                  R                  5       5       H  nX%S'   M	     [        U R                  R                  5       5       H  nX%S'   M	     g US:X  a5  X l        [        U R                  R                  5       5       H  nX%S'   M	     g US	:X  a5  X l	        [        U R                  R                  5       5       H  nX%S
'   M	     g US:X  az  X l
        [        U R                  R                  5       5       H  nX%S'   M	     [        U R                  R                  5       5       H  nX%S'   M	     U R                   H  nX$S'   M	     g US:X  as  X l        [        U R                  R                  5       5       H  nX%S'   M	     [        U R                  R                  5       5       H  nX%S'   M	     U R                  5         g US:X  as  X l        [        U R                  R                  5       5       H  nX%S'   M	     [        U R                  R                  5       5       H  nX%S'   M	     U R                  5         g US:X  as  X l        [        U R                  R                  5       5       H  nX%S'   M	     [        U R                  R                  5       5       H  nX%S'   M	     U R                  5         g US:X  ac  X l        [        U R                  R                  5       5       H  nX%S'   M	     [        U R                  R                  5       5       H  nX%S'   M	     g [         R"                  " XU5        g )NrÃ   rÅ   rÆ   Ú
line_colorr9   Ú
line_widthr:   Ú
roof_colorÚ	roof_fillr   Ú	shapeableÚ	draggabler;   r<   r5   r=   )rß   rà   rÖ   rÉ   rÝ   rð   r×   rÞ   rØ   rÙ   rÚ   r   Úmanager    rÛ   r!   r   rD   )r)   rE   rF   r  rÿ   rõ   s         r0   rD   ÚTreeWidget.__setitem__Ê  s?  € Ø��ˆ8�wÓØŸœ�Ø!&�T˜!˜"�X“ò $à�"�1ˆX˜Ó ØŸœ�Ø!&�T˜!˜"�X“ò %à�\Ó!Ø$ÔÜ˜T×1Ñ1×8Ñ8Ó:Ö;�Ø %�W“ò <à�\Ó!Ø$ÔÜ˜T×1Ñ1×8Ñ8Ó:Ö;�Ø %�W“ñ <ä˜T×2Ñ2×9Ñ9Ó;Ö<�Ø %�W“ò =à�\Ó!Ø$ÔÜ˜T×2Ñ2×9Ñ9Ó;Ö<�Ø %�W“ò =à�[Ó Ø#ŒOÜ˜T×2Ñ2×9Ñ9Ó;Ö<�Ø$�V“ò =à�[Ó Ø#ŒOÜ˜T×1Ñ1×8Ñ8Ó:Ö;�Ø$)�[Ó!ñ <ä˜T×2Ñ2×9Ñ9Ó;Ö<�Ø$)�[Ó!ñ =àŸœ�Ø$)�[Ó!ò %à�XÓØ ŒLÜ˜T×1Ñ1×8Ñ8Ó:Ö;�Ø!&�X“ñ <ä˜T×2Ñ2×9Ñ9Ó;Ö<�Ø!&�X“ñ =à�K‰K�MØ�XÓØ ŒLÜ˜T×1Ñ1×8Ñ8Ó:Ö;�Ø!&�X“ñ <ä˜T×2Ñ2×9Ñ9Ó;Ö<�Ø!&�X“ñ =à�K‰K�MØ�]Ó"Ø %ÔÜ˜T×1Ñ1×8Ñ8Ó:Ö;�Ø&+�]Ó#ñ <ä˜T×2Ñ2×9Ñ9Ó;Ö<�Ø&+�]Ó#ñ =à�K‰K�MØ�YÓØ!ŒMÜ˜T×1Ñ1×8Ñ8Ó:Ö;�Ø"'�Y“ñ <ä˜T×2Ñ2×9Ñ9Ó;Ö<�Ø"'�Y“ò =ô ×$Ò$ T°Õ7rI   c                 ó>  • US S S:X  a  U R                   R                  USS  S 5      $ US S S:X  a  U R                  R                  USS  S 5      $ US S S:X  a  U R                  R                  USS  S 5      $ US:X  a  U R                  $ US:X  a  U R
                  $ US:X  a  U R                  $ US	:X  a  U R                  $ US
:X  a  U R                  $ US:X  a  U R                  $ US:X  a  U R                  $ US:X  a  U R                  $ [        R                  " X5      $ )NrÃ   rÅ   rÆ   rÇ   rÈ   r  r  r  r  r  r;   r<   r5   )rÓ   ÚgetrÔ   rÕ   rÖ   r×   rØ   rÙ   rÚ   r   r    rÛ   r   rL   )r)   rE   s     r0   rL   ÚTreeWidget.__getitem__	  s2  € Ø��ˆ8�wÓØ×$Ñ$×(Ñ(¨¨a¨b¨°4Ó8Ð8Ø�"�1ˆX˜Ó Ø×$Ñ$×(Ñ(¨¨a¨b¨°4Ó8Ð8Ø�"�1ˆX˜ÓØ×#Ñ#×'Ñ'¨¨Q¨R¨°$Ó7Ð7Ø�\Ó!Ø×#Ñ#Ð#Ø�\Ó!Ø×#Ñ#Ð#Ø�\Ó!Ø×#Ñ#Ð#Ø�[Ó Ø—?‘?Ð"Ø�[Ó Ø—?‘?Ð"Ø�XÓØ—<‘<ÐØ�XÓØ—<‘<ÐØ�]Ó"Ø×$Ñ$Ð$ä×+Ò+¨DÓ7Ð7rI   c                 ó   • / $ rO   r¸   rP   s    r0   rj   ÚTreeWidget._tags#  s   € Øˆ	rI   c                 ó2  • [        U R                  R                  5       5      [        U R                  R                  5       5      -   nU HJ  nUR	                  5       (       d  M  UR                  5         UR                  5         UR                  5         ML     g rO   )rÉ   rÝ   rð   rÞ   r   Úshowr  r  )r)   Úsegsrõ   s      r0   r¬   ÚTreeWidget._manage&  sk   € Ü�D×(Ñ(×/Ñ/Ó1Ó2´TØ×!Ñ!×(Ñ(Ó*ó6
ñ 
ˆó ˆDØ�{‰{�}‹}Ø—	‘	”Ø—‘”Ø—	‘	–ò	 rI   c                 óz  • UnUS   (       a  U R                   U R                  U      nOU R                  U R                  U      nUR                  5       U L a)  U R	                  U5        U R                  U5        X0l        OUR                  5       R                  X#5        UR                  5         UR                  5       R                  5       SS u  pEUR                  5       R                  5       SS u  pgUR                  Xd-
  Xu-
  5        UR                  5         UR                  5       R                  U5        g)z
Collapse/expand a tree.
r3   Nro   )rÝ   rÜ   rÞ   ÚparentrU   r&   rã   r\   r%  r+   rp   rŽ   r  rC   )r)   r  Úold_treesegÚnew_treesegÚnewxÚnewyÚoldxÚoldys           r0   Útoggle_collapsedÚTreeWidget.toggle_collapsed0  s  € ð ˆØ�v×Ø×.Ñ.¨t¯z©z¸+Ñ/FÑG‰Kà×/Ñ/°·
±
¸;Ñ0GÑHˆKð ×ÑÓ 4Ò'Ø×%Ñ% kÔ2Ø×"Ñ" ;Ô/Ø'�Mà×ÑÓ ×.Ñ.¨{ÔHð 	×ÑÔØ"×(Ñ(Ó*×/Ñ/Ó1°"°1Ð5‰ˆØ"×(Ñ(Ó*×/Ñ/Ó1°"°1Ð5‰ˆØ×Ñ˜™ d¡kÔ2ð 	×ÑÔð 	×ÑÓ×#Ñ# KÕ0rI   )rÞ   rÝ   rÜ   rÔ   rà   rÖ   r×   rÕ   rÑ   rÐ   rÓ   rß   r!   rÛ   rØ   rÙ   rÚ   rÒ   rã   r   r    N)r7   )r²   r³   r´   rµ   r¶   r   r(   ré   rì   rö   rú   r   r  r	  r  rá   râ   rD   rL   rj   r¬   r0  r·   r¸   rI   r0   rÎ   rÎ   ý  sb   † ñ&ðR $.¸ô!7òF	2ò	3ô.ô-ô.ô-ô.ô-òBò<ò.=8ò~8ò4òõ1rI   rÎ   c                   ó8   • \ rS rSrS rS rS rS rS rS r	Sr
g	)
ÚTreeViewiU  c                 óZ  • SSK JnJn  Xl        [	        5       U l        U R
                  R                  S5        U R
                  R                  SU R                  5        U R
                  R                  SU R                  5        [        U R
                  5      =o@l
        U R
                  R                  SU R                  R                  5        [        U R
                  5      U l        U R                  R                  S5        SU R                  R                  5       * S	4nSU R                  R                  5       * 4n[!        U" U" [#        U5      5      5      5      U l        / U l        [)        [#        U5      5       Hn  n[+        UR-                  5       X   US
SSSSSUS9
nUR/                  UR0                  5        U R&                  R3                  U5        UR5                  USS5        Mp     U R7                  5         U R                  R9                  SSS9  U R;                  5         g )Nr   )ÚceilÚsqrtÚNLTKz<Control-x>z<Control-q>z<Control-p>é   Ú	helveticaÚboldz#008040z#004080z#004040Úwhiter7   )Ú	node_fontÚ
leaf_colorÚ
node_colorr  r  r  r  Ú	leaf_fontÚboth)Úexpandr   )Úmathr5  r6  Ú_treesr   Ú_topÚtitleÚbindÚdestroyr   Ú_cframeÚprint_to_filer   Ú_sizeÚsetr   rB   rw   Ú_widthÚ_widgetsr�   rÎ   r*   rö   r0  rf   Ú
add_widgetÚ_layoutÚpackÚ_init_menubar)	r)   Útreesr5  r6  Úcfr:  Úhelvrš   Úwidgets	            r0   r(   ÚTreeView.__init__V  sž  € ß#àŒä“DˆŒ	Ø�	‰	�‰˜ÔØ�	‰	�‰�} d§l¡lÔ3Ø�	‰	�‰�} d§l¡lÔ3ä'¨¯	©	Ó2Ð2ˆŒ\Ø�	‰	�‰�} d§l¡l×&@Ñ&@ÔAô ˜DŸI™IÓ&ˆŒ
Ø�
‰
�‰�rÔØ˜dŸj™jŸn™nÓ.Ð.°Ð7ˆØ˜dŸj™jŸn™nÓ.Ð.Ð/ˆô ™$™t¤C¨£JÓ/Ó0Ó1ˆŒØˆŒÜ”s˜5“zÖ"ˆAÜØ—	‘	“Ø‘ØØ$Ø$Ø$Ø!Ø$ØØñˆFð ×#Ñ# F×$;Ñ$;Ô<Ø�M‰M× Ñ  Ô(Ø�M‰M˜& ! QÖ'ñ #ð" 	�‰ŒØ�‰×Ñ ¨ÐÑ0Ø×ÑÕrI   c                 ój  • S=n=n=p4U R                   n[        [        U R                  5      5       H~  nU R                  U   nUR	                  5       S S u  pxX-  S:X  a  UnSnUR                  X'-
  X8-
  5        UR	                  5       S   S-   n[        XFR	                  5       S   S-   5      nM€     g )Nr   ro   r   rm   )rL  r�   rw   rM  rp   rŽ   rz   )	r)   rš   r™   r�   r‚   r:   rU  r.  r/  s	            r0   rO  ÚTreeView._layout�  s«   € ØÐˆÐˆAÐ�Ø—‘ˆÜ”s˜4Ÿ=™=Ó)Ö*ˆAØ—]‘] 1Ñ%ˆFØ!Ÿ;™;›=¨¨!Ð,‰LˆTØ‰y˜A‹~Ø�Ø�Ø�K‰K˜™ !¡(Ô+Ø—‘“˜aÑ  2Ñ%ˆAÜ�tŸ[™[›]¨1Ñ-°Ñ2Ó3ŠDò +rI   c                 óÖ  • [        U R                  5      n[        USS9nUR                  SSU R                  R                  SS9  UR                  SSU R
                  SS9  UR                  S	SUS
9  [        USS9nUR                  SU R                  SSU R                  S9  UR                  SU R                  SSU R                  S9  UR                  SU R                  SSU R                  S9  UR                  SU R                  SSU R                  S9  UR                  SU R                  SSU R                  S9  UR                  SSUS
9  U R                  R                  US9  g )Nr   )ÚtearoffzPrint to PostscriptzCtrl-p)r+   Ú	underlineÚcommandÚacceleratorÚExitr7   zCtrl-xÚFile)r+   r[  ÚmenuÚTinyr   )r+   Úvariabler[  rF   r\  ÚSmallr8  ÚMediumé   ÚLargeé   ÚHugeé2   ÚZoom)r`  )r   rD  Úadd_commandrH  rI  rG  Úadd_cascadeÚadd_radiobuttonrJ  ÚresizeÚconfig)r)   ÚmenubarÚfilemenuÚzoommenus       r0   rQ  ÚTreeView._init_menubarŽ  s�  € Ü�t—y‘y“/ˆä˜¨Ñ+ˆØ×ÑØ'ØØ—L‘L×.Ñ.Ø ð	 	ñ 	
ð 	×ÑØ A¨t¯|©|Èð 	ñ 	
ð 	×Ñ &°A¸HÐÑEä˜¨Ñ+ˆØ× Ñ ØØ—Z‘ZØØØ—K‘Kð 	!ñ 	
ð 	× Ñ ØØ—Z‘ZØØØ—K‘Kð 	!ñ 	
ð 	× Ñ ØØ—Z‘ZØØØ—K‘Kð 	!ñ 	
ð 	× Ñ ØØ—Z‘ZØØØ—K‘Kð 	!ñ 	
ð 	× Ñ ØØ—Z‘ZØØØ—K‘Kð 	!ñ 	
ð 	×Ñ &°A¸HÐÑEà�	‰	×Ñ˜gÐÒ&rI   c                 óæ  • SU R                   R                  5       * S4nSU R                   R                  5       * 4nU R                   R                  5       nU R                   R                  5       nU R                   Hb  nX&S'   X6S'   XFS'   XVS'   U R                   R                  5       S:  a  SUS	'   M8  U R                   R                  5       S
:  a  SUS	'   M]  SUS	'   Md     U R                  5         g )Nr9  r:  r<  r?  r;   r<   r    r7   r  r   ro   rm   )rJ  r   rM  rO  )r)   Úer:  rT  r;   r<   rU  s          r0   rn  ÚTreeView.resizeÅ  sÑ   € Ø˜dŸj™jŸn™nÓ.Ð.°Ð7ˆØ˜dŸj™jŸn™nÓ.Ð.Ð/ˆØ—‘—‘Ó!ˆØ—‘—‘Ó!ˆØ—m”mˆFØ"&�;ÑØ"&�;ÑØ%�8ÑØ%�8ÑØ�z‰z�~‰~Ó "Ó$Ø'(��|Ó$Ø—‘—‘Ó! BÓ&Ø'(��|Ó$à'(��|Ó$ñ $ð 	�‰�rI   c                 ób   • U R                   c  g U R                   R                  5         S U l         g rO   )rD  rG  )r)   ru  s     r0   rG  ÚTreeView.destroy×  s&   € Ø�9‰9ÑØØ�	‰	×ÑÔØˆ�	rI   c                 ó\   • [        5       (       a  gU R                  R                  " U0 UD6  g)zÉ
Enter the Tkinter mainloop.  This function must be called if
this demo is created from a non-interactive program (e.g.
from a secript); otherwise, the demo will close as soon as
the script completes.
N)r   rD  Úmainloop)r)   ÚargsÚkwargss      r0   rz  ÚTreeView.mainloopÝ  s%   € ô �9‰9ØØ�	‰	×Ò˜DÐ+ FÓ+rI   )rH  rJ  rD  rC  rM  rL  N)r²   r³   r´   rµ   r(   rO  rQ  rn  rG  rz  r·   r¸   rI   r0   r3  r3  U  s"   † ò)òV4ò5'ònò$õ	,rI   r3  c                  ó0   • [        U 6 R                  5         g)zT
Open a new window containing a graphical diagram of the given
trees.

:rtype: None
N)r3  rz  )rR  s    r0   Ú
draw_treesr  é  s   € ô ˆeÐ×ÑÔØ
rI   c                  ó  ^• SS K mU4S jn [        SSSS9n[        R                  " S5      n[	        UR                  5       USS	S
SSSSS9	nUR                  USS5        S nS n[        R                  " S5      n[	        UR                  5       XdUSS9nU4S jnU4S jn	UR                  UR                  5        UR                  UR                  5        UR                  US5        UR                  S5      R                  U	S5        UR                  5       R                  U	S5        [        UR                  5       U5      n
UR                  X£R                  5       S   S-   S5        [        R                  " S5      n[        UR                  5       USSSS9nSUS'   UR                  USUR                  5       S   S-   5        S nSn[        UR                  5       UR!                  5       5      n[#        UR                  5       USSS9nUR                  UUR                  5       S   S-   UR                  5       S   S-   5        [        R                  " S5      n[	        UR                  5       USSSS S!S"S#9nUR%                  5         UR                  UUR                  5       S   S-   UR                  5       S   S-   5        UR                  U5        UR                  UR                  S5        UR'                  5         g )$Nr   c                 ó6   >• STR                  SS5      -  U S'   g )Nú#%06dr   i?B r   ©Úrandint)ÚcwÚrandoms    €r0   r   Údemo.<locals>.fillü  s   ø€ Ø˜vŸ~™~¨a°Ó8Ñ8ˆˆ6Š
rI   i&  iÂ  ro   )r:   ÚheightÚcloseenoughzU
    (S (NP the very big cat)
       (VP (Adv sorta) (V saw) (NP (Det the) (N dog))))r7   )r9  iòÿÿÿr:  )r9  éôÿÿÿÚitalicr;  ÚblackÚgreen4Úblue2)r  r<  r?  r  r  r=  r>  r   c           	      ó,   • Sn[        U [        XUS9SS9$ )N)r9  iðÿÿÿr:  )ÚfontÚgreenr   )r   r   )r*   ÚtextÚbigs      r0   ÚboxitÚdemo.<locals>.boxit  s   € Ø(ˆÜ˜¤¨F¸sÑ!CÈ'ÑRÐRrI   c                 ó*   • [        U [        X5      SS9$ )NÚcyanr   )r	   r   )r*   r’  s     r0   ÚovalitÚdemo.<locals>.ovalit  s   € Ü˜&¤*¨VÓ":ÀÑHÐHrI   z/(S (NP this tree) (VP (V is) (AdjP shapeable))))r  c                 ó6   >• STR                  SS5      -  U S'   g )Nz#%04d00r   é'  r9   rƒ  )r  r†  s    €r0   r9   Údemo.<locals>.color  s   ø€ Ø! F§N¡N°1°dÓ$;Ñ;ˆˆWŠrI   c                 ó”   >• STR                  SS5      -  U R                  5       S'   SU R                  5       R                  5       S'   g )Nr‚  r   r›  r   r;  r9   )r„  r+   ra   )r  r†  s    €r0   Úcolor2Údemo.<locals>.color2!  s<   ø€ Ø")¨F¯N©N¸1¸dÓ,CÑ"Cˆ�‰‹˜ÑØ+2ˆ�‰‹×ÑÓ Ò(rI   rm   zb
    (S (NP this tree) (AUX was)
       (VP (V built) (PP (P with) (NP (N tree_to_treesegment))))))Ú
tree_colorÚtree_xspaceÚ
tree_widthr  c                 ó@  • U S   S:X  aË  U R                  SS5      R                  5       S   R                  S5        U R                  SS5      R                  5       S   R                  S5        U R                  S5      R                  5       S   R                  S5        U R                  5       R                  5       S   R                  S5        SU S'   g U R                  SS5      R                  5       S   R                  S5        U R                  SS5      R                  5       S   R                  S5        U R                  S5      R                  5       S   R                  S5        U R                  5       R                  5       S   R                  S5        SU S'   g )Nr5   r6   r7   r   r8   rm   )ré   r,   Úset_textrì   )Ú
treewidgets    r0   ÚorientswitchÚdemo.<locals>.orientswitch9  s_  € Ø�mÑ$¨Ó4Ø×$Ñ$ Q¨Ó*×3Ñ3Ó5°aÑ8×AÑAÀ*ÔMØ×%Ñ% a¨Ó+×4Ñ4Ó6°qÑ9×BÑBÀ:ÔNØ×%Ñ% aÓ(×1Ñ1Ó3°AÑ6×?Ñ?À
ÔKØ×%Ñ%Ó'×0Ñ0Ó2°1Ñ5×>Ñ>¸zÔJØ(2ˆJ�}Ò%à×$Ñ$ Q¨Ó*×3Ñ3Ó5°aÑ8×AÑAÀ,ÔOØ×%Ñ% a¨Ó+×4Ñ4Ó6°qÑ9×BÑBÀ<ÔPØ×%Ñ% aÓ(×1Ñ1Ó3°AÑ6×?Ñ?ÀÔMØ×%Ñ%Ó'×0Ñ0Ó2°1Ñ5×>Ñ>¸|ÔLØ(4ˆJ�}Ò%rI   aM  
Try clicking, right clicking, and dragging
different elements of each of the trees.
The top-left tree is a TreeWidget built from
a Tree.  The top-right is a TreeWidget built
from a Tree, using non-default widget
constructors for the nodes & leaves (BoxWidget
and OvalWidget).  The bottom-left tree is
built from tree_to_treesegment.)r   r  z/(S (NP this tree) (VP (V is) (Adj horizontal)))Úbrown2)r9  rŠ  r:  Úbrown4r6   )r  r  r  r<  r>  r5   )r†  r   r   Ú
fromstringrÎ   r*   rN  rö   r0  r	  ré   rñ   r
   rp   rÌ   r   Ústripr   r  rz  )r   rS  r»   Útcr”  r˜  ÚtreetokÚtc2r9   rž  ÚparenÚtree3Útc3r¦  r’  ÚtwidgetÚtextboxÚtree4Útc4r†  s                      @r0   Údemor¶  ù  s«  ø€ Ûõ9ô 
˜3 s¸Ñ	:€Bä�Šð	;ó	€Aô 
Ø
�	‰	‹Ø	ØØ,Ø.ØØØØñ

€Bð ‡M�M�"�b˜"ÔòSòIô �oŠoÐOÓP€GÜ
�R—Y‘Y“[ '°&ÀAÑ
F€Cõ<õ3ð ×Ñ˜×+Ñ+Ô,Ø×Ñ˜×-Ñ-Ô.Ø×Ñ˜˜qÔ!Ø×Ñ�aÓ×#Ñ# F¨AÔ.Ø×ÑÓ×"Ñ" 6¨1Ô-ä˜Ÿ	™	› SÓ)€EØ‡M�M�%Ÿ™› 1™¨Ñ*¨BÔ/ä�OŠOð	Eó€Eô
 Ø
�	‰	‹�U x¸QÈ1ñ€Cð €CˆÑØ‡M�M�#�r˜2Ÿ7™7›9 Q™<¨"Ñ,Ô-ò5ð#€Dô ˜Ÿ™› d§j¡j£lÓ3€GÜ˜Ÿ	™	› W°7ÀaÑH€GØ‡M�M�'˜3Ÿ8™8›: a™=¨2Ñ-¨s¯x©x«z¸!©}¸rÑ/AÔBä�OŠOÐMÓN€EÜ
Ø
�	‰	‹ØØØØØ,ØØ ñ	€Cð ‡J�J„LØ‡M�M�#�s—x‘x“z !‘} rÑ)¨7¯<©<«>¸!Ñ+<¸rÑ+AÔBØ‡N�N�<Ô Ø×Ñ˜×-Ñ-¨qÔ1ð ‡K�K…MrI   Ú__main__N)r¶   Útkinterr   r   r   Únltk.draw.utilr   r   r   r	   r
   r   Ú	nltk.treer   Ú	nltk.utilr   r   rº   rÌ   rÎ   r3  r  r¶  r²   r¸   rI   r0   Ú<module>r¼     s�   ðñ÷ %Ñ $÷÷ õ Ý ôE<˜ô E<òP4ð> $¨zô1ôrP1�ô P1÷p
Q,ñ Q,òhò lð^ ˆzÓÙ…Fð rI   