
    AHj                        d Z ddlmZ ddlmZmZ ddlZddlm	Z	 ddl
mZ ddlmZ ddlmZ erdd	lmZ dd
lmZ ej(                  j*                   G d d             Zy)z6

The base class for all messages (including events).
    )annotations)TYPE_CHECKINGClassVarN)Self)_time)active_message_pumpcamel_to_snake)DOMNode)MessagePumpc                      e Zd ZU dZg dZ e       Zded<   	 dZded<   dZ	ded	<   dZ
ded
<   dZded<   ded<   	 ddZddZddZ	 	 	 	 d	 	 	 	 	 	 	 	 	 d fdZedd       Zed d       ZddZd!dZd"dZd#d$dZd#d%dZd&dZ xZS )'MessagezBase class for a message.)_sendertime
_forwarded_no_default_action_stop_propagation_preventzClassVar[set[str]]ALLOW_SELECTOR_MATCHTzClassVar[bool]bubbleFverboseno_dispatch zClassVar[str]	namespacehandler_namec                $    | j                          y N)__post_init__selfs    G/root/tools/cai/cai_env/lib/python3.12/site-packages/textual/message.py__init__zMessage.__init__/   s        c                    t        j                  d      | _        t        j                         | _        d| _        d| _        d| _        t               | _
        y)z+Allow dataclasses to initialize the object.NF)r   getr   r   get_timer   r   r   r   setr   r   s    r!   r   zMessage.__post_init__2   sB    +>+B+B4+H >>+	"'!&,/Er#   c              #  $   K   dE d {    y 7 w)N r)   r   s    r!   __rich_repr__zMessage.__rich_repr__;   s     s   c                H   t         |           ||| _        || _        ||| _        |"|| _        | dt        | j                         }nL| j                  j                  dd      d   }|j                  dd      dd  }dj                  d |D              }d	| | _        y )
N_z	<locals>.   .   c              3  2   K   | ]  }t        |        y wr   r	   ).0parts     r!   	<genexpr>z,Message.__init_subclass__.<locals>.<genexpr>U   s     GTN40Gs   on_)super__init_subclass__r   r   r   r   r
   __name____qualname__rsplitjoinr   )clsr   r   r   r   namequalname	__class__s          r!   r8   zMessage.__init_subclass__>   s     	!#CJ")CO %CM[.">!?@D ''..{A>rBH !Q/4I88GYGGD <r#   c                     y)z<The widget associated with this message, or None by default.Nr)   r   s    r!   controlzMessage.controlX   s     r#   c                    | j                   S )zHas the message been forwarded?r   r   s    r!   is_forwardedzMessage.is_forwarded]   s     r#   c                    d| _         y)z#Mark this event as being forwarded.TNrD   r   s    r!   _set_forwardedzMessage._set_forwardedb   s	    r#   c                    || _         | S )a  Set the sender of the message.

        Args:
            sender: The sender.

        Note:
            When creating a message the sender is automatically set.
            Normally there will be no need for this method to be called.
            This method will be used when strict control is required over
            the sender of a message.

        Returns:
            Self.
        )r   )r    senders     r!   
set_senderzMessage.set_senderf   s     r#   c                     y)zCheck if another message may supersede this one.

        Args:
            message: Another message.

        Returns:
            True if this message may replace the given message
        Fr)   )r    messages     r!   can_replacezMessage.can_replacex   s     r#   c                    || _         | S )a  Suppress the default action(s). This will prevent handlers in any base classes
        from being called.

        Args:
            prevent: True if the default action should be suppressed,
                or False if the default actions should be performed.
        )r   )r    prevents     r!   prevent_defaultzMessage.prevent_default   s     #*r#   c                    || _         | S )zcStop propagation of the message to parent.

        Args:
            stop: The stop flag.
        )r   )r    stops     r!   rR   zMessage.stop   s     "&r#   c                4    d| _         |j                  |        y)zhBubble to a widget (typically the parent).

        Args:
            widget: Target of bubble.
        FN)r   post_message)r    widgets     r!   
_bubble_tozMessage._bubble_to   s     #(D!r#   )returnNone)rW   zrich.repr.Result)TFFN)
r   bool | Noner   boolr   rY   r   z
str | NonerW   rX   )rW   zDOMNode | None)rW   rZ   )rI   r   rW   r   )rL   z	'Message'rW   rZ   )T)rO   rZ   rW   r   )rR   rZ   rW   r   )rU   r   rW   rX   )r9   
__module__r:   __doc__	__slots__r'   r   __annotations__r   r   r   r   r"   r   r*   r8   propertyrB   rE   rG   rJ   rM   rP   rR   rV   __classcell__)r@   s   @r!   r   r      s    #I 03u,4 "FN!#G^#"'K'!I}!.2
 ##( $(( ( !	(
 ( 
(4    $		"r#   r   )r\   
__future__r   typingr   r   	rich.reprrichtyping_extensionsr   textualr   textual._contextr   textual.caser
   textual.domr   textual.message_pumpr   reprautor   r)   r#   r!   <module>rm      sN   
 # *  "  0 '#0 G" G" G"r#   