o
    ^h                     @   sX   d Z ddlmZmZmZmZ G dd deZdd Zedkr*ddl	m
Z
 e
e d	S d	S )
zd
OptionMenu widget modified to allow dynamic menu reconfiguration
and setting of highlightthickness
    )
OptionMenu_setit	StringVarButtonc                   @   s"   e Zd ZdZdd ZdddZdS )DynOptionMenuzmAdd SetMenu and highlightthickness to OptionMenu.

    Highlightthickness adds space around menu button.
    c                 O   sH   | dd }tj| |||g|R i | || d< || _|d| _d S )Nhighlightthicknesscommand)popr   __init__variablegetr   )selfZmasterr   valuevalueskwargsr    r   #  /home/conda/feedstock_root/build_artifacts/python-split_1761171407825/_h_env_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehol/lib/python3.10/idlelib/dynoption.pyr
      s
   zDynOptionMenu.__init__Nc                 C   sP   | d  dd |D ]}| d j|t| j|| jd q
|r&| j| dS 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   end)Zlabelr   N)deleteZadd_commandr   r   r   set)r   Z	valueListr   itemr   r   r   SetMenu   s   
zDynOptionMenu.SetMenu)N)__name__
__module____qualname____doc__r
   r   r   r   r   r   r      s    r   c              	      s   ddl m} || }|d tt|  ddd  \}}|d|d |d f  |  t|}|	d	 t
||d
ddddd     fdd}t|d|d}|  d S )Nr   )ToplevelzTest dynamic option menu+   z200x100+%d+%d      zOld option setZold1Zold2Zold3Zold4   )r   c                      s    j g ddd d S )N)Znew1Znew2Znew3Znew4znew option set)r   )r   r   Zdynr   r   update/   s   z _dyn_option_menu.<locals>.updatezChange option set)textr   )tkinterr   titlemapintZgeometrysplitZ	focus_setr   r   r   packr   )parentr   topxyvarr#   Zbuttonr   r"   r   _dyn_option_menu    s   
 
r0   __main__)runN)r   r%   r   r   r   r   r   r0   r   Zidlelib.idle_test.htestr2   r   r   r   r   <module>   s    