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
|
@ -1510,22 +1510,23 @@ class ChatControl(ChatControlBase):
|
|||
def _update_jingle(self, jingle_type):
|
||||
if jingle_type not in ('audio', 'video'):
|
||||
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.__dict__['_' + jingle_type + '_banner_image'].hide()
|
||||
banner_image.hide()
|
||||
else:
|
||||
self.__dict__['_' + jingle_type + '_banner_image'].show()
|
||||
banner_image.show()
|
||||
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)
|
||||
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)
|
||||
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)
|
||||
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)
|
||||
self.update_toolbar()
|
||||
|
||||
|
@ -1566,27 +1567,27 @@ class ChatControl(ChatControlBase):
|
|||
|
||||
if state in states:
|
||||
jingle_state = states[state]
|
||||
if self.__dict__[jingle_type + '_state'] == jingle_state:
|
||||
if getattr(self, jingle_type + '_state') == jingle_state:
|
||||
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
|
||||
# We need to do that before modifying the sid
|
||||
if state == 'not_available':
|
||||
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'):
|
||||
self.__dict__[jingle_type + '_sid'] = None
|
||||
setattr(self, jingle_type + '_sid', None)
|
||||
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'):
|
||||
self.__dict__['_' + jingle_type + '_button'].set_active(True)
|
||||
getattr(self, '_' + jingle_type + '_button').set_active(True)
|
||||
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):
|
||||
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_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():
|
||||
path_to_img = os.path.join(gajim.DATA_DIR, 'pixmaps',
|
||||
'mic_active.png')
|
||||
if self.audio_state == self.JINGLE_STATE_AVAILABLE:
|
||||
sid = gajim.connections[self.account].startVoIP(
|
||||
self.contact.get_full_jid())
|
||||
self.set_audio_state('connecting', sid)
|
||||
if getattr(self, jingle_type + '_state') == self.JINGLE_STATE_AVAILABLE:
|
||||
sid = getattr(gajim.connections[self.account],
|
||||
'start_' + jingle_type)(self.contact.get_full_jid())
|
||||
getattr(self, 'set_' + jingle_type + '_state')('connecting', sid)
|
||||
else:
|
||||
path_to_img = os.path.join(gajim.DATA_DIR, 'pixmaps',
|
||||
'mic_inactive.png')
|
||||
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:
|
||||
content = session.get_content('audio')
|
||||
content = session.get_content(jingle_type)
|
||||
if content:
|
||||
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)
|
||||
|
||||
def on_audio_button_toggled(self, widget):
|
||||
self.on_jingle_button_toggled(widget, 'audio')
|
||||
|
||||
def on_video_button_toggled(self, widget):
|
||||
if widget.get_active():
|
||||
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)
|
||||
self.on_jingle_button_toggled(widget, 'video')
|
||||
|
||||
def _toggle_gpg(self):
|
||||
if not self.gpg_is_active and not self.contact.keyID:
|
||||
|
|
|
@ -105,7 +105,7 @@ class ConnectionJingle(object):
|
|||
|
||||
raise xmpp.NodeProcessed
|
||||
|
||||
def startVoIP(self, jid):
|
||||
def start_audio(self, jid):
|
||||
if self.get_jingle_session(jid, media='audio'):
|
||||
return self.get_jingle_session(jid, media='audio').sid
|
||||
jingle = self.get_jingle_session(jid, media='video')
|
||||
|
@ -118,7 +118,7 @@ class ConnectionJingle(object):
|
|||
jingle.start_session()
|
||||
return jingle.sid
|
||||
|
||||
def startVideoIP(self, jid):
|
||||
def start_video(self, jid):
|
||||
if self.get_jingle_session(jid, media='video'):
|
||||
return self.get_jingle_session(jid, media='video').sid
|
||||
jingle = self.get_jingle_session(jid, media='audio')
|
||||
|
|
|
@ -66,10 +66,10 @@ class JingleContent(object):
|
|||
'iq-result': [],
|
||||
'iq-error': [],
|
||||
# these are called when *we* sent these stanzas
|
||||
'content-accept-sent': [self.__fillJingleStanza],
|
||||
'content-add-sent': [self.__fillJingleStanza],
|
||||
'session-initiate-sent': [self.__fillJingleStanza],
|
||||
'session-accept-sent': [self.__fillJingleStanza],
|
||||
'content-accept-sent': [self.__fill_jingle_stanza],
|
||||
'content-add-sent': [self.__fill_jingle_stanza],
|
||||
'session-initiate-sent': [self.__fill_jingle_stanza],
|
||||
'session-accept-sent': [self.__fill_jingle_stanza],
|
||||
'session-terminate-sent': [],
|
||||
}
|
||||
|
||||
|
@ -112,11 +112,11 @@ class JingleContent(object):
|
|||
content.addChild(self.transport.make_transport([candidate]))
|
||||
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
|
||||
"""
|
||||
self._fillContent(content)
|
||||
self._fill_content(content)
|
||||
self.sent = True
|
||||
content.addChild(node=self.transport.make_transport())
|
||||
|
||||
|
|
|
@ -121,7 +121,7 @@ class JingleRTPContent(JingleContent):
|
|||
def _stop_dtmf(self):
|
||||
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',
|
||||
attrs={'media': self.media}, payload=self.iter_codecs())
|
||||
|
||||
|
|
Loading…
Reference in New Issue