m
fIc           @   sn  d  k  Z  d  k Z d  k Z d  k Z d k l Z d k Td  k Z d  k Z d  k	 Z	 d  k
 Z
 d  k Z d  k Z d  k Z d  k Z d  k Z d k l Z d  k Z d  k Z d  k Z d Z e d  Z d f  d     YZ d   Z d	   Z d  k Z e Z [ d
 f  d     YZ d   Z h  d d <d d <d d <Z d   Z  d   Z! d   Z" e# d j o e"   n d  S(   N(   s   count(   t   *(   s   idleConfi   c         C   s   d } x |  i d  D] } | d j	 o | i   n t i | |  \ } } } | d t i j o Pn t i | | | |  } y | i } Wq t j
 o t d | i  q Xq W| | | f S(   sC   Version of imp.find_module() that handles hierarchical module namest   .i   s   No source for module N(   t   Nonet   filet   fullnamet   splitt   tgtt   closet   impt   find_modulet   patht   filenamet   descrt	   PY_SOURCEt   load_modulet   modulet   __path__t   AttributeErrort   ImportErrort   __name__(   R   R
   R   R   R   R   R   (    (    t1   /mit/python/lib/python2.4/idlelib/EditorWindow.pyt   _find_module   s      t   EditorWindowc           B   s%  t  Z d k l Z d k l Z d k l Z d k l Z d  k Z d k l Z d k	 l	 Z	 d  Z d  d  d  d  d  Z d   Z d	   Z d  d
  Z dz d{ d| d} d~ d d g Z d   Z d   Z d  Z d   Z d g Z d   Z d  d  Z d  d   Z d  d!  Z d  d"  Z d#   Z d$   Z d%   Z d  d&  Z d  d'  Z d(   Z  d)   Z! d*   Z" d+   Z# d,   Z$ d-   Z% d.   Z& d  d/  Z' d  d0  Z( d  d1  Z) d2   Z* d3   Z+ d4   Z, d5   Z- d6   Z. d7   Z/ d8   Z0 d9   Z1 d:   Z2 d;   Z3 d<   Z4 d=   Z5 d  d>  Z6 d?   Z7 d@   Z8 dA   Z9 dB   Z: dC   Z; dD   Z< dE   Z= dF   Z> dG dH  Z? dI   Z@ dG dJ  ZA dK   ZB dL   ZC dM   ZD dN   ZE dO   ZF dP   ZG dQ   ZH dR   ZI dS   ZJ dT   ZK d  dU  ZL d  d  dV  ZM dW   ZN d  dX  ZO d  dY  ZP dZ   ZQ d[   ZR d\   ZS d]   ZT d^ ZU d_ ZV d` ZW d^ ZX d ZY dd   ZZ de df  Z[ dg   Z\ dh   Z] di   Z^ dj   Z_ dk   Z` dl   Za dm   Zb dn   Zc do   Zd dp   Ze dq   Zf dr   Zg ds   Zh dt   Zi du   Zj dv   Zk dw   Zl dx   Zm dy   Zn RS(   N(   s
   Percolator(   s   ColorDelegator(   s   UndoDelegator(   s	   IOBinding(   s   Toplevel(   s   MultiStatusBarc         C   s	  t  i d  j oot i i t i d d  } t i	 i
 d  oW d d t i d  } t i i d  o
 d } qd	 } t i i | | d d  } n t i	 d  d
 j oG t i i t i d d t i d   }	 t i i |	  o
 |	 } qn- t i	 d j o t i i t i d  } n t i i |  } t i i |  o1 | t  _ t i	 d j o d t  i t  _ q{qd t  _ n t i   } | |  _ | p | i } | |  _ t |  |  _ t i | d |  i |  _ } | o | i |  _ | i |  i _  n
 h  |  _ t i i t i!   d  |  _" t# | d d |  _$ } t% |  |  _& } t i' d d d  |  _( t) | d d d d d d d t i* | d d d  d! t i* | d d d" d# t i* | d$ d d  d% t i* | d$ d d" d& t i* | d' d d  d |  i( d( t i' d d d(  
|  _+ } |  i+ |  i _, |  i-   |  i.   |  i i/ d) |  i0  |  i i1 d* |  i2  | i1 d+ |  i3  | i1 d, |  i4  | i1 d- |  i5  | i1 d. |  i6  | i1 d/ |  i7  | i1 d0 |  i8  | i1 d1 |  i9  | i1 d2 |  i:  | i1 d3 |  i;  | i1 d4 d5    | i1 d6 |  i<  | i1 d7 |  i=  | i1 d8 |  i>  | i1 d9 |  i?  | i1 d: |  i@  | i1 d; |  iA  | i1 d< |  iB  | i1 d= |  iC  | i1 d> |  iD  | i1 d? |  iE  | i1 d@ |  iF  | i1 dA |  iG  | i1 dB |  iH  | i1 dC |  iI  | i1 dD |  iJ  | i1 dE |  iK  | i1 dF |  iL  | i1 dG |  iM  | i1 dH |  iN  | i1 dI |  iO  | i1 dJ |  iP dK   | i1 dL |  iP dM   | ox | | i |  <| o |  | iR | <n | i1 dN |  iS  | i1 dO |  i iT  | i1 dP |  iU  | i1 dQ |  iV  n |  iW   | iX | dR <| iY dS tZ dT t[  | i\ | dU <d } t i' d d dV dW dX o
 dY } n | i^ dZ t i' d d dZ  t i' d d d[  | f  | iY dS t_ dT t` d\ dM  | iY dS ta dT t` d\ dM  | ib   |  ic |  |  _d } |  ie |  o$ |  ig   |  _h } | ii |  n
 d  |  _h |  ij   |  _k } | ii |  | il | _l | im | _m | in |  io  |  ip |   |  _q } | ir |  is  t |  i  |  _t |  iu d] iv d d^ d_ d` dK d |  it |  iw   | oI t i ix |  o% t i i |  o | iy |  q| iz |  n |  io   |  i{   |  iu i| da  } | oh | i~ db  }
 |
 d  j o
 dc }
 n |
 dK j o | i   |
 dM }
 n |
 |  _ t i |  i  n t i |  _ t i |  _ t i |  _ |  i i dd  o! |  i dd i |  ie |   n d  S(e   Nt   Docs
   index.htmlt   linuxs   python-docs-s   %s.%s.%si   s   /var/www/html/python/s   /var/www/html/python/index.htmls   /usr/share/doc/t   wins   Python%d%d.chmi   t   darwins0   Resources/English.lproj/Documentation/index.htmls   file://s!   http://www.python.org/doc/currentt   menus   recent-files.lstt   namet   vbart   mainR   t   widtht   textt   padxi   t   wrapt   nonet
   foregroundt   normalt   fgBgt   fgt
   backgroundt   bgt   highlightcolort   hilitet   highlightbackgroundt   insertbackgroundt   cursort   heightt   WM_DELETE_WINDOWs   <<close-window>>s   <<cut>>s   <<copy>>s	   <<paste>>s   <<center-insert>>s   <<help>>s   <<python-docs>>s   <<about-idle>>s   <<open-config-dialog>>s   <<open-module>>s   <<do-nothing>>c         C   s   d S(   Nt   break(    (   t   event(    (    R   t   <lambda>   s    s   <<select-all>>s   <<remove-selection>>s   <<find>>s   <<find-again>>s   <<find-in-files>>s   <<find-selection>>s   <<replace>>s   <<goto-line>>s   <3>s   <<smart-backspace>>s   <<newline-and-indent>>s   <<smart-indent>>s   <<indent-region>>s   <<dedent-region>>s   <<comment-region>>s   <<uncomment-region>>s   <<tabify-region>>s   <<untabify-region>>s   <<toggle-tabs>>s   <<change-indentwidth>>s   <Left>i    s   <Right>i   s   <<open-new-window>>s   <<close-all-windows>>s   <<open-class-browser>>s   <<open-path-browser>>t   commandt   sidet   fillt   yscrollcommands	   font-boldt   typet   boolt   boldt   fonts	   font-sizet   expandR   t   labels   Recent Filest	   underlinet   windowst   endit
   AutoIndent(   R   t   help_urlR   t   osR
   t   joint   syst   prefixt   dochomet   platformt   countt   version_infot   pyvert   isdirt   basepatht   chmfilet   isfilet   normpatht   idleConft   CurrentThemet   currentThemet   flistt   selft   roott   Menut   menubart
   WindowListt   ListedToplevelt   topt   varst   tkinter_varst   inversedictt   instance_dictt   GetUserCfgDirt   recent_files_patht	   ScrollbarR   t   Framet
   text_framet	   GetOptionR   t   Textt   GetHighlightR    t   focused_widgett   createmenubart   apply_bindingst   protocolR   t   bindt   close_eventt   cutt   copyt   pastet   center_insert_eventt   help_dialogt   python_docst   about_dialogt   config_dialogt   open_modulet
   select_allt   remove_selectiont
   find_eventt   find_again_eventt   find_in_files_eventt   find_selection_eventt   replace_eventt   goto_line_eventt   right_menu_eventt   smart_backspace_eventt   newline_and_indent_eventt   smart_indent_eventt   indent_region_eventt   dedent_region_eventt   comment_region_eventt   uncomment_region_eventt   tabify_region_eventt   untabify_region_eventt   toggle_tabs_eventt   change_indentwidth_eventt   move_at_edge_if_selectiont   keyt   dictt   new_callbackt   close_all_callbackt   open_class_browsert   open_path_browsert   set_status_bart   yviewt   packt   RIGHTt   Yt   sett
   fontWeightt   configt   LEFTt   BOTHt   TOPt	   focus_sett
   Percolatort   pert   ispythonsourceR   t   ColorDelegatort   colort   insertfiltert   UndoDelegatort   undot   undo_block_startt   undo_block_stopt   set_saved_change_hookt   saved_change_hookt	   IOBindingt   iot   set_filename_change_hookt   filename_change_hookt   recent_files_menut   menudictt   insert_cascadet   update_recent_files_listt   existst   loadfilet   set_filenamet   load_extensionst   getR   t   indexR@   t   add_separatort	   wmenu_endt   register_callbackt   postwindowsmenut   tkMessageBoxt   askyesnot   tkSimpleDialogt
   askintegert	   showerrort
   extensionst   has_keyt   set_indentation_params(   RU   RT   R   R   RV   R   RM   R   R   RN   R@   R   R   RK   R    R   R   RS   RG   Rd   R[   (    (    R   t   __init__3   s"   
					"



7
	
'



	c         C   s)   |  i i   \ } } |  i i |  d S(   NR1   (   RU   R   t   defaultfilenamet   dirnamet   basenameRT   t   new(   RU   R2   R   R   (    (    R   R      s    c         C   s   |  i |  i  |  _ |  i i d d d t |  i i d d d t |  i i d t d t  |  i	 i
 d |  i  |  i	 i
 d |  i  |  i	 i |  i  d  S(	   Nt   columns   Col: ?R5   t   lines   Ln: ?R6   s   <KeyRelease>s   <ButtonRelease>(   RU   t   MultiStatusBarR[   t
   status_bart	   set_labelR   R   t   BOTTOMt   XR    Rl   t   set_line_and_columnt
   after_idle(   RU   (    (    R   R      s    c         C   sS   |  i i t  i d  \ } } |  i i d d |  |  i i d d |  d  S(   NR   R   s   Col: %sR   s   Ln: %s(	   RU   R    R   t   INSERTR   R   R   R   R   (   RU   R2   R   R   (    (    R   R      s    !R   t   _Filet   editt   _Editt   formatt   F_ormatt   runt   _Runt   optionst   _OptionsR?   t   _Windowst   helpt   _Helpc         C   s   |  i } h  |  _ } x_ |  i D]T \ } } t |  \ } } t	 | d | | | <} | i d | d | d |  q  W|  i   |  i d i t  |  _ |  i   d  S(   NR   R=   R   R>   R   (   RU   RX   t   mbarR   t
   menu_specsR   R=   t   prepstrR>   RW   R   t   add_cascadet
   fill_menusR   t   ENDt   base_helpmenu_lengtht   reset_help_menu_entries(   RU   R   R   R=   R   R   R>   (    (    R   Ri     s    	
  
c         C   so   |  i d } | i d  } | d  j o
 d } n | |  i j o | i |  i d |  n t i	 |  d  S(   NR?   R@   ii   (
   RU   R   R   R   R@   R   R   t   deleteRY   t   add_windows_to_menu(   RU   R   R@   (    (    R   R     s    
c         C   s   |  i i d d d  |  i i d d | i | i f  |  i p |  i   n |  i } | |  _ t	 i
 d  d j } | o |  i i d d	  n | i | i | i  | o |  i i d d
  n d  S(   Nt   sels   1.0R@   t   inserts   @%d,%di   R   R.   t   arrowt   ibeam(   RU   R    t
   tag_removet   mark_setR2   t   xt   yt   rmenut
   make_rmenuRE   RH   t   iswinR   t   tk_popupt   x_roott   y_root(   RU   R2   R   R   (    (    R   R     s    #
		t   Closes   <<close-window>>c         C   sd   t  |  i d d } x? |  i D]4 \ } } |  i | d  } | i d | d |  q W| |  _ d  S(   Nt   tearoffi    c         C   s   |  i |  d  S(   N(   R    t   event_generatet	   eventname(   R    R   (    (    R   R4   .  s    R=   R4   (	   RW   RU   R    R   t   rmenu_specsR=   R   R4   t   add_command(   RU   R   R=   R   R4   (    (    R   R   +  s    
 c         C   s   t  i |  i d  d  S(   Ns
   About IDLE(   t   aboutDialogt   AboutDialogRU   R[   (   RU   R2   (    (    R   Rt   3  s    c         C   s   t  i |  i d  d  S(   Nt   Settings(   t   configDialogt   ConfigDialogRU   R[   (   RU   R2   (    (    R   Ru   6  s    c         C   sG   t  i i t  i i t  i i t   d  } t i |  i
 d |  d  S(   Ns   help.txtt   Help(   RC   R
   RD   t   abspathR   t   __file__t   fnt   textViewt
   TextViewerRU   R[   (   RU   R2   R  (    (    R   Rr   9  s    -c         C   s<   t  i d  d j o t i |  i  n t i |  i  d S(   Ni   R   R1   (   RE   RH   RC   t	   startfileRU   RB   t
   webbrowsert   open(   RU   R2   (    (    R   Rs   =  s    c         C   s   |  i i d  d S(   Ns   <<Cut>>R1   (   RU   R    R   (   RU   R2   (    (    R   Rn   D  s    c         C   s   |  i i d  d S(   Ns   <<Copy>>R1   (   RU   R    R   (   RU   R2   (    (    R   Ro   H  s    c         C   s   |  i i d  d S(   Ns	   <<Paste>>R1   (   RU   R    R   (   RU   R2   (    (    R   Rp   L  s    c         C   s=   |  i i d d d  |  i i d d  |  i i d  d S(   NR   s   1.0s   end-1cR   R1   (   RU   R    t   tag_addR   t   see(   RU   R2   (    (    R   Rw   P  s    c         C   s*   |  i i d d d  |  i i d  d  S(   NR   s   1.0R@   R   (   RU   R    R   R  (   RU   R2   (    (    R   Rx   V  s    c            s7   |  i i  |  i i  d       d   } | S(   s   Cursor move begins at start or end of selection

        When a left/right cursor key is pressed create and return to Tkinter a
        function which causes a cursor move from the associated edge of the
        selection.

        s   sel.first+1cs   sel.last-1cc            sQ   |  i d @d j o9 y   d   d    WqM t j
 o qM Xn d  S(   Ni   i    s	   sel.firstR   (   R2   t   statet   self_text_indext   self_text_mark_sett   edges_tablet
   edge_indext   TclError(   R2   (   R  R  R  R  (    R   t   move_at_edgee  s    
N(   s   sel.first+1cs   sel.last-1c(   RU   R    R   R  R   R  R  R  (   RU   R  R  R  R  R  (    (   R  R  R  R  R   R   Z  s     c         C   s   t  i |  i  d S(   NR1   (   t   SearchDialogt   findRU   R    (   RU   R2   (    (    R   Ry   n  s    c         C   s   t  i |  i  d S(   NR1   (   R  t
   find_againRU   R    (   RU   R2   (    (    R   Rz   r  s    c         C   s   t  i |  i  d S(   NR1   (   R  t   find_selectionRU   R    (   RU   R2   (    (    R   R|   v  s    c         C   s    t  i |  i |  i |  i  d S(   NR1   (   t
   GrepDialogt   grepRU   R    R   RT   (   RU   R2   (    (    R   R{   z  s    c         C   s   t  i |  i  d S(   NR1   (   t   ReplaceDialogt   replaceRU   R    (   RU   R2   (    (    R   R}   ~  s    c         C   sz   |  i } t i d d d | } | d  j o d Sn | d j o | i   d Sn | i d d |  | i d  d  S(   Nt   Gotos   Go to line number:t   parentR1   i    R   s   %d.0(	   RU   R    R   R   t   linenoR   t   bellR   R  (   RU   R2   R    R  (    (    R   R~     s    		
c   	      C   sg  y |  i i d d  } Wn t j
 o d } n X| i   } t i d d d |  i d | } | o | i   } n | p d  Sn y" t |  \ } } \ } } } Wn> t t f j
 o, } t i d t |  d |  i d  Sn X| t i j o% t i d	 d
 | d |  i d  Sn | o | i   n |  i o |  i i |  n |  i i |  d  S(   Ns	   sel.firsts   sel.lastt    t   ModulesA   Enter the name of a Python module
to search on sys.path and open:R  t   initialvalues   Import errors   Unsupported types   %s is not a source module(   RU   R    R   R   R  t   stripR   t	   askstringR   t   fR   t   suffixt   modeR8   t	   NameErrorR   t   msgR   R   t   strR   R   R   RT   R
  R   R   (	   RU   R2   R   R%  R'  R   R)  R8   R&  (    (    R   Rv     s4    	"		
c         C   s   |  i i } | p. t i d d d |  i |  i i   d  Sn t i	 i
 |  \ } } t i	 i |  \ } } d  k } | i |  i | | g  d  S(   Ns   No filenames&   This buffer has no associated filenamet   master(   RU   R   R   R   R   R    R   R   RC   R
   R   t   headt   tailt   splitextt   baset   extt   ClassBrowserRT   (   RU   R2   R0  R1  R,  R   R-  R/  (    (    R   R     s    		c         C   s   d  k  } | i  |  i  d  S(   N(   t   PathBrowserRU   RT   (   RU   R2   R2  (    (    R   R     s    	c         C   so   | d  j	 o^ | d j oQ |  i i d d |  |  i i d d d  |  i i d d d  |  i   n d  S(   Ni    R   s   %d.0R   s   1.0R@   s
   insert +1l(   R  R   RU   R    R   R   R  t   center(   RU   R  (    (    R   t   gotoline  s
    c         C   s   | p t Sn t i i t i i |   \ } } t i i |  d j o t Sn y& t	 |  } | i   } | i   Wn t j
 o t Sn X| i d  o | i d  d j S(   Ns   .pys   .pyws   #!t   pythoni    (   s   .pys   .pyw(   R   t   TrueRC   R
   R.  R   R/  R0  t   normcaseR
  R%  t   readlineR   R   t   IOErrort   Falset
   startswithR  (   RU   R   R%  R0  R/  R   (    (    R   R     s    $	c         C   s"   |  i o |  i i |   n d  S(   N(   RU   RT   t
   close_edit(   RU   (    (    R   t
   close_hook  s    
c         C   s   | |  _  d  S(   N(   R=  RU   (   RU   R=  (    (    R   t   set_close_hook  s    c         C   sj   |  i o |  i i |   n |  i   |  i i |   |  i |  i i  o |  i	   n |  i
   d  S(   N(   RU   RT   t   filename_changed_editR   R[   t   update_windowlist_registryR   R   R   t   addcolorizert   rmcolorizer(   RU   (    (    R   R     s    

c         C   s^   |  i o d  Sn |  i i |  i  |  i   |  _ |  i i |  i  |  i i |  i  d  S(   N(   RU   R   R   t   removefilterR   R   R   (   RU   (    (    R   RA    s    
c         C   sX   |  i p d  Sn |  i i |  i  |  i i |  i  d  |  _ |  i i |  i  d  S(   N(   RU   R   R   RC  R   R   R   (   RU   (    (    R   RB    s    
	c         C   se   |  i o& |  i   |  _ |  i i |  i  n t i d d d  } |  i i	 t i
 | d   d S(   s(   Update the colour theme if it is changedR   t   ThemeR   R%   N(   RU   R   R   R   R   RQ   Re   t   themeR    R   Rg   (   RU   RE  (    (    R   t   ResetColorizer  s     
c         C   sj   d } t i d d d d d o
 d } n |  i i d t i d d d  t i d d d	  | f  d
 S(   s.   Update the text widgets' font if it is changedR%   R   R   s	   font-boldR8   R9   R:   R;   s	   font-sizeN(   R   RQ   Re   RU   R    R   (   RU   R   (    (    R   t	   ResetFont   s
     
c         C   s  t  i   |  i _ |  i i }
 x* |
 i   D] \ } } |  i	 i
 |  q+ W|  i   h  } xf |  i i D]X } h  | | d <xA | d D]5 } | o( | d | | d t | d  d <q q Wqh Wx|  i i   D] } |  i | } | i t  d } x t d |  D] } | i |  d j o | i | d  } | o | i | d  }	 d } | i |  o* | | i |	  o | | |	 } qn | o& t |
 |  } | i | d | qqq
q
Wq Wd S(   s*   Update the keybindings if they are changedi    i   R4   t   acceleratorR=   R   N(   RQ   t   GetCurrentKeySetRU   t   Bindingst   default_keydefst   keydefst   itemsR2   t   keylistR    t   event_deleteRj   t   menuEventDictt   menudefsR   t   itemR   R   t   keyst   menubarItemR   R   R@   t   rangeR8   t	   entrycgett   accelt   itemNameR   t   get_acceleratort   entryconfig(   RU   R@   RT  R   R   RW  R2   RR  RN  RX  RL  RP  (    (    R   t   ResetKeybindings
  s@      
  0  c         C   s   t  i   } |  i d } | i t  } | |  i	 j o | i
 |  i	 d |  n | oL | i   x? | D]3 } |  i | d  } | i d | d d |  qk Wn | |  i d <d S(   s3   Update the additional help entries on the Help menuR   i   R=   i    R4   N(   RQ   t   GetAllExtraHelpSourcesListt	   help_listRU   R   t   helpmenuR   R   t   helpmenu_lengthR   R   R   t   entryt"   _EditorWindow__extra_help_callbackt   cmdR   (   RU   Rb  R]  R^  R`  R_  (    (    R   R   )  s     
 "c         C   s   | d  } | S(   sC   Create a callback with the helpfile value frozen at definition timec         C   sl   |  i d  p |  i d  p t i i |   } n t i d  d j o t i |   n t	 i
 |   d  S(   Nt   wwwt   httpi   R   (   t   helpfileR;  RC   R
   RP   t   urlRE   RH   R  R	  R
  (   Re  Rf  (    (    R   t   display_extra_help<  s
     N(   Re  Rg  (   RU   Re  Rg  (    (    R   t   __extra_help_callback:  s     c      	   C   s  g  }	 t i i |  i  o4 t |  i d  } z | i   }	 Wd | i	   Xn | oH t i i |  d } | |	 j o |	 i |  n |	 i d |  n g  } xG |	 D]? } d | j p t i i | d d ! o | i |  q q Wg  } |	 D] } | | j o | | q q ~ }	 d }
 |	 d t |
  !}	 t |  i d  } z | i |	  Wd | i	   Xx |  i i i   D] } | i } | i d	 t  xd t t   |	  D]P \ } } | d d !} | i" |  } | i$ d
 |
 | d | d | d d  qWq~Wd S(   s/   Load and update the recent files list and menust   rNs   
i    t    it   1234567890ABCDEFGHIJKt   wi   R=   t    R4   R>   (%   t   rf_listRC   R
   R   RU   Ra   R
  t   rf_list_filet	   readlinesR   t   new_fileR  t   removeR   t	   bad_pathst   appendt   _[1]t   ulcharst   lent   rf_filet
   writelinesR[   R_   RS  t   instanceR   R   R   R   t   zipRI   t   iR   t	   file_namet#   _EditorWindow__recent_file_callbackt   callbackR   (   RU   Rq  Ru  R|  R   R}  Ro  Rz  R  Rn  Rv  R   R
   Rs  Rx  (    (    R   R   E  sJ       (2  	 c            s   |   d  } | S(   Nc            s     i i d |   d  S(   Nt   editFile(   RU   R   R
  t
   fn_closure(   R  (   RU   (    R   t   open_recent_filel  s    (   R}  R  (   RU   R}  R  (    (   RU   R   t   __recent_file_callbackk  s    c         C   s   |  i   } |  i   } | o | o | d | } n) | o
 | } n | o
 | } n d } | p | p | } |  i   p d | } d | } n |  i i	 |  |  i i
 |  d  S(   Ns    - t   Untitleds   *%s*s   *%s(   RU   t   short_titlet   shortt
   long_titlet   longt   titlet   icont	   get_savedR[   t   wm_titlet   wm_iconname(   RU   R  R  R  R  (    (    R   R   p  s    


c         C   s   |  i i   S(   N(   RU   R   R  (   RU   (    (    R   R    s    c         C   s   |  i i |  d  S(   N(   RU   R   t	   set_savedt   flag(   RU   R  (    (    R   R    s    c         C   s   |  i i   d  S(   N(   RU   R   t
   reset_undo(   RU   (    (    R   R    s    c         C   s-   |  i i } | o t i i |  } n | S(   N(   RU   R   R   RC   R
   R   (   RU   R   (    (    R   R    s    c         C   s   |  i i p d S(   NR   (   RU   R   R   (   RU   (    (    R   R    s    c         C   s   |  i   d  S(   N(   RU   R3  (   RU   R2   (    (    R   Rq     s    R   c         C   sb   |  i } |  i   \ } } |  i |  } | | } t	 d | | d  } | i t |   d  S(   Ni   i   (   RU   R    t   getwindowlinesR[   t   bott	   getlinenot   markR  R/   t   maxt   newtopR   t   float(   RU   R  R    R  R  R/   R[   R  (    (    R   R3    s    	
c         C   ss   |  i } |  i d  } |  i d  } | | j o5 | i   d j o" t | d  } | | d } n | | f S(   Ns   @0,0s   @0,65535i   R/   (   RU   R    R  R[   R  t   winfo_heightt   intR/   (   RU   R    R  R/   R[   (    (    R   R    s    	 c         C   s"   |  i } t t | i |    S(   N(   RU   R    R  R  R   R  (   RU   R  R    (    (    R   R    s    	c         C   s:   |  i i   } t i d |  } t t | i	    } | S(   s   Return (width, height, x, y)s   (\d+)x(\d+)\+(-?\d+)\+(-?\d+)N(   RU   R[   t   wm_geometryt   geomt   ret   matcht   mt   mapR  t   groupst   tuple(   RU   R  R  R  (    (    R   t   get_geometry  s
     c         C   s   |  i   d  S(   N(   RU   R   (   RU   R2   (    (    R   Rm     s    c         C   sq   |  i oc |  i   pE |  i i   d j o |  i i   n |  i i   |  i i   n |  i i   Sn d  S(   NR%   (	   RU   R   R  R[   R  t	   deiconifyt   lowert   liftt	   maybesave(   RU   (    (    R   R    s    
c         C   s+   |  i   } | d j o |  i   n | S(   Nt   cancel(   RU   R  t   replyt   _close(   RU   R  (    (    R   R     s    c         C   s  |  i i o |  i d |  i i  n t i |  i  |  i o |  i   n d  |  _	 d } |  i   |  i i   d  |  _ d  |  _ |  i o0 |  i i
 } | o |  i } |  i i |  n d  |  _ d  |  _ |  i i   d  |  _ | p |  i i   n d  S(   NRq  i    (   RU   R   R   R   RY   t   unregister_callbackR   R=  R   RT   t
   colorizingt   unload_extensionsR   R   R   R[   t   dohR    R]   R   t   destroy(   RU   R  R  (    (    R   R    s&    
	
	
		c         C   s   h  |  _ |  i   d  S(   N(   RU   R   t   load_standard_extensions(   RU   (    (    R   R     s    	c         C   sE   x5 |  i i   D]$ } t | d  o | i   q q Wh  |  _ d  S(   NR   (   RU   R   t   valuest   inst   hasattrR   (   RU   R  (    (    R   R    s
     c         C   sX   xQ |  i   D]C } y |  i |  Wq d Gt |  GHd  k } | i   q Xq Wd  S(   Ns   Failed to load extension(   RU   t   get_standard_extension_namesR   t   load_extensiont   reprt	   tracebackt	   print_exc(   RU   R  R   (    (    R   R    s     	c         C   s   t  i d t  S(   Nt   editor_only(   RQ   t   GetExtensionsR6  (   RU   (    (    R   R    s    c         C   se  y t  | t   t   g   } Wn  t j
 o d G| GHd  Sn Xt | |  } t	 i
 |  } t | d  o |  i | i |  n | |   } | |  i | <| o |  i |  x | i   D] } | i d d  } x  | d  d j o | d } q Wx  | d d j o | d  } q W| d	 } t | |  o  |  i i | t | |   q q Wn | S(
   Ns   
Failed to import extension: RQ  t   -t   _i   t   <it   >t   _event(   t
   __import__R   t   globalst   localst   modR   R   t   getattrt   clsRQ   t   GetExtensionBindingsRL  R  RU   R   RQ  R  R   Rj   RS  t   veventR  t
   methodnameR    Rl   (   RU   R   R  R  R  RL  R  R  (    (    R   R    s4    		   
(c         C   sk   | d  j o |  i i } n |  i } | | _  x5 | i   D]' \ } } | o | i	 | |  q< q< Wd  S(   N(
   RL  R   RU   RJ  RK  R    RM  R2   RN  t	   event_add(   RU   RL  R    R2   RN  (    (    R   Rj   
  s    		 c         C   sr  | d	 j o |  i i  } n | d	 j o |  i i } n |  i }
 |  i } x| D]\ } } |
 i
 |  } | p qS n x | D] } | p | i   q | \ } } | d  d j } | o | d } n t |  \ } } t | |  } | | d  }	 | o> |  i | t  } | i d | d | d |	 d | d |  q | i d | d | d |	 d |  q WqS Wd	 S(
   s   Add appropriate entries to the menus and submenus

        Menus that are absent or None in self.menudict are ignored.
        i   t   !c         C   s   |  i |  d  S(   N(   R    R   R   (   R    R   (    (    R   R4   ,  s    R=   R>   R4   RH  t   variableN(   RQ  R   RU   RJ  RL  RK  R   R    t   mnamet	   entrylistR   R   R`  R   R=   R   t   checkbuttonR   R>   RY  RH  R4   t   get_var_objt
   BooleanVart   vart   add_checkbuttonR   (   RU   RQ  RL  RH  R    R   R  R=   R   R4   R   R  R  R`  R  R>   (    (    R   R     s>     		  c         C   s7   |  i |  } | o | i   } | Sn
 t |  d  S(   N(   RU   R  R   R  R   t   valueR(  (   RU   R   R  R  (    (    R   t   getvar8  s
    c         C   s7   |  i | |  } | o | i |  n
 t |  d  S(   N(   RU   R  R   t   vartypeR  R   R  R(  (   RU   R   R  R  R  (    (    R   t   setvar@  s    c         C   sC   |  i i |  } | o% | o | |  i  |  i | <} n | S(   N(   RU   R]   R   R   R  R  R    (   RU   R   R  R  (    (    R   R  G  s    c         C   sB   |  i o0 |  i i d |  p d |  i i |  j Sn d Sd  S(   Nt   TODOt   STRINGi   (   RU   R   R    t   tag_prevranget
   text_indext	   tag_names(   RU   R  (    (    R   t   is_char_in_stringW  s    
0c         C   sP   y2 |  i i d  } |  i i d  } | | f SWn t j
 o d Sn Xd  S(   Ns	   sel.firsts   sel.last(   NN(   RU   R    R   t   firstt   lastR  R   (   RU   R  R  (    (    R   t   get_selection_indicesc  s    c         C   s   |  i d p t } t |  S(   Nt   tabs(   RU   R    t   TK_TABWIDTH_DEFAULTt   currentR  (   RU   R  (    (    R   t   get_tabwidthn  s    c         C   s`   |  i } |  i   | j o@ | i i d d | d d | i d |  } | i d |  n d  S(   NR;   t   measures
   -displayoft   nR  (	   RU   R    R  t   newtabwidtht   tkt   callR+  t   pixelst	   configure(   RU   R  R    R  (    (    R   t   set_tabwidtht  s    		i    i   i   i2   i  i@KL c         K   s   x | i   D] \ } } | d j o | |  _ q | d j o | |  _ q | d j o | |  _ q | d j o | |  _ q t	 d | f  q Wd  S(   Nt   usetabst   indentwidtht   tabwidtht   context_use_ps1s   bad option name: %r(
   R   RM  R   R  RU   R  R  R  R  t   KeyError(   RU   R   R  R   (    (    R   R     s     i   c         C   s}   | ob | o[ |  i   } d | j o
 d j n o | |  _ n |  i |  i j o d |  _ qi n |  i |  i  d  S(   Ni   i   i    (	   t   guessR   RU   t   guess_indentR|  R  R  R  R  (   RU   R   R  R|  (    (    R   R     s    c         C   s  |  i } |  i   \ }
 } |
 o/ | o( | i |
 |  | i d |
  d Sn | i d d  } | d j o9 | i	 d d d  o | i d  n | i
   d Sn | d d	 j o | i d  d Sn |  i } t | i |   }	 |	 d
 |  i |  i } t i i d  d } d } xc | | j o Pn | d  } | d
 } t | i |   }	 |	 | j p | d d	 j o Pq$q$W| i   | i d | d  |	 | j  o | i d d | |	  n | i   d S(   NR   R1   s   insert linestartR   R  s   1.0s	   insert-1cis    	i   s   
i    s
   insert-%dcRm  (   RU   R    R  R  R  R   R   R   t   charst   compareR  R  Rw  t
   expandtabst   haveR  t   wantRE   t   ps1R   t   last_line_of_promptt   ncharsdeletedR   R   R   (   RU   R2   R  R  R    R  R  R  R  R  R  (    (    R   R     sH    	
	   




c   
      C   sT  |  i } |  i   \ }	 } | i   z|	 oU | oN t |	  t |  j o |  i |  Sn | i	 |	 |  | i
 d |	  n | i d d  } t | |  i  \ } } | t |  j o |  i | |  i  nX |  i o
 d } n4 t | i |  i   } |  i } d | | | } | i d |  | i d  d SWd  | i   Xd  S(   NR   s   insert linestarts   	Rm  R1   (   RU   R    R  R  R  R   t
   index2lineR   R2   R   R   R   RF   t
   classifywsR  t   rawt	   effectiveRw  t   reindent_toR  R  t   padR  R  R   R  R   (
   RU   R2   R  R  R    R  R  RF   R  R  (    (    R   R     s.    	


	 c         C   s  |  i } |  i   \ } } | i   ze| o+ | o$ | i | |  | i d |  n | i d d  }	 d t
 |	  } } x- | | j  o |	 | d j o | d } q W| | j o | i d d  d Sn |	 |  } d } t i i d  d } x> |	 o6 |	 d d j o% |	 | j o |	 d  }	 | d } q W| o | i d	 | d  n x( | i d  d j o | i d  q]W| i d d  t | i d   } t i |  i |  i  } x |  i D] } t | | d  } t |  d
 } | i | d  } | i" |  | i# |  i$ |  i% |   } | d  j	 p | d j o PqqW| i( | p d  | i)   }
 |
 t i+ j o |
 t i, j o | i d |  nv |
 t i- j o |  i. | i/    nO |
 t i0 j o> | i1   d j o | i d |  q|  i. | i2    n d Sn | i3   } | i d |  | i4   o |  i5 |  n& | o | i7   o |  i8 |  n d SWd  | i9 d  | i:   Xd  S(   NR   s   insert linestarti    s    	i   s   
R1   is   insert - %d charss   .0(;   RU   R    R  R  R  R   R   R   R   R   Rw  R|  R  R   t   indentRE   R  R   R  R  R   t   lnot   PyParset   ParserR  R  R   t   num_context_linest   contextR  t   startatR  t   startatindext   rawtextt   set_strt   find_good_parse_startR  t   _build_char_in_string_funct   bodR   t   set_lot   get_continuation_typet   ct   C_NONEt   C_STRINGt	   C_BRACKETR  t   compute_bracket_indentt   C_BACKSLASHt   get_num_lines_in_stmtt   compute_backslash_indentt   get_base_indent_stringt   is_block_openerR   R2   t   is_block_closerR   R  R   (   RU   R2   R    R  R   R  R  R  R  R   R  R  R|  R  R  R   R  R  (    (    R   R     s~    	
 
 %
 
 	  c         C   s   | |  i d  } | S(   Nc         C   s   | | d |   S(   Ns   +%dc(   t   _icist   _startindext   offset(   R  R  R  (    (    R   t   innera  s    (   t
   startindexRU   R  R  (   RU   R  R  (    (    R   R  `  s    c   
      C   s   |  i   \ } } } } xo t t |   D][ } | | }	 |	 oD t
 |	 |  i  \ } } | |  i } |  i |  |	 | | | <q+ q+ W|  i | | | |  d S(   NR1   (   RU   t
   get_regionR,  R-  R  t   linesRU  Rw  t   posR   R  R  R  R  R  t   _make_blankst
   set_region(
   RU   R2   R,  R  R  R   R!  R  R-  R   (    (    R   R   f  s     
#c   
      C   s   |  i   \ } } } } xx t t |   D]d } | | }	 |	 oM t
 |	 |  i  \ } } t | |  i d  } |  i |  |	 | | | <q+ q+ W|  i | | | |  d S(   Ni    R1   (   RU   R  R,  R-  R  R   RU  Rw  R!  R   R  R  R  R  R  R  R"  R#  (
   RU   R2   R,  R  R  R   R!  R  R-  R   (    (    R   R   q  s     
#c         C   sk   |  i   \ } } } } x6 t t |  d  D] } | | } d | | | <q/ W|  i
 | | | |  d  S(   Ni   s   ##(   RU   R  R,  R-  R  R   RU  Rw  R!  R   R#  (   RU   R2   R,  R  R   R!  R-  R   (    (    R   R   |  s     
c         C   s   |  i   \ } } } } xz t t |   D]f } | | } | p q+ n | d  d j o | d } n  | d  d j o | d } n | | | <q+ W|  i
 | | | |  d  S(   Ni   s   ##i   t   #(   RU   R  R,  R-  R  R   RU  Rw  R!  R   R#  (   RU   R2   R,  R  R   R!  R-  R   (    (    R   R     s     
c         C   s   |  i   \ } }	 } } |  i   }
 xw t t	 |   D]c } | | } | oL t | |
  \ } } t | |
  \ } } d | d | | | | | <q7 q7 W|  i | |	 | |  d  S(   Ns   	Rm  (   RU   R  R,  R-  R  R   t   _asktabwidthR  RU  Rw  R!  R   R  R  R  t   divmodt   ntabst   nspacesR#  (   RU   R2   R(  R,  R  R  R   R!  R  R-  R  R   R'  (    (    R   R     s     
&c         C   sr   |  i   \ } } } } |  i   } x1 t t	 |   D] } | | i |  | | <q7 W|  i | | | |  d  S(   N(   RU   R  R,  R-  R  R   R%  R  RU  Rw  R!  R  R#  (   RU   R2   R,  R  R   R!  R-  R  (    (    R   R     s     c         C   s@   |  i d d d |  i d d |  i o |  i |  _ n d S(	   Ns   Toggle tabss
   Turn tabs t   ont   offt   ?R  R1   (   s   ons   off(   RU   R   R  R    (   RU   R2   (    (    R   R     s
    	c         C   s@   |  i   } | |  i j o  | |  _ |  i d d d n d S(   Ni    R  R1   (   RU   R%  R   R  R   (   RU   R2   R   (    (    R   t   change_tabwidth_event  s
    	c         C   sX   |  i d d d |  i d |  i d d d d } | o | |  i j o | |  _ n d	 S(
   Ns   Indent widths   New indent width (2-16)R  R"  t   minvaluei   t   maxvaluei   R1   (   RU   R   R    R  R   (   RU   R2   R   (    (    R   R     s    			c         C   s   |  i } |  i   \ } } | o1 | o* | i | d  } | i | d  } n | i d  } | i d  } | i | |  } | i
 d  } | | | | f S(   Ns
    linestarts   -1c lineend +1cs   insert linestarts   insert lineend +1cs   
(   RU   R    R  R  R  R   R,  R-  R   R  R   R   (   RU   R,  R  R    R   R-  R  R  (    (    R   R    s    	c         C   s   |  i } d i |  } | | j o | i   d  Sn | i d d d  | i d |  | i
   | i | |  | i | |  | i   | i d | d  d  S(   Ns   
R   s   1.0R@   R   (   RU   R    RD   R   t   newcharsR  R  R   R   R,  R   R   R-  R   R   R  (   RU   R,  R-  R  R   R    R/  (    (    R   R#    s    	


c         C   sB   |  i o, t | |  i  \ } } d | d | Sn	 d | Sd  S(   Ns   	Rm  (   RU   R  R&  R  R  R'  R(  (   RU   R  R(  R'  (    (    R   R"    s    
c         C   so   |  i } | i   | i d d d  o | i d d  n | o | i d |  i |   n | i   d  S(   Ns   insert linestarts   !=R   (	   RU   R    R   R  R   R   R   R"  R   (   RU   R   R    (    (    R   R    s    	
c         C   s8   |  i d d d |  i d |  i d d d d p |  i S(	   Ns	   Tab widths   Spaces per tab? (2-16)R  R"  R-  i   R.  i   (   RU   R   R    R  R  (   RU   (    (    R   R%    s    			c         C   su   t  |  i |  i  i   \ } } | o; | o4 t | |  i  \ } } t | |  i  \ } } n d } } | | S(   Ni    (   t   IndentSearcherRU   R    R  R   t   openert   indentedR  R  t   indentsmallt   indentlarge(   RU   R2  R4  R  R1  R3  (    (    R   R    s    !
(   s   fileR   (   s   editR   (   R   R   (   s   runR   (   s   optionsR   (   s   windowsR   (   s   helpR   (   R   s   <<close-window>>(   i2   i  i@KL (o   R   t
   __module__R   R   R   R   RJ  t   Tkintert   ToplevelR   R   RB   R   R   R   R   R   Ri   R   R   R   R   R   Rt   Ru   Rr   Rs   Rn   Ro   Rp   Rw   Rx   R   Ry   Rz   R|   R{   R}   R~   Rv   R   R   R4  R   R=  R>  R   RA  RB  RF  RG  R[  R   Ra  R   R~  R   R  R  R  R  R  Rq   R3  R  R  R  Rm   R  R   R  R   R  R  R  R  Rj   R   R  R  R  R  R  R  R  R  R  R  R  R  R   R   R   R   R   R  R   R   R   R   R   R   R   R,  R   R  R#  R"  R  R%  R  (    (    (    R   R   (   s   				
		
													!					
					
			&									
													%						
	-	!	\														
			c         C   s   t  t |    S(   N(   R  R  R   (   R   (    (    R   R    s    c         C   sx   d } } xa |  D]Y } | d j o | d } | d } q | d j o  | d } | | d | } q Pq W| | f S(   Ni    Rm  i   s   	(   R  R  t   st   chR  (   R8  R  R9  R  R  (    (    R   R    s    
 

R0  c           B   s;   t  Z d   Z d   Z e i e i d d	  Z d
   Z RS(   Nc         C   s6   | |  _  | |  _ d |  _ |  _ d  |  _ |  _ d  S(   Ni    (   R    RU   R  R|  t   finishedR   t   blkopenlinet   indentedline(   RU   R    R  (    (    R   R   &  s    		c         C   sn   |  i o d Sn |  i d } |  _ t |  d } |  i i | d d  o d Sn |  i i | | d  S(   NR   i   s   .0s   >=R@   s    lineend+1c(   RU   R:  R|  R  R  R    R  R   (   RU   R|  R  (    (    R   R8  ,  s    
t   classt   deft   fort   ift   tryt   whilec	   	      C   sf   |  i o nU | | j o | | j o | |  _ n. | | j o  |  i o | |  _	 d |  _ n d  S(   Ni   (
   RU   R:  R8   t   NAMEt   tokent   OPENERSR   R;  t   INDENTR<  (	   RU   R8   RD  t   startR@   R   RF  RC  RE  (    (    R   t
   tokeneater5  s    
	c         C   si   t  i } |  i t  _ z7 y t  i |  i |  i  Wn t  i j
 o n XWd  | t  _ X|  i	 |  i
 f S(   N(   t	   _tokenizet   tabsizet   save_tabsizeRU   R  t   tokenizeR8  RH  t
   TokenErrorR;  R<  (   RU   RK  (    (    R   R   A  s    		 
(   R=  R>  R?  R@  RA  RB  (	   R   R5  R   R8  RI  RF  RC  RH  R   (    (    (    R   R0    s   			c         C   s@   |  i d  } | d j o |  |  |  | d }  n | |  f S(   NR  i    i   (   R8  R  R|  (   R8  R|  (    (    R   R   Q  s    t   bracketleftt   [t   bracketrightt   ]t   slasht   /c         C   s   |  i |  } | p d Sn | d } t i d d   |  } t i d d   |  } t i d d |  } t i d d	 |  } t i d
 d |  } t i d d |  } t i d d |  } t i d d |  } t i d d |  } | S(   NR   i    s   -[a-z]\bc         C   s   |  i   i   S(   N(   R  t   groupt   upper(   R  (    (    R   R3   e  s    s   \b\w+\bc         C   s   t  i |  i   |  i    S(   N(   t   keynamesR   R  RT  (   R  (    (    R   R3   f  s    s   Key-t   Cancels
   Ctrl-Breaks   Control-s   Ctrl-R  t   +s   ><Rm  R  R  (   RL  R   R   RN  R8  R  t   sub(   RL  R   R8  RN  (    (    R   RY  `  s    
c         C   sF   |  i } | i d d d  | i d d d  | i d d d  d  S(	   Nt   tcl_wordBreakAfters   a bi    R   t   tcl_wordcharss   [a-zA-Z0-9_]t   tcl_nonwordcharss   [^a-zA-Z0-9_](   RV   R  R  (   RV   R  (    (    R   t   fixwordbreaksq  s    	c          C   s   t    } t |  | i   t i d o t i d } n d  } t d | d |  }  |  i
 | i  | i   | i   d  S(   Ni   RV   R   (   t   TkRV   R]  t   withdrawRE   t   argvR   R   R   R   R>  t   quitt   mainloopR  (   R   R   RV   (    (    R   t   testz  s    	


t   __main__($   RE   RC   R  R   t	   itertoolsRI   R6  R   R   R	  t   idleverRY   R  R  R  R  t   configHandlerRQ   R   R  R   R  R   R   R   R  R  RL  RI  R0  R   RV  RY  R]  Rc  R   (   R  R]  RY  R   R  R  R   R   RI  RY   RL  Rc  Rf  R   R  R  R   RE   R	  R  R0  RI   R  R  R   R  RV  R   RQ   R   RC   (    (    R   R+     sH   													    			2		!				