fixed some whitespace thanks to 2to3 -f ws_comma
This commit is contained in:
parent
c9ad0f5d7d
commit
357d7db07d
44 changed files with 167 additions and 167 deletions
|
@ -71,11 +71,11 @@ class CommandWindow:
|
||||||
self.window.connect('delete-event',
|
self.window.connect('delete-event',
|
||||||
self.on_adhoc_commands_window_delete_event)
|
self.on_adhoc_commands_window_delete_event)
|
||||||
for name in ('back_button', 'forward_button',
|
for name in ('back_button', 'forward_button',
|
||||||
'execute_button','close_button','stages_notebook',
|
'execute_button', 'close_button', 'stages_notebook',
|
||||||
'retrieving_commands_stage_vbox',
|
'retrieving_commands_stage_vbox',
|
||||||
'command_list_stage_vbox','command_list_vbox',
|
'command_list_stage_vbox', 'command_list_vbox',
|
||||||
'sending_form_stage_vbox','sending_form_progressbar',
|
'sending_form_stage_vbox', 'sending_form_progressbar',
|
||||||
'notes_label','no_commands_stage_vbox','error_stage_vbox',
|
'notes_label', 'no_commands_stage_vbox', 'error_stage_vbox',
|
||||||
'error_description_label'):
|
'error_description_label'):
|
||||||
self.__dict__[name] = self.xml.get_object(name)
|
self.__dict__[name] = self.xml.get_object(name)
|
||||||
|
|
||||||
|
|
|
@ -266,7 +266,7 @@ class AdvancedConfigurationWindow(object):
|
||||||
|
|
||||||
def visible_func(self, model, treeiter):
|
def visible_func(self, model, treeiter):
|
||||||
search_string = self.entry.get_text().decode('utf-8').lower()
|
search_string = self.entry.get_text().decode('utf-8').lower()
|
||||||
for it in tree_model_pre_order(model,treeiter):
|
for it in tree_model_pre_order(model, treeiter):
|
||||||
if model[it][C_TYPE] != '':
|
if model[it][C_TYPE] != '':
|
||||||
opt_path = self.get_option_path(model, it)
|
opt_path = self.get_option_path(model, it)
|
||||||
if len(opt_path) == 3:
|
if len(opt_path) == 3:
|
||||||
|
|
|
@ -1053,7 +1053,7 @@ class ChatControlBase(MessageControl, ChatCommandProcessor, CommandTools):
|
||||||
self.scroll_to_end_id = None
|
self.scroll_to_end_id = None
|
||||||
return False
|
return False
|
||||||
|
|
||||||
def size_request(self, msg_textview , requisition):
|
def size_request(self, msg_textview, requisition):
|
||||||
"""
|
"""
|
||||||
When message_textview changes its size: if the new height will enlarge
|
When message_textview changes its size: if the new height will enlarge
|
||||||
the window, enable the scrollbar automatic policy. Also enable scrollbar
|
the window, enable the scrollbar automatic policy. Also enable scrollbar
|
||||||
|
|
|
@ -117,7 +117,7 @@ class OldEntry(xmpp.Node, object):
|
||||||
Get source link
|
Get source link
|
||||||
"""
|
"""
|
||||||
try:
|
try:
|
||||||
return self.getTag('feed').getTags('link',{'rel':'alternate'})[1].getData()
|
return self.getTag('feed').getTags('link', {'rel':'alternate'})[1].getData()
|
||||||
except Exception:
|
except Exception:
|
||||||
return None
|
return None
|
||||||
|
|
||||||
|
|
|
@ -73,7 +73,7 @@ class Config:
|
||||||
'notify_on_new_message': [ opt_bool, True ],
|
'notify_on_new_message': [ opt_bool, True ],
|
||||||
'autopopupaway': [ opt_bool, False ],
|
'autopopupaway': [ opt_bool, False ],
|
||||||
'sounddnd': [ opt_bool, False, _('Play sound when user is busy')],
|
'sounddnd': [ opt_bool, False, _('Play sound when user is busy')],
|
||||||
'use_notif_daemon': [ opt_bool, True , _('Use D-Bus and Notification-Daemon to show notifications') ],
|
'use_notif_daemon': [ opt_bool, True, _('Use D-Bus and Notification-Daemon to show notifications') ],
|
||||||
'showoffline': [ opt_bool, False ],
|
'showoffline': [ opt_bool, False ],
|
||||||
'show_only_chat_and_online': [ opt_bool, False, _('Show only online and free for chat contacts in roster.')],
|
'show_only_chat_and_online': [ opt_bool, False, _('Show only online and free for chat contacts in roster.')],
|
||||||
'show_transports_group': [ opt_bool, True ],
|
'show_transports_group': [ opt_bool, True ],
|
||||||
|
@ -115,7 +115,7 @@ class Config:
|
||||||
'emoticons_theme': [opt_str, 'static', '', True ],
|
'emoticons_theme': [opt_str, 'static', '', True ],
|
||||||
'ascii_formatting': [ opt_bool, True,
|
'ascii_formatting': [ opt_bool, True,
|
||||||
_('Treat * / _ pairs as possible formatting characters.'), True],
|
_('Treat * / _ pairs as possible formatting characters.'), True],
|
||||||
'show_ascii_formatting_chars': [ opt_bool, True , _('If True, do not '
|
'show_ascii_formatting_chars': [ opt_bool, True, _('If True, do not '
|
||||||
'remove */_ . So *abc* will be bold but with * * not removed.')],
|
'remove */_ . So *abc* will be bold but with * * not removed.')],
|
||||||
'rst_formatting_outgoing_messages': [ opt_bool, False,
|
'rst_formatting_outgoing_messages': [ opt_bool, False,
|
||||||
_('Uses ReStructured text markup to send HTML, plus ascii formatting if selected. For syntax, see http://docutils.sourceforge.net/docs/ref/rst/restructuredtext.html (If you want to use this, install docutils)')],
|
_('Uses ReStructured text markup to send HTML, plus ascii formatting if selected. For syntax, see http://docutils.sourceforge.net/docs/ref/rst/restructuredtext.html (If you want to use this, install docutils)')],
|
||||||
|
@ -268,7 +268,7 @@ class Config:
|
||||||
'max_conversation_lines': [opt_int, 500, _('Maximum number of lines that are printed in conversations. Oldest lines are cleared.')],
|
'max_conversation_lines': [opt_int, 500, _('Maximum number of lines that are printed in conversations. Oldest lines are cleared.')],
|
||||||
'attach_notifications_to_systray': [opt_bool, False, _('If True, notification windows from notification-daemon will be attached to systray icon.')],
|
'attach_notifications_to_systray': [opt_bool, False, _('If True, notification windows from notification-daemon will be attached to systray icon.')],
|
||||||
'check_idle_every_foo_seconds': [opt_int, 2, _('Choose interval between 2 checks of idleness.')],
|
'check_idle_every_foo_seconds': [opt_int, 2, _('Choose interval between 2 checks of idleness.')],
|
||||||
'latex_png_dpi': [opt_str, '108',_('Change the value to change the size of latex formulas displayed. The higher is larger.') ],
|
'latex_png_dpi': [opt_str, '108', _('Change the value to change the size of latex formulas displayed. The higher is larger.') ],
|
||||||
'uri_schemes': [opt_str, 'aaa aaas acap cap cid crid data dav dict dns fax file ftp go gopher h323 http https icap im imap info ipp iris iris.beep iris.xpc iris.xpcs iris.lwz ldap mid modem msrp msrps mtqp mupdate news nfs nntp opaquelocktoken pop pres rtsp service shttp sip sips snmp soap.beep soap.beeps tag tel telnet tftp thismessage tip tv urn vemmi xmlrpc.beep xmlrpc.beeps z39.50r z39.50s about cvs daap ed2k feed fish git iax2 irc ircs ldaps magnet mms rsync ssh svn sftp smb webcal', _('Valid uri schemes. Only schemes in this list will be accepted as "real" uri. (mailto and xmpp are handled separately)'), True],
|
'uri_schemes': [opt_str, 'aaa aaas acap cap cid crid data dav dict dns fax file ftp go gopher h323 http https icap im imap info ipp iris iris.beep iris.xpc iris.xpcs iris.lwz ldap mid modem msrp msrps mtqp mupdate news nfs nntp opaquelocktoken pop pres rtsp service shttp sip sips snmp soap.beep soap.beeps tag tel telnet tftp thismessage tip tv urn vemmi xmlrpc.beep xmlrpc.beeps z39.50r z39.50s about cvs daap ed2k feed fish git iax2 irc ircs ldaps magnet mms rsync ssh svn sftp smb webcal', _('Valid uri schemes. Only schemes in this list will be accepted as "real" uri. (mailto and xmpp are handled separately)'), True],
|
||||||
'ask_offline_status_on_connection': [ opt_bool, False, _('Ask offline status message to all offline contacts when connection to an accoutn is established. WARNING: This causes a lot of requests to be sent!') ],
|
'ask_offline_status_on_connection': [ opt_bool, False, _('Ask offline status message to all offline contacts when connection to an accoutn is established. WARNING: This causes a lot of requests to be sent!') ],
|
||||||
'shell_like_completion': [ opt_bool, False, _('If True, completion in groupchats will be like a shell auto-completion')],
|
'shell_like_completion': [ opt_bool, False, _('If True, completion in groupchats will be like a shell auto-completion')],
|
||||||
|
@ -342,7 +342,7 @@ class Config:
|
||||||
'msgwin-y-position': [opt_int, -1], # Default is to let the wm decide
|
'msgwin-y-position': [opt_int, -1], # Default is to let the wm decide
|
||||||
'msgwin-width': [opt_int, 480],
|
'msgwin-width': [opt_int, 480],
|
||||||
'msgwin-height': [opt_int, 440],
|
'msgwin-height': [opt_int, 440],
|
||||||
'listen_to_network_manager' : [opt_bool, True],
|
'listen_to_network_manager': [opt_bool, True],
|
||||||
'is_zeroconf': [opt_bool, False],
|
'is_zeroconf': [opt_bool, False],
|
||||||
'last_status': [opt_str, 'online'],
|
'last_status': [opt_str, 'online'],
|
||||||
'last_status_msg': [opt_str, ''],
|
'last_status_msg': [opt_str, ''],
|
||||||
|
@ -350,9 +350,9 @@ class Config:
|
||||||
'zeroconf_last_name': [ opt_str, '', '', True ],
|
'zeroconf_last_name': [ opt_str, '', '', True ],
|
||||||
'zeroconf_jabber_id': [ opt_str, '', '', True ],
|
'zeroconf_jabber_id': [ opt_str, '', '', True ],
|
||||||
'zeroconf_email': [ opt_str, '', '', True ],
|
'zeroconf_email': [ opt_str, '', '', True ],
|
||||||
'use_env_http_proxy' : [opt_bool, False],
|
'use_env_http_proxy': [opt_bool, False],
|
||||||
'answer_receipts' : [opt_bool, True, _('Answer to receipt requests')],
|
'answer_receipts': [opt_bool, True, _('Answer to receipt requests')],
|
||||||
'request_receipt' : [opt_bool, True, _('Sent receipt requests')],
|
'request_receipt': [opt_bool, True, _('Sent receipt requests')],
|
||||||
'publish_tune': [opt_bool, False],
|
'publish_tune': [opt_bool, False],
|
||||||
'publish_location': [opt_bool, False],
|
'publish_location': [opt_bool, False],
|
||||||
'subscribe_mood': [opt_bool, True],
|
'subscribe_mood': [opt_bool, True],
|
||||||
|
@ -493,7 +493,7 @@ class Config:
|
||||||
|
|
||||||
themes_default = {
|
themes_default = {
|
||||||
# sorted alphanum
|
# sorted alphanum
|
||||||
_('default'): [ '', '', '', 'B', '', '','', 'I', '', '', '', '', '','',
|
_('default'): [ '', '', '', 'B', '', '', '', 'I', '', '', '', '', '', '',
|
||||||
'', 'B' ],
|
'', 'B' ],
|
||||||
|
|
||||||
_('green'): [ '', '#94aa8c', '', 'B', '#0000ff', '#eff3e7',
|
_('green'): [ '', '#94aa8c', '', 'B', '#0000ff', '#eff3e7',
|
||||||
|
|
|
@ -1118,7 +1118,7 @@ class Connection(CommonConnection, ConnectionHandlers):
|
||||||
msg = '>>>>>> '
|
msg = '>>>>>> '
|
||||||
if self._proxy['type']=='bosh':
|
if self._proxy['type']=='bosh':
|
||||||
msg = '%s over BOSH %s' % (msg, self._proxy['bosh_uri'])
|
msg = '%s over BOSH %s' % (msg, self._proxy['bosh_uri'])
|
||||||
if self._proxy['type'] in ['http','socks5'] or self._proxy['bosh_useproxy']:
|
if self._proxy['type'] in ['http', 'socks5'] or self._proxy['bosh_useproxy']:
|
||||||
msg = '%s over proxy %s:%s' % (msg, self._proxy['host'], self._proxy['port'])
|
msg = '%s over proxy %s:%s' % (msg, self._proxy['host'], self._proxy['port'])
|
||||||
log.info(msg)
|
log.info(msg)
|
||||||
|
|
||||||
|
@ -1338,7 +1338,7 @@ class Connection(CommonConnection, ConnectionHandlers):
|
||||||
if not common.xmpp.isResultNode(resp):
|
if not common.xmpp.isResultNode(resp):
|
||||||
self.dispatch('PING_ERROR', (pingTo))
|
self.dispatch('PING_ERROR', (pingTo))
|
||||||
return
|
return
|
||||||
timeDiff = round(timePong - timePing,2)
|
timeDiff = round(timePong - timePing, 2)
|
||||||
self.dispatch('PING_REPLY', (pingTo, timeDiff))
|
self.dispatch('PING_REPLY', (pingTo, timeDiff))
|
||||||
if pingTo:
|
if pingTo:
|
||||||
timePing = time_time()
|
timePing = time_time()
|
||||||
|
@ -2054,7 +2054,7 @@ class Connection(CommonConnection, ConnectionHandlers):
|
||||||
def send_gc_subject(self, jid, subject):
|
def send_gc_subject(self, jid, subject):
|
||||||
if not self.connection:
|
if not self.connection:
|
||||||
return
|
return
|
||||||
msg_iq = common.xmpp.Message(jid,typ = 'groupchat', subject = subject)
|
msg_iq = common.xmpp.Message(jid, typ = 'groupchat', subject = subject)
|
||||||
self.connection.send(msg_iq)
|
self.connection.send(msg_iq)
|
||||||
|
|
||||||
def request_gc_config(self, room_jid):
|
def request_gc_config(self, room_jid):
|
||||||
|
@ -2178,8 +2178,8 @@ class Connection(CommonConnection, ConnectionHandlers):
|
||||||
username = gajim.config.get_per('accounts', self.name, 'name')
|
username = gajim.config.get_per('accounts', self.name, 'name')
|
||||||
iq = common.xmpp.Iq(typ = 'set', to = hostname)
|
iq = common.xmpp.Iq(typ = 'set', to = hostname)
|
||||||
q = iq.setTag(common.xmpp.NS_REGISTER + ' query')
|
q = iq.setTag(common.xmpp.NS_REGISTER + ' query')
|
||||||
q.setTagData('username',username)
|
q.setTagData('username', username)
|
||||||
q.setTagData('password',password)
|
q.setTagData('password', password)
|
||||||
self.connection.send(iq)
|
self.connection.send(iq)
|
||||||
|
|
||||||
def get_password(self, callback):
|
def get_password(self, callback):
|
||||||
|
@ -2260,7 +2260,7 @@ class Connection(CommonConnection, ConnectionHandlers):
|
||||||
item.addChild(node = form)
|
item.addChild(node = form)
|
||||||
else:
|
else:
|
||||||
for i in form.keys():
|
for i in form.keys():
|
||||||
item.setTagData(i,form[i])
|
item.setTagData(i, form[i])
|
||||||
def _on_response(resp):
|
def _on_response(resp):
|
||||||
jid = jid = helpers.get_jid_from_iq(resp)
|
jid = jid = helpers.get_jid_from_iq(resp)
|
||||||
tag = resp.getTag('query', namespace = common.xmpp.NS_SEARCH)
|
tag = resp.getTag('query', namespace = common.xmpp.NS_SEARCH)
|
||||||
|
|
|
@ -180,7 +180,7 @@ class ConnectionDisco:
|
||||||
frm=to)
|
frm=to)
|
||||||
iq.setAttr('id', id_)
|
iq.setAttr('id', id_)
|
||||||
query = iq.setTag('query')
|
query = iq.setTag('query')
|
||||||
query.setAttr('node','http://gajim.org#' + gajim.version.split('-', 1)[0])
|
query.setAttr('node', 'http://gajim.org#' + gajim.version.split('-', 1)[0])
|
||||||
for f in (common.xmpp.NS_BYTESTREAM, common.xmpp.NS_SI,
|
for f in (common.xmpp.NS_BYTESTREAM, common.xmpp.NS_SI,
|
||||||
common.xmpp.NS_FILE, common.xmpp.NS_COMMANDS):
|
common.xmpp.NS_FILE, common.xmpp.NS_COMMANDS):
|
||||||
feature = common.xmpp.Node('feature')
|
feature = common.xmpp.Node('feature')
|
||||||
|
@ -1634,7 +1634,7 @@ class ConnectionHandlers(ConnectionVcard, ConnectionBytestream,
|
||||||
is_continued = False
|
is_continued = False
|
||||||
if invite.getTag('invite').getTag('continue'):
|
if invite.getTag('invite').getTag('continue'):
|
||||||
is_continued = True
|
is_continued = True
|
||||||
self.dispatch('GC_INVITATION',(frm, jid_from, reason, password,
|
self.dispatch('GC_INVITATION', (frm, jid_from, reason, password,
|
||||||
is_continued))
|
is_continued))
|
||||||
|
|
||||||
def _presenceCB(self, con, prs):
|
def _presenceCB(self, con, prs):
|
||||||
|
|
|
@ -40,7 +40,7 @@ class GlobalEventsDispatcher(object):
|
||||||
if event_name in self.handlers:
|
if event_name in self.handlers:
|
||||||
handlers_list = self.handlers[event_name]
|
handlers_list = self.handlers[event_name]
|
||||||
i = 0
|
i = 0
|
||||||
for i,h in enumerate(handlers_list):
|
for i, h in enumerate(handlers_list):
|
||||||
if priority < h[0]:
|
if priority < h[0]:
|
||||||
break
|
break
|
||||||
|
|
||||||
|
|
|
@ -102,7 +102,7 @@ class FancyFormatter(logging.Formatter):
|
||||||
"""
|
"""
|
||||||
colors_mapping = {
|
colors_mapping = {
|
||||||
'DEBUG': colors.BLUE,
|
'DEBUG': colors.BLUE,
|
||||||
'INFO' : colors.GREEN,
|
'INFO': colors.GREEN,
|
||||||
'WARNING': colors.BROWN,
|
'WARNING': colors.BROWN,
|
||||||
'ERROR': colors.RED,
|
'ERROR': colors.RED,
|
||||||
'CRITICAL': colors.BRIGHT_RED,
|
'CRITICAL': colors.BRIGHT_RED,
|
||||||
|
|
|
@ -706,7 +706,7 @@ class OptionsParser:
|
||||||
"""
|
"""
|
||||||
dirs = ('../data', gajim.gajimpaths.root, gajim.DATA_DIR)
|
dirs = ('../data', gajim.gajimpaths.root, gajim.DATA_DIR)
|
||||||
for evt in gajim.config.get_per('soundevents'):
|
for evt in gajim.config.get_per('soundevents'):
|
||||||
path = gajim.config.get_per('soundevents', evt ,'path')
|
path = gajim.config.get_per('soundevents', evt, 'path')
|
||||||
# absolute and relative passes are necessary
|
# absolute and relative passes are necessary
|
||||||
path = helpers.strip_soundfile_path(path, dirs, abs=False)
|
path = helpers.strip_soundfile_path(path, dirs, abs=False)
|
||||||
path = helpers.strip_soundfile_path(path, dirs, abs=True)
|
path = helpers.strip_soundfile_path(path, dirs, abs=True)
|
||||||
|
|
|
@ -189,7 +189,7 @@ class NSLookupResolver(CommonResolver):
|
||||||
if not result:
|
if not result:
|
||||||
return []
|
return []
|
||||||
hosts = []
|
hosts = []
|
||||||
lines = result.replace('\r','').split('\n')
|
lines = result.replace('\r', '').split('\n')
|
||||||
current_host = None
|
current_host = None
|
||||||
for line in lines:
|
for line in lines:
|
||||||
line = line.lstrip()
|
line = line.lstrip()
|
||||||
|
@ -305,7 +305,7 @@ class NsLookup(IdleCommand):
|
||||||
return
|
return
|
||||||
|
|
||||||
def _compose_command_args(self):
|
def _compose_command_args(self):
|
||||||
return ['nslookup', '-type=' + self.type , self.host]
|
return ['nslookup', '-type=' + self.type, self.host]
|
||||||
|
|
||||||
def _return_result(self):
|
def _return_result(self):
|
||||||
if self.result_handler:
|
if self.result_handler:
|
||||||
|
|
|
@ -25,7 +25,7 @@ try:
|
||||||
from docutils import io
|
from docutils import io
|
||||||
from docutils.core import Publisher
|
from docutils.core import Publisher
|
||||||
from docutils.parsers.rst import roles
|
from docutils.parsers.rst import roles
|
||||||
from docutils import nodes,utils
|
from docutils import nodes, utils
|
||||||
from docutils.parsers.rst.roles import set_classes
|
from docutils.parsers.rst.roles import set_classes
|
||||||
except ImportError:
|
except ImportError:
|
||||||
print "Requires docutils 0.4 for set_classes to be available"
|
print "Requires docutils 0.4 for set_classes to be available"
|
||||||
|
@ -91,7 +91,7 @@ else:
|
||||||
generate_uri_role('xep-reference', ('jep', 'xep'),
|
generate_uri_role('xep-reference', ('jep', 'xep'),
|
||||||
'XEP #', 'http://www.xmpp.org/extensions/', 'xep-%04d.html',
|
'XEP #', 'http://www.xmpp.org/extensions/', 'xep-%04d.html',
|
||||||
pos_int_validator)
|
pos_int_validator)
|
||||||
generate_uri_role('gajim-ticket-reference', ('ticket','gtrack'),
|
generate_uri_role('gajim-ticket-reference', ('ticket', 'gtrack'),
|
||||||
'Gajim Ticket #', 'http://trac.gajim.org/ticket/', '%d',
|
'Gajim Ticket #', 'http://trac.gajim.org/ticket/', '%d',
|
||||||
pos_int_validator)
|
pos_int_validator)
|
||||||
|
|
||||||
|
|
|
@ -387,7 +387,7 @@ class Socks5:
|
||||||
def open_file_for_reading(self):
|
def open_file_for_reading(self):
|
||||||
if self.file is None:
|
if self.file is None:
|
||||||
try:
|
try:
|
||||||
self.file = open(self.file_props['file-name'],'rb')
|
self.file = open(self.file_props['file-name'], 'rb')
|
||||||
if 'offset' in self.file_props and self.file_props['offset']:
|
if 'offset' in self.file_props and self.file_props['offset']:
|
||||||
self.size = self.file_props['offset']
|
self.size = self.file_props['offset']
|
||||||
self.file.seek(self.size)
|
self.file.seek(self.size)
|
||||||
|
@ -448,7 +448,7 @@ class Socks5:
|
||||||
self.disconnect()
|
self.disconnect()
|
||||||
return add
|
return add
|
||||||
|
|
||||||
def send_raw(self,raw_data):
|
def send_raw(self, raw_data):
|
||||||
"""
|
"""
|
||||||
Write raw outgoing data
|
Write raw outgoing data
|
||||||
"""
|
"""
|
||||||
|
@ -651,7 +651,7 @@ class Socks5:
|
||||||
host, = '.'.join(str(s) for s in host_arr)
|
host, = '.'.join(str(s) for s in host_arr)
|
||||||
host_len = len(host)
|
host_len = len(host)
|
||||||
elif host_type == 0x03:
|
elif host_type == 0x03:
|
||||||
host_len, = struct.unpack('!B' , buff[4])
|
host_len, = struct.unpack('!B', buff[4])
|
||||||
host, = struct.unpack('!%ds' % host_len, buff[5:5 + host_len])
|
host, = struct.unpack('!%ds' % host_len, buff[5:5 + host_len])
|
||||||
portlen = len(buff[host_len + 5:])
|
portlen = len(buff[host_len + 5:])
|
||||||
if portlen == 1:
|
if portlen == 1:
|
||||||
|
|
|
@ -424,7 +424,7 @@ class EncryptedStanzaSession(StanzaSession):
|
||||||
|
|
||||||
n, e = (crypto.decode_mpi(base64.b64decode(
|
n, e = (crypto.decode_mpi(base64.b64decode(
|
||||||
keyvalue.getTagData(x))) for x in ('Modulus', 'Exponent'))
|
keyvalue.getTagData(x))) for x in ('Modulus', 'Exponent'))
|
||||||
eir_pubkey = RSA.construct((n,long(e)))
|
eir_pubkey = RSA.construct((n, long(e)))
|
||||||
|
|
||||||
pubkey_o = xmpp.c14n.c14n(keyvalue, self._is_buggy_gajim())
|
pubkey_o = xmpp.c14n.c14n(keyvalue, self._is_buggy_gajim())
|
||||||
else:
|
else:
|
||||||
|
@ -750,7 +750,7 @@ class EncryptedStanzaSession(StanzaSession):
|
||||||
else:
|
else:
|
||||||
negotiated['logging'] = self.logging_preference()[0]
|
negotiated['logging'] = self.logging_preference()[0]
|
||||||
|
|
||||||
for r,a in (('recv_pubkey', 'resp_pubkey'), ('send_pubkey',
|
for r, a in (('recv_pubkey', 'resp_pubkey'), ('send_pubkey',
|
||||||
'init_pubkey')):
|
'init_pubkey')):
|
||||||
negotiated[r] = None
|
negotiated[r] = None
|
||||||
|
|
||||||
|
|
|
@ -202,7 +202,7 @@ class SASL(PlugIn):
|
||||||
def MechanismHandler(self):
|
def MechanismHandler(self):
|
||||||
if 'ANONYMOUS' in self.mecs and self.username is None:
|
if 'ANONYMOUS' in self.mecs and self.username is None:
|
||||||
self.mecs.remove('ANONYMOUS')
|
self.mecs.remove('ANONYMOUS')
|
||||||
node = Node('auth',attrs={'xmlns': NS_SASL, 'mechanism': 'ANONYMOUS'})
|
node = Node('auth', attrs={'xmlns': NS_SASL, 'mechanism': 'ANONYMOUS'})
|
||||||
self.mechanism = 'ANONYMOUS'
|
self.mechanism = 'ANONYMOUS'
|
||||||
self.startsasl = SASL_IN_PROCESS
|
self.startsasl = SASL_IN_PROCESS
|
||||||
self._owner.send(str(node))
|
self._owner.send(str(node))
|
||||||
|
@ -222,7 +222,7 @@ class SASL(PlugIn):
|
||||||
self._owner.xmpp_hostname)[1]
|
self._owner.xmpp_hostname)[1]
|
||||||
kerberos.authGSSClientStep(self.gss_vc, '')
|
kerberos.authGSSClientStep(self.gss_vc, '')
|
||||||
response = kerberos.authGSSClientResponse(self.gss_vc)
|
response = kerberos.authGSSClientResponse(self.gss_vc)
|
||||||
node=Node('auth',attrs={'xmlns': NS_SASL, 'mechanism': 'GSSAPI'},
|
node=Node('auth', attrs={'xmlns': NS_SASL, 'mechanism': 'GSSAPI'},
|
||||||
payload=(response or ''))
|
payload=(response or ''))
|
||||||
self.mechanism = 'GSSAPI'
|
self.mechanism = 'GSSAPI'
|
||||||
self.gss_step = GSS_STATE_STEP
|
self.gss_step = GSS_STATE_STEP
|
||||||
|
@ -233,7 +233,7 @@ class SASL(PlugIn):
|
||||||
log.info('GSSAPI authentication failed: %s' % str(e))
|
log.info('GSSAPI authentication failed: %s' % str(e))
|
||||||
if 'DIGEST-MD5' in self.mecs:
|
if 'DIGEST-MD5' in self.mecs:
|
||||||
self.mecs.remove('DIGEST-MD5')
|
self.mecs.remove('DIGEST-MD5')
|
||||||
node = Node('auth',attrs={'xmlns': NS_SASL, 'mechanism': 'DIGEST-MD5'})
|
node = Node('auth', attrs={'xmlns': NS_SASL, 'mechanism': 'DIGEST-MD5'})
|
||||||
self.mechanism = 'DIGEST-MD5'
|
self.mechanism = 'DIGEST-MD5'
|
||||||
self.startsasl = SASL_IN_PROCESS
|
self.startsasl = SASL_IN_PROCESS
|
||||||
self._owner.send(str(node))
|
self._owner.send(str(node))
|
||||||
|
@ -369,7 +369,7 @@ class SASL(PlugIn):
|
||||||
sasl_data = u''
|
sasl_data = u''
|
||||||
for key in ('charset', 'username', 'realm', 'nonce', 'nc', 'cnonce',
|
for key in ('charset', 'username', 'realm', 'nonce', 'nc', 'cnonce',
|
||||||
'digest-uri', 'response', 'qop'):
|
'digest-uri', 'response', 'qop'):
|
||||||
if key in ('nc','qop','response','charset'):
|
if key in ('nc', 'qop', 'response', 'charset'):
|
||||||
sasl_data += u"%s=%s," % (key, self.resp[key])
|
sasl_data += u"%s=%s," % (key, self.resp[key])
|
||||||
else:
|
else:
|
||||||
sasl_data += u'%s="%s",' % (key, self.resp[key])
|
sasl_data += u'%s="%s",' % (key, self.resp[key])
|
||||||
|
@ -422,10 +422,10 @@ class NonBlockingNonSASL(PlugIn):
|
||||||
log.error('No result node arrived! Aborting...')
|
log.error('No result node arrived! Aborting...')
|
||||||
return self.on_auth(None)
|
return self.on_auth(None)
|
||||||
|
|
||||||
iq=Iq(typ='set',node=resp)
|
iq=Iq(typ='set', node=resp)
|
||||||
query = iq.getTag('query')
|
query = iq.getTag('query')
|
||||||
query.setTagData('username',self.user)
|
query.setTagData('username', self.user)
|
||||||
query.setTagData('resource',self.resource)
|
query.setTagData('resource', self.resource)
|
||||||
|
|
||||||
if query.getTag('digest'):
|
if query.getTag('digest'):
|
||||||
log.info("Performing digest authentication")
|
log.info("Performing digest authentication")
|
||||||
|
@ -454,7 +454,7 @@ class NonBlockingNonSASL(PlugIn):
|
||||||
authentication")
|
authentication")
|
||||||
query.setTagData('password', self.password)
|
query.setTagData('password', self.password)
|
||||||
self._method = 'plain'
|
self._method = 'plain'
|
||||||
resp = self.owner.Dispatcher.SendAndWaitForResponse(iq,func=self._on_auth)
|
resp = self.owner.Dispatcher.SendAndWaitForResponse(iq, func=self._on_auth)
|
||||||
|
|
||||||
def _on_auth(self, resp):
|
def _on_auth(self, resp):
|
||||||
if isResultNode(resp):
|
if isResultNode(resp):
|
||||||
|
@ -527,7 +527,7 @@ class NonBlockingBind(PlugIn):
|
||||||
|
|
||||||
self._owner.onreceive(None)
|
self._owner.onreceive(None)
|
||||||
self._owner.Dispatcher.SendAndWaitForResponse(
|
self._owner.Dispatcher.SendAndWaitForResponse(
|
||||||
Protocol('iq',typ='set', payload=[Node('bind', attrs={'xmlns':NS_BIND},
|
Protocol('iq', typ='set', payload=[Node('bind', attrs={'xmlns':NS_BIND},
|
||||||
payload=self._resource)]), func=self._on_bound)
|
payload=self._resource)]), func=self._on_bound)
|
||||||
|
|
||||||
def _on_bound(self, resp):
|
def _on_bound(self, resp):
|
||||||
|
|
|
@ -373,7 +373,7 @@ class NonBlockingBOSH(NonBlockingTransport):
|
||||||
def get_current_state(self):
|
def get_current_state(self):
|
||||||
t = '------ SOCKET_ID\tSOCKET_STATE\tPENDING_REQS\n'
|
t = '------ SOCKET_ID\tSOCKET_STATE\tPENDING_REQS\n'
|
||||||
for s in self.http_socks:
|
for s in self.http_socks:
|
||||||
t = '%s------ %s\t%s\t%s\n' % (t,id(s), s.get_state(), s.pending_requests)
|
t = '%s------ %s\t%s\t%s\n' % (t, id(s), s.get_state(), s.pending_requests)
|
||||||
t = '%s------ prio stanzas: %s, queued XMPP stanzas: %s, not_acked stanzas: %s' \
|
t = '%s------ prio stanzas: %s, queued XMPP stanzas: %s, not_acked stanzas: %s' \
|
||||||
% (t, self.prio_bosh_stanzas, self.stanza_buffer,
|
% (t, self.prio_bosh_stanzas, self.stanza_buffer,
|
||||||
self.ack_checker.get_not_acked_rids())
|
self.ack_checker.get_not_acked_rids())
|
||||||
|
@ -417,7 +417,7 @@ class NonBlockingBOSH(NonBlockingTransport):
|
||||||
'xmpp:version': '1.0',
|
'xmpp:version': '1.0',
|
||||||
'ver': '1.6',
|
'ver': '1.6',
|
||||||
'xmlns:xmpp': 'urn:xmpp:xbosh'})
|
'xmlns:xmpp': 'urn:xmpp:xbosh'})
|
||||||
self.send_BOSH((t,True))
|
self.send_BOSH((t, True))
|
||||||
|
|
||||||
def start_disconnect(self):
|
def start_disconnect(self):
|
||||||
NonBlockingTransport.start_disconnect(self)
|
NonBlockingTransport.start_disconnect(self)
|
||||||
|
|
|
@ -431,7 +431,7 @@ class NonBlockingClient:
|
||||||
Raise event to connection instance. DATA_SENT and DATA_RECIVED events
|
Raise event to connection instance. DATA_SENT and DATA_RECIVED events
|
||||||
are used in XML console to show XMPP traffic
|
are used in XML console to show XMPP traffic
|
||||||
"""
|
"""
|
||||||
log.info('raising event from transport: :::::%s::::\n_____________\n%s\n_____________\n' % (event_type,data))
|
log.info('raising event from transport: :::::%s::::\n_____________\n%s\n_____________\n' % (event_type, data))
|
||||||
if hasattr(self, 'Dispatcher'):
|
if hasattr(self, 'Dispatcher'):
|
||||||
self.Dispatcher.Event('', event_type, data)
|
self.Dispatcher.Event('', event_type, data)
|
||||||
|
|
||||||
|
@ -556,13 +556,13 @@ class NonBlockingClient:
|
||||||
### following methods are moved from blocking client class of xmpppy
|
### following methods are moved from blocking client class of xmpppy
|
||||||
###############################################################################
|
###############################################################################
|
||||||
|
|
||||||
def RegisterDisconnectHandler(self,handler):
|
def RegisterDisconnectHandler(self, handler):
|
||||||
"""
|
"""
|
||||||
Register handler that will be called on disconnect
|
Register handler that will be called on disconnect
|
||||||
"""
|
"""
|
||||||
self.disconnect_handlers.append(handler)
|
self.disconnect_handlers.append(handler)
|
||||||
|
|
||||||
def UnregisterDisconnectHandler(self,handler):
|
def UnregisterDisconnectHandler(self, handler):
|
||||||
"""
|
"""
|
||||||
Unregister handler that is called on disconnect
|
Unregister handler that is called on disconnect
|
||||||
"""
|
"""
|
||||||
|
|
|
@ -277,13 +277,13 @@ class XMPPDispatcher(PlugIn):
|
||||||
if not typ and not ns:
|
if not typ and not ns:
|
||||||
typ='default'
|
typ='default'
|
||||||
if xmlns not in self.handlers:
|
if xmlns not in self.handlers:
|
||||||
self.RegisterNamespace(xmlns,'warn')
|
self.RegisterNamespace(xmlns, 'warn')
|
||||||
if name not in self.handlers[xmlns]:
|
if name not in self.handlers[xmlns]:
|
||||||
self.RegisterProtocol(name,Protocol,xmlns,'warn')
|
self.RegisterProtocol(name, Protocol, xmlns, 'warn')
|
||||||
if typ+ns not in self.handlers[xmlns][name]:
|
if typ+ns not in self.handlers[xmlns][name]:
|
||||||
self.handlers[xmlns][name][typ+ns]=[]
|
self.handlers[xmlns][name][typ+ns]=[]
|
||||||
if makefirst:
|
if makefirst:
|
||||||
self.handlers[xmlns][name][typ+ns].insert(0,{'func':handler,
|
self.handlers[xmlns][name][typ+ns].insert(0, {'func':handler,
|
||||||
'system':system})
|
'system':system})
|
||||||
else:
|
else:
|
||||||
self.handlers[xmlns][name][typ+ns].append({'func':handler,
|
self.handlers[xmlns][name][typ+ns].append({'func':handler,
|
||||||
|
@ -340,7 +340,7 @@ class XMPPDispatcher(PlugIn):
|
||||||
Return stanza back to the sender with <feature-not-implemented/> error
|
Return stanza back to the sender with <feature-not-implemented/> error
|
||||||
set
|
set
|
||||||
"""
|
"""
|
||||||
if stanza.getType() in ('get','set'):
|
if stanza.getType() in ('get', 'set'):
|
||||||
conn._owner.send(Error(stanza, ERR_FEATURE_NOT_IMPLEMENTED))
|
conn._owner.send(Error(stanza, ERR_FEATURE_NOT_IMPLEMENTED))
|
||||||
|
|
||||||
def RegisterCycleHandler(self, handler):
|
def RegisterCycleHandler(self, handler):
|
||||||
|
@ -572,7 +572,7 @@ class BOSHDispatcher(XMPPDispatcher):
|
||||||
fromstream = self._metastream
|
fromstream = self._metastream
|
||||||
fromstream.setAttr('from', fromstream.getAttr('to'))
|
fromstream.setAttr('from', fromstream.getAttr('to'))
|
||||||
fromstream.delAttr('to')
|
fromstream.delAttr('to')
|
||||||
data = '%s%s>%s' % (XML_DECLARATION,str(fromstream)[:-2] ,data)
|
data = '%s%s>%s' % (XML_DECLARATION, str(fromstream)[:-2], data)
|
||||||
self.restart = False
|
self.restart = False
|
||||||
return XMPPDispatcher.ProcessNonBlocking(self, data)
|
return XMPPDispatcher.ProcessNonBlocking(self, data)
|
||||||
|
|
||||||
|
|
|
@ -45,9 +45,9 @@ def getRegInfo(disp, host, info={}, sync=True):
|
||||||
|
|
||||||
See JEP-0077 for details.
|
See JEP-0077 for details.
|
||||||
"""
|
"""
|
||||||
iq=Iq('get',NS_REGISTER,to=host)
|
iq=Iq('get', NS_REGISTER, to=host)
|
||||||
for i in info.keys():
|
for i in info.keys():
|
||||||
iq.setTagData(i,info[i])
|
iq.setTagData(i, info[i])
|
||||||
if sync:
|
if sync:
|
||||||
disp.SendAndCallForResponse(iq, lambda resp:
|
disp.SendAndCallForResponse(iq, lambda resp:
|
||||||
_ReceivedRegInfo(disp.Dispatcher, resp, host))
|
_ReceivedRegInfo(disp.Dispatcher, resp, host))
|
||||||
|
@ -55,26 +55,26 @@ def getRegInfo(disp, host, info={}, sync=True):
|
||||||
disp.SendAndCallForResponse(iq, _ReceivedRegInfo, {'agent': host })
|
disp.SendAndCallForResponse(iq, _ReceivedRegInfo, {'agent': host })
|
||||||
|
|
||||||
def _ReceivedRegInfo(con, resp, agent):
|
def _ReceivedRegInfo(con, resp, agent):
|
||||||
Iq('get',NS_REGISTER,to=agent)
|
Iq('get', NS_REGISTER, to=agent)
|
||||||
if not isResultNode(resp):
|
if not isResultNode(resp):
|
||||||
error_msg = resp.getErrorMsg()
|
error_msg = resp.getErrorMsg()
|
||||||
con.Event(NS_REGISTER,REGISTER_DATA_RECEIVED,(agent,None,False,error_msg))
|
con.Event(NS_REGISTER, REGISTER_DATA_RECEIVED, (agent, None, False, error_msg))
|
||||||
return
|
return
|
||||||
tag=resp.getTag('query',namespace=NS_REGISTER)
|
tag=resp.getTag('query', namespace=NS_REGISTER)
|
||||||
if not tag:
|
if not tag:
|
||||||
error_msg = resp.getErrorMsg()
|
error_msg = resp.getErrorMsg()
|
||||||
con.Event(NS_REGISTER,REGISTER_DATA_RECEIVED,(agent,None,False,error_msg))
|
con.Event(NS_REGISTER, REGISTER_DATA_RECEIVED, (agent, None, False, error_msg))
|
||||||
return
|
return
|
||||||
df=tag.getTag('x',namespace=NS_DATA)
|
df=tag.getTag('x', namespace=NS_DATA)
|
||||||
if df:
|
if df:
|
||||||
con.Event(NS_REGISTER,REGISTER_DATA_RECEIVED,(agent,df,True,''))
|
con.Event(NS_REGISTER, REGISTER_DATA_RECEIVED, (agent, df, True, ''))
|
||||||
return
|
return
|
||||||
df={}
|
df={}
|
||||||
for i in resp.getQueryPayload():
|
for i in resp.getQueryPayload():
|
||||||
if not isinstance(i, Node):
|
if not isinstance(i, Node):
|
||||||
continue
|
continue
|
||||||
df[i.getName()] = i.getData()
|
df[i.getName()] = i.getData()
|
||||||
con.Event(NS_REGISTER, REGISTER_DATA_RECEIVED, (agent,df,False,''))
|
con.Event(NS_REGISTER, REGISTER_DATA_RECEIVED, (agent, df, False, ''))
|
||||||
|
|
||||||
def register(disp, host, info, cb, args=None):
|
def register(disp, host, info, cb, args=None):
|
||||||
"""
|
"""
|
||||||
|
@ -87,7 +87,7 @@ def register(disp, host, info, cb, args=None):
|
||||||
if not isinstance(info, dict):
|
if not isinstance(info, dict):
|
||||||
info=info.asDict()
|
info=info.asDict()
|
||||||
for i in info.keys():
|
for i in info.keys():
|
||||||
iq.setTag('query').setTagData(i,info[i])
|
iq.setTag('query').setTagData(i, info[i])
|
||||||
disp.SendAndCallForResponse(iq, cb, args)
|
disp.SendAndCallForResponse(iq, cb, args)
|
||||||
|
|
||||||
def unregister(disp, host, cb):
|
def unregister(disp, host, cb):
|
||||||
|
@ -104,8 +104,8 @@ def changePasswordTo(disp, newpassword, host=None, cb = None):
|
||||||
"""
|
"""
|
||||||
if not host:
|
if not host:
|
||||||
host = disp._owner.Server
|
host = disp._owner.Server
|
||||||
iq = Iq('set',NS_REGISTER,to=host, payload=[Node('username',
|
iq = Iq('set', NS_REGISTER, to=host, payload=[Node('username',
|
||||||
payload=[disp._owner.Server]),Node('password',payload=[newpassword])])
|
payload=[disp._owner.Server]), Node('password', payload=[newpassword])])
|
||||||
_on_default_response(disp, iq, cb)
|
_on_default_response(disp, iq, cb)
|
||||||
|
|
||||||
###############################################################################
|
###############################################################################
|
||||||
|
@ -178,14 +178,14 @@ def setActivePrivacyList(disp, listname=None, typ='active', cb=None):
|
||||||
attrs={'name':listname}
|
attrs={'name':listname}
|
||||||
else:
|
else:
|
||||||
attrs={}
|
attrs={}
|
||||||
iq = Iq('set',NS_PRIVACY,payload=[Node(typ,attrs)])
|
iq = Iq('set', NS_PRIVACY, payload=[Node(typ, attrs)])
|
||||||
_on_default_response(disp, iq, cb)
|
_on_default_response(disp, iq, cb)
|
||||||
|
|
||||||
def setDefaultPrivacyList(disp, listname=None):
|
def setDefaultPrivacyList(disp, listname=None):
|
||||||
"""
|
"""
|
||||||
Set the default privacy list as 'listname'. Returns true on success
|
Set the default privacy list as 'listname'. Returns true on success
|
||||||
"""
|
"""
|
||||||
return setActivePrivacyList(disp, listname,'default')
|
return setActivePrivacyList(disp, listname, 'default')
|
||||||
|
|
||||||
def setPrivacyList(disp, listname, tags):
|
def setPrivacyList(disp, listname, tags):
|
||||||
"""
|
"""
|
||||||
|
@ -213,5 +213,5 @@ def setPrivacyList(disp, listname, tags):
|
||||||
|
|
||||||
def delPrivacyList(disp, listname, cb=None):
|
def delPrivacyList(disp, listname, cb=None):
|
||||||
''' Deletes privacy list 'listname'. Returns true on success. '''
|
''' Deletes privacy list 'listname'. Returns true on success. '''
|
||||||
iq = Iq('set',NS_PRIVACY,payload=[Node('list',{'name':listname})])
|
iq = Iq('set', NS_PRIVACY, payload=[Node('list', {'name':listname})])
|
||||||
_on_default_response(disp, iq, cb)
|
_on_default_response(disp, iq, cb)
|
||||||
|
|
|
@ -475,7 +475,7 @@ class SelectIdleQueue(IdleQueue):
|
||||||
waiting_descriptors = select.select(self.read_fds.keys(),
|
waiting_descriptors = select.select(self.read_fds.keys(),
|
||||||
self.write_fds.keys(), self.error_fds.keys(), 0)
|
self.write_fds.keys(), self.error_fds.keys(), 0)
|
||||||
except select.error, e:
|
except select.error, e:
|
||||||
waiting_descriptors = ((),(),())
|
waiting_descriptors = ((), (), ())
|
||||||
if e[0] != 4: # interrupt
|
if e[0] != 4: # interrupt
|
||||||
raise
|
raise
|
||||||
for fd in waiting_descriptors[0]:
|
for fd in waiting_descriptors[0]:
|
||||||
|
|
|
@ -60,7 +60,7 @@ class PlugIn:
|
||||||
owner.__dict__[self.__class__.__name__]=self
|
owner.__dict__[self.__class__.__name__]=self
|
||||||
|
|
||||||
# Execute hook
|
# Execute hook
|
||||||
if hasattr(self,'plugin'):
|
if hasattr(self, 'plugin'):
|
||||||
return self.plugin(owner)
|
return self.plugin(owner)
|
||||||
|
|
||||||
def PlugOut(self):
|
def PlugOut(self):
|
||||||
|
@ -80,7 +80,7 @@ class PlugIn:
|
||||||
else:
|
else:
|
||||||
del self._owner.__dict__[self.__class__.__name__]
|
del self._owner.__dict__[self.__class__.__name__]
|
||||||
# Execute hook
|
# Execute hook
|
||||||
if hasattr(self,'plugout'):
|
if hasattr(self, 'plugout'):
|
||||||
return self.plugout()
|
return self.plugout()
|
||||||
del self._owner
|
del self._owner
|
||||||
|
|
||||||
|
|
|
@ -189,8 +189,8 @@ temporary-auth-failure -- -- -- The authentication failed because of a tempora
|
||||||
|
|
||||||
ERRORS, _errorcodes = {}, {}
|
ERRORS, _errorcodes = {}, {}
|
||||||
for ns, errname, errpool in ((NS_XMPP_STREAMS, 'STREAM', xmpp_stream_error_conditions),
|
for ns, errname, errpool in ((NS_XMPP_STREAMS, 'STREAM', xmpp_stream_error_conditions),
|
||||||
(NS_STANZAS ,'ERR' ,xmpp_stanza_error_conditions),
|
(NS_STANZAS, 'ERR', xmpp_stanza_error_conditions),
|
||||||
(NS_SASL ,'SASL' ,sasl_error_conditions)):
|
(NS_SASL, 'SASL', sasl_error_conditions)):
|
||||||
for err in errpool.split('\n')[1:]:
|
for err in errpool.split('\n')[1:]:
|
||||||
cond, code, typ, text = err.split(' -- ')
|
cond, code, typ, text = err.split(' -- ')
|
||||||
name = errname + '_' + cond.upper().replace('-', '_')
|
name = errname + '_' + cond.upper().replace('-', '_')
|
||||||
|
@ -343,11 +343,11 @@ class JID:
|
||||||
self.node, self.domain, self.resource = node, domain, resource
|
self.node, self.domain, self.resource = node, domain, resource
|
||||||
else:
|
else:
|
||||||
if jid.find('@') + 1:
|
if jid.find('@') + 1:
|
||||||
self.node,jid = jid.split('@', 1)
|
self.node, jid = jid.split('@', 1)
|
||||||
else:
|
else:
|
||||||
self.node = ''
|
self.node = ''
|
||||||
if jid.find('/')+1:
|
if jid.find('/')+1:
|
||||||
self.domain, self.resource = jid.split('/',1)
|
self.domain, self.resource = jid.split('/', 1)
|
||||||
else:
|
else:
|
||||||
self.domain, self.resource = jid, ''
|
self.domain, self.resource = jid, ''
|
||||||
|
|
||||||
|
@ -593,7 +593,7 @@ class Protocol(Node):
|
||||||
"""
|
"""
|
||||||
Return the error code. Obsolete.
|
Return the error code. Obsolete.
|
||||||
"""
|
"""
|
||||||
return self.getTagAttr('error','code')
|
return self.getTagAttr('error', 'code')
|
||||||
|
|
||||||
def setError(self,error,code=None):
|
def setError(self,error,code=None):
|
||||||
"""
|
"""
|
||||||
|
@ -604,7 +604,7 @@ class Protocol(Node):
|
||||||
error = ErrorNode(_errorcodes[str(code)], text=error)
|
error = ErrorNode(_errorcodes[str(code)], text=error)
|
||||||
else:
|
else:
|
||||||
error = ErrorNode(ERR_UNDEFINED_CONDITION, code=code, typ='cancel', text=error)
|
error = ErrorNode(ERR_UNDEFINED_CONDITION, code=code, typ='cancel', text=error)
|
||||||
elif type(error) in [type(''),type(u'')]:
|
elif type(error) in [type(''), type(u'')]:
|
||||||
error=ErrorNode(error)
|
error=ErrorNode(error)
|
||||||
self.setType('error')
|
self.setType('error')
|
||||||
self.addChild(node=error)
|
self.addChild(node=error)
|
||||||
|
@ -633,7 +633,7 @@ class Protocol(Node):
|
||||||
"""
|
"""
|
||||||
Set the item 'item' to the value 'val'
|
Set the item 'item' to the value 'val'
|
||||||
"""
|
"""
|
||||||
if item in ['to','from']:
|
if item in ['to', 'from']:
|
||||||
val = JID(val)
|
val = JID(val)
|
||||||
return self.setAttr(item, val)
|
return self.setAttr(item, val)
|
||||||
|
|
||||||
|
@ -974,7 +974,7 @@ class ErrorNode(Node):
|
||||||
cod = code
|
cod = code
|
||||||
if text:
|
if text:
|
||||||
txt = text
|
txt = text
|
||||||
Node.__init__(self,'error', {}, [Node(name)])
|
Node.__init__(self, 'error', {}, [Node(name)])
|
||||||
if type_:
|
if type_:
|
||||||
self.setAttr('type', type_)
|
self.setAttr('type', type_)
|
||||||
if not cod:
|
if not cod:
|
||||||
|
@ -1160,7 +1160,7 @@ class DataField(Node):
|
||||||
"""
|
"""
|
||||||
Set 'var' attribute value of this field
|
Set 'var' attribute value of this field
|
||||||
"""
|
"""
|
||||||
return self.setAttr('var',val)
|
return self.setAttr('var', val)
|
||||||
|
|
||||||
class DataForm(Node):
|
class DataForm(Node):
|
||||||
"""
|
"""
|
||||||
|
|
|
@ -34,7 +34,7 @@ class ProxyConnector:
|
||||||
"""
|
"""
|
||||||
|
|
||||||
def __init__(self, send_method, onreceive, old_on_receive, on_success,
|
def __init__(self, send_method, onreceive, old_on_receive, on_success,
|
||||||
on_failure, xmpp_server, proxy_creds=(None,None)):
|
on_failure, xmpp_server, proxy_creds=(None, None)):
|
||||||
"""
|
"""
|
||||||
Creates proxy connector, starts connecting immediately and gives control
|
Creates proxy connector, starts connecting immediately and gives control
|
||||||
back to transport afterwards
|
back to transport afterwards
|
||||||
|
|
|
@ -59,7 +59,7 @@ class NonBlockingRoster(PlugIn):
|
||||||
elif not force:
|
elif not force:
|
||||||
return
|
return
|
||||||
|
|
||||||
iq = Iq('get',NS_ROSTER)
|
iq = Iq('get', NS_ROSTER)
|
||||||
iq.setTagAttr('query', 'ver', self.version)
|
iq.setTagAttr('query', 'ver', self.version)
|
||||||
id_ = self._owner.getAnID()
|
id_ = self._owner.getAnID()
|
||||||
iq.setID(id_)
|
iq.setID(id_)
|
||||||
|
@ -98,7 +98,7 @@ class NonBlockingRoster(PlugIn):
|
||||||
for group in item.getTags('group'):
|
for group in item.getTags('group'):
|
||||||
if group.getData() not in self._data[jid]['groups']:
|
if group.getData() not in self._data[jid]['groups']:
|
||||||
self._data[jid]['groups'].append(group.getData())
|
self._data[jid]['groups'].append(group.getData())
|
||||||
self._data[self._owner.User+'@'+self._owner.Server]={'resources':{},'name':None,'ask':None,'subscription':None,'groups':None,}
|
self._data[self._owner.User+'@'+self._owner.Server]={'resources': {}, 'name': None, 'ask': None, 'subscription': None, 'groups': None,}
|
||||||
self.set=1
|
self.set=1
|
||||||
# Looks like we have a workaround
|
# Looks like we have a workaround
|
||||||
# raise NodeProcessed # a MUST. Otherwise you'll get back an <iq type='error'/>
|
# raise NodeProcessed # a MUST. Otherwise you'll get back an <iq type='error'/>
|
||||||
|
@ -122,7 +122,7 @@ class NonBlockingRoster(PlugIn):
|
||||||
typ=pres.getType()
|
typ=pres.getType()
|
||||||
|
|
||||||
if not typ:
|
if not typ:
|
||||||
log.info('Setting roster item %s for resource %s...'%(jid.getStripped(),jid.getResource()))
|
log.info('Setting roster item %s for resource %s...'%(jid.getStripped(), jid.getResource()))
|
||||||
item['resources'][jid.getResource()]=res={'show':None,'status':None,'priority':'0','timestamp':None}
|
item['resources'][jid.getResource()]=res={'show':None,'status':None,'priority':'0','timestamp':None}
|
||||||
if pres.getTag('show'): res['show']=pres.getShow()
|
if pres.getTag('show'): res['show']=pres.getShow()
|
||||||
if pres.getTag('status'): res['status']=pres.getStatus()
|
if pres.getTag('status'): res['status']=pres.getStatus()
|
||||||
|
@ -152,7 +152,7 @@ class NonBlockingRoster(PlugIn):
|
||||||
lastpri = -129
|
lastpri = -129
|
||||||
for r in self._data[jid]['resources'].keys():
|
for r in self._data[jid]['resources'].keys():
|
||||||
if int(self._data[jid]['resources'][r]['priority']) > lastpri:
|
if int(self._data[jid]['resources'][r]['priority']) > lastpri:
|
||||||
resource,lastpri=r,int(self._data[jid]['resources'][r]['priority'])
|
resource, lastpri=r, int(self._data[jid]['resources'][r]['priority'])
|
||||||
return self._data[jid]['resources'][resource][dataname]
|
return self._data[jid]['resources'][resource][dataname]
|
||||||
|
|
||||||
def delItem(self, jid):
|
def delItem(self, jid):
|
||||||
|
@ -227,12 +227,12 @@ class NonBlockingRoster(PlugIn):
|
||||||
"""
|
"""
|
||||||
Rename contact 'jid' and sets the groups list that it now belongs to
|
Rename contact 'jid' and sets the groups list that it now belongs to
|
||||||
"""
|
"""
|
||||||
iq = Iq('set',NS_ROSTER)
|
iq = Iq('set', NS_ROSTER)
|
||||||
query = iq.getTag('query')
|
query = iq.getTag('query')
|
||||||
attrs = {'jid': jid}
|
attrs = {'jid': jid}
|
||||||
if name:
|
if name:
|
||||||
attrs['name'] = name
|
attrs['name'] = name
|
||||||
item = query.setTag('item' ,attrs)
|
item = query.setTag('item', attrs)
|
||||||
for group in groups:
|
for group in groups:
|
||||||
item.addChild(node=Node('group', payload=[group]))
|
item.addChild(node=Node('group', payload=[group]))
|
||||||
self._owner.send(iq)
|
self._owner.send(iq)
|
||||||
|
@ -271,7 +271,7 @@ class NonBlockingRoster(PlugIn):
|
||||||
"""
|
"""
|
||||||
return self._data[item]
|
return self._data[item]
|
||||||
|
|
||||||
def getItem(self,item):
|
def getItem(self, item):
|
||||||
"""
|
"""
|
||||||
Get the contact in the internal format (or None if JID 'item' is not in
|
Get the contact in the internal format (or None if JID 'item' is not in
|
||||||
roster)
|
roster)
|
||||||
|
@ -285,7 +285,7 @@ class NonBlockingRoster(PlugIn):
|
||||||
"""
|
"""
|
||||||
self._owner.send(Presence(jid, 'subscribe'))
|
self._owner.send(Presence(jid, 'subscribe'))
|
||||||
|
|
||||||
def Unsubscribe(self,jid):
|
def Unsubscribe(self, jid):
|
||||||
"""
|
"""
|
||||||
Ask for removing our subscription for JID 'jid'
|
Ask for removing our subscription for JID 'jid'
|
||||||
"""
|
"""
|
||||||
|
|
|
@ -90,7 +90,7 @@ class Node(object):
|
||||||
if self.FORCE_NODE_RECREATION and isinstance(node, Node):
|
if self.FORCE_NODE_RECREATION and isinstance(node, Node):
|
||||||
node = str(node)
|
node = str(node)
|
||||||
if not isinstance(node, Node):
|
if not isinstance(node, Node):
|
||||||
node = NodeBuilder(node,self)
|
node = NodeBuilder(node, self)
|
||||||
node_built = True
|
node_built = True
|
||||||
else:
|
else:
|
||||||
self.name, self.namespace, self.attrs, self.data, self.kids, self.parent, self.nsd = node.name, node.namespace, {}, [], [], node.parent, {}
|
self.name, self.namespace, self.attrs, self.data, self.kids, self.parent, self.nsd = node.name, node.namespace, {}, [], [], node.parent, {}
|
||||||
|
@ -100,7 +100,7 @@ class Node(object):
|
||||||
self.data.append(data)
|
self.data.append(data)
|
||||||
for kid in node.kids:
|
for kid in node.kids:
|
||||||
self.kids.append(kid)
|
self.kids.append(kid)
|
||||||
for k,v in node.nsd.items():
|
for k, v in node.nsd.items():
|
||||||
self.nsd[k] = v
|
self.nsd[k] = v
|
||||||
else:
|
else:
|
||||||
self.name, self.namespace, self.attrs, self.data, self.kids, self.parent, self.nsd = 'tag', '', {}, [], [], None, {}
|
self.name, self.namespace, self.attrs, self.data, self.kids, self.parent, self.nsd = 'tag', '', {}, [], [], None, {}
|
||||||
|
@ -108,8 +108,8 @@ class Node(object):
|
||||||
self.parent = parent
|
self.parent = parent
|
||||||
self.nsp_cache = {}
|
self.nsp_cache = {}
|
||||||
if nsp:
|
if nsp:
|
||||||
for k,v in nsp.items(): self.nsp_cache[k] = v
|
for k, v in nsp.items(): self.nsp_cache[k] = v
|
||||||
for attr,val in attrs.items():
|
for attr, val in attrs.items():
|
||||||
if attr == 'xmlns':
|
if attr == 'xmlns':
|
||||||
self.nsd[u''] = val
|
self.nsd[u''] = val
|
||||||
elif attr.startswith('xmlns:'):
|
elif attr.startswith('xmlns:'):
|
||||||
|
@ -117,11 +117,11 @@ class Node(object):
|
||||||
self.attrs[attr]=attrs[attr]
|
self.attrs[attr]=attrs[attr]
|
||||||
if tag:
|
if tag:
|
||||||
if node_built:
|
if node_built:
|
||||||
pfx,self.name = (['']+tag.split(':'))[-2:]
|
pfx, self.name = (['']+tag.split(':'))[-2:]
|
||||||
self.namespace = self.lookup_nsp(pfx)
|
self.namespace = self.lookup_nsp(pfx)
|
||||||
else:
|
else:
|
||||||
if ' ' in tag:
|
if ' ' in tag:
|
||||||
self.namespace,self.name = tag.split()
|
self.namespace, self.name = tag.split()
|
||||||
else:
|
else:
|
||||||
self.name = tag
|
self.name = tag
|
||||||
if isinstance(payload, basestring): payload=[payload]
|
if isinstance(payload, basestring): payload=[payload]
|
||||||
|
@ -132,9 +132,9 @@ class Node(object):
|
||||||
self.data.append(ustr(i))
|
self.data.append(ustr(i))
|
||||||
|
|
||||||
def lookup_nsp(self, pfx=''):
|
def lookup_nsp(self, pfx=''):
|
||||||
ns = self.nsd.get(pfx,None)
|
ns = self.nsd.get(pfx, None)
|
||||||
if ns is None:
|
if ns is None:
|
||||||
ns = self.nsp_cache.get(pfx,None)
|
ns = self.nsp_cache.get(pfx, None)
|
||||||
if ns is None:
|
if ns is None:
|
||||||
if self.parent:
|
if self.parent:
|
||||||
ns = self.parent.lookup_nsp(pfx)
|
ns = self.parent.lookup_nsp(pfx)
|
||||||
|
@ -220,7 +220,7 @@ class Node(object):
|
||||||
attributes
|
attributes
|
||||||
"""
|
"""
|
||||||
if not isinstance(node, Node):
|
if not isinstance(node, Node):
|
||||||
node = self.getTag(node,attrs)
|
node = self.getTag(node, attrs)
|
||||||
self.kids.remove(node)
|
self.kids.remove(node)
|
||||||
return node
|
return node
|
||||||
|
|
||||||
|
@ -302,7 +302,7 @@ class Node(object):
|
||||||
except:
|
except:
|
||||||
return None
|
return None
|
||||||
|
|
||||||
def getTagData(self,tag):
|
def getTagData(self, tag):
|
||||||
"""
|
"""
|
||||||
Return cocatenated CDATA of the child with specified name
|
Return cocatenated CDATA of the child with specified name
|
||||||
"""
|
"""
|
||||||
|
@ -418,9 +418,9 @@ class Node(object):
|
||||||
(optionally) attributes "attrs" and sets it's CDATA to string "val"
|
(optionally) attributes "attrs" and sets it's CDATA to string "val"
|
||||||
"""
|
"""
|
||||||
try:
|
try:
|
||||||
self.getTag(tag,attrs).setData(ustr(val))
|
self.getTag(tag, attrs).setData(ustr(val))
|
||||||
except Exception:
|
except Exception:
|
||||||
self.addChild(tag,attrs,payload = [ustr(val)])
|
self.addChild(tag, attrs, payload = [ustr(val)])
|
||||||
|
|
||||||
def has_attr(self, key):
|
def has_attr(self, key):
|
||||||
"""
|
"""
|
||||||
|
@ -476,7 +476,7 @@ class T:
|
||||||
return self.node.setTag(attr)
|
return self.node.setTag(attr)
|
||||||
|
|
||||||
def __setattr__(self, attr, val):
|
def __setattr__(self, attr, val):
|
||||||
if isinstance(val,Node):
|
if isinstance(val, Node):
|
||||||
Node.__init__(self.node.setTag(attr), node=val)
|
Node.__init__(self.node.setTag(attr), node=val)
|
||||||
else:
|
else:
|
||||||
return self.node.setTagData(attr, val)
|
return self.node.setTagData(attr, val)
|
||||||
|
@ -493,8 +493,8 @@ class NT(T):
|
||||||
return self.node.addChild(attr)
|
return self.node.addChild(attr)
|
||||||
|
|
||||||
def __setattr__(self, attr, val):
|
def __setattr__(self, attr, val):
|
||||||
if isinstance(val,Node):
|
if isinstance(val, Node):
|
||||||
self.node.addChild(attr,node=val)
|
self.node.addChild(attr, node=val)
|
||||||
else:
|
else:
|
||||||
return self.node.addChild(attr, payload=[val])
|
return self.node.addChild(attr, payload=[val])
|
||||||
|
|
||||||
|
@ -541,7 +541,7 @@ class NodeBuilder:
|
||||||
self.data_buffer = None
|
self.data_buffer = None
|
||||||
self.streamError = ''
|
self.streamError = ''
|
||||||
if data:
|
if data:
|
||||||
self._parser.Parse(data,1)
|
self._parser.Parse(data, 1)
|
||||||
|
|
||||||
def check_data_buffer(self):
|
def check_data_buffer(self):
|
||||||
if self.data_buffer:
|
if self.data_buffer:
|
||||||
|
@ -570,16 +570,16 @@ class NodeBuilder:
|
||||||
if not self._mini_dom :
|
if not self._mini_dom :
|
||||||
self._mini_dom = Node(tag=tag, attrs=attrs, nsp = self._document_nsp, node_built=True)
|
self._mini_dom = Node(tag=tag, attrs=attrs, nsp = self._document_nsp, node_built=True)
|
||||||
else:
|
else:
|
||||||
Node.__init__(self._mini_dom,tag=tag, attrs=attrs, nsp = self._document_nsp, node_built=True)
|
Node.__init__(self._mini_dom, tag=tag, attrs=attrs, nsp = self._document_nsp, node_built=True)
|
||||||
self._ptr = self._mini_dom
|
self._ptr = self._mini_dom
|
||||||
elif self.__depth > self._dispatch_depth:
|
elif self.__depth > self._dispatch_depth:
|
||||||
self._ptr.kids.append(Node(tag=tag,parent=self._ptr,attrs=attrs, node_built=True))
|
self._ptr.kids.append(Node(tag=tag, parent=self._ptr, attrs=attrs, node_built=True))
|
||||||
self._ptr = self._ptr.kids[-1]
|
self._ptr = self._ptr.kids[-1]
|
||||||
if self.__depth == 1:
|
if self.__depth == 1:
|
||||||
self._document_attrs = {}
|
self._document_attrs = {}
|
||||||
self._document_nsp = {}
|
self._document_nsp = {}
|
||||||
nsp, name = (['']+tag.split(':'))[-2:]
|
nsp, name = (['']+tag.split(':'))[-2:]
|
||||||
for attr,val in attrs.items():
|
for attr, val in attrs.items():
|
||||||
if attr == 'xmlns':
|
if attr == 'xmlns':
|
||||||
self._document_nsp[u''] = val
|
self._document_nsp[u''] = val
|
||||||
elif attr.startswith('xmlns:'):
|
elif attr.startswith('xmlns:'):
|
||||||
|
|
|
@ -560,7 +560,7 @@ class NonBlockingTCP(NonBlockingTransport, IdleObject):
|
||||||
# get as many bites, as possible, but not more than RECV_BUFSIZE
|
# get as many bites, as possible, but not more than RECV_BUFSIZE
|
||||||
received = self._recv(RECV_BUFSIZE)
|
received = self._recv(RECV_BUFSIZE)
|
||||||
except socket.error, (errnum, errstr):
|
except socket.error, (errnum, errstr):
|
||||||
log.info("_do_receive: got %s:" % received , exc_info=True)
|
log.info("_do_receive: got %s:" % received, exc_info=True)
|
||||||
except tls_nb.SSLWrapper.Error, e:
|
except tls_nb.SSLWrapper.Error, e:
|
||||||
log.info("_do_receive, caught SSL error, got %s:" % received,
|
log.info("_do_receive, caught SSL error, got %s:" % received,
|
||||||
exc_info=True)
|
exc_info=True)
|
||||||
|
@ -739,7 +739,7 @@ class NonBlockingHTTP(NonBlockingTCP):
|
||||||
httpbody - string with http body)
|
httpbody - string with http body)
|
||||||
http_rest - what is left in the message after a full HTTP header + body
|
http_rest - what is left in the message after a full HTTP header + body
|
||||||
"""
|
"""
|
||||||
message = message.replace('\r','')
|
message = message.replace('\r', '')
|
||||||
message = message.lstrip('\n')
|
message = message.lstrip('\n')
|
||||||
splitted = message.split('\n\n')
|
splitted = message.split('\n\n')
|
||||||
if len(splitted) < 2:
|
if len(splitted) < 2:
|
||||||
|
|
|
@ -115,7 +115,7 @@ class Zeroconf:
|
||||||
self.remove_service_callback)
|
self.remove_service_callback)
|
||||||
self.service_browser.connect_to_signal('Failure', self.error_callback)
|
self.service_browser.connect_to_signal('Failure', self.error_callback)
|
||||||
|
|
||||||
def new_domain_callback(self,interface, protocol, domain, flags):
|
def new_domain_callback(self, interface, protocol, domain, flags):
|
||||||
if domain != 'local':
|
if domain != 'local':
|
||||||
self.browse_domain(interface, protocol, domain)
|
self.browse_domain(interface, protocol, domain)
|
||||||
|
|
||||||
|
@ -246,7 +246,7 @@ class Zeroconf:
|
||||||
txt = {}
|
txt = {}
|
||||||
|
|
||||||
# remove empty keys
|
# remove empty keys
|
||||||
for key,val in self.txt.iteritems():
|
for key, val in self.txt.iteritems():
|
||||||
if val:
|
if val:
|
||||||
txt[key] = val
|
txt[key] = val
|
||||||
|
|
||||||
|
|
|
@ -91,7 +91,7 @@ class Zeroconf:
|
||||||
self.remove_serviceCB(key)
|
self.remove_serviceCB(key)
|
||||||
return
|
return
|
||||||
|
|
||||||
def new_domain_callback(self,interface, protocol, domain, flags):
|
def new_domain_callback(self, interface, protocol, domain, flags):
|
||||||
if domain != "local":
|
if domain != "local":
|
||||||
self.browse_domain(interface, protocol, domain)
|
self.browse_domain(interface, protocol, domain)
|
||||||
|
|
||||||
|
@ -203,7 +203,7 @@ class Zeroconf:
|
||||||
txt = {}
|
txt = {}
|
||||||
|
|
||||||
#remove empty keys
|
#remove empty keys
|
||||||
for key,val in self.txt:
|
for key, val in self.txt:
|
||||||
if val:
|
if val:
|
||||||
txt[key] = val
|
txt[key] = val
|
||||||
|
|
||||||
|
|
|
@ -2775,7 +2775,7 @@ class GroupchatConfigWindow:
|
||||||
if not jid:
|
if not jid:
|
||||||
return
|
return
|
||||||
model = self.affiliation_treeview[affiliation].get_model()
|
model = self.affiliation_treeview[affiliation].get_model()
|
||||||
model.append((jid,'', '', ''))
|
model.append((jid, '', '', ''))
|
||||||
dialogs.InputDialog(title, prompt, ok_handler=on_ok)
|
dialogs.InputDialog(title, prompt, ok_handler=on_ok)
|
||||||
|
|
||||||
def on_remove_button_clicked(self, widget, affiliation):
|
def on_remove_button_clicked(self, widget, affiliation):
|
||||||
|
@ -3675,7 +3675,7 @@ class AccountCreationWizardWindow:
|
||||||
img = self.xml.get_object('finish_image')
|
img = self.xml.get_object('finish_image')
|
||||||
img.set_from_stock(gtk.STOCK_DIALOG_ERROR, gtk.ICON_SIZE_DIALOG)
|
img.set_from_stock(gtk.STOCK_DIALOG_ERROR, gtk.ICON_SIZE_DIALOG)
|
||||||
finish_text = '<big><b>%s</b></big>\n\n%s' % (
|
finish_text = '<big><b>%s</b></big>\n\n%s' % (
|
||||||
_('An error occurred during account creation') , reason)
|
_('An error occurred during account creation'), reason)
|
||||||
self.finish_label.set_markup(finish_text)
|
self.finish_label.set_markup(finish_text)
|
||||||
self.notebook.set_current_page(6) # show finish page
|
self.notebook.set_current_page(6) # show finish page
|
||||||
|
|
||||||
|
@ -3709,7 +3709,7 @@ class AccountCreationWizardWindow:
|
||||||
img = self.xml.get_object('finish_image')
|
img = self.xml.get_object('finish_image')
|
||||||
img.set_from_stock(gtk.STOCK_DIALOG_ERROR, gtk.ICON_SIZE_DIALOG)
|
img.set_from_stock(gtk.STOCK_DIALOG_ERROR, gtk.ICON_SIZE_DIALOG)
|
||||||
finish_text = '<big><b>%s</b></big>\n\n%s' % (_('An error occurred during '
|
finish_text = '<big><b>%s</b></big>\n\n%s' % (_('An error occurred during '
|
||||||
'account creation') , reason)
|
'account creation'), reason)
|
||||||
self.finish_label.set_markup(finish_text)
|
self.finish_label.set_markup(finish_text)
|
||||||
self.notebook.set_current_page(6) # show finish page
|
self.notebook.set_current_page(6) # show finish page
|
||||||
|
|
||||||
|
|
|
@ -268,7 +268,7 @@ class ConversationTextview(gobject.GObject):
|
||||||
|
|
||||||
colors = gajim.config.get('gc_nicknames_colors')
|
colors = gajim.config.get('gc_nicknames_colors')
|
||||||
colors = colors.split(':')
|
colors = colors.split(':')
|
||||||
for i,color in enumerate(colors):
|
for i, color in enumerate(colors):
|
||||||
tagname = 'gc_nickname_color_' + str(i)
|
tagname = 'gc_nickname_color_' + str(i)
|
||||||
tag = buffer_.create_tag(tagname)
|
tag = buffer_.create_tag(tagname)
|
||||||
tag.set_property('foreground', color)
|
tag.set_property('foreground', color)
|
||||||
|
|
|
@ -4639,7 +4639,7 @@ class TransformChatToMUC:
|
||||||
|
|
||||||
def unique_room_id_error(self, server):
|
def unique_room_id_error(self, server):
|
||||||
self.unique_room_id_supported(server,
|
self.unique_room_id_supported(server,
|
||||||
gajim.nicks[self.account].lower().replace(' ','') + str(randrange(
|
gajim.nicks[self.account].lower().replace(' ', '') + str(randrange(
|
||||||
9999999)))
|
9999999)))
|
||||||
|
|
||||||
class DataFormWindow(Dialog):
|
class DataFormWindow(Dialog):
|
||||||
|
|
|
@ -77,11 +77,11 @@ class FileTransfersWindow:
|
||||||
col = gtk.TreeViewColumn(_('File'))
|
col = gtk.TreeViewColumn(_('File'))
|
||||||
renderer = gtk.CellRendererText()
|
renderer = gtk.CellRendererText()
|
||||||
col.pack_start(renderer, expand=False)
|
col.pack_start(renderer, expand=False)
|
||||||
col.add_attribute(renderer, 'markup' , C_LABELS)
|
col.add_attribute(renderer, 'markup', C_LABELS)
|
||||||
renderer.set_property('yalign', 0.)
|
renderer.set_property('yalign', 0.)
|
||||||
renderer = gtk.CellRendererText()
|
renderer = gtk.CellRendererText()
|
||||||
col.pack_start(renderer, expand=True)
|
col.pack_start(renderer, expand=True)
|
||||||
col.add_attribute(renderer, 'markup' , C_FILE)
|
col.add_attribute(renderer, 'markup', C_FILE)
|
||||||
renderer.set_property('xalign', 0.)
|
renderer.set_property('xalign', 0.)
|
||||||
renderer.set_property('yalign', 0.)
|
renderer.set_property('yalign', 0.)
|
||||||
renderer.set_property('ellipsize', pango.ELLIPSIZE_END)
|
renderer.set_property('ellipsize', pango.ELLIPSIZE_END)
|
||||||
|
@ -92,7 +92,7 @@ class FileTransfersWindow:
|
||||||
col = gtk.TreeViewColumn(_('Time'))
|
col = gtk.TreeViewColumn(_('Time'))
|
||||||
renderer = gtk.CellRendererText()
|
renderer = gtk.CellRendererText()
|
||||||
col.pack_start(renderer, expand=False)
|
col.pack_start(renderer, expand=False)
|
||||||
col.add_attribute(renderer, 'markup' , C_TIME)
|
col.add_attribute(renderer, 'markup', C_TIME)
|
||||||
renderer.set_property('yalign', 0.5)
|
renderer.set_property('yalign', 0.5)
|
||||||
renderer.set_property('xalign', 0.5)
|
renderer.set_property('xalign', 0.5)
|
||||||
renderer = gtk.CellRendererText()
|
renderer = gtk.CellRendererText()
|
||||||
|
@ -106,8 +106,8 @@ class FileTransfersWindow:
|
||||||
renderer.set_property('yalign', 0.5)
|
renderer.set_property('yalign', 0.5)
|
||||||
renderer.set_property('xalign', 0.5)
|
renderer.set_property('xalign', 0.5)
|
||||||
col.pack_start(renderer, expand=False)
|
col.pack_start(renderer, expand=False)
|
||||||
col.add_attribute(renderer, 'text' , C_PROGRESS)
|
col.add_attribute(renderer, 'text', C_PROGRESS)
|
||||||
col.add_attribute(renderer, 'value' , C_PERCENT)
|
col.add_attribute(renderer, 'value', C_PERCENT)
|
||||||
col.set_resizable(True)
|
col.set_resizable(True)
|
||||||
col.set_expand(False)
|
col.set_expand(False)
|
||||||
self.tree.append_column(col)
|
self.tree.append_column(col)
|
||||||
|
@ -847,7 +847,7 @@ class FileTransfersWindow:
|
||||||
rect = self.tree.get_cell_area(props[0], props[1])
|
rect = self.tree.get_cell_area(props[0], props[1])
|
||||||
# position of the treeview on the screen
|
# position of the treeview on the screen
|
||||||
position = widget.window.get_origin()
|
position = widget.window.get_origin()
|
||||||
self.tooltip.show_tooltip(file_props , rect.height,
|
self.tooltip.show_tooltip(file_props, rect.height,
|
||||||
position[1] + rect.y + self.height_diff)
|
position[1] + rect.y + self.height_diff)
|
||||||
else:
|
else:
|
||||||
self.tooltip.hide_tooltip()
|
self.tooltip.hide_tooltip()
|
||||||
|
|
|
@ -73,7 +73,7 @@ class GajimRemote:
|
||||||
# (argument name, help on argument, is mandatory)
|
# (argument name, help on argument, is mandatory)
|
||||||
#
|
#
|
||||||
self.commands = {
|
self.commands = {
|
||||||
'help':[
|
'help': [
|
||||||
_('Shows a help on specific command'),
|
_('Shows a help on specific command'),
|
||||||
[
|
[
|
||||||
#User gets help for the command, specified by this parameter
|
#User gets help for the command, specified by this parameter
|
||||||
|
@ -81,7 +81,7 @@ class GajimRemote:
|
||||||
_('show help on command'), False)
|
_('show help on command'), False)
|
||||||
]
|
]
|
||||||
],
|
],
|
||||||
'toggle_roster_appearance' : [
|
'toggle_roster_appearance': [
|
||||||
_('Shows or hides the roster window'),
|
_('Shows or hides the roster window'),
|
||||||
[]
|
[]
|
||||||
],
|
],
|
||||||
|
@ -135,7 +135,7 @@ class GajimRemote:
|
||||||
False)
|
False)
|
||||||
]
|
]
|
||||||
],
|
],
|
||||||
'send_chat_message':[
|
'send_chat_message': [
|
||||||
_('Sends new chat message to a contact in the roster. Both OpenPGP key '
|
_('Sends new chat message to a contact in the roster. Both OpenPGP key '
|
||||||
'and account are optional. If you want to set only \'account\', '
|
'and account are optional. If you want to set only \'account\', '
|
||||||
'without \'OpenPGP key\', just set \'OpenPGP key\' to \'\'.'),
|
'without \'OpenPGP key\', just set \'OpenPGP key\' to \'\'.'),
|
||||||
|
@ -148,7 +148,7 @@ class GajimRemote:
|
||||||
'using this account'), False),
|
'using this account'), False),
|
||||||
]
|
]
|
||||||
],
|
],
|
||||||
'send_single_message':[
|
'send_single_message': [
|
||||||
_('Sends new single message to a contact in the roster. Both OpenPGP key '
|
_('Sends new single message to a contact in the roster. Both OpenPGP key '
|
||||||
'and account are optional. If you want to set only \'account\', '
|
'and account are optional. If you want to set only \'account\', '
|
||||||
'without \'OpenPGP key\', just set \'OpenPGP key\' to \'\'.'),
|
'without \'OpenPGP key\', just set \'OpenPGP key\' to \'\'.'),
|
||||||
|
@ -162,7 +162,7 @@ class GajimRemote:
|
||||||
'using this account'), False),
|
'using this account'), False),
|
||||||
]
|
]
|
||||||
],
|
],
|
||||||
'send_groupchat_message':[
|
'send_groupchat_message': [
|
||||||
_('Sends new message to a groupchat you\'ve joined.'),
|
_('Sends new message to a groupchat you\'ve joined.'),
|
||||||
[
|
[
|
||||||
('room_jid', _('JID of the room that will receive the message'), True),
|
('room_jid', _('JID of the room that will receive the message'), True),
|
||||||
|
@ -292,11 +292,11 @@ class GajimRemote:
|
||||||
'room'), False)
|
'room'), False)
|
||||||
]
|
]
|
||||||
],
|
],
|
||||||
'check_gajim_running':[
|
'check_gajim_running': [
|
||||||
_('Check if Gajim is running'),
|
_('Check if Gajim is running'),
|
||||||
[]
|
[]
|
||||||
],
|
],
|
||||||
'toggle_ipython' : [
|
'toggle_ipython': [
|
||||||
_('Shows or hides the ipython window'),
|
_('Shows or hides the ipython window'),
|
||||||
[]
|
[]
|
||||||
],
|
],
|
||||||
|
|
|
@ -2015,7 +2015,7 @@ class GroupchatControl(ChatControlBase):
|
||||||
item = xml.get_object('member_checkmenuitem')
|
item = xml.get_object('member_checkmenuitem')
|
||||||
item.set_active(target_affiliation != 'none')
|
item.set_active(target_affiliation != 'none')
|
||||||
if not user_affiliation in ('admin', 'owner') or \
|
if not user_affiliation in ('admin', 'owner') or \
|
||||||
(user_affiliation != 'owner' and target_affiliation in ('admin','owner')):
|
(user_affiliation != 'owner' and target_affiliation in ('admin', 'owner')):
|
||||||
item.set_sensitive(False)
|
item.set_sensitive(False)
|
||||||
id_ = item.connect('activate', self.on_member_checkmenuitem_activate, jid)
|
id_ = item.connect('activate', self.on_member_checkmenuitem_activate, jid)
|
||||||
self.handlers[id_] = item
|
self.handlers[id_] = item
|
||||||
|
@ -2226,7 +2226,7 @@ class GroupchatControl(ChatControlBase):
|
||||||
# check if the current pointer is at the same path
|
# check if the current pointer is at the same path
|
||||||
# as it was before setting the timeout
|
# as it was before setting the timeout
|
||||||
if props and self.tooltip.id == props[0]:
|
if props and self.tooltip.id == props[0]:
|
||||||
rect = self.list_treeview.get_cell_area(props[0],props[1])
|
rect = self.list_treeview.get_cell_area(props[0], props[1])
|
||||||
position = self.list_treeview.window.get_origin()
|
position = self.list_treeview.window.get_origin()
|
||||||
self.tooltip.show_tooltip(contact, rect.height,
|
self.tooltip.show_tooltip(contact, rect.height,
|
||||||
position[1] + rect.y)
|
position[1] + rect.y)
|
||||||
|
|
|
@ -1625,7 +1625,7 @@ class Interface:
|
||||||
gajim.connections[account].username = new_name
|
gajim.connections[account].username = new_name
|
||||||
gajim.connections[account].change_status(status, '')
|
gajim.connections[account].change_status(status, '')
|
||||||
def on_cancel():
|
def on_cancel():
|
||||||
gajim.connections[account].change_status('offline','')
|
gajim.connections[account].change_status('offline', '')
|
||||||
|
|
||||||
dlg = dialogs.InputDialog(_('Username Conflict'),
|
dlg = dialogs.InputDialog(_('Username Conflict'),
|
||||||
_('Please type a new username for your local account'),
|
_('Please type a new username for your local account'),
|
||||||
|
@ -2877,8 +2877,8 @@ class Interface:
|
||||||
if not auto_message:
|
if not auto_message:
|
||||||
auto_message = gajim.connections[account].status
|
auto_message = gajim.connections[account].status
|
||||||
else:
|
else:
|
||||||
auto_message = auto_message.replace('$S','%(status)s')
|
auto_message = auto_message.replace('$S', '%(status)s')
|
||||||
auto_message = auto_message.replace('$T','%(time)s')
|
auto_message = auto_message.replace('$T', '%(time)s')
|
||||||
auto_message = auto_message % {
|
auto_message = auto_message % {
|
||||||
'status': gajim.status_before_autoaway[account],
|
'status': gajim.status_before_autoaway[account],
|
||||||
'time': gajim.config.get('autoawaytime')
|
'time': gajim.config.get('autoawaytime')
|
||||||
|
@ -2894,8 +2894,8 @@ class Interface:
|
||||||
if not auto_message:
|
if not auto_message:
|
||||||
auto_message = gajim.connections[account].status
|
auto_message = gajim.connections[account].status
|
||||||
else:
|
else:
|
||||||
auto_message = auto_message.replace('$S','%(status)s')
|
auto_message = auto_message.replace('$S', '%(status)s')
|
||||||
auto_message = auto_message.replace('$T','%(time)s')
|
auto_message = auto_message.replace('$T', '%(time)s')
|
||||||
auto_message = auto_message % {
|
auto_message = auto_message % {
|
||||||
'status': gajim.status_before_autoaway[account],
|
'status': gajim.status_before_autoaway[account],
|
||||||
'time': gajim.config.get('autoxatime')
|
'time': gajim.config.get('autoxatime')
|
||||||
|
|
|
@ -631,7 +631,7 @@ class HistoryWindow:
|
||||||
self.results_window.set_property('visible', False)
|
self.results_window.set_property('visible', False)
|
||||||
|
|
||||||
def save_state(self):
|
def save_state(self):
|
||||||
x,y = self.window.window.get_root_origin()
|
x, y = self.window.window.get_root_origin()
|
||||||
width, height = self.window.get_size()
|
width, height = self.window.get_size()
|
||||||
|
|
||||||
gajim.config.set('history_window_x-position', x)
|
gajim.config.set('history_window_x-position', x)
|
||||||
|
|
|
@ -68,7 +68,7 @@ display_resolution = 0.3514598*(gtk.gdk.screen_height() /
|
||||||
# embryo of CSS classes
|
# embryo of CSS classes
|
||||||
classes = {
|
classes = {
|
||||||
#'system-message':';display: none',
|
#'system-message':';display: none',
|
||||||
'problematic':';color: red',
|
'problematic': ';color: red',
|
||||||
}
|
}
|
||||||
|
|
||||||
# styles for elements
|
# styles for elements
|
||||||
|
@ -245,9 +245,9 @@ class HtmlHandler(xml.sax.handler.ContentHandler):
|
||||||
"""
|
"""
|
||||||
if value.endswith('%'):
|
if value.endswith('%'):
|
||||||
val = float(value[:-1])
|
val = float(value[:-1])
|
||||||
sign = cmp(val,0)
|
sign = cmp(val, 0)
|
||||||
# limits: 1% to 500%
|
# limits: 1% to 500%
|
||||||
val = sign*max(1,min(abs(val),500))
|
val = sign*max(1, min(abs(val), 500))
|
||||||
frac = val/100
|
frac = val/100
|
||||||
if font_relative:
|
if font_relative:
|
||||||
attrs = self._get_current_attributes()
|
attrs = self._get_current_attributes()
|
||||||
|
@ -270,9 +270,9 @@ class HtmlHandler(xml.sax.handler.ContentHandler):
|
||||||
|
|
||||||
def get_val():
|
def get_val():
|
||||||
val = float(value[:-2])
|
val = float(value[:-2])
|
||||||
sign = cmp(val,0)
|
sign = cmp(val, 0)
|
||||||
# validate length
|
# validate length
|
||||||
return sign*max(minl,min(abs(val*display_resolution),maxl))
|
return sign*max(minl, min(abs(val*display_resolution), maxl))
|
||||||
if value.endswith('pt'): # points
|
if value.endswith('pt'): # points
|
||||||
callback(get_val()*display_resolution, *args)
|
callback(get_val()*display_resolution, *args)
|
||||||
|
|
||||||
|
@ -295,9 +295,9 @@ class HtmlHandler(xml.sax.handler.ContentHandler):
|
||||||
try:
|
try:
|
||||||
# TODO: isn't "no units" interpreted as pixels?
|
# TODO: isn't "no units" interpreted as pixels?
|
||||||
val = int(value)
|
val = int(value)
|
||||||
sign = cmp(val,0)
|
sign = cmp(val, 0)
|
||||||
# validate length
|
# validate length
|
||||||
val = sign*max(minl,min(abs(val),maxl))
|
val = sign*max(minl, min(abs(val), maxl))
|
||||||
callback(val, *args)
|
callback(val, *args)
|
||||||
except Exception:
|
except Exception:
|
||||||
warnings.warn('Unable to parse length value "%s"' % value)
|
warnings.warn('Unable to parse length value "%s"' % value)
|
||||||
|
@ -308,7 +308,7 @@ class HtmlHandler(xml.sax.handler.ContentHandler):
|
||||||
|
|
||||||
def _parse_style_display(self, tag, value):
|
def _parse_style_display(self, tag, value):
|
||||||
if value == 'none':
|
if value == 'none':
|
||||||
tag.set_property('invisible','true')
|
tag.set_property('invisible', 'true')
|
||||||
# FIXME: display: block, inline
|
# FIXME: display: block, inline
|
||||||
|
|
||||||
def _parse_style_font_size(self, tag, value):
|
def _parse_style_font_size(self, tag, value):
|
||||||
|
@ -349,7 +349,7 @@ class HtmlHandler(xml.sax.handler.ContentHandler):
|
||||||
else:
|
else:
|
||||||
tag.set_property('style', style)
|
tag.set_property('style', style)
|
||||||
|
|
||||||
def __frac_length_tag_cb(self,length, tag, propname):
|
def __frac_length_tag_cb(self, length, tag, propname):
|
||||||
styles = self._get_style_tags()
|
styles = self._get_style_tags()
|
||||||
if styles:
|
if styles:
|
||||||
length += styles[-1].get_property(propname)
|
length += styles[-1].get_property(propname)
|
||||||
|
@ -540,7 +540,7 @@ class HtmlHandler(xml.sax.handler.ContentHandler):
|
||||||
# images from network... this program is now potentially
|
# images from network... this program is now potentially
|
||||||
# hackable ;)
|
# hackable ;)
|
||||||
loader = gtk.gdk.PixbufLoader()
|
loader = gtk.gdk.PixbufLoader()
|
||||||
dims = [0,0]
|
dims = [0, 0]
|
||||||
def height_cb(length):
|
def height_cb(length):
|
||||||
dims[1] = length
|
dims[1] = length
|
||||||
def width_cb(length):
|
def width_cb(length):
|
||||||
|
@ -673,7 +673,7 @@ class HtmlHandler(xml.sax.handler.ContentHandler):
|
||||||
|
|
||||||
def startElement(self, name, attrs):
|
def startElement(self, name, attrs):
|
||||||
self._flush_text()
|
self._flush_text()
|
||||||
klass = [i for i in attrs.get('class',' ').split(' ') if i]
|
klass = [i for i in attrs.get('class', ' ').split(' ') if i]
|
||||||
style = ''
|
style = ''
|
||||||
#Add styles defined for classes
|
#Add styles defined for classes
|
||||||
for k in klass:
|
for k in klass:
|
||||||
|
@ -692,7 +692,7 @@ class HtmlHandler(xml.sax.handler.ContentHandler):
|
||||||
if not href:
|
if not href:
|
||||||
href = attrs.get('HREF', None)
|
href = attrs.get('HREF', None)
|
||||||
# Gaim sends HREF instead of href
|
# Gaim sends HREF instead of href
|
||||||
title = attrs.get('title', attrs.get('rel',href))
|
title = attrs.get('title', attrs.get('rel', href))
|
||||||
type_ = attrs.get('type', None)
|
type_ = attrs.get('type', None)
|
||||||
tag = self._create_url(href, title, type_, id_)
|
tag = self._create_url(href, title, type_, id_)
|
||||||
elif name == 'blockquote':
|
elif name == 'blockquote':
|
||||||
|
@ -709,7 +709,7 @@ class HtmlHandler(xml.sax.handler.ContentHandler):
|
||||||
style += element_styles[name]
|
style += element_styles[name]
|
||||||
# so that explicit styles override implicit ones,
|
# so that explicit styles override implicit ones,
|
||||||
# we add the attribute last
|
# we add the attribute last
|
||||||
style += ";"+attrs.get('style','')
|
style += ";"+attrs.get('style', '')
|
||||||
if style == '':
|
if style == '':
|
||||||
style = None
|
style = None
|
||||||
self._begin_span(style, tag, id_)
|
self._begin_span(style, tag, id_)
|
||||||
|
@ -934,7 +934,7 @@ if __name__ == '__main__':
|
||||||
print "debug:", text
|
print "debug:", text
|
||||||
def warn(self, text):
|
def warn(self, text):
|
||||||
print "warn;", text
|
print "warn;", text
|
||||||
def error(self,text):
|
def error(self, text):
|
||||||
print "error;", text
|
print "error;", text
|
||||||
|
|
||||||
gajim.log=log()
|
gajim.log=log()
|
||||||
|
|
|
@ -106,7 +106,7 @@ class IterableIPShell:
|
||||||
os.environ['TERM'] = 'dumb'
|
os.environ['TERM'] = 'dumb'
|
||||||
excepthook = sys.excepthook
|
excepthook = sys.excepthook
|
||||||
self.IP = IPython.Shell.make_IPython(
|
self.IP = IPython.Shell.make_IPython(
|
||||||
argv,user_ns=user_ns,
|
argv, user_ns=user_ns,
|
||||||
user_global_ns=user_global_ns,
|
user_global_ns=user_global_ns,
|
||||||
embedded=True,
|
embedded=True,
|
||||||
shell_class=IPython.Shell.InteractiveShell)
|
shell_class=IPython.Shell.InteractiveShell)
|
||||||
|
@ -397,7 +397,7 @@ class ConsoleView(gtk.TextView):
|
||||||
if text:
|
if text:
|
||||||
self._write('\n')
|
self._write('\n')
|
||||||
self._showPrompt(self.prompt)
|
self._showPrompt(self.prompt)
|
||||||
self.text_buffer.move_mark(self.line_start,self.text_buffer.get_end_iter())
|
self.text_buffer.move_mark(self.line_start, self.text_buffer.get_end_iter())
|
||||||
self.text_buffer.place_cursor(self.text_buffer.get_end_iter())
|
self.text_buffer.place_cursor(self.text_buffer.get_end_iter())
|
||||||
|
|
||||||
def onKeyPress(self, widget, event):
|
def onKeyPress(self, widget, event):
|
||||||
|
@ -462,7 +462,7 @@ class IPythonView(ConsoleView, IterableIPShell):
|
||||||
"""
|
"""
|
||||||
ConsoleView.__init__(self)
|
ConsoleView.__init__(self)
|
||||||
self.cout = StringIO()
|
self.cout = StringIO()
|
||||||
IterableIPShell.__init__(self, cout=self.cout,cerr=self.cout,
|
IterableIPShell.__init__(self, cout=self.cout, cerr=self.cout,
|
||||||
input_func=self.raw_input)
|
input_func=self.raw_input)
|
||||||
# self.connect('key_press_event', self.keyPress)
|
# self.connect('key_press_event', self.keyPress)
|
||||||
self.execute()
|
self.execute()
|
||||||
|
|
|
@ -74,7 +74,7 @@ if dbus_support.supported:
|
||||||
if 'org.freedesktop.NetworkManager' in bus.list_names():
|
if 'org.freedesktop.NetworkManager' in bus.list_names():
|
||||||
nm_object = bus.get_object('org.freedesktop.NetworkManager',
|
nm_object = bus.get_object('org.freedesktop.NetworkManager',
|
||||||
'/org/freedesktop/NetworkManager')
|
'/org/freedesktop/NetworkManager')
|
||||||
props = dbus.Interface(nm_object,"org.freedesktop.DBus.Properties")
|
props = dbus.Interface(nm_object, "org.freedesktop.DBus.Properties")
|
||||||
bus.add_signal_receiver(state_changed,
|
bus.add_signal_receiver(state_changed,
|
||||||
'StateChanged',
|
'StateChanged',
|
||||||
'org.freedesktop.NetworkManager',
|
'org.freedesktop.NetworkManager',
|
||||||
|
|
|
@ -637,7 +637,7 @@ class DesktopNotification:
|
||||||
notification_response_manager.attach_to_interface()
|
notification_response_manager.attach_to_interface()
|
||||||
notification_response_manager.add_pending(self.id, self)
|
notification_response_manager.add_pending(self.id, self)
|
||||||
|
|
||||||
def notify_another_way(self,e):
|
def notify_another_way(self, e):
|
||||||
gajim.log.debug(str(e))
|
gajim.log.debug(str(e))
|
||||||
gajim.log.debug('Need to implement a new way of falling back')
|
gajim.log.debug('Need to implement a new way of falling back')
|
||||||
|
|
||||||
|
|
|
@ -2832,7 +2832,7 @@ class RosterWindow:
|
||||||
def on_ok(checked):
|
def on_ok(checked):
|
||||||
for contact in gajim.contacts.get_contacts_from_group(account, group):
|
for contact in gajim.contacts.get_contacts_from_group(account, group):
|
||||||
if not checked:
|
if not checked:
|
||||||
self.remove_contact_from_groups(contact.jid,account, [group])
|
self.remove_contact_from_groups(contact.jid, account, [group])
|
||||||
else:
|
else:
|
||||||
gajim.connections[account].unsubscribe(contact.jid)
|
gajim.connections[account].unsubscribe(contact.jid)
|
||||||
self.remove_contact(contact.jid, account, backend=True)
|
self.remove_contact(contact.jid, account, backend=True)
|
||||||
|
|
|
@ -598,7 +598,7 @@ class RosterTooltip(NotificationAreaTooltip):
|
||||||
local_time = local_time.decode(
|
local_time = local_time.decode(
|
||||||
locale.getpreferredencoding())
|
locale.getpreferredencoding())
|
||||||
text = text % local_time
|
text = text % local_time
|
||||||
properties.append(('Idle' + text,None))
|
properties.append(('Idle' + text, None))
|
||||||
|
|
||||||
while properties:
|
while properties:
|
||||||
property_ = properties.pop(0)
|
property_ = properties.pop(0)
|
||||||
|
|
|
@ -70,7 +70,7 @@ class TestNonBlockingTCP(AbstractTransportTest):
|
||||||
def do_connect(self, establish_tls=False, proxy_dict=None):
|
def do_connect(self, establish_tls=False, proxy_dict=None):
|
||||||
try:
|
try:
|
||||||
ips = socket.getaddrinfo('gajim.org', 5222,
|
ips = socket.getaddrinfo('gajim.org', 5222,
|
||||||
socket.AF_UNSPEC,socket.SOCK_STREAM)
|
socket.AF_UNSPEC, socket.SOCK_STREAM)
|
||||||
ip = ips[0]
|
ip = ips[0]
|
||||||
except socket.error, e:
|
except socket.error, e:
|
||||||
self.testcase.fail(msg=str(e))
|
self.testcase.fail(msg=str(e))
|
||||||
|
|
|
@ -94,7 +94,7 @@ class Mock(object):
|
||||||
self._setupSubclassMethodInterceptors()
|
self._setupSubclassMethodInterceptors()
|
||||||
|
|
||||||
def _setupSubclassMethodInterceptors(self):
|
def _setupSubclassMethodInterceptors(self):
|
||||||
methods = inspect.getmembers(self.realClass,inspect.isroutine)
|
methods = inspect.getmembers(self.realClass, inspect.isroutine)
|
||||||
baseMethods = dict(inspect.getmembers(Mock, inspect.ismethod))
|
baseMethods = dict(inspect.getmembers(Mock, inspect.ismethod))
|
||||||
for m in methods:
|
for m in methods:
|
||||||
name = m[0]
|
name = m[0]
|
||||||
|
@ -109,7 +109,7 @@ class Mock(object):
|
||||||
self.mockReturnValues.update(methodReturnValues)
|
self.mockReturnValues.update(methodReturnValues)
|
||||||
|
|
||||||
def mockSetExpectation(self, name, testFn, after=0, until=0):
|
def mockSetExpectation(self, name, testFn, after=0, until=0):
|
||||||
self.mockExpectations.setdefault(name, []).append((testFn,after,until))
|
self.mockExpectations.setdefault(name, []).append((testFn, after, until))
|
||||||
|
|
||||||
def _checkInterfaceCall(self, name, callParams, callKwParams):
|
def _checkInterfaceCall(self, name, callParams, callKwParams):
|
||||||
"""
|
"""
|
||||||
|
@ -231,7 +231,7 @@ class MockCall:
|
||||||
s = s + sep + repr(p)
|
s = s + sep + repr(p)
|
||||||
sep = ', '
|
sep = ', '
|
||||||
items = sorted(self.kwparams.items())
|
items = sorted(self.kwparams.items())
|
||||||
for k,v in items:
|
for k, v in items:
|
||||||
s = s + sep + k + '=' + repr(v)
|
s = s + sep + k + '=' + repr(v)
|
||||||
sep = ', '
|
sep = ', '
|
||||||
s = s + ')'
|
s = s + ')'
|
||||||
|
@ -252,7 +252,7 @@ class MockCallable:
|
||||||
|
|
||||||
def __call__(self, *params, **kwparams):
|
def __call__(self, *params, **kwparams):
|
||||||
self.mock._checkInterfaceCall(self.name, params, kwparams)
|
self.mock._checkInterfaceCall(self.name, params, kwparams)
|
||||||
thisCall = self.recordCall(params,kwparams)
|
thisCall = self.recordCall(params, kwparams)
|
||||||
self.checkExpectations(thisCall, params, kwparams)
|
self.checkExpectations(thisCall, params, kwparams)
|
||||||
return self.makeCall(params, kwparams)
|
return self.makeCall(params, kwparams)
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue