Renamed a few methods, refactor on_*_button_toggled, use getattr/setattr instead of eval/self.__dict__
This commit is contained in:
parent
8946a2f898
commit
0edb624fec
4 changed files with 42 additions and 54 deletions
|
@ -1510,22 +1510,23 @@ class ChatControl(ChatControlBase):
|
||||||
def _update_jingle(self, jingle_type):
|
def _update_jingle(self, jingle_type):
|
||||||
if jingle_type not in ('audio', 'video'):
|
if jingle_type not in ('audio', 'video'):
|
||||||
return
|
return
|
||||||
if self.__dict__[jingle_type + '_state'] in (
|
banner_image = getattr(self, '_' + jingle_type + '_banner_image')
|
||||||
|
if getattr(self, jingle_type + '_state') in (
|
||||||
self.JINGLE_STATE_NOT_AVAILABLE, self.JINGLE_STATE_AVAILABLE):
|
self.JINGLE_STATE_NOT_AVAILABLE, self.JINGLE_STATE_AVAILABLE):
|
||||||
self.__dict__['_' + jingle_type + '_banner_image'].hide()
|
banner_image.hide()
|
||||||
else:
|
else:
|
||||||
self.__dict__['_' + jingle_type + '_banner_image'].show()
|
banner_image.show()
|
||||||
if self.audio_state == self.JINGLE_STATE_CONNECTING:
|
if self.audio_state == self.JINGLE_STATE_CONNECTING:
|
||||||
self.__dict__['_' + jingle_type + '_banner_image'].set_from_stock(
|
banner_image.set_from_stock(
|
||||||
gtk.STOCK_CONVERT, 1)
|
gtk.STOCK_CONVERT, 1)
|
||||||
elif self.audio_state == self.JINGLE_STATE_CONNECTION_RECEIVED:
|
elif self.audio_state == self.JINGLE_STATE_CONNECTION_RECEIVED:
|
||||||
self.__dict__['_' + jingle_type + '_banner_image'].set_from_stock(
|
banner_image.set_from_stock(
|
||||||
gtk.STOCK_NETWORK, 1)
|
gtk.STOCK_NETWORK, 1)
|
||||||
elif self.audio_state == self.JINGLE_STATE_CONNECTED:
|
elif self.audio_state == self.JINGLE_STATE_CONNECTED:
|
||||||
self.__dict__['_' + jingle_type + '_banner_image'].set_from_stock(
|
banner_image.set_from_stock(
|
||||||
gtk.STOCK_CONNECT, 1)
|
gtk.STOCK_CONNECT, 1)
|
||||||
elif self.audio_state == self.JINGLE_STATE_ERROR:
|
elif self.audio_state == self.JINGLE_STATE_ERROR:
|
||||||
self.__dict__['_' + jingle_type + '_banner_image'].set_from_stock(
|
banner_image.set_from_stock(
|
||||||
gtk.STOCK_DIALOG_WARNING, 1)
|
gtk.STOCK_DIALOG_WARNING, 1)
|
||||||
self.update_toolbar()
|
self.update_toolbar()
|
||||||
|
|
||||||
|
@ -1566,27 +1567,27 @@ class ChatControl(ChatControlBase):
|
||||||
|
|
||||||
if state in states:
|
if state in states:
|
||||||
jingle_state = states[state]
|
jingle_state = states[state]
|
||||||
if self.__dict__[jingle_type + '_state'] == jingle_state:
|
if getattr(self, jingle_type + '_state') == jingle_state:
|
||||||
return
|
return
|
||||||
self.__dict__[jingle_type + '_state'] = jingle_state
|
setattr(self, jingle_type + '_state', jingle_state)
|
||||||
|
|
||||||
# Destroy existing session with the user when he signs off
|
# Destroy existing session with the user when he signs off
|
||||||
# We need to do that before modifying the sid
|
# We need to do that before modifying the sid
|
||||||
if state == 'not_available':
|
if state == 'not_available':
|
||||||
gajim.connections[self.account].delete_jingle_session(
|
gajim.connections[self.account].delete_jingle_session(
|
||||||
self.contact.get_full_jid(), self.__dict__[jingle_type + '_sid'])
|
self.contact.get_full_jid(), getattr(self, jingle_type + '_sid'))
|
||||||
|
|
||||||
if state in ('not_available', 'available', 'stop'):
|
if state in ('not_available', 'available', 'stop'):
|
||||||
self.__dict__[jingle_type + '_sid'] = None
|
setattr(self, jingle_type + '_sid', None)
|
||||||
if state in ('connection_received', 'connecting'):
|
if state in ('connection_received', 'connecting'):
|
||||||
self.__dict__[jingle_type + '_sid'] = sid
|
setattr(self, jingle_type + '_sid', sid)
|
||||||
|
|
||||||
if state in ('connecting', 'connected', 'connection_received'):
|
if state in ('connecting', 'connected', 'connection_received'):
|
||||||
self.__dict__['_' + jingle_type + '_button'].set_active(True)
|
getattr(self, '_' + jingle_type + '_button').set_active(True)
|
||||||
elif state in ('not_available', 'stop'):
|
elif state in ('not_available', 'stop'):
|
||||||
self.__dict__['_' + jingle_type + '_button'].set_active(False)
|
getattr(self, '_' + jingle_type + '_button').set_active(False)
|
||||||
|
|
||||||
eval('self.update_' + jingle_type)()
|
getattr(self, 'update_' + jingle_type)()
|
||||||
|
|
||||||
def set_audio_state(self, state, sid=None, reason=None):
|
def set_audio_state(self, state, sid=None, reason=None):
|
||||||
self._set_jingle_state('audio', state, sid=sid, reason=reason)
|
self._set_jingle_state('audio', state, sid=sid, reason=reason)
|
||||||
|
@ -1799,45 +1800,32 @@ class ChatControl(ChatControlBase):
|
||||||
banner_name_label.set_markup(label_text)
|
banner_name_label.set_markup(label_text)
|
||||||
banner_name_label.set_tooltip_text(label_tooltip)
|
banner_name_label.set_tooltip_text(label_tooltip)
|
||||||
|
|
||||||
def on_audio_button_toggled(self, widget):
|
def on_jingle_button_toggled(self, widget, jingle_type):
|
||||||
|
path_to_img = os.path.join(gajim.DATA_DIR, 'pixmaps', '%s_%s.png'
|
||||||
|
% ({'audio': 'mic', 'video': 'cam'}[jingle_type],
|
||||||
|
{True: 'active', False: 'inactive'}[widget.get_active()]))
|
||||||
|
|
||||||
if widget.get_active():
|
if widget.get_active():
|
||||||
path_to_img = os.path.join(gajim.DATA_DIR, 'pixmaps',
|
if getattr(self, jingle_type + '_state') == self.JINGLE_STATE_AVAILABLE:
|
||||||
'mic_active.png')
|
sid = getattr(gajim.connections[self.account],
|
||||||
if self.audio_state == self.JINGLE_STATE_AVAILABLE:
|
'start_' + jingle_type)(self.contact.get_full_jid())
|
||||||
sid = gajim.connections[self.account].startVoIP(
|
getattr(self, 'set_' + jingle_type + '_state')('connecting', sid)
|
||||||
self.contact.get_full_jid())
|
|
||||||
self.set_audio_state('connecting', sid)
|
|
||||||
else:
|
else:
|
||||||
path_to_img = os.path.join(gajim.DATA_DIR, 'pixmaps',
|
|
||||||
'mic_inactive.png')
|
|
||||||
session = gajim.connections[self.account].get_jingle_session(
|
session = gajim.connections[self.account].get_jingle_session(
|
||||||
self.contact.get_full_jid(), self.audio_sid)
|
self.contact.get_full_jid(), getattr(self, jingle_type + '_sid'))
|
||||||
if session:
|
if session:
|
||||||
content = session.get_content('audio')
|
content = session.get_content(jingle_type)
|
||||||
if content:
|
if content:
|
||||||
session.remove_content(content.creator, content.name)
|
session.remove_content(content.creator, content.name)
|
||||||
img = self._audio_button.get_property('image')
|
|
||||||
|
img = getattr(self, '_' + jingle_type + '_button').get_property('image')
|
||||||
img.set_from_file(path_to_img)
|
img.set_from_file(path_to_img)
|
||||||
|
|
||||||
|
def on_audio_button_toggled(self, widget):
|
||||||
|
self.on_jingle_button_toggled(widget, 'audio')
|
||||||
|
|
||||||
def on_video_button_toggled(self, widget):
|
def on_video_button_toggled(self, widget):
|
||||||
if widget.get_active():
|
self.on_jingle_button_toggled(widget, 'video')
|
||||||
path_to_img = os.path.join(gajim.DATA_DIR, 'pixmaps',
|
|
||||||
'cam_active.png')
|
|
||||||
if self.video_state == self.JINGLE_STATE_AVAILABLE:
|
|
||||||
sid = gajim.connections[self.account].startVideoIP(
|
|
||||||
self.contact.get_full_jid())
|
|
||||||
self.set_video_state('connecting', sid)
|
|
||||||
else:
|
|
||||||
path_to_img = os.path.join(gajim.DATA_DIR, 'pixmaps',
|
|
||||||
'cam_inactive.png')
|
|
||||||
session = gajim.connections[self.account].get_jingle_session(
|
|
||||||
self.contact.get_full_jid(), self.video_sid)
|
|
||||||
if session:
|
|
||||||
content = session.get_content('video')
|
|
||||||
if content:
|
|
||||||
session.remove_content(content.creator, content.name)
|
|
||||||
img = self._video_button.get_property('image')
|
|
||||||
img.set_from_file(path_to_img)
|
|
||||||
|
|
||||||
def _toggle_gpg(self):
|
def _toggle_gpg(self):
|
||||||
if not self.gpg_is_active and not self.contact.keyID:
|
if not self.gpg_is_active and not self.contact.keyID:
|
||||||
|
|
|
@ -105,7 +105,7 @@ class ConnectionJingle(object):
|
||||||
|
|
||||||
raise xmpp.NodeProcessed
|
raise xmpp.NodeProcessed
|
||||||
|
|
||||||
def startVoIP(self, jid):
|
def start_audio(self, jid):
|
||||||
if self.get_jingle_session(jid, media='audio'):
|
if self.get_jingle_session(jid, media='audio'):
|
||||||
return self.get_jingle_session(jid, media='audio').sid
|
return self.get_jingle_session(jid, media='audio').sid
|
||||||
jingle = self.get_jingle_session(jid, media='video')
|
jingle = self.get_jingle_session(jid, media='video')
|
||||||
|
@ -118,7 +118,7 @@ class ConnectionJingle(object):
|
||||||
jingle.start_session()
|
jingle.start_session()
|
||||||
return jingle.sid
|
return jingle.sid
|
||||||
|
|
||||||
def startVideoIP(self, jid):
|
def start_video(self, jid):
|
||||||
if self.get_jingle_session(jid, media='video'):
|
if self.get_jingle_session(jid, media='video'):
|
||||||
return self.get_jingle_session(jid, media='video').sid
|
return self.get_jingle_session(jid, media='video').sid
|
||||||
jingle = self.get_jingle_session(jid, media='audio')
|
jingle = self.get_jingle_session(jid, media='audio')
|
||||||
|
|
|
@ -66,10 +66,10 @@ class JingleContent(object):
|
||||||
'iq-result': [],
|
'iq-result': [],
|
||||||
'iq-error': [],
|
'iq-error': [],
|
||||||
# these are called when *we* sent these stanzas
|
# these are called when *we* sent these stanzas
|
||||||
'content-accept-sent': [self.__fillJingleStanza],
|
'content-accept-sent': [self.__fill_jingle_stanza],
|
||||||
'content-add-sent': [self.__fillJingleStanza],
|
'content-add-sent': [self.__fill_jingle_stanza],
|
||||||
'session-initiate-sent': [self.__fillJingleStanza],
|
'session-initiate-sent': [self.__fill_jingle_stanza],
|
||||||
'session-accept-sent': [self.__fillJingleStanza],
|
'session-accept-sent': [self.__fill_jingle_stanza],
|
||||||
'session-terminate-sent': [],
|
'session-terminate-sent': [],
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -112,11 +112,11 @@ class JingleContent(object):
|
||||||
content.addChild(self.transport.make_transport([candidate]))
|
content.addChild(self.transport.make_transport([candidate]))
|
||||||
self.session.send_transport_info(content)
|
self.session.send_transport_info(content)
|
||||||
|
|
||||||
def __fillJingleStanza(self, stanza, content, error, action):
|
def __fill_jingle_stanza(self, stanza, content, error, action):
|
||||||
"""
|
"""
|
||||||
Add our things to session-initiate stanza
|
Add our things to session-initiate stanza
|
||||||
"""
|
"""
|
||||||
self._fillContent(content)
|
self._fill_content(content)
|
||||||
self.sent = True
|
self.sent = True
|
||||||
content.addChild(node=self.transport.make_transport())
|
content.addChild(node=self.transport.make_transport())
|
||||||
|
|
||||||
|
|
|
@ -121,7 +121,7 @@ class JingleRTPContent(JingleContent):
|
||||||
def _stop_dtmf(self):
|
def _stop_dtmf(self):
|
||||||
self.p2psession.stop_telephony_event(farsight.DTMF_METHOD_RTP_RFC4733)
|
self.p2psession.stop_telephony_event(farsight.DTMF_METHOD_RTP_RFC4733)
|
||||||
|
|
||||||
def _fillContent(self, content):
|
def _fill_content(self, content):
|
||||||
content.addChild(xmpp.NS_JINGLE_RTP + ' description',
|
content.addChild(xmpp.NS_JINGLE_RTP + ' description',
|
||||||
attrs={'media': self.media}, payload=self.iter_codecs())
|
attrs={'media': self.media}, payload=self.iter_codecs())
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue