+
    üÐj@  ã                   ón   € R t ^ RIHtHtHt  ! R R4      t ! R R4      t ! R R4      t ! R R	4      tR
# )z.
Base classes for Instance Messenger clients.
)ÚAWAYÚOFFLINEÚONLINEc                   óB   a € ] tR t^t o RtR tR tR tR tR t	Rt
V tR# )	ÚContactsLista4  
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                ó<   € Wn         / V n        / V n        . V n        R# )z`
@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__ÚContactsList.__init__    s   € ð
 ŒØˆŒØ ˆÔØˆŽó    c                ó¼  € VP                   V P                  9  d   WP                  VP                   &   VP                   V P                  9  dC   VP                  \        8X  g   VP                  \
        8X  d   WP                  VP                   &   VP                   V P                  9   d1   VP                  \        8X  d   V P                  VP                    R# R# R# )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
   Ústatusr   r   r   )r   Úpersons   &&r   ÚsetContactStatusÚContactsList.setContactStatus*   s—   € ð �;‰;˜dŸm™mÔ+Ø)/�M‰M˜&Ÿ+™+Ñ&Ø�;‰;˜d×1Ñ1Ô1Ø�M‰MœVÔ# v§}¡}¼Ô'<à/5×Ñ §¡Ñ,Ø�;‰;˜$×-Ñ-Ô-°&·-±-Ä7Ô2JØ×#Ñ# F§K¡KÒ0ñ 3KÑ-r   c                ó`   € WP                   9  d   V P                   P                  V4       R# R# )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   ÚregisterAccountClientÚ"ContactsList.registerAccountClient:   s%   € ð Ÿ™Ô%Ø�L‰L×Ñ Ö'ñ &r   c                ó`   € WP                   9   d   V P                   P                  V4       R# R# )z×
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   Úremover   s   &&r   ÚunregisterAccountClientÚ$ContactsList.unregisterAccountClientD   s%   € ð —\‘\Ô!Ø�L‰L×Ñ Ö'ñ "r   c                óÞ   € VP                   pW0P                  9   dQ   V P                  V W!n         WP                  V&   W0P                  9   d   V P                  V WP                  V&   R# R# R# )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)r   r	   r
   )r   r   ÚnewnickÚoldnames   &&& r   ÚcontactChangedNickÚContactsList.contactChangedNickP   sf   € ð —+‘+ˆØ—m‘mÔ#Ø—‘˜gÐ&Ø!ŒKØ%+�M‰M˜'Ñ"Ø×-Ñ-Ô-Ø×'Ñ'¨Ð0Ø/5×#Ñ# GÓ,ñ .ñ	 $r   )r   r   r	   r
   N)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__r   r   r   r   r$   Ú__static_attributes__Ú__classdictcell__©Ú__classdict__s   @r   r   r      s(   ø‡ € ñò&ò1ò (ò
(÷6ð 6r   r   c                   óL   a € ] tR t^ft o RtR tR tR tR tR
R lt	R t
R	tV tR# )Ú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                ó   € W n         Wn        R# )zÚ
@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   r   r   s   &&&r   r   ÚConversation.__init__q   s   € ð ŒØŽr   c                ó   € \        R4      h)z!
Display the ConversationWindow.
ú%Subclasses must implement this method©ÚNotImplementedError©r   s   &r   ÚshowÚConversation.show|   ó   € ô "Ð"IÓJÐJr   c                ó   € \        R4      h)z
Hide the ConversationWindow.
r5   r6   r8   s   &r   ÚhideÚConversation.hide‚   r;   r   c                ó>   € V P                   P                  VR4       R# )zq
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   ÚsendTextÚConversation.sendTextˆ   s   € ð 	�‰×Ñ  dÖ+r   Nc                ó   € \        R4      h)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}
r5   r6   )r   rB   Úmetadatas   &&&r   ÚshowMessageÚConversation.showMessage‘   s   € ô "Ð"IÓJÐJr   c                ó&   € W P                   n        R# )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)r   r   )r   r   r"   s   &&&r   r$   ÚConversation.contactChangedNick�   s   € ð #�‰Ör   r2   ©N)r&   r'   r(   r)   r*   r   r9   r=   rC   rG   r$   r+   r,   r-   s   @r   r0   r0   f   s0   ø‡ € ñò	òKòKò,ô
K÷
#ð 
#r   r0   c                   ód   a € ] tR t^ªt o RtR tR tR tR tRR lt	R t
R	 tR
 tR tR tRtV tR# )ÚGroupConversationam  
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                ó,   € W n         Wn        . V n        R# )zØ
@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   rP   r   s   &&&r   r   ÚGroupConversation.__init__¸   s   € ð ŒØŒ
ØˆŽr   c                ó   € \        R4      h)z&
Display the GroupConversationWindow.
r5   r6   r8   s   &r   r9   ÚGroupConversation.showÄ   r;   r   c                ó   € \        R4      h)z#
Hide the GroupConversationWindow.
r5   r6   r8   s   &r   r=   ÚGroupConversation.hideÊ   r;   r   c                ó>   € V P                   P                  VR4       R# )zO
Send text to the group.

@param text: The text to be sent.
@type text: C{str}
N)rP   ÚsendGroupMessagerA   s   &&r   rC   ÚGroupConversation.sendTextÐ   s   € ð 	�
‰
×#Ñ# D¨$Ö/r   Nc                ó   € \        R4      h)a  
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}
r5   r6   )r   ÚsenderrB   rF   s   &&&&r   ÚshowGroupMessageÚ"GroupConversation.showGroupMessageÙ   s   € ô "Ð"IÓJÐJr   c                ó   € Wn         R# )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)rQ   )r   rQ   s   &&r   ÚsetGroupMembersÚ!GroupConversation.setGroupMembersè   s	   € ð Žr   c                ó   € \        R4      h)zÔ
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}
r5   r6   )r   ÚtopicÚauthors   &&&r   ÚsetTopicÚGroupConversation.setTopicñ   s   € ô "Ð"IÓJÐJr   c                ó`   € WP                   9  d   V P                   P                  V4       R# R# )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)rQ   r   ©r   Úmembers   &&r   ÚmemberJoinedÚGroupConversation.memberJoinedþ   s%   € ð Ÿ™Ô%Ø�L‰L×Ñ Ö'ñ &r   c                ó–   € WP                   9   d9   V P                   P                  V4       V P                   P                  V4       R# R# )zÔ
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)rQ   r   r   )r   Úoldnickr"   s   &&&r   ÚmemberChangedNickÚ#GroupConversation.memberChangedNick	  s7   € ð —l‘lÔ"Ø�L‰L×Ñ Ô(Ø�L‰L×Ñ Ö(ñ #r   c                ó`   € WP                   9   d   V P                   P                  V4       R# R# )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)rQ   r   rg   s   &&r   Ú
memberLeftÚGroupConversation.memberLeft  s%   € ð —\‘\Ô!Ø�L‰L×Ñ Ö'ñ "r   rO   rK   )r&   r'   r(   r)   r*   r   r9   r=   rC   r\   r_   rd   ri   rm   rp   r+   r,   r-   s   @r   rM   rM   ª   sE   ø‡ € ñò
òKòKò0ôKòòKò	(ò)÷	(ð 	(r   rM   c                   ój   a € ] tR tRt o RtR tR tR tR t]	R3R lt
]R3R	 ltR
 tR tR tRtV tR# )ÚChatUIi$  a°  
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                ól   € / V n         / V n        / V n        / V n        . V n        \        V 4      V n        R # rK   )ÚconversationsÚgroupConversationsÚpersonsÚgroupsÚonlineClientsr   ÚcontactsListr8   s   &r   r   ÚChatUI.__init__?  s5   € ØˆÔØ"$ˆÔØˆŒØˆŒØˆÔÜ(¨Ó.ˆÖr   c                ór   € V P                   P                  V4       V P                  P                  V4       V# )a*  
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.
)ry   r   rz   r   r   s   &&r   r   ÚChatUI.registerAccountClientG  s1   € ð 	×Ñ×!Ñ! &Ô)Ø×Ñ×/Ñ/°Ô7Øˆr   c                ór   € V P                   P                  V4       V P                  P                  V4       R# )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)ry   r   rz   r   r   s   &&r   r   ÚChatUI.unregisterAccountClientU  s,   € ð 	×Ñ×!Ñ! &Ô)Ø×Ñ×1Ñ1°&Ö9r   c                ó   € V P                   # )z�
Get the contacts list associated with this chat window.

@rtype: L{ContactsList}
@return: The contacts list associated with this chat window.
)rz   r8   s   &r   ÚgetContactsListÚChatUI.getContactsList`  s   € ð × Ñ Ð r   Fc                óÌ   € V P                   P                  V4      pV'       g   V! W4      pW@P                   V&   V'       d   VP                  4        V# VP                  4        V# )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.
)ru   Úgetr=   r9   )r   r   ÚClassÚ
stayHiddenÚconvs   &&&& r   ÚgetConversationÚChatUI.getConversationi  sX   € ð& ×!Ñ!×%Ñ% fÓ-ˆßÙ˜Ó&ˆDØ)-×Ñ˜vÑ&ßØ�I‰IŒKð ˆð �I‰IŒKØˆr   c                óÌ   € V P                   P                  V4      pV'       g   V! W4      pW@P                   V&   V'       d   VP                  4        V# VP                  4        V# )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.
)rv   r„   r=   r9   )r   rP   r…   r†   r‡   s   &&&& r   ÚgetGroupConversationÚChatUI.getGroupConversation†  sX   € ð& ×&Ñ&×*Ñ*¨5Ó1ˆßÙ˜Ó%ˆDØ-1×#Ñ# EÑ*ßØ�I‰IŒKð ˆð �I‰IŒKØˆr   c                ó¦   € VP                   pV P                  P                  W34      pV'       g!   VP                  V4      pW@P                  W3&   V# )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}.
)Úaccountrw   r„   Ú	getPerson)r   r   r   rŽ   Úps   &&&  r   r�   ÚChatUI.getPerson£  sI   € ð —.‘.ˆØ�L‰L×Ñ˜d˜_Ó-ˆßØ×!Ñ! $Ó'ˆAØ*+�L‰L˜˜Ñ'Øˆr   c                ó¦   € VP                   pV P                  P                  W34      pV'       g!   VP                  V4      pW@P                  W3&   V# )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}.
)rŽ   rx   r„   ÚgetGroup)r   r   r   rŽ   Úgs   &&&  r   r“   ÚChatUI.getGroup¹  sG   € ð$ —.‘.ˆØ�K‰K�O‰O˜T˜OÓ,ˆßØ× Ñ  Ó&ˆAØ)*�K‰K˜˜Ñ&Øˆr   c                ó|  € VP                   pW1P                  3V P                  9   d”   V P                  P	                  V4      pV'       d   VP                  W4       V P                  P                  W4       V P                  W1P                  3 W!n         WP                  VP                   VP                  3&   R# R# )ac  
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)r   rŽ   rw   ru   r„   r$   rz   )r   r   r"   rl   r‡   s   &&&  r   r$   ÚChatUI.contactChangedNickÒ  s‘   € ð —+‘+ˆØ—^‘^Ð$¨¯©Ô4Ø×%Ñ%×)Ñ)¨&Ó1ˆDßØ×'Ñ'¨Ô8Ø×Ñ×0Ñ0°ÔAØ—‘˜W§n¡nÐ4Ð5Ø!ŒKØ8>�L‰L˜Ÿ™ f§n¡nÐ4Ó5ñ 5r   )rz   ru   rv   rx   ry   rw   N)r&   r'   r(   r)   r*   r   r   r   r�   r0   rˆ   rM   r‹   r�   r“   r$   r+   r,   r-   s   @r   rs   rs   $  sK   ø‡ € ñò4/òò	:ò!ð -9ÀUô ð: 1BÈeô ò:ò,÷2?ð ?r   rs   N)	r*   Útwisted.words.im.localsr   r   r   r   r0   rM   rs   © r   r   Ú<module>rš      sE   ðñ
÷ :Ñ 9÷W6ñ W6÷tA#ñ A#÷Hw(ñ w(÷tB?ó B?r   