
    "e                     d    d Z ddlmZmZmZmZ  G d de      Zd Zedk(  rddl	m
Z
  e
e       yy)	zd
OptionMenu widget modified to allow dynamic menu reconfiguration
and setting of highlightthickness
    )
OptionMenu_setit	StringVarButtonc                       e Zd ZdZd ZddZy)DynOptionMenuzmAdd SetMenu and highlightthickness to OptionMenu.

    Highlightthickness adds space around menu button.
    c                     |j                  dd       }t        j                  | |||g|i | || d<   || _        |j	                  d      | _        y )Nhighlightthicknesscommand)popr   __init__variablegetr   )selfmasterr   valuevalueskwargsr
   s          #lib/python3.12/idlelib/dynoption.pyr   zDynOptionMenu.__init__   sT    #ZZ(<dCD&(EMFMfM%7!" zz),    Nc           	          | d   j                  dd       |D ]7  }| d   j                  |t        | j                  || j                               9 |r| j                  j                  |       yy)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
        menur   end)labelr   N)deleteadd_commandr   r   r   set)r   	valueListr   items       r   SetMenuzDynOptionMenu.SetMenu   ss     	VAe$ 	EDL$$4"4==dllC % E	E MMe$ r   )N)__name__
__module____qualname____doc__r   r     r   r   r   r      s    -%r   r   c           	         ddl m}  ||       }|j                  d       t        t        | j                         j                  d      dd        \  }}|j                  d|dz   |dz   fz         |j                          t        |      }|j                  d	       t        ||d
dddd      j                          fd}t        |d|      }|j                          y )Nr   )ToplevelzTest dynamic option menu+   z200x100+%d+%d      zOld option setold1old2old3old4   )r
   c                  0     j                  g dd       y )N)new1new2new3new4znew option set)r   )r    )dyns   r   updatez _dyn_option_menu.<locals>.update0   s    19IJr   zChange option set)textr   )tkinterr'   titlemapintgeometrysplit	focus_setr   r   r   packr   )	parentr'   topxyvarr7   buttonr6   s	           @r   _dyn_option_menurG   !   s     
6
CII()sFOO%++C045DAqLLAGQW#556MMO
C.CGG
S&v+,.CHHJKC16BF
KKMr   __main__)runN)r$   r9   r   r   r   r   r   rG   r!   idlelib.idle_test.htestrI   r%   r   r   <module>rK      s>    : 9%J %4* z+ r   