§
    'ê[fk™  ã                   óê   — d Z ddlmZmZmZ ddlmZmZmZm	Z	m
Z
mZ ddlmZ ddlmZ  G d„ de¦  «        Zd„ Zeefd	„Z G d
„ de¦  «        Z G d„ d¦  «        Zd„ Zd„ Zedk    r e¦   «          dS dS )z
Graphically display a Tree.
é    )ÚIntVarÚMenuÚTk)Ú	BoxWidgetÚCanvasFrameÚCanvasWidgetÚ
OvalWidgetÚParenWidgetÚ
TextWidget)ÚTree)Úin_idlec                   óŠ   — e Zd ZdZd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z	d„ Z
d	„ Zd
„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ ZdS )ÚTreeSegmentWidgetaÃ  
    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                 ó`  ‡— || _         || _        d| _        d| _        d| _        d| _        d| _        ˆfd„|D ¦   «         | _        ‰                     ddddd¬	¦  «        | _	        |  
                    |¦  «         |D ]}|  
                    |¦  «         Œd| _        t          j        | ‰fi |¤Ž d
S )zI
        :type node:
        :type subtrees: list(CanvasWidgetI)
        r   é
   é   Fc           	      óD   •— g | ]}‰                      d d d d d¬¦  «        ‘ŒS )r   ú#006060©Úfill)Úcreate_line)Ú.0ÚcÚcanvass     €úB/var/www/piapp/venv/lib/python3.11/site-packages/nltk/draw/tree.pyú
<listcomp>z.TreeSegmentWidget.__init__.<locals>.<listcomp>P   s2   ø€ ÐXÐXÐXÈ!�v×)Ò)¨!¨Q°°1¸9Ð)ÑEÔEÐXÐXÐXó    Ú Úhiddenr   )r   ÚstateÚoutlineN)Ú_labelÚ	_subtreesÚ_horizontalÚ_roofÚ_xspaceÚ_yspaceÚ_orderedÚ_linesÚcreate_polygonÚ_polygonÚ_add_child_widgetÚ	_managingr   Ú__init__)Úselfr   ÚlabelÚsubtreesÚattribsÚsubtrees    `    r   r.   zTreeSegmentWidget.__init__@   sä   ø€ ð
 ˆŒØ!ˆŒð ˆÔØˆŒ
ØˆŒØˆŒØˆŒð YÐXÐXÐXÈxÐXÑXÔXˆŒØ×-Ò-Øˆq�r °9ð .ñ 
ô 
ˆŒð
 	×Ò˜uÑ%Ô%Ð%Øð 	,ð 	,ˆGØ×"Ò" 7Ñ+Ô+Ð+Ð+ð ˆŒåÔ˜d FÐ6Ð6¨gÐ6Ð6Ð6Ð6Ð6r   c                 óŒ  — |                       ¦   «         }|dk    rŒ|| _        | j        r?| j        D ]}|                     |d¬¦  «         Œ|                     | j        d¬¦  «         d S | j        D ]}|                     |d¬¦  «         Œ|                     | j        d¬¦  «         d S |dk    r-|dk    r	d| _        d S |dk    r	d	| _        d S t          d
¦  «        ‚|dk    r?| j        D ]}|                     ||¬¦  «         Œ|                     | j        |¬¦  «         d S t          |t          ¦  «        rE|d	         dk    r9| j        t          |d         ¦  «                 }|                     ||¬¦  «         d S |dk    r|                     | j        |¬¦  «         d S |dk    rA|                     | j        ||i¦  «         | j        D ]}|                     |||i¦  «         Œd S |dv r7|dk    r|| _
        n|dk    r|| _        |                      | j        ¦  «         d S |dk    r	|| _        d S t          j        | ||¦  «         d S )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        r   rF   zTreeSegmentWidget.__setitem___   sÂ  € Ø—’‘”ˆØ�6Š>ˆ>ØˆDŒJØŒzð AØœð 9ð 9�AØ×%Ò% a¨xÐ%Ñ8Ô8Ð8Ð8Ø×!Ò! $¤-°xÐ!Ñ@Ô@Ð@Ð@Ð@àœð 9ð 9�AØ×%Ò% a¨xÐ%Ñ8Ô8Ð8Ð8Ø×!Ò! $¤-°xÐ!Ñ@Ô@Ð@Ð@Ð@Ø�]Ò"Ð"Ø˜Ò$Ð$Ø#$�Ô Ð Ð Ø˜*Ò$Ð$Ø#$�Ô Ð Ð å Ð!MÑNÔNÐNØ�WŠ_ˆ_Ø”[ð 1ð 1�Ø×!Ò! !¨%Ð!Ñ0Ô0Ð0Ð0Ø×Ò˜dœm°UÐÑ;Ô;Ð;Ð;Ð;Ý˜�eÑ$Ô$ð 	8¨¨a¬°GÒ);Ð);à”�C  Q¤™LœLÔ)ˆAØ×Ò˜a eÐÑ,Ô,Ð,Ð,Ð,Ø�VŠ^ˆ^Ø×Ò˜dœm°%ÐÑ8Ô8Ð8Ð8Ð8Ø�WŠ_ˆ_Ø×Ò˜dœm¨d°E¨]Ñ;Ô;Ð;Ø”[ð 4ð 4�Ø×!Ò! ! d¨E ]Ñ3Ô3Ð3Ð3ð4ð 4àÐ)Ð)Ð)Ø�xÒÐØ$�”�Ø˜Ò!Ð!Ø$�”Ø�KŠK˜œÑ$Ô$Ð$Ð$Ð$Ø�YÒÐØ!ˆDŒMˆMˆMåÔ$ T¨4°Ñ7Ô7Ð7Ð7Ð7r   c                 óT  — |dk    r| j         S |dk    r-|                      ¦   «                              | j        |¦  «        S |dk    r-|                      ¦   «                              | j        d¦  «        S t	          |t
          ¦  «        rT|d         dk    rH| j        t          |d         ¦  «                 }|                      ¦   «                              |d¦  «        S |dk    r| j        S |d	k    r| j	        S |d
k    r| j
        rdS dS |dk    r| j        S t          j        | |¦  «        S )Nr5   r<   r;   r!   r   r9   r   r=   r>   r7   r8   r:   r?   )r%   r   Úitemcgetr+   rB   rC   r)   rD   r&   r'   r$   r(   r   Ú__getitem__)r/   rG   rI   s      r   rL   zTreeSegmentWidget.__getitem__‹   s%  € Ø�6Š>ˆ>Ø”:ÐØ�WŠ_ˆ_Ø—;’;‘=”=×)Ò)¨$¬-¸Ñ>Ô>Ð>Ø�WŠ_ˆ_Ø—;’;‘=”=×)Ò)¨$¬-¸ÑCÔCÐCÝ˜�eÑ$Ô$ð 	8¨¨a¬°GÒ);Ð);Ø”�C  Q¤™LœLÔ)ˆAØ—;’;‘=”=×)Ò)¨!¨VÑ4Ô4Ð4Ø�XÒÐØ”<ÐØ�XÒÐØ”<ÐØ�]Ò"Ð"ØÔð "Ø#�|à!�zØ�YÒÐØ”=Ð åÔ+¨D°$Ñ7Ô7Ð7r   c                 ó   — | j         S ©N)r"   ©r/   s    r   r0   zTreeSegmentWidget.label£   s
   € ØŒ{Ðr   c                 ó    — | j         d d …         S rN   )r#   rO   s    r   r1   zTreeSegmentWidget.subtrees¦   s   € ØŒ~˜a˜a˜aÔ Ð r   c                 ó¦   — |                       | j        ¦  «         |                      |¦  «         || _        |                      | j        ¦  «         dS )z2
        Set the node label to ``label``.
        N)Ú_remove_child_widgetr"   r,   rE   )r/   r0   s     r   Ú	set_labelzTreeSegmentWidget.set_label©   sO   € ð 	×!Ò! $¤+Ñ.Ô.Ð.Ø×Ò˜uÑ%Ô%Ð%ØˆŒØ�Š�D”KÑ Ô Ð Ð Ð r   c                 óÌ   — | j                              |¦  «        }|| j         |<   |                      |¦  «         |                      |¦  «         |                      |¦  «         dS )zC
        Replace the child ``oldchild`` with ``newchild``.
        N)r#   ÚindexrR   r,   rE   )r/   ÚoldchildÚnewchildrU   s       r   Úreplace_childzTreeSegmentWidget.replace_child²   se   € ð ”×$Ò$ XÑ.Ô.ˆØ (ˆŒ�uÑØ×!Ò! (Ñ+Ô+Ð+Ø×Ò˜xÑ(Ô(Ð(Ø�Š�HÑÔÐÐÐr   c                 ó$  — | j                              |¦  «        }| j         |= |                      |¦  «         |                      ¦   «                              | j                             ¦   «         ¦  «         |                      | j        ¦  «         d S rN   )	r#   rU   rR   r   Údeleter)   ÚpoprE   r"   )r/   ÚchildrU   s      r   Úremove_childzTreeSegmentWidget.remove_child¼   sw   € Ø”×$Ò$ UÑ+Ô+ˆØŒN˜5Ð!Ø×!Ò! %Ñ(Ô(Ð(Ø�Š‰Œ×Ò˜Tœ[Ÿ_š_Ñ.Ô.Ñ/Ô/Ð/Ø�Š�D”KÑ Ô Ð Ð Ð r   c           	      ó&  — |                       ¦   «         }| j                             ||¦  «         |                      |¦  «         | j                             |                     ddddd¬¦  «        ¦  «         |                      | j        ¦  «         d S )Nr   r   r   )	r   r#   Úinsertr,   r)   Úappendr   rE   r"   )r/   rU   r\   r   s       r   Úinsert_childzTreeSegmentWidget.insert_childÃ   s„   € Ø—’‘”ˆØŒ×Ò˜e UÑ+Ô+Ð+Ø×Ò˜uÑ%Ô%Ð%ØŒ×Ò˜6×-Ò-¨a°°A°q¸yÐ-ÑIÔIÑJÔJÐJØ�Š�D”KÑ Ô Ð Ð Ð r   c                 ó.   — | j         r| j        gS | j        S rN   )r%   r+   r)   rO   s    r   Ú_tagszTreeSegmentWidget._tagsÌ   s   € ØŒ:ð 	Ø”M�?Ð"à”;Ðr   c                 ó   — t          |t          ¦  «        r'|                     ¦   «                              ¦   «         }n|                     ¦   «         }| j        r|d         |d         |d         z   dz  fS |d         |d         z   dz  |d         fS )Nr   r9   é   ç       @é   )rB   r   r0   Úbboxr$   )r/   r\   rh   s      r   Ú_subtree_topzTreeSegmentWidget._subtree_topÒ   sŠ   € Ý�eÕ.Ñ/Ô/ð 	 Ø—;’;‘=”=×%Ò%Ñ'Ô'ˆDˆDà—:’:‘<”<ˆDØÔð 	8Ø˜”G˜d 1œg¨¨Q¬Ñ/°3Ñ6Ð7Ð7à˜!”W˜t AœwÑ&¨#Ñ-¨t°A¬wÐ7Ð7r   c                 ó²   — | j                              ¦   «         }| j        r|d         |d         |d         z   dz  fS |d         |d         z   dz  |d         fS )Nrg   r9   re   rf   r   )r"   rh   r$   )r/   rh   s     r   Ú_node_bottomzTreeSegmentWidget._node_bottomÜ   sb   € ØŒ{×ÒÑ!Ô!ˆØÔð 	8Ø˜”G˜d 1œg¨¨Q¬Ñ/°3Ñ6Ð7Ð7à˜!”W˜t AœwÑ&¨#Ñ-¨t°A¬wÐ7Ð7r   c                 ó8  — t          | j        ¦  «        dk    rd S | j                             ¦   «         €d S || j        u r| j        }n|g}| j        r| j        s|                      |¦  «        }|                      ¦   «         \  }}| j        d                              ¦   «         \  }}}}| j        dd …         D ]n}	|	                     ¦   «         }
t          ||
d         ¦  «        }t          ||
d         ¦  «        }t          ||
d         ¦  «        }t          ||
d         ¦  «        }Œo| j
        r5|                      ¦   «                              | j        ||||||||¦	  «	         n4|                      ¦   «                              | j        ||||||||¦	  «	         |D ]�}	|                      ¦   «         \  }}| j        | j                             |	¦  «                 }|                      |	¦  «        \  }}|                      ¦   «                              |||||¦  «         Œ‚d S )Nr   r9   rg   re   )Úlenr#   r"   rh   r(   r-   Ú_maintain_orderrk   ÚminÚmaxr$   r   Úcoordsr+   r)   rU   ri   )r/   r\   Úneed_updateÚnodexÚnodeyÚxminÚyminÚxmaxÚymaxr3   rh   ÚlineÚsubtreexÚsubtreeys                 r   Ú_updatezTreeSegmentWidget._updateã   s2  € ÝˆtŒ~ÑÔ !Ò#Ð#ØˆFØŒ;×ÒÑÔÐ%ØˆFð �D”KÐÐØœ.ˆKˆKà ˜'ˆKàŒ=ð 	6 ¤ð 	6Ø×.Ò.¨uÑ5Ô5ˆKð ×*Ò*Ñ,Ô,‰ˆ�Ø#'¤>°!Ô#4×#9Ò#9Ñ#;Ô#;Ñ ˆˆt�T˜4Ø”~ a b bÔ)ð 	&ð 	&ˆGØ—<’<‘>”>ˆDÝ�t˜T !œWÑ%Ô%ˆDÝ�t˜T !œWÑ%Ô%ˆDÝ�t˜T !œWÑ%Ô%ˆDÝ�t˜T !œWÑ%Ô%ˆDˆDàÔð 	Ø�KŠK‰MŒM× Ò Ø”˜u e¨T°4¸¸tÀUÈEñô ð ð ð �KŠK‰MŒM× Ò Ø”˜u e¨T°4¸¸tÀUÈEñô ð ð
 #ð 	Ið 	IˆGØ!×.Ò.Ñ0Ô0‰NˆU�EØ”;˜tœ~×3Ò3°GÑ<Ô<Ô=ˆDØ#'×#4Ò#4°WÑ#=Ô#=Ñ ˆX�xØ�KŠK‰MŒM× Ò   u¨e°X¸xÑHÔHÐHÐHð		Ið 	Ir   c                 ód   — | j         r|                      |¦  «        S |                      |¦  «        S rN   )r$   Ú_maintain_order_horizontalÚ_maintain_order_vertical)r/   r\   s     r   rn   z!TreeSegmentWidget._maintain_order  s5   € ØÔð 	8Ø×2Ò2°5Ñ9Ô9Ð9à×0Ò0°Ñ7Ô7Ð7r   c                 ó†  — |                      ¦   «         \  }}}}|| j        u rY| j        D ]J}|                      ¦   «         \  }}}	}
|| j        z   |k    r!|                     d|| j        z   |z
  ¦  «         ŒK| j        S |g}| j                             |¦  «        }|| j        z   }t          |dz   t          | j        ¦  «        ¦  «        D ]€}| j        |                               ¦   «         \  }}}	}
||k    rT| j        |                              ||z
  d¦  «         ||	|z
  | j        z   z  }| 	                    | j        |         ¦  «         Œ�|| j        z
  }t          |dz
  dd¦  «        D ]€}| j        |                               ¦   «         \  }}}	}
||	k     rT| j        |                              ||	z
  d¦  «         ||	|z
  | j        z   z  }| 	                    | j        |         ¦  «         Œ�| j                              ¦   «         \  }}}	}
|
|| j        z
  k    r-| j                             d|| j        z
  |
z
  ¦  «         | j        }|S )Nr   r9   éÿÿÿÿ)
rh   r"   r#   r'   ÚmoverU   r&   Úrangerm   r`   )r/   r\   ÚleftÚtopÚrightÚbotr3   Úx1Úy1Úx2Úy2ÚmovedrU   ÚxÚis                  r   r   z*TreeSegmentWidget._maintain_order_vertical  s[  € Ø"'§*¢*¡,¤,Ñˆˆs�E˜3à�D”KÐÐàœ>ð =ð =�Ø#*§<¢<¡>¤>Ñ ��R˜˜RØ˜œÑ%¨Ò*Ð*Ø—L’L  C¨$¬,Ñ$6¸Ñ$;Ñ<Ô<Ð<øà”>Ð!à�GˆEØ”N×(Ò(¨Ñ/Ô/ˆEð ˜œÑ$ˆAÝ˜5 1™9¥c¨$¬.Ñ&9Ô&9Ñ:Ô:ð 4ð 4�Ø#'¤>°!Ô#4×#9Ò#9Ñ#;Ô#;Ñ ��R˜˜RØ�r’6�6Ø”N 1Ô%×*Ò*¨1¨r©6°1Ñ5Ô5Ð5Ø˜˜b™ 4¤<Ñ/Ñ/�AØ—L’L ¤°Ô!2Ñ3Ô3Ð3øð �t”|Ñ#ˆAÝ˜5 1™9 b¨"Ñ-Ô-ð 4ð 4�Ø#'¤>°!Ô#4×#9Ò#9Ñ#;Ô#;Ñ ��R˜˜RØ�r’6�6Ø”N 1Ô%×*Ò*¨1¨r©6°1Ñ5Ô5Ð5Ø˜˜b™ 4¤<Ñ/Ñ/�AØ—L’L ¤°Ô!2Ñ3Ô3Ð3øð  $œ{×/Ò/Ñ1Ô1ÑˆR��R˜Ø�C˜$œ,Ñ&Ò&Ð&Ø”× Ò   C¨$¬,Ñ$6¸Ñ$;Ñ<Ô<Ð<Øœ�ð ˆr   c                 ó„  — |                      ¦   «         \  }}}}|| j        u rX| j        D ]I}|                      ¦   «         \  }}}	}
|| j        z   |k    r |                     || j        z   |z
  ¦  «         ŒJ| j        S |g}| j                             |¦  «        }|| j        z   }t          |dz   t          | j        ¦  «        ¦  «        D ]€}| j        |                               ¦   «         \  }}}	}
||k    rT| j        |                              d||z
  ¦  «         ||
|z
  | j        z   z  }| 	                    | j        |         ¦  «         Œ�|| j        z
  }t          |dz
  dd¦  «        D ]€}| j        |                               ¦   «         \  }}}	}
||
k     rT| j        |                              d||
z
  ¦  «         ||
|z
  | j        z   z  }| 	                    | j        |         ¦  «         Œ�| j                              ¦   «         \  }}}	}
|	|| j        z
  k    r-| j                             || j        z
  |	z
  d¦  «         | j        }|S )Nr9   r   r�   )
rh   r"   r#   r&   r‚   rU   r'   rƒ   rm   r`   )r/   r\   r„   r…   r†   r‡   r3   rˆ   r‰   rŠ   r‹   rŒ   rU   ÚyrŽ   s                  r   r~   z,TreeSegmentWidget._maintain_order_horizontal<  sY  € Ø"'§*¢*¡,¤,Ñˆˆs�E˜3à�D”KÐÐàœ>ð <ð <�Ø#*§<¢<¡>¤>Ñ ��R˜˜RØ˜4œ<Ñ'¨"Ò,Ð,Ø—L’L ¨¬Ñ!5¸Ñ!:Ñ;Ô;Ð;øà”>Ð!à�GˆEØ”N×(Ò(¨Ñ/Ô/ˆEð �d”lÑ"ˆAÝ˜5 1™9¥c¨$¬.Ñ&9Ô&9Ñ:Ô:ð 4ð 4�Ø#'¤>°!Ô#4×#9Ò#9Ñ#;Ô#;Ñ ��R˜˜RØ�r’6�6Ø”N 1Ô%×*Ò*¨1¨a°"©fÑ5Ô5Ð5Ø˜˜b™ 4¤<Ñ/Ñ/�AØ—L’L ¤°Ô!2Ñ3Ô3Ð3øð �d”lÑ"ˆAÝ˜5 1™9 b¨"Ñ-Ô-ð 4ð 4�Ø#'¤>°!Ô#4×#9Ò#9Ñ#;Ô#;Ñ ��R˜˜RØ�r’6�6Ø”N 1Ô%×*Ò*¨1¨a°"©fÑ5Ô5Ð5Ø˜˜b™ 4¤<Ñ/Ñ/�AØ—L’L ¤°Ô!2Ñ3Ô3Ð3øð  $œ{×/Ò/Ñ1Ô1ÑˆR��R˜Ø�D˜4œ<Ñ'Ò'Ð'Ø”× Ò  ¨¬Ñ!4°rÑ!9¸1Ñ=Ô=Ð=Øœ�ð ˆr   c                 óÜ  — |                       ¦   «         \  }}d}| j        D ]f}|                     ¦   «         }||d         z
  | j        z   }||d         z
  }|                     ||¦  «         ||d         |d         z
  | j        z   z  }Œgd}| j        D ] }||                      |¦  «        d         z  }Œ!|t          | j        ¦  «        z  }| j        D ]}|                     d||z
  ¦  «         Œd S )Né   r   r9   re   ç        )rk   r#   rh   r&   r‚   r'   ri   rm   )	r/   rs   rt   r�   r3   Úsubtree_bboxÚdxÚdyÚcenters	            r   Ú_manage_horizontalz$TreeSegmentWidget._manage_horizontalf  s  € Ø×*Ò*Ñ,Ô,‰ˆ�ð ˆØ”~ð 	Bð 	BˆGØ"Ÿ<š<™>œ>ˆLØ˜ aœÑ(¨4¬<Ñ7ˆBØ�\ !”_Ñ$ˆBØ�LŠL˜˜RÑ Ô Ð Ø�˜a” <°¤?Ñ2°T´\ÑAÑAˆAˆAð ˆØ”~ð 	4ð 	4ˆGØ�d×'Ò'¨Ñ0Ô0°Ô3Ñ3ˆFˆFØ•#�d”nÑ%Ô%Ñ%ˆð ”~ð 	,ð 	,ˆGØ�LŠL˜˜E F™NÑ+Ô+Ð+Ð+ð	,ð 	,r   c                 óØ  — |                       ¦   «         \  }}d}| j        D ]f}|                     ¦   «         }||d         z
  | j        z   }||d         z
  }|                     ||¦  «         ||d         |d         z
  | j        z   z  }Œgd}| j        D ]5}||                      |¦  «        d         t          | j        ¦  «        z  z  }Œ6| j        D ]}|                     ||z
  d¦  «         Œd S )Nr   r9   rg   r“   )rk   r#   rh   r'   r‚   r&   ri   rm   )	r/   rs   rt   r�   r3   r”   r–   r•   r—   s	            r   Ú_manage_verticalz"TreeSegmentWidget._manage_vertical|  s  € Ø×*Ò*Ñ,Ô,‰ˆ�ð ˆØ”~ð 	Bð 	BˆGØ"Ÿ<š<™>œ>ˆLØ˜ aœÑ(¨4¬<Ñ7ˆBØ�\ !”_Ñ$ˆBØ�LŠL˜˜RÑ Ô Ð Ø�˜a” <°¤?Ñ2°T´\ÑAÑAˆAˆAð ˆØ”~ð 	Jð 	JˆGØ�d×'Ò'¨Ñ0Ô0°Ô3µc¸$¼.Ñ6IÔ6IÑIÑIˆFˆFð ”~ð 	,ð 	,ˆGØ�LŠL˜ ™¨Ñ+Ô+Ð+Ð+ð	,ð 	,r   c                 ó"  — d| _         |                      ¦   «         \  }}t          | j        ¦  «        dk    rd S | j        r|                      ¦   «          n|                      ¦   «          | j        D ]}|                      |¦  «         Œd| _         d S )NTr   F)r-   rk   rm   r#   r$   r˜   rš   r|   )r/   rs   rt   r3   s       r   Ú_managezTreeSegmentWidget._manage‘  s�   € ØˆŒØ×*Ò*Ñ,Ô,‰ˆ�ÝˆtŒ~ÑÔ !Ò#Ð#ØˆFàÔð 	$Ø×#Ò#Ñ%Ô%Ð%Ð%à×!Ò!Ñ#Ô#Ð#ð ”~ð 	"ð 	"ˆGØ�LŠL˜Ñ!Ô!Ð!Ð!àˆŒˆˆr   c                 ó(   — d| j         › d| j        › d�S )Nz	[TreeSeg z: ú])r"   r#   rO   s    r   Ú__repr__zTreeSegmentWidget.__repr__¢  s   € Ø;˜4œ;Ð;Ð;¨$¬.Ð;Ð;Ð;Ð;r   N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r.   rF   rL   r0   r1   rS   rX   r]   ra   rc   ri   rk   r|   rn   r   r~   r˜   rš   rœ   rŸ   © r   r   r   r      sR  € € € € € ðð ðB7ð 7ð 7ð>*8ð *8ð *8ðX8ð 8ð 8ð0ð ð ð!ð !ð !ð!ð !ð !ðð ð ð!ð !ð !ð!ð !ð !ðð ð ð8ð 8ð 8ð8ð 8ð 8ð'Ið 'Ið 'IðR8ð 8ð 8ð(ð (ð (ðT(ð (ð (ðT,ð ,ð ,ð,,ð ,ð ,ð*ð ð ð"<ð <ð <ð <ð <r   r   c                 óÌ   ‡ ‡‡‡‡‡‡— t          |t          ¦  «        r? ‰‰ |                     ¦   «         fi ‰¤Ž}ˆ ˆˆˆˆˆˆfd„|D ¦   «         }	t          ‰ ||	fi ‰¤ŽS  ‰‰ |fi ‰¤ŽS )Nc                 ó<   •— g | ]}t          ‰|‰‰‰‰‰‰¦  «        ‘ŒS r¤   )Ú_tree_to_treeseg)	r   r\   r   Úleaf_attribsÚloc_attribsÚ	make_leafÚ	make_nodeÚnode_attribsÚtree_attribss	     €€€€€€€r   r   z$_tree_to_treeseg.<locals>.<listcomp>²  sM   ø€ ð 
ð 
ð 
ð õ ØØØØØØØØñ	ô 	ð
ð 
ð 
r   )rB   r   r0   r   )
r   Útr«   rª   r­   r¬   r¨   r©   r0   r1   s
   ` ``````  r   r§   r§   ¦  s¼   øøøøøøø€ õ �!•TÑÔð 4Ø�	˜& !§'¢'¡)¤)Ð<Ð<¨|Ð<Ð<ˆð
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð ð
ñ 
ô 
ˆõ ! ¨°ÐIÐI¸LÐIÐIÐIàˆy˜ Ð3Ð3 lÐ3Ð3Ð3r   c           
      óŽ  — i }i }i }i }t          |                     ¦   «         ¦  «        D ]†\  }	}
|	dd…         dk    r|
||	dd…         <   Œ!|	dd…         dk    r|
||	dd…         <   Œ=|	dd…         dk    r|
||	dd…         <   ŒY|	dd…         dk    r|
||	dd…         <   Œut          d|	z  ¦  «        ‚t          | |||||||¦  «        S )	aS  
    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ÚitemsrA   r§   )r   r®   r«   rª   r2   r­   r¬   r¨   r©   ÚkeyrH   s              r   Útree_to_treesegmentr¹   Ä  s  € ð0 €LØ€LØ€LØ€Kå˜WŸ]š]™_œ_Ñ-Ô-ð 
8ð 
8‰ˆˆeØˆr�ˆrŒ7�gÒÐØ$)ˆL˜˜Q˜R˜RœÑ!Ð!Ø��!�ŒW˜ÒÐØ$)ˆL˜˜Q˜R˜RœÑ!Ð!Ø��!�ŒW˜ÒÐØ$)ˆL˜˜Q˜R˜RœÑ!Ð!Ø��!�ŒW˜ÒÐØ#(ˆK˜˜A˜B˜BœÑ Ð åÐ0°3Ñ6Ñ7Ô7Ð7ÝØØ	ØØØØØØñ	ô 	ð 	r   c                   ó„   — e Zd ZdZeefd„Zd„ Zd„ Zdd„Zdd„Z	dd„Z
dd	„Zdd
„Zdd„Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ ZdS )Ú
TreeWidgeta   
    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                 óâ  — || _         || _        || _        i | _        i | _        ddi| _        d| _        d| _        d| _        d| _	        d| _
        d| _        d| _        d| _        d| _        i | _        i | _        i | _        g | _        g | _        |                      ||d	¦  «         |                      ||d	¦  «        | _        |                      | j        ¦  «         t1          j        | |fi |¤Ž d S )
Nr;   z#008000z#008080r9   z#c0c0c0Fr   r:   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ª   r2   s         r   r.   zTreeWidget.__init__&  s
  € ð $ˆŒØ#ˆŒØˆŒ
ð ˆÔØˆÔØ# YÐ/ˆÔØ$ˆÔØˆÔØ$ˆÔØ#ˆŒØˆŒØˆŒØˆŒØ&ˆÔØˆŒð ˆŒ
Ø!ˆÔØ "ˆÔØˆŒØˆŒà×"Ò" 6¨1¨bÑ1Ô1Ð1Ø×0Ò0°¸¸BÑ?Ô?ˆŒØ×Ò˜tœ}Ñ-Ô-Ð-åÔ˜d FÐ6Ð6¨gÐ6Ð6Ð6Ð6Ð6r   c                 ó   — | j         |         S ©aF  
        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     r   Úexpanded_treezTreeWidget.expanded_treeI  s   € ð Ô# LÔ1Ð1r   c                 ó   — | j         |         S rÒ   )rË   rÓ   s     r   Úcollapsed_treezTreeWidget.collapsed_treeT  s   € ð Ô$ \Ô2Ð2r   r9   c                 ó  — t          | j                             ¦   «         ¦  «        D ]}|                     ||¦  «         Œt          | j                             ¦   «         ¦  «        D ]}|                     ||¦  «         ŒdS ©z5
        Add a binding to all tree segments.
        N)r¶   rÊ   ÚvaluesÚ
bind_clickrË   ©r/   ÚcallbackÚbuttonÚtsegs       r   Úbind_click_treeszTreeWidget.bind_click_trees_  sˆ   € õ ˜Ô-×4Ò4Ñ6Ô6Ñ7Ô7ð 	.ð 	.ˆDØ�OŠO˜H fÑ-Ô-Ð-Ð-Ý˜Ô.×5Ò5Ñ7Ô7Ñ8Ô8ð 	.ð 	.ˆDØ�OŠO˜H fÑ-Ô-Ð-Ð-ð	.ð 	.r   c                 ó  — t          | j                             ¦   «         ¦  «        D ]}|                     ||¦  «         Œt          | j                             ¦   «         ¦  «        D ]}|                     ||¦  «         ŒdS rÙ   )r¶   rÊ   rÚ   Ú	bind_dragrË   rÜ   s       r   Úbind_drag_treeszTreeWidget.bind_drag_treesh  sˆ   € õ ˜Ô-×4Ò4Ñ6Ô6Ñ7Ô7ð 	-ð 	-ˆDØ�NŠN˜8 VÑ,Ô,Ð,Ð,Ý˜Ô.×5Ò5Ñ7Ô7Ñ8Ô8ð 	-ð 	-ˆDØ�NŠN˜8 VÑ,Ô,Ð,Ð,ð	-ð 	-r   c                 ó†   — | j         D ]}|                     ||¦  «         Œ| j         D ]}|                     ||¦  «         ŒdS ©z.
        Add a binding to all leaves.
        N)rÍ   rÛ   ©r/   rÝ   rÞ   Úleafs       r   Úbind_click_leaveszTreeWidget.bind_click_leavesq  s^   € ð ”Lð 	.ð 	.ˆDØ�OŠO˜H fÑ-Ô-Ð-Ð-Ø”Lð 	.ð 	.ˆDØ�OŠO˜H fÑ-Ô-Ð-Ð-ð	.ð 	.r   c                 ó†   — | j         D ]}|                     ||¦  «         Œ| j         D ]}|                     ||¦  «         ŒdS rå   )rÍ   râ   ræ   s       r   Úbind_drag_leaveszTreeWidget.bind_drag_leavesz  s^   € ð ”Lð 	-ð 	-ˆDØ�NŠN˜8 VÑ,Ô,Ð,Ð,Ø”Lð 	-ð 	-ˆDØ�NŠN˜8 VÑ,Ô,Ð,Ð,ð	-ð 	-r   c                 ó†   — | j         D ]}|                     ||¦  «         Œ| j         D ]}|                     ||¦  «         ŒdS ©z-
        Add a binding to all nodes.
        N)rÌ   rÛ   ©r/   rÝ   rÞ   Únodes       r   Úbind_click_nodeszTreeWidget.bind_click_nodesƒ  s^   € ð ”Kð 	.ð 	.ˆDØ�OŠO˜H fÑ-Ô-Ð-Ð-Ø”Kð 	.ð 	.ˆDØ�OŠO˜H fÑ-Ô-Ð-Ð-ð	.ð 	.r   c                 ó†   — | j         D ]}|                     ||¦  «         Œ| j         D ]}|                     ||¦  «         ŒdS rì   )rÌ   râ   rí   s       r   Úbind_drag_nodeszTreeWidget.bind_drag_nodesŒ  s^   € ð ”Kð 	-ð 	-ˆDØ�NŠN˜8 VÑ,Ô,Ð,Ð,Ø”Kð 	-ð 	-ˆDØ�NŠN˜8 VÑ,Ô,Ð,Ð,ð	-ð 	-r   c           	      óN  ‡ ‡‡
— t          |t          ¦  «        sd S ‰ j        }‰ j        Š
 |‰|                     ¦   «         fi ‰ j        ¤Ž}‰ j                             |¦  «         ˆˆ
ˆ fd„|                     ¦   «         D ¦   «         }‰ xj	        |z  c_	        t          ‰||d‰ j        ‰ j        ‰ j        ¬¦  «        }|‰ j        |<   |‰ j        |<   |                     ¦   «          t#          t%          |¦  «        ¦  «        D ]%}||         }	‰                      ‰|	||fz   ¦  «         Œ&d S )Nc                 ó.   •— g | ]} ‰‰|fi ‰j         ¤Ž‘ŒS r¤   )rÁ   )r   rI   r   rª   r/   s     €€€r   r   z4TreeWidget._make_collapsed_trees.<locals>.<listcomp>�  s0   ø€ ÐPÐPÐPÀ�)�)˜F AÐ;Ð;¨Ô):Ð;Ð;ÐPÐPÐPr   r9   )r5   r;   r   r<   )rB   r   r½   r¾   r0   rÀ   rÌ   r`   ÚleavesrÍ   r   rÅ   rÆ   rÄ   rË   rÉ   Úhiderƒ   rm   rÎ   )r/   r   r®   r¸   r«   rî   rô   ÚtreesegrŽ   r\   rª   s   ``        @r   rÎ   z TreeWidget._make_collapsed_trees•  sI  øøø€ Ý˜!�TÑ"Ô"ð 	ØˆFØ”Oˆ	Ø”Oˆ	àˆy˜ §¢¡¤Ð@Ð@¨dÔ.?Ð@Ð@ˆØŒ×Ò˜4Ñ Ô Ð ØPÐPÐPÐPÐPÐPÀQÇXÂXÁZÄZÐPÑPÔPˆØˆŒ˜ÑˆŒÝ#ØØØØØÔ"Ø”ØÔ"ð
ñ 
ô 
ˆð &-ˆÔ˜cÑ"Ø!ˆŒ
�7Ñà�Š‰Œˆõ •s˜1‘v”v‘”ð 	Bð 	BˆAØ�a”DˆEØ×&Ò& v¨u°c¸Q¸D±jÑAÔAÐAÐAð	Bð 	Br   c                 óÞ  ‡ ‡‡‡
— ‰ j         }‰ j        }t          |t          ¦  «        rœ |‰|                     ¦   «         fi ‰ j        ¤Ž}‰ j                             |¦  «         |Š
ˆˆ
ˆˆ fd„t          t          ‰
¦  «        ¦  «        D ¦   «         }t          ‰||‰ j        ‰ j        ¬¦  «        }|‰ j        ‰<   ‰‰ j        |<   |S  |‰|fi ‰ j        ¤Ž}	‰ j                             |	¦  «         |	S )Nc                 óR   •— g | ]#}‰                      ‰‰|         ‰|fz   ¦  «        ‘Œ$S r¤   )rÏ   )r   rŽ   r   Úchildrenr¸   r/   s     €€€€r   r   z2TreeWidget._make_expanded_tree.<locals>.<listcomp>»  sE   ø€ ð ð ð àð ×(Ò(¨°¸!´¸cÀQÀD¹jÑIÔIðð ð r   )r;   r<   )r½   r¾   rB   r   r0   rÀ   rÌ   r`   rƒ   rm   r   rÃ   rÄ   rÊ   rÉ   rÁ   rÍ   )r/   r   r®   r¸   r«   rª   rî   r1   rö   rç   rù   s   `` `      @r   rÏ   zTreeWidget._make_expanded_tree³  s(  øøøø€ Ø”Oˆ	Ø”Oˆ	å�a�ÑÔð 	Ø�9˜V Q§W¢W¡Y¤YÐDÐD°$Ô2CÐDÐDˆDØŒK×Ò˜tÑ$Ô$Ð$ØˆHðð ð ð ð ð ð å�s 8™}œ}Ñ-Ô-ðñ ô ˆHõ (Ø˜˜h¨dÔ.>ÀdÔFVðñ ô ˆGð )0ˆDÔ  Ñ%Ø"%ˆDŒJ�wÑØˆNà�9˜V QÐ<Ð<¨$Ô*;Ð<Ð<ˆDØŒL×Ò Ñ%Ô%Ð%ØˆKr   c                 óÖ  — |d d…         dk    r| j         D ]}|||dd …         <   Œd S |d d…         dk    r| j        D ]}|||dd …         <   Œd S |dk    r7|| _        t          | j                             ¦   «         ¦  «        D ]}||d<   Œd S |dk    re|| _        t          | j                             ¦   «         ¦  «        D ]}||d<   Œt          | j                             ¦   «         ¦  «        D ]}||d<   Œd S |dk    r7|| _        t          | j                             ¦   «         ¦  «        D ]}||d<   Œd S |d	k    r7|| _	        t          | j                             ¦   «         ¦  «        D ]}||d
<   Œd S |dk    rt|| _
        t          | j                             ¦   «         ¦  «        D ]}||d<   Œt          | j                             ¦   «         ¦  «        D ]}||d<   Œ| j        D ]}||d<   Œd S |dk    ry|| _        t          | j                             ¦   «         ¦  «        D ]}||d<   Œt          | j                             ¦   «         ¦  «        D ]}||d<   Œ|                      ¦   «          d S |dk    ry|| _        t          | j                             ¦   «         ¦  «        D ]}||d<   Œt          | j                             ¦   «         ¦  «        D ]}||d<   Œ|                      ¦   «          d S |dk    ry|| _        t          | j                             ¦   «         ¦  «        D ]}||d<   Œt          | j                             ¦   «         ¦  «        D ]}||d<   Œ|                      ¦   «          d S |dk    re|| _        t          | j                             ¦   «         ¦  «        D ]}||d<   Œt          | j                             ¦   «         ¦  «        D ]}||d<   Œd S t!          j        | ||¦  «         d S )Nr°   r²   r³   Ú
line_colorr;   Ú
line_widthr<   Ú
roof_colorÚ	roof_fillr   Ú	shapeableÚ	draggabler=   r>   r7   r?   )rÌ   rÍ   rÃ   r¶   rÊ   rÚ   rÄ   rË   rÅ   rÆ   rÇ   r&   Úmanager'   rÈ   r(   r   rF   )r/   rG   rH   rî   rç   rß   s         r   rF   zTreeWidget.__setitem__Ê  s»  € Ø���Œ8�wÒÐØœð 'ð '�Ø!&��T˜!˜"˜"”X‘�ð'ð 'à�"�1�"ŒX˜Ò Ð Øœð 'ð '�Ø!&��T˜!˜"˜"”X‘�ð'ð 'à�\Ò!Ð!Ø$ˆDÔÝ˜TÔ1×8Ò8Ñ:Ô:Ñ;Ô;ð &ð &�Ø %��W‘�ð&ð &à�\Ò!Ð!Ø$ˆDÔÝ˜TÔ1×8Ò8Ñ:Ô:Ñ;Ô;ð &ð &�Ø %��W‘�Ý˜TÔ2×9Ò9Ñ;Ô;Ñ<Ô<ð &ð &�Ø %��W‘�ð&ð &à�\Ò!Ð!Ø$ˆDÔÝ˜TÔ2×9Ò9Ñ;Ô;Ñ<Ô<ð &ð &�Ø %��W‘�ð&ð &à�[Ò Ð Ø#ˆDŒOÝ˜TÔ2×9Ò9Ñ;Ô;Ñ<Ô<ð %ð %�Ø$��V‘�ð%ð %à�[Ò Ð Ø#ˆDŒOÝ˜TÔ1×8Ò8Ñ:Ô:Ñ;Ô;ð *ð *�Ø$)��[Ñ!Ð!Ý˜TÔ2×9Ò9Ñ;Ô;Ñ<Ô<ð *ð *�Ø$)��[Ñ!Ð!Øœð *ð *�Ø$)��[Ñ!Ð!ð*ð *à�XÒÐØ ˆDŒLÝ˜TÔ1×8Ò8Ñ:Ô:Ñ;Ô;ð 'ð '�Ø!&��X‘�Ý˜TÔ2×9Ò9Ñ;Ô;Ñ<Ô<ð 'ð '�Ø!&��X‘�Ø�KŠK‰MŒMˆMˆMˆMØ�XÒÐØ ˆDŒLÝ˜TÔ1×8Ò8Ñ:Ô:Ñ;Ô;ð 'ð '�Ø!&��X‘�Ý˜TÔ2×9Ò9Ñ;Ô;Ñ<Ô<ð 'ð '�Ø!&��X‘�Ø�KŠK‰MŒMˆMˆMˆMØ�]Ò"Ð"Ø %ˆDÔÝ˜TÔ1×8Ò8Ñ:Ô:Ñ;Ô;ð ,ð ,�Ø&+��]Ñ#Ð#Ý˜TÔ2×9Ò9Ñ;Ô;Ñ<Ô<ð ,ð ,�Ø&+��]Ñ#Ð#Ø�KŠK‰MŒMˆMˆMˆMØ�YÒÐØ!ˆDŒMÝ˜TÔ1×8Ò8Ñ:Ô:Ñ;Ô;ð (ð (�Ø"'��Y‘�Ý˜TÔ2×9Ò9Ñ;Ô;Ñ<Ô<ð (ð (�Ø"'��Y‘�ð(ð (õ Ô$ T¨4°Ñ7Ô7Ð7Ð7Ð7r   c                 ó"  — |d d…         dk    r#| j                              |dd …         d ¦  «        S |d d…         dk    r#| j                             |dd …         d ¦  «        S |d d…         dk    r#| j                             |dd …         d ¦  «        S |dk    r| j        S |dk    r| j        S |dk    r| j        S |d	k    r| j        S |d
k    r| j        S |dk    r| j	        S |dk    r| j
        S |dk    r| j        S t          j        | |¦  «        S )Nr°   r²   r³   r´   rµ   rû   rü   rý   rþ   rÿ   r=   r>   r7   )rÀ   ÚgetrÁ   rÂ   rÃ   rÄ   rÅ   rÆ   rÇ   r&   r'   rÈ   r   rL   )r/   rG   s     r   rL   zTreeWidget.__getitem__	  sM  € Ø���Œ8�wÒÐØÔ$×(Ò(¨¨a¨b¨b¬°4Ñ8Ô8Ð8Ø�"�1�"ŒX˜Ò Ð ØÔ$×(Ò(¨¨a¨b¨b¬°4Ñ8Ô8Ð8Ø�"�1�"ŒX˜ÒÐØÔ#×'Ò'¨¨Q¨R¨R¬°$Ñ7Ô7Ð7Ø�\Ò!Ð!ØÔ#Ð#Ø�\Ò!Ð!ØÔ#Ð#Ø�\Ò!Ð!ØÔ#Ð#Ø�[Ò Ð Ø”?Ð"Ø�[Ò Ð Ø”?Ð"Ø�XÒÐØ”<ÐØ�XÒÐØ”<ÐØ�]Ò"Ð"ØÔ$Ð$åÔ+¨D°$Ñ7Ô7Ð7r   c                 ó   — g S rN   r¤   rO   s    r   rc   zTreeWidget._tags#  s   € Øˆ	r   c                 óJ  — t          | j                             ¦   «         ¦  «        t          | j                             ¦   «         ¦  «        z   }|D ]R}|                     ¦   «         r<|                     ¦   «          |                     ¦   «          |                     ¦   «          ŒSd S rN   )r¶   rÊ   rÚ   rË   r   Úshowr  rõ   )r/   Úsegsrß   s      r   rœ   zTreeWidget._manage&  s”   € Ý�DÔ(×/Ò/Ñ1Ô1Ñ2Ô2µTØÔ!×(Ò(Ñ*Ô*ñ6
ô 6
ñ 
ˆð ð 	ð 	ˆDØ�{Š{‰}Œ}ð Ø—	’	‘”�Ø—’‘”�Ø—	’	‘”�øð		ð 	r   c                 óö  — |}|d         r| j         | j        |                  }n| j        | j        |                  }|                     ¦   «         | u r2|                      |¦  «         |                      |¦  «         || _        n(|                     ¦   «                              ||¦  «         |                     ¦   «          | 	                    ¦   «          
                    ¦   «         dd…         \  }}| 	                    ¦   «          
                    ¦   «         dd…         \  }}|                     ||z
  ||z
  ¦  «         |                     ¦   «          |                     ¦   «                              |¦  «         dS )z)
        Collapse/expand a tree.
        r5   Nrg   )rÊ   rÉ   rË   ÚparentrR   r,   rÐ   rX   r  r0   rh   r‚   rõ   rE   )r/   rö   Úold_treesegÚnew_treesegÚnewxÚnewyÚoldxÚoldys           r   Útoggle_collapsedzTreeWidget.toggle_collapsed0  so  € ð ˆØ�vÔð 	IØÔ.¨t¬z¸+Ô/FÔGˆKˆKàÔ/°´
¸;Ô0GÔHˆKð ×ÒÑÔ 4Ð'Ð'Ø×%Ò% kÑ2Ô2Ð2Ø×"Ò" ;Ñ/Ô/Ð/Ø'ˆDŒMˆMà×ÒÑ Ô ×.Ò.¨{¸KÑHÔHÐHð 	×ÒÑÔÐØ"×(Ò(Ñ*Ô*×/Ò/Ñ1Ô1°"°1°"Ô5‰ˆˆtØ"×(Ò(Ñ*Ô*×/Ò/Ñ1Ô1°"°1°"Ô5‰ˆˆtØ×Ò˜ ™ d¨T¡kÑ2Ô2Ð2ð 	×ÒÑÔÐð 	×ÒÑÔ×#Ò# KÑ0Ô0Ð0Ð0Ð0r   N)r9   )r    r¡   r¢   r£   r   r.   rÕ   r×   rà   rã   rè   rê   rï   rñ   rÎ   rÏ   rF   rL   rc   rœ   r  r¤   r   r   r»   r»   ý  s>  € € € € € ð&ð &ðR $.¸ð!7ð !7ð !7ð !7ðF	2ð 	2ð 	2ð	3ð 	3ð 	3ð.ð .ð .ð .ð-ð -ð -ð -ð.ð .ð .ð .ð-ð -ð -ð -ð.ð .ð .ð .ð-ð -ð -ð -ðBð Bð Bð<ð ð ð.=8ð =8ð =8ð~8ð 8ð 8ð4ð ð ðð ð ð1ð 1ð 1ð 1ð 1r   r»   c                   ó2   — e Zd Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ ZdS )ÚTreeViewc                 óˆ  — ddl m}m} || _        t	          ¦   «         | _        | j                             d¦  «         | j                             d| j        ¦  «         | j                             d| j        ¦  «         t          | j        ¦  «        x}| _
        | j                             d| j
        j        ¦  «         t          | j        ¦  «        | _        | j                             d¦  «         d| j                             ¦   «          d	f}d| j                             ¦   «          f}t!           | |t#          |¦  «        ¦  «        ¦  «        ¦  «        | _        g | _        t)          t#          |¦  «        ¦  «        D ]~}t+          |                     ¦   «         ||         |d
ddddd|¬¦
  «
        }|                     |j        ¦  «         | j                             |¦  «         |                     |dd¦  «         Œ|                      ¦   «          | j
                             dd¬¦  «         |                      ¦   «          d S )Nr   )ÚceilÚsqrtÚNLTKz<Control-x>z<Control-q>z<Control-p>é   Ú	helveticaÚboldz#008040z#004080z#004040Úwhiter9   )Ú	node_fontÚ
leaf_colorÚ
node_colorrý   rþ   rû   r   Ú	leaf_fontÚboth)Úexpandr   )Úmathr  r  Ú_treesr   Ú_topÚtitleÚbindÚdestroyr   Ú_cframeÚprint_to_filer   Ú_sizeÚsetr  rD   rm   Ú_widthÚ_widgetsrƒ   r»   r   rà   r  r`   Ú
add_widgetÚ_layoutÚpackÚ_init_menubar)	r/   Útreesr  r  Úcfr  ÚhelvrŽ   Úwidgets	            r   r.   zTreeView.__init__V  s  € Ø#Ð#Ð#Ð#Ð#Ð#Ð#Ð#àˆŒå‘D”DˆŒ	ØŒ	�Š˜ÑÔÐØŒ	�Š�} d¤lÑ3Ô3Ð3ØŒ	�Š�} d¤lÑ3Ô3Ð3å'¨¬	Ñ2Ô2Ð2ˆˆTŒ\ØŒ	�Š�} d¤lÔ&@ÑAÔAÐAõ ˜DœIÑ&Ô&ˆŒ
ØŒ
�Š�rÑÔÐØ˜dœjŸnšnÑ.Ô.Ð.°Ð7ˆØ˜dœjŸnšnÑ.Ô.Ð.Ð/ˆõ ˜$˜$˜t˜t¥C¨¡J¤JÑ/Ô/Ñ0Ô0Ñ1Ô1ˆŒØˆŒÝ•s˜5‘z”zÑ"Ô"ð 	(ð 	(ˆAÝØ—	’	‘”Ø�a”ØØ$Ø$Ø$Ø!Ø$ØØðñ ô ˆFð ×#Ò# FÔ$;Ñ<Ô<Ð<ØŒM× Ò  Ñ(Ô(Ð(Ø�MŠM˜& ! QÑ'Ô'Ð'Ð'à�Š‰ŒˆØŒ×Ò ¨ÐÑ0Ô0Ð0Ø×ÒÑÔÐÐÐr   c                 ó¦  — dx}x}x}}| j         }t          t          | j        ¦  «        ¦  «        D ]Ÿ}| j        |         }|                     ¦   «         d d…         \  }}||z  dk    r|}d}|                     ||z
  ||z
  ¦  «         |                     ¦   «         d         dz   }t          ||                     ¦   «         d         dz   ¦  «        }Œ d S )Nr   rg   r   re   )r+  rƒ   rm   r,  rh   r‚   rp   )	r/   rŽ   r�   r�   rx   r<   r4  r  r  s	            r   r.  zTreeView._layout�  sÛ   € ØÐˆÐˆAÐ��DØ”ˆÝ•s˜4œ=Ñ)Ô)Ñ*Ô*ð 	4ð 	4ˆAØ”] 1Ô%ˆFØ!Ÿ;š;™=œ=¨¨!¨Ô,‰LˆT�4Ø�5‰y˜AŠ~ˆ~Ø�Ø�Ø�KŠK˜˜D™ ! d¡(Ñ+Ô+Ð+Ø—’‘”˜aÔ  2Ñ%ˆAÝ�t˜VŸ[š[™]œ]¨1Ô-°Ñ2Ñ3Ô3ˆDˆDð	4ð 	4r   c                 óò  — t          | j        ¦  «        }t          |d¬¦  «        }|                     dd| j        j        d¬¦  «         |                     dd| j        d¬¦  «         |                     d	d|¬
¦  «         t          |d¬¦  «        }|                     d| j        dd| j	        ¬¦  «         |                     d| j        dd| j	        ¬¦  «         |                     d| j        dd| j	        ¬¦  «         |                     d| j        dd| j	        ¬¦  «         |                     d| j        dd| j	        ¬¦  «         |                     dd|¬
¦  «         | j         
                    |¬¦  «         d S )Nr   )ÚtearoffzPrint to PostscriptzCtrl-p)r0   Ú	underlineÚcommandÚacceleratorÚExitr9   zCtrl-xÚFile)r0   r8  ÚmenuÚTinyr   )r0   Úvariabler8  rH   r9  ÚSmallr  ÚMediumé   ÚLargeé   ÚHugeé2   ÚZoom)r=  )r   r#  Úadd_commandr'  r(  r&  Úadd_cascadeÚadd_radiobuttonr)  ÚresizeÚconfig)r/   ÚmenubarÚfilemenuÚzoommenus       r   r0  zTreeView._init_menubarŽ  sÜ  € Ý�t”y‘/”/ˆå˜¨Ð+Ñ+Ô+ˆØ×ÒØ'ØØ”LÔ.Ø ð	 	ñ 	
ô 	
ð 	
ð 	×ÒØ A¨t¬|Èð 	ñ 	
ô 	
ð 	
ð 	×Ò &°A¸HÐÑEÔEÐEå˜¨Ð+Ñ+Ô+ˆØ× Ò ØØ”ZØØØ”Kð 	!ñ 	
ô 	
ð 	
ð 	× Ò ØØ”ZØØØ”Kð 	!ñ 	
ô 	
ð 	
ð 	× Ò ØØ”ZØØØ”Kð 	!ñ 	
ô 	
ð 	
ð 	× Ò ØØ”ZØØØ”Kð 	!ñ 	
ô 	
ð 	
ð 	× Ò ØØ”ZØØØ”Kð 	!ñ 	
ô 	
ð 	
ð 	×Ò &°A¸HÐÑEÔEÐEàŒ	×Ò˜gÐÑ&Ô&Ð&Ð&Ð&r   c                 óÖ  — d| j                              ¦   «          df}d| j                              ¦   «          f}| j                              ¦   «         }| j                              ¦   «         }| j        D ]a}||d<   ||d<   ||d<   ||d<   | j                              ¦   «         dk     rd|d	<   Œ9| j                              ¦   «         d
k     rd|d	<   Œ\d|d	<   Œb|                      ¦   «          d S )Nr  r  r  r  r=   r>   r’   r9   rü   é   rg   re   )r)  r  r,  r.  )r/   Úer  r3  r=   r>   r4  s          r   rK  zTreeView.resizeÅ  s÷   € Ø˜dœjŸnšnÑ.Ô.Ð.°Ð7ˆØ˜dœjŸnšnÑ.Ô.Ð.Ð/ˆØ”—’Ñ!Ô!ˆØ”—’Ñ!Ô!ˆØ”mð 
	)ð 
	)ˆFØ"&ˆF�;ÑØ"&ˆF�;ÑØ%ˆF�8ÑØ%ˆF�8ÑØŒz�~Š~ÑÔ "Ò$Ð$Ø'(��|Ñ$Ð$Ø”—’Ñ!Ô! BÒ&Ð&Ø'(��|Ñ$Ð$à'(��|Ñ$Ð$Ø�Š‰Œˆˆˆr   c                 óX   — | j         €d S | j                              ¦   «          d | _         d S rN   )r#  r&  )r/   rR  s     r   r&  zTreeView.destroy×  s.   € ØŒ9ÐØˆFØŒ	×ÒÑÔÐØˆŒ	ˆ	ˆ	r   c                 óJ   — t          ¦   «         rdS  | j        j        |i |¤Ž dS )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   r#  Úmainloop)r/   ÚargsÚkwargss      r   rU  zTreeView.mainloopÝ  s5   € õ ‰9Œ9ð 	ØˆFØˆŒ	Ô˜DÐ+ FÐ+Ð+Ð+Ð+Ð+r   N)	r    r¡   r¢   r.   r.  r0  rK  r&  rU  r¤   r   r   r  r  U  sp   € € € € € ð)ð )ð )ðV4ð 4ð 4ð5'ð 5'ð 5'ðnð ð ð$ð ð ð	,ð 	,ð 	,ð 	,ð 	,r   r  c                  ó<   — t          | Ž                      ¦   «          dS )zd
    Open a new window containing a graphical diagram of the given
    trees.

    :rtype: None
    N)r  rU  )r1  s    r   Ú
draw_treesrY  é  s    € õ ˆeÐ×ÒÑÔÐØ
€Fr   c                  óV  ‡— dd l Šˆfd„} t          ddd¬¦  «        }t          j        d¦  «        }t	          |                     ¦   «         |dd	d
dddd¬¦	  «	        }|                     |dd¦  «         d„ }d„ }t          j        d¦  «        }t	          |                     ¦   «         |||d¬¦  «        }ˆfd„}ˆfd„}	|                     |j        ¦  «         |                     |j        ¦  «         | 	                    |d¦  «         | 
                    d¦  «                             |	d¦  «         | 
                    ¦   «                              |	d¦  «         t          |                     ¦   «         |¦  «        }
|                     |
|                     ¦   «         d         dz   d¦  «         t          j        d¦  «        }t          |                     ¦   «         |ddd¬¦  «        }d|d<   |                     |d|                     ¦   «         d         dz   ¦  «         d„ }d}t          |                     ¦   «         |                     ¦   «         ¦  «        }t#          |                     ¦   «         |dd¬¦  «        }|                     ||                     ¦   «         d         dz   |                     ¦   «         d         dz   ¦  «         t          j        d¦  «        }t	          |                     ¦   «         |dddd d!d"¬#¦  «        }|                     ¦   «          |                     ||                     ¦   «         d         dz   |                     ¦   «         d         dz   ¦  «         |                     |¦  «         |                     |j        d¦  «         |                     ¦   «          d S )$Nr   c                 ó@   •— d‰                      dd¦  «        z  | d<   d S )Nú#%06dr   i?B r   ©Úrandint)ÚcwÚrandoms    €r   r   zdemo.<locals>.fillü  s#   ø€ Ø˜vŸ~š~¨a°Ñ8Ô8Ñ8ˆˆ6‰
ˆ
ˆ
r   i&  iÂ  rg   )r<   ÚheightÚcloseenoughzU
    (S (NP the very big cat)
       (VP (Adv sorta) (V saw) (NP (Det the) (N dog))))r9   )r  iòÿÿÿr  )r  éôÿÿÿÚitalicr  ÚblackÚgreen4Úblue2)r   r  r  rþ   rý   r  r  r   c                 óJ   — d}t          | t          | ||¬¦  «        d¬¦  «        S )N)r  iðÿÿÿr  )ÚfontÚgreenr   )r   r   )r   ÚtextÚbigs      r   Úboxitzdemo.<locals>.boxit  s+   € Ø(ˆÝ˜¥¨F°D¸sÐ!CÑ!CÔ!CÈ'ÐRÑRÔRÐRr   c                 óB   — t          | t          | |¦  «        d¬¦  «        S )NÚcyanr   )r	   r   )r   rk  s     r   Úovalitzdemo.<locals>.ovalit  s!   € Ý˜&¥*¨V°TÑ":Ô":ÀÐHÑHÔHÐHr   z/(S (NP this tree) (VP (V is) (AdjP shapeable))))rÿ   c                 ó@   •— d‰                      dd¦  «        z  | d<   d S )Nz#%04d00r   é'  r;   r]  )rî   r`  s    €r   r;   zdemo.<locals>.color  s#   ø€ Ø! F§N¢N°1°dÑ$;Ô$;Ñ;ˆˆW‰ˆˆr   c                 ó¶   •— d‰                      dd¦  «        z  |                      ¦   «         d<   d|                      ¦   «                              ¦   «         d<   d S )Nr\  r   rr  r   r  r;   )r^  r0   r\   )rö   r`  s    €r   Úcolor2zdemo.<locals>.color2!  sL   ø€ Ø")¨F¯NªN¸1¸dÑ,CÔ,CÑ"Cˆ�Š‰Œ˜ÑØ+2ˆ�Š‰Œ×ÒÑÔ Ñ(Ð(Ð(r   re   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                 ó<  — | d         dk    �r|                       dd¦  «                             ¦   «         d                              d¦  «         |                      dd¦  «                             ¦   «         d                              d¦  «         |                      d¦  «                             ¦   «         d                              d¦  «         |                      ¦   «                              ¦   «         d                              d¦  «         d| d<   d S |                       dd¦  «                             ¦   «         d                              d¦  «         |                      dd¦  «                             ¦   «         d                              d¦  «         |                      d¦  «                             ¦   «         d                              d¦  «         |                      ¦   «                              ¦   «         d                              d¦  «         d| d<   d S )Nr7   r8   r9   r   r:   re   )rÕ   r1   Úset_textr×   )Ú
treewidgets    r   Úorientswitchzdemo.<locals>.orientswitch9  sÎ  € Ø�mÔ$¨Ò4Ñ4Ø×$Ò$ Q¨Ñ*Ô*×3Ò3Ñ5Ô5°aÔ8×AÒAÀ*ÑMÔMÐMØ×%Ò% a¨Ñ+Ô+×4Ò4Ñ6Ô6°qÔ9×BÒBÀ:ÑNÔNÐNØ×%Ò% aÑ(Ô(×1Ò1Ñ3Ô3°AÔ6×?Ò?À
ÑKÔKÐKØ×%Ò%Ñ'Ô'×0Ò0Ñ2Ô2°1Ô5×>Ò>¸zÑJÔJÐJØ(2ˆJ�}Ñ%Ð%Ð%à×$Ò$ Q¨Ñ*Ô*×3Ò3Ñ5Ô5°aÔ8×AÒAÀ,ÑOÔOÐOØ×%Ò% a¨Ñ+Ô+×4Ò4Ñ6Ô6°qÔ9×BÒBÀ<ÑPÔPÐPØ×%Ò% aÑ(Ô(×1Ò1Ñ3Ô3°AÔ6×?Ò?ÀÑMÔMÐMØ×%Ò%Ñ'Ô'×0Ò0Ñ2Ô2°1Ô5×>Ò>¸|ÑLÔLÐLØ(4ˆJ�}Ñ%Ð%Ð%r   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)r  rc  r  Úbrown4r8   )r   rû   rý   r  r  r7   )r`  r   r   Ú
fromstringr»   r   r-  rà   r  rï   rÕ   rÛ   r
   rh   r¹   r   Ústripr   r  rU  )r   r2  r®   Útcrm  rp  ÚtreetokÚtc2r;   rt  ÚparenÚtree3Útc3r{  rk  ÚtwidgetÚtextboxÚtree4Útc4r`  s                      @r   ÚdemorŠ  ù  s¾  ø€ Ø€M€M€Mð9ð 9ð 9ð 9ð 9õ 
˜3 s¸Ð	:Ñ	:Ô	:€BåŒð	;ñ	ô 	€Aõ 
Ø
�	Š	‰ŒØ	ØØ,Ø.ØØØØð

ñ 

ô 

€Bð ‡M‚M�"�b˜"ÑÔÐðSð Sð SðIð Ið Iõ ŒoÐOÑPÔP€GÝ
�R—Y’Y‘[”[ '¨5°&ÀAÐ
FÑ
FÔ
F€Cð<ð <ð <ð <ð <ð3ð 3ð 3ð 3ð 3ð ×Ò˜Ô+Ñ,Ô,Ð,Ø×Ò˜Ô-Ñ.Ô.Ð.Ø×Ò˜˜qÑ!Ô!Ð!Ø×Ò�aÑÔ×#Ò# F¨AÑ.Ô.Ð.Ø×ÒÑÔ×"Ò" 6¨1Ñ-Ô-Ð-å˜Ÿ	š	™œ SÑ)Ô)€EØ‡M‚M�%˜Ÿš™œ 1œ¨Ñ*¨BÑ/Ô/Ð/åŒOð	Eñô €Eõ
 Ø
�	Š	‰Œ�U x¸QÈ1ðñ ô €Cð €CˆÑØ‡M‚M�#�r˜2Ÿ7š7™9œ9 Qœ<¨"Ñ,Ñ-Ô-Ð-ð5ð 5ð 5ð#€Dõ ˜Ÿš™œ d§j¢j¡l¤lÑ3Ô3€GÝ˜Ÿ	š	™œ W°7ÀaÐHÑHÔH€GØ‡M‚M�'˜3Ÿ8š8™:œ: aœ=¨2Ñ-¨s¯xªx©z¬z¸!¬}¸rÑ/AÑBÔBÐBåŒOÐMÑNÔN€EÝ
Ø
�	Š	‰ŒØØØØØ,ØØ ð	ñ 	ô 	€Cð ‡J‚J�L„L€LØ‡M‚M�#�s—x’x‘z”z !”} rÑ)¨7¯<ª<©>¬>¸!Ô+<¸rÑ+AÑBÔBÐBØ‡N‚N�<Ñ Ô Ð Ø×Ò˜Ô-¨qÑ1Ô1Ð1ð ‡K‚K�M„M€M€M€Mr   Ú__main__N)r£   Útkinterr   r   r   Únltk.draw.utilr   r   r   r	   r
   r   Ú	nltk.treer   Ú	nltk.utilr   r   r§   r¹   r»   r  rY  rŠ  r    r¤   r   r   ú<module>r�     s­  ððð ð %Ð $Ð $Ð $Ð $Ð $Ð $Ð $Ð $Ð $ðð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð ðE<ð E<ð E<ð E<ð E<˜ñ E<ô E<ð E<ðP4ð 4ð 4ð> $¨zð1ð 1ð 1ð 1ðrP1ð P1ð P1ð P1ð P1�ñ P1ô P1ð P1ðp
Q,ð Q,ð Q,ð Q,ð Q,ñ Q,ô Q,ð Q,ðhð ð ð lð lð lð^ ˆzÒÐØ€D�F„F€F€F€Fð Ðr   