HOME


Mini Shell 1.0
DIR: /lib/python3/dist-packages/twisted/words/im/__pycache__/
Upload File :
Current File : //lib/python3/dist-packages/twisted/words/im/__pycache__/basechat.cpython-312.pyc
�

Ϫ�f@��l�dZddlmZmZmZGd�d�ZGd�d�ZGd�d�ZGd	�d
�Zy)z.
Base classes for Instance Messenger clients.
�)�AWAY�OFFLINE�ONLINEc�.�eZdZdZd�Zd�Zd�Zd�Zd�Zy)�ContactsListah
    A GUI object that displays a contacts list.

    @ivar chatui: The GUI chat client associated with this contacts list.
    @type chatui: L{ChatUI}

    @ivar contacts: The contacts.
    @type contacts: C{dict} mapping C{str} to a L{IPerson<interfaces.IPerson>}
        provider

    @ivar onlineContacts: The contacts who are currently online (have a status
        that is not C{OFFLINE}).
    @type onlineContacts: C{dict} mapping C{str} to a
        L{IPerson<interfaces.IPerson>} provider

    @ivar clients: The signed-on clients.
    @type clients: C{list} of L{IClient<interfaces.IClient>} providers
    c�<�||_i|_i|_g|_y)zx
        @param chatui: The GUI chat client associated with this contacts list.
        @type chatui: L{ChatUI}
        N)�chatui�contacts�onlineContacts�clients)�selfr	s  �;/usr/lib/python3/dist-packages/twisted/words/im/basechat.py�__init__zContactsList.__init__ s!��
�����
� ������c��|j|jvr||j|j<|j|jvr?|jtk(s|jt
k(r||j|j<|j|jvr,|jtk(r|j|j=yyy)z�
        Inform the user that a person's status has changed.

        @param person: The person whose status has changed.
        @type person: L{IPerson<interfaces.IPerson>} provider
        N)�namer
r�statusrrr)r
�persons  r�setContactStatuszContactsList.setContactStatus*s����;�;�d�m�m�+�)/�D�M�M�&�+�+�&��;�;�d�1�1�1��M�M�V�#�v�}�}��'<�/5�D������,��;�;�$�-�-�-�&�-�-�7�2J��#�#�F�K�K�0�3K�-rc�X�||jvr|jj|�yy)z�
        Notify the user that an account client has been signed on to.

        @param client: The client being added to your list of account clients.
        @type client: L{IClient<interfaces.IClient>} provider
        N)r�append�r
�clients  r�registerAccountClientz"ContactsList.registerAccountClient:s'������%��L�L����'�&rc�X�||jvr|jj|�yy)a
        Notify the user that an account client has been signed off or
        disconnected from.

        @param client: The client being removed from the list of account
            clients.
        @type client: L{IClient<interfaces.IClient>} provider
        N)r�removers  r�unregisterAccountClientz$ContactsList.unregisterAccountClientDs'���T�\�\�!��L�L����'�"rc���|j}||jvrO|j|=||_||j|<||jvr|j|=||j|<yyy)a^
        Update your contact information to reflect a change to a contact's
        nickname.

        @param person: The person in your contacts list whose nickname is
            changing.
        @type person: L{IPerson<interfaces.IPerson>} provider

        @param newnick: The new nickname for this person.
        @type newnick: C{str}
        N)rr
r)r
r�newnick�oldnames    r�contactChangedNickzContactsList.contactChangedNickPsp���+�+���d�m�m�#��
�
�g�&�!�F�K�%+�D�M�M�'�"��$�-�-�-��'�'��0�/5��#�#�G�,�.�	$rN)	�__name__�
__module__�__qualname__�__doc__rrrrr!�rrrrs ���&�1� (�
(�6rrc�6�eZdZdZd�Zd�Zd�Zd�Zd	d�Zd�Z	y)
�Conversationa(
    A GUI window of a conversation with a specific person.

    @ivar person: The person who you're having this conversation with.
    @type person: L{IPerson<interfaces.IPerson>} provider

    @ivar chatui: The GUI chat client associated with this conversation.
    @type chatui: L{ChatUI}
    c� �||_||_y)a
        @param person: The person who you're having this conversation with.
        @type person: L{IPerson<interfaces.IPerson>} provider

        @param chatui: The GUI chat client associated with this conversation.
        @type chatui: L{ChatUI}
        N)r	r)r
rr	s   rrzConversation.__init__qs�������rc��td��)z1
        Display the ConversationWindow.
        �%Subclasses must implement this method��NotImplementedError�r
s r�showzConversation.show|���"�"I�J�Jrc��td��)z.
        Hide the ConversationWindow.
        r+r,r.s r�hidezConversation.hide�r0rc�<�|jj|d�y)z�
        Send text to the person with whom the user is conversing.

        @param text: The text to be sent.
        @type text: C{str}
        N)r�sendMessage�r
�texts  r�sendTextzConversation.sendText�s��	
������d�+rNc��td��)z�
        Display a message sent from the person with whom the user is conversing.

        @param text: The sent message.
        @type text: C{str}

        @param metadata: Metadata associated with this message.
        @type metadata: C{dict}
        r+r,)r
r6�metadatas   r�showMessagezConversation.showMessage�s��"�"I�J�Jrc�&�||j_y)z�
        Change a person's name.

        @param person: The person whose nickname is changing.
        @type person: L{IPerson<interfaces.IPerson>} provider

        @param newnick: The new nickname for this person.
        @type newnick: C{str}
        N)rr)r
rrs   rr!zConversation.contactChangedNick�s��#����r�N)
r"r#r$r%rr/r2r7r:r!r&rrr(r(fs(���	�K�K�,�
K�
#rr(c�N�eZdZdZd�Zd�Zd�Zd�Zd
d�Zd�Z	d	�Z
d
�Zd�Zd�Z
y)�GroupConversationa�
    A GUI window of a conversation with a group of people.

    @ivar chatui: The GUI chat client associated with this conversation.
    @type chatui: L{ChatUI}

    @ivar group: The group of people that are having this conversation.
    @type group: L{IGroup<interfaces.IGroup>} provider

    @ivar members: The names of the people in this conversation.
    @type members: C{list} of C{str}
    c�.�||_||_g|_y)a
        @param chatui: The GUI chat client associated with this conversation.
        @type chatui: L{ChatUI}

        @param group: The group of people that are having this conversation.
        @type group: L{IGroup<interfaces.IGroup>} provider
        N)r	�group�members)r
r@r	s   rrzGroupConversation.__init__�s�������
���rc��td��)z6
        Display the GroupConversationWindow.
        r+r,r.s rr/zGroupConversation.show�r0rc��td��)z3
        Hide the GroupConversationWindow.
        r+r,r.s rr2zGroupConversation.hide�r0rc�<�|jj|d�y)zo
        Send text to the group.

        @param text: The text to be sent.
        @type text: C{str}
        N)r@�sendGroupMessager5s  rr7zGroupConversation.sendText�s��	
�
�
�#�#�D�$�/rNc��td��)aR
        Display to the user a message sent to this group from the given sender.

        @param sender: The person sending the message.
        @type sender: C{str}

        @param text: The sent message.
        @type text: C{str}

        @param metadata: Metadata associated with this message.
        @type metadata: C{dict}
        r+r,)r
�senderr6r9s    r�showGroupMessagez"GroupConversation.showGroupMessage�s��"�"I�J�Jrc��||_y)z�
        Set the list of members in the group.

        @param members: The names of the people that will be in this group.
        @type members: C{list} of C{str}
        N)rA)r
rAs  r�setGroupMembersz!GroupConversation.setGroupMembers�s����rc��td��)a
        Change the topic for the group conversation window and display this
        change to the user.

        @param topic: This group's topic.
        @type topic: C{str}

        @param author: The person changing the topic.
        @type author: C{str}
        r+r,)r
�topic�authors   r�setTopiczGroupConversation.setTopic�s��"�"I�J�Jrc�X�||jvr|jj|�yy)z�
        Add the given member to the list of members in the group conversation
        and displays this to the user.

        @param member: The person joining the group conversation.
        @type member: C{str}
        N)rAr�r
�members  r�memberJoinedzGroupConversation.memberJoined�s'������%��L�L����'�&rc��||jvr7|jj|�|jj|�yy)a
        Change the nickname for a member of the group conversation and displays
        this change to the user.

        @param oldnick: The old nickname.
        @type oldnick: C{str}

        @param newnick: The new nickname.
        @type newnick: C{str}
        N)rArr)r
�oldnickrs   r�memberChangedNickz#GroupConversation.memberChangedNick	s9���d�l�l�"��L�L����(��L�L����(�#rc�X�||jvr|jj|�yy)z�
        Delete the given member from the list of members in the group
        conversation and displays the change to the user.

        @param member: The person leaving the group conversation.
        @type member: C{str}
        N)rArrPs  r�
memberLeftzGroupConversation.memberLefts'���T�\�\�!��L�L����'�"rr<)r"r#r$r%rr/r2r7rHrJrNrRrUrWr&rrr>r>�s=���
�K�K�0�
K��K�	(�
)�	(rr>c�R�eZdZdZd�Zd�Zd�Zd�Zedfd�Z	e
dfd�Zd	�Zd
�Z
d�Zy)
�ChatUIa�
    A GUI chat client.

    @type conversations: C{dict} of L{Conversation}
    @ivar conversations: A cache of all the direct windows.

    @type groupConversations: C{dict} of L{GroupConversation}
    @ivar groupConversations: A cache of all the group windows.

    @type persons: C{dict} with keys that are a C{tuple} of (C{str},
       L{IAccount<interfaces.IAccount>} provider) and values that are
       L{IPerson<interfaces.IPerson>} provider
    @ivar persons: A cache of all the users associated with this client.

    @type groups: C{dict} with keys that are a C{tuple} of (C{str},
        L{IAccount<interfaces.IAccount>} provider) and values that are
        L{IGroup<interfaces.IGroup>} provider
    @ivar groups: A cache of all the groups associated with this client.

    @type onlineClients: C{list} of L{IClient<interfaces.IClient>} providers
    @ivar onlineClients: A list of message sources currently online.

    @type contactsList: L{ContactsList}
    @ivar contactsList: A contacts list.
    c�j�i|_i|_i|_i|_g|_t|�|_yr<)�
conversations�groupConversations�persons�groups�
onlineClientsr�contactsListr.s rrzChatUI.__init__?s5�����"$������������(��.��rc�r�|jj|�|jj|�|S)aZ
        Notify the user that an account has been signed on to.

        @type client: L{IClient<interfaces.IClient>} provider
        @param client: The client account for the person who has just signed on.

        @rtype: L{IClient<interfaces.IClient>} provider
        @return: The client, so that it may be used in a callback chain.
        )r_rr`rrs  rrzChatUI.registerAccountClientGs1��	
���!�!�&�)����/�/��7��
rc�p�|jj|�|jj|�y)z�
        Notify the user that an account has been signed off or disconnected.

        @type client: L{IClient<interfaces.IClient>} provider
        @param client: The client account for the person who has just signed
            off.
        N)r_rr`rrs  rrzChatUI.unregisterAccountClientUs,��	
���!�!�&�)����1�1�&�9rc��|jS)z�
        Get the contacts list associated with this chat window.

        @rtype: L{ContactsList}
        @return: The contacts list associated with this chat window.
        )r`r.s r�getContactsListzChatUI.getContactsList`s��� � � rFc��|jj|�}|s|||�}||j|<|r|j�|S|j�|S)a
        For the given person object, return the conversation window or create
        and return a new conversation window if one does not exist.

        @type person: L{IPerson<interfaces.IPerson>} provider
        @param person: The person whose conversation window we want to get.

        @type Class: L{IConversation<interfaces.IConversation>} implementor
        @param Class: The kind of conversation window we want. If the conversation
            window for this person didn't already exist, create one of this type.

        @type stayHidden: C{bool}
        @param stayHidden: Whether or not the conversation window should stay
            hidden.

        @rtype: L{IConversation<interfaces.IConversation>} provider
        @return: The conversation window.
        )r[�getr2r/)r
r�Class�
stayHidden�convs     r�getConversationzChatUI.getConversationis\��&�!�!�%�%�f�-������&�D�)-�D���v�&���I�I�K���
�I�I�K��rc��|jj|�}|s|||�}||j|<|r|j�|S|j�|S)a 
        For the given group object, return the group conversation window or
        create and return a new group conversation window if it doesn't exist.

        @type group: L{IGroup<interfaces.IGroup>} provider
        @param group: The group whose conversation window we want to get.

        @type Class: L{IConversation<interfaces.IConversation>} implementor
        @param Class: The kind of conversation window we want. If the conversation
            window for this person didn't already exist, create one of this type.

        @type stayHidden: C{bool}
        @param stayHidden: Whether or not the conversation window should stay
            hidden.

        @rtype: L{IGroupConversation<interfaces.IGroupConversation>} provider
        @return: The group conversation window.
        )r\rfr2r/)r
r@rgrhris     r�getGroupConversationzChatUI.getGroupConversation�s\��&�&�&�*�*�5�1������%�D�-1�D�#�#�E�*���I�I�K���
�I�I�K��rc��|j}|jj||f�}|s"|j|�}||j||f<|S)a
        For the given name and account client, return an instance of a
        L{IGroup<interfaces.IPerson>} provider or create and return a new
        instance of a L{IGroup<interfaces.IPerson>} provider.

        @type name: C{str}
        @param name: The name of the person of interest.

        @type client: L{IClient<interfaces.IClient>} provider
        @param client: The client account of interest.

        @rtype: L{IPerson<interfaces.IPerson>} provider
        @return: The person with that C{name}.
        )�accountr]rf�	getPerson)r
rrrn�ps     rrozChatUI.getPerson�sO���.�.���L�L���d�G�_�-����!�!�$�'�A�*+�D�L�L��w��'��rc��|j}|jj||f�}|s"|j|�}||j||f<|S)a
        For the given name and account client, return an instance of a
        L{IGroup<interfaces.IGroup>} provider or create and return a new instance
        of a L{IGroup<interfaces.IGroup>} provider.

        @type name: C{str}
        @param name: The name of the group of interest.

        @type client: L{IClient<interfaces.IClient>} provider
        @param client: The client account of interest.

        @rtype: L{IGroup<interfaces.IGroup>} provider
        @return: The group with that C{name}.
        )rnr^rf�getGroup)r
rrrn�gs     rrrzChatUI.getGroup�sM��$�.�.���K�K�O�O�T�7�O�,���� � ��&�A�)*�D�K�K��g�
�&��rc�r�|j}||jf|jvr�|jj	|�}|r|j||�|jj||�|j||jf=||_||j|j|jf<yy)a�
        For the given C{person}, change the C{person}'s C{name} to C{newnick}
        and tell the contact list and any conversation windows with that
        C{person} to change as well.

        @type person: L{IPerson<interfaces.IPerson>} provider
        @param person: The person whose nickname will get changed.

        @type newnick: C{str}
        @param newnick: The new C{name} C{person} will take.
        N)rrnr]r[rfr!r`)r
rrrTris     rr!zChatUI.contactChangedNick�s����+�+���V�^�^�$����4��%�%�)�)�&�1�D���'�'���8����0�0���A����W�f�n�n�4�5�!�F�K�8>�D�L�L����f�n�n�4�5�5rN)r"r#r$r%rrrrdr(rjr>rlrorrr!r&rrrYrY$sC���4/��	:�!�-9�U��:1B�e��:�,�2?rrYN)	r%�twisted.words.im.localsrrrrr(r>rYr&rr�<module>rvsE��
�:�9�W6�W6�tA#�A#�Hw(�w(�tB?�B?r