message = QueuedMessage(content, IsComposingDocument.content_type, recipients=recipients, notify_progress=False) self._enqueue_message(message) return message.id def set_local_nickname(self, nickname): if not self.nickname_allowed: raise ChatStreamError('Setting nickname is not supported') message_id = '%x' % random.getrandbits(64) self._set_local_nickname(nickname, message_id) return message_id OTRTransport.register(ChatStream) # Chat related objects, including CPIM support as defined in RFC3862 # class ChatIdentity(object): _format_re = re.compile( r'^(?:"?(?P<display_name>[^<]*[^"\s])"?)?\s*<(?P<uri>sips?:.+)>$') def __init__(self, uri, display_name=None): self.uri = uri self.display_name = display_name def __eq__(self, other): if isinstance(other, ChatIdentity):
if notification.data.originator == 'remote': if self.secret: self.otr_session.smp_answer(secret=self.secret) else: self.otr_session.smp_abort() def _NH_OTRSessionSMPVerificationDidNotStart(self, notification): self.smp_status = notification.data.reason self.smp_done.set() def _NH_OTRSessionSMPVerificationDidEnd(self, notification): self.same_secrets = notification.data.same_secrets self.smp_status = notification.data.status self.smp_done.set() OTRTransport.register(DataConnection) class NotificationObserver(object): implements(IObserver) def start(self): notification_center = NotificationCenter() notification_center.add_observer(self) def stop(self): notification_center = NotificationCenter() notification_center.remove_observer(self) @staticmethod def handle_notification(notification):
def send_composing_indication(self, state, refresh=None, last_active=None, recipients=None): content = IsComposingDocument.create(state=State(state), refresh=Refresh(refresh) if refresh is not None else None, last_active=LastActive(last_active) if last_active is not None else None, content_type=ContentType('text')) message = QueuedMessage(content, IsComposingDocument.content_type, recipients=recipients, notify_progress=False) self._enqueue_message(message) return message.id def set_local_nickname(self, nickname): if not self.nickname_allowed: raise ChatStreamError('Setting nickname is not supported') message_id = '%x' % random.getrandbits(64) self._set_local_nickname(nickname, message_id) return message_id OTRTransport.register(ChatStream) # Chat related objects, including CPIM support as defined in RFC3862 # class ChatIdentity(object): _format_re = re.compile(r'^(?:"?(?P<display_name>[^<]*[^"\s])"?)?\s*<(?P<uri>sips?:.+)>$') def __init__(self, uri, display_name=None): self.uri = uri self.display_name = display_name def __eq__(self, other): if isinstance(other, ChatIdentity): return self.uri.user == other.uri.user and self.uri.host == other.uri.host
call_id = message.sip_callid last_media_type = 'chat' if message.media_type == 'chat' else 'sms' if message.media_type == 'chat': last_chat_timestamp = timestamp self.chatViewController.loadingProgressIndicator.stopAnimation_(None) self.chatViewController.loadingTextIndicator.setStringValue_("") def webviewFinishedLoading_(self, notification): self.document = self.outputView.mainFrameDocument() self.finishedLoading = True for script in self.messageQueue: self.outputView.stringByEvaluatingJavaScriptFromString_(script) self.messageQueue = [] if hasattr(self.delegate, "chatViewDidLoad_"): self.delegate.chatViewDidLoad_(self) def webView_decidePolicyForNavigationAction_request_frame_decisionListener_( self, webView, info, request, frame, listener): # intercept link clicks so that they are opened in Safari theURL = info[WebActionOriginalURLKey] if theURL.scheme() == "file": listener.use() else: listener.ignore() NSWorkspace.sharedWorkspace().openURL_(theURL) OTRTransport.register(SMSViewController)