Reimplemeted the /dtmf command

This commit is contained in:
Alexander Cherniuk 2010-08-07 17:26:12 +03:00
parent 6a50a96be2
commit d9c7fca2de
2 changed files with 18 additions and 13 deletions

View File

@ -182,4 +182,11 @@ class CommandTools:
""" """
Get the current connection object. Get the current connection object.
""" """
return gajim.connections[self.account] return gajim.connections[self.account]
@property
def full_jid(self):
"""
Get a full JID of the contact.
"""
return self.contact.get_full_jid()

View File

@ -181,19 +181,17 @@ class StandardCommonChatCommands(CommandContainer):
gajim.connections[self.account].sendPing(self.contact) gajim.connections[self.account].sendPing(self.contact)
@command @command
@doc(_("Send DTMF events through an open audio session")) @doc(_("Send DTMF sequence through an open audio session"))
def dtmf(self, events): def dtmf(self, sequence):
if not self.audio_sid: if not self.audio_sid:
raise CommandError(_("There is no open audio session with this contact")) raise CommandError(_("No open audio sessions with the contact"))
# Valid values for DTMF tones are *, # or a number. for tone in sequence:
events = [e for e in events if e in ('*', '#') or e.isdigit()] if not (tone in ("*", "#") or tone.isdigit()):
if events: raise CommandError(_("%s is not a valid tone") % tone)
session = gajim.connections[self.account].get_jingle_session( gjs = self.connection.get_jingle_session
self.contact.get_full_jid(), self.audio_sid) session = gjs(self.full_jid, self.audio_sid)
content = session.get_content('audio') content = session.get_content("audio")
content.batch_dtmf(events) content.batch_dtmf(sequence)
else:
raise CommandError(_("No valid DTMF event specified"))
@command @command
@doc(_("Toggle audio session")) @doc(_("Toggle audio session"))