
    u2ee                     &   d Z dZdZdZddlZej        ej        cZZej	        ej
        cZ	Z
 edddd	
          Z edddd          Z eddddddddddddd          ZddddZd Zd! Z G d" d#e          Z G d$ d%ej                  Z G d& d'e          Z G d( d)ej        e          Z G d* d+ej        e          Z G d, d-ej        e          Z G d. d/ej        e          Z G d0 d1ej                  Z G d2 d3ej                  Z G d4 d5ej        e          Z G d6 d7ej                  Z G d8 d9ej                  Z G d: d;ej                  Z G d< d=ej                  Z G d> d?e           Z! G d@ dAe          Z"dDdCZ#dS )Ez@ezTK : a toolbox for easy development of Tk-based user-interfacezChristophe Schlickz2.0z
2022-02-01    Ntopbottomleftright)SNEWvertical
horizontal)r   r   r	   r
   centernsewnenwsesweneswnws)Cr   r   r	   r
   NENWSESWENESWNWSLMBMMBRMB)         )
)   r#   )i   r$   )i   r%   )i   Alt)i   Ext)r&   Shift)r'   	Caps_Lock)   Control)   Num_Lock)    Scroll_Lockc                 f    |                                 D ]\  }}|                     ||           dS )z4merge 'current' dictionary with 'default' dictionaryN)items
setdefault)currentdefaultkeyvals       :/net/cremi/pblasi100p/espaces/www/pai/python/EXP-C/ezTK.py_merger<      s7    --//>>hc37#5#5c##>#>#>#>>>    c                   n    e Zd ZdZd Zed             Zedd            Zej        d             ZddZ	dS )	_MultizDinterface class to enable multi-state for standard widget propertiesc           	         d\  | _         | _        | _        | _        d|v r+t	          |d         t
                    r|d         | _         |d= d|v r+t	          |d         t
                    r|d         | _        |d= d|v r+t	          |d         t
                    r|d         | _        |d= d|v r+t	          |d         t
                    r|d         | _        |d= t          t          t          | j         | j        | j        | j        f                    | _	        |
                    |           d|v rt          |d                  |d<    | j        di |  | |           dS )	z4store multiple values for selected widget properties) rA   rA   rA   textimagebgfganchorNrA   )_text_image_bg_fg
isinstancetuplemaxmaplen_statesupdate_anchorconfig)selfstatekeyspropss       r;   __init__z_Multi.__init__   sH   2@/DJTXtx~~*T&\599~<djT&\$:d7mU;;MdktG}t||
4:u55|ddhdt||
4:u55|ddhds3
DK48LMMNNDL	LL5GE(O,D%/DK%$$u+++++r=   c                     | j         S )zgetter for number of states)rP   rT   s    r;   statesz_Multi.states-   s     <r=   Nc                     | j         S  getter for widget state property)_staterT   rU   s     r;   rU   z_Multi.state2   s     ;r=   c                    | j         r%| j         |t          | j                   z           | d<   | j        r%| j        |t          | j                  z           | d<   | j        r%| j        |t          | j                  z           | d<   | j        r%| j        |t          | j                  z           | d<   d|                                 v r| d         | d<   d|                                 v r| d         | d<   || _        d	S )
 setter for widget state propertyrB   rC   rD   rE   activebackground
activebackactiveforeground
activeforeN)rG   rO   rH   rI   rJ   rV   r_   r`   s     r;   rU   z_Multi.state7   s     zE$*US__-D"E4<{IDKDK8H8H0H$IDMx=dhus48}}'<=dx=dhus48}}'<=dTYY[[((tDz$|*<TYY[[((tDz$|*<DKKKr=   c                 &    || j         S || _         dS zget or set current widget stateNrU   r`   s     r;   __call__z_Multi.__call__B       }TZ'$***r=   N)
__name__
__module____qualname____doc__rX   propertyr[   rU   setterrj   rA   r=   r;   r?   r?      s        LL& & &    8    8 	<  <     r=   r?   c                   @    e Zd ZdZ	 	 d	dZd Zd Zed             ZdS )
Frame...NFTc                    | ddg f\  | _         | _        | _        | _        ||r|j        n| c| _        | _        ||j        ddd         n|| _        ||j        n|| _        ||j        n|| _        ||j	        n|| _	        |	|j
        n|	| _
        |
|j        n|
| _        ||j        n|| _        t          | j	        dd          }|                    |           | j        |
k    s|d         r| j        nd}t          j        j        | |f||d| t%          |t                     r|j                            | |           dS t          j                            | d|	           dS )
ru   Nr   solid)rD   borderreliefry   )padxpadyboth)fillexpand)_frameindex_index_widgetswinfoldflowfontrF   rD   rE   opipdictrQ   tkrt   rX   rK   pack)rT   masterr   r   	takefocusrF   growr   rD   rE   r   r   rV   rW   pads                  r;   rX   zFrame.__init__J   sv    ;?a:K7DKT[$-f >

$DItx%)\DDbD!!tDI#|DI#)>&--vDK:fii2DG:fii2DG:fii2DG:fii2DGDGAg666ET8J8J8JW]]eHo]$''1CHdF@3@@%@@@&%   8&*//$"="="="="=
(--6$-
7
7
7
7
7r=   c                     t          |t                    r| j        |         S t          j                            | |          S ru   )rK   intr   r   Tk__getitem__rT   r   s     r;   r   zFrame.__getitem__]   s8    % 0dmE&::""4//
/r=   c                     t          |t                    r9| j        |                                          | j        |= | xj        dz  c_        dS t
          j                            | |           dS )ru   r&   N)rK   r   r   destroyr   r   r   __delitem__r   s     r;   r   zFrame.__delitem__b   sg    % )
mE""$$$$-*>q@P
%

D%
(
(
(
(
(r=   c                 J    | j         r| j        | j         z  | j         fn| j        S r   )r   r   rZ   s    r;   widgetszFrame.widgetsh   s(     37)LDK"DI..Lr=   )
NNFNTNNNNN)	rm   rn   ro   rp   rX   r   r   rq   r   rA   r=   r;   rt   rt   G   sq        )KOCG8 8 8 8&0 0 0
) ) ) M M 8M M Mr=   rt   c                   z    e Zd ZdZ	 	 ddZed             Zej        d             Zd Zd Z	d	 Z
d
 Zd ZddZdS )Winru   N c	                 \    t          d+i ddd|d|rdndddd	d
dddddddddddddddddddddd}
|
                    |	           |rz|                                }t          j        |          }|j        |_        |                    d|                                dz    d|                                dz               nHt          j	                    }t          j
        |dd          |_        |j                                         |r|j                            dd |            |_        t          j         |fi |
 |                    |           |                    |
d         |
d                    |j        dc _        |_        r|                    d! fd"           r|                    d# fd$           r|                    d% fd&           r6|                    d' fd(           |                    d) fd*           dS dS ),ru   r   Tr   r   r    r   ry   r   rz   rx   rF   r   r   r   r   rD   whiterE   blackr   zArial 12r9   Nclickinoutmove+   r2   )r   widthheightr   scalingz	<Any-Key>c                 0                         |           S rl   )_key)r   r9   rT   s    r;   <lambda>zWin.__init__.<locals>.<lambda>   s    TYYq#%6%6 r=   z<Any-Button>c                 0                         |           S rl   )_click)r   r   rT   s    r;   r   zWin.__init__.<locals>.<lambda>   s    Au(=(= r=   z<Motion>c                 p     | j         | j        | j        f                    | j                            S rl   )widgetxy_modsrU   )r   r   rT   s    r;   r   zWin.__init__.<locals>.<lambda>   s-    DD13qs)DJJqw<O<O$P$P r=   z<Enter>c                 X     | j         d                    | j                            S Nr&   r   r   rU   r   r   rT   s    r;   r   zWin.__init__.<locals>.<lambda>   %    55!DJJqw4G4G#H#H r=   z<Leave>c                 X     | j         d                    | j                            S )Nr   r   r   s    r;   r   zWin.__init__.<locals>.<lambda>   r   r=   rA   )r   rQ   winfo_toplevelr   Toplevelblankgeometrywinfo_xwinfo_yr   
PhotoImagecallr   rt   rX   title	resizabler   exitr   bind)rT   r   r   r   scaler9   r   r   r   rV   rW   r   s   `    ````   r;   rX   zWin.__init__p   s     3 3 3dd 3 3D,BDDd 3Q3w3'*s3/0q356Q3BF$3	3W3#-:3 $3 d3 #'$3 .2T3E 5:LL4F4F4F $$&&fbk&.A.A,ci	llBv~~''*BBV^^-=-=b-@BBCCCCEGGc-s"R@@@ci	ioo0cfkk$y%000CGEN466666IIecmmE&M5=AAA;DIsy
 8	hh{66666777 ?	hh~=====>>> R	hhzPPPPPQQQ J	hhyHHHHHIII	hhyHHHHHIIIIIJ Jr=   c                 4    | j                                         S rl   r   r   rZ   s    r;   r   z	Win.title   s    +++---r=   c                 :    | j                             |           d S rl   r   )rT   r   s     r;   r   z	Win.title   s    +++E22222r=   c                 D    t          fdt          D                       S )z7generate tuple of modifier keys for given event 'state'c              3   ,   K   | ]\  }}|z  
|V  d S rl   rA   ).0masknamerU   s      r;   	<genexpr>zWin._mods.<locals>.<genexpr>   s0      >>*$>>>>>>>r=   )rL   r   r`   s    `r;   r   z	Win._mods   s&    >>>>>>>>>>r=   c                     |j         r0t          |j         d                   dk    r|j         d         |_         ||j        |j        |                     |j                             dS )zgeneric key press event handlerr      N)charordkeysymr   r   rU   )rT   eventr9   s      r;   r   zWin._key   sZ    zKc%*Q-((2--ejmu|CelDJJu{$;$;<<<<<r=   c                     |j         d         dk    r|                                   ||j         t          |j                 |                     |j                             dS )z!generic mouse click event handlerr   0N)r   	focus_set_butsnumr   rU   )rT   r   r   s      r;   r   z
Win._click   sT    |K C'')9)9)9	E%,ei($**U[*A*ABBBBBr=   c                     |                                   | j                            |                                 |                                            |                                  |                                  dS ru   N)rQ   r   minsizewinfo_widthwinfo_heightfocus_forcemainlooprZ   s    r;   loopzWin.loop   s`    KKMMM4;&&t'7'7'9'9$:K:K:M:MNNNr=   c                 F   |                                   | j                            |                                 |                                            |                                  n# t          $ r Y nw xY w|                                  |                                  dS r   )	rQ   r   r   r   r   grab_set	Exceptionr   wait_windowrZ   s    r;   waitzWin.wait   s    KKMMM4;&&t'7'7'9'9$:K:K:M:MNNN	dd((*****s   A) )
A65A6r}   c           
         |j         }||n|}|j        r|j        |j        z  dk    rt          j        ||j                  |_        |j                                         d|j        _        |j	        
                    g            |j                            |t          |j        d                  dd           |j        r|j	        d         n|j	        
                    |           |j        rt          |j        |j                  n|j        |_        |xj        dz  c_        |                    |j        ||t          |j        d                  |j        |j        |j        |j        	           dS )
ru   Nr   rD   r&   r}   T)in_sider~   r   rw   )r   r~   r   r   r{   r|   ipadxipady)r   r   r   r   rt   rD   r   lowerr   r   appendr   _sider   divmodr   r   )rT   r   r   	subwidgetr~   mss         r;   r   zWin.pack   sF   	Bi.?FFY		w O29rw&!++(2"%(((bi")//*;*;*;biobk00444inn%
"3&nNNN0R[__R[88CCC13G6")RW---biFLIINII
KKBIDE"'!*<M5ruBE  8 8 8 8 8r=   )Nr   NNNNNN)Nr}   )rm   rn   ro   rp   rX   rq   r   rr   r   r   r   r   r   r   rA   r=   r;   r   r   m   s        )=A6:J J J J: -- 8-<22 <2? ? ?= = =
C C C
( ( (
+ + +8 8 8 8 8 8r=   r   c                       e Zd ZdZddZdS )Brickru   Tr   c           
          t           j                            | |           t                              | |||j        dd|j        j        j        d           |j                            | |           d S )Nr   rx   r   )rD   ry   rz   rC   r   )	r   LabelrX   r?   rD   r   r   r   r   rT   r   r   rU   rW   s        r;   rX   zBrick.__init__   sl    HdF###
OOD%69QwJ#s  4 4 4
JOOD$r=   NTr   rm   rn   ro   rp   rX   rA   r=   r;   r   r      s-        )           r=   r   c                       e Zd ZdZddZdS )r   ru   Tr   c                     t           j                            | |           t                              | |||j        |j        dd|j        |j        d
  
         |j        	                    | |           dS )ru   r   rx   r   rD   rE   ry   rz   rF   r   r   N)
r   r   rX   r?   rD   rE   rF   r   r   r   r   s        r;   rX   zLabel.__init__   sq    HdF###
OOD%691V]  M M M
JOOD$r=   Nr   r   rA   r=   r;   r   r      -        )           r=   r   c                       e Zd ZdZddZdS )Buttonru   Tr   c                     t           j                            | |           t                              | |||j        |j        dd|j        |j        d
  
         |j        	                    | |           dS )ru   r'   raisedr   r   N)
r   r   rX   r?   rD   rE   rF   r   r   r   r   s        r;   rX   zButton.__init__   sq    ItV$$$
OOD%691fm&+  N N N
JOOD$r=   Nr   r   rA   r=   r;   r   r      r   r=   r   c                   X    e Zd ZdZd	dZed             Zej        d             Zd
dZdS )Checkbuttonru   Tr   c                 4   t          t          |                    | _        t          ||j        |j        |j        |j        d           d|v rt          |d                  |d<   t          j
        j        | |fi | |j                            | |           dS )ru   r   rD   rE   rF   r   r   rF   N)IntVarr   _varr<   rD   rE   rF   r   rR   r   r  rX   r   r   r   s        r;   rX   zCheckbutton.__init__   s    s5zz""DI
5VY69V];#' ' ' '5GE(O,D%/ND&22E222FJOOD$4O4O4O4O4Or=   c                 4    | j                                         S r]   )r  getrZ   s    r;   rU   zCheckbutton.state   s     9==??r=   c                 ^    | j                             t          t                               dS rb   N)r  setr   valuer`   s     r;   rU   zCheckbutton.state   s$     	IMM#e**r=   Nc                 &    || j         S || _         dS rh   ri   r`   s     r;   rj   zCheckbutton.__call__   rk   r=   r   rl   	rm   rn   ro   rp   rX   rq   rU   rr   rj   rA   r=   r;   r  r     s}        )P P P P   8 	<  <     r=   r  c                       e Zd ZdZddZdS )Radiobuttonru   Tr   c                     t          ||j        |j        |j        |j        d           d|v rt
          |d                  |d<   t          j        j        | |fi | |j	        
                    | |           d S )Nr   r  rF   )r<   rD   rE   rF   r   rR   r   r  rX   r   r   r   s        r;   rX   zRadiobutton.__init__   s    
5VY69V];#' ' ' '5GE(O,D%/ND&22E222FJOOD$4O4O4O4O4Or=   Nr   r   rA   r=   r;   r  r     s3        )P P P P P Pr=   r  c                       e Zd ZdZddZdS )Canvasru   Tc                     t          ||j        d           |dxx         dz  cc<   t          j        j        | |fi | |j                            | |           d S )Nr   )rD   ry   ry   r'   )r<   rD   r   r  rX   r   r   )rT   r   r   rW   s       r;   rX   zCanvas.__init__   sf    
5VYq))))5???a+????ItV--u---vztT/J/J/J/J/Jr=   N)Tr   rA   r=   r;   r  r     s3        )K K K K K Kr=   r  c                   \    e Zd ZdZ	 	 d	dZed             Zej        d             Zd
dZdS )Scaleru   TNr	   c                    d\  }}	}
d }t          |t          t          f          r|}	nCt          |t          t          f          r' ||d|           ||d|	           ||d|
          }
}	}|s|dv r|	n|}t
          |         |d<   rfd|d	<   rnd
 | _        t          j        j	        | |f|j
        |j        ||	|
d|j        d| |                     |           |j                            | |           dS )ru   )r   d   r&   c                 0    | ||dz            r| |         n|S r   rA   )seqr   r:   s      r;   r   z Scale.__init__.<locals>.<lambda>	  s    AacE
;c!ff r=   r   r&   r'   r!   orientc                                  S rl   rA   )r   commands    r;   r   z Scale.__init__.<locals>.<lambda>  s    WWYY r=   r  c                      d S rl   rA   rA   r=   r;   r   z Scale.__init__.<locals>.<lambda>  s    D r=   r   )rD   rE   from_to
resolutionr   r   N)rK   r   floatrL   list_orientr  r   r  rX   rD   rE   r   r  r   r   )rT   r   r   r   rU   r   r  rW   startstopstepr
  s         `     r;   rX   zScale.__init__  sD    "E4
;
;C%#u&& Qu	EE4=	)	) QE!E**CCa,=,=ss54?P?PDe9$$,,$$E%dmE(O6#6#6#6#6i %977LLDLHdF JvyVYe	$#FKJ JCHJ J JHHUOOOVZ__T400000r=   c                 *    |                                  S r]   r
  rZ   s    r;   rU   zScale.state       88::r=   c                 J    || j         k    rdS |                     |           dS r  )rU   r  r`   s     r;   rU   zScale.state  s(     
FFHHUOOOOOr=   c                 &    || j         S || _         dS rh   ri   r`   s     r;   rj   zScale.__call__   rk   r=   )TNNr	   Nrl   r  rA   r=   r;   r  r    s        ):>!%1 1 1 1    8 	<  <
     r=   r  c                   X    e Zd ZdZddZed             Zej        d             Zd	dZdS )
Entryru   TNc           	      
   t          ||j        |j        |j        ddd           t	          j        j        | |fi | r|                     dfd           rnd | _        |j	        
                    | |d	           d
S )ru   1sunkenr'   )rD   rE   r   r   rz   ry   z<Return>c                      | S rl   rA   )r   argsr  s     r;   r   z Entry.__init__.<locals>.<lambda>-  s    77D> r=   c                      d S rl   rA   rA   r=   r;   r   z Entry.__init__.<locals>.<lambda>.      4 r=   r   )r~   N)r<   rD   rE   r   r   r0  rX   r   r  r   r   )rT   r   r   r  rW   s      ` r;   rX   zEntry.__init__(  s    
5VY696;!5 5 5 5HdF,,e,,,J		*&I&I&I&IJJJ%777<<DL
JOOD$SO)))))r=   c                 *    |                                  S r]   r+  rZ   s    r;   rU   zEntry.state1  r,  r=   c                     || j         k    rdS |                     dd           |                     d|           |                                  dS rb   Nr   endrU   deleteinsertr  r`   s     r;   rU   zEntry.state6  L     
FFKK%$++a...r=   c                 &    || j         S || _         dS rh   ri   r`   s     r;   rj   zEntry.__call__<  rk   r=   )TNrl   r  rA   r=   r;   r0  r0  %  sy        )* * * *   8 	<? ? <?
     r=   r0  c                   X    e Zd ZdZd	dZed             Zej        d             Zd
dZdS )Spinboxru   TNrA   c                     t          ||j        |j        |j        d           t	          j        j        | |fd|i| |r|nd | _        ||d         n|| _        |j	        
                    | |           dS )ru   true)rD   rE   r   wrapvaluesc                      d S rl   rA   rA   r=   r;   r   z"Spinbox.__init__.<locals>.<lambda>I  r7  r=   Nr   )r<   rD   rE   r   r   rB  rX   r  rU   r   r   )rT   r   r   rU   rF  r  rW   s          r;   rX   zSpinbox.__init__D  s     5VY696;VLLLLJf==V=u===%777<<DL#mDJ
JOOD$r=   c                 *    |                                  S r]   r+  rZ   s    r;   rU   zSpinbox.stateM  r,  r=   c                     || j         k    rdS |                     dd           |                     d|           |                                  dS r:  r<  r`   s     r;   rU   zSpinbox.stateR  r?  r=   c                 &    || j         S || _         dS rh   ri   r`   s     r;   rj   zSpinbox.__call__X  rk   r=   )TNrA   Nrl   r  rA   r=   r;   rB  rB  A  sy        )          8 	<? ? <?
     r=   rB  c                   ~    e Zd ZdZddZed             Zej        d             ZddZd Z	d	 Z
d
 Zd Zd ZddZdS )Listboxru   Tc                 `   t          ||j        |j        |j        dd           |r=t	          j        ||d                   | _        t	          j        j        | | j        fi | t	          j	        | j        d| j
                  | _        | j                            dd	
           t	          j	        | j        d| j                  | _        | j                            dd	
           |                     | j        j                   |                     | j        j                   |                     dd	d           |j                            | j        ||            n3t	          j        j        | |fi | |j                            | |           |                     d           dS )ru   extendednone)rD   rE   r   
selectmodeactivestylerD   r   r   )r  r  r   r}   )r   r~   r   r   )xscrollcommand)yscrollcommandr   T)r   r~   r   )r   )resetN)r<   rD   rE   r   r   rt   framerL  rX   	Scrollbarxviewxscrollr   yviewyscrollrS   r  r   rQ   )rT   r   r   scrollrW   s        r;   rX   zListbox.__init__`  s   
5VY696; f6 6 6 6 N8FuT{333djj$
44e444\$*\
  dl!\..H6.JJJ\$*Z
  dl!\..G&.III
kk!1k222
kk!1k222
iiV&i666joodj$$o7777j$00%000&*//$2M2M2MKKdKr=   c                 6    d                     | j                  S )r^   
)joinr5   rZ   s    r;   rU   zListbox.states  s     99TZ   r=   c                 b    |                     d          | _        |                                  dS )rb   r]  N)splitr5   rQ   r`   s     r;   rU   zListbox.statex  s'     T""DJDKKMMMMMr=   Nc                 &    || j         S || _         dS rh   ri   r`   s     r;   rj   zListbox.__call__}  rk   r=   c                 *    t          | j                  S )zx.__len__() <==> len(x))rO   r5   rZ   s    r;   __len__zListbox.__len__  s    tz??r=   c                 ,    |dk    rdS | j         |         S )zEx.__getitem__(index) <==> x[index] where 'index' is an int or a slicer   N)r5   r   s     r;   r   zListbox.__getitem__  s    VV:er=   c                 B    || j         |<   |                                  dS )z0x.__setitem__(index, items) <==> x[index] = itemNr5   rQ   )rT   r   items      r;   __setitem__zListbox.__setitem__  s    DJudkkmmmmmr=   c                 P    | j         r| j         |= |                                  dS dS )z&x.__delitem__(index) <==> del x[index]Nrf  r   s     r;   r   zListbox.__delitem__  s)    z7tz%($++-----77r=   c                     | j                             |                    d                     |                                  dS )ru   r]  N)r5   extendr`  rQ   )rT   liness     r;   r   zListbox.append  s4    Jekk$''((($++-----r=   r;  Fc                     |rg | _         |                     dd           | j         D ]}|                     d|           |                     |           dS )ru   r   r;  N)r5   r=  r>  see)rT   rn  rT  rg  s       r;   rQ   zListbox.update  sX    2djKK%
44DKKt4444HHSMMMMMr=   )TTrl   )r;  F)rm   rn   ro   rp   rX   rq   rU   rr   rj   rc  r   rh  r   r   rQ   rA   r=   r;   rL  rL  ]  s        )   & ! ! 8! 	<2 2 <2   
    
, , ,8 8 88 8 8     r=   rL  c                       e Zd ZdZd ZdS )Imageru   c                 p    t          |t                    rdnd}|||<   t          j        j        | fi | dS )ru   filedataN)rK   strr   r   rX   )rT   rC   rW   props       r;   rX   zImage.__init__  sC    s++766DE$K/>>>>>>>r=   Nr   rA   r=   r;   rp  rp    s(        )? ? ? ? ?r=   rp  c                       e Zd ZdZddZdS )	ImageGridru   Nc                    t          |          }|                                |                                }}||||k    rd||z  fn||z  df\  }}n|	||z  |z  }n
|||z  |z  }g ||z  ||z  }}}t          ||z            D ]h}|||z  z  |||z  z  }	}||z   |	|z   }}
t	          j                    }|                    |           |j                            |d|d||	|
|ddd           it          	                    | |          S )ru   Nr&   copyz-fromz-tor   )
rp  r   r   ranger   r   r   r   rL   __new__)clsrC   rowscolsr   r   tilesr   xayaxbybtiles                r;   r{  zImageGrid.__new__  s6   %LLE%++--%|).Auf}%%femQ=OjdDD	dVmu4tt	dUlf4tud{FDL&5Ed4i   N NT$Yt!4bh6	b"-//45<<;M;M;M
gll4RR1MMMM==e$$$r=   NN)rm   rn   ro   rp   r{  rA   r=   r;   rw  rw    s-        )% % % % % %r=   rw  c                   &    e Zd ZdZddZd Zd ZdS )Commandru   Nc                 z   |d}|d }|dz   |c| _         | _        t          ||j        |j        |j        dd           |d         | _        |d= |d	         | _        |d	= t          j	        | |fd
di| t          | d          | _
        t          | j
        d| j                   | _        t          | j
        | j                  | _        t!          | j
        dd| j                   t!          | j
        dd| j                   t%          | | j        | j                  | _        |                                  dS )ru   Nr  c                     | S rl   rA   )r   s    r;   r   z"Command.__init__.<locals>.<lambda>  s    A r=   z : P      )rD   rE   r   r   r   r   r   r   r   F)r   )r   rB   )r  ENTER)r   rB   r  CLEAR)r   r   )promptprocessr<   rD   rE   r   r   r   rt   rX   rU  r   labelr0  enterentryr   clearrL  box)rT   r   r  r  rW   s        r;   rX   zCommand.__init__  s4   ~	v++ &DK
5VY696;bQSTTTTwDJU7^/DKuX	N455e5u555t%(((DJtzDK@@@DJtz4:666DJ
4:EDDDD
4:EDDDDt4:dkBBBDHJJLLLLLr=   c                    |                      |                                           }nE# t          $ r8}|                                 dt          |          j        d|}Y d}~nd}~ww xY w| j                            |           dS )ru   z --> z: N)r  r  r   typerm   r  r   )rT   outr   s      r;   r  zCommand.enter  s    ||DJJLL)) A A A#zz||||DGG,<,<,<aa@ccccccAHOOCs   ') 
A+.A&&A+c                     | j                                          |                     d           | j                                         dS )ru   r   N)r  r  r  r   rZ   s    r;   r  zCommand.clear  s;    HNNdjjnnndj&:&:&<&<&<&<&<r=   r  )rm   rn   ro   rp   rX   r  r  rA   r=   r;   r  r    sK        )   "  = = = = =r=   r  r   c                    ddl m} ddl m} ddl m} | dk    r|                    ||           dS | dk    r|                    ||           dS | dk    r|                    ||           dS | d	k    r|                    ||          S | d
k    r|                                S | dk    r |j	        dd|i|S | dk    r |j
        dd|i|S dS )z$base function for all dialog windowsr   )
messagebox)
filedialog)colorchooserinfoNwarningerrorchoicecoloropenr   saverA   )tkinterr  r  r  showinfoshowwarning	showerroraskyesnoaskcoloraskopenfilenameasksaveasfilename)moder   messagerW   r  r  r  s          r;   Dialogr    s,               """"""v~~z**5':::44y*00@@@w
,,UG<<<TTx
 3 3E7 C CCw|44666v~~8j8NNuNNNNv~~:j:PPP%PPP~~r=   )r   r   )$rp   
__author____version____date__r  r   Menur   rp  r  	StringVarr   r   r&  rR   r   r   r<   objectr?   rt   r   r   r   r   r  r  r  r  r0  rB  rL  rL   rw  r  r  rA   r=   r;   <module>r     s   F F"
     gr}eIr| 	uFg666
$z\\
J
J
J
$SC3#	dt$4DJ J JEU##	O? ? ?+ + + + +V + + +Z$M $M $M $M $MBH $M $M $MLK8 K8 K8 K8 K8% K8 K8 K8Z         BHf               BHf               RY          ".&   4P P P P P". P P PK K K K KRY K K K! ! ! ! !BHf ! ! !F    BH   8    bj   8? ? ? ? ?bj ? ? ?B? ? ? ? ?BM ? ? ?% % % % % % % %"= = = = =e = = =>Q Q Q Q Q Qr=   