î
\á[\Ã  ã               @   s•   d  Z  d d l m Z m Z m Z m Z m Z d d l Z d d l Z Gd d „  d e ƒ Z	 d d „  Z
 e d k r‘ d d	 l m Z e e
 ƒ n  d S)
zd
OptionMenu widget modified to allow dynamic menu reconfiguration
and setting of highlightthickness
é    )Ú
OptionMenuÚ_setitÚTkÚ	StringVarÚButtonNc               @   s1   e  Z d  Z d Z d d „  Z d d d „ Z d S)ÚDynOptionMenuzF
    unlike OptionMenu, our kwargs can include highlightthickness
    c             O   s…   t  j  | ƒ } d t | j ƒ  ƒ k r1 | d =n  t j |  | | | | | Ž |  j d | j d ƒ ƒ | |  _ | j d ƒ |  _ d  S)NZhighlightthicknessÚcommand)	ÚcopyÚlistÚkeysr   Ú__init__ZconfigÚgetÚvariabler   )ÚselfZmasterr   ÚvalueÚvaluesÚkwargsZ
kwargsCopy© r   ú1/usr/lib/python3.4/idlelib/dynOptionMenuWidget.pyr      s    
	zDynOptionMenu.__init__Nc          	   C   sn   |  d j  d d ƒ x: | D]2 } |  d j d | d t |  j | |  j ƒ ƒ q W| rj |  j j | ƒ n  d S)z²
        clear and reload the menu with a new set of options.
        valueList - list of new options
        value - initial value to set the optionmenu's menubutton to
        Zmenur   ÚendZlabelr   N)ZdeleteZadd_commandr   r   r   Úset)r   Z	valueListr   Úitemr   r   r   ÚSetMenu   s    zDynOptionMenu.SetMenu)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r   r   r   r   r   r   
   s   r   c       	         sä   t  ƒ  } | j d ƒ t | ƒ } t t t t j d |  j ƒ  ƒ ƒ ƒ \ } } } } | j d | | d f ƒ | j	 d ƒ t
 | | d d d d	 ƒ ‰  ˆ  j ƒ  ‡  f d
 d †  } t | d d d | ƒ} | j ƒ  | j ƒ  d  S)NzTets dynamic option menuz[x+]z+%d+%dé–   zOld option setZold1Zold2Zold3Zold4c                  s#   ˆ  j  d d d d g d d ƒd  S)NZnew1Znew2Znew3Znew4r   znew option set)r   r   )Údynr   r   Úupdate0   s    z _dyn_option_menu.<locals>.updateÚtextzChange option setr   )r   Útitler   r
   ÚmapÚintÚreÚsplitZgeometryr   r   Zpackr   Zmainloop)	ÚparentÚrootZvarÚwidthZheightÚxÚyr   Zbuttonr   )r   r   Ú_dyn_option_menu&   s    	3

r+   Ú__main__)Úrun)r   Ztkinterr   r   r   r   r   r	   r$   r   r+   r   Zidlelib.idle_test.htestr-   r   r   r   r   Ú<module>   s   (