ó
ł`]c           @   s-  yd d  d l  m Z m Z m Z m Z m Z m Z m Z m Z d  d l	 m
 Z
 d  d l m Z m Z Wn e k
 rw n Xd  d l m Z d  d l m Z d  d l m Z d  d l m Z d  d l m Z m Z d  d	 l m Z d
 e f d     YZ d e f d     YZ d   Z e  d k r)e   n  d S(   i’’’’(   t   Buttont   Framet   IntVart   Labelt   Listboxt   Menut	   Scrollbart   Tk(   t   Font(   t   CanvasFramet   ShowText(   t   in_idle(   t   RegexpTagger(   t
   MaltParser(   t   Variable(   t	   DrsDrawert   DrtVariableExpression(   t   DrtGluet   DrtGlueDemoc           B   sõ   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 d  Z d   Z d   Z d   Z d   Z d   Z RS(   c         C   s  t    |  _ |  j j d  |  j   |  j |  j  | |  _ g  | D] } d  ^ qF |  _ t |  j  |  _	 |  j	 j
 d  d |  _ g  |  _ d  |  _ d  |  _ d  |  _ |  j   |  j |  j  |  j |  j  |  j |  j  |  j |  j  |  j |  j  |  j j d |  j  d  S(   Ns   DRT Glue Demoi   i’’’’s   <Configure>(   R   t   _topt   titlet   _init_bindingst   _init_fontst	   _examplest   Nonet   _readingCacheR   t   _show_grammart   sett   _curExamplet	   _readingst   _drst
   _drsWidgett   _errort
   _init_gluet   _init_menubart   _init_buttonst   _init_exampleListboxt   _init_readingListboxt   _init_canvast   _canvast   bindt
   _configure(   t   selft   examplest   example(    (    s5   lib/python2.7/site-packages/nltk/sem/drt_glue_demo.pyt   __init__$   s(    
						
c      
   C   sO   t  d d d d d d d d g  } t d |  } t d | d t  |  _ d  S(   Ns   ^(David|Mary|John)$t   NNPsT   ^(walks|sees|eats|chases|believes|gives|sleeps|chases|persuades|tries|seems|leaves)$t   VBs!   ^(go|order|vanish|find|approach)$s   ^(a)$t   ex_quants	   ^(every)$t
   univ_quants.   ^(sandwich|man|dog|pizza|unicorn|cat|senator)$t   NNs   ^(big|gray|former)$t   JJs   ^(him|himself)$t   PRPt   taggert	   depparsert   remove_duplicates(   s   ^(David|Mary|John)$R.   (   sT   ^(walks|sees|eats|chases|believes|gives|sleeps|chases|persuades|tries|seems|leaves)$R/   (   s!   ^(go|order|vanish|find|approach)$R/   (   s   ^(a)$R0   (   s	   ^(every)$R1   (   s.   ^(sandwich|man|dog|pizza|unicorn|cat|senator)$R2   (   s   ^(big|gray|former)$R3   (   s   ^(him|himself)$R4   (   R   R   R   t   Falset   _glue(   R*   R5   R6   (    (    s5   lib/python2.7/site-packages/nltk/sem/drt_glue_demo.pyR!   M   s     c         C   s’   t  d t   d  |  _ | j d |  j  t |  |  _ |  j j |  j j d   t  d d d d d |  j j    |  _	 t  d d d |  j j    |  _
 |  j j   d k  rŹ |  j j   d	 } n |  j j   d	 } t  d d d d d |  |  _ d  S(
   Nt   fonts   *Fontt   sizet   familyt	   helveticat   weightt   boldi    i   (   R   R    t   _sysfontt
   option_addR   t   _sizeR   t   cgett   gett	   _boldfontt   _fontt   _bigfont(   R*   t   roott   big(    (    s5   lib/python2.7/site-packages/nltk/sem/drt_glue_demo.pyR   a   s    '!c         C   s  t  |  |  _ } |  j j d d d d d d  t |  j d |  j d d	 |  _ |  j j   t |  j d
 d d d d d d d d |  j d d d d |  _ |  j j d d d d d d  x( |  j	 D] } |  j j
 d d |  qČ W|  j j d t t |  j	  d  d d  t |  j	  d k rt |  j d d  } |  j j d! | j  | j d" |  j j  | j d d d d#  n  |  j j d$ |  j  d  S(%   Nt   fillt   botht   sidet   leftt   padxi   R:   t   textt   Examplest
   selectmodet   singlet   relieft   groovet
   backgroundt   whitet
   foregrounds   #909090t   selectforegrounds   #004040t   selectbackgrounds   #c0f0c0t   rightt   expandi   t   ends     %st   heighti   t   widthi(   t   orientt   verticalt   yscrollcommandt   commandt   ys   <<ListboxSelect>>(   R   t   _exampleFramet   packR   RE   t   _exampleList_labelR   RF   t   _exampleListR   t   insertt   configt   mint   lenR   R   t   yviewR(   t   _exampleList_select(   R*   t   parentt	   listframeR,   t
   listscroll(    (    s5   lib/python2.7/site-packages/nltk/sem/drt_glue_demo.pyR$   r   s0    		+c         C   s#  t  |  |  _ } |  j j d d d d d d  t |  j d |  j d d	 |  _ |  j j   t |  j d
 d d d d d d d d |  j d d d d |  _ |  j j d d d d d d  t	 |  j d d } |  j j
 d | j  | j
 d |  j j  | j d d d d  |  j   d  S(   NRJ   RK   RL   RM   RN   i   R:   RO   t   ReadingsRQ   RR   RS   RT   RU   RV   RW   s   #909090RX   s   #004040RY   s   #c0f0c0RZ   R[   i   R_   R`   Ra   Rb   Rc   (   R   t   _readingFrameRe   R   RE   t   _readingList_labelR   RF   t   _readingListR   Ri   R   Rl   t   _populate_readingListbox(   R*   Rn   Ro   Rp   (    (    s5   lib/python2.7/site-packages/nltk/sem/drt_glue_demo.pyR%      s(    		c         C   s   |  j  j d d  x8 t t |  j   D]! } |  j  j d d | d  q) W|  j  j d t t |  j  d  d d  |  j  j d	 |  j	  d  S(
   Ni    R\   s     %si   R]   i   R^   i   s   <<ListboxSelect>>(
   Rt   t   deletet   rangeRk   R   Rh   Ri   Rj   R(   t   _readingList_select(   R*   t   i(    (    s5   lib/python2.7/site-packages/nltk/sem/drt_glue_demo.pyRu   °   s
    +c         C   s   |  j  j d |  j  |  j  j d |  j  |  j  j d |  j  |  j  j d |  j  |  j  j d |  j  |  j  j d |  j  |  j  j d |  j  d  S(   Ns   <Control-q>s   <Control-x>s   <Escape>t   ns   <space>t   ps   <BackSpace>(   R   R(   t   destroyt   nextt   prev(   R*   (    (    s5   lib/python2.7/site-packages/nltk/sem/drt_glue_demo.pyR   ŗ   s    c      
   C   s   t  |  |  _ } | j d d d d d d d d  t | d	 d
 d d d d d |  j j d d  t | d	 d d d d d d |  j j d d  d  S(   NRJ   t   noneRL   t   bottomRN   i   t   padyi   RO   t   PrevRU   s   #90c0d0RW   t   blackRb   RM   t   Next(   R   t   _buttonframeRe   R    R~   R}   (   R*   Rn   t   buttonframe(    (    s5   lib/python2.7/site-packages/nltk/sem/drt_glue_demo.pyR#   Ä   s     "c         C   s\   d |  _  |  j j   \ } } } } | j d } d | | | | f |  j d <|  j   d  S(   Ni    i   s   %d %d %d %dt   scrollregion(   t	   _autostept   _cframeR   R]   R'   t   _redraw(   R*   t   eventt   x1t   y1t   x2t   y2(    (    s5   lib/python2.7/site-packages/nltk/sem/drt_glue_demo.pyR)   ×   s
    	c      
   C   s   t  | d d d d d d d d |  _ |  j j d	 d
 d d d d d d  |  j j   } |  _ d  |  _ g  |  _ d  |  _ d  S(   NRU   RV   t   closeenoughi
   t   borderi   RS   t   sunkenR[   i   RJ   RK   RL   t   topR   (	   R	   R   Re   t   canvasR'   R   t   _treet   _textwidgetst	   _textline(   R*   Rn   R   (    (    s5   lib/python2.7/site-packages/nltk/sem/drt_glue_demo.pyR&   Ž   s    %		c         C   s«  t  |  } t  | d d } | j d d d d d |  j d d	  | j d d
 d d d |  t  | d d } | j d d d d d |  j d d  | j d d d d d |  j d d  | j d d d d d |  t  | d d } | j d d d d d |  j j d |  j	 d d  | j d d d d d |  t  | d d } | j
 d d d |  j d d d d d |  j  | j
 d d d |  j d d d d d |  j  | j
 d d d |  j d d d d d |  j  | j
 d d d |  j d d d d d |  j  | j
 d d d |  j d d d d d |  j  | j d d  d d d |  t  | d d } | j d d! d d d |  j  | j d d" d d d |  | j d |  d  S(#   Nt   tearoffi    t   labelt   Exitt	   underlinei   Rb   t   acceleratort   qt   Filet   menuR   s   n, Spacet   Previouss   p, Backspacet   Actions   Remove Duplicatest   variablet   rt   Optionst   Tinyt   valuei
   t   Smalli   t   Mediumi   t   Largei   t   Hugei   t   Viewt   Aboutt   Help(   R   t   add_commandR|   t   add_cascadeR}   R~   t   add_checkbuttonR9   R7   t   _toggle_remove_duplicatest   add_radiobuttonRB   t   resizet   aboutRi   (   R*   Rn   t   menubart   filemenut
   actionmenut
   optionmenut   viewmenut   helpmenu(    (    s5   lib/python2.7/site-packages/nltk/sem/drt_glue_demo.pyR"   ļ   sn    							
		
		
		
		
c         C   s   |  j  } |  j d  k	 r( |  j j   n  |  j rY t |  j  |  j  |  _ |  j j   n  |  j r t |  j  |  j  |  _ |  j j   n  d  S(   N(   R'   R   R   t   clearR   t	   DrsWidgett   drawR    (   R*   R   (    (    s5   lib/python2.7/site-packages/nltk/sem/drt_glue_demo.pyR   ;  s    			c         G   s6   d |  _  |  j d  k r d  S|  j j   d  |  _ d  S(   Ni    (   R   R   R   R|   (   R*   t   e(    (    s5   lib/python2.7/site-packages/nltk/sem/drt_glue_demo.pyR|   N  s
    	c         G   s   |  j  j   } |  j  j   } | d k r t |  d k ry t | d  } | d k re |  j   q |  j | d  q |  j | d  n
 |  j   d  S(   Ni    i   (   Rt   t   curselectionR;   Rk   t   intt   _select_previous_examplet   _readingList_store_selection(   R*   R¾   t	   selectiont   readingListSizet   index(    (    s5   lib/python2.7/site-packages/nltk/sem/drt_glue_demo.pyR~   U  s    c         C   sD   |  j  d k r& |  j |  j  d  n |  j t |  j  d  d  S(   Ni    i   (   R   t   _exampleList_store_selectionRk   R   (   R*   (    (    s5   lib/python2.7/site-packages/nltk/sem/drt_glue_demo.pyRĮ   l  s    c         G   s   |  j  j   } |  j  j   } | d k r t |  d k r} t | d  } | | d k ri |  j   q |  j | d  q |  j d  n
 |  j   d  S(   Ni    i   (   Rt   Ræ   R;   Rk   RĄ   t   _select_next_exampleRĀ   (   R*   R¾   RĆ   RÄ   RÅ   (    (    s5   lib/python2.7/site-packages/nltk/sem/drt_glue_demo.pyR}   t  s    c         C   sD   |  j  t |  j  d k  r3 |  j |  j  d  n |  j d  d  S(   Ni   i    (   R   Rk   R   RĘ   (   R*   (    (    s5   lib/python2.7/site-packages/nltk/sem/drt_glue_demo.pyRĒ     s    c         G   s^   d d } d } y- d d l  m } | d | d |  j   Wn t |  j | |  n Xd  S(   Ns?   NLTK Discourse Representation Theory (DRT) Glue Semantics Demo
s   Written by Daniel H. Garrettes   About: NLTK DRT Glue Demoi’’’’(   t   Messaget   messageR   (   t   six.moves.tkinter_messageboxRČ   t   showR
   R   (   R*   R¾   t   ABOUTt   TITLERČ   (    (    s5   lib/python2.7/site-packages/nltk/sem/drt_glue_demo.pyR“     s    c         G   s   d |  _  |  j j   d  S(   Ni    (   R   R   t   print_to_file(   R*   R¾   (    (    s5   lib/python2.7/site-packages/nltk/sem/drt_glue_demo.pyt
   postscript   s    	c         O   s$   t    r d S|  j j | |   d S(   sń   
        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   t   mainloop(   R*   t   argst   kwargs(    (    s5   lib/python2.7/site-packages/nltk/sem/drt_glue_demo.pyRŠ   ¤  s    	c         C   sØ   | d  k	 r |  j j |  n  |  j j   } |  j j d t |   |  j j d t |   |  j j d t |   |  j	 j d t | d   |  j
   d  S(   NR;   i   (   R   RB   R   RD   RF   t	   configuret   absRE   R@   RG   R   (   R*   R;   (    (    s5   lib/python2.7/site-packages/nltk/sem/drt_glue_demo.pyR³   Æ  s    c         C   s   |  j  j |  j  _ |  j j d d  g  |  _ |  j   g  |  j D] } d  ^ qC |  _ d |  _	 d  |  _
 d  |  _ |  j   d  S(   Ni    R\   i’’’’(   R9   R7   Rg   t   selection_clearR   Ru   R   R   R   R   R    R   R   (   R*   t   ex(    (    s5   lib/python2.7/site-packages/nltk/sem/drt_glue_demo.pyR±   ¹  s    	
			c         C   s@   |  j  j   } t |  d k r% d  S|  j t | d   d  S(   Ni   i    (   Rg   Ræ   Rk   RĘ   RĄ   (   R*   R   RĆ   (    (    s5   lib/python2.7/site-packages/nltk/sem/drt_glue_demo.pyRm   Ę  s    c         C   s  | |  _  |  j | } |  j j d d  | r}|  j | } | r{ t | t  rf | |  _ d  |  _	 qMg  |  _ | |  _	 nŅ y2 |  j
 j |  |  _ d  |  _	 |  j |  j | <Wn t k
 rL} g  |  _ t t d t |    |  _	 |  j	 |  j | <|  j j |  |  j j | d |  |  j j d t t |  j  d  d d  n X|  j   |  j j |  d  |  _ |  j   n  d  S(	   Ni    R\   s   Error: s     %s *R]   i   R^   i(   (   R   R   Rg   RÕ   R   t
   isinstancet   listR   R   R    R9   t   parse_to_meaningt	   ExceptionR   R   t   strRv   Rh   Ri   Rj   Rk   Ru   t   selection_setR   R   (   R*   RÅ   R,   t   cacheR¾   (    (    s5   lib/python2.7/site-packages/nltk/sem/drt_glue_demo.pyRĘ   Ģ  s6    					#
	c         C   s@   |  j  j   } t |  d k r% d  S|  j t | d   d  S(   Ni   i    (   Rt   Ræ   Rk   RĀ   RĄ   (   R*   R   RĆ   (    (    s5   lib/python2.7/site-packages/nltk/sem/drt_glue_demo.pyRx   ņ  s    c         C   sb   |  j  | } |  j j d d  | r^ |  j j |  | j   j   j   |  _ |  j   n  d  S(   Ni    R\   (	   R   Rt   RÕ   RÜ   t   simplifyt	   normalizet   resolve_anaphoraR   R   (   R*   RÅ   t   reading(    (    s5   lib/python2.7/site-packages/nltk/sem/drt_glue_demo.pyRĀ   ų  s    N(   t   __name__t
   __module__R-   R!   R   R$   R%   Ru   R   R#   R)   R&   R"   R   R|   R~   RĮ   R}   RĒ   R“   RĻ   RŠ   R   R³   R±   Rm   RĘ   Rx   RĀ   (    (    (    s5   lib/python2.7/site-packages/nltk/sem/drt_glue_demo.pyR   #   s4   	)			"		
	
				L									
			&	R¼   c           B   s#   e  Z d    Z d   Z d   Z RS(   c         K   sX   | |  _  | |  _ t d | j | j d d d d d   | _ d | _ d |  _ d  S(   NR:   i    RO   t    i   (   i    i    i    i    (   R   R'   R   t   itemcgett   create_textR:   t   _BUFFERt   bbox(   R*   R   t   drst   attribs(    (    s5   lib/python2.7/site-packages/nltk/sem/drt_glue_demo.pyR-     s    		*	c         C   sE   t  |  j d |  j j   \ } } d d | d | d f |  _ d  S(   NR   i    i   (   R   R   R'   R½   Rč   (   R*   RZ   R   (    (    s5   lib/python2.7/site-packages/nltk/sem/drt_glue_demo.pyR½     s    $c         C   s#   |  j  j |  j d d d d d  S(   NRJ   RV   R^   t   0(   R'   t   create_rectangleRč   (   R*   (    (    s5   lib/python2.7/site-packages/nltk/sem/drt_glue_demo.pyR»     s    (   Rā   Rć   R-   R½   R»   (    (    (    s5   lib/python2.7/site-packages/nltk/sem/drt_glue_demo.pyR¼     s   			c          C   s)   d d d d d g }  t  |   j   d  S(   Ns
   John walkss   David sees Marys   David eats a sandwichs   every man chases a dogs   John chases himself(   R   RŠ   (   R+   (    (    s5   lib/python2.7/site-packages/nltk/sem/drt_glue_demo.pyt   demo  s    	t   __main__N(!   t   six.moves.tkinterR    R   R   R   R   R   R   R   t   six.moves.tkinter_fontR   t   nltk.draw.utilR	   R
   t   ImportErrort	   nltk.utilR   t   nltk.tagR   t
   nltk.parseR   t   nltk.sem.logicR   t   nltk.sem.drtR   R   t   nltk.sem.glueR   t   objectR   R¼   Rķ   Rā   (    (    (    s5   lib/python2.7/site-packages/nltk/sem/drt_glue_demo.pyt   <module>
   s"   :
’ ā	