HEX
Server: Apache
System: Linux scp1.abinfocom.com 5.4.0-216-generic #236-Ubuntu SMP Fri Apr 11 19:53:21 UTC 2025 x86_64
User: confeduphaar (1010)
PHP: 8.1.33
Disabled: exec,passthru,shell_exec,system
Upload Files
File: //proc/self/root/lib/python3/dist-packages/twisted/words/im/__pycache__/basechat.cpython-38.pyc
U


W[F@�@sTdZddlmZmZmZGdd�d�ZGdd�d�ZGdd�d�ZGd	d
�d
�ZdS)z.
Base classes for Instance Messenger clients.
�)�OFFLINE�ONLINE�AWAYc@s8eZdZdZdd�Zdd�Zdd�Zdd	�Zd
d�ZdS)
�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
    cCs||_i|_i|_g|_dS)zx
        @param chatui: The GUI chat client associated with this contacts list.
        @type chatui: L{ChatUI}
        N)�chatui�contacts�onlineContacts�clients)�selfr�r�;/usr/lib/python3/dist-packages/twisted/words/im/basechat.py�__init__szContactsList.__init__cCsh|j|jkr||j|j<|j|jkrD|jtks8|jtkrD||j|j<|j|jkrd|jtkrd|j|j=dS)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)�namerrZstatusrrr)r
�personrrr�setContactStatus*s���zContactsList.setContactStatuscCs||jkr|j�|�dS)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
�clientrrr�registerAccountClient;s
z"ContactsList.registerAccountClientcCs||jkr|j�|�dS)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	�removerrrr�unregisterAccountClientFs	
z$ContactsList.unregisterAccountClientcCsH|j}||jkrD|j|=||_||j|<||jkrD|j|=||j|<dS)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)rrr)r
r�newnickZoldnamerrr�contactChangedNickSs


zContactsList.contactChangedNickN)	�__name__�
__module__�__qualname__�__doc__r
rrrrrrrrrs
rc@sBeZdZdZdd�Zdd�Zdd�Zdd	�Zddd�Zd
d�Z	d
S)�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}
    cCs||_||_dS)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)rr)r
rrrrrr
tszConversation.__init__cCstd��dS)z1
        Display the ConversationWindow.
        �%Subclasses must implement this methodN��NotImplementedError�r
rrr�show�szConversation.showcCstd��dS)z.
        Hide the ConversationWindow.
        rNrr!rrr�hide�szConversation.hidecCs|j�|d�dS)z�
        Send text to the person with whom the user is conversing.

        @param text: The text to be sent.
        @type text: C{str}
        N)rZsendMessage�r
�textrrr�sendText�szConversation.sendTextNcCstd��dS)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}
        rNr)r
r%�metadatarrr�showMessage�s
zConversation.showMessagecCs||j_dS)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
rrrrrr�s
zConversation.contactChangedNick)N)
rrrrr
r"r#r&r(rrrrrrjs	


rc@sbeZdZdZdd�Zdd�Zdd�Zdd	�Zddd�Zd
d�Z	dd�Z
dd�Zdd�Zdd�Z
d
S)�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}
    cCs||_||_g|_dS)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*rrrrr
�szGroupConversation.__init__cCstd��dS)z6
        Display the GroupConversationWindow.
        rNrr!rrrr"�szGroupConversation.showcCstd��dS)z3
        Hide the GroupConversationWindow.
        rNrr!rrrr#�szGroupConversation.hidecCs|j�|d�dS)zj
        Send text to the group.

        @param: The text to be sent.
        @type text: C{str}
        N)r*ZsendGroupMessager$rrrr&�szGroupConversation.sendTextNcCstd��dS)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}
        rNr)r
Zsenderr%r'rrr�showGroupMessage�s
z"GroupConversation.showGroupMessagecCs
||_dS)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)r+)r
r+rrr�setGroupMembers�sz!GroupConversation.setGroupMemberscCstd��dS)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}
        rNr)r
ZtopicZauthorrrr�setTopic�szGroupConversation.setTopiccCs||jkr|j�|�dS)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)r+r�r
�memberrrr�memberJoined
s
zGroupConversation.memberJoinedcCs&||jkr"|j�|�|j�|�dS)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)r+rr)r
�oldnickrrrr�memberChangedNicks
z#GroupConversation.memberChangedNickcCs||jkr|j�|�dS)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)r+rr/rrr�
memberLeft)s
zGroupConversation.memberLeft)N)rrrrr
r"r#r&r,r-r.r1r3r4rrrrr)�s



r)c@sdeZdZdZdd�Zdd�Zdd�Zdd	�Zed
fdd�Z	e
d
fd
d�Zdd�Zdd�Z
dd�ZdS)�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.
    cCs,i|_i|_i|_i|_g|_t|�|_dS)N)�
conversations�groupConversations�persons�groups�
onlineClientsr�contactsListr!rrrr
PszChatUI.__init__cCs|j�|�|j�|�|S)aa
        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 client: L{IClient<interfaces.IClient>} provider
        @return: The client, so that it may be used in a callback chain.
        )r:rr;rrrrrrYs
zChatUI.registerAccountClientcCs|j�|�|j�|�dS)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;rrrrrrhszChatUI.unregisterAccountClientcCs|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!rrr�getContactsListtszChatUI.getContactsListFcCs>|j�|�}|s$|||�}||j|<|r2|��n|��|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: 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.
        )r6�getr#r")r
r�Class�
stayHidden�convrrr�getConversation~s


zChatUI.getConversationcCs>|j�|�}|s$|||�}||j|<|r2|��n|��|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: 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.
        )r7r=r#r")r
r*r>r?r@rrr�getGroupConversation�s


zChatUI.getGroupConversationcCs6|j}|j�||f�}|s2|�|�}||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}.
        )�accountr8r=�	getPerson)r
rrrC�prrrrD�s
zChatUI.getPersoncCs6|j}|j�||f�}|s2|�|�}||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}.
        )rCr9r=�getGroup)r
rrrC�grrrrF�s
zChatUI.getGroupcCsj|j}||jf|jkrf|j�|�}|r2|�||�|j�||�|j||jf=||_||j|j|jf<dS)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)rrCr8r6r=rr;)r
rrr2r@rrrr�szChatUI.contactChangedNickN)rrrrr
rrr<rrAr)rBrDrFrrrrrr56s	
�
r5N)	rZtwisted.words.im.localsrrrrrr)r5rrrr�<module>s^I