[Stéphan K.] make most strings we use unicode instacnes

This commit is contained in:
Nikos Kouremenos 2005-08-26 00:52:44 +00:00
parent 7c8fe928ad
commit cec336112d
17 changed files with 350 additions and 348 deletions

View file

@ -78,7 +78,7 @@ class AdvancedConfigurationWindow:
self.plugin.windows['advanced_config'] = self self.plugin.windows['advanced_config'] = self
def cb_value_column_data(self, col, cell, model, iter): def cb_value_column_data(self, col, cell, model, iter):
opttype = model[iter][2] opttype = model[iter][2].decode('utf-8')
if opttype == 'boolean': if opttype == 'boolean':
cell.set_property('editable', 0) cell.set_property('editable', 0)
else: else:
@ -87,14 +87,14 @@ class AdvancedConfigurationWindow:
def on_advanced_treeview_row_activated(self, treeview, path, column): def on_advanced_treeview_row_activated(self, treeview, path, column):
modelpath = self.modelfilter.convert_path_to_child_path(path) modelpath = self.modelfilter.convert_path_to_child_path(path)
modelrow = self.model[modelpath] modelrow = self.model[modelpath]
option = modelrow[0] option = modelrow[0].decode('utf-8')
if modelrow[2] == 'boolean': if modelrow[2] == 'boolean':
newval = {'False': 'True', 'True': 'False'}[modelrow[1]] newval = {'False': 'True', 'True': 'False'}[modelrow[1]]
if len(modelpath) > 1: if len(modelpath) > 1:
optnamerow = self.model[modelpath[0]] optnamerow = self.model[modelpath[0]]
optname = optnamerow[0] optname = optnamerow[0].decode('utf-8')
keyrow = self.model[modelpath[:2]] keyrow = self.model[modelpath[:2]]
key = keyrow[0] key = keyrow[0].decode('utf-8')
gajim.config.set_per(optname, key, option, newval) gajim.config.set_per(optname, key, option, newval)
else: else:
gajim.config.set(option, newval) gajim.config.set(option, newval)
@ -105,12 +105,13 @@ class AdvancedConfigurationWindow:
# convert modelfilter path to model path # convert modelfilter path to model path
modelpath = self.modelfilter.convert_path_to_child_path(path) modelpath = self.modelfilter.convert_path_to_child_path(path)
modelrow = self.model[modelpath] modelrow = self.model[modelpath]
option = modelrow[0] option = modelrow[0].decode('utf-8')
text = text.decode('utf-8')
if len(modelpath) > 1: if len(modelpath) > 1:
optnamerow = self.model[modelpath[0]] optnamerow = self.model[modelpath[0]]
optname = optnamerow[0] optname = optnamerow[0].decode('utf-8')
keyrow = self.model[modelpath[:2]] keyrow = self.model[modelpath[:2]]
key = keyrow[0] key = keyrow[0].decode('utf-8')
gajim.config.set_per(optname, key, option, text) gajim.config.set_per(optname, key, option, text)
else: else:
gajim.config.set(option, text) gajim.config.set(option, text)
@ -131,7 +132,7 @@ class AdvancedConfigurationWindow:
else: else:
iter = model.iter_children(parent_iter) iter = model.iter_children(parent_iter)
while iter: while iter:
if model[iter][0] == name: if model[iter][0].decode('utf-8') == name:
break break
iter = model.iter_next(iter) iter = model.iter_next(iter)
return iter return iter
@ -153,19 +154,19 @@ class AdvancedConfigurationWindow:
model.append(iter, [name, val[OPT_VAL], type]) model.append(iter, [name, val[OPT_VAL], type])
def visible_func(self, model, iter): def visible_func(self, model, iter):
str = self.entry.get_text() str = self.entry.get_text().decode('utf-8')
if str is None or str == '': if str is None or str == '':
return True # show all return True # show all
name = model[iter][0] name = model[iter][0].decode('utf-8')
# If a child of the iter matches, we return True # If a child of the iter matches, we return True
if model.iter_has_child(iter): if model.iter_has_child(iter):
iterC = model.iter_children(iter) iterC = model.iter_children(iter)
while iterC: while iterC:
nameC = model[iterC][0] nameC = model[iterC][0].decode('utf-8')
if model.iter_has_child(iterC): if model.iter_has_child(iterC):
iterCC = model.iter_children(iterC) iterCC = model.iter_children(iterC)
while iterCC: while iterCC:
nameCC = model[iterCC][0] nameCC = model[iterCC][0].decode('utf-8')
if nameCC.find(str) != -1: if nameCC.find(str) != -1:
return True return True
iterCC = model.iter_next(iterCC) iterCC = model.iter_next(iterCC)
@ -177,5 +178,5 @@ class AdvancedConfigurationWindow:
return False return False
def on_advanced_entry_changed(self, widget): def on_advanced_entry_changed(self, widget):
text = widget.get_text() text = widget.get_text().decode('utf-8')
self.modelfilter.refilter() self.modelfilter.refilter()

View file

@ -114,7 +114,7 @@ class Chat:
unread += self.nb_unread[jid] unread += self.nb_unread[jid]
start = "" start = ""
if unread > 1: if unread > 1:
start = '[' + str(unread) + '] ' start = '[' + unicode(unread) + '] '
elif unread == 1: elif unread == 1:
start = '* ' start = '* '
chat = self.names[jid] chat = self.names[jid]
@ -144,7 +144,7 @@ class Chat:
"""redraw the label of the tab""" """redraw the label of the tab"""
start = '' start = ''
if self.nb_unread[jid] > 1: if self.nb_unread[jid] > 1:
start = '[' + str(self.nb_unread[jid]) + '] ' start = '[' + unicode(self.nb_unread[jid]) + '] '
elif self.nb_unread[jid] == 1: elif self.nb_unread[jid] == 1:
start = '* ' start = '* '
@ -490,7 +490,7 @@ class Chat:
gtkspell.Spell(message_textview) gtkspell.Spell(message_textview)
except gobject.GError, msg: except gobject.GError, msg:
#FIXME: add a ui for this use spell.set_language() #FIXME: add a ui for this use spell.set_language()
dialogs.ErrorDialog(str(msg), _('If that is not your language for which you want to highlight misspelled words, then please set your $LANG as appropriate. Eg. for French do export LANG=fr_FR or export LANG=fr_FR.UTF-8 in ~/.bash_profile or to make it global in /etc/profile.\n\nHighlighting misspelled words feature will not be used')).get_response() dialogs.ErrorDialog(unicode(msg), _('If that is not your language for which you want to highlight misspelled words, then please set your $LANG as appropriate. Eg. for French do export LANG=fr_FR or export LANG=fr_FR.UTF-8 in ~/.bash_profile or to make it global in /etc/profile.\n\nHighlighting misspelled words feature will not be used')).get_response()
gajim.config.set('use_speller', False) gajim.config.set('use_speller', False)
conversation_textview = self.xmls[jid].get_widget( conversation_textview = self.xmls[jid].get_widget(
@ -831,7 +831,7 @@ class Chat:
if return_val: # if sth was selected when we right-clicked if return_val: # if sth was selected when we right-clicked
# get the selected text # get the selected text
start_sel, finish_sel = return_val[0], return_val[1] start_sel, finish_sel = return_val[0], return_val[1]
self.selected_phrase = buffer.get_text(start_sel, finish_sel) self.selected_phrase = buffer.get_text(start_sel, finish_sel).decode('utf-8')
def print_time_timeout(self, jid): def print_time_timeout(self, jid):
if not jid in self.xmls.keys(): if not jid in self.xmls.keys():
@ -934,7 +934,7 @@ class Chat:
#we get the end of the tag #we get the end of the tag
while not end_iter.ends_tag(texttag): while not end_iter.ends_tag(texttag):
end_iter.forward_char() end_iter.forward_char()
word = begin_iter.get_text(end_iter) word = begin_iter.get_text(end_iter).decode('utf-8')
if event.button == 3: # right click if event.button == 3: # right click
self.make_link_menu(event, kind, word) self.make_link_menu(event, kind, word)
else: else:
@ -1193,7 +1193,7 @@ class Chat:
#whatever is already typed #whatever is already typed
start_iter = conv_buf.get_start_iter() start_iter = conv_buf.get_start_iter()
end_iter = conv_buf.get_end_iter() end_iter = conv_buf.get_end_iter()
self.orig_msg[jid] = conv_buf.get_text(start_iter, end_iter, 0) self.orig_msg[jid] = conv_buf.get_text(start_iter, end_iter, 0).decode('utf-8')
self.typing_new[jid] = False self.typing_new[jid] = False
self.sent_history_pos[jid] = self.sent_history_pos[jid] - 1 self.sent_history_pos[jid] = self.sent_history_pos[jid] - 1

View file

@ -219,7 +219,8 @@ class Connection:
self.dispatch('MYVCARD', vcard) self.dispatch('MYVCARD', vcard)
#we re-send our presence with sha #we re-send our presence with sha
sshow = STATUS_LIST[self.connected] sshow = STATUS_LIST[self.connected]
prio = str(gajim.config.get_per('accounts', self.name, 'priority')) prio = unicode(gajim.config.get_per('accounts', self.name,
'priority'))
p = common.xmpp.Presence(typ = None, priority = prio, show = sshow, p = common.xmpp.Presence(typ = None, priority = prio, show = sshow,
status = self.status) status = self.status)
p = self.add_sha(p) p = self.add_sha(p)
@ -264,24 +265,25 @@ class Connection:
msgtxt = decmsg msgtxt = decmsg
encrypted = True encrypted = True
if mtype == 'error': if mtype == 'error':
self.dispatch('MSGERROR', (str(msg.getFrom()), self.dispatch('MSGERROR', (unicode(msg.getFrom()),
msg.getErrorCode(), msg.getError(), msgtxt, tim)) msg.getErrorCode(), msg.getError(), msgtxt, tim))
elif mtype == 'groupchat': elif mtype == 'groupchat':
if subject: if subject:
self.dispatch('GC_SUBJECT', (str(msg.getFrom()), subject)) self.dispatch('GC_SUBJECT', (unicode(msg.getFrom()), subject))
else: else:
if not msg.getTag('body'): #no <body> if not msg.getTag('body'): #no <body>
return return
self.dispatch('GC_MSG', (str(msg.getFrom()), msgtxt, tim)) self.dispatch('GC_MSG', (unicode(msg.getFrom()), msgtxt, tim))
gajim.logger.write('gc', msgtxt, str(msg.getFrom()), tim = tim) gajim.logger.write('gc', msgtxt, unicode(msg.getFrom()),
tim = tim)
elif mtype == 'normal': # it's single message elif mtype == 'normal': # it's single message
log_msgtxt = msgtxt log_msgtxt = msgtxt
if subject: if subject:
log_msgtxt = _('Subject: %s\n%s') % (subject, msgtxt) log_msgtxt = _('Subject: %s\n%s') % (subject, msgtxt)
gajim.logger.write('incoming', log_msgtxt, str(msg.getFrom()), gajim.logger.write('incoming', log_msgtxt, unicode(msg.getFrom()),
tim = tim) tim = tim)
self.dispatch('MSG', (str(msg.getFrom()), msgtxt, tim, encrypted, self.dispatch('MSG', (unicode(msg.getFrom()), msgtxt, tim,
mtype, subject, None)) encrypted, mtype, subject, None))
else: # it's type 'chat' else: # it's type 'chat'
if not msg.getTag('body') and chatstate is None: #no <body> if not msg.getTag('body') and chatstate is None: #no <body>
return return
@ -289,15 +291,15 @@ class Connection:
if subject: if subject:
log_msgtxt = _('Subject: %s\n%s') % (subject, msgtxt) log_msgtxt = _('Subject: %s\n%s') % (subject, msgtxt)
if msg.getTag('body'): if msg.getTag('body'):
gajim.logger.write('incoming', log_msgtxt, str(msg.getFrom()), gajim.logger.write('incoming', log_msgtxt,
tim = tim) unicode(msg.getFrom()), tim = tim)
self.dispatch('MSG', (str(msg.getFrom()), msgtxt, tim, encrypted, self.dispatch('MSG', (unicode(msg.getFrom()), msgtxt, tim,
mtype, subject, chatstate)) encrypted, mtype, subject, chatstate))
# END messageCB # END messageCB
def _presenceCB(self, con, prs): def _presenceCB(self, con, prs):
"""Called when we receive a presence""" """Called when we receive a presence"""
who = str(prs.getFrom()) who = unicode(prs.getFrom())
prio = prs.getPriority() prio = prs.getPriority()
if not prio: if not prio:
prio = 0 prio = 0
@ -332,17 +334,16 @@ class Connection:
self.to_be_sent.append(p) self.to_be_sent.append(p)
if who.find("@") <= 0: if who.find("@") <= 0:
self.dispatch('NOTIFY', self.dispatch('NOTIFY',
(prs.getFrom().getStripped().encode('utf8'), 'offline', (prs.getFrom().getStripped(), 'offline', 'offline',
'offline', prs.getFrom().getResource().encode('utf8'), prio, prs.getFrom().getResource(), prio, keyID, None, None,
keyID, None, None, None, None, None, None)) None, None, None, None))
else: else:
if not status: if not status:
status = _('I would like to add you to my roster.') status = _('I would like to add you to my roster.')
self.dispatch('SUBSCRIBE', (who, status)) self.dispatch('SUBSCRIBE', (who, status))
elif ptype == 'subscribed': elif ptype == 'subscribed':
jid = prs.getFrom() jid = prs.getFrom()
self.dispatch('SUBSCRIBED', (jid.getStripped().encode('utf8'), self.dispatch('SUBSCRIBED', (jid.getStripped(), jid.getResource()))
jid.getResource().encode('utf8')))
# BE CAREFUL: no con.updateRosterItem() in a callback # BE CAREFUL: no con.updateRosterItem() in a callback
gajim.log.debug(_('we are now subscribed to %s') % who) gajim.log.debug(_('we are now subscribed to %s') % who)
elif ptype == 'unsubscribe': elif ptype == 'unsubscribe':
@ -357,8 +358,8 @@ class Connection:
self.dispatch('ERROR', (_('Unable to join room'), self.dispatch('ERROR', (_('Unable to join room'),
_('Server response:') + '\n' + errmsg)) _('Server response:') + '\n' + errmsg))
elif errcode == '502': # Internal Timeout: elif errcode == '502': # Internal Timeout:
self.dispatch('NOTIFY', (prs.getFrom().getStripped().encode('utf8'), self.dispatch('NOTIFY', (prs.getFrom().getStripped(),
'error', errmsg, prs.getFrom().getResource().encode('utf8'), 'error', errmsg, prs.getFrom().getResource(),
prio, keyID, prs.getRole(), prs.getAffiliation(), prs.getJid(), prio, keyID, prs.getRole(), prs.getAffiliation(), prs.getJid(),
prs.getReason(), prs.getActor(), prs.getStatusCode(), prs.getReason(), prs.getActor(), prs.getStatusCode(),
prs.getNewNick())) prs.getNewNick()))
@ -366,10 +367,10 @@ class Connection:
self.dispatch('ERROR_ANSWER', ('', prs.getFrom().getStripped(), self.dispatch('ERROR_ANSWER', ('', prs.getFrom().getStripped(),
errmsg, errcode)) errmsg, errcode))
if not ptype or ptype == 'unavailable': if not ptype or ptype == 'unavailable':
jid = prs.getFrom() jid = unicode(prs.getFrom())
gajim.logger.write('status', status, str(jid).encode('utf8'), show) gajim.logger.write('status', status, jid, show)
account = prs.getFrom().getStripped().encode('utf8') account = prs.getFrom().getStripped()
resource = prs.getFrom().getResource().encode('utf8') resource = prs.getFrom().getResource()
self.dispatch('NOTIFY', ( account, show, status, self.dispatch('NOTIFY', ( account, show, status,
resource, prio, keyID, prs.getRole(), resource, prio, keyID, prs.getRole(),
prs.getAffiliation(), prs.getJid(), prs.getReason(), prs.getAffiliation(), prs.getJid(), prs.getReason(),
@ -393,11 +394,11 @@ class Connection:
# END disconenctedCB # END disconenctedCB
def _bytestreamErrorCB(self, con, iq_obj): def _bytestreamErrorCB(self, con, iq_obj):
gajim.log.debug('_bytestreamErrorCB') gajim.log.debug('_bytestreamErrorCB')
frm = str(iq_obj.getFrom()) frm = unicode(iq_obj.getFrom())
id = str(iq_obj.getAttr('id')) id = unicode(iq_obj.getAttr('id'))
query = iq_obj.getTag('query') query = iq_obj.getTag('query')
streamhost = query.getTag('streamhost') streamhost = query.getTag('streamhost')
jid = iq_obj.getFrom().getStripped().encode('utf8') jid = iq_obj.getFrom().getStripped()
id = id[3:] id = id[3:]
if not self.files_props.has_key(id): if not self.files_props.has_key(id):
return return
@ -408,10 +409,10 @@ class Connection:
def _bytestreamSetCB(self, con, iq_obj): def _bytestreamSetCB(self, con, iq_obj):
gajim.log.debug('_bytestreamSetCB') gajim.log.debug('_bytestreamSetCB')
target = str(iq_obj.getAttr('to')) target = unicode(iq_obj.getAttr('to'))
id = str(iq_obj.getAttr('id')) id = unicode(iq_obj.getAttr('id'))
query = iq_obj.getTag('query') query = iq_obj.getTag('query')
sid = str(query.getAttr('sid')) sid = unicode(query.getAttr('sid'))
file_props = gajim.socks5queue.get_file_props( file_props = gajim.socks5queue.get_file_props(
self.name, sid) self.name, sid)
streamhosts=[] streamhosts=[]
@ -422,15 +423,10 @@ class Connection:
'target': target, 'target': target,
'id': id, 'id': id,
'sid': sid, 'sid': sid,
'initiator': str(iq_obj.getFrom()) 'initiator': unicode(iq_obj.getFrom())
} }
for attr in item.getAttrs(): for attr in item.getAttrs():
val = item.getAttr(attr) host_dict[attr] = item.getAttr(attr)
if type(val) == unicode:
val = val.encode('utf-8')
if type(attr) == unicode:
attr = attr.encode('utf-8')
host_dict[attr] = val
streamhosts.append(host_dict) streamhosts.append(host_dict)
if file_props is None: if file_props is None:
if self.files_props.has_key(sid): if self.files_props.has_key(sid):
@ -487,7 +483,7 @@ class Connection:
typ = 'error') typ = 'error')
iq.setAttr('id', _id) iq.setAttr('id', _id)
err = iq.setTag('error') err = iq.setTag('error')
err.setAttr('code', str(code)) err.setAttr('code', unicode(code))
err.setData(msg) err.setData(msg)
self.to_be_sent.append(iq) self.to_be_sent.append(iq)
if code == 404: if code == 404:
@ -499,8 +495,8 @@ class Connection:
def _bytestreamResultCB(self, con, iq_obj): def _bytestreamResultCB(self, con, iq_obj):
gajim.log.debug('_bytestreamResultCB') gajim.log.debug('_bytestreamResultCB')
frm = str(iq_obj.getFrom()) frm = unicode(iq_obj.getFrom())
real_id = str(iq_obj.getAttr('id')) real_id = unicode(iq_obj.getAttr('id'))
query = iq_obj.getTag('query') query = iq_obj.getTag('query')
streamhost = None streamhost = None
try: try:
@ -521,9 +517,12 @@ class Connection:
jid = item.getAttr('jid') jid = item.getAttr('jid')
conf = gajim.config conf = gajim.config
conf.add_per('ft_proxies65_cache', jid) conf.add_per('ft_proxies65_cache', jid)
conf.set_per('ft_proxies65_cache', jid, 'host', str(host)) conf.set_per('ft_proxies65_cache', jid,
conf.set_per('ft_proxies65_cache', jid, 'port', int(port)) 'host', unicode(host))
conf.set_per('ft_proxies65_cache', jid, 'jid', str(jid)) conf.set_per('ft_proxies65_cache', jid,
'port', int(port))
conf.set_per('ft_proxies65_cache', jid,
'jid', unicode(jid))
raise common.xmpp.NodeProcessed raise common.xmpp.NodeProcessed
try: try:
streamhost = query.getTag('streamhost-used') streamhost = query.getTag('streamhost-used')
@ -545,7 +544,7 @@ class Connection:
raise common.xmpp.NodeProcessed raise common.xmpp.NodeProcessed
for host in file_props['proxyhosts']: for host in file_props['proxyhosts']:
if host['initiator'] == frm and \ if host['initiator'] == frm and \
str(query.getAttr('sid')) == file_props['sid']: unicode(query.getAttr('sid')) == file_props['sid']:
gajim.socks5queue.activate_proxy(host['idx']) gajim.socks5queue.activate_proxy(host['idx'])
break break
raise common.xmpp.NodeProcessed raise common.xmpp.NodeProcessed
@ -581,8 +580,8 @@ class Connection:
if file_props.has_key('fast'): if file_props.has_key('fast'):
fasts = file_props['fast'] fasts = file_props['fast']
if len(fasts) > 0: if len(fasts) > 0:
self._connect_error(str(iq_obj.getFrom()), fasts[0]['id'], self._connect_error(unicode(iq_obj.getFrom()),
file_props['sid'], code = 406) fasts[0]['id'], file_props['sid'], code = 406)
raise common.xmpp.NodeProcessed raise common.xmpp.NodeProcessed
@ -640,9 +639,9 @@ class Connection:
def _discoGetCB(self, con, iq_obj): def _discoGetCB(self, con, iq_obj):
''' get disco info ''' ''' get disco info '''
frm = str(iq_obj.getFrom()) frm = unicode(iq_obj.getFrom())
to = str(iq_obj.getAttr('to')) to = unicode(iq_obj.getAttr('to'))
id = str(iq_obj.getAttr('id')) id = unicode(iq_obj.getAttr('id'))
iq = common.xmpp.Iq(to = frm, typ = 'result', queryNS =\ iq = common.xmpp.Iq(to = frm, typ = 'result', queryNS =\
common.xmpp.NS_DISCO, frm = to) common.xmpp.NS_DISCO, frm = to)
iq.setAttr('id', id) iq.setAttr('id', id)
@ -673,8 +672,8 @@ class Connection:
if file_props is None: if file_props is None:
# file properties for jid is none # file properties for jid is none
return return
file_props['receiver'] = str(iq_obj.getFrom()) file_props['receiver'] = unicode(iq_obj.getFrom())
jid = iq_obj.getFrom().getStripped().encode('utf8') jid = iq_obj.getFrom().getStripped()
si = iq_obj.getTag('si') si = iq_obj.getTag('si')
feature = si.setTag('feature') feature = si.setTag('feature')
if feature.getNamespace() != common.xmpp.NS_FEATURE: if feature.getNamespace() != common.xmpp.NS_FEATURE:
@ -738,12 +737,12 @@ class Connection:
continue continue
host_dict={ host_dict={
'state': 0, 'state': 0,
'target': str(receiver), 'target': unicode(receiver),
'id': file_props['sid'], 'id': file_props['sid'],
'sid': file_props['sid'], 'sid': file_props['sid'],
'initiator': proxy, 'initiator': proxy,
'host': host, 'host': host,
'port': str(_port), 'port': unicode(_port),
'jid': jid 'jid': jid
} }
proxyhosts.append(host_dict) proxyhosts.append(host_dict)
@ -757,12 +756,12 @@ class Connection:
sha_str, self.result_socks5_sid, file_props['sid']) sha_str, self.result_socks5_sid, file_props['sid'])
if listener == None: if listener == None:
file_props['error'] = -5 file_props['error'] = -5
self.dispatch('FILE_REQUEST_ERROR', (str(receiver), file_props)) self.dispatch('FILE_REQUEST_ERROR', (unicode(receiver), file_props))
self._connect_error(str(receiver), file_props['sid'], self._connect_error(unicode(receiver), file_props['sid'],
file_props['sid'], code = 406) file_props['sid'], code = 406)
return return
iq = common.xmpp.Protocol(name = 'iq', to = str(receiver), iq = common.xmpp.Protocol(name = 'iq', to = unicode(receiver),
typ = 'set') typ = 'set')
file_props['request-id'] = 'id_' + file_props['sid'] file_props['request-id'] = 'id_' + file_props['sid']
iq.setID(file_props['request-id']) iq.setID(file_props['request-id'])
@ -771,12 +770,12 @@ class Connection:
query.setAttr('mode', 'tcp') query.setAttr('mode', 'tcp')
query.setAttr('sid', file_props['sid']) query.setAttr('sid', file_props['sid'])
streamhost = query.setTag('streamhost') streamhost = query.setTag('streamhost')
streamhost.setAttr('port', str(port)) streamhost.setAttr('port', unicode(port))
streamhost.setAttr('host', ft_override_host_to_send) streamhost.setAttr('host', ft_override_host_to_send)
streamhost.setAttr('jid', sender) streamhost.setAttr('jid', sender)
if fast and proxyhosts != []: if fast and proxyhosts != []:
file_props['proxy_receiver'] = str(receiver) file_props['proxy_receiver'] = unicode(receiver)
file_props['proxy_sender'] = str(sender) file_props['proxy_sender'] = unicode(sender)
file_props['proxyhosts'] = proxyhosts file_props['proxyhosts'] = proxyhosts
for proxyhost in proxyhosts: for proxyhost in proxyhosts:
streamhost = common.xmpp.Node(tag = 'streamhost') streamhost = common.xmpp.Node(tag = 'streamhost')
@ -792,7 +791,7 @@ class Connection:
def _siSetCB(self, con, iq_obj): def _siSetCB(self, con, iq_obj):
gajim.log.debug('_siSetCB') gajim.log.debug('_siSetCB')
jid = iq_obj.getFrom().getStripped().encode('utf8') jid = iq_obj.getFrom().getStripped()
si = iq_obj.getTag('si') si = iq_obj.getTag('si')
profile = si.getAttr('profile') profile = si.getAttr('profile')
mime_type = si.getAttr('mime-type') mime_type = si.getAttr('mime-type')
@ -802,13 +801,10 @@ class Connection:
file_tag = si.getTag('file') file_tag = si.getTag('file')
file_props = {'type': 'r'} file_props = {'type': 'r'}
for attribute in file_tag.getAttrs(): for attribute in file_tag.getAttrs():
attribute = attribute.encode('utf-8')
if attribute in ['name', 'size', 'hash', 'date']: if attribute in ['name', 'size', 'hash', 'date']:
val = file_tag.getAttr(attribute) val = file_tag.getAttr(attribute)
if val is None: if val is None:
continue continue
if type(val) is unicode:
val = val.encode('utf-8')
file_props[attribute] = val file_props[attribute] = val
file_desc_tag = file_tag.getTag('desc') file_desc_tag = file_tag.getTag('desc')
if file_desc_tag is not None: if file_desc_tag is not None:
@ -821,8 +817,8 @@ class Connection:
resource = gajim.config.get_per('accounts', self.name, 'resource') resource = gajim.config.get_per('accounts', self.name, 'resource')
file_props['receiver'] = name + '@' + hostname + '/' + resource file_props['receiver'] = name + '@' + hostname + '/' + resource
file_props['sender'] = iq_obj.getFrom() file_props['sender'] = iq_obj.getFrom()
file_props['request-id'] = str(iq_obj.getAttr('id')) file_props['request-id'] = unicode(iq_obj.getAttr('id'))
file_props['sid'] = str(si.getAttr('id')) file_props['sid'] = unicode(si.getAttr('id'))
gajim.socks5queue.add_file_props(self.name, file_props) gajim.socks5queue.add_file_props(self.name, file_props)
self.dispatch('FILE_REQUEST', (jid, file_props)) self.dispatch('FILE_REQUEST', (jid, file_props))
raise common.xmpp.NodeProcessed raise common.xmpp.NodeProcessed
@ -841,15 +837,15 @@ class Connection:
if file_props is None: if file_props is None:
# file properties for jid is none # file properties for jid is none
return return
jid = iq_obj.getFrom().getStripped().encode('utf8') jid = iq_obj.getFrom().getStripped()
file_props['error'] = -3 file_props['error'] = -3
self.dispatch('FILE_REQUEST_ERROR', (jid, file_props)) self.dispatch('FILE_REQUEST_ERROR', (jid, file_props))
raise common.xmpp.NodeProcessed raise common.xmpp.NodeProcessed
def send_file_rejection(self, file_props): def send_file_rejection(self, file_props):
''' informs sender that we refuse to download the file ''' ''' informs sender that we refuse to download the file '''
iq = common.xmpp.Protocol(name = 'iq', to = str(file_props['sender']), iq = common.xmpp.Protocol(name = 'iq',
typ = 'error') to = unicode(file_props['sender']), typ = 'error')
iq.setAttr('id', file_props['request-id']) iq.setAttr('id', file_props['request-id'])
err = common.xmpp.ErrorNode(code = '406', typ = 'auth', name = 'not-acceptable') err = common.xmpp.ErrorNode(code = '406', typ = 'auth', name = 'not-acceptable')
iq.addChild(node=err) iq.addChild(node=err)
@ -857,8 +853,8 @@ class Connection:
def send_file_approval(self, file_props): def send_file_approval(self, file_props):
''' comfirm that we want to download the file ''' ''' comfirm that we want to download the file '''
iq = common.xmpp.Protocol(name = 'iq', to = str(file_props['sender']), iq = common.xmpp.Protocol(name = 'iq',
typ = 'result') to = unicode(file_props['sender']), typ = 'result')
iq.setAttr('id', file_props['request-id']) iq.setAttr('id', file_props['request-id'])
si = iq.setTag('si') si = iq.setTag('si')
si.setNamespace(common.xmpp.NS_SI) si.setNamespace(common.xmpp.NS_SI)
@ -908,17 +904,13 @@ class Connection:
def _rosterSetCB(self, con, iq_obj): def _rosterSetCB(self, con, iq_obj):
gajim.log.debug('rosterSetCB') gajim.log.debug('rosterSetCB')
for item in iq_obj.getTag('query').getChildren(): for item in iq_obj.getTag('query').getChildren():
jid = item.getAttr('jid').encode('utf8') jid = item.getAttr('jid')
name = item.getAttr('name') name = item.getAttr('name')
if name: sub = item.getAttr('subscription')
name = name.encode('utf8')
sub = item.getAttr('subscription').encode('utf8')
ask = item.getAttr('ask') ask = item.getAttr('ask')
if ask:
ask = ask.encode('utf8')
groups = [] groups = []
for group in item.getTags('group'): for group in item.getTags('group'):
groups.append(group.getData().encode('utf8')) groups.append(group.getData())
self.dispatch('ROSTER_INFO', (jid, name, sub, ask, groups)) self.dispatch('ROSTER_INFO', (jid, name, sub, ask, groups))
raise common.xmpp.NodeProcessed raise common.xmpp.NodeProcessed
@ -930,7 +922,7 @@ class Connection:
continue continue
attr = {} attr = {}
for key in q.getAttrs().keys(): for key in q.getAttrs().keys():
attr[key.encode('utf8')] = q.getAttr(key).encode('utf8') attr[key] = q.getAttr(key)
identities = [attr] identities = [attr]
for node in q.getChildren(): for node in q.getChildren():
if node.getName() == 'ns': if node.getName() == 'ns':
@ -938,10 +930,10 @@ class Connection:
else: else:
infos = {} infos = {}
for key in node.getAttrs().keys(): for key in node.getAttrs().keys():
infos[key.encode('utf8')] = node.getAttr(key).encode('utf8') infos[key] = node.getAttr(key)
infos['category'] = node.getName() infos['category'] = node.getName()
items.append(infos) items.append(infos)
jid = str(iq_obj.getFrom()) jid = unicode(iq_obj.getFrom())
self.dispatch('AGENT_INFO', (jid, identities, features, items)) self.dispatch('AGENT_INFO', (jid, identities, features, items))
def _DiscoverItemsCB(self, con, iq_obj): def _DiscoverItemsCB(self, con, iq_obj):
@ -957,9 +949,9 @@ class Connection:
for i in qp: for i in qp:
attr = {} attr = {}
for key in i.getAttrs(): for key in i.getAttrs():
attr[key.encode('utf8')] = i.getAttrs()[key].encode('utf8') attr[key] = i.getAttrs()[key]
items.append(attr) items.append(attr)
jid = str(iq_obj.getFrom()) jid = unicode(iq_obj.getFrom())
self.dispatch('AGENT_INFO_ITEMS', (jid, node, items)) self.dispatch('AGENT_INFO_ITEMS', (jid, node, items))
def _DiscoverInfoErrorCB(self, con, iq_obj): def _DiscoverInfoErrorCB(self, con, iq_obj):
@ -985,11 +977,11 @@ class Connection:
if i.getName() == 'identity': if i.getName() == 'identity':
attr = {} attr = {}
for key in i.getAttrs().keys(): for key in i.getAttrs().keys():
attr[key.encode('utf8')] = i.getAttr(key).encode('utf8') attr[key] = i.getAttr(key)
identities.append(attr) identities.append(attr)
elif i.getName() == 'feature': elif i.getName() == 'feature':
features.append(i.getAttr('var')) features.append(i.getAttr('var'))
jid = str(iq_obj.getFrom()) jid = unicode(iq_obj.getFrom())
if not identities: if not identities:
self.to_be_sent.append(common.xmpp.Iq(typ = 'get', queryNS = \ self.to_be_sent.append(common.xmpp.Iq(typ = 'get', queryNS = \
common.xmpp.NS_AGENTS)) common.xmpp.NS_AGENTS))
@ -1086,11 +1078,11 @@ class Connection:
dic[i]['options'][j]['values'].append(tag.getData()) dic[i]['options'][j]['values'].append(tag.getData())
j += 1 j += 1
i += 1 i += 1
self.dispatch('GC_CONFIG', (str(iq_obj.getFrom()), dic)) self.dispatch('GC_CONFIG', (unicode(iq_obj.getFrom()), dic))
def _MucErrorCB(self, con, iq_obj): def _MucErrorCB(self, con, iq_obj):
gajim.log.debug('MucErrorCB') gajim.log.debug('MucErrorCB')
jid = str(iq_obj.getFrom()) jid = unicode(iq_obj.getFrom())
errmsg = iq_obj.getError() errmsg = iq_obj.getError()
errcode = iq_obj.getErrorCode() errcode = iq_obj.getErrorCode()
self.dispatch('MSGERROR', (jid, errcode, errmsg)) self.dispatch('MSGERROR', (jid, errcode, errmsg))
@ -1101,18 +1093,6 @@ class Connection:
roster = self.connection.getRoster().getRaw() roster = self.connection.getRoster().getRaw()
if not roster: if not roster:
roster = {} roster = {}
else:
for i in roster.keys():
props = roster[i]
if props.has_key('name') and props['name']:
props['name'] = props['name'].encode('utf8')
if props.has_key('groups') and props['groups']:
props['groups'] = map(lambda e:e.encode('utf8'), props['groups'])
if props.has_key('resources') and props['resources']:
props['resources'] = map(lambda e:e.encode('utf8'),
props['resources'])
del roster[i]
roster[i.encode('utf8')] = props
name = gajim.config.get_per('accounts', self.name, 'name') name = gajim.config.get_per('accounts', self.name, 'name')
hostname = gajim.config.get_per('accounts', self.name, 'hostname') hostname = gajim.config.get_per('accounts', self.name, 'hostname')
@ -1178,8 +1158,8 @@ class Connection:
def _ErrorCB(self, con, iq_obj): def _ErrorCB(self, con, iq_obj):
errmsg = iq_obj.getError() errmsg = iq_obj.getError()
errcode = iq_obj.getErrorCode() errcode = iq_obj.getErrorCode()
jid_from = str(iq_obj.getFrom()) jid_from = unicode(iq_obj.getFrom())
id = str(iq_obj.getID()) id = unicode(iq_obj.getID())
self.dispatch('ERROR_ANSWER', (id, jid_from, errmsg, errcode)) self.dispatch('ERROR_ANSWER', (id, jid_from, errmsg, errcode))
def _StanzaArrivedCB(self, con, obj): def _StanzaArrivedCB(self, con, obj):
@ -1214,9 +1194,9 @@ class Connection:
self.dispatch('REGISTER_AGENT_INFO', (data[0], data[1].asDict())) self.dispatch('REGISTER_AGENT_INFO', (data[0], data[1].asDict()))
elif realm == '': elif realm == '':
if event == common.xmpp.transports.DATA_RECEIVED: if event == common.xmpp.transports.DATA_RECEIVED:
self.dispatch('STANZA_ARRIVED', str(data)) self.dispatch('STANZA_ARRIVED', unicode(data))
elif event == common.xmpp.transports.DATA_SENT: elif event == common.xmpp.transports.DATA_SENT:
self.dispatch('STANZA_SENT', str(data)) self.dispatch('STANZA_SENT', unicode(data))
def connect(self): def connect(self):
"""Connect and authenticate to the Jabber server """Connect and authenticate to the Jabber server
@ -1389,7 +1369,7 @@ class Connection:
# active the privacy rule # active the privacy rule
self.privacy_rules_supported = True self.privacy_rules_supported = True
self.activate_privacy_rule('invisible') self.activate_privacy_rule('invisible')
prio = str(gajim.config.get_per('accounts', self.name, 'priority')) prio = unicode(gajim.config.get_per('accounts', self.name, 'priority'))
p = common.xmpp.Presence(typ = ptype, priority = prio, show = show) p = common.xmpp.Presence(typ = ptype, priority = prio, show = show)
p = self.add_sha(p) p = self.add_sha(p)
if msg: if msg:
@ -1446,7 +1426,8 @@ class Connection:
if show == 'invisible': if show == 'invisible':
self.send_invisible_presence(msg, signed, True) self.send_invisible_presence(msg, signed, True)
return return
prio = str(gajim.config.get_per('accounts', self.name, 'priority')) prio = unicode(gajim.config.get_per('accounts', self.name,
'priority'))
p = common.xmpp.Presence(typ = None, priority = prio, show = sshow) p = common.xmpp.Presence(typ = None, priority = prio, show = sshow)
p = self.add_sha(p) p = self.add_sha(p)
if msg: if msg:
@ -1490,7 +1471,8 @@ class Connection:
iq = self.build_privacy_rule('visible', 'allow') iq = self.build_privacy_rule('visible', 'allow')
self.connection.send(iq) self.connection.send(iq)
self.activate_privacy_rule('visible') self.activate_privacy_rule('visible')
prio = str(gajim.config.get_per('accounts', self.name, 'priority')) prio = unicode(gajim.config.get_per('accounts', self.name,
'priority'))
p = common.xmpp.Presence(typ = None, priority = prio, show = sshow) p = common.xmpp.Presence(typ = None, priority = prio, show = sshow)
p = self.add_sha(p) p = self.add_sha(p)
if msg: if msg:
@ -1945,7 +1927,7 @@ class Connection:
keep_alive_disconnect_after_foo_secs): keep_alive_disconnect_after_foo_secs):
self.connection.disconnect() # disconnect if no answer self.connection.disconnect() # disconnect if no answer
pritext = _('Gajim disconnected you from %s') % self.name pritext = _('Gajim disconnected you from %s') % self.name
sectext = _('%s seconds have passed and server did not reply to our keep-alive. If you believe such disconnection should not have happened, you can disable sending keep-alive packets by modifying this account.') % str(keep_alive_disconnect_after_foo_secs) sectext = _('%s seconds have passed and server did not reply to our keep-alive. If you believe such disconnection should not have happened, you can disable sending keep-alive packets by modifying this account.') % unicode(keep_alive_disconnect_after_foo_secs)
self.dispatch('ERROR', (pritext, sectext)) self.dispatch('ERROR', (pritext, sectext))
return return
if self.connection: if self.connection:

View file

@ -62,7 +62,7 @@ def convert_bytes(string):
else: else:
#B means bytes #B means bytes
suffix = _('%s B') suffix = _('%s B')
return suffix % str(bytes) return suffix % unicode(bytes)
def get_uf_show(show): def get_uf_show(show):
'''returns a userfriendly string for dnd/xa/chat '''returns a userfriendly string for dnd/xa/chat

View file

@ -127,6 +127,14 @@ class Logger:
files.append(ji + '/' + ji) files.append(ji + '/' + ji)
jid = 'gc' jid = 'gc'
show = nick show = nick
if type(tim) == unicode:
tim = tim.encode('utf-8')
if type(jid) == unicode:
jid = jid.encode('utf-8')
if type(show) == unicode:
show = show.encode('utf-8')
if msg and type(msg) == unicode:
msg = msg.encode('utf-8')
for f in files: for f in files:
path_to_file = os.path.join(LOGPATH, f) path_to_file = os.path.join(LOGPATH, f)
if os.path.isdir(path_to_file): if os.path.isdir(path_to_file):
@ -174,7 +182,7 @@ class Logger:
while (no_of_lines < begin_line and fil.readline()): while (no_of_lines < begin_line and fil.readline()):
no_of_lines += 1 no_of_lines += 1
while no_of_lines < end_line: while no_of_lines < end_line:
line = fil.readline() line = fil.readline().decode('utf-8')
if line: if line:
line = helpers.from_one_line(line) line = helpers.from_one_line(line)
lineSplited = line.split(':') lineSplited = line.split(':')

View file

@ -52,21 +52,31 @@ class OptionsParser:
return return
for line in fd.readlines(): for line in fd.readlines():
line = line.decode('utf-8')
self.read_line(line) self.read_line(line)
fd.close() fd.close()
def write_line(self, fd, opt, parents, value): def write_line(self, fd, opt, parents, value):
if value == None:
return
value = value[1]
if type(value) == unicode:
value = value.encode('utf-8')
else:
value = str(value)
if type(opt) == unicode:
opt = opt.encode('utf-8')
s = '' s = ''
if parents: if parents:
if len(parents) == 1: if len(parents) == 1:
return return
for p in parents: for p in parents:
if type(p) == unicode:
p = p.encode('utf-8')
s += p + '.' s += p + '.'
if value == None:
return
s += opt s += opt
fd.write(s + ' = ' + str(value[1]) + '\n') fd.write(s + ' = ' + value + '\n')
def write(self): def write(self):
(base_dir, filename) = os.path.split(self.__filename) (base_dir, filename) = os.path.split(self.__filename)

View file

@ -514,7 +514,7 @@ class PreferencesWindow:
def on_iconset_combobox_changed(self, widget): def on_iconset_combobox_changed(self, widget):
model = widget.get_model() model = widget.get_model()
active = widget.get_active() active = widget.get_active()
icon_string = model[active][1] icon_string = model[active][1].decode('utf-8')
gajim.config.set('iconset', icon_string) gajim.config.set('iconset', icon_string)
self.plugin.roster.reload_jabber_state_images() self.plugin.roster.reload_jabber_state_images()
self.plugin.save_config() self.plugin.save_config()
@ -529,7 +529,7 @@ class PreferencesWindow:
def on_theme_combobox_changed(self, widget): def on_theme_combobox_changed(self, widget):
model = widget.get_model() model = widget.get_model()
active = widget.get_active() active = widget.get_active()
theme = model[active][0] theme = model[active][0].decode('utf-8')
gajim.config.set('roster_theme', theme) gajim.config.set('roster_theme', theme)
@ -684,19 +684,19 @@ class PreferencesWindow:
self.plugin.save_config() self.plugin.save_config()
def on_before_time_entry_focus_out_event(self, widget, event): def on_before_time_entry_focus_out_event(self, widget, event):
gajim.config.set('before_time', widget.get_text()) gajim.config.set('before_time', widget.get_text().decode('utf-8'))
self.plugin.save_config() self.plugin.save_config()
def on_after_time_entry_focus_out_event(self, widget, event): def on_after_time_entry_focus_out_event(self, widget, event):
gajim.config.set('after_time', widget.get_text()) gajim.config.set('after_time', widget.get_text().decode('utf-8'))
self.plugin.save_config() self.plugin.save_config()
def on_before_nickname_entry_focus_out_event(self, widget, event): def on_before_nickname_entry_focus_out_event(self, widget, event):
gajim.config.set('before_nickname', widget.get_text()) gajim.config.set('before_nickname', widget.get_text().decode('utf-8'))
self.plugin.save_config() self.plugin.save_config()
def on_after_nickname_entry_focus_out_event(self, widget, event): def on_after_nickname_entry_focus_out_event(self, widget, event):
gajim.config.set('after_nickname', widget.get_text()) gajim.config.set('after_nickname', widget.get_text().decode('utf-8'))
self.plugin.save_config() self.plugin.save_config()
def update_text_tags(self): def update_text_tags(self):
@ -800,7 +800,7 @@ class PreferencesWindow:
self.xml.get_widget('browse_sounds_hbox')]) self.xml.get_widget('browse_sounds_hbox')])
def on_soundplayer_entry_changed(self, widget): def on_soundplayer_entry_changed(self, widget):
gajim.config.set('soundplayer', widget.get_text()) gajim.config.set('soundplayer', widget.get_text().decode('utf-8'))
self.plugin.save_config() self.plugin.save_config()
def on_prompt_online_status_message_checkbutton_toggled(self, widget): def on_prompt_online_status_message_checkbutton_toggled(self, widget):
@ -810,11 +810,11 @@ class PreferencesWindow:
self.on_checkbutton_toggled(widget, 'ask_offline_status') self.on_checkbutton_toggled(widget, 'ask_offline_status')
def on_sounds_treemodel_row_changed(self, model, path, iter): def on_sounds_treemodel_row_changed(self, model, path, iter):
sound_event = model.get_value(iter, 0) sound_event = model.get_value(iter, 0).decode('utf-8')
gajim.config.set_per('soundevents', sound_event, 'enabled', gajim.config.set_per('soundevents', sound_event, 'enabled',
bool(model[path][1])) bool(model[path][1]))
gajim.config.set_per('soundevents', sound_event, 'path', gajim.config.set_per('soundevents', sound_event, 'path',
model[iter][2]) model[iter][2].decode('utf-8'))
self.plugin.save_config() self.plugin.save_config()
def on_auto_away_checkbutton_toggled(self, widget): def on_auto_away_checkbutton_toggled(self, widget):
@ -830,7 +830,7 @@ class PreferencesWindow:
self.plugin.save_config() self.plugin.save_config()
def on_auto_away_message_entry_changed(self, widget): def on_auto_away_message_entry_changed(self, widget):
gajim.config.set('autoaway_message', widget.get_text()) gajim.config.set('autoaway_message', widget.get_text().decode('utf-8'))
def on_auto_xa_checkbutton_toggled(self, widget): def on_auto_xa_checkbutton_toggled(self, widget):
self.on_checkbutton_toggled(widget, 'autoxa', self.on_checkbutton_toggled(widget, 'autoxa',
@ -845,17 +845,17 @@ class PreferencesWindow:
self.plugin.save_config() self.plugin.save_config()
def on_auto_xa_message_entry_changed(self, widget): def on_auto_xa_message_entry_changed(self, widget):
gajim.config.set('autoxa_message', widget.get_text()) gajim.config.set('autoxa_message', widget.get_text().decode('utf-8'))
def save_status_messages(self, model): def save_status_messages(self, model):
for msg in gajim.config.get_per('statusmsg'): for msg in gajim.config.get_per('statusmsg'):
gajim.config.del_per('statusmsg', msg) gajim.config.del_per('statusmsg', msg)
iter = model.get_iter_first() iter = model.get_iter_first()
while iter: while iter:
val = model.get_value(iter, 0) val = model.get_value(iter, 0).decode('utf-8')
gajim.config.add_per('statusmsg', val) gajim.config.add_per('statusmsg', val)
gajim.config.set_per('statusmsg', val, 'message', gajim.config.set_per('statusmsg', val, 'message',
model[iter][1]) model[iter][1].decode('utf-8'))
iter = model.iter_next(iter) iter = model.iter_next(iter)
self.plugin.save_config() self.plugin.save_config()
@ -881,15 +881,15 @@ class PreferencesWindow:
self.plugin.save_config() self.plugin.save_config()
def on_custom_browser_entry_changed(self, widget): def on_custom_browser_entry_changed(self, widget):
gajim.config.set('custombrowser', widget.get_text()) gajim.config.set('custombrowser', widget.get_text().decode('utf-8'))
self.plugin.save_config() self.plugin.save_config()
def on_custom_mail_client_entry_changed(self, widget): def on_custom_mail_client_entry_changed(self, widget):
gajim.config.set('custommailapp', widget.get_text()) gajim.config.set('custommailapp', widget.get_text().decode('utf-8'))
self.plugin.save_config() self.plugin.save_config()
def on_custom_file_manager_entry_changed(self, widget): def on_custom_file_manager_entry_changed(self, widget):
gajim.config.set('custom_file_manager', widget.get_text()) gajim.config.set('custom_file_manager', widget.get_text().decode('utf-8'))
self.plugin.save_config() self.plugin.save_config()
def on_log_in_contact_checkbutton_toggled(self, widget): def on_log_in_contact_checkbutton_toggled(self, widget):
@ -987,7 +987,7 @@ class PreferencesWindow:
(model, iter) = self.sound_tree.get_selection().get_selected() (model, iter) = self.sound_tree.get_selection().get_selected()
if not iter: if not iter:
return return
file = model[iter][2] file = model[iter][2].decode('utf-8')
dialog = gtk.FileChooserDialog(_('Choose Sound'), None, dialog = gtk.FileChooserDialog(_('Choose Sound'), None,
gtk.FILE_CHOOSER_ACTION_OPEN, gtk.FILE_CHOOSER_ACTION_OPEN,
(gtk.STOCK_CANCEL, gtk.RESPONSE_CANCEL, (gtk.STOCK_CANCEL, gtk.RESPONSE_CANCEL,
@ -1171,7 +1171,7 @@ class AccountModificationWindow:
'custom_port') 'custom_port')
if not custom_port: if not custom_port:
custom_port = 5222 custom_port = 5222
self.xml.get_widget('custom_port_entry').set_text(str(custom_port)) self.xml.get_widget('custom_port_entry').set_text(unicode(custom_port))
gpg_key_label = self.xml.get_widget('gpg_key_label') gpg_key_label = self.xml.get_widget('gpg_key_label')
if gajim.config.get('usegpg'): if gajim.config.get('usegpg'):
@ -1198,7 +1198,7 @@ class AccountModificationWindow:
def on_save_button_clicked(self, widget): def on_save_button_clicked(self, widget):
'''When save button is clicked: Save information in config file''' '''When save button is clicked: Save information in config file'''
config = {} config = {}
name = self.xml.get_widget('name_entry').get_text() name = self.xml.get_widget('name_entry').get_text().decode('utf-8')
if gajim.connections.has_key(self.account): if gajim.connections.has_key(self.account):
if name != self.account and \ if name != self.account and \
gajim.connections[self.account].connected != 0: gajim.connections[self.account].connected != 0:
@ -1213,7 +1213,7 @@ _('To change the account name, you must be disconnected.')).get_response()
dialogs.ErrorDialog(_('Invalid account name'), dialogs.ErrorDialog(_('Invalid account name'),
_('Account name cannot contain spaces.')).get_response() _('Account name cannot contain spaces.')).get_response()
return return
jid = self.xml.get_widget('jid_entry').get_text() jid = self.xml.get_widget('jid_entry').get_text().decode('utf-8')
if jid == '' or jid.count('@') != 1: if jid == '' or jid.count('@') != 1:
dialogs.ErrorDialog(_('Invalid Jabber ID'), dialogs.ErrorDialog(_('Invalid Jabber ID'),
_('A Jabber ID must be in the form "user@servername".')).get_response() _('A Jabber ID must be in the form "user@servername".')).get_response()
@ -1221,12 +1221,12 @@ _('To change the account name, you must be disconnected.')).get_response()
new_account = self.xml.get_widget('new_account_checkbutton').get_active() new_account = self.xml.get_widget('new_account_checkbutton').get_active()
config['savepass'] = self.xml.get_widget( config['savepass'] = self.xml.get_widget(
'save_password_checkbutton').get_active() 'save_password_checkbutton').get_active()
config['password'] = self.xml.get_widget('password_entry').get_text() config['password'] = self.xml.get_widget('password_entry').get_text().decode('utf-8')
if new_account and config['password'] == '': if new_account and config['password'] == '':
dialogs.ErrorDialog(_('Invalid password'), dialogs.ErrorDialog(_('Invalid password'),
_('You must enter a password for the new account.')).get_response() _('You must enter a password for the new account.')).get_response()
return return
config['resource'] = self.xml.get_widget('resource_entry').get_text() config['resource'] = self.xml.get_widget('resource_entry').get_text().decode('utf-8')
config['priority'] = self.xml.get_widget('priority_spinbutton').\ config['priority'] = self.xml.get_widget('priority_spinbutton').\
get_value_as_int() get_value_as_int()
config['autoconnect'] = self.xml.get_widget('autoconnect_checkbutton').\ config['autoconnect'] = self.xml.get_widget('autoconnect_checkbutton').\
@ -1247,7 +1247,7 @@ _('To change the account name, you must be disconnected.')).get_response()
'sync_with_global_status_checkbutton').get_active() 'sync_with_global_status_checkbutton').get_active()
active = self.proxy_combobox.get_active() active = self.proxy_combobox.get_active()
proxy = self.proxy_combobox.get_model()[active][0] proxy = self.proxy_combobox.get_model()[active][0].decode('utf-8')
if proxy == 'None': if proxy == 'None':
proxy = '' proxy = ''
config['proxy'] = proxy config['proxy'] = proxy
@ -1266,19 +1266,19 @@ _('To change the account name, you must be disconnected.')).get_response()
return return
config['custom_port'] = custom_port config['custom_port'] = custom_port
config['custom_host'] = self.xml.get_widget( config['custom_host'] = self.xml.get_widget(
'custom_host_entry').get_text() 'custom_host_entry').get_text().decode('utf-8')
config['keyname'] = self.xml.get_widget('gpg_name_label').get_text() config['keyname'] = self.xml.get_widget('gpg_name_label').get_text().decode('utf-8')
if config['keyname'] == '': #no key selected if config['keyname'] == '': #no key selected
config['keyid'] = '' config['keyid'] = ''
config['savegpgpass'] = False config['savegpgpass'] = False
config['gpgpassword'] = '' config['gpgpassword'] = ''
else: else:
config['keyid'] = self.xml.get_widget('gpg_key_label').get_text() config['keyid'] = self.xml.get_widget('gpg_key_label').get_text().decode('utf-8')
config['savegpgpass'] = self.xml.get_widget( config['savegpgpass'] = self.xml.get_widget(
'gpg_save_password_checkbutton').get_active() 'gpg_save_password_checkbutton').get_active()
config['gpgpassword'] = self.xml.get_widget('gpg_password_entry').\ config['gpgpassword'] = self.xml.get_widget('gpg_password_entry').\
get_text() get_text().decode('utf-8')
#if we are modifying an account #if we are modifying an account
if self.modify: if self.modify:
#if we modify the name of the account #if we modify the name of the account
@ -1421,7 +1421,7 @@ _('To change the account name, you must be disconnected.')).get_response()
dialogs.ErrorDialog(_('No such account available'), dialogs.ErrorDialog(_('No such account available'),
_('You must create your account before editing your personal information.')).get_response() _('You must create your account before editing your personal information.')).get_response()
return return
jid = self.xml.get_widget('jid_entry').get_text() jid = self.xml.get_widget('jid_entry').get_text().decode('utf-8')
# show error dialog if account is newly created (not in gajim.connections) # show error dialog if account is newly created (not in gajim.connections)
if not gajim.connections.has_key(self.account) or \ if not gajim.connections.has_key(self.account) or \
@ -1567,17 +1567,17 @@ class ManageProxiesWindow:
model = self.proxies_treeview.get_model() model = self.proxies_treeview.get_model()
proxies = gajim.config.get_per('proxies') proxies = gajim.config.get_per('proxies')
i = 1 i = 1
while ('proxy' + str(i)) in proxies: while ('proxy' + unicode(i)) in proxies:
i += 1 i += 1
iter = model.append() iter = model.append()
model.set(iter, 0, 'proxy' + str(i)) model.set(iter, 0, 'proxy' + unicode(i))
gajim.config.add_per('proxies', 'proxy' + str(i)) gajim.config.add_per('proxies', 'proxy' + unicode(i))
def on_remove_proxy_button_clicked(self, widget): def on_remove_proxy_button_clicked(self, widget):
(model, iter) = self.proxies_treeview.get_selection().get_selected() (model, iter) = self.proxies_treeview.get_selection().get_selected()
if not iter: if not iter:
return return
proxy = model.get_value(iter, 0) proxy = model.get_value(iter, 0).decode('utf-8')
model.remove(iter) model.remove(iter)
gajim.config.del_per('proxies', proxy) gajim.config.del_per('proxies', proxy)
self.xml.get_widget('remove_proxy_button').set_sensitive(False) self.xml.get_widget('remove_proxy_button').set_sensitive(False)
@ -1619,8 +1619,8 @@ class ManageProxiesWindow:
self.xml.get_widget('proxy_table').set_sensitive(True) self.xml.get_widget('proxy_table').set_sensitive(True)
proxyhost_entry.set_text(gajim.config.get_per('proxies', proxy, proxyhost_entry.set_text(gajim.config.get_per('proxies', proxy,
'host')) 'host'))
proxyport_entry.set_text(str(gajim.config.get_per('proxies', proxy, proxyport_entry.set_text(unicode(gajim.config.get_per('proxies',
'port'))) proxy, 'port')))
proxyuser_entry.set_text(gajim.config.get_per('proxies', proxy, proxyuser_entry.set_text(gajim.config.get_per('proxies', proxy,
'user')) 'user'))
proxypass_entry.set_text(gajim.config.get_per('proxies', proxy, proxypass_entry.set_text(gajim.config.get_per('proxies', proxy,
@ -1637,8 +1637,8 @@ class ManageProxiesWindow:
(model, iter) = self.proxies_treeview.get_selection().get_selected() (model, iter) = self.proxies_treeview.get_selection().get_selected()
if not iter: if not iter:
return return
old_name = model.get_value(iter, 0) old_name = model.get_value(iter, 0).decode('utf-8')
new_name = widget.get_text() new_name = widget.get_text().decode('utf-8')
if new_name == '': if new_name == '':
return return
if new_name == old_name: if new_name == old_name:
@ -1656,23 +1656,23 @@ class ManageProxiesWindow:
pass pass
def on_proxyhost_entry_changed(self, widget): def on_proxyhost_entry_changed(self, widget):
value = widget.get_text() value = widget.get_text().decode('utf-8')
proxy = self.proxyname_entry.get_text() proxy = self.proxyname_entry.get_text().decode('utf-8')
gajim.config.set_per('proxies', proxy, 'host', value) gajim.config.set_per('proxies', proxy, 'host', value)
def on_proxyport_entry_changed(self, widget): def on_proxyport_entry_changed(self, widget):
value = widget.get_text() value = widget.get_text().decode('utf-8')
proxy = self.proxyname_entry.get_text() proxy = self.proxyname_entry.get_text().decode('utf-8')
gajim.config.set_per('proxies', proxy, 'port', value) gajim.config.set_per('proxies', proxy, 'port', value)
def on_proxyuser_entry_changed(self, widget): def on_proxyuser_entry_changed(self, widget):
value = widget.get_text() value = widget.get_text().decode('utf-8')
proxy = self.proxyname_entry.get_text() proxy = self.proxyname_entry.get_text().decode('utf-8')
gajim.config.set_per('proxies', proxy, 'user', value) gajim.config.set_per('proxies', proxy, 'user', value)
def on_proxypass_entry_changed(self, widget): def on_proxypass_entry_changed(self, widget):
value = widget.get_text() value = widget.get_text().decode('utf-8')
proxy = self.proxyname_entry.get_text() proxy = self.proxyname_entry.get_text().decode('utf-8')
gajim.config.set_per('proxies', proxy, 'pass', value) gajim.config.set_per('proxies', proxy, 'pass', value)
@ -1741,7 +1741,7 @@ class AccountsWindow:
(model, iter) = sel.get_selected() (model, iter) = sel.get_selected()
if not iter: if not iter:
return return
account = model.get_value(iter, 0) account = model.get_value(iter, 0).decode('utf-8')
if self.plugin.windows[account].has_key('remove_account'): if self.plugin.windows[account].has_key('remove_account'):
self.plugin.windows[account]['remove_account'].window.present() self.plugin.windows[account]['remove_account'].window.present()
else: else:
@ -1755,7 +1755,7 @@ class AccountsWindow:
(model, iter) = sel.get_selected() (model, iter) = sel.get_selected()
if not iter: if not iter:
return return
account = model.get_value(iter, 0) account = model.get_value(iter, 0).decode('utf-8')
if self.plugin.windows[account].has_key('account_modification'): if self.plugin.windows[account].has_key('account_modification'):
self.plugin.windows[account]['account_modification'].window.present() self.plugin.windows[account]['account_modification'].window.present()
else: else:
@ -1799,7 +1799,7 @@ class ServiceRegistrationWindow:
'''When Ok button is clicked: '''When Ok button is clicked:
send registration info to the core''' send registration info to the core'''
for name in self.entries.keys(): for name in self.entries.keys():
self.infos[name] = self.entries[name].get_text() self.infos[name] = self.entries[name].get_text().decode('utf-8')
if self.infos.has_key('instructions'): if self.infos.has_key('instructions'):
del self.infos['instructions'] del self.infos['instructions']
if self.infos.has_key('registered'): if self.infos.has_key('registered'):
@ -1874,11 +1874,12 @@ class ManageEmoticonsWindow:
def on_emoticons_treemodel_row_changed(self, model, path, iter): def on_emoticons_treemodel_row_changed(self, model, path, iter):
emots = gajim.config.get_per('emoticons') emots = gajim.config.get_per('emoticons')
emot = model.get_value(iter, 0).upper() emot = model.get_value(iter, 0).decode('utf-8').upper()
if not emot in emots: if not emot in emots:
gajim.config.add_per('emoticons', emot) gajim.config.add_per('emoticons', emot)
self.plugin.init_regexp() # update regexp [emoticons included] self.plugin.init_regexp() # update regexp [emoticons included]
gajim.config.set_per('emoticons', emot, 'path', model[iter][1]) gajim.config.set_per('emoticons', emot, 'path',
model[iter][1].decode('utf-8'))
self.plugin.save_config() self.plugin.save_config()
def image_is_ok(self, image): def image_is_ok(self, image):
@ -1925,17 +1926,17 @@ class ManageEmoticonsWindow:
emots = gajim.config.get_per('emoticons') emots = gajim.config.get_per('emoticons')
model = self.emot_tree.get_model() model = self.emot_tree.get_model()
iter = model.get_iter_from_string(row) iter = model.get_iter_from_string(row)
old_text = model.get_value(iter, 0) old_text = model.get_value(iter, 0).decode('utf-8')
if old_text in emots: if old_text in emots:
gajim.config.del_per('emoticons', old_text) gajim.config.del_per('emoticons', old_text)
emot = new_text.upper() emot = new_text.decode('utf-8').upper()
if emot in emots: if emot in emots:
model.remove(iter) model.remove(iter)
else: else:
gajim.config.add_per('emoticons', emot) gajim.config.add_per('emoticons', emot)
self.plugin.init_regexp() # update regexp [emoticons included] self.plugin.init_regexp() # update regexp [emoticons included]
gajim.config.set_per('emoticons', emot, 'path', gajim.config.set_per('emoticons', emot, 'path',
model[iter][1]) model[iter][1].decode('utf-8'))
model.set_value(iter, 0, emot) model.set_value(iter, 0, emot)
self.plugin.save_config() self.plugin.save_config()
@ -1947,7 +1948,7 @@ class ManageEmoticonsWindow:
(model, iter) = self.emot_tree.get_selection().get_selected() (model, iter) = self.emot_tree.get_selection().get_selected()
if not iter: if not iter:
return return
file = model[iter][1] file = model[iter][1].decode('utf-8')
dialog = gtk.FileChooserDialog(_('Choose Image'), None, dialog = gtk.FileChooserDialog(_('Choose Image'), None,
gtk.FILE_CHOOSER_ACTION_OPEN, gtk.FILE_CHOOSER_ACTION_OPEN,
(gtk.STOCK_CANCEL, gtk.RESPONSE_CANCEL, (gtk.STOCK_CANCEL, gtk.RESPONSE_CANCEL,
@ -2019,7 +2020,7 @@ class ManageEmoticonsWindow:
(model, iter) = self.emot_tree.get_selection().get_selected() (model, iter) = self.emot_tree.get_selection().get_selected()
if not iter: if not iter:
return return
gajim.config.del_per('emoticons', model.get_value(iter, 0)) gajim.config.del_per('emoticons', model.get_value(iter, 0).decode('utf-8'))
self.plugin.init_regexp() # update regexp [emoticons included] self.plugin.init_regexp() # update regexp [emoticons included]
self.plugin.save_config() self.plugin.save_config()
model.remove(iter) model.remove(iter)
@ -2135,11 +2136,11 @@ _('Without a connection, you can not browse available services')).get_response()
def on_services_treeview_row_expanded(self, widget, iter, path): def on_services_treeview_row_expanded(self, widget, iter, path):
model = self.services_treeview.get_model() model = self.services_treeview.get_model()
jid = model[iter][1] jid = model[iter][1].decode('utf-8')
child = model.iter_children(iter) child = model.iter_children(iter)
while child: while child:
child_jid = model.get_value(child, 1) child_jid = model.get_value(child, 1).decode('utf-8')
child_node = model.get_value(child, 2) child_node = model.get_value(child, 2).decode('utf-8')
# We never requested its infos # We never requested its infos
if not self.agent_infos[child_jid + child_node].has_key('features'): if not self.agent_infos[child_jid + child_node].has_key('features'):
self.browse(child_jid, child_node) self.browse(child_jid, child_node)
@ -2151,8 +2152,8 @@ _('Without a connection, you can not browse available services')).get_response()
iter = model.get_iter_root() iter = model.get_iter_root()
# We look if this agent is in the treeview # We look if this agent is in the treeview
while (iter): while (iter):
if agent == model[iter][1] and node == model.get_value( if agent == model[iter][1].decode('utf-8') and\
iter, 2): node == model.get_value(iter, 2).decode('utf-8'):
break break
if model.iter_has_child(iter): if model.iter_has_child(iter):
iter = model.iter_children(iter) iter = model.iter_children(iter)
@ -2176,8 +2177,8 @@ _('Without a connection, you can not browse available services')).get_response()
iter = model.get_iter_root() iter = model.get_iter_root()
# We look if this agent is in the treeview # We look if this agent is in the treeview
while (iter): while (iter):
if agent == model[iter][1] and node == model.get_value( if agent == model[iter][1].decode('utf-8') and\
iter, 2): node == model.get_value(iter, 2).decode('utf-8'):
break break
if model.iter_has_child(iter): if model.iter_has_child(iter):
iter = model.iter_children(iter) iter = model.iter_children(iter)
@ -2201,8 +2202,8 @@ _('Without a connection, you can not browse available services')).get_response()
# We look if this item is already in the treeview # We look if this item is already in the treeview
iter_child = model.iter_children(iter) iter_child = model.iter_children(iter)
while iter_child: while iter_child:
if item['jid'] == model.get_value(iter_child, 1) and \ if item['jid'] == model.get_value(iter_child, 1).decode('utf-8') and\
node == model.get_value(iter_child, 2): node == model.get_value(iter_child, 2).decode('utf-8'):
break break
iter_child = model.iter_next(iter_child) iter_child = model.iter_next(iter_child)
if not iter_child: # If it is not we add it if not iter_child: # If it is not we add it
@ -2223,7 +2224,7 @@ _('Without a connection, you can not browse available services')).get_response()
def on_refresh_button_clicked(self, widget): def on_refresh_button_clicked(self, widget):
'''When refresh button is clicked: refresh list: clear and rerequest it''' '''When refresh button is clicked: refresh list: clear and rerequest it'''
self.services_treeview.get_model().clear() self.services_treeview.get_model().clear()
jid = self.address_comboboxentry.child.get_text() jid = self.address_comboboxentry.child.get_text().decode('utf-8')
self.browse(jid) self.browse(jid)
def on_address_comboboxentry_changed(self, widget): def on_address_comboboxentry_changed(self, widget):
@ -2231,7 +2232,7 @@ _('Without a connection, you can not browse available services')).get_response()
if self.address_comboboxentry.get_active() != -1: if self.address_comboboxentry.get_active() != -1:
# user selected one of the entries so do auto-visit # user selected one of the entries so do auto-visit
self.services_treeview.get_model().clear() self.services_treeview.get_model().clear()
server_address = self.address_comboboxentry.child.get_text() server_address = self.address_comboboxentry.child.get_text().decode('utf-8')
self.browse(server_address) self.browse(server_address)
def on_services_treeview_row_activated(self, widget, path, col = 0): def on_services_treeview_row_activated(self, widget, path, col = 0):
@ -2248,7 +2249,7 @@ _('Without a connection, you can not browse available services')).get_response()
model, iter = self.services_treeview.get_selection().get_selected() model, iter = self.services_treeview.get_selection().get_selected()
if not iter: if not iter:
return return
service = model[iter][1] service = model[iter][1].decode('utf-8')
room = '' room = ''
if service.find('@') != -1: if service.find('@') != -1:
services = service.split('@') services = service.split('@')
@ -2265,7 +2266,7 @@ _('Without a connection, you can not browse available services')).get_response()
model, iter = self.services_treeview.get_selection().get_selected() model, iter = self.services_treeview.get_selection().get_selected()
if not iter : if not iter :
return return
service = model[iter][1] service = model[iter][1].decode('utf-8')
gajim.connections[self.account].request_register_agent_info(service) gajim.connections[self.account].request_register_agent_info(service)
self.window.destroy() self.window.destroy()
@ -2281,8 +2282,8 @@ _('Without a connection, you can not browse available services')).get_response()
path = model.get_path(iter) path = model.get_path(iter)
if len(path) == 1: # we selected the jabber server if len(path) == 1: # we selected the jabber server
return return
jid = model[iter][1] jid = model[iter][1].decode('utf-8')
node = model[iter][2] node = model[iter][2].decode('utf-8')
registered_transports = [] registered_transports = []
contacts = gajim.contacts[self.account] contacts = gajim.contacts[self.account]
for j in contacts: for j in contacts:
@ -2303,7 +2304,7 @@ _('Without a connection, you can not browse available services')).get_response()
self.join_button.set_sensitive(True) self.join_button.set_sensitive(True)
def on_go_button_clicked(self, widget): def on_go_button_clicked(self, widget):
server_address = self.address_comboboxentry.child.get_text() server_address = self.address_comboboxentry.child.get_text().decode('utf-8')
if server_address in self.latest_addresses: if server_address in self.latest_addresses:
self.latest_addresses.remove(server_address) self.latest_addresses.remove(server_address)
self.latest_addresses.insert(0, server_address) self.latest_addresses.insert(0, server_address)
@ -2351,7 +2352,7 @@ class GroupchatConfigWindow:
widget.get_active()]['values'][0] widget.get_active()]['values'][0]
def on_entry_changed(self, widget, index): def on_entry_changed(self, widget, index):
self.config[index]['values'][0] = widget.get_text() self.config[index]['values'][0] = widget.get_text().decode('utf-8')
def on_textbuffer_changed(self, widget, index): def on_textbuffer_changed(self, widget, index):
begin, end = widget.get_bounds() begin, end = widget.get_bounds()
@ -2627,7 +2628,7 @@ class ManageBookmarksWindow:
#Account data can't be changed #Account data can't be changed
return return
if self.server_entry.get_text() == '' or self.room_entry.get_text() == '': if self.server_entry.get_text().decode('utf-8') == '' or self.room_entry.get_text().decode('utf-8') == '':
dialogs.ErrorDialog(_('This bookmark has invalid data'), dialogs.ErrorDialog(_('This bookmark has invalid data'),
_('Please be sure to fill out server and room fields or remove this bookmark.')).get_response() _('Please be sure to fill out server and room fields or remove this bookmark.')).get_response()
return False return False
@ -2650,7 +2651,7 @@ _('Please be sure to fill out server and room fields or remove this bookmark.'))
for bm in account.iterchildren(): for bm in account.iterchildren():
#Convert True/False/None to '1' or '0' #Convert True/False/None to '1' or '0'
autojoin = str(int(bm[3])) autojoin = unicode(int(bm[3]))
#create the bookmark-dict #create the bookmark-dict
bmdict = { 'name': bm[1], 'jid': bm[2], 'autojoin': autojoin, bmdict = { 'name': bm[1], 'jid': bm[2], 'autojoin': autojoin,
@ -2693,7 +2694,7 @@ _('Please be sure to fill out server and room fields or remove this bookmark.'))
#Fill in the data for childs #Fill in the data for childs
self.title_entry.set_text(model[iter][1]) self.title_entry.set_text(model[iter][1])
room_jid = model[iter][2] room_jid = model[iter][2].decode('utf-8')
try: try:
(room, server) = room_jid.split('@') (room, server) = room_jid.split('@')
except ValueError: except ValueError:
@ -2722,15 +2723,15 @@ _('Please be sure to fill out server and room fields or remove this bookmark.'))
def on_server_entry_changed(self, widget): def on_server_entry_changed(self, widget):
(model, iter) = self.selection.get_selected() (model, iter) = self.selection.get_selected()
if iter: if iter:
room_jid = self.room_entry.get_text() + '@' + \ room_jid = self.room_entry.get_text().decode('utf-8') + '@' + \
self.server_entry.get_text() self.server_entry.get_text().decode('utf-8')
model[iter][2] = room_jid model[iter][2] = room_jid
def on_room_entry_changed(self, widget): def on_room_entry_changed(self, widget):
(model, iter) = self.selection.get_selected() (model, iter) = self.selection.get_selected()
if iter: if iter:
room_jid = self.room_entry.get_text() + '@' + \ room_jid = self.room_entry.get_text().decode('utf-8') + '@' + \
self.server_entry.get_text() self.server_entry.get_text().decode('utf-8')
model[iter][2] = room_jid model[iter][2] = room_jid
def on_pass_entry_changed(self, widget): def on_pass_entry_changed(self, widget):
@ -2843,7 +2844,7 @@ class FirstTimeWizardWindow:
self.back_button.set_sensitive(True) self.back_button.set_sensitive(True)
elif cur_page == 1: elif cur_page == 1:
user = self.nick_entry.get_text() user = self.nick_entry.get_text().decode('utf-8')
server = self.server_comboboxentry.get_active_text() server = self.server_comboboxentry.get_active_text()
if self.check_data(user, server): if self.check_data(user, server):
#TODO: write account to config file #TODO: write account to config file
@ -2854,7 +2855,7 @@ class FirstTimeWizardWindow:
self.go_to_last_page() self.go_to_last_page()
elif cur_page == 2: elif cur_page == 2:
user = self.register_nick_entry.get_text() user = self.register_nick_entry.get_text().decode('utf-8')
server = self.register_server_comboboxentry.get_active_text() server = self.register_server_comboboxentry.get_active_text()
if self.check_data(user, server): if self.check_data(user, server):
#TODO: Register account #TODO: Register account
@ -2930,7 +2931,7 @@ _('You need to enter a valid server address to add an account.')).get_response()
return True return True
def update_jid(self, name_widget, server_widget, jid_widget): def update_jid(self, name_widget, server_widget, jid_widget):
name = name_widget.get_text() name = name_widget.get_text().decode('utf-8')
server = server_widget.get_active_text() server = server_widget.get_active_text()
if len(name) == 0 or len(server) == 0: if len(name) == 0 or len(server) == 0:
jid_widget.set_label('') jid_widget.set_label('')

View file

@ -76,14 +76,14 @@ class EditGroupsDialog:
self.user.name, self.user.groups) self.user.name, self.user.groups)
def on_add_button_clicked(self, widget): def on_add_button_clicked(self, widget):
group = self.xml.get_widget('group_entry').get_text() group = self.xml.get_widget('group_entry').get_text().decode('utf-8')
if not group: if not group:
return return
# check if it already exists # check if it already exists
model = self.list.get_model() model = self.list.get_model()
iter = model.get_iter_root() iter = model.get_iter_root()
while iter: while iter:
if model.get_value(iter, 0) == group: if model.get_value(iter, 0).decode('utf-8') == group:
return return
iter = model.iter_next(iter) iter = model.iter_next(iter)
self.changes_made = True self.changes_made = True
@ -101,9 +101,9 @@ class EditGroupsDialog:
return return
model[path][1] = not model[path][1] model[path][1] = not model[path][1]
if model[path][1]: if model[path][1]:
self.user.groups.append(model[path][0]) self.user.groups.append(model[path][0].decode('utf-8'))
else: else:
self.user.groups.remove(model[path][0]) self.user.groups.remove(model[path][0].decode('utf-8'))
self.update_contact() self.update_contact()
def init_list(self): def init_list(self):
@ -138,7 +138,7 @@ class PassphraseDialog:
'''Wait for OK button to be pressed and return passphrase/password''' '''Wait for OK button to be pressed and return passphrase/password'''
rep = self.window.run() rep = self.window.run()
if rep == gtk.RESPONSE_OK: if rep == gtk.RESPONSE_OK:
passphrase = self.passphrase_entry.get_text() passphrase = self.passphrase_entry.get_text().decode('utf-8')
else: else:
passphrase = -1 passphrase = -1
save_passphrase_checkbutton = self.xml.\ save_passphrase_checkbutton = self.xml.\
@ -185,7 +185,7 @@ class ChooseGPGKeyDialog:
if rep == gtk.RESPONSE_OK: if rep == gtk.RESPONSE_OK:
selection = self.keys_treeview.get_selection() selection = self.keys_treeview.get_selection()
(model, iter) = selection.get_selected() (model, iter) = selection.get_selected()
keyID = [ model[iter][0], model[iter][1] ] keyID = [ model[iter][0].decode('utf-8'), model[iter][1] ]
else: else:
keyID = None keyID = None
self.window.destroy() self.window.destroy()
@ -234,7 +234,7 @@ class ChangeStatusMessageDialog:
rep = self.window.run() rep = self.window.run()
if rep == gtk.RESPONSE_OK: if rep == gtk.RESPONSE_OK:
beg, end = self.message_buffer.get_bounds() beg, end = self.message_buffer.get_bounds()
message = self.message_buffer.get_text(beg, end, 0).strip() message = self.message_buffer.get_text(beg, end, 0).decode('utf-8').strip()
msg = helpers.to_one_line(message) msg = helpers.to_one_line(message)
gajim.config.set('last_status_msg_' + self.show, msg) gajim.config.set('last_status_msg_' + self.show, msg)
else: else:
@ -247,7 +247,7 @@ class ChangeStatusMessageDialog:
active = widget.get_active() active = widget.get_active()
if active < 0: if active < 0:
return None return None
name = model[active][0] name = model[active][0].decode('utf-8')
self.message_buffer.set_text(self.values[name]) self.message_buffer.set_text(self.values[name])
def on_change_status_message_dialog_key_press_event(self, widget, event): def on_change_status_message_dialog_key_press_event(self, widget, event):
@ -332,8 +332,8 @@ _('Please fill in the data of the contact you want to add in account %s') %accou
def on_subscribe_button_clicked(self, widget): def on_subscribe_button_clicked(self, widget):
'''When Subscribe button is clicked''' '''When Subscribe button is clicked'''
jid = self.jid_entry.get_text() jid = self.jid_entry.get_text().decode('utf-8')
nickname = self.nickname_entry.get_text() nickname = self.nickname_entry.get_text().decode('utf-8')
if not jid: if not jid:
return return
if jid.find('@') < 0: if jid.find('@') < 0:
@ -343,8 +343,8 @@ _('Contact names must be of the form "user@servername".')).get_response()
message_buffer = self.xml.get_widget('message_textview').get_buffer() message_buffer = self.xml.get_widget('message_textview').get_buffer()
start_iter = message_buffer.get_start_iter() start_iter = message_buffer.get_start_iter()
end_iter = message_buffer.get_end_iter() end_iter = message_buffer.get_end_iter()
message = message_buffer.get_text(start_iter, end_iter, 0) message = message_buffer.get_text(start_iter, end_iter, 0).decode('utf-8')
group = self.group_comboboxentry.child.get_text() group = self.group_comboboxentry.child.get_text().decode('utf-8')
self.plugin.roster.req_sub(self, jid, message, self.account, self.plugin.roster.req_sub(self, jid, message, self.account,
group = group, pseudo = nickname) group = group, pseudo = nickname)
if self.xml.get_widget('auto_authorize_checkbutton').get_active(): if self.xml.get_widget('auto_authorize_checkbutton').get_active():
@ -354,10 +354,10 @@ _('Contact names must be of the form "user@servername".')).get_response()
def fill_jid(self): def fill_jid(self):
model = self.protocol_combobox.get_model() model = self.protocol_combobox.get_model()
index = self.protocol_combobox.get_active() index = self.protocol_combobox.get_active()
jid = self.uid_entry.get_text().strip() jid = self.uid_entry.get_text().decode('utf-8').strip()
if index > 0: # it's not jabber but a transport if index > 0: # it's not jabber but a transport
jid = jid.replace('@', '%') jid = jid.replace('@', '%')
agent = model[index][1] agent = model[index][1].decode('utf-8')
if agent: if agent:
jid += '@' + agent jid += '@' + agent
self.jid_entry.set_text(jid) self.jid_entry.set_text(jid)
@ -366,7 +366,7 @@ _('Contact names must be of the form "user@servername".')).get_response()
self.fill_jid() self.fill_jid()
def guess_agent(self): def guess_agent(self):
uid = self.uid_entry.get_text() uid = self.uid_entry.get_text().decode('utf-8')
model = self.protocol_combobox.get_model() model = self.protocol_combobox.get_model()
#If login contains only numbers, it's probably an ICQ number #If login contains only numbers, it's probably an ICQ number
@ -376,13 +376,13 @@ _('Contact names must be of the form "user@servername".')).get_response()
return return
def set_nickname(self): def set_nickname(self):
uid = self.uid_entry.get_text() uid = self.uid_entry.get_text().decode('utf-8')
nickname = self.nickname_entry.get_text() nickname = self.nickname_entry.get_text().decode('utf-8')
if nickname == self.old_uid_value: if nickname == self.old_uid_value:
self.nickname_entry.set_text(uid.split('@')[0]) self.nickname_entry.set_text(uid.split('@')[0])
def on_uid_entry_changed(self, widget): def on_uid_entry_changed(self, widget):
uid = self.uid_entry.get_text() uid = self.uid_entry.get_text().decode('utf-8')
self.guess_agent() self.guess_agent()
self.set_nickname() self.set_nickname()
self.fill_jid() self.fill_jid()
@ -544,7 +544,7 @@ class InputDialog:
self.dialog.show_all() self.dialog.show_all()
def on_okbutton_clicked(self, widget): def on_okbutton_clicked(self, widget):
response = self.input_entry.get_text() response = self.input_entry.get_text().decode('utf-8')
self.dialog.destroy() self.dialog.destroy()
self.ok_handler(response) self.ok_handler(response)
@ -664,7 +664,7 @@ _('You can not join a group chat unless you are connected.')).get_response()
def on_recently_combobox_changed(self, widget): def on_recently_combobox_changed(self, widget):
model = widget.get_model() model = widget.get_model()
iter = widget.get_active_iter() iter = widget.get_active_iter()
gid = model[iter][0] gid = model[iter][0].decode('utf-8')
self.xml.get_widget('room_entry').set_text(gid.split('@')[0]) self.xml.get_widget('room_entry').set_text(gid.split('@')[0])
self.xml.get_widget('server_entry').set_text(gid.split('@')[1]) self.xml.get_widget('server_entry').set_text(gid.split('@')[1])
@ -674,10 +674,10 @@ _('You can not join a group chat unless you are connected.')).get_response()
def on_join_button_clicked(self, widget): def on_join_button_clicked(self, widget):
'''When Join button is clicked''' '''When Join button is clicked'''
nickname = self.xml.get_widget('nickname_entry').get_text() nickname = self.xml.get_widget('nickname_entry').get_text().decode('utf-8')
room = self.xml.get_widget('room_entry').get_text() room = self.xml.get_widget('room_entry').get_text().decode('utf-8')
server = self.xml.get_widget('server_entry').get_text() server = self.xml.get_widget('server_entry').get_text().decode('utf-8')
password = self.xml.get_widget('password_entry').get_text() password = self.xml.get_widget('password_entry').get_text().decode('utf-8')
jid = '%s@%s' % (room, server) jid = '%s@%s' % (room, server)
if jid in self.recently_groupchat: if jid in self.recently_groupchat:
self.recently_groupchat.remove(jid) self.recently_groupchat.remove(jid)
@ -743,12 +743,12 @@ _('Without a connection, you can not change your password.')).get_response()
while not end: while not end:
rep = self.dialog.run() rep = self.dialog.run()
if rep == gtk.RESPONSE_OK: if rep == gtk.RESPONSE_OK:
password1 = self.password1_entry.get_text() password1 = self.password1_entry.get_text().decode('utf-8')
if not password1: if not password1:
ErrorDialog(_('Invalid password'), ErrorDialog(_('Invalid password'),
_('You must enter a password.')).get_response() _('You must enter a password.')).get_response()
continue continue
password2 = self.password2_entry.get_text() password2 = self.password2_entry.get_text().decode('utf-8')
if password1 != password2: if password1 != password2:
ErrorDialog(_('Passwords do not match'), ErrorDialog(_('Passwords do not match'),
_('The passwords typed in both fields must be identical.')).get_response() _('The passwords typed in both fields must be identical.')).get_response()
@ -818,7 +818,7 @@ class PopupNotificationWindow:
if file_props is not None: if file_props is not None:
if file_props['type'] == 'r': if file_props['type'] == 'r':
# get the name of the sender, as it is in the roster # get the name of the sender, as it is in the roster
sender = str(file_props['sender']).split('/')[0] sender = unicode(file_props['sender']).split('/')[0]
name = gajim.get_first_contact_instance_from_jid( name = gajim.get_first_contact_instance_from_jid(
account, sender).name account, sender).name
txt = _('From %s') % name txt = _('From %s') % name
@ -1017,7 +1017,7 @@ class SingleMessageWindow:
def update_char_counter(self, widget): def update_char_counter(self, widget):
characters_no = self.message_tv_buffer.get_char_count() characters_no = self.message_tv_buffer.get_char_count()
self.count_chars_label.set_text(str(characters_no)) self.count_chars_label.set_text(unicode(characters_no))
def send_single_message(self): def send_single_message(self):
if gajim.connections[self.account].connected <= 1: if gajim.connections[self.account].connected <= 1:
@ -1026,10 +1026,10 @@ class SingleMessageWindow:
_('Please make sure you are connected with "%s".' % self.account) _('Please make sure you are connected with "%s".' % self.account)
).get_response() ).get_response()
return return
to_whom_jid = self.to_entry.get_text() to_whom_jid = self.to_entry.get_text().decode('utf-8')
subject = self.subject_entry.get_text() subject = self.subject_entry.get_text().decode('utf-8')
begin, end = self.message_tv_buffer.get_bounds() begin, end = self.message_tv_buffer.get_bounds()
message = self.message_tv_buffer.get_text(begin, end) message = self.message_tv_buffer.get_text(begin, end).decode('utf-8')
if to_whom_jid.find('/announce/') != -1: if to_whom_jid.find('/announce/') != -1:
gajim.connections[self.account].send_motd(to_whom_jid, subject, gajim.connections[self.account].send_motd(to_whom_jid, subject,
@ -1148,7 +1148,7 @@ class XMLConsoleWindow:
).get_response() ).get_response()
return return
begin_iter, end_iter = self.input_tv_buffer.get_bounds() begin_iter, end_iter = self.input_tv_buffer.get_bounds()
stanza = self.input_tv_buffer.get_text(begin_iter, end_iter) stanza = self.input_tv_buffer.get_text(begin_iter, end_iter).decode('utf-8')
if stanza: if stanza:
gajim.connections[self.account].send_stanza(stanza) gajim.connections[self.account].send_stanza(stanza)
self.input_tv_buffer.set_text('') # we sent ok, clear the textview self.input_tv_buffer.set_text('') # we sent ok, clear the textview

View file

@ -117,7 +117,7 @@ class FileTransfersWindow:
# 'account' is the sender # 'account' is the sender
for file_props in self.files_props['s'].values(): for file_props in self.files_props['s'].values():
if file_props['tt_account'] == account: if file_props['tt_account'] == account:
receiver_jid = str(file_props['receiver']).split('/')[0] receiver_jid = unicode(file_props['receiver']).split('/')[0]
if jid == receiver_jid: if jid == receiver_jid:
if not self.is_transfer_stoped(file_props): if not self.is_transfer_stoped(file_props):
active_transfers[0].append(file_props) active_transfers[0].append(file_props)
@ -125,7 +125,7 @@ class FileTransfersWindow:
# 'account' is the recipient # 'account' is the recipient
for file_props in self.files_props['r'].values(): for file_props in self.files_props['r'].values():
if file_props['tt_account'] == account: if file_props['tt_account'] == account:
sender_jid = str(file_props['sender']).split('/')[0] sender_jid = unicode(file_props['sender']).split('/')[0]
if jid == sender_jid: if jid == sender_jid:
if not self.is_transfer_stoped(file_props): if not self.is_transfer_stoped(file_props):
active_transfers[1].append(file_props) active_transfers[1].append(file_props)
@ -145,7 +145,7 @@ class FileTransfersWindow:
sectext += '\n\t' + _('Size: %s') % \ sectext += '\n\t' + _('Size: %s') % \
helpers.convert_bytes(file_props['size']) helpers.convert_bytes(file_props['size'])
if file_props['type'] == 'r': if file_props['type'] == 'r':
jid = str(file_props['sender']).split('/')[0] jid = unicode(file_props['sender']).split('/')[0]
sender_name = gajim.get_first_contact_instance_from_jid( sender_name = gajim.get_first_contact_instance_from_jid(
file_props['tt_account'], jid).name file_props['tt_account'], jid).name
sender = gtkgui_helpers.escape_for_pango_markup(sender_name) sender = gtkgui_helpers.escape_for_pango_markup(sender_name)
@ -155,7 +155,7 @@ class FileTransfersWindow:
sectext += '\n\t' +_('Sender: %s') % sender sectext += '\n\t' +_('Sender: %s') % sender
sectext += '\n\t' +_('Recipient: ') sectext += '\n\t' +_('Recipient: ')
if file_props['type'] == 's': if file_props['type'] == 's':
jid = str(file_props['receiver']).split('/')[0] jid = unicode(file_props['receiver']).split('/')[0]
receiver_name = gajim.get_first_contact_instance_from_jid( receiver_name = gajim.get_first_contact_instance_from_jid(
file_props['tt_account'], jid).name file_props['tt_account'], jid).name
recipient = gtkgui_helpers.escape_for_pango_markup(receiver_name) recipient = gtkgui_helpers.escape_for_pango_markup(receiver_name)
@ -342,7 +342,7 @@ _('Connection with peer cannot be established.'))
iter = self.get_iter_by_sid(typ, sid) iter = self.get_iter_by_sid(typ, sid)
if iter is None: if iter is None:
return return
sid = self.model[iter][4] sid = self.model[iter][4].decode('utf-8')
file_props = self.files_props[sid[0]][sid[1:]] file_props = self.files_props[sid[0]][sid[1:]]
if status == 'stop': if status == 'stop':
file_props['stopped'] = True file_props['stopped'] = True
@ -363,7 +363,7 @@ _('Connection with peer cannot be established.'))
if iter is None: if iter is None:
iter = self.get_iter_by_sid(typ, sid) iter = self.get_iter_by_sid(typ, sid)
if iter is not None: if iter is not None:
text = str(percent) + '%\n' text = unicode(percent) + '%\n'
if transfered_size == 0: if transfered_size == 0:
text += '0' text += '0'
else: else:
@ -389,7 +389,7 @@ _('Connection with peer cannot be established.'))
session id''' session id'''
iter = self.model.get_iter_root() iter = self.model.get_iter_root()
while iter: while iter:
if typ + sid == self.model[iter][4]: if typ + sid == self.model[iter][4].decode('utf-8'):
return iter return iter
iter = self.model.iter_next(iter) iter = self.model.iter_next(iter)
@ -410,7 +410,7 @@ _('Connection with peer cannot be established.'))
if os.path.exists(file_path) and os.path.isfile(file_path): if os.path.exists(file_path) and os.path.isfile(file_path):
stat = os.stat(file_path) stat = os.stat(file_path)
os.stat(file_path) os.stat(file_path)
file_props['size'] = str(stat[6]) file_props['size'] = unicode(stat[6])
file_props['sid'] = self.get_sid() file_props['sid'] = self.get_sid()
file_props['completed'] = False file_props['completed'] = False
file_props['started'] = False file_props['started'] = False
@ -467,7 +467,7 @@ _('Connection with peer cannot be established.'))
except: except:
self.tooltip.hide_tooltip() self.tooltip.hide_tooltip()
return return
sid = self.model[iter][4] sid = self.model[iter][4].decode('utf-8')
file_props = self.files_props[sid[0]][sid[1:]] file_props = self.files_props[sid[0]][sid[1:]]
if file_props is not None: if file_props is not None:
if self.tooltip.timeout == 0 or self.tooltip.id != props[0]: if self.tooltip.timeout == 0 or self.tooltip.id != props[0]:
@ -539,7 +539,7 @@ _('Connection with peer cannot be established.'))
self.set_all_insensitive() self.set_all_insensitive()
return return
current_iter = self.model.get_iter(path) current_iter = self.model.get_iter(path)
sid = self.model[current_iter][4] sid = self.model[current_iter][4].decode('utf-8')
file_props = self.files_props[sid[0]][sid[1:]] file_props = self.files_props[sid[0]][sid[1:]]
self.remove_button.set_sensitive(is_row_selected) self.remove_button.set_sensitive(is_row_selected)
self.remove_menuitem.set_sensitive(is_row_selected) self.remove_menuitem.set_sensitive(is_row_selected)
@ -597,7 +597,7 @@ _('Connection with peer cannot be established.'))
if selected is None or selected[1] is None: if selected is None or selected[1] is None:
return return
s_iter = selected[1] s_iter = selected[1]
sid = self.model[s_iter][4] sid = self.model[s_iter][4].decode('utf-8')
file_props = self.files_props[sid[0]][sid[1:]] file_props = self.files_props[sid[0]][sid[1:]]
if not file_props.has_key('tt_account'): if not file_props.has_key('tt_account'):
# file transfer is not set yet # file transfer is not set yet
@ -639,7 +639,7 @@ _('Connection with peer cannot be established.'))
if selected is None or selected[1] is None: if selected is None or selected[1] is None:
return return
s_iter = selected[1] s_iter = selected[1]
sid = self.model[s_iter][4] sid = self.model[s_iter][4].decode('utf-8')
file_props = self.files_props[sid[0]][sid[1:]] file_props = self.files_props[sid[0]][sid[1:]]
if self.is_transfer_paused(file_props): if self.is_transfer_paused(file_props):
file_props['paused'] = False file_props['paused'] = False
@ -656,7 +656,7 @@ _('Connection with peer cannot be established.'))
if selected is None or selected[1] is None: if selected is None or selected[1] is None:
return return
s_iter = selected[1] s_iter = selected[1]
sid = self.model[s_iter][4] sid = self.model[s_iter][4].decode('utf-8')
file_props = self.files_props[sid[0]][sid[1:]] file_props = self.files_props[sid[0]][sid[1:]]
if not file_props.has_key('tt_account'): if not file_props.has_key('tt_account'):
return return
@ -677,7 +677,7 @@ _('Connection with peer cannot be established.'))
# 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
iter = self.model.get_iter(props[0]) iter = self.model.get_iter(props[0])
sid = self.model[iter][4] sid = self.model[iter][4].decode('utf-8')
file_props = self.files_props[sid[0]][sid[1:]] file_props = self.files_props[sid[0]][sid[1:]]
rect = self.tree.get_cell_area(props[0],props[1]) rect = self.tree.get_cell_area(props[0],props[1])
position = widget.window.get_origin() position = widget.window.get_origin()
@ -777,7 +777,7 @@ _('Connection with peer cannot be established.'))
i = len(self.model) - 1 i = len(self.model) - 1
while i >= 0: while i >= 0:
iter = self.model.get_iter((i)) iter = self.model.get_iter((i))
sid = self.model[iter][4] sid = self.model[iter][4].decode('utf-8')
file_props = self.files_props[sid[0]][sid[1:]] file_props = self.files_props[sid[0]][sid[1:]]
if file_props.has_key('completed') and file_props['completed']: if file_props.has_key('completed') and file_props['completed']:
self.model.remove(iter) self.model.remove(iter)
@ -792,7 +792,7 @@ _('Connection with peer cannot be established.'))
if selected is None or selected[1] is None: if selected is None or selected[1] is None:
return return
s_iter = selected[1] s_iter = selected[1]
sid = self.model[s_iter][4] sid = self.model[s_iter][4].decode('utf-8')
file_props = self.files_props[sid[0]][sid[1:]] file_props = self.files_props[sid[0]][sid[1:]]
if not file_props.has_key('file-name'): if not file_props.has_key('file-name'):
return return

View file

@ -160,7 +160,7 @@ class Interface:
def handle_event_error_answer(self, account, array): def handle_event_error_answer(self, account, array):
id, jid_from, errmsg, errcode = array id, jid_from, errmsg, errcode = array
if str(errcode) in ['403', '406'] and id: if unicode(errcode) in ['403', '406'] and id:
# show the error dialog # show the error dialog
ft = self.windows['file_transfers'] ft = self.windows['file_transfers']
sid = id sid = id
@ -174,7 +174,7 @@ class Interface:
conn = gajim.connections[account] conn = gajim.connections[account]
conn.disconnect_transfer(file_props) conn.disconnect_transfer(file_props)
return return
elif str(errcode) == '404': elif unicode(errcode) == '404':
conn = gajim.connections[account] conn = gajim.connections[account]
sid = id sid = id
if len(id) > 3 and id[2] == '_': if len(id) > 3 and id[2] == '_':
@ -768,7 +768,7 @@ class Interface:
if file_props.has_key('stalled') and file_props['stalled'] or \ if file_props.has_key('stalled') and file_props['stalled'] or \
file_props.has_key('paused') and file_props['paused']: file_props.has_key('paused') and file_props['paused']:
return return
jid = str(file_props['sender']) jid = unicode(file_props['sender'])
if gajim.config.get('notify_on_file_complete'): if gajim.config.get('notify_on_file_complete'):
if (gajim.connections[account].connected in (2, 3) if (gajim.connections[account].connected in (2, 3)
and gajim.config.get('autopopup')) or \ and gajim.config.get('autopopup')) or \

View file

@ -79,7 +79,7 @@ class GajimThemesWindow:
def on_theme_cell_edited(self, cell, row, new_name): def on_theme_cell_edited(self, cell, row, new_name):
model = self.themes_tree.get_model() model = self.themes_tree.get_model()
iter = model.get_iter_from_string(row) iter = model.get_iter_from_string(row)
old_name = model.get_value(iter, 0) old_name = model.get_value(iter, 0).decode('utf-8')
if old_name == new_name: if old_name == new_name:
return return
if new_name in gajim.config.get_per('themes'): if new_name in gajim.config.get_per('themes'):
@ -115,24 +115,24 @@ class GajimThemesWindow:
return return
self.xml.get_widget('remove_button').set_sensitive(True) self.xml.get_widget('remove_button').set_sensitive(True)
self.xml.get_widget('fonts_colors_table').set_sensitive(True) self.xml.get_widget('fonts_colors_table').set_sensitive(True)
self.current_theme = model.get_value(iter, 0) self.current_theme = model.get_value(iter, 0).decode('utf-8')
self.set_widgets(self.current_theme) self.set_widgets(self.current_theme)
def on_add_button_clicked(self, widget): def on_add_button_clicked(self, widget):
model = self.themes_tree.get_model() model = self.themes_tree.get_model()
iter = model.append() iter = model.append()
i = 0 i = 0
while _('theme name') + str(i) in gajim.config.get_per('themes'): while _('theme name') + unicode(i) in gajim.config.get_per('themes'):
i += 1 i += 1
model.set_value(iter, 0, _('theme name') + str(i)) model.set_value(iter, 0, _('theme name') + unicode(i))
gajim.config.add_per('themes', _('theme_name') + str(i)) gajim.config.add_per('themes', _('theme_name') + unicode(i))
self.plugin.windows['preferences'].update_preferences_window() self.plugin.windows['preferences'].update_preferences_window()
def on_remove_button_clicked(self, widget): def on_remove_button_clicked(self, widget):
(model, iter) = self.themes_tree.get_selection().get_selected() (model, iter) = self.themes_tree.get_selection().get_selected()
if not iter: if not iter:
return return
name = model.get_value(iter, 0) name = model.get_value(iter, 0).decode('utf-8')
gajim.config.del_per('themes', name) gajim.config.del_per('themes', name)
model.remove(iter) model.remove(iter)
self.plugin.windows['preferences'].update_preferences_window() self.plugin.windows['preferences'].update_preferences_window()

View file

@ -221,7 +221,7 @@ class GroupchatWindow(chat.Chat):
if not iter: if not iter:
return None return None
while not fin: while not fin:
role_name = model.get_value(iter, 1) role_name = model.get_value(iter, 1).decode('utf-8')
if role == role_name: if role == role_name:
return iter return iter
iter = model.iter_next(iter) iter = model.iter_next(iter)
@ -241,7 +241,7 @@ class GroupchatWindow(chat.Chat):
if not user_iter: if not user_iter:
fin2 = True fin2 = True
while not fin2: while not fin2:
if nick == model.get_value(user_iter, 1): if nick == model.get_value(user_iter, 1).decode('utf-8'):
return user_iter return user_iter
user_iter = model.iter_next(user_iter) user_iter = model.iter_next(user_iter)
if not user_iter: if not user_iter:
@ -317,7 +317,7 @@ class GroupchatWindow(chat.Chat):
if not user_iter: if not user_iter:
continue continue
while user_iter: while user_iter:
nick = model.get_value(user_iter, 1) nick = model.get_value(user_iter, 1).decode('utf-8')
show = gajim.gc_contacts[self.account][room_jid][nick].show show = gajim.gc_contacts[self.account][room_jid][nick].show
state_images = roster.get_appropriate_state_images(room_jid) state_images = roster.get_appropriate_state_images(room_jid)
image = state_images[show] #FIXME: always Jabber why? image = state_images[show] #FIXME: always Jabber why?
@ -412,7 +412,7 @@ class GroupchatWindow(chat.Chat):
_('Please specify the new subject:'), subject) _('Please specify the new subject:'), subject)
response = instance.get_response() response = instance.get_response()
if response == gtk.RESPONSE_OK: if response == gtk.RESPONSE_OK:
subject = instance.input_entry.get_text() subject = instance.input_entry.get_text().decode('utf-8')
gajim.connections[self.account].send_gc_subject(room_jid, subject) gajim.connections[self.account].send_gc_subject(room_jid, subject)
def on_change_nick_menuitem_activate(self, widget): def on_change_nick_menuitem_activate(self, widget):
@ -422,7 +422,7 @@ class GroupchatWindow(chat.Chat):
_('Please specify the new nickname you want to use:'), nick) _('Please specify the new nickname you want to use:'), nick)
response = instance.get_response() response = instance.get_response()
if response == gtk.RESPONSE_OK: if response == gtk.RESPONSE_OK:
nick = instance.input_entry.get_text() nick = instance.input_entry.get_text().decode('utf-8')
gajim.connections[self.account].change_gc_nick(room_jid, nick) gajim.connections[self.account].change_gc_nick(room_jid, nick)
def on_configure_room_menuitem_activate(self, widget): def on_configure_room_menuitem_activate(self, widget):
@ -464,7 +464,7 @@ class GroupchatWindow(chat.Chat):
'conversation_textview') 'conversation_textview')
message_buffer = widget.get_buffer() message_buffer = widget.get_buffer()
start_iter, end_iter = message_buffer.get_bounds() start_iter, end_iter = message_buffer.get_bounds()
message = message_buffer.get_text(start_iter, end_iter, False) message = message_buffer.get_text(start_iter, end_iter, False).decode('utf-8')
if event.keyval == gtk.keysyms.ISO_Left_Tab: # SHIFT + TAB if event.keyval == gtk.keysyms.ISO_Left_Tab: # SHIFT + TAB
if (event.state & gtk.gdk.CONTROL_MASK): # CTRL + SHIFT + TAB if (event.state & gtk.gdk.CONTROL_MASK): # CTRL + SHIFT + TAB
@ -475,7 +475,7 @@ class GroupchatWindow(chat.Chat):
else: else:
cursor_position = message_buffer.get_insert() cursor_position = message_buffer.get_insert()
end_iter = message_buffer.get_iter_at_mark(cursor_position) end_iter = message_buffer.get_iter_at_mark(cursor_position)
text = message_buffer.get_text(start_iter, end_iter, False) text = message_buffer.get_text(start_iter, end_iter, False).decode('utf-8')
if not text or text.endswith(' '): if not text or text.endswith(' '):
if not self.last_key_tabs[room_jid]: # if we are nick cycling, last char will always be space if not self.last_key_tabs[room_jid]: # if we are nick cycling, last char will always be space
return False return False
@ -577,7 +577,7 @@ class GroupchatWindow(chat.Chat):
message_buffer = message_textview.get_buffer() message_buffer = message_textview.get_buffer()
start_iter = message_buffer.get_start_iter() start_iter = message_buffer.get_start_iter()
end_iter = message_buffer.get_end_iter() end_iter = message_buffer.get_end_iter()
message = message_buffer.get_text(start_iter, end_iter, 0) message = message_buffer.get_text(start_iter, end_iter, 0).decode('utf-8')
# send the message # send the message
self.send_gc_message(message) self.send_gc_message(message)
@ -702,11 +702,7 @@ class GroupchatWindow(chat.Chat):
else: else:
kind = 'status' kind = 'status'
# nick can be unicode or utf-8
nick = self.nicks[room_jid] nick = self.nicks[room_jid]
if type(nick) == str:
nick = unicode(nick, 'utf-8')
if kind == 'incoming' and \ if kind == 'incoming' and \
text.lower().find(nick.lower()) != -1: text.lower().find(nick.lower()) != -1:
other_tags_for_name.append('bold') other_tags_for_name.append('bold')
@ -722,7 +718,7 @@ class GroupchatWindow(chat.Chat):
_('You may specify a reason below:')) _('You may specify a reason below:'))
response = instance.get_response() response = instance.get_response()
if response == gtk.RESPONSE_OK: if response == gtk.RESPONSE_OK:
reason = instance.input_entry.get_text() reason = instance.input_entry.get_text().decode('utf-8')
else: else:
return # stop kicking procedure return # stop kicking procedure
gajim.connections[self.account].gc_set_role(room_jid, nick, 'none', gajim.connections[self.account].gc_set_role(room_jid, nick, 'none',
@ -753,7 +749,7 @@ class GroupchatWindow(chat.Chat):
_('You may specify a reason below:')) _('You may specify a reason below:'))
response = instance.get_response() response = instance.get_response()
if response == gtk.RESPONSE_OK: if response == gtk.RESPONSE_OK:
reason = instance.input_entry.get_text() reason = instance.input_entry.get_text().decode('utf-8')
else: else:
return # stop banning procedure return # stop banning procedure
gajim.connections[self.account].gc_set_affiliation(room_jid, jid, gajim.connections[self.account].gc_set_affiliation(room_jid, jid,
@ -824,7 +820,7 @@ class GroupchatWindow(chat.Chat):
'''opens a chat window and msg is not None sends private message to a '''opens a chat window and msg is not None sends private message to a
contact in a room''' contact in a room'''
if nick is None: if nick is None:
nick = model[iter][1] nick = model[iter][1].decode('utf-8')
room_jid = self.get_active_jid() room_jid = self.get_active_jid()
fjid = gajim.construct_fjid(room_jid, nick) # 'fake' jid fjid = gajim.construct_fjid(room_jid, nick) # 'fake' jid
if not self.plugin.windows[self.account]['chats'].has_key(fjid): if not self.plugin.windows[self.account]['chats'].has_key(fjid):
@ -873,7 +869,7 @@ class GroupchatWindow(chat.Chat):
def mk_menu(self, room_jid, event, iter): def mk_menu(self, room_jid, event, iter):
'''Make contact's popup menu''' '''Make contact's popup menu'''
model = self.list_treeview[room_jid].get_model() model = self.list_treeview[room_jid].get_model()
nick = model[iter][1] nick = model[iter][1].decode('utf-8')
c = gajim.gc_contacts[self.account][room_jid][nick] c = gajim.gc_contacts[self.account][room_jid][nick]
jid = c.jid jid = c.jid
target_affiliation = c.affiliation target_affiliation = c.affiliation
@ -1003,7 +999,7 @@ class GroupchatWindow(chat.Chat):
self.xmls[room_jid] = gtk.glade.XML(GTKGUI_GLADE, 'gc_vbox', APP) self.xmls[room_jid] = gtk.glade.XML(GTKGUI_GLADE, 'gc_vbox', APP)
self.childs[room_jid] = self.xmls[room_jid].get_widget('gc_vbox') self.childs[room_jid] = self.xmls[room_jid].get_widget('gc_vbox')
chat.Chat.new_tab(self, room_jid) chat.Chat.new_tab(self, room_jid)
self.nicks[room_jid] = nick.decode('utf-8') self.nicks[room_jid] = nick
self.subjects[room_jid] = '' self.subjects[room_jid] = ''
self.room_creation[room_jid] = time.time() self.room_creation[room_jid] = time.time()
self.nick_hits[room_jid] = [] self.nick_hits[room_jid] = []
@ -1085,7 +1081,7 @@ class GroupchatWindow(chat.Chat):
self.tooltip.hide_tooltip() self.tooltip.hide_tooltip()
return return
room_jid = self.get_active_jid() room_jid = self.get_active_jid()
nick = model[iter][1] nick = model[iter][1].decode('utf-8')
if nick != 'moderator' and nick != 'participant': if nick != 'moderator' and nick != 'participant':
account = self.account account = self.account
@ -1163,7 +1159,7 @@ class GroupchatWindow(chat.Chat):
model = widget.get_model() model = widget.get_model()
iter = model.get_iter(path) iter = model.get_iter(path)
if len(path) == 2: if len(path) == 2:
nick = model[iter][1] nick = model[iter][1].decode('utf-8')
fjid = gajim.construct_fjid(room_jid, nick) fjid = gajim.construct_fjid(room_jid, nick)
if not self.plugin.windows[self.account]['chats'].has_key(fjid): if not self.plugin.windows[self.account]['chats'].has_key(fjid):
show = gajim.gc_contacts[self.account][room_jid][nick].show show = gajim.gc_contacts[self.account][room_jid][nick].show
@ -1184,7 +1180,7 @@ class GroupchatWindow(chat.Chat):
model = widget.get_model() model = widget.get_model()
iter = model.get_iter(path) iter = model.get_iter(path)
nick = model[iter][1] nick = model[iter][1].decode('utf-8')
if not nick in gajim.gc_contacts[self.account][room_jid]: #it's a group if not nick in gajim.gc_contacts[self.account][room_jid]: #it's a group
if x < 20: # first cell in 1st column (the arrow SINGLE clicked) if x < 20: # first cell in 1st column (the arrow SINGLE clicked)
if (widget.row_expanded(path)): if (widget.row_expanded(path)):
@ -1207,7 +1203,7 @@ class GroupchatWindow(chat.Chat):
widget.expand_row(path, False) widget.expand_row(path, False)
else: # We want to send a private message else: # We want to send a private message
room_jid = self.get_active_jid() room_jid = self.get_active_jid()
nick = model[iter][1] nick = model[iter][1].decode('utf-8')
fjid = gajim.construct_fjid(room_jid, nick) fjid = gajim.construct_fjid(room_jid, nick)
if not self.plugin.windows[self.account]['chats'].has_key(fjid): if not self.plugin.windows[self.account]['chats'].has_key(fjid):
show = gajim.gc_contacts[self.account][room_jid][nick].show show = gajim.gc_contacts[self.account][room_jid][nick].show

View file

@ -86,8 +86,7 @@ def reduce_chars_newlines(text, max_chars = 0, max_lines = 0,
If any of the params is not present(None or 0) the action If any of the params is not present(None or 0) the action
on it is not performed on it is not performed
''' '''
# make sure that we have only unicode text text = text
text = text.decode('utf-8')
def _cut_if_long(str): def _cut_if_long(str):
if len(str) > max_chars: if len(str) > max_chars:

View file

@ -57,7 +57,7 @@ class RosterWindow:
return return
account = model.get_iter_root() account = model.get_iter_root()
while account: while account:
account_name = model.get_value(account, 3) account_name = model.get_value(account, 3).decode('utf-8')
if name == account_name: if name == account_name:
break break
account = model.iter_next(account) account = model.iter_next(account)
@ -68,7 +68,7 @@ class RosterWindow:
root = self.get_account_iter(account) root = self.get_account_iter(account)
group = model.iter_children(root) group = model.iter_children(root)
while group: while group:
group_name = model.get_value(group, 3) group_name = model.get_value(group, 3).decode('utf-8')
if name == group_name: if name == group_name:
break break
group = model.iter_next(group) group = model.iter_next(group)
@ -83,7 +83,7 @@ class RosterWindow:
while group: while group:
user = model.iter_children(group) user = model.iter_children(group)
while user: while user:
if jid == model.get_value(user, 3): if jid == model.get_value(user, 3).decode('utf-8'):
found.append(user) found.append(user)
user = model.iter_next(user) user = model.iter_next(user)
group = model.iter_next(group) group = model.iter_next(group)
@ -157,8 +157,7 @@ class RosterWindow:
typestr, user.jid, account, False, None]) # FIXME None --> avatar typestr, user.jid, account, False, None]) # FIXME None --> avatar
if gajim.groups[account][g]['expand']: if gajim.groups[account][g]['expand']:
self.tree.expand_row(model.get_path(iterG), self.tree.expand_row(model.get_path(iterG), False)
False)
self.draw_contact(jid, account) self.draw_contact(jid, account)
def really_remove_contact(self, user, account): def really_remove_contact(self, user, account):
@ -180,7 +179,7 @@ class RosterWindow:
model = self.tree.get_model() model = self.tree.get_model()
for i in self.get_contact_iter(user.jid, account): for i in self.get_contact_iter(user.jid, account):
parent_i = model.iter_parent(i) parent_i = model.iter_parent(i)
group = model.get_value(parent_i, 3) group = model.get_value(parent_i, 3).decode('utf-8')
model.remove(i) model.remove(i)
if model.iter_n_children(parent_i) == 0: if model.iter_n_children(parent_i) == 0:
model.remove(parent_i) model.remove(parent_i)
@ -235,7 +234,7 @@ class RosterWindow:
contact = gajim.get_highest_prio_contact_from_contacts(contact_instances) contact = gajim.get_highest_prio_contact_from_contacts(contact_instances)
name = contact.name name = contact.name
if len(contact_instances) > 1: if len(contact_instances) > 1:
name += ' (' + str(len(contact_instances)) + ')' name += ' (' + unicode(len(contact_instances)) + ')'
state_images = self.get_appropriate_state_images(jid) state_images = self.get_appropriate_state_images(jid)
if gajim.awaiting_messages[account].has_key(jid): if gajim.awaiting_messages[account].has_key(jid):
@ -676,8 +675,8 @@ class RosterWindow:
self.tooltip.hide_tooltip() self.tooltip.hide_tooltip()
return return
if model[iter][2] == 'contact': if model[iter][2] == 'contact':
account = model[iter][4] account = model[iter][4].decode('utf-8')
jid = model[iter][3] jid = model[iter][3].decode('utf-8')
img = model[iter][0] img = model[iter][0]
if self.tooltip.timeout == 0 or self.tooltip.id != props[0]: if self.tooltip.timeout == 0 or self.tooltip.id != props[0]:
self.tooltip.id = row self.tooltip.id = row
@ -721,8 +720,8 @@ class RosterWindow:
model = self.tree.get_model() model = self.tree.get_model()
row_type = model[iter][2] row_type = model[iter][2]
jid = model[iter][3] jid = model[iter][3].decode('utf-8')
account = model[iter][4] account = model[iter][4].decode('utf-8')
if row_type == 'contact': if row_type == 'contact':
# it's jid # it's jid
#Remove resource indicator (Name (2)) #Remove resource indicator (Name (2))
@ -789,9 +788,9 @@ class RosterWindow:
def mk_menu_user(self, event, iter): def mk_menu_user(self, event, iter):
'''Make contact's popup menu''' '''Make contact's popup menu'''
model = self.tree.get_model() model = self.tree.get_model()
jid = model[iter][3] jid = model[iter][3].decode('utf-8')
path = model.get_path(iter) path = model.get_path(iter)
account = model[iter][4] account = model[iter][4].decode('utf-8')
contact = gajim.contacts[account][jid][0] contact = gajim.contacts[account][jid][0]
xml = gtk.glade.XML(GTKGUI_GLADE, 'roster_contact_context_menu', xml = gtk.glade.XML(GTKGUI_GLADE, 'roster_contact_context_menu',
@ -891,9 +890,9 @@ class RosterWindow:
def mk_menu_agent(self, event, iter): def mk_menu_agent(self, event, iter):
'''Make agent's popup menu''' '''Make agent's popup menu'''
model = self.tree.get_model() model = self.tree.get_model()
jid = model[iter][3] jid = model[iter][3].decode('utf-8')
path = model.get_path(iter) path = model.get_path(iter)
account = model[iter][4] account = model[iter][4].decode('utf-8')
user = gajim.contacts[account][jid][0] user = gajim.contacts[account][jid][0]
menu = gtk.Menu() menu = gtk.Menu()
@ -955,7 +954,7 @@ class RosterWindow:
def mk_menu_account(self, event, iter): def mk_menu_account(self, event, iter):
'''Make account's popup menu''' '''Make account's popup menu'''
model = self.tree.get_model() model = self.tree.get_model()
account = model[iter][3] account = model[iter][3].decode('utf-8')
#FIXME: make most menuitems of this menu insensitive if account is offline #FIXME: make most menuitems of this menu insensitive if account is offline
@ -1083,8 +1082,8 @@ _('If "%s" accepts this request you will know his status.') %jid)
model, iter = treeselection.get_selected() model, iter = treeselection.get_selected()
if not iter: if not iter:
return return
jid = model[iter][3] jid = model[iter][3].decode('utf-8')
account = model[iter][4] account = model[iter][4].decode('utf-8')
type = model[iter][2] type = model[iter][2]
user = gajim.contacts[account][jid][0] user = gajim.contacts[account][jid][0]
if type == 'contact': if type == 'contact':
@ -1146,8 +1145,8 @@ _('If "%s" accepts this request you will know his status.') %jid)
iter = model.get_iter(path) iter = model.get_iter(path)
type = model[iter][2] type = model[iter][2]
if type in ('agent', 'contact'): if type in ('agent', 'contact'):
account = model[iter][4] account = model[iter][4].decode('utf-8')
jid = model[iter][3] jid = model[iter][3].decode('utf-8')
if self.plugin.windows[account]['chats'].has_key(jid): if self.plugin.windows[account]['chats'].has_key(jid):
self.plugin.windows[account]['chats'][jid].set_active_tab(jid) self.plugin.windows[account]['chats'][jid].set_active_tab(jid)
elif gajim.contacts[account].has_key(jid): elif gajim.contacts[account].has_key(jid):
@ -1296,7 +1295,7 @@ _('If "%s" accepts this request you will know his status.') %jid)
).get_response() ).get_response()
self.update_status_comboxbox() self.update_status_comboxbox()
return return
status = model[active][2] status = model[active][2].decode('utf-8')
message = self.get_status_message(status) message = self.get_status_message(status)
if message == -1: if message == -1:
self.update_status_comboxbox() self.update_status_comboxbox()
@ -1615,9 +1614,9 @@ _('If "%s" accepts this request you will know his status.') %jid)
'''When an iter is double clicked: open the chat window''' '''When an iter is double clicked: open the chat window'''
model = self.tree.get_model() model = self.tree.get_model()
iter = model.get_iter(path) iter = model.get_iter(path)
account = model[iter][4] account = model[iter][4].decode('utf-8')
type = model[iter][2] type = model[iter][2]
jid = model[iter][3] jid = model[iter][3].decode('utf-8')
if type in ('group', 'account'): if type in ('group', 'account'):
if self.tree.row_expanded(path): if self.tree.row_expanded(path):
self.tree.collapse_row(path) self.tree.collapse_row(path)
@ -1638,11 +1637,11 @@ _('If "%s" accepts this request you will know his status.') %jid)
if gajim.config.get('mergeaccounts') or len(gajim.connections) == 1: if gajim.config.get('mergeaccounts') or len(gajim.connections) == 1:
accounts = gajim.connections.keys() accounts = gajim.connections.keys()
else: else:
accounts = [model[iter][4]] accounts = [model[iter][4].decode('utf-8')]
type = model[iter][2] type = model[iter][2]
if type == 'group': if type == 'group':
model.set_value(iter, 0, self.jabber_state_images['opened']) model.set_value(iter, 0, self.jabber_state_images['opened'])
jid = model[iter][3] jid = model[iter][3].decode('utf-8')
for account in accounts: for account in accounts:
if gajim.groups[account].has_key(jid): # This account has this group if gajim.groups[account].has_key(jid): # This account has this group
gajim.groups[account][jid]['expand'] = True gajim.groups[account][jid]['expand'] = True
@ -1665,11 +1664,11 @@ _('If "%s" accepts this request you will know his status.') %jid)
if gajim.config.get('mergeaccounts') or len(gajim.connections) == 1: if gajim.config.get('mergeaccounts') or len(gajim.connections) == 1:
accounts = gajim.connections.keys() accounts = gajim.connections.keys()
else: else:
accounts = [model[iter][4]] accounts = [model[iter][4].decode('utf-8')]
type = model[iter][2] type = model[iter][2]
if type == 'group': if type == 'group':
model.set_value(iter, 0, self.jabber_state_images['closed']) model.set_value(iter, 0, self.jabber_state_images['closed'])
jid = model[iter][3] jid = model[iter][3].decode('utf-8')
for account in accounts: for account in accounts:
if gajim.groups[account].has_key(jid): # This account has this group if gajim.groups[account].has_key(jid): # This account has this group
gajim.groups[account][jid]['expand'] = False gajim.groups[account][jid]['expand'] = False
@ -1695,8 +1694,8 @@ _('If "%s" accepts this request you will know his status.') %jid)
self.editing_path = None self.editing_path = None
model = self.tree.get_model() model = self.tree.get_model()
iter = model.get_iter(path) iter = model.get_iter(path)
account = model[iter][4] account = model[iter][4].decode('utf-8')
jid = model[iter][3] jid = model[iter][3].decode('utf-8')
type = model[iter][2] type = model[iter][2]
# restore the number of resources string at the end of contact name # restore the number of resources string at the end of contact name
if type == 'contact' and len(gajim.contacts[account][jid]) > 1: if type == 'contact' and len(gajim.contacts[account][jid]) > 1:
@ -1720,8 +1719,8 @@ _('If "%s" accepts this request you will know his status.') %jid)
self.editing_path = None self.editing_path = None
return return
self.editing_path = None self.editing_path = None
account = model[iter][4] account = model[iter][4].decode('utf-8')
jid = model[iter][3] jid = model[iter][3].decode('utf-8')
type = model[iter][2] type = model[iter][2]
if type == 'contact': if type == 'contact':
old_text = gajim.contacts[account][jid][0].name old_text = gajim.contacts[account][jid][0].name
@ -1731,7 +1730,7 @@ _('If "%s" accepts this request you will know his status.') %jid)
gajim.connections[account].update_contact(jid, new_text, u.groups) gajim.connections[account].update_contact(jid, new_text, u.groups)
self.draw_contact(jid, account) self.draw_contact(jid, account)
elif type == 'group': elif type == 'group':
old_name = model[iter][1] old_name = model[iter][1].decode('utf-8')
# Groups maynot change name from or to 'not in the roster' # Groups maynot change name from or to 'not in the roster'
if _('not in the roster') in (new_text, old_name): if _('not in the roster') in (new_text, old_name):
return return
@ -1838,8 +1837,8 @@ _('If "%s" accepts this request you will know his status.') %jid)
gajim.config.get_per('themes', theme, 'groupbgcolor')) gajim.config.get_per('themes', theme, 'groupbgcolor'))
renderer.set_property('xalign', 0.5) renderer.set_property('xalign', 0.5)
else: else:
jid = model[iter][3] jid = model[iter][3].decode('utf-8')
account = model[iter][4] account = model[iter][4].decode('utf-8')
if jid in gajim.newly_added[account]: if jid in gajim.newly_added[account]:
renderer.set_property('cell-background', '#adc3c6') renderer.set_property('cell-background', '#adc3c6')
elif jid in gajim.to_be_removed[account]: elif jid in gajim.to_be_removed[account]:
@ -1871,8 +1870,8 @@ _('If "%s" accepts this request you will know his status.') %jid)
gajim.config.get_per('themes', theme, 'groupfont')) gajim.config.get_per('themes', theme, 'groupfont'))
renderer.set_property('xpad', 4) renderer.set_property('xpad', 4)
else: else:
jid = model[iter][3] jid = model[iter][3].decode('utf-8')
account = model[iter][4] account = model[iter][4].decode('utf-8')
renderer.set_property('foreground', renderer.set_property('foreground',
gajim.config.get_per('themes', theme, 'contacttextcolor')) gajim.config.get_per('themes', theme, 'contacttextcolor'))
if jid in gajim.newly_added[account]: if jid in gajim.newly_added[account]:
@ -1896,8 +1895,8 @@ _('If "%s" accepts this request you will know his status.') %jid)
renderer.set_property('cell-background', renderer.set_property('cell-background',
gajim.config.get_per('themes', theme, 'groupbgcolor')) gajim.config.get_per('themes', theme, 'groupbgcolor'))
else: else:
jid = model[iter][3] jid = model[iter][3].decode('utf-8')
account = model[iter][4] account = model[iter][4].decode('utf-8')
if jid in gajim.newly_added[account]: if jid in gajim.newly_added[account]:
renderer.set_property('cell-background', '#adc3c6') renderer.set_property('cell-background', '#adc3c6')
elif jid in gajim.to_be_removed[account]: elif jid in gajim.to_be_removed[account]:
@ -1923,6 +1922,9 @@ _('If "%s" accepts this request you will know his status.') %jid)
name2 = model.get_value(iter2, 1) name2 = model.get_value(iter2, 1)
if not name1 or not name2: if not name1 or not name2:
return 0 return 0
else:
name1 = name1.decode('utf-8')
name2 = name2.decode('utf-8')
type1 = model.get_value(iter1, 2) type1 = model.get_value(iter1, 2)
type2 = model.get_value(iter2, 2) type2 = model.get_value(iter2, 2)
if type1 == 'group': if type1 == 'group':
@ -1938,8 +1940,9 @@ _('If "%s" accepts this request you will know his status.') %jid)
gajim.config.get('sort_by_show'): gajim.config.get('sort_by_show'):
account = model.get_value(iter1, 4) account = model.get_value(iter1, 4)
if account and model.get_value(iter2, 4) == account: if account and model.get_value(iter2, 4) == account:
jid1 = model.get_value(iter1, 3) account = account.decode('utf-8')
jid2 = model.get_value(iter2, 3) jid1 = model.get_value(iter1, 3).decode('utf-8')
jid2 = model.get_value(iter2, 3).decode('utf-8')
luser1 = gajim.contacts[account][jid1] luser1 = gajim.contacts[account][jid1]
luser2 = gajim.contacts[account][jid2] luser2 = gajim.contacts[account][jid2]
cshow = {'online':0, 'chat': 1, 'away': 2, 'xa': 3, 'dnd': 4, cshow = {'online':0, 'chat': 1, 'away': 2, 'xa': 3, 'dnd': 4,
@ -2004,15 +2007,16 @@ _('If "%s" accepts this request you will know his status.') %jid)
#droped in another account #droped in another account
return return
iter_group_source = model.iter_parent(iter_source) iter_group_source = model.iter_parent(iter_source)
grp_source = model.get_value(iter_group_source, 3) grp_source = model.get_value(iter_group_source, 3).decode('utf-8')
if grp_source == _('Transports') or grp_source == _('not in the roster'): if grp_source == _('Transports') or grp_source == _('not in the roster'):
return return
account = model.get_value(iter_dest, 4) account = model.get_value(iter_dest, 4).decode('utf-8')
type_dest = model.get_value(iter_dest, 2) type_dest = model.get_value(iter_dest, 2)
if type_dest == 'group': if type_dest == 'group':
grp_dest = model.get_value(iter_dest, 3) grp_dest = model.get_value(iter_dest, 3).decode('utf-8')
else: else:
grp_dest = model.get_value(model.iter_parent(iter_dest), 3) grp_dest = model.get_value(model.iter_parent(iter_dest), 3).\
decode('utf-8')
if grp_source == grp_dest: if grp_source == grp_dest:
return return
# We upgrade only the first user because user2.groups is a pointer to # We upgrade only the first user because user2.groups is a pointer to
@ -2042,7 +2046,7 @@ _('If "%s" accepts this request you will know his status.') %jid)
if change_title_allowed: if change_title_allowed:
start = '' start = ''
if self.nb_unread > 1: if self.nb_unread > 1:
start = '[' + str(self.nb_unread) + '] ' start = '[' + unicode(self.nb_unread) + '] '
elif self.nb_unread == 1: elif self.nb_unread == 1:
start = '* ' start = '* '
self.window.set_title(start + 'Gajim') self.window.set_title(start + 'Gajim')

View file

@ -329,7 +329,7 @@ timestamp, contact):
message_buffer = message_textview.get_buffer() message_buffer = message_textview.get_buffer()
start_iter = message_buffer.get_start_iter() start_iter = message_buffer.get_start_iter()
end_iter = message_buffer.get_end_iter() end_iter = message_buffer.get_end_iter()
message = message_buffer.get_text(start_iter, end_iter, 0) message = message_buffer.get_text(start_iter, end_iter, 0).decode('utf-8')
# send the message # send the message
self.send_message(message) self.send_message(message)
@ -478,7 +478,7 @@ timestamp, contact):
conversation_textview = widget conversation_textview = widget
message_buffer = conversation_textview.get_buffer() message_buffer = conversation_textview.get_buffer()
start_iter, end_iter = message_buffer.get_bounds() start_iter, end_iter = message_buffer.get_bounds()
message = message_buffer.get_text(start_iter, end_iter, False) message = message_buffer.get_text(start_iter, end_iter, False).decode('utf-8')
if event.keyval == gtk.keysyms.ISO_Left_Tab: # SHIFT + TAB if event.keyval == gtk.keysyms.ISO_Left_Tab: # SHIFT + TAB
if event.state & gtk.gdk.CONTROL_MASK: # CTRL + SHIFT + TAB if event.state & gtk.gdk.CONTROL_MASK: # CTRL + SHIFT + TAB

View file

@ -134,7 +134,7 @@ class StatusTable:
self.table.attach(self.text_lable, 1, 4, 1, 2) self.table.attach(self.text_lable, 1, 4, 1, 2)
def get_status_info(self, resource, priority, show, status): def get_status_info(self, resource, priority, show, status):
str_status = resource + ' (' + str(priority) + ')' str_status = resource + ' (' + unicode(priority) + ')'
if status: if status:
status = status.strip() status = status.strip()
if status != '': if status != '':
@ -359,7 +359,7 @@ class RosterTooltip(BaseTooltip, StatusTable):
if contact.resource: if contact.resource:
info += '\n<span weight="bold">' + _('Resource: ') + \ info += '\n<span weight="bold">' + _('Resource: ') + \
'</span>' + gtkgui_helpers.escape_for_pango_markup( '</span>' + gtkgui_helpers.escape_for_pango_markup(
contact.resource) + ' (' + str(contact.priority) + ')' contact.resource) + ' (' + unicode(contact.priority) + ')'
if contact.show: if contact.show:
info += '\n<span weight="bold">' + _('Status: ') + \ info += '\n<span weight="bold">' + _('Status: ') + \
'</span>' + helpers.get_uf_show(contact.show) '</span>' + helpers.get_uf_show(contact.show)
@ -402,7 +402,7 @@ class FileTransfersTooltip(BaseTooltip):
text += _('Upload') text += _('Upload')
if file_props['type'] == 'r': if file_props['type'] == 'r':
text += '\n<b>' + _('Sender: ') + '</b>' text += '\n<b>' + _('Sender: ') + '</b>'
sender = str(file_props['sender']).split('/')[0] sender = unicode(file_props['sender']).split('/')[0]
name = gajim.get_first_contact_instance_from_jid( name = gajim.get_first_contact_instance_from_jid(
file_props['tt_account'], sender).name file_props['tt_account'], sender).name
else: else:

View file

@ -84,7 +84,7 @@ class VcardWindow:
return return
#update contact.name if it's not '' #update contact.name if it's not ''
name_entry = self.xml.get_widget('nickname_entry') name_entry = self.xml.get_widget('nickname_entry')
new_name = name_entry.get_text() new_name = name_entry.get_text().decode('utf-8')
if new_name != self.contact.name and new_name != '': if new_name != self.contact.name and new_name != '':
self.contact.name = new_name self.contact.name = new_name
for i in self.plugin.roster.get_contact_iter(self.contact.jid, self.account): for i in self.plugin.roster.get_contact_iter(self.contact.jid, self.account):
@ -268,10 +268,10 @@ class VcardWindow:
'no_log_for').split(' '): 'no_log_for').split(' '):
log = 0 log = 0
self.xml.get_widget('log_checkbutton').set_active(log) self.xml.get_widget('log_checkbutton').set_active(log)
resources = '%s (%s)' % (self.contact.resource, str( resources = '%s (%s)' % (self.contact.resource, unicode(
self.contact.priority)) self.contact.priority))
uf_resources = self.contact.resource + _(' resource with priority ')\ uf_resources = self.contact.resource + _(' resource with priority ')\
+ str(self.contact.priority) + unicode(self.contact.priority)
if not self.contact.status: if not self.contact.status:
self.contact.status = '' self.contact.status = ''
@ -287,9 +287,10 @@ class VcardWindow:
if gajim.contacts[self.account].has_key(self.contact.jid): if gajim.contacts[self.account].has_key(self.contact.jid):
for c in gajim.contacts[self.account][self.contact.jid]: for c in gajim.contacts[self.account][self.contact.jid]:
if c.resource != self.contact.resource: if c.resource != self.contact.resource:
resources += '\n%s (%s)' % (c.resource, str(c.priority)) resources += '\n%s (%s)' % (c.resource,
unicode(c.priority))
uf_resources += '\n' + c.resource + _(' resource with priority ')\ uf_resources += '\n' + c.resource + _(' resource with priority ')\
+ str(c.priority) + unicode(c.priority)
if not c.status: if not c.status:
c.status = '' c.status = ''
stats += '\n' + c.show + ': ' + c.status stats += '\n' + c.show + ': ' + c.status
@ -352,7 +353,7 @@ class VcardWindow:
'ADR_WORK_REGION', 'ADR_WORK_PCODE', 'ADR_WORK_CTRY'] 'ADR_WORK_REGION', 'ADR_WORK_PCODE', 'ADR_WORK_CTRY']
vcard = {} vcard = {}
for e in entries: for e in entries:
txt = self.xml.get_widget(e + '_entry').get_text() txt = self.xml.get_widget(e + '_entry').get_text().decode('utf-8')
if txt != '': if txt != '':
vcard = self.add_to_vcard(vcard, e, txt) vcard = self.add_to_vcard(vcard, e, txt)
@ -362,7 +363,7 @@ class VcardWindow:
end_iter = buff.get_end_iter() end_iter = buff.get_end_iter()
txt = buff.get_text(start_iter, end_iter, 0) txt = buff.get_text(start_iter, end_iter, 0)
if txt != '': if txt != '':
vcard['DESC'] = txt vcard['DESC'] = txt.decode('utf-8')
# Avatar # Avatar
if self.avatar_encoded: if self.avatar_encoded: