
    'j                     \    d dl Z d dlZdgZ ej        e          Zd Z G d d          ZdS )    NTrameComponentc                 R    t          j        |           pt          j        |           S N)inspectismethod
isfunction)xs    T/DATA/AppData/hermes/venv/lib/python3.11/site-packages/trame_common/obj/component.pycan_be_decoratedr      s#    A7'"4Q"7"77    c                   ~    e Zd ZdZd
dZed             Zed             Zed             Zed             Z	d Z
d	 ZdS )r   z
    Base trame class that has access to a trame server instance
    on which we provide simple accessor and method decoration capabilities.
    Nc                 T    || _         |r
| | j        |<   |                                  dS )z
        Initialize TrameComponent with its server.

        Keyword arguments:
        server -- the server to link to (default None)
        ctx_name -- name to use to bind current instance to server.context (default None)
        N)_serverctx_bind_annotated_methods)selfserverctx_name_s       r
   __init__zTrameComponent.__init__   s7      	&!%DHX$$&&&&&r   c                     | j         S )z+Return the associated trame server instance)r   r   s    r
   r   zTrameComponent.server$   s     |r   c                     | j         j        S )z"Return the associated server state)r   stater   s    r
   r   zTrameComponent.state)   s     {  r   c                     | j         j        S )z'Return the associated server controller)r   
controllerr   s    r
   ctrlzTrameComponent.ctrl.   s     {%%r   c                     | j         j        S )z$Return the associated server context)r   contextr   s    r
   r   zTrameComponent.ctx3   s     {""r   c           	      D   t          j        | j        t                    D ]}}t	          | |d                   }| j        j        d|j        v r]|j        d         }t          	                    dfd|D             |d                      | j        j
        d |D              |           d|j        v rX|j        d         }|D ]H}t          	                    d||d                     | j                            |           |           Id|j        v r|j        d         }|D ]x}|                    d	          }|                    d
          }	t	          | j        |	          }
t          	                    d|	||d                      |
|          |           yd S )Nr   _trame_state_changezstate.change(%s)(%s)c                 <    g | ]}                     |           S  )translate_key).0vs_translators     r
   
<listcomp>z:TrameComponent._bind_annotated_methods.<locals>.<listcomp>C   s*    TTTA221557TTTr   c                     g | ]}| S r#   r#   )r%   r&   s     r
   r(   z:TrameComponent._bind_annotated_methods.<locals>.<listcomp>F   s    #G#G#GqqF#G#G#Gr   _trame_trigger_namesztrigger(%s)(%s)_trame_controllernamemethodzctrl.%s(%s)(%s))r   
getmembers	__class__r   getattrr   
translator__dict__loggerdebugchanger   triggergetr   )r   kfnstate_change_namestrigger_namestrigger_nameactionsactionr,   r-   decorater'   s              @r
   r   z&TrameComponent._bind_annotated_methods8   s   #DN4DEE 	' 	'Aqt$$B  :0L$33%'[1F%G"*TTTTASTTTaD  
 I!
!#G#G4F#G#G#GHLLL &44 ",B C$1 ? ?LLL!2L!A$GGG:DK''<(9::2>>>> #bk11+&9:% ' 'F!::f--D#ZZ11F&ty&99HLL!2FD!A$GGG"HHTNN2&&&&;	' 	'r   c                 T   t          j        | j        t                    D ]}t	          | |d                   }i }d|j        v r|                    |           |rM| j        j        	                                D ].}t          |          |z  }|D ]}|                    |           /d S )Nr   r!   )r   r.   r/   r   r0   r2   addr   _change_callbacksvaluessetremove)r   r8   r9   methods_to_detachfn_list	to_removes         r
   _unbind_annotated_methodsz(TrameComponent._unbind_annotated_methodsY   s    #DN4DEE 	+ 	+Aqt$$B !#$33!%%b)))  +#z;BBDD + +G #G/@ @I' + +r****+	+ 	+r   r   )__name__
__module____qualname____doc__r   propertyr   r   r   r   r   rI   r#   r   r
   r   r      s         
' ' ' '   X ! ! X! & & X& # # X#' ' 'B+ + + + +r   )r   logging__all__	getLoggerrJ   r3   r   r   r#   r   r
   <module>rR      s       
	8	$	$8 8 8X+ X+ X+ X+ X+ X+ X+ X+ X+ X+r   