[thorstenp] fix redefined builtins

This commit is contained in:
Yann Leboulanger 2008-12-03 17:16:04 +00:00
parent d4f032ecd3
commit 31dc32eeb9
43 changed files with 1185 additions and 1201 deletions

View file

@ -162,10 +162,10 @@ class AdvancedConfigurationWindow(object):
return path return path
def on_advanced_treeview_selection_changed(self, treeselection): def on_advanced_treeview_selection_changed(self, treeselection):
model, iter = treeselection.get_selected() model, iter_ = treeselection.get_selected()
# Check for GtkTreeIter # Check for GtkTreeIter
if iter: if iter_:
opt_path = self.get_option_path(model, iter) opt_path = self.get_option_path(model, iter_)
# Get text from first column in this row # Get text from first column in this row
desc = None desc = None
if len(opt_path) == 3: if len(opt_path) == 3:

View file

@ -60,13 +60,13 @@ class CellRendererImage(gtk.GenericCellRenderer):
if image.get_storage_type() != gtk.IMAGE_ANIMATION: if image.get_storage_type() != gtk.IMAGE_ANIMATION:
return return
self.redraw = 0 self.redraw = 0
iter = self.iters[image] iter_ = self.iters[image]
iter.advance() iter_.advance()
model = tree.get_model() model = tree.get_model()
if model: if model:
model.foreach(self.func, (image, tree)) model.foreach(self.func, (image, tree))
if self.redraw: if self.redraw:
gobject.timeout_add(iter.get_delay_time(), gobject.timeout_add(iter_.get_delay_time(),
self.animation_timeout, tree, image) self.animation_timeout, tree, image)
elif image in self.iters: elif image in self.iters:
del self.iters[image] del self.iters[image]
@ -92,9 +92,9 @@ class CellRendererImage(gtk.GenericCellRenderer):
if not isinstance(widget, gtk.TreeView): if not isinstance(widget, gtk.TreeView):
return return
animation = self.image.get_animation() animation = self.image.get_animation()
iter = animation.get_iter() iter_ = animation.get_iter()
self.iters[self.image] = iter self.iters[self.image] = iter_
gobject.timeout_add(iter.get_delay_time(), gobject.timeout_add(iter_.get_delay_time(),
self.animation_timeout, widget, self.image) self.animation_timeout, widget, self.image)
pix = self.iters[self.image].get_pixbuf() pix = self.iters[self.image].get_pixbuf()

View file

@ -153,20 +153,20 @@ class ChatControlBase(MessageControl):
contact, acct, resource = resource) contact, acct, resource = resource)
widget = self.xml.get_widget('history_button') widget = self.xml.get_widget('history_button')
id = widget.connect('clicked', self._on_history_menuitem_activate) id_ = widget.connect('clicked', self._on_history_menuitem_activate)
self.handlers[id] = widget self.handlers[id_] = widget
# when/if we do XHTML we will put formatting buttons back # when/if we do XHTML we will put formatting buttons back
widget = self.xml.get_widget('emoticons_button') widget = self.xml.get_widget('emoticons_button')
id = widget.connect('clicked', self.on_emoticons_button_clicked) id_ = widget.connect('clicked', self.on_emoticons_button_clicked)
self.handlers[id] = widget self.handlers[id_] = widget
# Create banner and connect signals # Create banner and connect signals
widget = self.xml.get_widget('banner_eventbox') widget = self.xml.get_widget('banner_eventbox')
widget.set_property('height-request', gajim.config.get('chat_avatar_height')) widget.set_property('height-request', gajim.config.get('chat_avatar_height'))
id = widget.connect('button-press-event', id_ = widget.connect('button-press-event',
self._on_banner_eventbox_button_press_event) self._on_banner_eventbox_button_press_event)
self.handlers[id] = widget self.handlers[id_] = widget
self.urlfinder = re.compile(r"(www\.(?!\.)|[a-z][a-z0-9+.-]*://)[^\s<>'\"]+[^!,\.\s<>\)'\"\]]") self.urlfinder = re.compile(r"(www\.(?!\.)|[a-z][a-z0-9+.-]*://)[^\s<>'\"]+[^!,\.\s<>\)'\"\]]")
@ -187,9 +187,9 @@ class ChatControlBase(MessageControl):
self.TARGET_TYPE_URI_LIST = 80 self.TARGET_TYPE_URI_LIST = 80
self.dnd_list = [ ( 'text/uri-list', 0, self.TARGET_TYPE_URI_LIST ), self.dnd_list = [ ( 'text/uri-list', 0, self.TARGET_TYPE_URI_LIST ),
('MY_TREE_MODEL_ROW', gtk.TARGET_SAME_APP, 0)] ('MY_TREE_MODEL_ROW', gtk.TARGET_SAME_APP, 0)]
id = self.widget.connect('drag_data_received', id_ = self.widget.connect('drag_data_received',
self._on_drag_data_received) self._on_drag_data_received)
self.handlers[id] = self.widget self.handlers[id_] = self.widget
self.widget.drag_dest_set(gtk.DEST_DEFAULT_MOTION | self.widget.drag_dest_set(gtk.DEST_DEFAULT_MOTION |
gtk.DEST_DEFAULT_HIGHLIGHT | gtk.DEST_DEFAULT_HIGHLIGHT |
gtk.DEST_DEFAULT_DROP, gtk.DEST_DEFAULT_DROP,
@ -197,18 +197,18 @@ class ChatControlBase(MessageControl):
# Create textviews and connect signals # Create textviews and connect signals
self.conv_textview = ConversationTextview(self.account) self.conv_textview = ConversationTextview(self.account)
id = self.conv_textview.tv.connect('key_press_event', id_ = self.conv_textview.tv.connect('key_press_event',
self._conv_textview_key_press_event) self._conv_textview_key_press_event)
self.handlers[id] = self.conv_textview.tv self.handlers[id_] = self.conv_textview.tv
# FIXME: DND on non editable TextView, find a better way # FIXME: DND on non editable TextView, find a better way
self.drag_entered = False self.drag_entered = False
id = self.conv_textview.tv.connect('drag_data_received', id_ = self.conv_textview.tv.connect('drag_data_received',
self._on_drag_data_received) self._on_drag_data_received)
self.handlers[id] = self.conv_textview.tv self.handlers[id_] = self.conv_textview.tv
id = self.conv_textview.tv.connect('drag_motion', self._on_drag_motion) id_ = self.conv_textview.tv.connect('drag_motion', self._on_drag_motion)
self.handlers[id] = self.conv_textview.tv self.handlers[id_] = self.conv_textview.tv
id = self.conv_textview.tv.connect('drag_leave', self._on_drag_leave) id_ = self.conv_textview.tv.connect('drag_leave', self._on_drag_leave)
self.handlers[id] = self.conv_textview.tv self.handlers[id_] = self.conv_textview.tv
self.conv_textview.tv.drag_dest_set(gtk.DEST_DEFAULT_MOTION | self.conv_textview.tv.drag_dest_set(gtk.DEST_DEFAULT_MOTION |
gtk.DEST_DEFAULT_HIGHLIGHT | gtk.DEST_DEFAULT_HIGHLIGHT |
gtk.DEST_DEFAULT_DROP, gtk.DEST_DEFAULT_DROP,
@ -218,34 +218,34 @@ class ChatControlBase(MessageControl):
'conversation_scrolledwindow') 'conversation_scrolledwindow')
self.conv_scrolledwindow.add(self.conv_textview.tv) self.conv_scrolledwindow.add(self.conv_textview.tv)
widget = self.conv_scrolledwindow.get_vadjustment() widget = self.conv_scrolledwindow.get_vadjustment()
id = widget.connect('value-changed', id_ = widget.connect('value-changed',
self.on_conversation_vadjustment_value_changed) self.on_conversation_vadjustment_value_changed)
self.handlers[id] = widget self.handlers[id_] = widget
id = widget.connect('changed', id_ = widget.connect('changed',
self.on_conversation_vadjustment_changed) self.on_conversation_vadjustment_changed)
self.handlers[id] = widget self.handlers[id_] = widget
self.scroll_to_end_id = None self.scroll_to_end_id = None
self.was_at_the_end = True self.was_at_the_end = True
# add MessageTextView to UI and connect signals # add MessageTextView to UI and connect signals
self.msg_scrolledwindow = self.xml.get_widget('message_scrolledwindow') self.msg_scrolledwindow = self.xml.get_widget('message_scrolledwindow')
self.msg_textview = MessageTextView() self.msg_textview = MessageTextView()
id = self.msg_textview.connect('mykeypress', id_ = self.msg_textview.connect('mykeypress',
self._on_message_textview_mykeypress_event) self._on_message_textview_mykeypress_event)
self.handlers[id] = self.msg_textview self.handlers[id_] = self.msg_textview
self.msg_scrolledwindow.add(self.msg_textview) self.msg_scrolledwindow.add(self.msg_textview)
id = self.msg_textview.connect('key_press_event', id_ = self.msg_textview.connect('key_press_event',
self._on_message_textview_key_press_event) self._on_message_textview_key_press_event)
self.handlers[id] = self.msg_textview self.handlers[id_] = self.msg_textview
id = self.msg_textview.connect('size-request', self.size_request) id_ = self.msg_textview.connect('size-request', self.size_request)
self.handlers[id] = self.msg_textview self.handlers[id_] = self.msg_textview
id = self.msg_textview.connect('populate_popup', id_ = self.msg_textview.connect('populate_popup',
self.on_msg_textview_populate_popup) self.on_msg_textview_populate_popup)
self.handlers[id] = self.msg_textview self.handlers[id_] = self.msg_textview
# Setup DND # Setup DND
id = self.msg_textview.connect('drag_data_received', id_ = self.msg_textview.connect('drag_data_received',
self._on_drag_data_received) self._on_drag_data_received)
self.handlers[id] = self.msg_textview self.handlers[id_] = self.msg_textview
self.msg_textview.drag_dest_set(gtk.DEST_DEFAULT_MOTION | self.msg_textview.drag_dest_set(gtk.DEST_DEFAULT_MOTION |
gtk.DEST_DEFAULT_HIGHLIGHT, gtk.DEST_DEFAULT_HIGHLIGHT,
self.dnd_list, gtk.gdk.ACTION_COPY) self.dnd_list, gtk.gdk.ACTION_COPY)
@ -254,12 +254,12 @@ class ChatControlBase(MessageControl):
# Hook up send button # Hook up send button
widget = self.xml.get_widget('send_button') widget = self.xml.get_widget('send_button')
id = widget.connect('clicked', self._on_send_button_clicked) id_ = widget.connect('clicked', self._on_send_button_clicked)
self.handlers[id] = widget self.handlers[id_] = widget
widget = self.xml.get_widget('formattings_button') widget = self.xml.get_widget('formattings_button')
id = widget.connect('clicked', self.on_formattings_button_clicked) id_ = widget.connect('clicked', self.on_formattings_button_clicked)
self.handlers[id] = widget self.handlers[id_] = widget
# the following vars are used to keep history of user's messages # the following vars are used to keep history of user's messages
self.sent_history = [] self.sent_history = []
@ -328,8 +328,8 @@ class ChatControlBase(MessageControl):
item = gtk.ImageMenuItem(gtk.STOCK_CLEAR) item = gtk.ImageMenuItem(gtk.STOCK_CLEAR)
menu.prepend(item) menu.prepend(item)
id = item.connect('activate', self.msg_textview.clear) id_ = item.connect('activate', self.msg_textview.clear)
self.handlers[id] = item self.handlers[id_] = item
if gajim.config.get('use_speller') and HAS_GTK_SPELL: if gajim.config.get('use_speller') and HAS_GTK_SPELL:
item = gtk.MenuItem(_('Spelling language')) item = gtk.MenuItem(_('Spelling language'))
@ -341,8 +341,8 @@ class ChatControlBase(MessageControl):
if langs[lang] == self.msg_textview.lang: if langs[lang] == self.msg_textview.lang:
item.set_active(True) item.set_active(True)
submenu.append(item) submenu.append(item)
id = item.connect('activate', _on_select_dictionary, langs[lang]) id_ = item.connect('activate', _on_select_dictionary, langs[lang])
self.handlers[id] = item self.handlers[id_] = item
menu.show_all() menu.show_all()
@ -401,18 +401,18 @@ class ChatControlBase(MessageControl):
def disconnect_style_event(self, widget): def disconnect_style_event(self, widget):
# Try to find the event_id # Try to find the event_id
found = False found = False
for id in self.handlers: for id_ in self.handlers:
if self.handlers[id] == widget: if self.handlers[id_] == widget:
found = True found = True
break break
if found: if found:
widget.disconnect(id) widget.disconnect(id_)
del self.handlers[id] del self.handlers[id_]
def connect_style_event(self, widget, set_fg = False, set_bg = False): def connect_style_event(self, widget, set_fg = False, set_bg = False):
self.disconnect_style_event(widget) self.disconnect_style_event(widget)
id = widget.connect('style-set', self._on_style_set_event, set_fg, set_bg) id_ = widget.connect('style-set', self._on_style_set_event, set_fg, set_bg)
self.handlers[id] = widget self.handlers[id_] = widget
def _on_style_set_event(self, widget, style, *opts): def _on_style_set_event(self, widget, style, *opts):
'''set style of widget from style class *.Frame.Eventbox '''set style of widget from style class *.Frame.Eventbox
@ -731,11 +731,11 @@ class ChatControlBase(MessageControl):
emoticons_button.set_no_show_all(True) emoticons_button.set_no_show_all(True)
def append_emoticon(self, str_): def append_emoticon(self, str_):
buffer = self.msg_textview.get_buffer() buffer_ = self.msg_textview.get_buffer()
if buffer.get_char_count(): if buffer_.get_char_count():
buffer.insert_at_cursor(' %s ' % str_) buffer_.insert_at_cursor(' %s ' % str_)
else: # we are the beginning of buffer else: # we are the beginning of buffer
buffer.insert_at_cursor('%s ' % str_) buffer_.insert_at_cursor('%s ' % str_)
self.msg_textview.grab_focus() self.msg_textview.grab_focus()
def on_emoticons_button_clicked(self, widget): def on_emoticons_button_clicked(self, widget):
@ -821,9 +821,9 @@ class ChatControlBase(MessageControl):
self.conv_textview.update_tags() self.conv_textview.update_tags()
def clear(self, tv): def clear(self, tv):
buffer = tv.get_buffer() buffer_ = tv.get_buffer()
start, end = buffer.get_bounds() start, end = buffer_.get_bounds()
buffer.delete(start, end) buffer_.delete(start, end)
def _on_history_menuitem_activate(self, widget = None, jid = None): def _on_history_menuitem_activate(self, widget = None, jid = None):
'''When history menuitem is pressed: call history window''' '''When history menuitem is pressed: call history window'''
@ -872,8 +872,8 @@ class ChatControlBase(MessageControl):
if self.scroll_to_end_id: if self.scroll_to_end_id:
# a scroll is already planned # a scroll is already planned
return return
buffer = textview.get_buffer() buffer_ = textview.get_buffer()
end_iter = buffer.get_end_iter() end_iter = buffer_.get_end_iter()
end_rect = textview.get_iter_location(end_iter) end_rect = textview.get_iter_location(end_iter)
visible_rect = textview.get_visible_rect() visible_rect = textview.get_visible_rect()
# scroll only if expected end is not visible # scroll only if expected end is not visible
@ -882,8 +882,8 @@ class ChatControlBase(MessageControl):
textview) textview)
def scroll_to_end_iter(self, textview): def scroll_to_end_iter(self, textview):
buffer = textview.get_buffer() buffer_ = textview.get_buffer()
end_iter = buffer.get_end_iter() end_iter = buffer_.get_end_iter()
textview.scroll_to_iter(end_iter, 0, False, 1, 1) textview.scroll_to_iter(end_iter, 0, False, 1, 1)
self.scroll_to_end_id = None self.scroll_to_end_id = None
return False return False
@ -1081,16 +1081,17 @@ class ChatControl(ChatControlBase):
# for muc use: # for muc use:
# widget = self.xml.get_widget('muc_window_actions_button') # widget = self.xml.get_widget('muc_window_actions_button')
self.actions_button = self.xml.get_widget('message_window_actions_button') self.actions_button = self.xml.get_widget('message_window_actions_button')
id = self.actions_button.connect('clicked', self.on_actions_button_clicked) id_ = self.actions_button.connect('clicked',
self.handlers[id] = self.actions_button self.on_actions_button_clicked)
self.handlers[id_] = self.actions_button
self._formattings_button = self.xml.get_widget('formattings_button') self._formattings_button = self.xml.get_widget('formattings_button')
self._add_to_roster_button = self.xml.get_widget( self._add_to_roster_button = self.xml.get_widget(
'add_to_roster_button') 'add_to_roster_button')
id = self._add_to_roster_button.connect('clicked', id_ = self._add_to_roster_button.connect('clicked',
self._on_add_to_roster_menuitem_activate) self._on_add_to_roster_menuitem_activate)
self.handlers[id] = self._add_to_roster_button self.handlers[id_] = self._add_to_roster_button
self._send_file_button = self.xml.get_widget('send_file_button') self._send_file_button = self.xml.get_widget('send_file_button')
# add a special img for send file button # add a special img for send file button
@ -1098,21 +1099,21 @@ class ChatControl(ChatControlBase):
img = gtk.Image() img = gtk.Image()
img.set_from_file(path_to_upload_img) img.set_from_file(path_to_upload_img)
self._send_file_button.set_image(img) self._send_file_button.set_image(img)
id = self._send_file_button.connect('clicked', id_ = self._send_file_button.connect('clicked',
self._on_send_file_menuitem_activate) self._on_send_file_menuitem_activate)
self.handlers[id] = self._send_file_button self.handlers[id_] = self._send_file_button
self._convert_to_gc_button = self.xml.get_widget( self._convert_to_gc_button = self.xml.get_widget(
'convert_to_gc_button') 'convert_to_gc_button')
id = self._convert_to_gc_button.connect('clicked', id_ = self._convert_to_gc_button.connect('clicked',
self._on_convert_to_gc_menuitem_activate) self._on_convert_to_gc_menuitem_activate)
self.handlers[id] = self._convert_to_gc_button self.handlers[id_] = self._convert_to_gc_button
contact_information_button = self.xml.get_widget( contact_information_button = self.xml.get_widget(
'contact_information_button') 'contact_information_button')
id = contact_information_button.connect('clicked', id_ = contact_information_button.connect('clicked',
self._on_contact_information_menuitem_activate) self._on_contact_information_menuitem_activate)
self.handlers[id] = contact_information_button self.handlers[id_] = contact_information_button
compact_view = gajim.config.get('compact_view') compact_view = gajim.config.get('compact_view')
self.chat_buttons_set_visible(compact_view) self.chat_buttons_set_visible(compact_view)
@ -1121,9 +1122,9 @@ class ChatControl(ChatControlBase):
self.authentication_button = self.xml.get_widget( self.authentication_button = self.xml.get_widget(
'authentication_button') 'authentication_button')
id = self.authentication_button.connect('clicked', id_ = self.authentication_button.connect('clicked',
self._on_authentication_button_clicked) self._on_authentication_button_clicked)
self.handlers[id] = self.authentication_button self.handlers[id_] = self.authentication_button
# Add lock image to show chat encryption # Add lock image to show chat encryption
self.lock_image = self.xml.get_widget('lock_image') self.lock_image = self.xml.get_widget('lock_image')
@ -1161,26 +1162,26 @@ class ChatControl(ChatControlBase):
self._schedule_activity_timers() self._schedule_activity_timers()
# Hook up signals # Hook up signals
id = self.parent_win.window.connect('motion-notify-event', id_ = self.parent_win.window.connect('motion-notify-event',
self._on_window_motion_notify) self._on_window_motion_notify)
self.handlers[id] = self.parent_win.window self.handlers[id_] = self.parent_win.window
message_tv_buffer = self.msg_textview.get_buffer() message_tv_buffer = self.msg_textview.get_buffer()
id = message_tv_buffer.connect('changed', id_ = message_tv_buffer.connect('changed',
self._on_message_tv_buffer_changed) self._on_message_tv_buffer_changed)
self.handlers[id] = message_tv_buffer self.handlers[id_] = message_tv_buffer
widget = self.xml.get_widget('avatar_eventbox') widget = self.xml.get_widget('avatar_eventbox')
id = widget.connect('enter-notify-event', id_ = widget.connect('enter-notify-event',
self.on_avatar_eventbox_enter_notify_event) self.on_avatar_eventbox_enter_notify_event)
self.handlers[id] = widget self.handlers[id_] = widget
id = widget.connect('leave-notify-event', id_ = widget.connect('leave-notify-event',
self.on_avatar_eventbox_leave_notify_event) self.on_avatar_eventbox_leave_notify_event)
self.handlers[id] = widget self.handlers[id_] = widget
id = widget.connect('button-press-event', id_ = widget.connect('button-press-event',
self.on_avatar_eventbox_button_press_event) self.on_avatar_eventbox_button_press_event)
self.handlers[id] = widget self.handlers[id_] = widget
if not session: if not session:
session = gajim.connections[self.account]. \ session = gajim.connections[self.account]. \
@ -1429,11 +1430,11 @@ class ChatControl(ChatControlBase):
if event.button == 3: # right click if event.button == 3: # right click
menu = gtk.Menu() menu = gtk.Menu()
menuitem = gtk.ImageMenuItem(gtk.STOCK_SAVE_AS) menuitem = gtk.ImageMenuItem(gtk.STOCK_SAVE_AS)
id = menuitem.connect('activate', id_ = menuitem.connect('activate',
gtkgui_helpers.on_avatar_save_as_menuitem_activate, gtkgui_helpers.on_avatar_save_as_menuitem_activate,
self.contact.jid, self.account, self.contact.get_shown_name() + \ self.contact.jid, self.account, self.contact.get_shown_name() + \
'.jpeg') '.jpeg')
self.handlers[id] = menuitem self.handlers[id_] = menuitem
menu.append(menuitem) menu.append(menuitem)
menu.show_all() menu.show_all()
menu.connect('selection-done', lambda w:w.destroy()) menu.connect('selection-done', lambda w:w.destroy())
@ -1797,17 +1798,17 @@ class ChatControl(ChatControlBase):
gobject.source_remove(self.possible_inactive_timeout_id) gobject.source_remove(self.possible_inactive_timeout_id)
self._schedule_activity_timers() self._schedule_activity_timers()
id = ChatControlBase.send_message(self, message, keyID, id_ = ChatControlBase.send_message(self, message, keyID,
type_ = 'chat', chatstate = chatstate_to_send, type_ = 'chat', chatstate = chatstate_to_send,
composing_xep = composing_xep, composing_xep = composing_xep,
process_command = process_command, xhtml = xhtml) process_command = process_command, xhtml = xhtml)
if id: if id_:
# XXX: Once we have fallback to disco, remove notexistant check # XXX: Once we have fallback to disco, remove notexistant check
if gajim.capscache.is_supported(contact, NS_RECEIPTS) \ if gajim.capscache.is_supported(contact, NS_RECEIPTS) \
and not gajim.capscache.is_supported(contact, and not gajim.capscache.is_supported(contact,
'notexistant') and gajim.config.get_per('accounts', 'notexistant') and gajim.config.get_per('accounts',
self.account, 'request_receipt'): self.account, 'request_receipt'):
xep0184_id = id xep0184_id = id_
else: else:
xep0184_id = None xep0184_id = None
@ -2124,27 +2125,27 @@ class ChatControl(ChatControlBase):
convert_to_gc_menuitem.set_sensitive(False) convert_to_gc_menuitem.set_sensitive(False)
# connect signals # connect signals
id = history_menuitem.connect('activate', id_ = history_menuitem.connect('activate',
self._on_history_menuitem_activate) self._on_history_menuitem_activate)
self.handlers[id] = history_menuitem self.handlers[id_] = history_menuitem
id = send_file_menuitem.connect('activate', id_ = send_file_menuitem.connect('activate',
self._on_send_file_menuitem_activate) self._on_send_file_menuitem_activate)
self.handlers[id] = send_file_menuitem self.handlers[id_] = send_file_menuitem
id = add_to_roster_menuitem.connect('activate', id_ = add_to_roster_menuitem.connect('activate',
self._on_add_to_roster_menuitem_activate) self._on_add_to_roster_menuitem_activate)
self.handlers[id] = add_to_roster_menuitem self.handlers[id_] = add_to_roster_menuitem
id = toggle_gpg_menuitem.connect('activate', id_ = toggle_gpg_menuitem.connect('activate',
self._on_toggle_gpg_menuitem_activate) self._on_toggle_gpg_menuitem_activate)
self.handlers[id] = toggle_gpg_menuitem self.handlers[id_] = toggle_gpg_menuitem
id = toggle_e2e_menuitem.connect('activate', id_ = toggle_e2e_menuitem.connect('activate',
self._on_toggle_e2e_menuitem_activate) self._on_toggle_e2e_menuitem_activate)
self.handlers[id] = toggle_e2e_menuitem self.handlers[id_] = toggle_e2e_menuitem
id = information_menuitem.connect('activate', id_ = information_menuitem.connect('activate',
self._on_contact_information_menuitem_activate) self._on_contact_information_menuitem_activate)
self.handlers[id] = information_menuitem self.handlers[id_] = information_menuitem
id = convert_to_gc_menuitem.connect('activate', id_ = convert_to_gc_menuitem.connect('activate',
self._on_convert_to_gc_menuitem_activate) self._on_convert_to_gc_menuitem_activate)
self.handlers[id] = convert_to_gc_menuitem self.handlers[id_] = convert_to_gc_menuitem
menu.connect('selection-done', self.destroy_menu, menu.connect('selection-done', self.destroy_menu,
send_file_menuitem, convert_to_gc_menuitem, send_file_menuitem, convert_to_gc_menuitem,
@ -2383,9 +2384,9 @@ class ChatControl(ChatControlBase):
model = treeview.get_model() model = treeview.get_model()
data = selection.data data = selection.data
path = treeview.get_selection().get_selected_rows()[1][0] path = treeview.get_selection().get_selected_rows()[1][0]
iter = model.get_iter(path) iter_ = model.get_iter(path)
type = model[iter][2] type_ = model[iter_][2]
if type != 'contact': # source is not a contact if type_ != 'contact': # source is not a contact
return return
dropped_jid = data.decode('utf-8') dropped_jid = data.decode('utf-8')

View file

@ -103,6 +103,7 @@ class CapsCache(object):
def _get_features(ciself): def _get_features(ciself):
return ciself._features return ciself._features
def _set_features(ciself, value): def _set_features(ciself, value):
ciself._features = [] ciself._features = []
for feature in value: for feature in value:
@ -128,7 +129,8 @@ class CapsCache(object):
ciself._identities = [] ciself._identities = []
for identity in value: for identity in value:
# dict are not hashable, so transform it into a tuple # dict are not hashable, so transform it into a tuple
t = (identity['category'], identity.get('type'), identity.get('xml:lang'), identity.get('name')) t = (identity['category'], identity.get('type'),
identity.get('xml:lang'), identity.get('name'))
ciself._identities.append(ciself.__names.setdefault(t, t)) ciself._identities.append(ciself.__names.setdefault(t, t))
identities = property(_get_identities, _set_identities) identities = property(_get_identities, _set_identities)
@ -155,9 +157,9 @@ class CapsCache(object):
def load_from_db(self): def load_from_db(self):
# get data from logger... # get data from logger...
if self.logger is not None: if self.logger is not None:
for hash_method, hash, identities, features in \ for hash_method, hash_, identities, features in \
self.logger.iter_caps_data(): self.logger.iter_caps_data():
x = self[(hash_method, hash)] x = self[(hash_method, hash_)]
x.identities = identities x.identities = identities
x.features = features x.features = features
x.queried = 2 x.queried = 2
@ -166,10 +168,10 @@ class CapsCache(object):
if caps in self.__cache: if caps in self.__cache:
return self.__cache[caps] return self.__cache[caps]
hash_method, hash = caps hash_method, hash_ = caps
x = self.__CacheItem(hash_method, hash) x = self.__CacheItem(hash_method, hash_)
self.__cache[(hash_method, hash)] = x self.__cache[(hash_method, hash_)] = x
return x return x
def preload(self, con, jid, node, hash_method, hash_): def preload(self, con, jid, node, hash_method, hash_):
@ -247,13 +249,13 @@ class ConnectionCaps(object):
contact.caps_hash_method = None contact.caps_hash_method = None
return return
hash_method, node, hash = caps['hash'], caps['node'], caps['ver'] hash_method, node, hash_ = caps['hash'], caps['node'], caps['ver']
if hash_method is None and node and hash: if hash_method is None and node and hash_:
# Old XEP-115 implentation # Old XEP-115 implentation
hash_method = 'old' hash_method = 'old'
if hash_method is None or node is None or hash is None: if hash_method is None or node is None or hash_ is None:
# improper caps in stanza, ignoring # improper caps in stanza, ignoring
contact.caps_node = None contact.caps_node = None
contact.caps_hash = None contact.caps_hash = None
@ -261,12 +263,12 @@ class ConnectionCaps(object):
return return
# start disco query... # start disco query...
gajim.capscache.preload(self, jid, node, hash_method, hash) gajim.capscache.preload(self, jid, node, hash_method, hash_)
# overwriting old data # overwriting old data
contact.caps_node = node contact.caps_node = node
contact.caps_hash_method = hash_method contact.caps_hash_method = hash_method
contact.caps_hash = hash contact.caps_hash = hash_
if pm_ctrl: if pm_ctrl:
pm_ctrl.update_contact() pm_ctrl.update_contact()

View file

@ -475,11 +475,11 @@ class Config:
cb(data, opt, None, self.__options[opt]) cb(data, opt, None, self.__options[opt])
for opt in self.__options_per_key: for opt in self.__options_per_key:
cb(data, opt, None, None) cb(data, opt, None, None)
dict = self.__options_per_key[opt][1] dict_ = self.__options_per_key[opt][1]
for opt2 in dict.keys(): for opt2 in dict_.keys():
cb(data, opt2, [opt], None) cb(data, opt2, [opt], None)
for opt3 in dict[opt2]: for opt3 in dict_[opt2]:
cb(data, opt3, [opt, opt2], dict[opt2][opt3]) cb(data, opt3, [opt, opt2], dict_[opt2][opt3])
def get_children(self, node=None): def get_children(self, node=None):
''' Tree-like interface ''' ''' Tree-like interface '''
@ -599,11 +599,11 @@ class Config:
return return
if not key: if not key:
return return
dict = self.__options_per_key[optname][1] dict_ = self.__options_per_key[optname][1]
if key not in dict: if key not in dict_:
# raise RuntimeError, '%s is not a key of %s' % (key, dict) # raise RuntimeError, '%s is not a key of %s' % (key, dict_)
self.add_per(optname, key) self.add_per(optname, key)
obj = dict[key] obj = dict_[key]
if subname not in obj: if subname not in obj:
# raise RuntimeError, '%s is not a key of %s' % (subname, obj) # raise RuntimeError, '%s is not a key of %s' % (subname, obj)
return return
@ -617,16 +617,16 @@ class Config:
def get_per(self, optname, key = None, subname = None): # per_group_of_option def get_per(self, optname, key = None, subname = None): # per_group_of_option
if optname not in self.__options_per_key: if optname not in self.__options_per_key:
return None return None
dict = self.__options_per_key[optname][1] dict_ = self.__options_per_key[optname][1]
if not key: if not key:
return dict.keys() return dict_.keys()
if key not in dict: if key not in dict_:
if optname in self.__options_per_key \ if optname in self.__options_per_key \
and subname in self.__options_per_key[optname][0]: and subname in self.__options_per_key[optname][0]:
return self.__options_per_key \ return self.__options_per_key \
[optname][0][subname][1] [optname][0][subname][1]
return None return None
obj = dict[key] obj = dict_[key]
if not subname: if not subname:
return obj return obj
if subname not in obj: if subname not in obj:
@ -636,12 +636,12 @@ class Config:
def get_desc_per(self, optname, key = None, subname = None): def get_desc_per(self, optname, key = None, subname = None):
if optname not in self.__options_per_key: if optname not in self.__options_per_key:
return None return None
dict = self.__options_per_key[optname][1] dict_ = self.__options_per_key[optname][1]
if not key: if not key:
return None return None
if key not in dict: if key not in dict_:
return None return None
obj = dict[key] obj = dict_[key]
if not subname: if not subname:
return None return None
if subname not in obj: if subname not in obj:
@ -653,12 +653,12 @@ class Config:
def get_restart_per(self, optname, key = None, subname = None): def get_restart_per(self, optname, key = None, subname = None):
if optname not in self.__options_per_key: if optname not in self.__options_per_key:
return False return False
dict = self.__options_per_key[optname][1] dict_ = self.__options_per_key[optname][1]
if not key: if not key:
return False return False
if key not in dict: if key not in dict_:
return False return False
obj = dict[key] obj = dict_[key]
if not subname: if not subname:
return False return False
if subname not in obj: if subname not in obj:

View file

@ -759,16 +759,16 @@ class Connection(ConnectionHandlers):
to server to detect connection failure at application level.''' to server to detect connection failure at application level.'''
if not self.connection: if not self.connection:
return return
id = self.connection.getAnID() id_ = self.connection.getAnID()
if pingTo: if pingTo:
to = pingTo.get_full_jid() to = pingTo.get_full_jid()
self.dispatch('PING_SENT', (pingTo)) self.dispatch('PING_SENT', (pingTo))
else: else:
to = gajim.config.get_per('accounts', self.name, 'hostname') to = gajim.config.get_per('accounts', self.name, 'hostname')
self.awaiting_xmpp_ping_id = id self.awaiting_xmpp_ping_id = id_
iq = common.xmpp.Iq('get', to=to) iq = common.xmpp.Iq('get', to=to)
iq.addChild(name = 'ping', namespace = common.xmpp.NS_PING) iq.addChild(name = 'ping', namespace = common.xmpp.NS_PING)
iq.setID(id) iq.setID(id_)
def _on_response(resp): def _on_response(resp):
timePong = time_time() timePong = time_time()
if not common.xmpp.isResultNode(resp): if not common.xmpp.isResultNode(resp):
@ -945,9 +945,9 @@ class Connection(ConnectionHandlers):
self.connection.set_send_timeout(self.keepalives, self.sendPing) self.connection.set_send_timeout(self.keepalives, self.sendPing)
self.connection.onreceive(None) self.connection.onreceive(None)
iq = common.xmpp.Iq('get', common.xmpp.NS_PRIVACY, xmlns = '') iq = common.xmpp.Iq('get', common.xmpp.NS_PRIVACY, xmlns = '')
id = self.connection.getAnID() id_ = self.connection.getAnID()
iq.setID(id) iq.setID(id_)
self.awaiting_answers[id] = (PRIVACY_ARRIVED, ) self.awaiting_answers[id_] = (PRIVACY_ARRIVED, )
self.connection.send(iq) self.connection.send(iq)
def send_custom_status(self, show, msg, jid): def send_custom_status(self, show, msg, jid):
@ -1299,9 +1299,9 @@ class Connection(ConnectionHandlers):
return return
iq = common.xmpp.Iq('set', common.xmpp.NS_REGISTER, to = agent) iq = common.xmpp.Iq('set', common.xmpp.NS_REGISTER, to = agent)
iq.getTag('query').setTag('remove') iq.getTag('query').setTag('remove')
id = self.connection.getAnID() id_ = self.connection.getAnID()
iq.setID(id) iq.setID(id_)
self.awaiting_answers[id] = (AGENT_REMOVED, agent) self.awaiting_answers[id_] = (AGENT_REMOVED, agent)
self.connection.send(iq) self.connection.send(iq)
self.connection.getRoster().delItem(agent) self.connection.getRoster().delItem(agent)
@ -1364,11 +1364,11 @@ class Connection(ConnectionHandlers):
to_whom_jid += '/' + resource to_whom_jid += '/' + resource
iq = common.xmpp.Iq(to = to_whom_jid, typ = 'get', queryNS =\ iq = common.xmpp.Iq(to = to_whom_jid, typ = 'get', queryNS =\
common.xmpp.NS_LAST) common.xmpp.NS_LAST)
id = self.connection.getAnID() id_ = self.connection.getAnID()
iq.setID(id) iq.setID(id_)
if groupchat_jid: if groupchat_jid:
self.groupchat_jids[id] = groupchat_jid self.groupchat_jids[id_] = groupchat_jid
self.last_ids.append(id) self.last_ids.append(id_)
self.connection.send(iq) self.connection.send(iq)
def request_os_info(self, jid, resource, groupchat_jid=None): def request_os_info(self, jid, resource, groupchat_jid=None):
@ -1385,11 +1385,11 @@ class Connection(ConnectionHandlers):
to_whom_jid += '/' + resource to_whom_jid += '/' + resource
iq = common.xmpp.Iq(to = to_whom_jid, typ = 'get', queryNS =\ iq = common.xmpp.Iq(to = to_whom_jid, typ = 'get', queryNS =\
common.xmpp.NS_VERSION) common.xmpp.NS_VERSION)
id = self.connection.getAnID() id_ = self.connection.getAnID()
iq.setID(id) iq.setID(id_)
if groupchat_jid: if groupchat_jid:
self.groupchat_jids[id] = groupchat_jid self.groupchat_jids[id_] = groupchat_jid
self.version_ids.append(id) self.version_ids.append(id_)
self.connection.send(iq) self.connection.send(iq)
def get_settings(self): def get_settings(self):
@ -1467,9 +1467,9 @@ class Connection(ConnectionHandlers):
iq = common.xmpp.Iq(typ='get') iq = common.xmpp.Iq(typ='get')
iq2 = iq.addChild(name='query', namespace=common.xmpp.NS_PRIVATE) iq2 = iq.addChild(name='query', namespace=common.xmpp.NS_PRIVATE)
iq2.addChild(name='storage', namespace='storage:metacontacts') iq2.addChild(name='storage', namespace='storage:metacontacts')
id = self.connection.getAnID() id_ = self.connection.getAnID()
iq.setID(id) iq.setID(id_)
self.awaiting_answers[id] = (METACONTACTS_ARRIVED, ) self.awaiting_answers[id_] = (METACONTACTS_ARRIVED, )
self.connection.send(iq) self.connection.send(iq)
def store_metacontacts(self, tags_list): def store_metacontacts(self, tags_list):

View file

@ -375,15 +375,15 @@ class ConnectionBytestream:
# register xmpppy handlers for bytestream and FT stanzas # register xmpppy handlers for bytestream and FT stanzas
def _bytestreamErrorCB(self, con, iq_obj): def _bytestreamErrorCB(self, con, iq_obj):
gajim.log.debug('_bytestreamErrorCB') gajim.log.debug('_bytestreamErrorCB')
id = unicode(iq_obj.getAttr('id')) id_ = unicode(iq_obj.getAttr('id'))
frm = helpers.get_full_jid_from_iq(iq_obj) frm = helpers.get_full_jid_from_iq(iq_obj)
query = iq_obj.getTag('query') query = iq_obj.getTag('query')
gajim.proxy65_manager.error_cb(frm, query) gajim.proxy65_manager.error_cb(frm, query)
jid = helpers.get_jid_from_iq(iq_obj) jid = helpers.get_jid_from_iq(iq_obj)
id = id[3:] id_ = id_[3:]
if id not in self.files_props: if id_ not in self.files_props:
return return
file_props = self.files_props[id] file_props = self.files_props[id_]
file_props['error'] = -4 file_props['error'] = -4
self.dispatch('FILE_REQUEST_ERROR', (jid, file_props, '')) self.dispatch('FILE_REQUEST_ERROR', (jid, file_props, ''))
raise common.xmpp.NodeProcessed raise common.xmpp.NodeProcessed
@ -391,7 +391,7 @@ class ConnectionBytestream:
def _bytestreamSetCB(self, con, iq_obj): def _bytestreamSetCB(self, con, iq_obj):
gajim.log.debug('_bytestreamSetCB') gajim.log.debug('_bytestreamSetCB')
target = unicode(iq_obj.getAttr('to')) target = unicode(iq_obj.getAttr('to'))
id = unicode(iq_obj.getAttr('id')) id_ = unicode(iq_obj.getAttr('id'))
query = iq_obj.getTag('query') query = iq_obj.getTag('query')
sid = unicode(query.getAttr('sid')) sid = unicode(query.getAttr('sid'))
file_props = gajim.socks5queue.get_file_props( file_props = gajim.socks5queue.get_file_props(
@ -402,7 +402,7 @@ class ConnectionBytestream:
host_dict={ host_dict={
'state': 0, 'state': 0,
'target': target, 'target': target,
'id': id, 'id': id_,
'sid': sid, 'sid': sid,
'initiator': helpers.get_full_jid_from_iq(iq_obj) 'initiator': helpers.get_full_jid_from_iq(iq_obj)
} }
@ -443,9 +443,9 @@ class ConnectionBytestream:
if not real_id.startswith('au_'): if not real_id.startswith('au_'):
return return
frm = helpers.get_full_jid_from_iq(iq_obj) frm = helpers.get_full_jid_from_iq(iq_obj)
id = real_id[3:] id_ = real_id[3:]
if id in self.files_props: if id_ in self.files_props:
file_props = self.files_props[id] file_props = self.files_props[id_]
if file_props['streamhost-used']: if file_props['streamhost-used']:
for host in file_props['proxyhosts']: for host in file_props['proxyhosts']:
if host['initiator'] == frm and 'idx' in host: if host['initiator'] == frm and 'idx' in host:
@ -463,17 +463,16 @@ class ConnectionBytestream:
streamhost = query.getTag('streamhost-used') streamhost = query.getTag('streamhost-used')
except Exception: # this bytestream result is not what we need except Exception: # this bytestream result is not what we need
pass pass
id = real_id[3:] id_ = real_id[3:]
if id in self.files_props: if id_ in self.files_props:
file_props = self.files_props[id] file_props = self.files_props[id_]
else: else:
raise common.xmpp.NodeProcessed raise common.xmpp.NodeProcessed
if streamhost is None: if streamhost is None:
# proxy approves the activate query # proxy approves the activate query
if real_id.startswith('au_'): if real_id.startswith('au_'):
id = real_id[3:]
if 'streamhost-used' not in file_props or \ if 'streamhost-used' not in file_props or \
file_props['streamhost-used'] is False: file_props['streamhost-used'] is False:
raise common.xmpp.NodeProcessed raise common.xmpp.NodeProcessed
if 'proxyhosts' not in file_props: if 'proxyhosts' not in file_props:
raise common.xmpp.NodeProcessed raise common.xmpp.NodeProcessed
@ -507,7 +506,8 @@ class ConnectionBytestream:
file_props['streamhosts'] = [] file_props['streamhosts'] = []
file_props['streamhosts'].append(proxy) file_props['streamhosts'].append(proxy)
file_props['is_a_proxy'] = True file_props['is_a_proxy'] = True
receiver = socks5.Socks5Receiver(gajim.idlequeue, proxy, file_props['sid'], file_props) receiver = socks5.Socks5Receiver(gajim.idlequeue, proxy,
file_props['sid'], file_props)
gajim.socks5queue.add_receiver(self.name, receiver) gajim.socks5queue.add_receiver(self.name, receiver)
proxy['idx'] = receiver.queue_idx proxy['idx'] = receiver.queue_idx
gajim.socks5queue.on_success = self._proxy_auth_ok gajim.socks5queue.on_success = self._proxy_auth_ok
@ -528,11 +528,11 @@ class ConnectionBytestream:
def _siResultCB(self, con, iq_obj): def _siResultCB(self, con, iq_obj):
gajim.log.debug('_siResultCB') gajim.log.debug('_siResultCB')
id = iq_obj.getAttr('id') id_ = iq_obj.getAttr('id')
if id not in self.files_props: if id_ not in self.files_props:
# no such jid # no such jid
return return
file_props = self.files_props[id] file_props = self.files_props[id_]
if file_props is None: if file_props is None:
# file properties for jid is none # file properties for jid is none
return return
@ -602,11 +602,11 @@ class ConnectionBytestream:
profile = si.getAttr('profile') profile = si.getAttr('profile')
if profile != common.xmpp.NS_FILE: if profile != common.xmpp.NS_FILE:
return return
id = iq_obj.getAttr('id') id_ = iq_obj.getAttr('id')
if id not in self.files_props: if id_ not in self.files_props:
# no such jid # no such jid
return return
file_props = self.files_props[id] file_props = self.files_props[id_]
if file_props is None: if file_props is None:
# file properties for jid is none # file properties for jid is none
return return
@ -632,10 +632,10 @@ class ConnectionDisco:
if not self.connection or self.connected < 2: if not self.connection or self.connected < 2:
return None return None
iq=common.xmpp.Iq('get', common.xmpp.NS_REGISTER, to=agent) iq=common.xmpp.Iq('get', common.xmpp.NS_REGISTER, to=agent)
id = self.connection.getAnID() id_ = self.connection.getAnID()
iq.setID(id) iq.setID(id_)
# Wait the answer during 30 secondes # Wait the answer during 30 secondes
self.awaiting_timeouts[gajim.idlequeue.current_time() + 30] = (id, self.awaiting_timeouts[gajim.idlequeue.current_time() + 30] = (id_,
_('Registration information for transport %s has not arrived in time') % \ _('Registration information for transport %s has not arrived in time') % \
agent) agent)
self.connection.SendAndCallForResponse(iq, self._ReceivedRegInfo, self.connection.SendAndCallForResponse(iq, self._ReceivedRegInfo,
@ -659,8 +659,8 @@ class ConnectionDisco:
return return
iq = common.xmpp.Iq(typ = 'get', to = jid, queryNS = ns) iq = common.xmpp.Iq(typ = 'get', to = jid, queryNS = ns)
if id_prefix: if id_prefix:
id = self.connection.getAnID() id_ = self.connection.getAnID()
iq.setID('%s%s' % (id_prefix, id)) iq.setID('%s%s' % (id_prefix, id_))
if node: if node:
iq.setQuerynode(node) iq.setQuerynode(node)
self.connection.send(iq) self.connection.send(iq)
@ -675,10 +675,10 @@ class ConnectionDisco:
return return
frm = helpers.get_full_jid_from_iq(iq_obj) frm = helpers.get_full_jid_from_iq(iq_obj)
to = unicode(iq_obj.getAttr('to')) to = unicode(iq_obj.getAttr('to'))
id = unicode(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_)
query = iq.setTag('query') query = iq.setTag('query')
query.setAttr('node','http://gajim.org#' + gajim.version.split('-', query.setAttr('node','http://gajim.org#' + gajim.version.split('-',
1)[0]) 1)[0])
@ -724,8 +724,8 @@ class ConnectionDisco:
jid = helpers.get_full_jid_from_iq(iq_obj) jid = helpers.get_full_jid_from_iq(iq_obj)
hostname = gajim.config.get_per('accounts', self.name, hostname = gajim.config.get_per('accounts', self.name,
'hostname') 'hostname')
id = iq_obj.getID() id_ = iq_obj.getID()
if jid == hostname and id[0] == 'p': if jid == hostname and id_[0] == 'p':
for item in items: for item in items:
self.discoverInfo(item['jid'], id_prefix='p') self.discoverInfo(item['jid'], id_prefix='p')
else: else:
@ -758,8 +758,8 @@ class ConnectionDisco:
if self.commandInfoQuery(con, iq_obj): if self.commandInfoQuery(con, iq_obj):
raise common.xmpp.NodeProcessed raise common.xmpp.NodeProcessed
id = unicode(iq_obj.getAttr('id')) id_ = unicode(iq_obj.getAttr('id'))
if id[0] == 'p': if id_[0] == 'p':
# We get this request from echo.server # We get this request from echo.server
raise common.xmpp.NodeProcessed raise common.xmpp.NodeProcessed
@ -822,11 +822,11 @@ class ConnectionDisco:
if transport_type and jid not in gajim.transport_type: if transport_type and jid not in gajim.transport_type:
gajim.transport_type[jid] = transport_type gajim.transport_type[jid] = transport_type
gajim.logger.save_transport_type(jid, transport_type) gajim.logger.save_transport_type(jid, transport_type)
id = iq_obj.getID() id_ = iq_obj.getID()
if not identities: # ejabberd doesn't send identities when we browse online users if not identities: # ejabberd doesn't send identities when we browse online users
#FIXME: see http://www.jabber.ru/bugzilla/show_bug.cgi?id=225 #FIXME: see http://www.jabber.ru/bugzilla/show_bug.cgi?id=225
identities = [{'category': 'server', 'type': 'im', 'name': node}] identities = [{'category': 'server', 'type': 'im', 'name': node}]
if id[0] == 'p': if id_[0] == 'p':
if jid == gajim.config.get_per('accounts', self.name, 'hostname'): if jid == gajim.config.get_per('accounts', self.name, 'hostname'):
if features.__contains__(common.xmpp.NS_GMAILNOTIFY): if features.__contains__(common.xmpp.NS_GMAILNOTIFY):
gajim.gmail_domains.append(jid) gajim.gmail_domains.append(jid)
@ -884,23 +884,22 @@ class ConnectionVcard:
return p return p
def node_to_dict(self, node): def node_to_dict(self, node):
dict = {} dict_ = {}
for info in node.getChildren(): for info in node.getChildren():
name = info.getName() name = info.getName()
if name in ('ADR', 'TEL', 'EMAIL'): # we can have several if name in ('ADR', 'TEL', 'EMAIL'): # we can have several
if name not in dict: dict_.setdefault(name, [])
dict[name] = []
entry = {} entry = {}
for c in info.getChildren(): for c in info.getChildren():
entry[c.getName()] = c.getData() entry[c.getName()] = c.getData()
dict[name].append(entry) dict_[name].append(entry)
elif info.getChildren() == []: elif info.getChildren() == []:
dict[name] = info.getData() dict_[name] = info.getData()
else: else:
dict[name] = {} dict_[name] = {}
for c in info.getChildren(): for c in info.getChildren():
dict[name][c.getName()] = c.getData() dict_[name][c.getName()] = c.getData()
return dict return dict_
def save_vcard_to_hd(self, full_jid, card): def save_vcard_to_hd(self, full_jid, card):
jid, nick = gajim.get_room_and_nick_from_fjid(full_jid) jid, nick = gajim.get_room_and_nick_from_fjid(full_jid)
@ -974,17 +973,17 @@ class ConnectionVcard:
iq.setTo(jid) iq.setTo(jid)
iq.setTag(common.xmpp.NS_VCARD + ' vCard') iq.setTag(common.xmpp.NS_VCARD + ' vCard')
id = self.connection.getAnID() id_ = self.connection.getAnID()
iq.setID(id) iq.setID(id_)
j = jid j = jid
if not j: if not j:
j = gajim.get_jid_from_account(self.name) j = gajim.get_jid_from_account(self.name)
self.awaiting_answers[id] = (VCARD_ARRIVED, j, groupchat_jid) self.awaiting_answers[id_] = (VCARD_ARRIVED, j, groupchat_jid)
if groupchat_jid: if groupchat_jid:
room_jid = gajim.get_room_and_nick_from_fjid(groupchat_jid)[0] room_jid = gajim.get_room_and_nick_from_fjid(groupchat_jid)[0]
if not room_jid in self.room_jids: if not room_jid in self.room_jids:
self.room_jids.append(room_jid) self.room_jids.append(room_jid)
self.groupchat_jids[id] = groupchat_jid self.groupchat_jids[id_] = groupchat_jid
self.connection.send(iq) self.connection.send(iq)
def send_vcard(self, vcard): def send_vcard(self, vcard):
@ -1007,8 +1006,8 @@ class ConnectionVcard:
else: else:
iq2.addChild(i).setData(vcard[i]) iq2.addChild(i).setData(vcard[i])
id = self.connection.getAnID() id_ = self.connection.getAnID()
iq.setID(id) iq.setID(id_)
self.connection.send(iq) self.connection.send(iq)
our_jid = gajim.get_jid_from_account(self.name) our_jid = gajim.get_jid_from_account(self.name)
@ -1023,25 +1022,25 @@ class ConnectionVcard:
else: else:
gajim.interface.remove_avatar_files(our_jid) gajim.interface.remove_avatar_files(our_jid)
self.awaiting_answers[id] = (VCARD_PUBLISHED, iq2) self.awaiting_answers[id_] = (VCARD_PUBLISHED, iq2)
def _IqCB(self, con, iq_obj): def _IqCB(self, con, iq_obj):
id = iq_obj.getID() id_ = iq_obj.getID()
# Check if we were waiting a timeout for this id # Check if we were waiting a timeout for this id
found_tim = None found_tim = None
for tim in self.awaiting_timeouts: for tim in self.awaiting_timeouts:
if id == self.awaiting_timeouts[tim][0]: if id_ == self.awaiting_timeouts[tim][0]:
found_tim = tim found_tim = tim
break break
if found_tim: if found_tim:
del self.awaiting_timeouts[found_tim] del self.awaiting_timeouts[found_tim]
if id not in self.awaiting_answers: if id_ not in self.awaiting_answers:
return return
if self.awaiting_answers[id][0] == VCARD_PUBLISHED: if self.awaiting_answers[id_][0] == VCARD_PUBLISHED:
if iq_obj.getType() == 'result': if iq_obj.getType() == 'result':
vcard_iq = self.awaiting_answers[id][1] vcard_iq = self.awaiting_answers[id_][1]
# Save vcard to HD # Save vcard to HD
if vcard_iq.getTag('PHOTO') and vcard_iq.getTag('PHOTO').getTag('SHA'): if vcard_iq.getTag('PHOTO') and vcard_iq.getTag('PHOTO').getTag('SHA'):
new_sha = vcard_iq.getTag('PHOTO').getTagData('SHA') new_sha = vcard_iq.getTag('PHOTO').getTagData('SHA')
@ -1066,11 +1065,11 @@ class ConnectionVcard:
self.dispatch('VCARD_PUBLISHED', ()) self.dispatch('VCARD_PUBLISHED', ())
elif iq_obj.getType() == 'error': elif iq_obj.getType() == 'error':
self.dispatch('VCARD_NOT_PUBLISHED', ()) self.dispatch('VCARD_NOT_PUBLISHED', ())
elif self.awaiting_answers[id][0] == VCARD_ARRIVED: elif self.awaiting_answers[id_][0] == VCARD_ARRIVED:
# If vcard is empty, we send to the interface an empty vcard so that # If vcard is empty, we send to the interface an empty vcard so that
# it knows it arrived # it knows it arrived
jid = self.awaiting_answers[id][1] jid = self.awaiting_answers[id_][1]
groupchat_jid = self.awaiting_answers[id][2] groupchat_jid = self.awaiting_answers[id_][2]
frm = jid frm = jid
if groupchat_jid: if groupchat_jid:
# We do as if it comes from the fake_jid # We do as if it comes from the fake_jid
@ -1088,10 +1087,10 @@ class ConnectionVcard:
self.dispatch('VCARD', {'jid': jid, 'resource': resource}) self.dispatch('VCARD', {'jid': jid, 'resource': resource})
elif frm == our_jid: elif frm == our_jid:
self.dispatch('MYVCARD', {'jid': frm}) self.dispatch('MYVCARD', {'jid': frm})
elif self.awaiting_answers[id][0] == AGENT_REMOVED: elif self.awaiting_answers[id_][0] == AGENT_REMOVED:
jid = self.awaiting_answers[id][1] jid = self.awaiting_answers[id_][1]
self.dispatch('AGENT_REMOVED', jid) self.dispatch('AGENT_REMOVED', jid)
elif self.awaiting_answers[id][0] == METACONTACTS_ARRIVED: elif self.awaiting_answers[id_][0] == METACONTACTS_ARRIVED:
if not self.connection: if not self.connection:
return return
if iq_obj.getType() == 'result': if iq_obj.getType() == 'result':
@ -1122,7 +1121,7 @@ class ConnectionVcard:
self.private_storage_supported = False self.private_storage_supported = False
# We can now continue connection by requesting the roster # We can now continue connection by requesting the roster
self.connection.initRoster() self.connection.initRoster()
elif self.awaiting_answers[id][0] == PRIVACY_ARRIVED: elif self.awaiting_answers[id_][0] == PRIVACY_ARRIVED:
if iq_obj.getType() != 'error': if iq_obj.getType() != 'error':
self.privacy_rules_supported = True self.privacy_rules_supported = True
self.get_privacy_list('block') self.get_privacy_list('block')
@ -1136,7 +1135,7 @@ class ConnectionVcard:
return return
# Ask metacontacts before roster # Ask metacontacts before roster
self.get_metacontacts() self.get_metacontacts()
elif self.awaiting_answers[id][0] == PEP_CONFIG: elif self.awaiting_answers[id_][0] == PEP_CONFIG:
conf = iq_obj.getTag('pubsub').getTag('configure') conf = iq_obj.getTag('pubsub').getTag('configure')
node = conf.getAttr('node') node = conf.getAttr('node')
form_tag = conf.getTag('x', namespace=common.xmpp.NS_DATA) form_tag = conf.getTag('x', namespace=common.xmpp.NS_DATA)
@ -1144,7 +1143,7 @@ class ConnectionVcard:
form = common.dataforms.ExtendForm(node=form_tag) form = common.dataforms.ExtendForm(node=form_tag)
self.dispatch('PEP_CONFIG', (node, form)) self.dispatch('PEP_CONFIG', (node, form))
del self.awaiting_answers[id] del self.awaiting_answers[id_]
def _vCardCB(self, con, vc): def _vCardCB(self, con, vc):
'''Called when we receive a vCard '''Called when we receive a vCard
@ -1153,14 +1152,14 @@ class ConnectionVcard:
return return
if not vc.getTag('vCard').getNamespace() == common.xmpp.NS_VCARD: if not vc.getTag('vCard').getNamespace() == common.xmpp.NS_VCARD:
return return
id = vc.getID() id_ = vc.getID()
frm_iq = vc.getFrom() frm_iq = vc.getFrom()
our_jid = gajim.get_jid_from_account(self.name) our_jid = gajim.get_jid_from_account(self.name)
resource = '' resource = ''
if id in self.groupchat_jids: if id_ in self.groupchat_jids:
who = self.groupchat_jids[id] who = self.groupchat_jids[id_]
frm, resource = gajim.get_room_and_nick_from_fjid(who) frm, resource = gajim.get_room_and_nick_from_fjid(who)
del self.groupchat_jids[id] del self.groupchat_jids[id_]
elif frm_iq: elif frm_iq:
who = helpers.get_full_jid_from_iq(vc) who = helpers.get_full_jid_from_iq(vc)
frm, resource = gajim.get_room_and_nick_from_fjid(who) frm, resource = gajim.get_room_and_nick_from_fjid(who)
@ -1414,31 +1413,31 @@ class ConnectionHandlers(ConnectionVcard, ConnectionBytestream, ConnectionDisco,
if opt in ('yes', 'no'): if opt in ('yes', 'no'):
self.build_http_auth_answer(iq_obj, opt) self.build_http_auth_answer(iq_obj, opt)
else: else:
id = iq_obj.getTagAttr('confirm', 'id') id_ = iq_obj.getTagAttr('confirm', 'id')
method = iq_obj.getTagAttr('confirm', 'method') method = iq_obj.getTagAttr('confirm', 'method')
url = iq_obj.getTagAttr('confirm', 'url') url = iq_obj.getTagAttr('confirm', 'url')
msg = iq_obj.getTagData('body') # In case it's a message with a body msg = iq_obj.getTagData('body') # In case it's a message with a body
self.dispatch('HTTP_AUTH', (method, url, id, iq_obj, msg)) self.dispatch('HTTP_AUTH', (method, url, id_, iq_obj, msg))
raise common.xmpp.NodeProcessed raise common.xmpp.NodeProcessed
def _ErrorCB(self, con, iq_obj): def _ErrorCB(self, con, iq_obj):
gajim.log.debug('ErrorCB') gajim.log.debug('ErrorCB')
jid_from = helpers.get_full_jid_from_iq(iq_obj) jid_from = helpers.get_full_jid_from_iq(iq_obj)
jid_stripped, resource = gajim.get_room_and_nick_from_fjid(jid_from) jid_stripped, resource = gajim.get_room_and_nick_from_fjid(jid_from)
id = unicode(iq_obj.getID()) id_ = unicode(iq_obj.getID())
if id in self.version_ids: if id_ in self.version_ids:
self.dispatch('OS_INFO', (jid_stripped, resource, '', '')) self.dispatch('OS_INFO', (jid_stripped, resource, '', ''))
self.version_ids.remove(id) self.version_ids.remove(id_)
return return
if id in self.last_ids: if id_ in self.last_ids:
self.dispatch('LAST_STATUS_TIME', (jid_stripped, resource, -1, '')) self.dispatch('LAST_STATUS_TIME', (jid_stripped, resource, -1, ''))
self.last_ids.remove(id) self.last_ids.remove(id_)
return return
if id == self.awaiting_xmpp_ping_id: if id_ == self.awaiting_xmpp_ping_id:
self.awaiting_xmpp_ping_id = None self.awaiting_xmpp_ping_id = None
errmsg = iq_obj.getErrorMsg() errmsg = iq_obj.getErrorMsg()
errcode = iq_obj.getErrorCode() errcode = iq_obj.getErrorCode()
self.dispatch('ERROR_ANSWER', (id, jid_from, errmsg, errcode)) self.dispatch('ERROR_ANSWER', (id_, jid_from, errmsg, errcode))
def _PrivateCB(self, con, iq_obj): def _PrivateCB(self, con, iq_obj):
''' '''
@ -1538,14 +1537,14 @@ class ConnectionHandlers(ConnectionVcard, ConnectionBytestream, ConnectionDisco,
seconds = int(seconds) seconds = int(seconds)
except Exception: except Exception:
return return
id = iq_obj.getID() id_ = iq_obj.getID()
if id in self.groupchat_jids: if id_ in self.groupchat_jids:
who = self.groupchat_jids[id] who = self.groupchat_jids[id_]
del self.groupchat_jids[id] del self.groupchat_jids[id_]
else: else:
who = helpers.get_full_jid_from_iq(iq_obj) who = helpers.get_full_jid_from_iq(iq_obj)
if id in self.last_ids: if id_ in self.last_ids:
self.last_ids.remove(id) self.last_ids.remove(id_)
jid_stripped, resource = gajim.get_room_and_nick_from_fjid(who) jid_stripped, resource = gajim.get_room_and_nick_from_fjid(who)
self.dispatch('LAST_STATUS_TIME', (jid_stripped, resource, seconds, status)) self.dispatch('LAST_STATUS_TIME', (jid_stripped, resource, seconds, status))
@ -1560,15 +1559,15 @@ class ConnectionHandlers(ConnectionVcard, ConnectionBytestream, ConnectionDisco,
client_info += ' ' + qp.getTag('version').getData() client_info += ' ' + qp.getTag('version').getData()
if qp.getTag('os'): if qp.getTag('os'):
os_info += qp.getTag('os').getData() os_info += qp.getTag('os').getData()
id = iq_obj.getID() id_ = iq_obj.getID()
if id in self.groupchat_jids: if id_ in self.groupchat_jids:
who = self.groupchat_jids[id] who = self.groupchat_jids[id_]
del self.groupchat_jids[id] del self.groupchat_jids[id_]
else: else:
who = helpers.get_full_jid_from_iq(iq_obj) who = helpers.get_full_jid_from_iq(iq_obj)
jid_stripped, resource = gajim.get_room_and_nick_from_fjid(who) jid_stripped, resource = gajim.get_room_and_nick_from_fjid(who)
if id in self.version_ids: if id_ in self.version_ids:
self.version_ids.remove(id) self.version_ids.remove(id_)
self.dispatch('OS_INFO', (jid_stripped, resource, client_info, os_info)) self.dispatch('OS_INFO', (jid_stripped, resource, client_info, os_info))
def _TimeCB(self, con, iq_obj): def _TimeCB(self, con, iq_obj):

View file

@ -1241,20 +1241,19 @@ def compute_caps_hash(identities, features, dataforms=[], hash_method='sha-1'):
if form_type: if form_type:
S += form_type.getValue() + '<' S += form_type.getValue() + '<'
del fields['FORM_TYPE'] del fields['FORM_TYPE']
vars = sorted(fields.keys()) for var in sorted(fields.keys()):
for var in vars:
S += '%s<' % var S += '%s<' % var
values = sorted(fields[var].getValues()) values = sorted(fields[var].getValues())
for value in values: for value in values:
S += '%s<' % value S += '%s<' % value
if hash_method == 'sha-1': if hash_method == 'sha-1':
hash = hash_sha1(S) hash_ = hash_sha1(S)
elif hash_method == 'md5': elif hash_method == 'md5':
hash = hash_md5(S) hash_ = hash_md5(S)
else: else:
return '' return ''
return base64.b64encode(hash.digest()) return base64.b64encode(hash_.digest())
def update_optional_features(account = None): def update_optional_features(account = None):
if account: if account:

View file

@ -759,7 +759,7 @@ class Logger:
# list of corrupted entries that will be removed # list of corrupted entries that will be removed
to_be_removed = [] to_be_removed = []
for hash_method, hash, data in self.cur: for hash_method, hash_, data in self.cur:
# for each row: unpack the data field # for each row: unpack the data field
# (format: (category, type, name, category, type, name, ... # (format: (category, type, name, category, type, name, ...
# ..., 'FEAT', feature1, feature2, ...).join(' ')) # ..., 'FEAT', feature1, feature2, ...).join(' '))
@ -768,7 +768,7 @@ class Logger:
data = GzipFile(fileobj=StringIO(str(data))).read().decode('utf-8').split('\0') data = GzipFile(fileobj=StringIO(str(data))).read().decode('utf-8').split('\0')
except IOError: except IOError:
# This data is corrupted. It probably contains non-ascii chars # This data is corrupted. It probably contains non-ascii chars
to_be_removed.append((hash_method, hash)) to_be_removed.append((hash_method, hash_))
continue continue
i=0 i=0
identities = list() identities = list()
@ -787,9 +787,9 @@ class Logger:
i += 1 i += 1
# yield the row # yield the row
yield hash_method, hash, identities, features yield hash_method, hash_, identities, features
for hash_method, hash in to_be_removed: for hash_method, hash_ in to_be_removed:
sql = 'DELETE FROM caps_cache WHERE hash_method = "%s" AND hash = "%s"' % (hash_method, hash) sql = 'DELETE FROM caps_cache WHERE hash_method = "%s" AND hash = "%s"' % (hash_method, hash_)
self.simple_commit(sql) self.simple_commit(sql)
def add_caps_entry(self, hash_method, hash_, identities, features): def add_caps_entry(self, hash_method, hash_, identities, features):

View file

@ -36,9 +36,9 @@ class ConnectionPubSub:
pb = query.addChild('pubsub', {'xmlns': xmpp.NS_PUBSUB}) pb = query.addChild('pubsub', {'xmlns': xmpp.NS_PUBSUB})
pb.addChild('subscriptions') pb.addChild('subscriptions')
id = self.connection.send(query) id_ = self.connection.send(query)
self.__callbacks[id]=(cb, args, kwargs) self.__callbacks[id_]=(cb, args, kwargs)
def send_pb_subscribe(self, jid, node, cb, *args, **kwargs): def send_pb_subscribe(self, jid, node, cb, *args, **kwargs):
if not self.connection or self.connected < 2: if not self.connection or self.connected < 2:
@ -48,9 +48,9 @@ class ConnectionPubSub:
pb = query.addChild('pubsub', namespace=xmpp.NS_PUBSUB) pb = query.addChild('pubsub', namespace=xmpp.NS_PUBSUB)
pb.addChild('subscribe', {'node': node, 'jid': our_jid}) pb.addChild('subscribe', {'node': node, 'jid': our_jid})
id = self.connection.send(query) id_ = self.connection.send(query)
self.__callbacks[id]=(cb, args, kwargs) self.__callbacks[id_]=(cb, args, kwargs)
def send_pb_unsubscribe(self, jid, node, cb, *args, **kwargs): def send_pb_unsubscribe(self, jid, node, cb, *args, **kwargs):
if not self.connection or self.connected < 2: if not self.connection or self.connected < 2:
@ -60,9 +60,9 @@ class ConnectionPubSub:
pb = query.addChild('pubsub', namespace=xmpp.NS_PUBSUB) pb = query.addChild('pubsub', namespace=xmpp.NS_PUBSUB)
pb.addChild('unsubscribe', {'node': node, 'jid': our_jid}) pb.addChild('unsubscribe', {'node': node, 'jid': our_jid})
id = self.connection.send(query) id_ = self.connection.send(query)
self.__callbacks[id]=(cb, args, kwargs) self.__callbacks[id_]=(cb, args, kwargs)
def send_pb_publish(self, jid, node, item, id_): def send_pb_publish(self, jid, node, item, id_):
'''Publish item to a node.''' '''Publish item to a node.'''
@ -141,9 +141,9 @@ class ConnectionPubSub:
query = xmpp.Iq('get', to=jid) query = xmpp.Iq('get', to=jid)
e = query.addChild('pubsub', namespace=xmpp.NS_PUBSUB_OWNER) e = query.addChild('pubsub', namespace=xmpp.NS_PUBSUB_OWNER)
e = e.addChild('configure', {'node': node}) e = e.addChild('configure', {'node': node})
id = self.connection.getAnID() id_ = self.connection.getAnID()
query.setID(id) query.setID(id_)
self.awaiting_answers[id] = (connection_handlers.PEP_CONFIG,) self.awaiting_answers[id_] = (connection_handlers.PEP_CONFIG,)
self.connection.send(query) self.connection.send(query)
# vim: se ts=3: # vim: se ts=3:

View file

@ -240,8 +240,8 @@ class EncryptedStanzaSession(StanzaSession):
def sign(self, string): def sign(self, string):
if self.negotiated['sign_algs'] == (XmlDsig + 'rsa-sha256'): if self.negotiated['sign_algs'] == (XmlDsig + 'rsa-sha256'):
hash = crypto.sha256(string) hash_ = crypto.sha256(string)
return crypto.encode_mpi(gajim.pubkey.sign(hash, '')[0]) return crypto.encode_mpi(gajim.pubkey.sign(hash_, '')[0])
def encrypt_stanza(self, stanza): def encrypt_stanza(self, stanza):
encryptable = filter(lambda x: x.getName() not in ('error', 'amp', encryptable = filter(lambda x: x.getName() not in ('error', 'amp',
@ -424,9 +424,9 @@ class EncryptedStanzaSession(StanzaSession):
mac_o_calculated = self.hmac(self.ks_o, content) mac_o_calculated = self.hmac(self.ks_o, content)
if self.negotiated['recv_pubkey']: if self.negotiated['recv_pubkey']:
hash = crypto.sha256(mac_o_calculated) hash_ = crypto.sha256(mac_o_calculated)
if not eir_pubkey.verify(hash, signature): if not eir_pubkey.verify(hash_, signature):
raise exceptions.NegotiationError, 'public key signature verification failed!' raise exceptions.NegotiationError, 'public key signature verification failed!'
elif mac_o_calculated != mac_o: elif mac_o_calculated != mac_o:

View file

@ -68,8 +68,8 @@ class NonSASL(PlugIn):
def hash_n_times(s, count): def hash_n_times(s, count):
return count and hasher(hash_n_times(s, count-1)) or s return count and hasher(hash_n_times(s, count-1)) or s
hash = hash_n_times(hasher(hasher(self.password)+token), int(seq)) hash_ = hash_n_times(hasher(hasher(self.password)+token), int(seq))
query.setTagData('hash',hash) query.setTagData('hash', hash_)
method='0k' method='0k'
else: else:
self.DEBUG("Sequre methods unsupported, performing plain text authentication",'warn') self.DEBUG("Sequre methods unsupported, performing plain text authentication",'warn')

View file

@ -48,16 +48,17 @@ def challenge_splitter(data):
X_KEYWORD, X_VALUE, X_END = 0, 1, 2 X_KEYWORD, X_VALUE, X_END = 0, 1, 2
quotes_open = False quotes_open = False
keyword, value = '', '' keyword, value = '', ''
dict, arr = {}, None dict_ = {}
arr = None
expecting = X_KEYWORD expecting = X_KEYWORD
for iter in range(len(data) + 1): for iter_ in range(len(data) + 1):
end = False end = False
if iter == len(data): if iter_ == len(data):
expecting = X_END expecting = X_END
end = True end = True
else: else:
char = data[iter] char = data[iter_]
if expecting == X_KEYWORD: if expecting == X_KEYWORD:
if char == '=': if char == '=':
expecting = X_VALUE expecting = X_VALUE
@ -85,14 +86,14 @@ def challenge_splitter(data):
if end: if end:
if arr: if arr:
arr.append(value) arr.append(value)
dict[keyword] = arr dict_[keyword] = arr
arr = None arr = None
else: else:
dict[keyword] = value dict_[keyword] = value
value, keyword = '', '' value, keyword = '', ''
expecting = X_KEYWORD expecting = X_KEYWORD
quotes_open = False quotes_open = False
return dict return dict_
class SASL(PlugIn): class SASL(PlugIn):
''' Implements SASL authentication. ''' ''' Implements SASL authentication. '''
@ -321,8 +322,8 @@ class NonBlockingNonSASL(PlugIn):
def hash_n_times(s, count): def hash_n_times(s, count):
return count and hasher(hash_n_times(s, count-1)) or s return count and hasher(hash_n_times(s, count-1)) or s
hash = hash_n_times(hasher(hasher(self.password) + token), int(seq)) hash_ = hash_n_times(hasher(hasher(self.password) + token), int(seq))
query.setTagData('hash',hash) query.setTagData('hash', hash_)
self._method='0k' self._method='0k'
else: else:
self.DEBUG("Sequre methods unsupported, performing plain text authentication",'warn') self.DEBUG("Sequre methods unsupported, performing plain text authentication",'warn')

View file

@ -212,7 +212,7 @@ class Browser(PlugIn):
raise NodeProcessed raise NodeProcessed
# handler must return dictionary: # handler must return dictionary:
# {'ids':[{},{},{},{}], 'features':[fe,at,ur,es], 'xdata':DataForm} # {'ids':[{},{},{},{}], 'features':[fe,at,ur,es], 'xdata':DataForm}
for id in dt['ids']: q.addChild('identity',id) for id_ in dt['ids']: q.addChild('identity',id_)
for feature in dt['features']: q.addChild('feature',{'var':feature}) for feature in dt['features']: q.addChild('feature',{'var':feature})
if 'xdata' in dt: q.addChild(node=dt['xdata']) if 'xdata' in dt: q.addChild(node=dt['xdata'])
conn.send(rep) conn.send(rep)

View file

@ -105,7 +105,7 @@ class Commands(PlugIn):
# Enumerate the 'item' disco of each command for the specified jid # Enumerate the 'item' disco of each command for the specified jid
# Build responce and send # Build responce and send
# To make this code easy to write we add an 'list' disco type, it returns a tuple or 'none' if not advertised # To make this code easy to write we add an 'list' disco type, it returns a tuple or 'none' if not advertised
list = [] list_ = []
items = [] items = []
jid = str(request.getTo()) jid = str(request.getTo())
# Get specific jid based results # Get specific jid based results
@ -120,10 +120,10 @@ class Commands(PlugIn):
for each in items: for each in items:
i = self._handlers[each[0]][each[1]]['disco'](conn,request,'list') i = self._handlers[each[0]][each[1]]['disco'](conn,request,'list')
if i is not None: if i is not None:
list.append(Node(tag='item',attrs={'jid':i[0],'node':i[1],'name':i[2]})) list_.append(Node(tag='item',attrs={'jid':i[0],'node':i[1],'name':i[2]}))
iq = request.buildReply('result') iq = request.buildReply('result')
if request.getQuerynode(): iq.setQuerynode(request.getQuerynode()) if request.getQuerynode(): iq.setQuerynode(request.getQuerynode())
iq.setQueryPayload(list) iq.setQueryPayload(list_)
conn.send(iq) conn.send(iq)
else: else:
conn.send(Error(request,ERR_ITEM_NOT_FOUND)) conn.send(Error(request,ERR_ITEM_NOT_FOUND))

View file

@ -285,14 +285,14 @@ class Dispatcher(PlugIn):
session.DEBUG("Dispatching %s stanza with type->%s props->%s id->%s"%(name,typ,stanza.props,ID),'ok') session.DEBUG("Dispatching %s stanza with type->%s props->%s id->%s"%(name,typ,stanza.props,ID),'ok')
list=['default'] # we will use all handlers: list_=['default'] # we will use all handlers:
if typ in self.handlers[xmlns][name]: list.append(typ) # from very common... if typ in self.handlers[xmlns][name]: list_.append(typ) # from very common...
for prop in stanza.props: for prop in stanza.props:
if prop in self.handlers[xmlns][name]: list.append(prop) if prop in self.handlers[xmlns][name]: list_.append(prop)
if typ and typ+prop in self.handlers[xmlns][name]: list.append(typ+prop) # ...to very particular if typ and typ+prop in self.handlers[xmlns][name]: list_.append(typ+prop) # ...to very particular
chain=self.handlers[xmlns]['default']['default'] chain=self.handlers[xmlns]['default']['default']
for key in list: for key in list_:
if key: chain = chain + self.handlers[xmlns][name][key] if key: chain = chain + self.handlers[xmlns][name][key]
if ID in session._expected: if ID in session._expected:

View file

@ -328,14 +328,14 @@ class Dispatcher(PlugIn):
ID=stanza.getID() ID=stanza.getID()
session.DEBUG("Dispatching %s stanza with type->%s props->%s id->%s"%(name,typ,stanza.props,ID),'ok') session.DEBUG("Dispatching %s stanza with type->%s props->%s id->%s"%(name,typ,stanza.props,ID),'ok')
list=['default'] # we will use all handlers: list_=['default'] # we will use all handlers:
if typ in self.handlers[xmlns][name]: list.append(typ) # from very common... if typ in self.handlers[xmlns][name]: list_.append(typ) # from very common...
for prop in stanza.props: for prop in stanza.props:
if prop in self.handlers[xmlns][name]: list.append(prop) if prop in self.handlers[xmlns][name]: list_.append(prop)
if typ and typ+prop in self.handlers[xmlns][name]: list.append(typ+prop) # ...to very particular if typ and typ+prop in self.handlers[xmlns][name]: list_.append(typ+prop) # ...to very particular
chain=self.handlers[xmlns]['default']['default'] chain=self.handlers[xmlns]['default']['default']
for key in list: for key in list_:
if key: chain = chain + self.handlers[xmlns][name][key] if key: chain = chain + self.handlers[xmlns][name][key]
if ID in session._expected: if ID in session._expected:

View file

@ -142,13 +142,13 @@ def getPrivacyLists(disp):
""" Requests privacy lists from connected server. """ Requests privacy lists from connected server.
Returns dictionary of existing lists on success.""" Returns dictionary of existing lists on success."""
try: try:
dict={'lists':[]} dict_={'lists':[]}
resp=disp.SendAndWaitForResponse(Iq('get',NS_PRIVACY)) resp=disp.SendAndWaitForResponse(Iq('get',NS_PRIVACY))
if not isResultNode(resp): return if not isResultNode(resp): return
for list in resp.getQueryPayload(): for list_ in resp.getQueryPayload():
if list.getName()=='list': dict['lists'].append(list.getAttr('name')) if list_.getName()=='list': dict_['lists'].append(list_.getAttr('name'))
else: dict[list.getName()]=list.getAttr('name') else: dict_[list_.getName()]=list_.getAttr('name')
return dict return dict_
except: pass except: pass
def getPrivacyList(disp,listname): def getPrivacyList(disp,listname):

View file

@ -177,31 +177,31 @@ def getPrivacyLists(disp):
Returns dictionary of existing lists on success.""" Returns dictionary of existing lists on success."""
iq = Iq('get', NS_PRIVACY) iq = Iq('get', NS_PRIVACY)
def _on_response(resp): def _on_response(resp):
dict = {'lists': []} dict_ = {'lists': []}
if not isResultNode(resp): if not isResultNode(resp):
disp.Event(NS_PRIVACY, PRIVACY_LISTS_RECEIVED, (False)) disp.Event(NS_PRIVACY, PRIVACY_LISTS_RECEIVED, (False))
return return
for list in resp.getQueryPayload(): for list_ in resp.getQueryPayload():
if list.getName()=='list': if list_.getName()=='list':
dict['lists'].append(list.getAttr('name')) dict_['lists'].append(list_.getAttr('name'))
else: else:
dict[list.getName()]=list.getAttr('name') dict_[list_.getName()]=list_.getAttr('name')
disp.Event(NS_PRIVACY, PRIVACY_LISTS_RECEIVED, (dict)) disp.Event(NS_PRIVACY, PRIVACY_LISTS_RECEIVED, (dict_))
disp.SendAndCallForResponse(iq, _on_response) disp.SendAndCallForResponse(iq, _on_response)
def getActiveAndDefaultPrivacyLists(disp): def getActiveAndDefaultPrivacyLists(disp):
iq = Iq('get', NS_PRIVACY) iq = Iq('get', NS_PRIVACY)
def _on_response(resp): def _on_response(resp):
dict = {'active': '', 'default': ''} dict_ = {'active': '', 'default': ''}
if not isResultNode(resp): if not isResultNode(resp):
disp.Event(NS_PRIVACY, PRIVACY_LISTS_ACTIVE_DEFAULT, (False)) disp.Event(NS_PRIVACY, PRIVACY_LISTS_ACTIVE_DEFAULT, (False))
return return
for list in resp.getQueryPayload(): for list_ in resp.getQueryPayload():
if list.getName() == 'active': if list_.getName() == 'active':
dict['active'] = list.getAttr('name') dict_['active'] = list_.getAttr('name')
elif list.getName() == 'default': elif list_.getName() == 'default':
dict['default'] = list.getAttr('name') dict_['default'] = list_.getAttr('name')
disp.Event(NS_PRIVACY, PRIVACY_LISTS_ACTIVE_DEFAULT, (dict)) disp.Event(NS_PRIVACY, PRIVACY_LISTS_ACTIVE_DEFAULT, (dict_))
disp.SendAndCallForResponse(iq, _on_response) disp.SendAndCallForResponse(iq, _on_response)
def getPrivacyList(disp, listname): def getPrivacyList(disp, listname):

View file

@ -600,14 +600,14 @@ class ErrorNode(Node):
Mandatory parameter: name - name of error condition. Mandatory parameter: name - name of error condition.
Optional parameters: code, typ, text. Used for backwards compartibility with older jabber protocol.""" Optional parameters: code, typ, text. Used for backwards compartibility with older jabber protocol."""
if name in ERRORS: if name in ERRORS:
cod,type,txt=ERRORS[name] cod,type_,txt=ERRORS[name]
ns=name.split()[0] ns=name.split()[0]
else: cod,ns,type,txt='500',NS_STANZAS,'cancel','' else: cod,ns,type_,txt='500',NS_STANZAS,'cancel',''
if typ: type=typ if typ: type_=typ
if code: cod=code if code: cod=code
if text: txt=text if text: txt=text
Node.__init__(self,'error',{},[Node(name)]) Node.__init__(self,'error',{},[Node(name)])
if type: self.setAttr('type',type) if type_: self.setAttr('type',type_)
if not cod: self.setName('stream:error') if not cod: self.setName('stream:error')
if txt: self.addChild(node=Node(ns+' text',{},[txt])) if txt: self.addChild(node=Node(ns+' text',{},[txt]))
if cod: self.setAttr('code',cod) if cod: self.setAttr('code',cod)

View file

@ -688,23 +688,23 @@ class ClientZeroconf:
# look for hashed connections # look for hashed connections
if to in self.recipient_to_hash: if to in self.recipient_to_hash:
conn = self.connections[self.recipient_to_hash[to]] conn = self.connections[self.recipient_to_hash[to]]
id = conn.Dispatcher.getAnID() id_ = conn.Dispatcher.getAnID()
stanza.setID(id) stanza.setID(id_)
if conn.add_stanza(stanza, is_message): if conn.add_stanza(stanza, is_message):
if on_ok: if on_ok:
on_ok() on_ok()
return id return id_
if item['address'] in self.ip_to_hash: if item['address'] in self.ip_to_hash:
hash = self.ip_to_hash[item['address']] hash_ = self.ip_to_hash[item['address']]
if self.hash_to_port[hash] == item['port']: if self.hash_to_port[hash_] == item['port']:
conn = self.connections[hash] conn = self.connections[hash_]
id = conn.Dispatcher.getAnID() id_ = conn.Dispatcher.getAnID()
stanza.setID(id) stanza.setID(id_)
if conn.add_stanza(stanza, is_message): if conn.add_stanza(stanza, is_message):
if on_ok: if on_ok:
on_ok() on_ok()
return id return id_
# otherwise open new connection # otherwise open new connection
stanza.setID('zero') stanza.setID('zero')

View file

@ -159,7 +159,7 @@ class ConnectionBytestream(connection_handlers.ConnectionBytestream):
def _bytestreamSetCB(self, con, iq_obj): def _bytestreamSetCB(self, con, iq_obj):
gajim.log.debug('_bytestreamSetCB') gajim.log.debug('_bytestreamSetCB')
target = unicode(iq_obj.getAttr('to')) target = unicode(iq_obj.getAttr('to'))
id = unicode(iq_obj.getAttr('id')) id_ = unicode(iq_obj.getAttr('id'))
query = iq_obj.getTag('query') query = iq_obj.getTag('query')
sid = unicode(query.getAttr('sid')) sid = unicode(query.getAttr('sid'))
file_props = gajim.socks5queue.get_file_props( file_props = gajim.socks5queue.get_file_props(
@ -170,7 +170,7 @@ class ConnectionBytestream(connection_handlers.ConnectionBytestream):
host_dict={ host_dict={
'state': 0, 'state': 0,
'target': target, 'target': target,
'id': id, 'id': id_,
'sid': sid, 'sid': sid,
'initiator': unicode(iq_obj.getFrom()) 'initiator': unicode(iq_obj.getFrom())
} }
@ -206,9 +206,9 @@ class ConnectionBytestream(connection_handlers.ConnectionBytestream):
if not real_id.startswith('au_'): if not real_id.startswith('au_'):
return return
frm = unicode(iq_obj.getFrom()) frm = unicode(iq_obj.getFrom())
id = real_id[3:] id_ = real_id[3:]
if id in self.files_props: if id_ in self.files_props:
file_props = self.files_props[id] file_props = self.files_props[id_]
if file_props['streamhost-used']: if file_props['streamhost-used']:
for host in file_props['proxyhosts']: for host in file_props['proxyhosts']:
if host['initiator'] == frm and 'idx' in host: if host['initiator'] == frm and 'idx' in host:
@ -226,15 +226,15 @@ class ConnectionBytestream(connection_handlers.ConnectionBytestream):
streamhost = query.getTag('streamhost-used') streamhost = query.getTag('streamhost-used')
except Exception: # this bytestream result is not what we need except Exception: # this bytestream result is not what we need
pass pass
id = real_id[3:] id_ = real_id[3:]
if id in self.files_props: if id_ in self.files_props:
file_props = self.files_props[id] file_props = self.files_props[id_]
else: else:
raise common.xmpp.NodeProcessed raise common.xmpp.NodeProcessed
if streamhost is None: if streamhost is None:
# proxy approves the activate query # proxy approves the activate query
if real_id.startswith('au_'): if real_id.startswith('au_'):
id = real_id[3:] id_ = real_id[3:]
if 'streamhost-used' not in file_props or \ if 'streamhost-used' not in file_props or \
file_props['streamhost-used'] is False: file_props['streamhost-used'] is False:
raise common.xmpp.NodeProcessed raise common.xmpp.NodeProcessed
@ -286,11 +286,11 @@ class ConnectionBytestream(connection_handlers.ConnectionBytestream):
def _siResultCB(self, con, iq_obj): def _siResultCB(self, con, iq_obj):
gajim.log.debug('_siResultCB') gajim.log.debug('_siResultCB')
self.peerhost = con._owner.Connection._sock.getsockname() self.peerhost = con._owner.Connection._sock.getsockname()
id = iq_obj.getAttr('id') id_ = iq_obj.getAttr('id')
if id not in self.files_props: if id_ not in self.files_props:
# no such jid # no such jid
return return
file_props = self.files_props[id] file_props = self.files_props[id_]
if file_props is None: if file_props is None:
# file properties for jid is none # file properties for jid is none
return return
@ -359,11 +359,11 @@ class ConnectionBytestream(connection_handlers.ConnectionBytestream):
profile = si.getAttr('profile') profile = si.getAttr('profile')
if profile != common.xmpp.NS_FILE: if profile != common.xmpp.NS_FILE:
return return
id = iq_obj.getAttr('id') id_ = iq_obj.getAttr('id')
if id not in self.files_props: if id_ not in self.files_props:
# no such jid # no such jid
return return
file_props = self.files_props[id] file_props = self.files_props[id_]
if file_props is None: if file_props is None:
# file properties for jid is none # file properties for jid is none
return return

View file

@ -99,10 +99,7 @@ class Zeroconf:
# takes a TXTRecord instance # takes a TXTRecord instance
def txt_array_to_dict(self, txt): def txt_array_to_dict(self, txt):
items = pybonjour.TXTRecord.parse(txt)._items items = pybonjour.TXTRecord.parse(txt)._items
dict = {} return dict((v[0], v[1]) for v in items.values())
for val in items.values():
dict[val[0]] = val[1]
return dict
def service_resolved_callback(self, sdRef, flags, interfaceIndex, errorCode, fullname, def service_resolved_callback(self, sdRef, flags, interfaceIndex, errorCode, fullname,
hosttarget, port, txtRecord): hosttarget, port, txtRecord):

View file

@ -141,12 +141,12 @@ class PreferencesWindow:
model = gtk.ListStore(str) model = gtk.ListStore(str)
emoticons_combobox.set_model(model) emoticons_combobox.set_model(model)
l = [] l = []
for dir in emoticons_list: for dir_ in emoticons_list:
if not os.path.isdir(os.path.join(gajim.DATA_DIR, 'emoticons', dir)) \ if not os.path.isdir(os.path.join(gajim.DATA_DIR, 'emoticons', dir_)) \
and not os.path.isdir(os.path.join(gajim.MY_EMOTS_PATH, dir)) : and not os.path.isdir(os.path.join(gajim.MY_EMOTS_PATH, dir_)) :
continue continue
if dir != '.svn': if dir_ != '.svn':
l.append(dir) l.append(dir_)
l.append(_('Disabled')) l.append(_('Disabled'))
for i in xrange(len(l)): for i in xrange(len(l)):
model.append([l[i]]) model.append([l[i]])
@ -157,9 +157,9 @@ class PreferencesWindow:
# Set default for single window type # Set default for single window type
choices = common.config.opt_one_window_types choices = common.config.opt_one_window_types
type = gajim.config.get('one_message_window') type_ = gajim.config.get('one_message_window')
if type in choices: if type_ in choices:
self.one_window_type_combobox.set_active(choices.index(type)) self.one_window_type_combobox.set_active(choices.index(type_))
else: else:
self.one_window_type_combobox.set_active(0) self.one_window_type_combobox.set_active(0)
@ -216,9 +216,9 @@ class PreferencesWindow:
'online.png')) 'online.png'))
files.append(os.path.join(helpers.get_iconset_path(l[i]), '16x16', files.append(os.path.join(helpers.get_iconset_path(l[i]), '16x16',
'online.gif')) 'online.gif'))
for file in files: for file_ in files:
if os.path.exists(file): if os.path.exists(file_):
preview.set_from_file(file) preview.set_from_file(file_)
model.append([preview, l[i]]) model.append([preview, l[i]])
if gajim.config.get('iconset') == l[i]: if gajim.config.get('iconset') == l[i]:
self.iconset_combobox.set_active(i) self.iconset_combobox.set_active(i)
@ -872,14 +872,14 @@ class PreferencesWindow:
for status_ in status: for status_ in status:
msg = gajim.config.get_per('defaultstatusmsg', status_, 'message') msg = gajim.config.get_per('defaultstatusmsg', status_, 'message')
enabled = gajim.config.get_per('defaultstatusmsg', status_, 'enabled') enabled = gajim.config.get_per('defaultstatusmsg', status_, 'enabled')
iter = model.append() iter_ = model.append()
uf_show = helpers.get_uf_show(status_) uf_show = helpers.get_uf_show(status_)
model.set(iter, 0, status_, 1, uf_show, 2, msg, 3, enabled) model.set(iter_, 0, status_, 1, uf_show, 2, msg, 3, enabled)
def on_default_msg_cell_edited(self, cell, row, new_text): def on_default_msg_cell_edited(self, cell, row, new_text):
model = self.default_msg_tree.get_model() model = self.default_msg_tree.get_model()
iter = model.get_iter_from_string(row) iter_ = model.get_iter_from_string(row)
model.set_value(iter, 2, new_text) model.set_value(iter_, 2, new_text)
def default_msg_toggled_cb(self, cell, path): def default_msg_toggled_cb(self, cell, path):
model = self.default_msg_tree.get_model() model = self.default_msg_tree.get_model()
@ -901,16 +901,16 @@ class PreferencesWindow:
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[iter][0].decode('utf-8') val = model[iter_][0].decode('utf-8')
if model[iter][1]: # we have a preset message if model[iter_][1]: # we have a preset message
if not val: # no title, use message text for title if not val: # no title, use message text for title
val = model[iter][1] val = model[iter_][1]
gajim.config.add_per('statusmsg', val) gajim.config.add_per('statusmsg', val)
msg = helpers.to_one_line(model[iter][1].decode('utf-8')) msg = helpers.to_one_line(model[iter_][1].decode('utf-8'))
gajim.config.set_per('statusmsg', val, 'message', msg) gajim.config.set_per('statusmsg', val, 'message', msg)
iter = model.iter_next(iter) iter_ = model.iter_next(iter_)
gajim.interface.save_config() gajim.interface.save_config()
def on_msg_treemodel_row_changed(self, model, path, iter_): def on_msg_treemodel_row_changed(self, model, path, iter_):
@ -988,45 +988,45 @@ class PreferencesWindow:
for msg_name in preset_status: for msg_name in preset_status:
msg_text = gajim.config.get_per('statusmsg', msg_name, 'message') msg_text = gajim.config.get_per('statusmsg', msg_name, 'message')
msg_text = helpers.from_one_line(msg_text) msg_text = helpers.from_one_line(msg_text)
iter = model.append() iter_ = model.append()
model.set(iter, 0, msg_name, 1, msg_text) model.set(iter_, 0, msg_name, 1, msg_text)
def on_msg_cell_edited(self, cell, row, new_text): def on_msg_cell_edited(self, cell, row, new_text):
model = self.msg_tree.get_model() model = self.msg_tree.get_model()
iter = model.get_iter_from_string(row) iter_ = model.get_iter_from_string(row)
model.set_value(iter, 0, new_text) model.set_value(iter_, 0, new_text)
def on_msg_treeview_cursor_changed(self, widget, data = None): def on_msg_treeview_cursor_changed(self, widget, data = None):
(model, iter) = self.msg_tree.get_selection().get_selected() (model, iter_) = self.msg_tree.get_selection().get_selected()
if not iter: if not iter_:
return return
self.xml.get_widget('delete_msg_button').set_sensitive(True) self.xml.get_widget('delete_msg_button').set_sensitive(True)
buf = self.xml.get_widget('msg_textview').get_buffer() buf = self.xml.get_widget('msg_textview').get_buffer()
msg = model[iter][1] msg = model[iter_][1]
buf.set_text(msg) buf.set_text(msg)
def on_new_msg_button_clicked(self, widget, data = None): def on_new_msg_button_clicked(self, widget, data = None):
model = self.msg_tree.get_model() model = self.msg_tree.get_model()
iter = model.append() iter_ = model.append()
model.set(iter, 0, _('status message title'), 1, _('status message text')) model.set(iter_, 0, _('status message title'), 1, _('status message text'))
self.msg_tree.set_cursor(model.get_path(iter)) self.msg_tree.set_cursor(model.get_path(iter_))
def on_delete_msg_button_clicked(self, widget, data = None): def on_delete_msg_button_clicked(self, widget, data = None):
(model, iter) = self.msg_tree.get_selection().get_selected() (model, iter_) = self.msg_tree.get_selection().get_selected()
if not iter: if not iter_:
return return
buf = self.xml.get_widget('msg_textview').get_buffer() buf = self.xml.get_widget('msg_textview').get_buffer()
model.remove(iter) model.remove(iter_)
buf.set_text('') buf.set_text('')
self.xml.get_widget('delete_msg_button').set_sensitive(False) self.xml.get_widget('delete_msg_button').set_sensitive(False)
def on_msg_textview_changed(self, widget, data = None): def on_msg_textview_changed(self, widget, data = None):
(model, iter) = self.msg_tree.get_selection().get_selected() (model, iter_) = self.msg_tree.get_selection().get_selected()
if not iter: if not iter_:
return return
buf = self.xml.get_widget('msg_textview').get_buffer() buf = self.xml.get_widget('msg_textview').get_buffer()
first_iter, end_iter = buf.get_bounds() first_iter, end_iter = buf.get_bounds()
model.set_value(iter, 1, buf.get_text(first_iter, end_iter)) model.set_value(iter_, 1, buf.get_text(first_iter, end_iter))
def on_msg_treeview_key_press_event(self, widget, event): def on_msg_treeview_key_press_event(self, widget, event):
if event.keyval == gtk.keysyms.Delete: if event.keyval == gtk.keysyms.Delete:
@ -1064,54 +1064,54 @@ class PreferencesWindow:
model.append((enabled, sound_ui_name, path, sound_event_config_name)) model.append((enabled, sound_ui_name, path, sound_event_config_name))
def on_treeview_sounds_cursor_changed(self, widget, data = None): def on_treeview_sounds_cursor_changed(self, widget, data = None):
(model, iter) = self.sound_tree.get_selection().get_selected() (model, iter_) = self.sound_tree.get_selection().get_selected()
sounds_entry = self.xml.get_widget('sounds_entry') sounds_entry = self.xml.get_widget('sounds_entry')
if not iter: if not iter_:
sounds_entry.set_text('') sounds_entry.set_text('')
return return
path_to_snd_file = model[iter][2] path_to_snd_file = model[iter_][2]
sounds_entry.set_text(path_to_snd_file) sounds_entry.set_text(path_to_snd_file)
def on_browse_for_sounds_button_clicked(self, widget, data = None): def on_browse_for_sounds_button_clicked(self, widget, data = None):
(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
def on_ok(widget, path_to_snd_file): def on_ok(widget, path_to_snd_file):
self.dialog.destroy() self.dialog.destroy()
model, iter = self.sound_tree.get_selection().get_selected() model, iter_ = self.sound_tree.get_selection().get_selected()
if not path_to_snd_file: if not path_to_snd_file:
model[iter][2] = '' model[iter_][2] = ''
self.xml.get_widget('sounds_entry').set_text('') self.xml.get_widget('sounds_entry').set_text('')
model[iter][0] = False model[iter_][0] = False
return return
directory = os.path.dirname(path_to_snd_file) directory = os.path.dirname(path_to_snd_file)
gajim.config.set('last_sounds_dir', directory) gajim.config.set('last_sounds_dir', directory)
self.xml.get_widget('sounds_entry').set_text(path_to_snd_file) self.xml.get_widget('sounds_entry').set_text(path_to_snd_file)
model[iter][2] = path_to_snd_file # set new path to sounds_model model[iter_][2] = path_to_snd_file # set new path to sounds_model
model[iter][0] = True # set the sound to enabled model[iter_][0] = True # set the sound to enabled
def on_cancel(widget): def on_cancel(widget):
self.dialog.destroy() self.dialog.destroy()
model, iter = self.sound_tree.get_selection().get_selected() model, iter_ = self.sound_tree.get_selection().get_selected()
model[iter][2] = '' model[iter_][2] = ''
model[iter][0] = False model[iter_][0] = False
path_to_snd_file = model[iter][2].decode('utf-8') path_to_snd_file = model[iter_][2].decode('utf-8')
path_to_snd_file = os.path.join(os.getcwd(), path_to_snd_file) path_to_snd_file = os.path.join(os.getcwd(), path_to_snd_file)
self.dialog = dialogs.SoundChooserDialog(path_to_snd_file, on_ok, self.dialog = dialogs.SoundChooserDialog(path_to_snd_file, on_ok,
on_cancel) on_cancel)
def on_sounds_entry_changed(self, widget): def on_sounds_entry_changed(self, widget):
path_to_snd_file = widget.get_text() path_to_snd_file = widget.get_text()
model, iter = self.sound_tree.get_selection().get_selected() model, iter_ = self.sound_tree.get_selection().get_selected()
model[iter][2] = path_to_snd_file # set new path to sounds_model model[iter_][2] = path_to_snd_file # set new path to sounds_model
def on_play_button_clicked(self, widget): def on_play_button_clicked(self, widget):
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
snd_event_config_name = model[iter][3] snd_event_config_name = model[iter_][3]
helpers.play_sound(snd_event_config_name) helpers.play_sound(snd_event_config_name)
def on_open_advanced_editor_button_clicked(self, widget, data = None): def on_open_advanced_editor_button_clicked(self, widget, data = None):
@ -1137,11 +1137,11 @@ class ManageProxiesWindow:
def fill_proxies_treeview(self): def fill_proxies_treeview(self):
model = self.proxies_treeview.get_model() model = self.proxies_treeview.get_model()
model.clear() model.clear()
iter = model.append() iter_ = model.append()
model.set(iter, 0, _('None')) model.set(iter_, 0, _('None'))
for p in gajim.config.get_per('proxies'): for p in gajim.config.get_per('proxies'):
iter = model.append() iter_ = model.append()
model.set(iter, 0, p) model.set(iter_, 0, p)
def init_list(self): def init_list(self):
self.xml.get_widget('remove_proxy_button').set_sensitive(False) self.xml.get_widget('remove_proxy_button').set_sensitive(False)
@ -1169,16 +1169,16 @@ class ManageProxiesWindow:
i = 1 i = 1
while ('proxy' + unicode(i)) in proxies: while ('proxy' + unicode(i)) in proxies:
i += 1 i += 1
iter = model.append() iter_ = model.append()
model.set(iter, 0, 'proxy' + unicode(i)) model.set(iter_, 0, 'proxy' + unicode(i))
gajim.config.add_per('proxies', 'proxy' + unicode(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[iter][0].decode('utf-8') proxy = model[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)
@ -1193,10 +1193,10 @@ class ManageProxiesWindow:
def on_proxies_treeview_cursor_changed(self, widget): def on_proxies_treeview_cursor_changed(self, widget):
#FIXME: check if off proxy settings are correct (see #FIXME: check if off proxy settings are correct (see
# http://trac.gajim.org/changeset/1921#file2 line 1221 # http://trac.gajim.org/changeset/1921#file2 line 1221
(model, iter) = widget.get_selection().get_selected() (model, iter_) = widget.get_selection().get_selected()
if not iter: if not iter_:
return return
proxy = model[iter][0] proxy = model[iter_][0]
self.xml.get_widget('proxyname_entry').set_text(proxy) self.xml.get_widget('proxyname_entry').set_text(proxy)
proxyhost_entry = self.xml.get_widget('proxyhost_entry') proxyhost_entry = self.xml.get_widget('proxyhost_entry')
proxyport_entry = self.xml.get_widget('proxyport_entry') proxyport_entry = self.xml.get_widget('proxyport_entry')
@ -1238,10 +1238,10 @@ class ManageProxiesWindow:
self.on_remove_proxy_button_clicked(widget) self.on_remove_proxy_button_clicked(widget)
def on_proxyname_entry_changed(self, widget): def on_proxyname_entry_changed(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
old_name = model.get_value(iter, 0).decode('utf-8') old_name = model.get_value(iter_, 0).decode('utf-8')
new_name = widget.get_text().decode('utf-8') new_name = widget.get_text().decode('utf-8')
if new_name == '': if new_name == '':
return return
@ -1253,7 +1253,7 @@ class ManageProxiesWindow:
for option in config: for option in config:
gajim.config.set_per('proxies', new_name, option, gajim.config.set_per('proxies', new_name, option,
config[option][common.config.OPT_VAL]) config[option][common.config.OPT_VAL])
model.set_value(iter, 0, new_name) model.set_value(iter_, 0, new_name)
def on_proxytype_combobox_changed(self, widget): def on_proxytype_combobox_changed(self, widget):
types = ['http', 'socks5'] types = ['http', 'socks5']
@ -1343,13 +1343,13 @@ class AccountsWindow:
def select_account(self, account): def select_account(self, account):
model = self.accounts_treeview.get_model() model = self.accounts_treeview.get_model()
iter = model.get_iter_root() iter_ = model.get_iter_root()
while iter: while iter_:
acct = model[iter][0].decode('utf-8') acct = model[iter_][0].decode('utf-8')
if account == acct: if account == acct:
self.accounts_treeview.set_cursor(model.get_path(iter)) self.accounts_treeview.set_cursor(model.get_path(iter_))
return return
iter = model.iter_next(iter) iter_ = model.iter_next(iter_)
def init_accounts(self): def init_accounts(self):
'''initialize listStore with existing accounts''' '''initialize listStore with existing accounts'''
@ -1359,8 +1359,8 @@ class AccountsWindow:
model = self.accounts_treeview.get_model() model = self.accounts_treeview.get_model()
model.clear() model.clear()
for account in gajim.config.get_per('accounts'): for account in gajim.config.get_per('accounts'):
iter = model.append() iter_ = model.append()
model.set(iter, 0, account) model.set(iter_, 0, account)
def resend(self, account): def resend(self, account):
show = gajim.SHOW_LIST[gajim.connections[account].connected] show = gajim.SHOW_LIST[gajim.connections[account].connected]
@ -1409,9 +1409,9 @@ class AccountsWindow:
def on_accounts_treeview_cursor_changed(self, widget): def on_accounts_treeview_cursor_changed(self, widget):
'''Activate modify buttons when a row is selected, update accounts info''' '''Activate modify buttons when a row is selected, update accounts info'''
sel = self.accounts_treeview.get_selection() sel = self.accounts_treeview.get_selection()
(model, iter) = sel.get_selected() (model, iter_) = sel.get_selected()
if iter: if iter_:
account = model[iter][0].decode('utf-8') account = model[iter_][0].decode('utf-8')
else: else:
account = None account = None
if self.current_account and self.current_account == account: if self.current_account and self.current_account == account:
@ -1441,7 +1441,7 @@ class AccountsWindow:
self.remove_button.set_sensitive(True) self.remove_button.set_sensitive(True)
self.rename_button.set_sensitive(True) self.rename_button.set_sensitive(True)
if iter: if iter_:
self.current_account = account self.current_account = account
if account == gajim.ZEROCONF_ACC_NAME: if account == gajim.ZEROCONF_ACC_NAME:
self.remove_button.set_sensitive(False) self.remove_button.set_sensitive(False)
@ -2226,11 +2226,11 @@ class AccountsWindow:
def on_jabber_id_entry2_changed(self, widget): def on_jabber_id_entry2_changed(self, widget):
if self.ignore_events: if self.ignore_events:
return return
id = widget.get_text().decode('utf-8') id_ = widget.get_text().decode('utf-8')
if self.option_changed('zeroconf_jabber_id', id): if self.option_changed('zeroconf_jabber_id', id_):
self.need_relogin = True self.need_relogin = True
gajim.config.set_per('accounts', self.current_account, gajim.config.set_per('accounts', self.current_account,
'zeroconf_jabber_id', id) 'zeroconf_jabber_id', id_)
def on_email_entry2_changed(self, widget): def on_email_entry2_changed(self, widget):
if self.ignore_events: if self.ignore_events:
@ -2431,8 +2431,8 @@ class GroupchatConfigWindow:
def on_cell_edited(self, cell, path, new_text): def on_cell_edited(self, cell, path, new_text):
model = self.affiliation_treeview['outcast'].get_model() model = self.affiliation_treeview['outcast'].get_model()
new_text = new_text.decode('utf-8') new_text = new_text.decode('utf-8')
iter = model.get_iter(path) iter_ = model.get_iter(path)
model[iter][1] = new_text model[iter_][1] = new_text
def on_add_button_clicked(self, widget, affiliation): def on_add_button_clicked(self, widget, affiliation):
if affiliation == 'outcast': if affiliation == 'outcast':
@ -2470,9 +2470,9 @@ class GroupchatConfigWindow:
row_refs.append(gtk.TreeRowReference(model, path)) row_refs.append(gtk.TreeRowReference(model, path))
for row_ref in row_refs: for row_ref in row_refs:
path = row_ref.get_path() path = row_ref.get_path()
iter = model.get_iter(path) iter_ = model.get_iter(path)
jid = model[iter][0] jid = model[iter_][0]
model.remove(iter) model.remove(iter_)
self.remove_button[affiliation].set_sensitive(False) self.remove_button[affiliation].set_sensitive(False)
def on_affiliation_treeview_cursor_changed(self, widget, affiliation): def on_affiliation_treeview_cursor_changed(self, widget, affiliation):
@ -2504,19 +2504,19 @@ class GroupchatConfigWindow:
users_dict = {} users_dict = {}
actual_jid_list = [] actual_jid_list = []
model = self.affiliation_treeview[affiliation].get_model() model = self.affiliation_treeview[affiliation].get_model()
iter = model.get_iter_first() iter_ = model.get_iter_first()
# add new jid # add new jid
while iter: while iter_:
jid = model[iter][0].decode('utf-8') jid = model[iter_][0].decode('utf-8')
actual_jid_list.append(jid) actual_jid_list.append(jid)
if jid not in self.start_users_dict[affiliation] or \ if jid not in self.start_users_dict[affiliation] or \
(affiliation == 'outcast' and 'reason' in self.start_users_dict[affiliation]\ (affiliation == 'outcast' and 'reason' in self.start_users_dict[affiliation]\
[jid] and self.start_users_dict[affiliation][jid]\ [jid] and self.start_users_dict[affiliation][jid]\
['reason'] != model[iter][1].decode('utf-8')): ['reason'] != model[iter_][1].decode('utf-8')):
users_dict[jid] = {'affiliation': affiliation} users_dict[jid] = {'affiliation': affiliation}
if affiliation == 'outcast': if affiliation == 'outcast':
users_dict[jid]['reason'] = model[iter][1].decode('utf-8') users_dict[jid]['reason'] = model[iter_][1].decode('utf-8')
iter = model.iter_next(iter) iter_ = model.iter_next(iter_)
# remove removed one # remove removed one
for jid in self.start_users_dict[affiliation]: for jid in self.start_users_dict[affiliation]:
if jid not in actual_jid_list: if jid not in actual_jid_list:
@ -2642,7 +2642,7 @@ class ManageBookmarksWindow:
continue continue
if not gajim.connections[account].private_storage_supported: if not gajim.connections[account].private_storage_supported:
continue continue
iter = self.treestore.append(None, [None, account, None, None, iter_ = self.treestore.append(None, [None, account, None, None,
None, None, None, None]) None, None, None, None])
for bookmark in gajim.connections[account].bookmarks: for bookmark in gajim.connections[account].bookmarks:
@ -2662,7 +2662,7 @@ class ManageBookmarksWindow:
print_status = bookmark.get('print_status', '') print_status = bookmark.get('print_status', '')
if print_status not in ('', 'all', 'in_and_out', 'none'): if print_status not in ('', 'all', 'in_and_out', 'none'):
print_status = '' print_status = ''
self.treestore.append( iter, [ self.treestore.append(iter_, [
account, account,
bookmark['name'], bookmark['name'],
bookmark['jid'], bookmark['jid'],
@ -2714,12 +2714,12 @@ class ManageBookmarksWindow:
self.window.show_all() self.window.show_all()
def on_bookmarks_treeview_button_press_event(self, widget, event): def on_bookmarks_treeview_button_press_event(self, widget, event):
(model, iter) = self.selection.get_selected() (model, iter_) = self.selection.get_selected()
if not iter: if not iter_:
# Removed a bookmark before # Removed a bookmark before
return return
if model.iter_parent(iter): if model.iter_parent(iter_):
# The currently selected node is a bookmark # The currently selected node is a bookmark
return not self.check_valid_bookmark() return not self.check_valid_bookmark()
@ -2730,18 +2730,18 @@ class ManageBookmarksWindow:
'''Add a new bookmark.''' '''Add a new bookmark.'''
# Get the account that is currently used # Get the account that is currently used
# (the parent of the currently selected item) # (the parent of the currently selected item)
(model, iter) = self.selection.get_selected() (model, iter_) = self.selection.get_selected()
if not iter: # Nothing selected, do nothing if not iter_: # Nothing selected, do nothing
return return
parent = model.iter_parent(iter) parent = model.iter_parent(iter_)
if parent: if parent:
# We got a bookmark selected, so we add_to the parent # We got a bookmark selected, so we add_to the parent
add_to = parent add_to = parent
else: else:
# No parent, so we got an account -> add to this. # No parent, so we got an account -> add to this.
add_to = iter add_to = iter_
account = model[add_to][1].decode('utf-8') account = model[add_to][1].decode('utf-8')
nick = gajim.nicks[account] nick = gajim.nicks[account]
@ -2755,24 +2755,24 @@ class ManageBookmarksWindow:
''' '''
Remove selected bookmark. Remove selected bookmark.
''' '''
(model, iter) = self.selection.get_selected() (model, iter_) = self.selection.get_selected()
if not iter: # Nothing selected if not iter_: # Nothing selected
return return
if not model.iter_parent(iter): if not model.iter_parent(iter_):
# Don't remove account iters # Don't remove account iters
return return
model.remove(iter) model.remove(iter_)
self.clear_fields() self.clear_fields()
def check_valid_bookmark(self): def check_valid_bookmark(self):
''' '''
Check if all neccessary fields are entered correctly. Check if all neccessary fields are entered correctly.
''' '''
(model, iter) = self.selection.get_selected() (model, iter_) = self.selection.get_selected()
if not model.iter_parent(iter): if not model.iter_parent(iter_):
#Account data can't be changed #Account data can't be changed
return return
@ -2790,8 +2790,8 @@ class ManageBookmarksWindow:
Parse the treestore data into our new bookmarks array, Parse the treestore data into our new bookmarks array,
then send the new bookmarks to the server. then send the new bookmarks to the server.
''' '''
(model, iter) = self.selection.get_selected() (model, iter_) = self.selection.get_selected()
if iter and model.iter_parent(iter): if iter_ and model.iter_parent(iter_):
#bookmark selected, check it #bookmark selected, check it
if not self.check_valid_bookmark(): if not self.check_valid_bookmark():
return return
@ -2823,9 +2823,9 @@ class ManageBookmarksWindow:
''' '''
Fill in the bookmark's data into the fields. Fill in the bookmark's data into the fields.
''' '''
(model, iter) = selection.get_selected() (model, iter_) = selection.get_selected()
if not iter: if not iter_:
# After removing the last bookmark for one account # After removing the last bookmark for one account
# this will be None, so we will just: # this will be None, so we will just:
return return
@ -2834,7 +2834,7 @@ class ManageBookmarksWindow:
self.server_entry, self.pass_entry, self.autojoin_checkbutton, self.server_entry, self.pass_entry, self.autojoin_checkbutton,
self.minimize_checkbutton, self.print_status_combobox] self.minimize_checkbutton, self.print_status_combobox]
if model.iter_parent(iter): if model.iter_parent(iter_):
# make the fields sensitive # make the fields sensitive
for field in widgets: for field in widgets:
field.set_sensitive(True) field.set_sensitive(True)
@ -2847,8 +2847,8 @@ class ManageBookmarksWindow:
return return
# 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].decode('utf-8') room_jid = model[iter_][2].decode('utf-8')
try: try:
(room, server) = room_jid.split('@') (room, server) = room_jid.split('@')
except ValueError: except ValueError:
@ -2858,13 +2858,13 @@ class ManageBookmarksWindow:
self.room_entry.set_text(room) self.room_entry.set_text(room)
self.server_entry.set_text(server) self.server_entry.set_text(server)
self.autojoin_checkbutton.set_active(model[iter][3]) self.autojoin_checkbutton.set_active(model[iter_][3])
self.minimize_checkbutton.set_active(model[iter][4]) self.minimize_checkbutton.set_active(model[iter_][4])
# sensitive only if auto join is checked # sensitive only if auto join is checked
self.minimize_checkbutton.set_sensitive(model[iter][3]) self.minimize_checkbutton.set_sensitive(model[iter_][3])
if model[iter][5] is not None: if model[iter_][5] is not None:
password = model[iter][5].decode('utf-8') password = model[iter_][5].decode('utf-8')
else: else:
password = None password = None
@ -2872,66 +2872,66 @@ class ManageBookmarksWindow:
self.pass_entry.set_text(password) self.pass_entry.set_text(password)
else: else:
self.pass_entry.set_text('') self.pass_entry.set_text('')
nick = model[iter][6] nick = model[iter_][6]
if nick: if nick:
nick = nick.decode('utf-8') nick = nick.decode('utf-8')
self.nick_entry.set_text(nick) self.nick_entry.set_text(nick)
else: else:
self.nick_entry.set_text('') self.nick_entry.set_text('')
print_status = model[iter][7] print_status = model[iter_][7]
opts = sorted(self.option_list.keys()) opts = sorted(self.option_list.keys())
self.print_status_combobox.set_active(opts.index(print_status)) self.print_status_combobox.set_active(opts.index(print_status))
def on_title_entry_changed(self, widget): def on_title_entry_changed(self, widget):
(model, iter) = self.selection.get_selected() (model, iter_) = self.selection.get_selected()
if iter: # After removing a bookmark, we got nothing selected if iter_: # After removing a bookmark, we got nothing selected
if model.iter_parent(iter): if model.iter_parent(iter_):
# Don't clear the title field for account nodes # Don't clear the title field for account nodes
model[iter][1] = self.title_entry.get_text() model[iter_][1] = self.title_entry.get_text()
def on_nick_entry_changed(self, widget): def on_nick_entry_changed(self, widget):
(model, iter) = self.selection.get_selected() (model, iter_) = self.selection.get_selected()
if iter: if iter_:
model[iter][6] = self.nick_entry.get_text() model[iter_][6] = self.nick_entry.get_text()
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().decode('utf-8').strip() + '@' + \ room_jid = self.room_entry.get_text().decode('utf-8').strip() + '@' + \
self.server_entry.get_text().decode('utf-8').strip() self.server_entry.get_text().decode('utf-8').strip()
model[iter][2] = room_jid.replace(' ', '') model[iter_][2] = room_jid.replace(' ', '')
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().decode('utf-8') + '@' + \ room_jid = self.room_entry.get_text().decode('utf-8') + '@' + \
self.server_entry.get_text().decode('utf-8') 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):
(model, iter) = self.selection.get_selected() (model, iter_) = self.selection.get_selected()
if iter: if iter_:
model[iter][5] = self.pass_entry.get_text() model[iter_][5] = self.pass_entry.get_text()
def on_autojoin_checkbutton_toggled(self, widget): def on_autojoin_checkbutton_toggled(self, widget):
(model, iter) = self.selection.get_selected() (model, iter_) = self.selection.get_selected()
if iter: if iter_:
model[iter][3] = self.autojoin_checkbutton.get_active() model[iter_][3] = self.autojoin_checkbutton.get_active()
self.minimize_checkbutton.set_sensitive(model[iter][3]) self.minimize_checkbutton.set_sensitive(model[iter_][3])
def on_minimize_checkbutton_toggled(self, widget): def on_minimize_checkbutton_toggled(self, widget):
(model, iter) = self.selection.get_selected() (model, iter_) = self.selection.get_selected()
if iter: if iter_:
model[iter][4] = self.minimize_checkbutton.get_active() model[iter_][4] = self.minimize_checkbutton.get_active()
def on_print_status_combobox_changed(self, widget): def on_print_status_combobox_changed(self, widget):
active = widget.get_active() active = widget.get_active()
model = widget.get_model() model = widget.get_model()
print_status = model[active][1] print_status = model[active][1]
(model2, iter) = self.selection.get_selected() (model2, iter_) = self.selection.get_selected()
if iter: if iter_:
model2[iter][7] = print_status model2[iter_][7] = print_status
def clear_fields(self): def clear_fields(self):
widgets = [ self.title_entry, self.nick_entry, self.room_entry, widgets = [ self.title_entry, self.nick_entry, self.room_entry,
@ -3504,19 +3504,19 @@ class ManagePEPServicesWindow:
def node_removed(self, node): def node_removed(self, node):
model = self.treeview.get_model() model = self.treeview.get_model()
iter = model.get_iter_root() iter_ = model.get_iter_root()
while iter: while iter_:
if model[iter][0] == node: if model[iter_][0] == node:
model.remove(iter) model.remove(iter_)
break break
iter = model.get_iter_next(iter) iter_ = model.get_iter_next(iter_)
def on_delete_button_clicked(self, widget): def on_delete_button_clicked(self, widget):
selection = self.treeview.get_selection() selection = self.treeview.get_selection()
if not selection: if not selection:
return return
model, iter = selection.get_selected() model, iter_ = selection.get_selected()
node = model[iter][0] node = model[iter_][0]
our_jid = gajim.get_jid_from_account(self.account) our_jid = gajim.get_jid_from_account(self.account)
gajim.connections[self.account].send_pb_delete(our_jid, node) gajim.connections[self.account].send_pb_delete(our_jid, node)
@ -3524,8 +3524,8 @@ class ManagePEPServicesWindow:
selection = self.treeview.get_selection() selection = self.treeview.get_selection()
if not selection: if not selection:
return return
model, iter = selection.get_selected() model, iter_ = selection.get_selected()
node = model[iter][0] node = model[iter_][0]
our_jid = gajim.get_jid_from_account(self.account) our_jid = gajim.get_jid_from_account(self.account)
gajim.connections[self.account].request_pb_configuration(our_jid, node) gajim.connections[self.account].request_pb_configuration(our_jid, node)

View file

@ -79,9 +79,9 @@ class TextViewImage(gtk.Image):
def _get_selected(self): def _get_selected(self):
parent = self.get_parent() parent = self.get_parent()
if not parent or not self.anchor: return False if not parent or not self.anchor: return False
buffer = parent.get_buffer() buffer_ = parent.get_buffer()
position = buffer.get_iter_at_child_anchor(self.anchor) position = buffer_.get_iter_at_child_anchor(self.anchor)
bounds = buffer.get_selection_bounds() bounds = buffer_.get_selection_bounds()
if bounds and position.in_range(*bounds): if bounds and position.in_range(*bounds):
return True return True
else: else:
@ -106,9 +106,9 @@ class TextViewImage(gtk.Image):
self.queue_draw() self.queue_draw()
def _do_connect(self, widget, signal, callback): def _do_connect(self, widget, signal, callback):
id = widget.connect(signal, callback) id_ = widget.connect(signal, callback)
def disconnect(): def disconnect():
widget.disconnect(id) widget.disconnect(id_)
self._disconnect_funcs.append(disconnect) self._disconnect_funcs.append(disconnect)
def _disconnect_signals(self): def _disconnect_signals(self):
@ -196,18 +196,18 @@ class ConversationTextview:
self.auto_scrolling = False self.auto_scrolling = False
# connect signals # connect signals
id = self.tv.connect('motion_notify_event', id_ = self.tv.connect('motion_notify_event',
self.on_textview_motion_notify_event) self.on_textview_motion_notify_event)
self.handlers[id] = self.tv self.handlers[id_] = self.tv
id = self.tv.connect('populate_popup', self.on_textview_populate_popup) id_ = self.tv.connect('populate_popup', self.on_textview_populate_popup)
self.handlers[id] = self.tv self.handlers[id_] = self.tv
id = self.tv.connect('button_press_event', id_ = self.tv.connect('button_press_event',
self.on_textview_button_press_event) self.on_textview_button_press_event)
self.handlers[id] = self.tv self.handlers[id_] = self.tv
id = self.tv.connect('expose-event', id_ = self.tv.connect('expose-event',
self.on_textview_expose_event) self.on_textview_expose_event)
self.handlers[id] = self.tv self.handlers[id_] = self.tv
self.account = account self.account = account
@ -216,17 +216,17 @@ class ConversationTextview:
font = pango.FontDescription(gajim.config.get('conversation_font')) font = pango.FontDescription(gajim.config.get('conversation_font'))
self.tv.modify_font(font) self.tv.modify_font(font)
buffer = self.tv.get_buffer() buffer_ = self.tv.get_buffer()
end_iter = buffer.get_end_iter() end_iter = buffer_.get_end_iter()
buffer.create_mark('end', end_iter, False) buffer_.create_mark('end', end_iter, False)
self.tagIn = buffer.create_tag('incoming') self.tagIn = buffer_.create_tag('incoming')
color = gajim.config.get('inmsgcolor') color = gajim.config.get('inmsgcolor')
self.tagIn.set_property('foreground', color) self.tagIn.set_property('foreground', color)
self.tagOut = buffer.create_tag('outgoing') self.tagOut = buffer_.create_tag('outgoing')
color = gajim.config.get('outmsgcolor') color = gajim.config.get('outmsgcolor')
self.tagOut.set_property('foreground', color) self.tagOut.set_property('foreground', color)
self.tagStatus = buffer.create_tag('status') self.tagStatus = buffer_.create_tag('status')
color = gajim.config.get('statusmsgcolor') color = gajim.config.get('statusmsgcolor')
self.tagStatus.set_property('foreground', color) self.tagStatus.set_property('foreground', color)
@ -234,64 +234,64 @@ class ConversationTextview:
colors = colors.split(':') colors = colors.split(':')
for i,color in enumerate(colors): for i,color in enumerate(colors):
tagname = 'gc_nickname_color_' + str(i) tagname = 'gc_nickname_color_' + str(i)
tag = buffer.create_tag(tagname) tag = buffer_.create_tag(tagname)
tag.set_property('foreground', color) tag.set_property('foreground', color)
tag = buffer.create_tag('marked') tag = buffer_.create_tag('marked')
color = gajim.config.get('markedmsgcolor') color = gajim.config.get('markedmsgcolor')
tag.set_property('foreground', color) tag.set_property('foreground', color)
tag.set_property('weight', pango.WEIGHT_BOLD) tag.set_property('weight', pango.WEIGHT_BOLD)
tag = buffer.create_tag('time_sometimes') tag = buffer_.create_tag('time_sometimes')
tag.set_property('foreground', 'darkgrey') tag.set_property('foreground', 'darkgrey')
tag.set_property('scale', pango.SCALE_SMALL) tag.set_property('scale', pango.SCALE_SMALL)
tag.set_property('justification', gtk.JUSTIFY_CENTER) tag.set_property('justification', gtk.JUSTIFY_CENTER)
tag = buffer.create_tag('small') tag = buffer_.create_tag('small')
tag.set_property('scale', pango.SCALE_SMALL) tag.set_property('scale', pango.SCALE_SMALL)
tag = buffer.create_tag('restored_message') tag = buffer_.create_tag('restored_message')
color = gajim.config.get('restored_messages_color') color = gajim.config.get('restored_messages_color')
tag.set_property('foreground', color) tag.set_property('foreground', color)
self.tagURL = buffer.create_tag('url') self.tagURL = buffer_.create_tag('url')
color = gajim.config.get('urlmsgcolor') color = gajim.config.get('urlmsgcolor')
self.tagURL.set_property('foreground', color) self.tagURL.set_property('foreground', color)
self.tagURL.set_property('underline', pango.UNDERLINE_SINGLE) self.tagURL.set_property('underline', pango.UNDERLINE_SINGLE)
id = self.tagURL.connect('event', self.hyperlink_handler, 'url') id_ = self.tagURL.connect('event', self.hyperlink_handler, 'url')
self.handlers[id] = self.tagURL self.handlers[id_] = self.tagURL
self.tagMail = buffer.create_tag('mail') self.tagMail = buffer_.create_tag('mail')
self.tagMail.set_property('foreground', color) self.tagMail.set_property('foreground', color)
self.tagMail.set_property('underline', pango.UNDERLINE_SINGLE) self.tagMail.set_property('underline', pango.UNDERLINE_SINGLE)
id = self.tagMail.connect('event', self.hyperlink_handler, 'mail') id_ = self.tagMail.connect('event', self.hyperlink_handler, 'mail')
self.handlers[id] = self.tagMail self.handlers[id_] = self.tagMail
self.tagXMPP = buffer.create_tag('xmpp') self.tagXMPP = buffer_.create_tag('xmpp')
self.tagXMPP.set_property('foreground', color) self.tagXMPP.set_property('foreground', color)
self.tagXMPP.set_property('underline', pango.UNDERLINE_SINGLE) self.tagXMPP.set_property('underline', pango.UNDERLINE_SINGLE)
id = self.tagXMPP.connect('event', self.hyperlink_handler, 'xmpp') id_ = self.tagXMPP.connect('event', self.hyperlink_handler, 'xmpp')
self.handlers[id] = self.tagXMPP self.handlers[id_] = self.tagXMPP
self.tagSthAtSth = buffer.create_tag('sth_at_sth') self.tagSthAtSth = buffer_.create_tag('sth_at_sth')
self.tagSthAtSth.set_property('foreground', color) self.tagSthAtSth.set_property('foreground', color)
self.tagSthAtSth.set_property('underline', pango.UNDERLINE_SINGLE) self.tagSthAtSth.set_property('underline', pango.UNDERLINE_SINGLE)
id = self.tagSthAtSth.connect('event', self.hyperlink_handler, id_ = self.tagSthAtSth.connect('event', self.hyperlink_handler,
'sth_at_sth') 'sth_at_sth')
self.handlers[id] = self.tagSthAtSth self.handlers[id_] = self.tagSthAtSth
tag = buffer.create_tag('bold') tag = buffer_.create_tag('bold')
tag.set_property('weight', pango.WEIGHT_BOLD) tag.set_property('weight', pango.WEIGHT_BOLD)
tag = buffer.create_tag('italic') tag = buffer_.create_tag('italic')
tag.set_property('style', pango.STYLE_ITALIC) tag.set_property('style', pango.STYLE_ITALIC)
tag = buffer.create_tag('underline') tag = buffer_.create_tag('underline')
tag.set_property('underline', pango.UNDERLINE_SINGLE) tag.set_property('underline', pango.UNDERLINE_SINGLE)
buffer.create_tag('focus-out-line', justification = gtk.JUSTIFY_CENTER) buffer_.create_tag('focus-out-line', justification = gtk.JUSTIFY_CENTER)
tag = buffer.create_tag('xep0184-warning') tag = buffer_.create_tag('xep0184-warning')
# One mark at the begining then 2 marks between each lines # One mark at the begining then 2 marks between each lines
size = gajim.config.get('max_conversation_lines') size = gajim.config.get('max_conversation_lines')
@ -327,8 +327,8 @@ class ConversationTextview:
self.tagMail.set_property('foreground', gajim.config.get('urlmsgcolor')) self.tagMail.set_property('foreground', gajim.config.get('urlmsgcolor'))
def at_the_end(self): def at_the_end(self):
buffer = self.tv.get_buffer() buffer_ = self.tv.get_buffer()
end_iter = buffer.get_end_iter() end_iter = buffer_.get_end_iter()
end_rect = self.tv.get_iter_location(end_iter) end_rect = self.tv.get_iter_location(end_iter)
visible_rect = self.tv.get_visible_rect() visible_rect = self.tv.get_visible_rect()
if end_rect.y <= (visible_rect.y + visible_rect.height): if end_rect.y <= (visible_rect.y + visible_rect.height):
@ -383,8 +383,8 @@ class ConversationTextview:
def scroll_to_end(self): def scroll_to_end(self):
parent = self.tv.get_parent() parent = self.tv.get_parent()
buffer = self.tv.get_buffer() buffer_ = self.tv.get_buffer()
end_mark = buffer.get_mark('end') end_mark = buffer_.get_mark('end')
if not end_mark: if not end_mark:
return False return False
self.auto_scrolling = True self.auto_scrolling = True
@ -397,8 +397,8 @@ class ConversationTextview:
def bring_scroll_to_end(self, diff_y = 0, def bring_scroll_to_end(self, diff_y = 0,
use_smooth=gajim.config.get('use_smooth_scrolling')): use_smooth=gajim.config.get('use_smooth_scrolling')):
''' scrolls to the end of textview if end is not visible ''' ''' scrolls to the end of textview if end is not visible '''
buffer = self.tv.get_buffer() buffer_ = self.tv.get_buffer()
end_iter = buffer.get_end_iter() end_iter = buffer_.get_end_iter()
end_rect = self.tv.get_iter_location(end_iter) end_rect = self.tv.get_iter_location(end_iter)
visible_rect = self.tv.get_visible_rect() visible_rect = self.tv.get_visible_rect()
# scroll only if expected end is not visible # scroll only if expected end is not visible
@ -409,8 +409,8 @@ class ConversationTextview:
gobject.idle_add(self.scroll_to_end_iter) gobject.idle_add(self.scroll_to_end_iter)
def scroll_to_end_iter(self): def scroll_to_end_iter(self):
buffer = self.tv.get_buffer() buffer_ = self.tv.get_buffer()
end_iter = buffer.get_end_iter() end_iter = buffer_.get_end_iter()
if not end_iter: if not end_iter:
return False return False
self.tv.scroll_to_iter(end_iter, 0, False, 1, 1) self.tv.scroll_to_iter(end_iter, 0, False, 1, 1)
@ -426,11 +426,11 @@ class ConversationTextview:
if id_ in self.xep0184_marks: if id_ in self.xep0184_marks:
return return
buffer = self.tv.get_buffer() buffer_ = self.tv.get_buffer()
buffer.begin_user_action() buffer_.begin_user_action()
self.xep0184_marks[id_] = buffer.create_mark(None, self.xep0184_marks[id_] = buffer_.create_mark(None,
buffer.get_end_iter(), left_gravity=True) buffer_.get_end_iter(), left_gravity=True)
self.xep0184_shown[id_] = NOT_SHOWN self.xep0184_shown[id_] = NOT_SHOWN
def show_it(): def show_it():
@ -438,24 +438,24 @@ class ConversationTextview:
self.xep0184_shown[id_] == ALREADY_RECEIVED: self.xep0184_shown[id_] == ALREADY_RECEIVED:
return False return False
end_iter = buffer.get_iter_at_mark( end_iter = buffer_.get_iter_at_mark(
self.xep0184_marks[id_]) self.xep0184_marks[id_])
buffer.insert(end_iter, ' ') buffer_.insert(end_iter, ' ')
buffer.insert_pixbuf(end_iter, buffer_.insert_pixbuf(end_iter,
ConversationTextview.XEP0184_WARNING_PIXBUF) ConversationTextview.XEP0184_WARNING_PIXBUF)
before_img_iter = buffer.get_iter_at_mark( before_img_iter = buffer_.get_iter_at_mark(
self.xep0184_marks[id_]) self.xep0184_marks[id_])
before_img_iter.forward_char() before_img_iter.forward_char()
post_img_iter = before_img_iter.copy() post_img_iter = before_img_iter.copy()
post_img_iter.forward_char() post_img_iter.forward_char()
buffer.apply_tag_by_name('xep0184-warning', before_img_iter, buffer_.apply_tag_by_name('xep0184-warning', before_img_iter,
post_img_iter) post_img_iter)
self.xep0184_shown[id_] = SHOWN self.xep0184_shown[id_] = SHOWN
return False return False
gobject.timeout_add_seconds(3, show_it) gobject.timeout_add_seconds(3, show_it)
buffer.end_user_action() buffer_.end_user_action()
def hide_xep0184_warning(self, id_): def hide_xep0184_warning(self, id_):
if id_ not in self.xep0184_marks: if id_ not in self.xep0184_marks:
@ -465,20 +465,20 @@ class ConversationTextview:
self.xep0184_shown[id_] = ALREADY_RECEIVED self.xep0184_shown[id_] = ALREADY_RECEIVED
return return
buffer = self.tv.get_buffer() buffer_ = self.tv.get_buffer()
buffer.begin_user_action() buffer_.begin_user_action()
begin_iter = buffer.get_iter_at_mark(self.xep0184_marks[id_]) begin_iter = buffer_.get_iter_at_mark(self.xep0184_marks[id_])
end_iter = begin_iter.copy() end_iter = begin_iter.copy()
# XXX: Is there a nicer way? # XXX: Is there a nicer way?
end_iter.forward_char() end_iter.forward_char()
end_iter.forward_char() end_iter.forward_char()
buffer.delete(begin_iter, end_iter) buffer_.delete(begin_iter, end_iter)
buffer.delete_mark(self.xep0184_marks[id_]) buffer_.delete_mark(self.xep0184_marks[id_])
buffer.end_user_action() buffer_.end_user_action()
del self.xep0184_marks[id_] del self.xep0184_marks[id_]
del self.xep0184_shown[id_] del self.xep0184_shown[id_]
@ -490,57 +490,57 @@ class ConversationTextview:
return return
print_focus_out_line = False print_focus_out_line = False
buffer = self.tv.get_buffer() buffer_ = self.tv.get_buffer()
if self.focus_out_end_mark is None: if self.focus_out_end_mark is None:
# this happens only first time we focus out on this room # this happens only first time we focus out on this room
print_focus_out_line = True print_focus_out_line = True
else: else:
focus_out_end_iter = buffer.get_iter_at_mark(self.focus_out_end_mark) focus_out_end_iter = buffer_.get_iter_at_mark(self.focus_out_end_mark)
focus_out_end_iter_offset = focus_out_end_iter.get_offset() focus_out_end_iter_offset = focus_out_end_iter.get_offset()
if focus_out_end_iter_offset != buffer.get_end_iter().get_offset(): if focus_out_end_iter_offset != buffer_.get_end_iter().get_offset():
# this means after last-focus something was printed # this means after last-focus something was printed
# (else end_iter's offset is the same as before) # (else end_iter's offset is the same as before)
# only then print ---- line (eg. we avoid printing many following # only then print ---- line (eg. we avoid printing many following
# ---- lines) # ---- lines)
print_focus_out_line = True print_focus_out_line = True
if print_focus_out_line and buffer.get_char_count() > 0: if print_focus_out_line and buffer_.get_char_count() > 0:
buffer.begin_user_action() buffer_.begin_user_action()
# remove previous focus out line if such focus out line exists # remove previous focus out line if such focus out line exists
if self.focus_out_end_mark is not None: if self.focus_out_end_mark is not None:
end_iter_for_previous_line = buffer.get_iter_at_mark( end_iter_for_previous_line = buffer_.get_iter_at_mark(
self.focus_out_end_mark) self.focus_out_end_mark)
begin_iter_for_previous_line = end_iter_for_previous_line.copy() begin_iter_for_previous_line = end_iter_for_previous_line.copy()
# img_char+1 (the '\n') # img_char+1 (the '\n')
begin_iter_for_previous_line.backward_chars(2) begin_iter_for_previous_line.backward_chars(2)
# remove focus out line # remove focus out line
buffer.delete(begin_iter_for_previous_line, buffer_.delete(begin_iter_for_previous_line,
end_iter_for_previous_line) end_iter_for_previous_line)
buffer.delete_mark(self.focus_out_end_mark) buffer_.delete_mark(self.focus_out_end_mark)
# add the new focus out line # add the new focus out line
end_iter = buffer.get_end_iter() end_iter = buffer_.get_end_iter()
buffer.insert(end_iter, '\n') buffer_.insert(end_iter, '\n')
buffer.insert_pixbuf(end_iter, buffer_.insert_pixbuf(end_iter,
ConversationTextview.FOCUS_OUT_LINE_PIXBUF) ConversationTextview.FOCUS_OUT_LINE_PIXBUF)
end_iter = buffer.get_end_iter() end_iter = buffer_.get_end_iter()
before_img_iter = end_iter.copy() before_img_iter = end_iter.copy()
# one char back (an image also takes one char) # one char back (an image also takes one char)
before_img_iter.backward_char() before_img_iter.backward_char()
buffer.apply_tag_by_name('focus-out-line', before_img_iter, end_iter) buffer_.apply_tag_by_name('focus-out-line', before_img_iter, end_iter)
self.allow_focus_out_line = False self.allow_focus_out_line = False
# update the iter we hold to make comparison the next time # update the iter we hold to make comparison the next time
self.focus_out_end_mark = buffer.create_mark(None, self.focus_out_end_mark = buffer_.create_mark(None,
buffer.get_end_iter(), left_gravity=True) buffer_.get_end_iter(), left_gravity=True)
buffer.end_user_action() buffer_.end_user_action()
# scroll to the end (via idle in case the scrollbar has appeared) # scroll to the end (via idle in case the scrollbar has appeared)
gobject.idle_add(self.scroll_to_end) gobject.idle_add(self.scroll_to_end)
@ -653,9 +653,9 @@ class ConversationTextview:
def clear(self, tv = None): def clear(self, tv = None):
'''clear text in the textview''' '''clear text in the textview'''
buffer = self.tv.get_buffer() buffer_ = self.tv.get_buffer()
start, end = buffer.get_bounds() start, end = buffer_.get_bounds()
buffer.delete(start, end) buffer_.delete(start, end)
size = gajim.config.get('max_conversation_lines') size = gajim.config.get('max_conversation_lines')
size = 2 * size - 1 size = 2 * size - 1
self.marks_queue = Queue.Queue(size) self.marks_queue = Queue.Queue(size)
@ -679,8 +679,8 @@ class ConversationTextview:
item = gtk.ImageMenuItem(gtk.STOCK_CLEAR) item = gtk.ImageMenuItem(gtk.STOCK_CLEAR)
menu.prepend(item) menu.prepend(item)
id = item.connect('activate', self.clear) id_ = item.connect('activate', self.clear)
self.handlers[id] = item self.handlers[id_] = item
if self.selected_phrase: if self.selected_phrase:
if not separator_menuitem_was_added: if not separator_menuitem_was_added:
@ -702,8 +702,8 @@ class ConversationTextview:
link = 'http://%s.wikipedia.org/wiki/Special:Search?search=%s'\ link = 'http://%s.wikipedia.org/wiki/Special:Search?search=%s'\
% (gajim.LANG, self.selected_phrase) % (gajim.LANG, self.selected_phrase)
item = gtk.MenuItem(_('Read _Wikipedia Article')) item = gtk.MenuItem(_('Read _Wikipedia Article'))
id = item.connect('activate', self.visit_url_from_menuitem, link) id_ = item.connect('activate', self.visit_url_from_menuitem, link)
self.handlers[id] = item self.handlers[id_] = item
submenu.append(item) submenu.append(item)
item = gtk.MenuItem(_('Look it up in _Dictionary')) item = gtk.MenuItem(_('Look it up in _Dictionary'))
@ -717,8 +717,8 @@ class ConversationTextview:
else: else:
link = 'http://%s.wiktionary.org/wiki/Special:Search?search=%s'\ link = 'http://%s.wiktionary.org/wiki/Special:Search?search=%s'\
% (gajim.LANG, self.selected_phrase) % (gajim.LANG, self.selected_phrase)
id = item.connect('activate', self.visit_url_from_menuitem, link) id_ = item.connect('activate', self.visit_url_from_menuitem, link)
self.handlers[id] = item self.handlers[id_] = item
else: else:
if dict_link.find('%s') == -1: if dict_link.find('%s') == -1:
# we must have %s in the url if not WIKTIONARY # we must have %s in the url if not WIKTIONARY
@ -727,9 +727,9 @@ class ConversationTextview:
item.set_property('sensitive', False) item.set_property('sensitive', False)
else: else:
link = dict_link % self.selected_phrase link = dict_link % self.selected_phrase
id = item.connect('activate', self.visit_url_from_menuitem, id_ = item.connect('activate', self.visit_url_from_menuitem,
link) link)
self.handlers[id] = item self.handlers[id_] = item
submenu.append(item) submenu.append(item)
@ -741,13 +741,13 @@ class ConversationTextview:
else: else:
item = gtk.MenuItem(_('Web _Search for it')) item = gtk.MenuItem(_('Web _Search for it'))
link = search_link % self.selected_phrase link = search_link % self.selected_phrase
id = item.connect('activate', self.visit_url_from_menuitem, link) id_ = item.connect('activate', self.visit_url_from_menuitem, link)
self.handlers[id] = item self.handlers[id_] = item
submenu.append(item) submenu.append(item)
item = gtk.MenuItem(_('Open as _Link')) item = gtk.MenuItem(_('Open as _Link'))
id = item.connect('activate', self.visit_url_from_menuitem, link) id_ = item.connect('activate', self.visit_url_from_menuitem, link)
self.handlers[id] = item self.handlers[id_] = item
submenu.append(item) submenu.append(item)
menu.show_all() menu.show_all()
@ -762,8 +762,8 @@ class ConversationTextview:
x, y = self.tv.window_to_buffer_coords(gtk.TEXT_WINDOW_TEXT, x, y = self.tv.window_to_buffer_coords(gtk.TEXT_WINDOW_TEXT,
int(event.x), int(event.y)) int(event.x), int(event.y))
iter = self.tv.get_iter_at_location(x, y) iter_ = self.tv.get_iter_at_location(x, y)
tags = iter.get_tags() tags = iter_.get_tags()
if tags: # we clicked on sth special (it can be status message too) if tags: # we clicked on sth special (it can be status message too)
@ -775,22 +775,22 @@ class ConversationTextview:
# we check if sth was selected and if it was we assign # we check if sth was selected and if it was we assign
# selected_phrase variable # selected_phrase variable
# so on_conversation_textview_populate_popup can use it # so on_conversation_textview_populate_popup can use it
buffer = self.tv.get_buffer() buffer_ = self.tv.get_buffer()
return_val = buffer.get_selection_bounds() return_val = buffer_.get_selection_bounds()
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).decode( self.selected_phrase = buffer_.get_text(start_sel, finish_sel).decode(
'utf-8') 'utf-8')
elif ord(iter.get_char()) > 31: elif ord(iter_.get_char()) > 31:
# we clicked on a word, do as if it's selected for context menu # we clicked on a word, do as if it's selected for context menu
start_sel = iter.copy() start_sel = iter_.copy()
if not start_sel.starts_word(): if not start_sel.starts_word():
start_sel.backward_word_start() start_sel.backward_word_start()
finish_sel = iter.copy() finish_sel = iter_.copy()
if not finish_sel.ends_word(): if not finish_sel.ends_word():
finish_sel.forward_word_end() finish_sel.forward_word_end()
self.selected_phrase = buffer.get_text(start_sel, finish_sel).decode( self.selected_phrase = buffer_.get_text(start_sel, finish_sel).decode(
'utf-8') 'utf-8')
def on_open_link_activate(self, widget, kind, text): def on_open_link_activate(self, widget, kind, text):
@ -823,11 +823,11 @@ class ConversationTextview:
menu = xml.get_widget('chat_context_menu') menu = xml.get_widget('chat_context_menu')
childs = menu.get_children() childs = menu.get_children()
if kind == 'url': if kind == 'url':
id = childs[0].connect('activate', self.on_copy_link_activate, text) id_ = childs[0].connect('activate', self.on_copy_link_activate, text)
self.handlers[id] = childs[0] self.handlers[id_] = childs[0]
id = childs[1].connect('activate', self.on_open_link_activate, kind, id_ = childs[1].connect('activate', self.on_open_link_activate, kind,
text) text)
self.handlers[id] = childs[1] self.handlers[id_] = childs[1]
childs[2].hide() # copy mail address childs[2].hide() # copy mail address
childs[3].hide() # open mail composer childs[3].hide() # open mail composer
childs[4].hide() # jid section separator childs[4].hide() # jid section separator
@ -844,16 +844,16 @@ class ConversationTextview:
text = text.lower() text = text.lower()
if text.startswith('xmpp:'): if text.startswith('xmpp:'):
text = text[5:] text = text[5:]
id = childs[2].connect('activate', self.on_copy_link_activate, text) id_ = childs[2].connect('activate', self.on_copy_link_activate, text)
self.handlers[id] = childs[2] self.handlers[id_] = childs[2]
id = childs[3].connect('activate', self.on_open_link_activate, kind, id_ = childs[3].connect('activate', self.on_open_link_activate, kind,
text) text)
self.handlers[id] = childs[3] self.handlers[id_] = childs[3]
id = childs[5].connect('activate', self.on_start_chat_activate, text) id_ = childs[5].connect('activate', self.on_start_chat_activate, text)
self.handlers[id] = childs[5] self.handlers[id_] = childs[5]
id = childs[6].connect('activate', id_ = childs[6].connect('activate',
self.on_join_group_chat_menuitem_activate, text) self.on_join_group_chat_menuitem_activate, text)
self.handlers[id] = childs[6] self.handlers[id_] = childs[6]
allow_add = False allow_add = False
c = gajim.contacts.get_first_contact_from_jid(self.account, text) c = gajim.contacts.get_first_contact_from_jid(self.account, text)
@ -864,9 +864,9 @@ class ConversationTextview:
allow_add = True allow_add = True
if allow_add: if allow_add:
id = childs[7].connect('activate', self.on_add_to_roster_activate, id_ = childs[7].connect('activate', self.on_add_to_roster_activate,
text) text)
self.handlers[id] = childs[7] self.handlers[id_] = childs[7]
childs[7].show() # show add to roster menuitem childs[7].show() # show add to roster menuitem
else: else:
childs[7].hide() # hide add to roster menuitem childs[7].hide() # hide add to roster menuitem
@ -933,7 +933,7 @@ class ConversationTextview:
after *last* special text, so we can print it in after *last* special text, so we can print it in
print_conversation_line()''' print_conversation_line()'''
buffer = self.tv.get_buffer() buffer_ = self.tv.get_buffer()
start = 0 start = 0
end = 0 end = 0
@ -949,9 +949,9 @@ class ConversationTextview:
special_text = otext[start:end] special_text = otext[start:end]
if start != 0: if start != 0:
text_before_special_text = otext[index:start] text_before_special_text = otext[index:start]
end_iter = buffer.get_end_iter() end_iter = buffer_.get_end_iter()
# we insert normal text # we insert normal text
buffer.insert_with_tags_by_name(end_iter, buffer_.insert_with_tags_by_name(end_iter,
text_before_special_text, *other_tags) text_before_special_text, *other_tags)
index = end # update index index = end # update index
@ -997,10 +997,10 @@ class ConversationTextview:
texstr += str_ texstr += str_
texstr += '\\end{gather*}\\end{large}\\end{document}' texstr += '\\end{gather*}\\end{large}\\end{document}'
file = open(os.path.join(tmpfile + '.tex'), 'w+') file_ = open(os.path.join(tmpfile + '.tex'), 'w+')
file.write(texstr) file_.write(texstr)
file.flush() file_.flush()
file.close() file_.close()
try: try:
if os.name == 'nt': if os.name == 'nt':
@ -1057,7 +1057,7 @@ class ConversationTextview:
text_is_valid_uri = False text_is_valid_uri = False
show_ascii_formatting_chars = \ show_ascii_formatting_chars = \
gajim.config.get('show_ascii_formatting_chars') gajim.config.get('show_ascii_formatting_chars')
buffer = self.tv.get_buffer() buffer_ = self.tv.get_buffer()
# Check if we accept this as an uri # Check if we accept this as an uri
schemes = gajim.config.get('uri_schemes').split() schemes = gajim.config.get('uri_schemes').split()
@ -1070,8 +1070,8 @@ class ConversationTextview:
possible_emot_ascii_caps in gajim.interface.emoticons.keys(): possible_emot_ascii_caps in gajim.interface.emoticons.keys():
# it's an emoticon # it's an emoticon
emot_ascii = possible_emot_ascii_caps emot_ascii = possible_emot_ascii_caps
end_iter = buffer.get_end_iter() end_iter = buffer_.get_end_iter()
anchor = buffer.create_child_anchor(end_iter) anchor = buffer_.create_child_anchor(end_iter)
img = TextViewImage(anchor) img = TextViewImage(anchor)
animations = gajim.interface.emoticons_animations animations = gajim.interface.emoticons_animations
if not emot_ascii in animations: if not emot_ascii in animations:
@ -1150,8 +1150,8 @@ class ConversationTextview:
gobject.idle_add(self.print_conversation_line, str(e), '', 'info', gobject.idle_add(self.print_conversation_line, str(e), '', 'info',
'', None) '', None)
imagepath = None imagepath = None
end_iter = buffer.get_end_iter() end_iter = buffer_.get_end_iter()
anchor = buffer.create_child_anchor(end_iter) anchor = buffer_.create_child_anchor(end_iter)
if imagepath is not None: if imagepath is not None:
img = gtk.Image() img = gtk.Image()
img.set_from_file(imagepath) img.set_from_file(imagepath)
@ -1164,41 +1164,41 @@ class ConversationTextview:
except Exception: except Exception:
pass pass
else: else:
buffer.insert(end_iter, special_text) buffer_.insert(end_iter, special_text)
use_other_tags = False use_other_tags = False
else: else:
# It's nothing special # It's nothing special
if use_other_tags: if use_other_tags:
end_iter = buffer.get_end_iter() end_iter = buffer_.get_end_iter()
buffer.insert_with_tags_by_name(end_iter, special_text, *other_tags) buffer_.insert_with_tags_by_name(end_iter, special_text, *other_tags)
if len(tags) > 0: if len(tags) > 0:
end_iter = buffer.get_end_iter() end_iter = buffer_.get_end_iter()
all_tags = tags[:] all_tags = tags[:]
if use_other_tags: if use_other_tags:
all_tags += other_tags all_tags += other_tags
buffer.insert_with_tags_by_name(end_iter, special_text, *all_tags) buffer_.insert_with_tags_by_name(end_iter, special_text, *all_tags)
def print_empty_line(self): def print_empty_line(self):
buffer = self.tv.get_buffer() buffer_ = self.tv.get_buffer()
end_iter = buffer.get_end_iter() end_iter = buffer_.get_end_iter()
buffer.insert_with_tags_by_name(end_iter, '\n', 'eol') buffer_.insert_with_tags_by_name(end_iter, '\n', 'eol')
def print_conversation_line(self, text, jid, kind, name, tim, def print_conversation_line(self, text, jid, kind, name, tim,
other_tags_for_name=[], other_tags_for_time=[], other_tags_for_text=[], other_tags_for_name=[], other_tags_for_time=[], other_tags_for_text=[],
subject=None, old_kind=None, xhtml=None, simple=False): subject=None, old_kind=None, xhtml=None, simple=False):
'''prints 'chat' type messages''' '''prints 'chat' type messages'''
buffer = self.tv.get_buffer() buffer_ = self.tv.get_buffer()
buffer.begin_user_action() buffer_.begin_user_action()
if self.marks_queue.full(): if self.marks_queue.full():
# remove oldest line # remove oldest line
m1 = self.marks_queue.get() m1 = self.marks_queue.get()
m2 = self.marks_queue.get() m2 = self.marks_queue.get()
i1 = buffer.get_iter_at_mark(m1) i1 = buffer_.get_iter_at_mark(m1)
i2 = buffer.get_iter_at_mark(m2) i2 = buffer_.get_iter_at_mark(m2)
buffer.delete(i1, i2) buffer_.delete(i1, i2)
buffer.delete_mark(m1) buffer_.delete_mark(m1)
end_iter = buffer.get_end_iter() end_iter = buffer_.get_end_iter()
at_the_end = False at_the_end = False
if self.at_the_end(): if self.at_the_end():
at_the_end = True at_the_end = True
@ -1206,13 +1206,13 @@ class ConversationTextview:
# Create one mark and add it to queue once if it's the first line # Create one mark and add it to queue once if it's the first line
# else twice (one for end bound, one for start bound) # else twice (one for end bound, one for start bound)
mark = None mark = None
if buffer.get_char_count() > 0: if buffer_.get_char_count() > 0:
if not simple: if not simple:
buffer.insert_with_tags_by_name(end_iter, '\n', 'eol') buffer_.insert_with_tags_by_name(end_iter, '\n', 'eol')
mark = buffer.create_mark(None, end_iter, left_gravity=True) mark = buffer_.create_mark(None, end_iter, left_gravity=True)
self.marks_queue.put(mark) self.marks_queue.put(mark)
if not mark: if not mark:
mark = buffer.create_mark(None, end_iter, left_gravity=True) mark = buffer_.create_mark(None, end_iter, left_gravity=True)
self.marks_queue.put(mark) self.marks_queue.put(mark)
if kind == 'incoming_queue': if kind == 'incoming_queue':
kind = 'incoming' kind = 'incoming'
@ -1226,7 +1226,7 @@ class ConversationTextview:
if current_print_time == 'always' and kind != 'info' and not simple: if current_print_time == 'always' and kind != 'info' and not simple:
timestamp_str = self.get_time_to_show(tim) timestamp_str = self.get_time_to_show(tim)
timestamp = time.strftime(timestamp_str, tim) timestamp = time.strftime(timestamp_str, tim)
buffer.insert_with_tags_by_name(end_iter, timestamp, buffer_.insert_with_tags_by_name(end_iter, timestamp,
*other_tags_for_time) *other_tags_for_time)
elif current_print_time == 'sometimes' and kind != 'info' and not simple: elif current_print_time == 'sometimes' and kind != 'info' and not simple:
every_foo_seconds = 60 * gajim.config.get( every_foo_seconds = 60 * gajim.config.get(
@ -1234,7 +1234,7 @@ class ConversationTextview:
seconds_passed = time.mktime(tim) - self.last_time_printout seconds_passed = time.mktime(tim) - self.last_time_printout
if seconds_passed > every_foo_seconds: if seconds_passed > every_foo_seconds:
self.last_time_printout = time.mktime(tim) self.last_time_printout = time.mktime(tim)
end_iter = buffer.get_end_iter() end_iter = buffer_.get_end_iter()
if gajim.config.get('print_time_fuzzy') > 0: if gajim.config.get('print_time_fuzzy') > 0:
fc = FuzzyClock() fc = FuzzyClock()
fc.setTime(time.strftime('%H:%M', tim)) fc.setTime(time.strftime('%H:%M', tim))
@ -1242,7 +1242,7 @@ class ConversationTextview:
tim_format = ft.decode(locale.getpreferredencoding()) tim_format = ft.decode(locale.getpreferredencoding())
else: else:
tim_format = self.get_time_to_show(tim) tim_format = self.get_time_to_show(tim)
buffer.insert_with_tags_by_name(end_iter, tim_format + '\n', buffer_.insert_with_tags_by_name(end_iter, tim_format + '\n',
'time_sometimes') 'time_sometimes')
# kind = info, we print things as if it was a status: same color, ... # kind = info, we print things as if it was a status: same color, ...
if kind == 'info': if kind == 'info':
@ -1273,7 +1273,7 @@ class ConversationTextview:
else: else:
gobject.idle_add(self.scroll_to_end) gobject.idle_add(self.scroll_to_end)
buffer.end_user_action() buffer_.end_user_action()
def get_time_to_show(self, tim): def get_time_to_show(self, tim):
'''Get the time, with the day before if needed and return it. '''Get the time, with the day before if needed and return it.
@ -1312,8 +1312,8 @@ class ConversationTextview:
def print_name(self, name, kind, other_tags_for_name): def print_name(self, name, kind, other_tags_for_name):
if name: if name:
buffer = self.tv.get_buffer() buffer_ = self.tv.get_buffer()
end_iter = buffer.get_end_iter() end_iter = buffer_.get_end_iter()
name_tags = other_tags_for_name[:] # create a new list name_tags = other_tags_for_name[:] # create a new list
name_tags.append(kind) name_tags.append(kind)
before_str = gajim.config.get('before_nickname') before_str = gajim.config.get('before_nickname')
@ -1321,14 +1321,14 @@ class ConversationTextview:
after_str = gajim.config.get('after_nickname') after_str = gajim.config.get('after_nickname')
after_str = helpers.from_one_line(after_str) after_str = helpers.from_one_line(after_str)
format = before_str + name + after_str + ' ' format = before_str + name + after_str + ' '
buffer.insert_with_tags_by_name(end_iter, format, *name_tags) buffer_.insert_with_tags_by_name(end_iter, format, *name_tags)
def print_subject(self, subject): def print_subject(self, subject):
if subject: # if we have subject, show it too! if subject: # if we have subject, show it too!
subject = _('Subject: %s\n') % subject subject = _('Subject: %s\n') % subject
buffer = self.tv.get_buffer() buffer_ = self.tv.get_buffer()
end_iter = buffer.get_end_iter() end_iter = buffer_.get_end_iter()
buffer.insert(end_iter, subject) buffer_.insert(end_iter, subject)
self.print_empty_line() self.print_empty_line()
def print_real_text(self, text, text_tags=[], name=None, xhtml=None): def print_real_text(self, text, text_tags=[], name=None, xhtml=None):
@ -1343,7 +1343,7 @@ class ConversationTextview:
gajim.log.debug(str('Error processing xhtml') + str(e)) gajim.log.debug(str('Error processing xhtml') + str(e))
gajim.log.debug(str('with |' + xhtml + '|')) gajim.log.debug(str('with |' + xhtml + '|'))
buffer = self.tv.get_buffer() buffer_ = self.tv.get_buffer()
# /me is replaced by name if name is given # /me is replaced by name if name is given
if name and (text.startswith('/me ') or text.startswith('/me\n')): if name and (text.startswith('/me ') or text.startswith('/me\n')):
text = '* ' + name + text[3:] text = '* ' + name + text[3:]
@ -1352,7 +1352,7 @@ class ConversationTextview:
index = self.detect_and_print_special_text(text, text_tags) index = self.detect_and_print_special_text(text, text_tags)
# add the rest of text located in the index and after # add the rest of text located in the index and after
end_iter = buffer.get_end_iter() end_iter = buffer_.get_end_iter()
buffer.insert_with_tags_by_name(end_iter, text[index:], *text_tags) buffer_.insert_with_tags_by_name(end_iter, text[index:], *text_tags)
# vim: se ts=3: # vim: se ts=3:

View file

@ -164,9 +164,9 @@ class DataFormWidget(gtk.Alignment, object):
# moving all data to model # moving all data to model
for item in self._data_form.iter_records(): for item in self._data_form.iter_records():
iter = self.multiplemodel.append() iter_ = self.multiplemodel.append()
for field in item.iter_fields(): for field in item.iter_fields():
self.multiplemodel.set_value(iter, fieldvars.index(field.var), self.multiplemodel.set_value(iter_, fieldvars.index(field.var),
field.value) field.value)
# constructing columns... # constructing columns...
@ -214,8 +214,8 @@ class DataFormWidget(gtk.Alignment, object):
self.remove_button.set_sensitive(True) self.remove_button.set_sensitive(True)
self.edit_button.set_sensitive(True) self.edit_button.set_sensitive(True)
_, (path,) = selection.get_selected_rows() _, (path,) = selection.get_selected_rows()
iter = model.get_iter(path) iter_ = model.get_iter(path)
if model.iter_next(iter) is None: if model.iter_next(iter_) is None:
self.up_button.set_sensitive(True) self.up_button.set_sensitive(True)
self.down_button.set_sensitive(False) self.down_button.set_sensitive(False)
elif path == (0, ): elif path == (0, ):
@ -252,19 +252,19 @@ class DataFormWidget(gtk.Alignment, object):
def on_up_button_clicked(self, widget): def on_up_button_clicked(self, widget):
selection = self.records_treeview.get_selection() selection = self.records_treeview.get_selection()
model, (path,) = selection.get_selected_rows() model, (path,) = selection.get_selected_rows()
iter = model.get_iter(path) iter_ = model.get_iter(path)
# constructing path for previous iter # constructing path for previous iter
previter = model.get_iter((path[0]-1,)) previter = model.get_iter((path[0]-1,))
model.swap(iter, previter) model.swap(iter_, previter)
self.refresh_multiple_buttons() self.refresh_multiple_buttons()
def on_down_button_clicked(self, widget): def on_down_button_clicked(self, widget):
selection = self.records_treeview.get_selection() selection = self.records_treeview.get_selection()
model, (path,) = selection.get_selected_rows() model, (path,) = selection.get_selected_rows()
iter = model.get_iter(path) iter_ = model.get_iter(path)
nextiter = model.iter_next(iter) nextiter = model.iter_next(iter_)
model.swap(iter, nextiter) model.swap(iter_, nextiter)
self.refresh_multiple_buttons() self.refresh_multiple_buttons()
@ -356,10 +356,10 @@ class SingleForm(gtk.Table, object):
else: else:
# more than 5 options: show combobox # more than 5 options: show combobox
def on_list_single_combobox_changed(combobox, f): def on_list_single_combobox_changed(combobox, f):
iter = combobox.get_active_iter() iter_ = combobox.get_active_iter()
if iter: if iter_:
model = combobox.get_model() model = combobox.get_model()
f.value = model[iter][1] f.value = model[iter_][1]
else: else:
f.value = '' f.value = ''
widget = gtkgui_helpers.create_combobox(field.options, widget = gtkgui_helpers.create_combobox(field.options,
@ -555,15 +555,15 @@ class SingleForm(gtk.Table, object):
while _('new%d@jabber.id') % i in field.values: while _('new%d@jabber.id') % i in field.values:
i += 1 i += 1
jid = _('new%d@jabber.id') % i jid = _('new%d@jabber.id') % i
iter = model.insert(999999, (jid,)) iter_ = model.insert(999999, (jid,))
treeview.set_cursor(model.get_path(iter), treeview.get_column(0), True) treeview.set_cursor(model.get_path(iter_), treeview.get_column(0), True)
field.values = field.values + [jid] field.values = field.values + [jid]
def on_jid_multi_edit_button_clicked(self, widget, treeview): def on_jid_multi_edit_button_clicked(self, widget, treeview):
model, iter = treeview.get_selection().get_selected() model, iter_ = treeview.get_selection().get_selected()
assert iter is not None assert iter_ is not None
treeview.set_cursor(model.get_path(iter), treeview.get_column(0), True) treeview.set_cursor(model.get_path(iter_), treeview.get_column(0), True)
def on_jid_multi_remove_button_clicked(self, widget, treeview, field): def on_jid_multi_remove_button_clicked(self, widget, treeview, field):
selection = treeview.get_selection() selection = treeview.get_selection()

View file

@ -119,11 +119,11 @@ class EditGroupsDialog:
return return
# check if it already exists # check if it already exists
model = self.treeview.get_model() model = self.treeview.get_model()
iter = model.get_iter_root() iter_ = model.get_iter_root()
while iter: while iter_:
if model.get_value(iter, 0).decode('utf-8') == 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
model.append((group, True, False)) model.append((group, True, False))
self.add_group(group) self.add_group(group)
@ -173,17 +173,17 @@ class EditGroupsDialog:
group_list.append(group) group_list.append(group)
group_list.sort() group_list.sort()
for group in group_list: for group in group_list:
iter = store.append() iter_ = store.append()
store.set(iter, 0, group) # Group name store.set(iter_, 0, group) # Group name
if groups[group] == 0: if groups[group] == 0:
store.set(iter, 1, False) store.set(iter_, 1, False)
else: else:
store.set(iter, 1, True) store.set(iter_, 1, True)
if groups[group] == len(self.list_): if groups[group] == len(self.list_):
# all contacts are in this group # all contacts are in this group
store.set(iter, 2, False) store.set(iter_, 2, False)
else: else:
store.set(iter, 2, True) store.set(iter_, 2, True)
column = gtk.TreeViewColumn(_('Group')) column = gtk.TreeViewColumn(_('Group'))
column.set_expand(True) column.set_expand(True)
self.treeview.append_column(column) self.treeview.append_column(column)
@ -301,10 +301,10 @@ class ChooseGPGKeyDialog:
def on_dialog_response(self, dialog, response): def on_dialog_response(self, dialog, response):
selection = self.keys_treeview.get_selection() selection = self.keys_treeview.get_selection()
(model, iter) = selection.get_selected() (model, iter_) = selection.get_selected()
if iter and response == gtk.RESPONSE_OK: if iter_ and response == gtk.RESPONSE_OK:
keyID = [ model[iter][0].decode('utf-8'), keyID = [ model[iter_][0].decode('utf-8'),
model[iter][1].decode('utf-8') ] model[iter_][1].decode('utf-8') ]
else: else:
keyID = None keyID = None
self.on_response(keyID) self.on_response(keyID)
@ -788,25 +788,25 @@ _('Please fill in the data of the contact you want to add in account %s') %accou
self.uid_entry.set_text(uid.replace('%', '@', 1)) self.uid_entry.set_text(uid.replace('%', '@', 1))
#set protocol_combobox #set protocol_combobox
model = self.protocol_combobox.get_model() model = self.protocol_combobox.get_model()
iter = model.get_iter_first() iter_ = model.get_iter_first()
i = 0 i = 0
while iter: while iter_:
if model[iter][2] == type_: if model[iter_][2] == type_:
self.protocol_combobox.set_active(i) self.protocol_combobox.set_active(i)
break break
iter = model.iter_next(iter) iter_ = model.iter_next(iter_)
i += 1 i += 1
# set protocol_jid_combobox # set protocol_jid_combobox
self.protocol_jid_combobox.set_active(0) self.protocol_jid_combobox.set_active(0)
model = self.protocol_jid_combobox.get_model() model = self.protocol_jid_combobox.get_model()
iter = model.get_iter_first() iter_ = model.get_iter_first()
i = 0 i = 0
while iter: while iter_:
if model[iter][0] == transport: if model[iter_][0] == transport:
self.protocol_jid_combobox.set_active(i) self.protocol_jid_combobox.set_active(i)
break break
iter = model.iter_next(iter) iter_ = model.iter_next(iter_)
i += 1 i += 1
if user_nick: if user_nick:
self.nickname_entry.set_text(user_nick) self.nickname_entry.set_text(user_nick)
@ -864,8 +864,8 @@ _('Please fill in the data of the contact you want to add in account %s') %accou
return return
model = self.protocol_combobox.get_model() model = self.protocol_combobox.get_model()
iter = self.protocol_combobox.get_active_iter() iter_ = self.protocol_combobox.get_active_iter()
type_ = model[iter][2] type_ = model[iter_][2]
if type_ != 'jabber': if type_ != 'jabber':
transport = self.protocol_jid_combobox.get_active_text().decode( transport = self.protocol_jid_combobox.get_active_text().decode(
'utf-8') 'utf-8')
@ -923,8 +923,8 @@ _('Please fill in the data of the contact you want to add in account %s') %accou
def on_protocol_combobox_changed(self, widget): def on_protocol_combobox_changed(self, widget):
model = widget.get_model() model = widget.get_model()
iter = widget.get_active_iter() iter_ = widget.get_active_iter()
type_ = model[iter][2] type_ = model[iter_][2]
model = self.protocol_jid_combobox.get_model() model = self.protocol_jid_combobox.get_model()
model.clear() model.clear()
if len(self.agents[type_]): if len(self.agents[type_]):
@ -1841,8 +1841,8 @@ class SynchroniseSelectAccountDialog:
if remote_account == self.account: if remote_account == self.account:
# Do not show the account we're sync'ing # Do not show the account we're sync'ing
continue continue
iter = model.append() iter_ = model.append()
model.set(iter, 0, remote_account, 1, gajim.get_hostname_from_account( model.set(iter_, 0, remote_account, 1, gajim.get_hostname_from_account(
remote_account)) remote_account))
def on_cancel_button_clicked(self, widget): def on_cancel_button_clicked(self, widget):
@ -1850,10 +1850,10 @@ class SynchroniseSelectAccountDialog:
def on_ok_button_clicked(self, widget): def on_ok_button_clicked(self, widget):
sel = self.accounts_treeview.get_selection() sel = self.accounts_treeview.get_selection()
(model, iter) = sel.get_selected() (model, iter_) = sel.get_selected()
if not iter: if not iter_:
return return
remote_account = model.get_value(iter, 0).decode('utf-8') remote_account = model.get_value(iter_, 0).decode('utf-8')
if gajim.connections[remote_account].connected < 2: if gajim.connections[remote_account].connected < 2:
ErrorDialog(_('This account is not connected to the server'), ErrorDialog(_('This account is not connected to the server'),
@ -1892,8 +1892,8 @@ class SynchroniseSelectContactsDialog:
def toggled_callback(self, cell, path): def toggled_callback(self, cell, path):
model = self.contacts_treeview.get_model() model = self.contacts_treeview.get_model()
iter = model.get_iter(path) iter_ = model.get_iter(path)
model[iter][0] = not cell.get_active() model[iter_][0] = not cell.get_active()
def on_contacts_window_key_press_event(self, widget, event): def on_contacts_window_key_press_event(self, widget, event):
if event.keyval == gtk.keysyms.Escape: if event.keyval == gtk.keysyms.Escape:
@ -1910,19 +1910,19 @@ class SynchroniseSelectContactsDialog:
remote_jid_list = gajim.contacts.get_jid_list(self.remote_account) remote_jid_list = gajim.contacts.get_jid_list(self.remote_account)
for remote_jid in remote_jid_list: for remote_jid in remote_jid_list:
if remote_jid not in local_jid_list: if remote_jid not in local_jid_list:
iter = model.append() iter_ = model.append()
model.set(iter, 0, True, 1, remote_jid) model.set(iter_, 0, True, 1, remote_jid)
def on_cancel_button_clicked(self, widget): def on_cancel_button_clicked(self, widget):
self.dialog.destroy() self.dialog.destroy()
def on_ok_button_clicked(self, widget): def on_ok_button_clicked(self, widget):
model = self.contacts_treeview.get_model() model = self.contacts_treeview.get_model()
iter = model.get_iter_root() iter_ = model.get_iter_root()
while iter: while iter_:
if model[iter][0]: if model[iter_][0]:
# it is selected # it is selected
remote_jid = model[iter][1].decode('utf-8') remote_jid = model[iter_][1].decode('utf-8')
message = 'I\'m synchronizing my contacts from my %s account, could you please add this address to your contact list?' % \ message = 'I\'m synchronizing my contacts from my %s account, could you please add this address to your contact list?' % \
gajim.get_hostname_from_account(self.remote_account) gajim.get_hostname_from_account(self.remote_account)
remote_contact = gajim.contacts.get_first_contact_from_jid( remote_contact = gajim.contacts.get_first_contact_from_jid(
@ -1931,7 +1931,7 @@ class SynchroniseSelectContactsDialog:
gajim.interface.roster.req_sub(self, remote_jid, message, gajim.interface.roster.req_sub(self, remote_jid, message,
self.local_account, groups = remote_contact.groups, self.local_account, groups = remote_contact.groups,
nickname = remote_contact.name, auto_auth = True) nickname = remote_contact.name, auto_auth = True)
iter = model.iter_next(iter) iter_ = model.iter_next(iter_)
self.dialog.destroy() self.dialog.destroy()
class NewChatDialog(InputDialog): class NewChatDialog(InputDialog):
@ -2413,14 +2413,14 @@ class XMLConsoleWindow:
self.input_textview = self.xml.get_widget('input_textview') self.input_textview = self.xml.get_widget('input_textview')
self.stanzas_log_textview = self.xml.get_widget('stanzas_log_textview') self.stanzas_log_textview = self.xml.get_widget('stanzas_log_textview')
self.input_tv_buffer = self.input_textview.get_buffer() self.input_tv_buffer = self.input_textview.get_buffer()
buffer = self.stanzas_log_textview.get_buffer() buffer_ = self.stanzas_log_textview.get_buffer()
end_iter = buffer.get_end_iter() end_iter = buffer_.get_end_iter()
buffer.create_mark('end', end_iter, False) buffer_.create_mark('end', end_iter, False)
self.tagIn = buffer.create_tag('incoming') self.tagIn = buffer_.create_tag('incoming')
color = gajim.config.get('inmsgcolor') color = gajim.config.get('inmsgcolor')
self.tagIn.set_property('foreground', color) self.tagIn.set_property('foreground', color)
self.tagOut = buffer.create_tag('outgoing') self.tagOut = buffer_.create_tag('outgoing')
color = gajim.config.get('outmsgcolor') color = gajim.config.get('outmsgcolor')
self.tagOut.set_property('foreground', color) self.tagOut.set_property('foreground', color)
@ -2444,16 +2444,16 @@ class XMLConsoleWindow:
return True # do NOT destroy the window return True # do NOT destroy the window
def on_clear_button_clicked(self, widget): def on_clear_button_clicked(self, widget):
buffer = self.stanzas_log_textview.get_buffer() buffer_ = self.stanzas_log_textview.get_buffer()
buffer.set_text('') buffer_.set_text('')
def on_enable_checkbutton_toggled(self, widget): def on_enable_checkbutton_toggled(self, widget):
self.enabled = widget.get_active() self.enabled = widget.get_active()
def scroll_to_end(self, ): def scroll_to_end(self, ):
parent = self.stanzas_log_textview.get_parent() parent = self.stanzas_log_textview.get_parent()
buffer = self.stanzas_log_textview.get_buffer() buffer_ = self.stanzas_log_textview.get_buffer()
end_mark = buffer.get_mark('end') end_mark = buffer_.get_mark('end')
if not end_mark: if not end_mark:
return False return False
self.stanzas_log_textview.scroll_to_mark(end_mark, 0, True, 0, 1) self.stanzas_log_textview.scroll_to_mark(end_mark, 0, True, 0, 1)
@ -3030,16 +3030,16 @@ class SoundChooserDialog(FileChooserDialog):
on_response_ok = (on_ok, on_response_ok), on_response_ok = (on_ok, on_response_ok),
on_response_cancel = on_response_cancel) on_response_cancel = on_response_cancel)
filter = gtk.FileFilter() filter_ = gtk.FileFilter()
filter.set_name(_('All files')) filter_.set_name(_('All files'))
filter.add_pattern('*') filter_.add_pattern('*')
self.add_filter(filter) self.add_filter(filter_)
filter = gtk.FileFilter() filter_ = gtk.FileFilter()
filter.set_name(_('Wav Sounds')) filter_.set_name(_('Wav Sounds'))
filter.add_pattern('*.wav') filter_.add_pattern('*.wav')
self.add_filter(filter) self.add_filter(filter_)
self.set_filter(filter) self.set_filter(filter_)
if path_to_snd_file: if path_to_snd_file:
self.set_filename(path_to_snd_file) self.set_filename(path_to_snd_file)
@ -3081,21 +3081,21 @@ class ImageChooserDialog(FileChooserDialog):
if on_response_cancel: if on_response_cancel:
self.connect('destroy', on_response_cancel) self.connect('destroy', on_response_cancel)
filter = gtk.FileFilter() filter_ = gtk.FileFilter()
filter.set_name(_('All files')) filter_.set_name(_('All files'))
filter.add_pattern('*') filter_.add_pattern('*')
self.add_filter(filter) self.add_filter(filter_)
filter = gtk.FileFilter() filter_ = gtk.FileFilter()
filter.set_name(_('Images')) filter_.set_name(_('Images'))
filter.add_mime_type('image/png') filter_.add_mime_type('image/png')
filter.add_mime_type('image/jpeg') filter_.add_mime_type('image/jpeg')
filter.add_mime_type('image/gif') filter_.add_mime_type('image/gif')
filter.add_mime_type('image/tiff') filter_.add_mime_type('image/tiff')
filter.add_mime_type('image/svg+xml') filter_.add_mime_type('image/svg+xml')
filter.add_mime_type('image/x-xpixmap') # xpm filter_.add_mime_type('image/x-xpixmap') # xpm
self.add_filter(filter) self.add_filter(filter_)
self.set_filter(filter) self.set_filter(filter_)
if path_to_file: if path_to_file:
self.set_filename(path_to_file) self.set_filename(path_to_file)
@ -3241,8 +3241,8 @@ class AdvancedNotificationsWindow:
# Fill conditions_treeview # Fill conditions_treeview
num = 0 num = 0
while gajim.config.get_per('notifications', str(num)): while gajim.config.get_per('notifications', str(num)):
iter = model.append((num, '')) iter_ = model.append((num, ''))
path = model.get_path(iter) path = model.get_path(iter_)
self.conditions_treeview.set_cursor(path) self.conditions_treeview.set_cursor(path)
self.active_num = num self.active_num = num
self.initiate_rule_state() self.initiate_rule_state()
@ -3337,8 +3337,8 @@ class AdvancedNotificationsWindow:
self.urgency_hint_cb.set_active(value) self.urgency_hint_cb.set_active(value)
def set_treeview_string(self): def set_treeview_string(self):
(model, iter) = self.conditions_treeview.get_selection().get_selected() (model, iter_) = self.conditions_treeview.get_selection().get_selected()
if not iter: if not iter_:
return return
event = self.event_combobox.get_active_text() event = self.event_combobox.get_active_text()
recipient_type = self.recipient_type_combobox.get_active_text() recipient_type = self.recipient_type_combobox.get_active_text()
@ -3352,15 +3352,15 @@ class AdvancedNotificationsWindow:
for st in ('online', 'away', 'xa', 'dnd', 'invisible'): for st in ('online', 'away', 'xa', 'dnd', 'invisible'):
if self.__dict__[st + '_cb'].get_active(): if self.__dict__[st + '_cb'].get_active():
status += helpers.get_uf_show(st) + ' ' status += helpers.get_uf_show(st) + ' '
model[iter][1] = "When %s for %s %s %s" % (event, recipient_type, model[iter_][1] = "When %s for %s %s %s" % (event, recipient_type,
recipient, status) recipient, status)
def on_conditions_treeview_cursor_changed(self, widget): def on_conditions_treeview_cursor_changed(self, widget):
(model, iter) = widget.get_selection().get_selected() (model, iter_) = widget.get_selection().get_selected()
if not iter: if not iter_:
self.active_num = -1 self.active_num = -1
return return
self.active_num = model[iter][0] self.active_num = model[iter_][0]
if self.active_num == 0: if self.active_num == 0:
self.up_button.set_sensitive(False) self.up_button.set_sensitive(False)
else: else:
@ -3378,19 +3378,19 @@ class AdvancedNotificationsWindow:
model = self.conditions_treeview.get_model() model = self.conditions_treeview.get_model()
num = self.conditions_treeview.get_model().iter_n_children(None) num = self.conditions_treeview.get_model().iter_n_children(None)
gajim.config.add_per('notifications', str(num)) gajim.config.add_per('notifications', str(num))
iter = model.append((num, '')) iter_ = model.append((num, ''))
path = model.get_path(iter) path = model.get_path(iter_)
self.conditions_treeview.set_cursor(path) self.conditions_treeview.set_cursor(path)
self.active_num = num self.active_num = num
self.set_treeview_string() self.set_treeview_string()
self.config_vbox.set_sensitive(True) self.config_vbox.set_sensitive(True)
def on_delete_button_clicked(self, widget): def on_delete_button_clicked(self, widget):
(model, iter) = self.conditions_treeview.get_selection().get_selected() (model, iter_) = self.conditions_treeview.get_selection().get_selected()
if not iter: if not iter_:
return return
# up all others # up all others
iter2 = model.iter_next(iter) iter2 = model.iter_next(iter_)
num = self.active_num num = self.active_num
while iter2: while iter2:
num = model[iter2][0] num = model[iter2][0]
@ -3399,7 +3399,7 @@ class AdvancedNotificationsWindow:
val = gajim.config.get_per('notifications', str(num), opt) val = gajim.config.get_per('notifications', str(num), opt)
gajim.config.set_per('notifications', str(num - 1), opt, val) gajim.config.set_per('notifications', str(num - 1), opt, val)
iter2 = model.iter_next(iter2) iter2 = model.iter_next(iter2)
model.remove(iter) model.remove(iter_)
gajim.config.del_per('notifications', str(num)) # delete latest gajim.config.del_per('notifications', str(num)) # delete latest
self.active_num = -1 self.active_num = -1
self.config_vbox.set_sensitive(False) self.config_vbox.set_sensitive(False)
@ -3408,9 +3408,9 @@ class AdvancedNotificationsWindow:
self.down_button.set_sensitive(False) self.down_button.set_sensitive(False)
def on_up_button_clicked(self, widget): def on_up_button_clicked(self, widget):
(model, iter) = self.conditions_treeview.get_selection().\ (model, iter_) = self.conditions_treeview.get_selection().\
get_selected() get_selected()
if not iter: if not iter_:
return return
for opt in self.config_options: for opt in self.config_options:
val = gajim.config.get_per('notifications', str(self.active_num), opt) val = gajim.config.get_per('notifications', str(self.active_num), opt)
@ -3420,16 +3420,16 @@ class AdvancedNotificationsWindow:
gajim.config.set_per('notifications', str(self.active_num - 1), opt, gajim.config.set_per('notifications', str(self.active_num - 1), opt,
val) val)
model[iter][0] = self.active_num - 1 model[iter_][0] = self.active_num - 1
# get previous iter # get previous iter
path = model.get_path(iter) path = model.get_path(iter_)
iter = model.get_iter((path[0] - 1,)) iter_ = model.get_iter((path[0] - 1,))
model[iter][0] = self.active_num model[iter_][0] = self.active_num
self.on_conditions_treeview_cursor_changed(self.conditions_treeview) self.on_conditions_treeview_cursor_changed(self.conditions_treeview)
def on_down_button_clicked(self, widget): def on_down_button_clicked(self, widget):
(model, iter) = self.conditions_treeview.get_selection().get_selected() (model, iter_) = self.conditions_treeview.get_selection().get_selected()
if not iter: if not iter_:
return return
for opt in self.config_options: for opt in self.config_options:
val = gajim.config.get_per('notifications', str(self.active_num), opt) val = gajim.config.get_per('notifications', str(self.active_num), opt)
@ -3439,9 +3439,9 @@ class AdvancedNotificationsWindow:
gajim.config.set_per('notifications', str(self.active_num + 1), opt, gajim.config.set_per('notifications', str(self.active_num + 1), opt,
val) val)
model[iter][0] = self.active_num + 1 model[iter_][0] = self.active_num + 1
iter = model.iter_next(iter) iter_ = model.iter_next(iter_)
model[iter][0] = self.active_num model[iter_][0] = self.active_num
self.on_conditions_treeview_cursor_changed(self.conditions_treeview) self.on_conditions_treeview_cursor_changed(self.conditions_treeview)
def on_event_combobox_changed(self, widget): def on_event_combobox_changed(self, widget):
@ -3730,10 +3730,10 @@ class TransformChatToMUC:
name = contact.name name = contact.name
if name == '': if name == '':
name = jid.split('@')[0] name = jid.split('@')[0]
iter = self.store.append([img.get_pixbuf(), name, jid]) iter_ = self.store.append([img.get_pixbuf(), name, jid])
# preselect treeview rows # preselect treeview rows
if self.preselected_jids and jid in self.preselected_jids: if self.preselected_jids and jid in self.preselected_jids:
path = self.store.get_path(iter) path = self.store.get_path(iter_)
self.guests_treeview.get_selection().\ self.guests_treeview.get_selection().\
select_path(path) select_path(path)
@ -3759,8 +3759,8 @@ class TransformChatToMUC:
guest_list = [] guest_list = []
guests = self.guests_treeview.get_selection().get_selected_rows() guests = self.guests_treeview.get_selection().get_selected_rows()
for guest in guests[1]: for guest in guests[1]:
iter = self.store.get_iter(guest) iter_ = self.store.get_iter(guest)
guest_list.append(self.store[iter][2].decode('utf-8')) guest_list.append(self.store[iter_][2].decode('utf-8'))
for guest in self.auto_jids: for guest in self.auto_jids:
guest_list.append(guest) guest_list.append(guest)
room_jid = room_id + '@' + server room_jid = room_id + '@' + server
@ -3821,7 +3821,7 @@ class ESessionInfoWindow:
def update_info(self): def update_info(self):
labeltext = _('''Your chat session with <b>%(jid)s</b> is encrypted.\n\nThis session's Short Authentication String is <b>%(sas)s</b>.''') % {'jid': self.session.jid, 'sas': self.session.sas} labeltext = _('''Your chat session with <b>%(jid)s</b> is encrypted.\n\nThis session's Short Authentication String is <b>%(sas)s</b>.''') % {'jid': self.session.jid, 'sas': self.session.sas}
dir = os.path.join(gajim.DATA_DIR, 'pixmaps') dir_ = os.path.join(gajim.DATA_DIR, 'pixmaps')
if self.session.verified_identity: if self.session.verified_identity:
labeltext += '\n\n' + _('''You have already verified this contact's identity.''') labeltext += '\n\n' + _('''You have already verified this contact's identity.''')
@ -3855,7 +3855,7 @@ class ESessionInfoWindow:
self.button_label.set_text(_('Verify...')) self.button_label.set_text(_('Verify...'))
path = os.path.join(dir, security_image) path = os.path.join(dir_, security_image)
filename = os.path.abspath(path) filename = os.path.abspath(path)
self.security_image.set_from_file(filename) self.security_image.set_from_file(filename)
@ -3926,8 +3926,8 @@ class GPGInfoWindow:
verification_status) verification_status)
info_label.set_markup(info) info_label.set_markup(info)
dir = os.path.join(gajim.DATA_DIR, 'pixmaps') dir_ = os.path.join(gajim.DATA_DIR, 'pixmaps')
path = os.path.join(dir, image) path = os.path.join(dir_, image)
filename = os.path.abspath(path) filename = os.path.abspath(path)
security_image.set_from_file(filename) security_image.set_from_file(filename)

View file

@ -35,9 +35,9 @@
# - def default_action(self) # - def default_action(self)
# - def _find_item(self, jid, node) # - def _find_item(self, jid, node)
# - def _add_item(self, jid, node, item, force) # - def _add_item(self, jid, node, item, force)
# - def _update_item(self, iter, jid, node, item) # - def _update_item(self, iter_, jid, node, item)
# - def _update_info(self, iter, jid, node, identities, features, data) # - def _update_info(self, iter_, jid, node, identities, features, data)
# - def _update_error(self, iter, jid, node) # - def _update_error(self, iter_, jid, node)
# #
# * Should call the super class for this method. # * Should call the super class for this method.
# All others do not have to call back to the super class. (but can if they want # All others do not have to call back to the super class. (but can if they want
@ -258,8 +258,8 @@ class ServicesCache:
# Grab the first identity with an icon # Grab the first identity with an icon
for identity in identities: for identity in identities:
try: try:
cat, type = identity['category'], identity['type'] cat, type_ = identity['category'], identity['type']
info = _agent_type_info[(cat, type)] info = _agent_type_info[(cat, type_)]
except KeyError: except KeyError:
continue continue
filename = info[1] filename = info[1]
@ -267,7 +267,6 @@ class ServicesCache:
break break
else: else:
# Loop fell through, default to unknown # Loop fell through, default to unknown
cat = type = 0
info = _agent_type_info[(0, 0)] info = _agent_type_info[(0, 0)]
filename = info[1] filename = info[1]
if not filename: # we don't have an image to show for this type if not filename: # we don't have an image to show for this type
@ -865,12 +864,12 @@ class AgentBrowser:
def on_browse_button_clicked(self, widget = None): def on_browse_button_clicked(self, widget = None):
'''When we want to browse an agent: '''When we want to browse an agent:
Open a new services window with a browser for the agent type.''' Open a new services window with a browser for the agent type.'''
model, iter = self.window.services_treeview.get_selection().get_selected() model, iter_ = self.window.services_treeview.get_selection().get_selected()
if not iter: if not iter_:
return return
jid = model[iter][0].decode('utf-8') jid = model[iter_][0].decode('utf-8')
if jid: if jid:
node = model[iter][1].decode('utf-8') node = model[iter_][1].decode('utf-8')
self.window.open(jid, node) self.window.open(jid, node)
def update_actions(self): def update_actions(self):
@ -878,11 +877,11 @@ class AgentBrowser:
activate action buttons based on the agent's info.''' activate action buttons based on the agent's info.'''
if self.browse_button: if self.browse_button:
self.browse_button.set_sensitive(False) self.browse_button.set_sensitive(False)
model, iter = self.window.services_treeview.get_selection().get_selected() model, iter_ = self.window.services_treeview.get_selection().get_selected()
if not iter: if not iter_:
return return
jid = model[iter][0].decode('utf-8') jid = model[iter_][0].decode('utf-8')
node = model[iter][1].decode('utf-8') node = model[iter_][1].decode('utf-8')
if jid: if jid:
self.cache.get_info(jid, node, self._update_actions, nofetch = True) self.cache.get_info(jid, node, self._update_actions, nofetch = True)
@ -897,11 +896,11 @@ class AgentBrowser:
def default_action(self): def default_action(self):
'''When we double-click a row: '''When we double-click a row:
perform the default action on the selected item.''' perform the default action on the selected item.'''
model, iter = self.window.services_treeview.get_selection().get_selected() model, iter_ = self.window.services_treeview.get_selection().get_selected()
if not iter: if not iter_:
return return
jid = model[iter][0].decode('utf-8') jid = model[iter_][0].decode('utf-8')
node = model[iter][1].decode('utf-8') node = model[iter_][1].decode('utf-8')
if jid: if jid:
self.cache.get_info(jid, node, self._default_action, nofetch = True) self.cache.get_info(jid, node, self._default_action, nofetch = True)
@ -932,15 +931,15 @@ class AgentBrowser:
def _find_item(self, jid, node): def _find_item(self, jid, node):
'''Check if an item is already in the treeview. Return an iter to it '''Check if an item is already in the treeview. Return an iter to it
if so, None otherwise.''' if so, None otherwise.'''
iter = self.model.get_iter_root() iter_ = self.model.get_iter_root()
while iter: while iter_:
cjid = self.model.get_value(iter, 0).decode('utf-8') cjid = self.model.get_value(iter_, 0).decode('utf-8')
cnode = self.model.get_value(iter, 1).decode('utf-8') cnode = self.model.get_value(iter_, 1).decode('utf-8')
if jid == cjid and node == cnode: if jid == cjid and node == cnode:
break break
iter = self.model.iter_next(iter) iter_ = self.model.iter_next(iter_)
if iter: if iter_:
return iter return iter_
return None return None
def _agent_items(self, jid, node, items, force): def _agent_items(self, jid, node, items, force):
@ -971,16 +970,16 @@ _('This service does not contain any items to browse.'))
def _agent_info(self, jid, node, identities, features, data): def _agent_info(self, jid, node, identities, features, data):
'''Callback for when we receive info about an agent's item.''' '''Callback for when we receive info about an agent's item.'''
iter = self._find_item(jid, node) iter_ = self._find_item(jid, node)
if not iter: if not iter_:
# Not in the treeview, stop # Not in the treeview, stop
return return
if identities == 0: if identities == 0:
# The server returned an error # The server returned an error
self._update_error(iter, jid, node) self._update_error(iter_, jid, node)
else: else:
# We got our info # We got our info
self._update_info(iter, jid, node, identities, features, data) self._update_info(iter_, jid, node, identities, features, data)
self.update_actions() self.update_actions()
def _add_item(self, jid, node, item, force): def _add_item(self, jid, node, item, force):
@ -1101,14 +1100,14 @@ class ToplevelAgentBrowser(AgentBrowser):
self.tooltip.hide_tooltip() self.tooltip.hide_tooltip()
if props: if props:
row = props[0] row = props[0]
iter = None iter_ = None
try: try:
iter = self.model.get_iter(row) iter_ = self.model.get_iter(row)
except Exception: except Exception:
self.tooltip.hide_tooltip() self.tooltip.hide_tooltip()
return return
jid = self.model[iter][0] jid = self.model[iter_][0]
state = self.model[iter][4] state = self.model[iter_][4]
# Not a category, and we have something to say about state # Not a category, and we have something to say about state
if jid and state > 0 and \ if jid and state > 0 and \
(self.tooltip.timeout == 0 or self.tooltip.id != props[0]): (self.tooltip.timeout == 0 or self.tooltip.id != props[0]):
@ -1235,10 +1234,10 @@ class ToplevelAgentBrowser(AgentBrowser):
def on_search_button_clicked(self, widget = None): def on_search_button_clicked(self, widget = None):
'''When we want to search something: '''When we want to search something:
open search window''' open search window'''
model, iter = self.window.services_treeview.get_selection().get_selected() model, iter_ = self.window.services_treeview.get_selection().get_selected()
if not iter: if not iter_:
return return
service = model[iter][0].decode('utf-8') service = model[iter_][0].decode('utf-8')
if service in gajim.interface.instances[self.account]['search']: if service in gajim.interface.instances[self.account]['search']:
gajim.interface.instances[self.account]['search'][service].present() gajim.interface.instances[self.account]['search'][service].present()
else: else:
@ -1259,20 +1258,20 @@ class ToplevelAgentBrowser(AgentBrowser):
def on_execute_button_clicked(self, widget = None): def on_execute_button_clicked(self, widget = None):
'''When we want to execute a command: '''When we want to execute a command:
open adhoc command window''' open adhoc command window'''
model, iter = self.window.services_treeview.get_selection().get_selected() model, iter_ = self.window.services_treeview.get_selection().get_selected()
if not iter: if not iter_:
return return
service = model[iter][0].decode('utf-8') service = model[iter_][0].decode('utf-8')
adhoc_commands.CommandWindow(self.account, service) adhoc_commands.CommandWindow(self.account, service)
def on_register_button_clicked(self, widget = None): def on_register_button_clicked(self, widget = None):
'''When we want to register an agent: '''When we want to register an agent:
request information about registering with the agent and close the request information about registering with the agent and close the
window.''' window.'''
model, iter = self.window.services_treeview.get_selection().get_selected() model, iter_ = self.window.services_treeview.get_selection().get_selected()
if not iter: if not iter_:
return return
jid = model[iter][0].decode('utf-8') jid = model[iter_][0].decode('utf-8')
if jid: if jid:
gajim.connections[self.account].request_register_agent_info(jid) gajim.connections[self.account].request_register_agent_info(jid)
self.window.destroy(chain = True) self.window.destroy(chain = True)
@ -1280,10 +1279,10 @@ class ToplevelAgentBrowser(AgentBrowser):
def on_join_button_clicked(self, widget): def on_join_button_clicked(self, widget):
'''When we want to join an IRC room or create a new MUC room: '''When we want to join an IRC room or create a new MUC room:
Opens the join_groupchat_window.''' Opens the join_groupchat_window.'''
model, iter = self.window.services_treeview.get_selection().get_selected() model, iter_ = self.window.services_treeview.get_selection().get_selected()
if not iter: if not iter_:
return return
service = model[iter][0].decode('utf-8') service = model[iter_][0].decode('utf-8')
if 'join_gc' not in gajim.interface.instances[self.account]: if 'join_gc' not in gajim.interface.instances[self.account]:
try: try:
dialogs.JoinGroupchatWindow(self.account, service) dialogs.JoinGroupchatWindow(self.account, service)
@ -1304,25 +1303,25 @@ class ToplevelAgentBrowser(AgentBrowser):
self.join_button.set_sensitive(False) self.join_button.set_sensitive(False)
if self.search_button: if self.search_button:
self.search_button.set_sensitive(False) self.search_button.set_sensitive(False)
model, iter = self.window.services_treeview.get_selection().get_selected() model, iter_ = self.window.services_treeview.get_selection().get_selected()
model, iter = self.window.services_treeview.get_selection().get_selected() model, iter_ = self.window.services_treeview.get_selection().get_selected()
if not iter: if not iter_:
return return
if not model[iter][0]: if not model[iter_][0]:
# We're on a category row # We're on a category row
return return
if model[iter][4] != 0: if model[iter_][4] != 0:
# We don't have the info (yet) # We don't have the info (yet)
# It's either unknown or a transport, register button should be active # It's either unknown or a transport, register button should be active
if self.register_button: if self.register_button:
self.register_button.set_sensitive(True) self.register_button.set_sensitive(True)
# Guess what kind of service we're dealing with # Guess what kind of service we're dealing with
if self.browse_button: if self.browse_button:
jid = model[iter][0].decode('utf-8') jid = model[iter_][0].decode('utf-8')
type = gajim.get_transport_name_from_jid(jid, type_ = gajim.get_transport_name_from_jid(jid,
use_config_setting = False) use_config_setting = False)
if type: if type_:
identity = {'category': '_jid', 'type': type} identity = {'category': '_jid', 'type': type_}
klass = self.cache.get_browser([identity]) klass = self.cache.get_browser([identity])
if klass: if klass:
self.browse_button.set_sensitive(True) self.browse_button.set_sensitive(True)
@ -1393,13 +1392,13 @@ class ToplevelAgentBrowser(AgentBrowser):
fraction = float(self._progress) / float(self._total_items) fraction = float(self._progress) / float(self._total_items)
if self._progress >= self._total_items: if self._progress >= self._total_items:
# We show the progressbar for just a bit before hiding it. # We show the progressbar for just a bit before hiding it.
id = gobject.timeout_add_seconds(2, self._hide_progressbar_cb) id_ = gobject.timeout_add_seconds(2, self._hide_progressbar_cb)
self._progressbar_sourceid = id self._progressbar_sourceid = id_
else: else:
self.window.progressbar.show() self.window.progressbar.show()
# Hide the progressbar if we're timing out anyways. (20 secs) # Hide the progressbar if we're timing out anyways. (20 secs)
id = gobject.timeout_add_seconds(20, self._hide_progressbar_cb) id_ = gobject.timeout_add_seconds(20, self._hide_progressbar_cb)
self._progressbar_sourceid = id self._progressbar_sourceid = id_
self.window.progressbar.set_fraction(fraction) self.window.progressbar.set_fraction(fraction)
def _hide_progressbar_cb(self, *args): def _hide_progressbar_cb(self, *args):
@ -1432,29 +1431,29 @@ class ToplevelAgentBrowser(AgentBrowser):
def _find_category(self, cat, type_=None): def _find_category(self, cat, type_=None):
'''Looks up a category row and returns the iterator to it, or None.''' '''Looks up a category row and returns the iterator to it, or None.'''
cat = self._friendly_category(cat, type_)[0] cat = self._friendly_category(cat, type_)[0]
iter = self.model.get_iter_root() iter_ = self.model.get_iter_root()
while iter: while iter_:
if self.model.get_value(iter, 3).decode('utf-8') == cat: if self.model.get_value(iter_, 3).decode('utf-8') == cat:
break break
iter = self.model.iter_next(iter) iter_ = self.model.iter_next(iter_)
if iter: if iter_:
return iter return iter_
return None return None
def _find_item(self, jid, node): def _find_item(self, jid, node):
iter = None iter_ = None
cat_iter = self.model.get_iter_root() cat_iter = self.model.get_iter_root()
while cat_iter and not iter: while cat_iter and not iter_:
iter = self.model.iter_children(cat_iter) iter_ = self.model.iter_children(cat_iter)
while iter: while iter_:
cjid = self.model.get_value(iter, 0).decode('utf-8') cjid = self.model.get_value(iter_, 0).decode('utf-8')
cnode = self.model.get_value(iter, 1).decode('utf-8') cnode = self.model.get_value(iter_, 1).decode('utf-8')
if jid == cjid and node == cnode: if jid == cjid and node == cnode:
break break
iter = self.model.iter_next(iter) iter_ = self.model.iter_next(iter_)
cat_iter = self.model.iter_next(cat_iter) cat_iter = self.model.iter_next(cat_iter)
if iter: if iter_:
return iter return iter_
return None return None
def _add_item(self, jid, node, item, force): def _add_item(self, jid, node, item, force):
@ -1466,12 +1465,12 @@ class ToplevelAgentBrowser(AgentBrowser):
descr = "<b>%s</b>" % addr descr = "<b>%s</b>" % addr
# Guess which kind of service this is # Guess which kind of service this is
identities = [] identities = []
type = gajim.get_transport_name_from_jid(jid, type_ = gajim.get_transport_name_from_jid(jid,
use_config_setting = False) use_config_setting = False)
if type: if type_:
identity = {'category': '_jid', 'type': type} identity = {'category': '_jid', 'type': type_}
identities.append(identity) identities.append(identity)
cat_args = ('_jid', type) cat_args = ('_jid', type_)
else: else:
# Put it in the 'other' category for now # Put it in the 'other' category for now
cat_args = ('other',) cat_args = ('other',)
@ -1511,7 +1510,7 @@ class ToplevelAgentBrowser(AgentBrowser):
pix = self.cache.get_icon(identities) pix = self.cache.get_icon(identities)
for identity in identities: for identity in identities:
try: try:
cat, type = identity['category'], identity['type'] cat, type_ = identity['category'], identity['type']
except KeyError: except KeyError:
continue continue
break break
@ -1534,9 +1533,9 @@ class ToplevelAgentBrowser(AgentBrowser):
if not self.model.iter_children(old_cat_iter): if not self.model.iter_children(old_cat_iter):
self.model.remove(old_cat_iter) self.model.remove(old_cat_iter)
cat_iter = self._find_category(cat, type) cat_iter = self._find_category(cat, type_)
if not cat_iter: if not cat_iter:
cat_iter = self._create_category(cat, type) cat_iter = self._create_category(cat, type_)
self.model.append(cat_iter, (jid, node, pix, descr, 0)) self.model.append(cat_iter, (jid, node, pix, descr, 0))
self._expand_all() self._expand_all()
@ -1628,11 +1627,11 @@ class MucBrowser(AgentBrowser):
def on_join_button_clicked(self, *args): def on_join_button_clicked(self, *args):
'''When we want to join a conference: '''When we want to join a conference:
Ask specific informations about the selected agent and close the window''' Ask specific informations about the selected agent and close the window'''
model, iter = self.window.services_treeview.get_selection().get_selected() model, iter_ = self.window.services_treeview.get_selection().get_selected()
if not iter: if not iter_:
return return
service = model[iter][0].decode('utf-8') service = model[iter_][0].decode('utf-8')
room = model[iter][1].decode('utf-8') room = model[iter_][1].decode('utf-8')
if 'join_gc' not in gajim.interface.instances[self.account]: if 'join_gc' not in gajim.interface.instances[self.account]:
try: try:
dialogs.JoinGroupchatWindow(self.account, service) dialogs.JoinGroupchatWindow(self.account, service)
@ -1674,12 +1673,12 @@ class MucBrowser(AgentBrowser):
# We have to do this in a pygtk <2.8 compatible way :/ # We have to do this in a pygtk <2.8 compatible way :/
#start, end = self.window.services_treeview.get_visible_range() #start, end = self.window.services_treeview.get_visible_range()
rect = view.get_visible_rect() rect = view.get_visible_rect()
iter = end = None iter_ = end = None
# Top row # Top row
try: try:
sx, sy = view.tree_to_widget_coords(rect.x, rect.y) sx, sy = view.tree_to_widget_coords(rect.x, rect.y)
spath = view.get_path_at_pos(sx, sy)[0] spath = view.get_path_at_pos(sx, sy)[0]
iter = self.model.get_iter(spath) iter_ = self.model.get_iter(spath)
except TypeError: except TypeError:
self._fetch_source = None self._fetch_source = None
return return
@ -1694,14 +1693,14 @@ class MucBrowser(AgentBrowser):
except TypeError: except TypeError:
# We're at the end of the model, we can leave end=None though. # We're at the end of the model, we can leave end=None though.
pass pass
while iter and self.model.get_path(iter) != end: while iter_ and self.model.get_path(iter_) != end:
if not self.model.get_value(iter, 6): if not self.model.get_value(iter_, 6):
jid = self.model.get_value(iter, 0).decode('utf-8') jid = self.model.get_value(iter_, 0).decode('utf-8')
node = self.model.get_value(iter, 1).decode('utf-8') node = self.model.get_value(iter_, 1).decode('utf-8')
self.cache.get_info(jid, node, self._agent_info) self.cache.get_info(jid, node, self._agent_info)
self._fetch_source = True self._fetch_source = True
return return
iter = self.model.iter_next(iter) iter_ = self.model.iter_next(iter_)
self._fetch_source = None self._fetch_source = None
def _channel_altinfo(self, jid, node, items, name = None): def _channel_altinfo(self, jid, node, items, name = None):
@ -1722,13 +1721,13 @@ class MucBrowser(AgentBrowser):
self._fetch_source = None self._fetch_source = None
return return
else: else:
iter = self._find_item(jid, node) iter_ = self._find_item(jid, node)
if iter: if iter_:
if name: if name:
self.model[iter][2] = name self.model[iter_][2] = name
self.model[iter][3] = len(items) # The number of users self.model[iter_][3] = len(items) # The number of users
self.model[iter][4] = str(len(items)) # The number of users self.model[iter_][4] = str(len(items)) # The number of users
self.model[iter][6] = True self.model[iter_][6] = True
self._fetch_source = None self._fetch_source = None
self._query_visible() self._query_visible()
@ -1916,42 +1915,42 @@ class DiscussionGroupsBrowser(AgentBrowser):
# we have nothing to do if we don't have buttons... # we have nothing to do if we don't have buttons...
if self.subscribe_button is None: return if self.subscribe_button is None: return
model, iter = self.window.services_treeview.get_selection().get_selected() model, iter_ = self.window.services_treeview.get_selection().get_selected()
if not iter or self.subscriptions is None: if not iter_ or self.subscriptions is None:
# no item selected or no subscriptions info, all buttons are insensitive # no item selected or no subscriptions info, all buttons are insensitive
self.post_button.set_sensitive(False) self.post_button.set_sensitive(False)
self.subscribe_button.set_sensitive(False) self.subscribe_button.set_sensitive(False)
self.unsubscribe_button.set_sensitive(False) self.unsubscribe_button.set_sensitive(False)
else: else:
subscribed = model.get_value(iter, 4) # 4 = subscribed? subscribed = model.get_value(iter_, 4) # 4 = subscribed?
self.post_button.set_sensitive(subscribed) self.post_button.set_sensitive(subscribed)
self.subscribe_button.set_sensitive(not subscribed) self.subscribe_button.set_sensitive(not subscribed)
self.unsubscribe_button.set_sensitive(subscribed) self.unsubscribe_button.set_sensitive(subscribed)
def on_post_button_clicked(self, widget): def on_post_button_clicked(self, widget):
'''Called when 'post' button is pressed. Open window to create post''' '''Called when 'post' button is pressed. Open window to create post'''
model, iter = self.window.services_treeview.get_selection().get_selected() model, iter_ = self.window.services_treeview.get_selection().get_selected()
if iter is None: return if iter_ is None: return
groupnode = model.get_value(iter, 1) # 1 = groupnode groupnode = model.get_value(iter_, 1) # 1 = groupnode
groups.GroupsPostWindow(self.account, self.jid, groupnode) groups.GroupsPostWindow(self.account, self.jid, groupnode)
def on_subscribe_button_clicked(self, widget): def on_subscribe_button_clicked(self, widget):
'''Called when 'subscribe' button is pressed. Send subscribtion request.''' '''Called when 'subscribe' button is pressed. Send subscribtion request.'''
model, iter = self.window.services_treeview.get_selection().get_selected() model, iter_ = self.window.services_treeview.get_selection().get_selected()
if iter is None: return if iter_ is None: return
groupnode = model.get_value(iter, 1) # 1 = groupnode groupnode = model.get_value(iter_, 1) # 1 = groupnode
gajim.connections[self.account].send_pb_subscribe(self.jid, groupnode, self._subscribeCB, groupnode) gajim.connections[self.account].send_pb_subscribe(self.jid, groupnode, self._subscribeCB, groupnode)
def on_unsubscribe_button_clicked(self, widget): def on_unsubscribe_button_clicked(self, widget):
'''Called when 'unsubscribe' button is pressed. Send unsubscription request.''' '''Called when 'unsubscribe' button is pressed. Send unsubscription request.'''
model, iter = self.window.services_treeview.get_selection().get_selected() model, iter_ = self.window.services_treeview.get_selection().get_selected()
if iter is None: return if iter_ is None: return
groupnode = model.get_value(iter, 1) # 1 = groupnode groupnode = model.get_value(iter_, 1) # 1 = groupnode
gajim.connections[self.account].send_pb_unsubscribe(self.jid, groupnode, self._unsubscribeCB, groupnode) gajim.connections[self.account].send_pb_unsubscribe(self.jid, groupnode, self._unsubscribeCB, groupnode)

View file

@ -268,10 +268,10 @@ class FeaturesWindow:
texstr += '\\begin{document}\\begin{large}\\begin{gather*}test' texstr += '\\begin{document}\\begin{large}\\begin{gather*}test'
texstr += '\\end{gather*}\\end{large}\\end{document}' texstr += '\\end{gather*}\\end{large}\\end{document}'
file = open(os.path.join(tmpfile + ".tex"), "w+") file_ = open(os.path.join(tmpfile + ".tex"), "w+")
file.write(texstr) file_.write(texstr)
file.flush() file_.flush()
file.close() file_.close()
try: try:
if os.name == 'nt': if os.name == 'nt':
# CREATE_NO_WINDOW # CREATE_NO_WINDOW

View file

@ -395,17 +395,17 @@ _('Connection with peer cannot be established.'))
def set_status(self, typ, sid, status): def set_status(self, typ, sid, status):
''' change the status of a transfer to state 'status' ''' ''' change the status of a transfer to state 'status' '''
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][C_SID].decode('utf-8') sid = self.model[iter_][C_SID].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
elif status == 'ok': elif status == 'ok':
file_props['completed'] = True file_props['completed'] = True
self.model.set(iter, C_IMAGE, self.get_icon(status)) self.model.set(iter_, C_IMAGE, self.get_icon(status))
path = self.model.get_path(iter) path = self.model.get_path(iter_)
self.select_func(path) self.select_func(path)
def _format_percent(self, percent): def _format_percent(self, percent):
@ -548,11 +548,11 @@ _('Connection with peer cannot be established.'))
def get_iter_by_sid(self, typ, sid): def get_iter_by_sid(self, typ, sid):
'''returns iter to the row, which holds file transfer, identified by the '''returns iter to the row, which holds file transfer, identified by the
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][C_SID].decode('utf-8'): if typ + sid == self.model[iter_][C_SID].decode('utf-8'):
return iter return iter_
iter = self.model.iter_next(iter) iter_ = self.model.iter_next(iter_)
def get_send_file_props(self, account, contact, file_path, file_name, def get_send_file_props(self, account, contact, file_path, file_name,
file_desc=''): file_desc=''):
@ -588,7 +588,7 @@ _('Connection with peer cannot be established.'))
return return
file_props['elapsed-time'] = 0 file_props['elapsed-time'] = 0
self.files_props[file_props['type']][file_props['sid']] = file_props self.files_props[file_props['type']][file_props['sid']] = file_props
iter = self.model.append() iter_ = self.model.append()
text_labels = '<b>' + _('Name: ') + '</b>\n' text_labels = '<b>' + _('Name: ') + '</b>\n'
if file_props['type'] == 'r': if file_props['type'] == 'r':
text_labels += '<b>' + _('Sender: ') + '</b>' text_labels += '<b>' + _('Sender: ') + '</b>'
@ -601,9 +601,9 @@ _('Connection with peer cannot be established.'))
file_name = file_props['name'] file_name = file_props['name']
text_props = gobject.markup_escape_text(file_name) + '\n' text_props = gobject.markup_escape_text(file_name) + '\n'
text_props += contact.get_shown_name() text_props += contact.get_shown_name()
self.model.set(iter, 1, text_labels, 2, text_props, C_SID, self.model.set(iter_, 1, text_labels, 2, text_props, C_SID,
file_props['type'] + file_props['sid']) file_props['type'] + file_props['sid'])
self.set_progress(file_props['type'], file_props['sid'], 0, iter) self.set_progress(file_props['type'], file_props['sid'], 0, iter_)
if 'started' in file_props and file_props['started'] is False: if 'started' in file_props and file_props['started'] is False:
status = 'waiting' status = 'waiting'
elif file_props['type'] == 'r': elif file_props['type'] == 'r':
@ -624,13 +624,13 @@ _('Connection with peer cannot be established.'))
self.tooltip.hide_tooltip() self.tooltip.hide_tooltip()
if props: if props:
row = props[0] row = props[0]
iter = None iter_ = None
try: try:
iter = self.model.get_iter(row) iter_ = self.model.get_iter(row)
except Exception: except Exception:
self.tooltip.hide_tooltip() self.tooltip.hide_tooltip()
return return
sid = self.model[iter][C_SID].decode('utf-8') sid = self.model[iter_][C_SID].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]:
@ -767,11 +767,11 @@ _('Connection with peer cannot be established.'))
def on_cleanup_button_clicked(self, widget): def on_cleanup_button_clicked(self, widget):
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][C_SID].decode('utf-8') sid = self.model[iter_][C_SID].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_stopped(file_props): if self.is_transfer_stopped(file_props):
self._remove_transfer(iter, sid, file_props) self._remove_transfer(iter_, sid, file_props)
i -= 1 i -= 1
self.tree.get_selection().unselect_all() self.tree.get_selection().unselect_all()
self.set_all_insensitive() self.set_all_insensitive()
@ -844,8 +844,8 @@ _('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
if props and self.tooltip.id == props[0]: if props and self.tooltip.id == props[0]:
iter = self.model.get_iter(props[0]) iter_ = self.model.get_iter(props[0])
sid = self.model[iter][C_SID].decode('utf-8') sid = self.model[iter_][C_SID].decode('utf-8')
file_props = self.files_props[sid[0]][sid[1:]] file_props = self.files_props[sid[0]][sid[1:]]
# bounding rectangle of coordinates for the cell within the treeview # bounding rectangle of coordinates for the cell within the treeview
rect = self.tree.get_cell_area(props[0],props[1]) rect = self.tree.get_cell_area(props[0],props[1])
@ -883,18 +883,18 @@ _('Connection with peer cannot be established.'))
def on_transfers_list_key_press_event(self, widget, event): def on_transfers_list_key_press_event(self, widget, event):
'''when a key is pressed in the treeviews''' '''when a key is pressed in the treeviews'''
self.tooltip.hide_tooltip() self.tooltip.hide_tooltip()
iter = None iter_ = None
try: try:
iter = self.tree.get_selection().get_selected()[1] iter_ = self.tree.get_selection().get_selected()[1]
except TypeError: except TypeError:
self.tree.get_selection().unselect_all() self.tree.get_selection().unselect_all()
if iter is not None: if iter_ is not None:
path = self.model.get_path(iter) path = self.model.get_path(iter_)
self.tree.get_selection().select_path(path) self.tree.get_selection().select_path(path)
if event.keyval == gtk.keysyms.Menu: if event.keyval == gtk.keysyms.Menu:
self.show_context_menu(event, iter) self.show_context_menu(event, iter_)
return True return True
@ -914,7 +914,7 @@ _('Connection with peer cannot be established.'))
def on_transfers_list_button_press_event(self, widget, event): def on_transfers_list_button_press_event(self, widget, event):
# hide tooltip, no matter the button is pressed # hide tooltip, no matter the button is pressed
self.tooltip.hide_tooltip() self.tooltip.hide_tooltip()
path, iter = None, None path, iter_ = None, None
try: try:
path = self.tree.get_path_at_pos(int(event.x), int(event.y))[0] path = self.tree.get_path_at_pos(int(event.x), int(event.y))[0]
except TypeError: except TypeError:
@ -922,8 +922,8 @@ _('Connection with peer cannot be established.'))
if event.button == 3: # Right click if event.button == 3: # Right click
if path is not None: if path is not None:
self.tree.get_selection().select_path(path) self.tree.get_selection().select_path(path)
iter = self.model.get_iter(path) iter_ = self.model.get_iter(path)
self.show_context_menu(event, iter) self.show_context_menu(event, iter_)
if path is not None: if path is not None:
return True return True

View file

@ -387,54 +387,41 @@ class GajimRemote:
def make_arguments_row(self, args): def make_arguments_row(self, args):
''' return arguments list. Mandatory arguments are enclosed with: ''' return arguments list. Mandatory arguments are enclosed with:
'<', '>', optional arguments - with '[', ']' ''' '<', '>', optional arguments - with '[', ']' '''
str = '' s = ''
for argument in args: for arg in args:
str += ' ' if arg[2]:
if argument[2]: s += ' <' + arg[0] + '>'
str += '<'
else: else:
str += '[' s += ' [' + arg[0] + ']'
str += argument[0] return s
if argument[2]:
str += '>'
else:
str += ']'
return str
def help_on_command(self, command): def help_on_command(self, command):
''' return help message for a given command ''' ''' return help message for a given command '''
if command in self.commands: if command in self.commands:
command_props = self.commands[command] command_props = self.commands[command]
arguments_str = self.make_arguments_row(command_props[1]) arguments_str = self.make_arguments_row(command_props[1])
str = _('Usage: %(basename)s %(command)s %(arguments)s \n\t %(help)s')\ str_ = _('Usage: %(basename)s %(command)s %(arguments)s \n\t %(help)s')\
% {'basename': BASENAME, 'command': command, % {'basename': BASENAME, 'command': command,
'arguments': arguments_str, 'help': command_props[0]} 'arguments': arguments_str, 'help': command_props[0]}
if len(command_props[1]) > 0: if len(command_props[1]) > 0:
str += '\n\n' + _('Arguments:') + '\n' str_ += '\n\n' + _('Arguments:') + '\n'
for argument in command_props[1]: for argument in command_props[1]:
str += ' ' + argument[0] + ' - ' + argument[1] + '\n' str_ += ' ' + argument[0] + ' - ' + argument[1] + '\n'
return str return str_
send_error(_('%s not found') % command) send_error(_('%s not found') % command)
def compose_help(self): def compose_help(self):
''' print usage, and list available commands ''' ''' print usage, and list available commands '''
str = _('Usage: %s command [arguments]\nCommand is one of:\n' ) % BASENAME s = _('Usage: %s command [arguments]\nCommand is one of:\n' ) % BASENAME
commands = sorted(self.commands.keys()) for command in sorted(self.commands):
for command in commands: s += ' ' + command
str += ' ' + command for arg in self.commands[command][1]:
for argument in self.commands[command][1]: if arg[2]:
str += ' ' s += ' <' + arg[0] + '>'
if argument[2]:
str += '<'
else: else:
str += '[' s += ' [' + arg[0] + ']'
str += argument[0] s += '\n'
if argument[2]: return s
str += '>'
else:
str += ']'
str += '\n'
return str
def print_info(self, level, prop_dict, encode_return = False): def print_info(self, level, prop_dict, encode_return = False):
''' return formated string from data structure ''' ''' return formated string from data structure '''

View file

@ -584,13 +584,13 @@ class Interface:
def handle_event_error_answer(self, account, array): def handle_event_error_answer(self, account, array):
#('ERROR_ANSWER', account, (id, jid_from, errmsg, errcode)) #('ERROR_ANSWER', account, (id, jid_from, errmsg, errcode))
id, jid_from, errmsg, errcode = array id_, jid_from, errmsg, errcode = array
if unicode(errcode) in ('403', '406') and id: if unicode(errcode) in ('403', '406') and id_:
# show the error dialog # show the error dialog
ft = self.instances['file_transfers'] ft = self.instances['file_transfers']
sid = id sid = id_
if len(id) > 3 and id[2] == '_': if len(id_) > 3 and id_[2] == '_':
sid = id[3:] sid = id_[3:]
if sid in ft.files_props['s']: if sid in ft.files_props['s']:
file_props = ft.files_props['s'][sid] file_props = ft.files_props['s'][sid]
file_props['error'] = -4 file_props['error'] = -4
@ -601,9 +601,9 @@ class Interface:
return return
elif unicode(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] == '_':
sid = id[3:] sid = id_[3:]
if sid in conn.files_props: if sid in conn.files_props:
file_props = conn.files_props[sid] file_props = conn.files_props[sid]
self.handle_event_file_send_error(account, self.handle_event_file_send_error(account,
@ -922,9 +922,9 @@ class Interface:
if not ctrl: if not ctrl:
tv = gc_control.list_treeview tv = gc_control.list_treeview
model = tv.get_model() model = tv.get_model()
iter = gc_control.get_contact_iter(nick) iter_ = gc_control.get_contact_iter(nick)
if iter: if iter_:
show = model[iter][3] show = model[iter_][3]
else: else:
show = 'offline' show = 'offline'
gc_c = gajim.contacts.create_gc_contact(room_jid = jid, gc_c = gajim.contacts.create_gc_contact(room_jid = jid,
@ -2599,8 +2599,9 @@ class Interface:
emots = emoticons.emoticons emots = emoticons.emoticons
fd = open(os.path.join(path, 'emoticons.py'), 'w') fd = open(os.path.join(path, 'emoticons.py'), 'w')
fd.write('emoticons = ') fd.write('emoticons = ')
pprint.pprint( dict([(file, [i for i in emots.keys() if emots[i] ==\ pprint.pprint( dict([
file]) for file in set(emots.values())]), fd) (file_, [i for i in emots.keys() if emots[i] == file_])
for file_ in set(emots.values())]), fd)
fd.close() fd.close()
del emoticons del emoticons
self._init_emoticons(path, need_reload=True) self._init_emoticons(path, need_reload=True)
@ -2934,11 +2935,11 @@ class Interface:
os.remove(path_to_original_file) os.remove(path_to_original_file)
if local and photo: if local and photo:
pixbuf = photo pixbuf = photo
type = 'png' typ = 'png'
extension = '_local.png' # save local avatars as png file extension = '_local.png' # save local avatars as png file
else: else:
pixbuf, typ = gtkgui_helpers.get_pixbuf_from_data(photo, want_type = True) pixbuf, typ = gtkgui_helpers.get_pixbuf_from_data(photo, want_type = True)
if pixbuf is None: if pixbuf is None:
return return
extension = '.' + typ extension = '.' + typ
if typ not in ('jpeg', 'png'): if typ not in ('jpeg', 'png'):

View file

@ -87,8 +87,8 @@ 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).decode('utf-8') old_name = model.get_value(iter_, 0).decode('utf-8')
new_name = new_name.decode('utf-8') new_name = new_name.decode('utf-8')
if old_name == new_name: if old_name == new_name:
return return
@ -106,14 +106,14 @@ class GajimThemesWindow:
properties = ['textcolor', 'bgcolor', 'font', 'fontattrs'] properties = ['textcolor', 'bgcolor', 'font', 'fontattrs']
gajim.config.add_per('themes', new_config_name) gajim.config.add_per('themes', new_config_name)
for option in self.options: for option in self.options:
for property in properties: for property_ in properties:
option_name = option + property option_name = option + property_
gajim.config.set_per('themes', new_config_name, option_name, gajim.config.set_per('themes', new_config_name, option_name,
gajim.config.get_per('themes', old_config_name, option_name)) gajim.config.get_per('themes', old_config_name, option_name))
gajim.config.del_per('themes', old_config_name) gajim.config.del_per('themes', old_config_name)
if old_config_name == gajim.config.get('roster_theme'): if old_config_name == gajim.config.get('roster_theme'):
gajim.config.set('roster_theme', new_config_name) gajim.config.set('roster_theme', new_config_name)
model.set_value(iter, 0, new_name) model.set_value(iter_, 0, new_name)
self.current_theme = new_name self.current_theme = new_name
def fill_themes_treeview(self): def fill_themes_treeview(self):
@ -125,12 +125,12 @@ class GajimThemesWindow:
def select_active_theme(self): def select_active_theme(self):
model = self.themes_tree.get_model() model = self.themes_tree.get_model()
iter = model.get_iter_root() iter_ = model.get_iter_root()
active_theme = gajim.config.get('roster_theme').replace('_', ' ') active_theme = gajim.config.get('roster_theme').replace('_', ' ')
while iter: while iter_:
theme = model[iter][0] theme = model[iter_][0]
if theme == active_theme: if theme == active_theme:
self.themes_tree.get_selection().select_iter(iter) self.themes_tree.get_selection().select_iter(iter_)
self.xml.get_widget('remove_button').set_sensitive(True) self.xml.get_widget('remove_button').set_sensitive(True)
self.theme_options_vbox.set_sensitive(True) self.theme_options_vbox.set_sensitive(True)
self.theme_options_table.set_sensitive(True) self.theme_options_table.set_sensitive(True)
@ -143,16 +143,16 @@ class GajimThemesWindow:
self.theme_options_vbox.set_sensitive(True) self.theme_options_vbox.set_sensitive(True)
self.theme_options_table.set_sensitive(True) self.theme_options_table.set_sensitive(True)
break break
iter = model.iter_next(iter) iter_ = model.iter_next(iter_)
def selection_changed(self, widget = None): def selection_changed(self, widget = None):
(model, iter) = self.themes_tree.get_selection().get_selected() (model, iter_) = self.themes_tree.get_selection().get_selected()
selected = self.themes_tree.get_selection().get_selected_rows() selected = self.themes_tree.get_selection().get_selected_rows()
if not iter or selected[1] == []: if not iter_ or selected[1] == []:
self.theme_options_vbox.set_sensitive(False) self.theme_options_vbox.set_sensitive(False)
self.theme_options_table.set_sensitive(False) self.theme_options_table.set_sensitive(False)
return return
self.current_theme = model.get_value(iter, 0).decode('utf-8') self.current_theme = model.get_value(iter_, 0).decode('utf-8')
self.current_theme = self.current_theme.replace(' ', '_') self.current_theme = self.current_theme.replace(' ', '_')
self.set_theme_options(self.current_theme) self.set_theme_options(self.current_theme)
if self.current_theme == 'default': if self.current_theme == 'default':
@ -166,23 +166,23 @@ class GajimThemesWindow:
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
# don't confuse translators # don't confuse translators
theme_name = _('theme name') theme_name = _('theme name')
theme_name_ns = theme_name.replace(' ', '_') theme_name_ns = theme_name.replace(' ', '_')
while theme_name_ns + unicode(i) in gajim.config.get_per('themes'): while theme_name_ns + unicode(i) in gajim.config.get_per('themes'):
i += 1 i += 1
model.set_value(iter, 0, theme_name + unicode(i)) model.set_value(iter_, 0, theme_name + unicode(i))
gajim.config.add_per('themes', theme_name_ns + unicode(i)) gajim.config.add_per('themes', theme_name_ns + unicode(i))
self.themes_tree.get_selection().select_iter(iter) self.themes_tree.get_selection().select_iter(iter_)
col = self.themes_tree.get_column(0) col = self.themes_tree.get_column(0)
path = model.get_path(iter) path = model.get_path(iter_)
self.themes_tree.set_cursor(path, col, True) self.themes_tree.set_cursor(path, col, True)
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
if self.current_theme == gajim.config.get('roster_theme'): if self.current_theme == gajim.config.get('roster_theme'):
dialogs.ErrorDialog( dialogs.ErrorDialog(
@ -193,7 +193,7 @@ class GajimThemesWindow:
self.theme_options_table.set_sensitive(False) self.theme_options_table.set_sensitive(False)
self.xml.get_widget('remove_button').set_sensitive(False) self.xml.get_widget('remove_button').set_sensitive(False)
gajim.config.del_per('themes', self.current_theme) gajim.config.del_per('themes', self.current_theme)
model.remove(iter) model.remove(iter_)
def set_theme_options(self, theme, option = 'account'): def set_theme_options(self, theme, option = 'account'):
self.no_update = True self.no_update = True

View file

@ -181,16 +181,17 @@ class GroupchatControl(ChatControlBase):
self.change_nick_dialog = None self.change_nick_dialog = None
self.actions_button = self.xml.get_widget('muc_window_actions_button') self.actions_button = self.xml.get_widget('muc_window_actions_button')
id = self.actions_button.connect('clicked', self.on_actions_button_clicked) id_ = self.actions_button.connect('clicked',
self.handlers[id] = self.actions_button self.on_actions_button_clicked)
self.handlers[id_] = self.actions_button
widget = self.xml.get_widget('change_nick_button') widget = self.xml.get_widget('change_nick_button')
id = widget.connect('clicked', self._on_change_nick_menuitem_activate) id_ = widget.connect('clicked', self._on_change_nick_menuitem_activate)
self.handlers[id] = widget self.handlers[id_] = widget
widget = self.xml.get_widget('change_subject_button') widget = self.xml.get_widget('change_subject_button')
id = widget.connect('clicked', self._on_change_subject_menuitem_activate) id_ = widget.connect('clicked', self._on_change_subject_menuitem_activate)
self.handlers[id] = widget self.handlers[id_] = widget
widget = self.xml.get_widget('bookmark_button') widget = self.xml.get_widget('bookmark_button')
for bm in gajim.connections[self.account].bookmarks: for bm in gajim.connections[self.account].bookmarks:
@ -198,38 +199,38 @@ class GroupchatControl(ChatControlBase):
widget.hide() widget.hide()
break break
else: else:
id = widget.connect('clicked', id_ = widget.connect('clicked',
self._on_bookmark_room_menuitem_activate) self._on_bookmark_room_menuitem_activate)
self.handlers[id] = widget self.handlers[id_] = widget
widget.show() widget.show()
widget = self.xml.get_widget('list_treeview') widget = self.xml.get_widget('list_treeview')
id = widget.connect('row_expanded', self.on_list_treeview_row_expanded) id_ = widget.connect('row_expanded', self.on_list_treeview_row_expanded)
self.handlers[id] = widget self.handlers[id_] = widget
id = widget.connect('row_collapsed', id_ = widget.connect('row_collapsed',
self.on_list_treeview_row_collapsed) self.on_list_treeview_row_collapsed)
self.handlers[id] = widget self.handlers[id_] = widget
id = widget.connect('row_activated', id_ = widget.connect('row_activated',
self.on_list_treeview_row_activated) self.on_list_treeview_row_activated)
self.handlers[id] = widget self.handlers[id_] = widget
id = widget.connect('button_press_event', id_ = widget.connect('button_press_event',
self.on_list_treeview_button_press_event) self.on_list_treeview_button_press_event)
self.handlers[id] = widget self.handlers[id_] = widget
id = widget.connect('key_press_event', id_ = widget.connect('key_press_event',
self.on_list_treeview_key_press_event) self.on_list_treeview_key_press_event)
self.handlers[id] = widget self.handlers[id_] = widget
id = widget.connect('motion_notify_event', id_ = widget.connect('motion_notify_event',
self.on_list_treeview_motion_notify_event) self.on_list_treeview_motion_notify_event)
self.handlers[id] = widget self.handlers[id_] = widget
id = widget.connect('leave_notify_event', id_ = widget.connect('leave_notify_event',
self.on_list_treeview_leave_notify_event) self.on_list_treeview_leave_notify_event)
self.handlers[id] = widget self.handlers[id_] = widget
self.room_jid = self.contact.jid self.room_jid = self.contact.jid
self.nick = contact.name.decode('utf-8') self.nick = contact.name.decode('utf-8')
@ -277,39 +278,39 @@ class GroupchatControl(ChatControlBase):
xm = gtkgui_helpers.get_glade('gc_control_popup_menu.glade') xm = gtkgui_helpers.get_glade('gc_control_popup_menu.glade')
self.bookmark_room_menuitem = xm.get_widget('bookmark_room_menuitem') self.bookmark_room_menuitem = xm.get_widget('bookmark_room_menuitem')
id = self.bookmark_room_menuitem.connect('activate', id_ = self.bookmark_room_menuitem.connect('activate',
self._on_bookmark_room_menuitem_activate) self._on_bookmark_room_menuitem_activate)
self.handlers[id] = self.bookmark_room_menuitem self.handlers[id_] = self.bookmark_room_menuitem
self.change_nick_menuitem = xm.get_widget('change_nick_menuitem') self.change_nick_menuitem = xm.get_widget('change_nick_menuitem')
id = self.change_nick_menuitem.connect('activate', id_ = self.change_nick_menuitem.connect('activate',
self._on_change_nick_menuitem_activate) self._on_change_nick_menuitem_activate)
self.handlers[id] = self.change_nick_menuitem self.handlers[id_] = self.change_nick_menuitem
self.configure_room_menuitem = xm.get_widget('configure_room_menuitem') self.configure_room_menuitem = xm.get_widget('configure_room_menuitem')
id = self.configure_room_menuitem.connect('activate', id_ = self.configure_room_menuitem.connect('activate',
self._on_configure_room_menuitem_activate) self._on_configure_room_menuitem_activate)
self.handlers[id] = self.configure_room_menuitem self.handlers[id_] = self.configure_room_menuitem
self.destroy_room_menuitem = xm.get_widget('destroy_room_menuitem') self.destroy_room_menuitem = xm.get_widget('destroy_room_menuitem')
id = self.destroy_room_menuitem.connect('activate', id_ = self.destroy_room_menuitem.connect('activate',
self._on_destroy_room_menuitem_activate) self._on_destroy_room_menuitem_activate)
self.handlers[id] = self.destroy_room_menuitem self.handlers[id_] = self.destroy_room_menuitem
self.change_subject_menuitem = xm.get_widget('change_subject_menuitem') self.change_subject_menuitem = xm.get_widget('change_subject_menuitem')
id = self.change_subject_menuitem.connect('activate', id_ = self.change_subject_menuitem.connect('activate',
self._on_change_subject_menuitem_activate) self._on_change_subject_menuitem_activate)
self.handlers[id] = self.change_subject_menuitem self.handlers[id_] = self.change_subject_menuitem
self.history_menuitem = xm.get_widget('history_menuitem') self.history_menuitem = xm.get_widget('history_menuitem')
id = self.history_menuitem.connect('activate', id_ = self.history_menuitem.connect('activate',
self._on_history_menuitem_activate) self._on_history_menuitem_activate)
self.handlers[id] = self.history_menuitem self.handlers[id_] = self.history_menuitem
self.minimize_menuitem = xm.get_widget('minimize_menuitem') self.minimize_menuitem = xm.get_widget('minimize_menuitem')
id = self.minimize_menuitem.connect('toggled', id_ = self.minimize_menuitem.connect('toggled',
self.on_minimize_menuitem_toggled) self.on_minimize_menuitem_toggled)
self.handlers[id] = self.minimize_menuitem self.handlers[id_] = self.minimize_menuitem
self.bookmark_separator = xm.get_widget('bookmark_separator') self.bookmark_separator = xm.get_widget('bookmark_separator')
self.separatormenuitem2 = xm.get_widget('separatormenuitem2') self.separatormenuitem2 = xm.get_widget('separatormenuitem2')
@ -326,18 +327,18 @@ class GroupchatControl(ChatControlBase):
self.list_treeview = self.xml.get_widget('list_treeview') self.list_treeview = self.xml.get_widget('list_treeview')
selection = self.list_treeview.get_selection() selection = self.list_treeview.get_selection()
id = selection.connect('changed', id_ = selection.connect('changed',
self.on_list_treeview_selection_changed) self.on_list_treeview_selection_changed)
self.handlers[id] = selection self.handlers[id_] = selection
id = self.list_treeview.connect('style-set', id_ = self.list_treeview.connect('style-set',
self.on_list_treeview_style_set) self.on_list_treeview_style_set)
self.handlers[id] = self.list_treeview self.handlers[id_] = self.list_treeview
# we want to know when the the widget resizes, because that is # we want to know when the the widget resizes, because that is
# an indication that the hpaned has moved... # an indication that the hpaned has moved...
# FIXME: Find a better indicator that the hpaned has moved. # FIXME: Find a better indicator that the hpaned has moved.
id = self.list_treeview.connect('size-allocate', id_ = self.list_treeview.connect('size-allocate',
self.on_treeview_size_allocate) self.on_treeview_size_allocate)
self.handlers[id] = self.list_treeview self.handlers[id_] = self.list_treeview
#status_image, shown_nick, type, nickname, avatar #status_image, shown_nick, type, nickname, avatar
store = gtk.TreeStore(gtk.Image, str, str, str, gtk.gdk.Pixbuf) store = gtk.TreeStore(gtk.Image, str, str, str, gtk.gdk.Pixbuf)
store.set_sort_func(C_NICK, self.tree_compare_iters) store.set_sort_func(C_NICK, self.tree_compare_iters)
@ -412,13 +413,13 @@ class GroupchatControl(ChatControlBase):
return -1 return -1
return 1 return 1
if type1 == 'contact': if type1 == 'contact':
gc_contact1 = gajim.contacts.get_gc_contact(self.account, self.room_jid, gc_contact1 = gajim.contacts.get_gc_contact(self.account,
nick1) self.room_jid, nick1)
if not gc_contact1: if not gc_contact1:
return 0 return 0
if type2 == 'contact': if type2 == 'contact':
gc_contact2 = gajim.contacts.get_gc_contact(self.account, self.room_jid, gc_contact2 = gajim.contacts.get_gc_contact(self.account,
nick2) self.room_jid, nick2)
if not gc_contact2: if not gc_contact2:
return 0 return 0
if type1 == 'contact' and type2 == 'contact' and \ if type1 == 'contact' and type2 == 'contact' and \
@ -456,8 +457,8 @@ class GroupchatControl(ChatControlBase):
self.room_jid)): self.room_jid)):
item = gtk.MenuItem(nick, use_underline = False) item = gtk.MenuItem(nick, use_underline = False)
submenu.append(item) submenu.append(item)
id = item.connect('activate', self.append_nick_in_msg_textview, nick) id_ = item.connect('activate', self.append_nick_in_msg_textview, nick)
self.handlers[id] = item self.handlers[id_] = item
menu.show_all() menu.show_all()
@ -728,8 +729,8 @@ class GroupchatControl(ChatControlBase):
autopopup = gajim.config.get('autopopup') autopopup = gajim.config.get('autopopup')
autopopupaway = gajim.config.get('autopopupaway') autopopupaway = gajim.config.get('autopopupaway')
iter = self.get_contact_iter(nick) iter_ = self.get_contact_iter(nick)
path = self.list_treeview.get_model().get_path(iter) path = self.list_treeview.get_model().get_path(iter_)
if not autopopup or (not autopopupaway and \ if not autopopup or (not autopopupaway and \
gajim.connections[self.account].connected > 2): gajim.connections[self.account].connected > 2):
if no_queue: # We didn't have a queue: we change icons if no_queue: # We didn't have a queue: we change icons
@ -738,7 +739,7 @@ class GroupchatControl(ChatControlBase):
gajim.interface.roster.get_appropriate_state_images( gajim.interface.roster.get_appropriate_state_images(
self.room_jid, icon_name = 'event') self.room_jid, icon_name = 'event')
image = state_images['event'] image = state_images['event']
model[iter][C_IMG] = image model[iter_][C_IMG] = image
if self.parent_win: if self.parent_win:
self.parent_win.show_title() self.parent_win.show_title()
self.parent_win.redraw_tab(self) self.parent_win.redraw_tab(self)
@ -1031,8 +1032,8 @@ class GroupchatControl(ChatControlBase):
_on_send_files(gc_contact) _on_send_files(gc_contact)
def draw_contact(self, nick, selected=False, focus=False): def draw_contact(self, nick, selected=False, focus=False):
iter = self.get_contact_iter(nick) iter_ = self.get_contact_iter(nick)
if not iter: if not iter_:
return return
model = self.list_treeview.get_model() model = self.list_treeview.get_model()
gc_contact = gajim.contacts.get_gc_contact(self.account, self.room_jid, gc_contact = gajim.contacts.get_gc_contact(self.account, self.room_jid,
@ -1057,15 +1058,15 @@ class GroupchatControl(ChatControlBase):
name += '\n' '<span size="small" style="italic" foreground="%s">%s</span>'\ name += '\n' '<span size="small" style="italic" foreground="%s">%s</span>'\
% (colorstring, gobject.markup_escape_text(status)) % (colorstring, gobject.markup_escape_text(status))
model[iter][C_IMG] = image model[iter_][C_IMG] = image
model[iter][C_TEXT] = name model[iter_][C_TEXT] = name
def draw_avatar(self, nick): def draw_avatar(self, nick):
if not gajim.config.get('show_avatars_in_roster'): if not gajim.config.get('show_avatars_in_roster'):
return return
model = self.list_treeview.get_model() model = self.list_treeview.get_model()
iter = self.get_contact_iter(nick) iter_ = self.get_contact_iter(nick)
if not iter: if not iter_:
return return
pixbuf = gtkgui_helpers.get_avatar_pixbuf_from_cache(self.room_jid + \ pixbuf = gtkgui_helpers.get_avatar_pixbuf_from_cache(self.room_jid + \
'/' + nick, True) '/' + nick, True)
@ -1073,7 +1074,7 @@ class GroupchatControl(ChatControlBase):
scaled_pixbuf = None scaled_pixbuf = None
else: else:
scaled_pixbuf = gtkgui_helpers.get_scaled_pixbuf(pixbuf, 'roster') scaled_pixbuf = gtkgui_helpers.get_scaled_pixbuf(pixbuf, 'roster')
model[iter][C_AVATAR] = scaled_pixbuf model[iter_][C_AVATAR] = scaled_pixbuf
def draw_role(self, role): def draw_role(self, role):
role_iter = self.get_role_iter(role) role_iter = self.get_role_iter(role)
@ -1229,9 +1230,9 @@ class GroupchatControl(ChatControlBase):
if self.parent_win: if self.parent_win:
self.parent_win.redraw_tab(self) self.parent_win.redraw_tab(self)
else: else:
iter = self.get_contact_iter(nick) iter_ = self.get_contact_iter(nick)
if not iter: if not iter_:
iter = self.add_contact_to_roster(nick, show, role, affiliation, iter_ = self.add_contact_to_roster(nick, show, role, affiliation,
status, jid) status, jid)
newly_created = True newly_created = True
self.draw_all_roles() self.draw_all_roles()
@ -1363,7 +1364,7 @@ class GroupchatControl(ChatControlBase):
(gajim.interface.jabber_state_images['16']['closed'], role, (gajim.interface.jabber_state_images['16']['closed'], role,
'role', role_name, None)) 'role', role_name, None))
self.draw_all_roles() self.draw_all_roles()
iter = model.append(role_iter, (None, nick, 'contact', name, None)) iter_ = model.append(role_iter, (None, nick, 'contact', name, None))
if not nick in gajim.contacts.get_nick_list(self.account, self.room_jid): if not nick in gajim.contacts.get_nick_list(self.account, self.room_jid):
gc_contact = gajim.contacts.create_gc_contact(room_jid = self.room_jid, gc_contact = gajim.contacts.create_gc_contact(room_jid = self.room_jid,
name = nick, show = show, status = status, role = role, name = nick, show = show, status = status, role = role,
@ -1390,35 +1391,35 @@ class GroupchatControl(ChatControlBase):
self.list_treeview.expand_row((model.get_path(role_iter)), False) self.list_treeview.expand_row((model.get_path(role_iter)), False)
if self.is_continued: if self.is_continued:
self.draw_banner_text() self.draw_banner_text()
return iter return iter_
def get_role_iter(self, role): def get_role_iter(self, role):
model = self.list_treeview.get_model() model = self.list_treeview.get_model()
fin = False fin = False
iter = model.get_iter_root() iter_ = model.get_iter_root()
if not iter: if not iter_:
return None return None
while not fin: while not fin:
role_name = model[iter][C_NICK].decode('utf-8') role_name = model[iter_][C_NICK].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_)
if not iter: if not iter_:
fin = True fin = True
return None return None
def remove_contact(self, nick): def remove_contact(self, nick):
'''Remove a user from the contacts_list''' '''Remove a user from the contacts_list'''
model = self.list_treeview.get_model() model = self.list_treeview.get_model()
iter = self.get_contact_iter(nick) iter_ = self.get_contact_iter(nick)
if not iter: if not iter_:
return return
gc_contact = gajim.contacts.get_gc_contact(self.account, self.room_jid, gc_contact = gajim.contacts.get_gc_contact(self.account, self.room_jid,
nick) nick)
if gc_contact: if gc_contact:
gajim.contacts.remove_gc_contact(self.account, gc_contact) gajim.contacts.remove_gc_contact(self.account, gc_contact)
parent_iter = model.iter_parent(iter) parent_iter = model.iter_parent(iter_)
model.remove(iter) model.remove(iter_)
if model.iter_n_children(parent_iter) == 0: if model.iter_n_children(parent_iter) == 0:
model.remove(parent_iter) model.remove(parent_iter)
@ -1808,8 +1809,8 @@ class GroupchatControl(ChatControlBase):
on_minimize(self) on_minimize(self)
return return
if method == self.parent_win.CLOSE_ESC: if method == self.parent_win.CLOSE_ESC:
iter = self.list_treeview.get_selection().get_selected()[1] iter_ = self.list_treeview.get_selection().get_selected()[1]
if iter: if iter_:
self.list_treeview.get_selection().unselect_all() self.list_treeview.get_selection().unselect_all()
on_no(self) on_no(self)
return return
@ -1924,9 +1925,9 @@ class GroupchatControl(ChatControlBase):
return return
data = selection.data data = selection.data
path = treeview.get_selection().get_selected_rows()[1][0] path = treeview.get_selection().get_selected_rows()[1][0]
iter = model.get_iter(path) iter_ = model.get_iter(path)
type = model[iter][2] type_ = model[iter_][2]
if type != 'contact': # source is not a contact if type_ != 'contact': # source is not a contact
return return
contact_jid = data.decode('utf-8') contact_jid = data.decode('utf-8')
gajim.connections[self.account].send_invite(self.room_jid, contact_jid) gajim.connections[self.account].send_invite(self.room_jid, contact_jid)
@ -2053,8 +2054,8 @@ class GroupchatControl(ChatControlBase):
def on_list_treeview_key_press_event(self, widget, event): def on_list_treeview_key_press_event(self, widget, event):
if event.keyval == gtk.keysyms.Escape: if event.keyval == gtk.keysyms.Escape:
selection = widget.get_selection() selection = widget.get_selection()
iter = selection.get_selected()[1] iter_ = selection.get_selected()[1]
if iter: if iter_:
widget.get_selection().unselect_all() widget.get_selection().unselect_all()
return True return True
@ -2106,8 +2107,8 @@ class GroupchatControl(ChatControlBase):
'owner')) or (user_affiliation == 'none' and target_affiliation != \ 'owner')) or (user_affiliation == 'none' and target_affiliation != \
'none'): 'none'):
item.set_sensitive(False) item.set_sensitive(False)
id = item.connect('activate', self.kick, nick) id_ = item.connect('activate', self.kick, nick)
self.handlers[id] = item self.handlers[id_] = item
item = xml.get_widget('voice_checkmenuitem') item = xml.get_widget('voice_checkmenuitem')
item.set_active(target_role != 'visitor') item.set_active(target_role != 'visitor')
@ -2116,69 +2117,69 @@ class GroupchatControl(ChatControlBase):
(user_affiliation=='member' and target_affiliation!='none') or \ (user_affiliation=='member' and target_affiliation!='none') or \
target_affiliation in ('admin', 'owner'): target_affiliation in ('admin', 'owner'):
item.set_sensitive(False) item.set_sensitive(False)
id = item.connect('activate', self.on_voice_checkmenuitem_activate, id_ = item.connect('activate', self.on_voice_checkmenuitem_activate,
nick) nick)
self.handlers[id] = item self.handlers[id_] = item
item = xml.get_widget('moderator_checkmenuitem') item = xml.get_widget('moderator_checkmenuitem')
item.set_active(target_role == 'moderator') item.set_active(target_role == 'moderator')
if not user_affiliation in ('admin', 'owner') or \ if not user_affiliation in ('admin', 'owner') or \
target_affiliation in ('admin', 'owner'): target_affiliation in ('admin', 'owner'):
item.set_sensitive(False) item.set_sensitive(False)
id = item.connect('activate', self.on_moderator_checkmenuitem_activate, id_ = item.connect('activate', self.on_moderator_checkmenuitem_activate,
nick) nick)
self.handlers[id] = item self.handlers[id_] = item
item = xml.get_widget('ban_menuitem') item = xml.get_widget('ban_menuitem')
if not user_affiliation in ('admin', 'owner') or \ if not user_affiliation in ('admin', 'owner') or \
(target_affiliation in ('admin', 'owner') and\ (target_affiliation in ('admin', 'owner') and\
user_affiliation != 'owner'): user_affiliation != 'owner'):
item.set_sensitive(False) item.set_sensitive(False)
id = item.connect('activate', self.ban, jid) id_ = item.connect('activate', self.ban, jid)
self.handlers[id] = item self.handlers[id_] = item
item = xml.get_widget('member_checkmenuitem') item = xml.get_widget('member_checkmenuitem')
item.set_active(target_affiliation != 'none') item.set_active(target_affiliation != 'none')
if not user_affiliation in ('admin', 'owner') or \ if not user_affiliation in ('admin', 'owner') or \
(user_affiliation != 'owner' and target_affiliation in ('admin','owner')): (user_affiliation != 'owner' and target_affiliation in ('admin','owner')):
item.set_sensitive(False) item.set_sensitive(False)
id = item.connect('activate', self.on_member_checkmenuitem_activate, id_ = item.connect('activate', self.on_member_checkmenuitem_activate,
jid) jid)
self.handlers[id] = item self.handlers[id_] = item
item = xml.get_widget('admin_checkmenuitem') item = xml.get_widget('admin_checkmenuitem')
item.set_active(target_affiliation in ('admin', 'owner')) item.set_active(target_affiliation in ('admin', 'owner'))
if not user_affiliation == 'owner': if not user_affiliation == 'owner':
item.set_sensitive(False) item.set_sensitive(False)
id = item.connect('activate', self.on_admin_checkmenuitem_activate, jid) id_ = item.connect('activate', self.on_admin_checkmenuitem_activate, jid)
self.handlers[id] = item self.handlers[id_] = item
item = xml.get_widget('owner_checkmenuitem') item = xml.get_widget('owner_checkmenuitem')
item.set_active(target_affiliation == 'owner') item.set_active(target_affiliation == 'owner')
if not user_affiliation == 'owner': if not user_affiliation == 'owner':
item.set_sensitive(False) item.set_sensitive(False)
id = item.connect('activate', self.on_owner_checkmenuitem_activate, jid) id_ = item.connect('activate', self.on_owner_checkmenuitem_activate, jid)
self.handlers[id] = item self.handlers[id_] = item
item = xml.get_widget('information_menuitem') item = xml.get_widget('information_menuitem')
id = item.connect('activate', self.on_info, nick) id_ = item.connect('activate', self.on_info, nick)
self.handlers[id] = item self.handlers[id_] = item
item = xml.get_widget('history_menuitem') item = xml.get_widget('history_menuitem')
id = item.connect('activate', self.on_history, nick) id_ = item.connect('activate', self.on_history, nick)
self.handlers[id] = item self.handlers[id_] = item
item = xml.get_widget('add_to_roster_menuitem') item = xml.get_widget('add_to_roster_menuitem')
our_jid = gajim.get_jid_from_account(self.account) our_jid = gajim.get_jid_from_account(self.account)
if not jid or jid == our_jid: if not jid or jid == our_jid:
item.set_sensitive(False) item.set_sensitive(False)
else: else:
id = item.connect('activate', self.on_add_to_roster, jid) id_ = item.connect('activate', self.on_add_to_roster, jid)
self.handlers[id] = item self.handlers[id_] = item
item = xml.get_widget('send_private_message_menuitem') item = xml.get_widget('send_private_message_menuitem')
id = item.connect('activate', self.on_send_pm, model, iter_) id_ = item.connect('activate', self.on_send_pm, model, iter_)
self.handlers[id] = item self.handlers[id_] = item
item = xml.get_widget('send_file_menuitem') item = xml.get_widget('send_file_menuitem')
# add a special img for send file menuitem # add a special img for send file menuitem
@ -2190,8 +2191,8 @@ class GroupchatControl(ChatControlBase):
if not c.resource: if not c.resource:
item.set_sensitive(False) item.set_sensitive(False)
else: else:
id = item.connect('activate', self.on_send_file, c) id_ = item.connect('activate', self.on_send_file, c)
self.handlers[id] = item self.handlers[id_] = item
# show the popup now! # show the popup now!
menu = xml.get_widget('gc_occupants_menu') menu = xml.get_widget('gc_occupants_menu')
@ -2242,17 +2243,17 @@ class GroupchatControl(ChatControlBase):
if event.button == 3: # right click if event.button == 3: # right click
widget.get_selection().select_path(path) widget.get_selection().select_path(path)
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:
self.mk_menu(event, iter) self.mk_menu(event, iter_)
return True return True
elif event.button == 2: # middle click elif event.button == 2: # middle click
widget.get_selection().select_path(path) widget.get_selection().select_path(path)
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][C_NICK].decode('utf-8') nick = model[iter_][C_NICK].decode('utf-8')
self._start_private_message(nick) self._start_private_message(nick)
return True return True
@ -2262,8 +2263,8 @@ class GroupchatControl(ChatControlBase):
return True return True
else: else:
model = widget.get_model() model = widget.get_model()
iter = model.get_iter(path) iter_ = model.get_iter(path)
nick = model[iter][C_NICK].decode('utf-8') nick = model[iter_][C_NICK].decode('utf-8')
if not nick in gajim.contacts.get_nick_list(self.account, if not nick in gajim.contacts.get_nick_list(self.account,
self.room_jid): self.room_jid):
# it's a group # it's a group
@ -2301,19 +2302,19 @@ class GroupchatControl(ChatControlBase):
self.tooltip.hide_tooltip() self.tooltip.hide_tooltip()
if props: if props:
[row, col, x, y] = props [row, col, x, y] = props
iter = None iter_ = None
try: try:
iter = model.get_iter(row) iter_ = model.get_iter(row)
except Exception: except Exception:
self.tooltip.hide_tooltip() self.tooltip.hide_tooltip()
return return
typ = model[iter][C_TYPE].decode('utf-8') typ = model[iter_][C_TYPE].decode('utf-8')
if typ == 'contact': if typ == 'contact':
account = self.account account = self.account
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
nick = model[iter][C_NICK].decode('utf-8') nick = model[iter_][C_NICK].decode('utf-8')
self.tooltip.timeout = gobject.timeout_add(500, self.tooltip.timeout = gobject.timeout_add(500,
self.show_tooltip, gajim.contacts.get_gc_contact(account, self.show_tooltip, gajim.contacts.get_gc_contact(account,
self.room_jid, nick)) self.room_jid, nick))

View file

@ -56,8 +56,8 @@ class GroupsPostWindow:
item.addChild('title', {}, [self.subject_entry.get_text()]) item.addChild('title', {}, [self.subject_entry.get_text()])
item.addChild('id', {}, ['0']) item.addChild('id', {}, ['0'])
buffer = self.contents_textview.get_buffer() buf = self.contents_textview.get_buffer()
item.addChild('content', {}, [buffer.get_text(buffer.get_start_iter(), buffer.get_end_iter())]) item.addChild('content', {}, [buf.get_text(buf.get_start_iter(), buf.get_end_iter())])
# publish it to node # publish it to node
gajim.connections[self.account].send_pb_publish(self.servicejid, self.groupid, item, '0') gajim.connections[self.account].send_pb_publish(self.servicejid, self.groupid, item, '0')

View file

@ -371,7 +371,7 @@ def get_abspath_for_script(scriptname, want_type = False):
'''checks if we are svn or normal user and returns abspath to asked script '''checks if we are svn or normal user and returns abspath to asked script
if want_type is True we return 'svn' or 'install' ''' if want_type is True we return 'svn' or 'install' '''
if os.path.isdir('.svn'): # we are svn user if os.path.isdir('.svn'): # we are svn user
type = 'svn' type_ = 'svn'
cwd = os.getcwd() # it's always ending with src cwd = os.getcwd() # it's always ending with src
if scriptname == 'gajim-remote': if scriptname == 'gajim-remote':
@ -397,13 +397,13 @@ def get_abspath_for_script(scriptname, want_type = False):
print >> sys.stderr, s print >> sys.stderr, s
else: # normal user (not svn user) else: # normal user (not svn user)
type = 'install' type_ = 'install'
# always make it like '/usr/local/bin/gajim' # always make it like '/usr/local/bin/gajim'
path_to_script = helpers.is_in_path(scriptname, True) path_to_script = helpers.is_in_path(scriptname, True)
if want_type: if want_type:
return path_to_script, type return path_to_script, type_
else: else:
return path_to_script return path_to_script
@ -873,16 +873,16 @@ def load_iconset(path, pixbuf2 = None, transport = False):
pixbuf2 on top left of each static images''' pixbuf2 on top left of each static images'''
path += '/' path += '/'
if transport: if transport:
list = ('online', 'chat', 'away', 'xa', 'dnd', 'offline', list_ = ('online', 'chat', 'away', 'xa', 'dnd', 'offline',
'not in roster') 'not in roster')
else: else:
list = ('connecting', 'online', 'chat', 'away', 'xa', 'dnd', list_ = ('connecting', 'online', 'chat', 'away', 'xa', 'dnd',
'invisible', 'offline', 'error', 'requested', 'event', 'opened', 'invisible', 'offline', 'error', 'requested', 'event', 'opened',
'closed', 'not in roster', 'muc_active', 'muc_inactive') 'closed', 'not in roster', 'muc_active', 'muc_inactive')
if pixbuf2: if pixbuf2:
list = ('connecting', 'online', 'chat', 'away', 'xa', 'dnd', list_ = ('connecting', 'online', 'chat', 'away', 'xa', 'dnd',
'offline', 'error', 'requested', 'event', 'not in roster') 'offline', 'error', 'requested', 'event', 'not in roster')
return _load_icon_list(list, path, pixbuf2) return _load_icon_list(list_, path, pixbuf2)
def load_icon(icon_name): def load_icon(icon_name):
'''load an icon from the iconset in 16x16''' '''load an icon from the iconset in 16x16'''
@ -944,9 +944,9 @@ def _load_icon_list(icons_list, path, pixbuf2 = None):
image = gtk.Image() image = gtk.Image()
image.show() image.show()
imgs[icon] = image imgs[icon] = image
for file in files: # loop seeking for either gif or png for file_ in files: # loop seeking for either gif or png
if os.path.exists(file): if os.path.exists(file_):
image.set_from_file(file) image.set_from_file(file_)
if pixbuf2 and image.get_storage_type() == gtk.IMAGE_PIXBUF: if pixbuf2 and image.get_storage_type() == gtk.IMAGE_PIXBUF:
# add pixbuf2 on top-left corner of image # add pixbuf2 on top-left corner of image
pixbuf1 = image.get_pixbuf() pixbuf1 = image.get_pixbuf()

View file

@ -988,8 +988,8 @@ class HtmlTextView(gtk.TextView):
return False return False
def display_html(self, html): def display_html(self, html):
buffer = self.get_buffer() buffer_ = self.get_buffer()
eob = buffer.get_end_iter() eob = buffer_.get_end_iter()
## this works too if libxml2 is not available ## this works too if libxml2 is not available
# parser = xml.sax.make_parser(['drv_libxml2']) # parser = xml.sax.make_parser(['drv_libxml2'])
# parser.setFeature(xml.sax.handler.feature_validation, True) # parser.setFeature(xml.sax.handler.feature_validation, True)
@ -999,7 +999,7 @@ class HtmlTextView(gtk.TextView):
# too much space after :) # too much space after :)
#if not eob.starts_line(): #if not eob.starts_line():
# buffer.insert(eob, '\n') # buffer_.insert(eob, '\n')

View file

@ -248,10 +248,10 @@ class IterableIPShell:
if verbose or debug: print header+cmd if verbose or debug: print header+cmd
# flush stdout so we don't mangle python's buffering # flush stdout so we don't mangle python's buffering
if not debug: if not debug:
input, output = os.popen4(cmd) input_, output = os.popen4(cmd)
print output.read() print output.read()
output.close() output.close()
input.close() input_.close()
class ConsoleView(gtk.TextView): class ConsoleView(gtk.TextView):
''' '''
@ -359,9 +359,9 @@ class ConsoleView(gtk.TextView):
@param text: Text to use as replacement. @param text: Text to use as replacement.
@type text: string @type text: string
''' '''
iter = self.text_buffer.get_iter_at_mark(self.line_start) iter_ = self.text_buffer.get_iter_at_mark(self.line_start)
iter.forward_to_line_end() iter_.forward_to_line_end()
self.text_buffer.delete(self.text_buffer.get_iter_at_mark(self.line_start), iter) self.text_buffer.delete(self.text_buffer.get_iter_at_mark(self.line_start), iter_)
self._write(text, True) self._write(text, True)
def getCurrentLine(self): def getCurrentLine(self):
@ -386,12 +386,12 @@ class ConsoleView(gtk.TextView):
@param text: Text to show. @param text: Text to show.
@type text: string @type text: string
''' '''
iter = self.text_buffer.get_iter_at_mark(self.line_start) iter_ = self.text_buffer.get_iter_at_mark(self.line_start)
iter.forward_to_line_end() iter_.forward_to_line_end()
self.text_buffer.apply_tag_by_name( self.text_buffer.apply_tag_by_name(
'notouch', 'notouch',
self.text_buffer.get_iter_at_mark(self.line_start), self.text_buffer.get_iter_at_mark(self.line_start),
iter) iter_)
self._write('\n'+text) self._write('\n'+text)
if text: if text:
self._write('\n') self._write('\n')
@ -515,12 +515,12 @@ class IPythonView(ConsoleView, IterableIPShell):
return False return False
completed, possibilities = self.complete(self.getCurrentLine()) completed, possibilities = self.complete(self.getCurrentLine())
if len(possibilities) > 1: if len(possibilities) > 1:
slice = self.getCurrentLine() slice_ = self.getCurrentLine()
self.write('\n') self.write('\n')
for symbol in possibilities: for symbol in possibilities:
self.write(symbol+'\n') self.write(symbol+'\n')
self.showPrompt(self.prompt) self.showPrompt(self.prompt)
self.changeLine(completed or slice) self.changeLine(completed or slice_)
return True return True
def _processLine(self): def _processLine(self):

View file

@ -289,9 +289,9 @@ class MessageTextView(gtk.TextView):
def clear(self, widget = None): def clear(self, widget = None):
'''clear text in the textview''' '''clear text in the textview'''
buffer = self.get_buffer() buffer_ = self.get_buffer()
start, end = buffer.get_bounds() start, end = buffer_.get_bounds()
buffer.delete(start, end) buffer_.delete(start, end)
# We register depending on keysym and modifier some bindings # We register depending on keysym and modifier some bindings

View file

@ -91,12 +91,12 @@ class MessageWindow(object):
# MessageWindow._on_window_delete, which manually destroys window # MessageWindow._on_window_delete, which manually destroys window
# through win.destroy() - this means no additional handlers for # through win.destroy() - this means no additional handlers for
# 'delete-event' are called. # 'delete-event' are called.
id = self.window.connect_after('delete-event', self._on_window_delete) id_ = self.window.connect_after('delete-event', self._on_window_delete)
self.handlers[id] = self.window self.handlers[id_] = self.window
id = self.window.connect('destroy', self._on_window_destroy) id_ = self.window.connect('destroy', self._on_window_destroy)
self.handlers[id] = self.window self.handlers[id_] = self.window
id = self.window.connect('focus-in-event', self._on_window_focus) id_ = self.window.connect('focus-in-event', self._on_window_focus)
self.handlers[id] = self.window self.handlers[id_] = self.window
keys=['<Control>f', '<Control>g', '<Control>h', '<Control>i', keys=['<Control>f', '<Control>g', '<Control>h', '<Control>i',
'<Control>l', '<Control>L', '<Control>n', '<Control>u', '<Control>v', '<Control>l', '<Control>L', '<Control>n', '<Control>u', '<Control>v',
@ -116,12 +116,12 @@ class MessageWindow(object):
self.window.add_events(gtk.gdk.POINTER_MOTION_MASK) self.window.add_events(gtk.gdk.POINTER_MOTION_MASK)
self.alignment = self.xml.get_widget('alignment') self.alignment = self.xml.get_widget('alignment')
id = self.notebook.connect('switch-page', id_ = self.notebook.connect('switch-page',
self._on_notebook_switch_page) self._on_notebook_switch_page)
self.handlers[id] = self.notebook self.handlers[id_] = self.notebook
id = self.notebook.connect('key-press-event', id_ = self.notebook.connect('key-press-event',
self._on_notebook_key_press) self._on_notebook_key_press)
self.handlers[id] = self.notebook self.handlers[id_] = self.notebook
# Remove the glade pages # Remove the glade pages
while self.notebook.get_n_pages(): while self.notebook.get_n_pages():
@ -166,10 +166,7 @@ class MessageWindow(object):
self.account = new_name self.account = new_name
def get_num_controls(self): def get_num_controls(self):
n = 0 return sum(len(d) for d in self._controls.values())
for dict in self._controls.values():
n += len(dict)
return n
def resize(self, width, height): def resize(self, width, height):
gtkgui_helpers.resize_window(self.window, width, height) gtkgui_helpers.resize_window(self.window, width, height)
@ -256,12 +253,12 @@ class MessageWindow(object):
xml = gtkgui_helpers.get_glade('message_window.glade', 'chat_tab_ebox') xml = gtkgui_helpers.get_glade('message_window.glade', 'chat_tab_ebox')
tab_label_box = xml.get_widget('chat_tab_ebox') tab_label_box = xml.get_widget('chat_tab_ebox')
widget = xml.get_widget('tab_close_button') widget = xml.get_widget('tab_close_button')
id = widget.connect('clicked', self._on_close_button_clicked, control) id_ = widget.connect('clicked', self._on_close_button_clicked, control)
control.handlers[id] = widget control.handlers[id_] = widget
id = tab_label_box.connect('button-press-event', self.on_tab_eventbox_button_press_event, id_ = tab_label_box.connect('button-press-event', self.on_tab_eventbox_button_press_event,
control.widget) control.widget)
control.handlers[id] = tab_label_box control.handlers[id_] = tab_label_box
self.notebook.append_page(control.widget, tab_label_box) self.notebook.append_page(control.widget, tab_label_box)
# If GTK+ version >= 2.10, use gtk native way to reorder tabs # If GTK+ version >= 2.10, use gtk native way to reorder tabs

View file

@ -96,17 +96,17 @@ class SearchWindow:
self.search_button.hide() self.search_button.hide()
def on_add_contact_button_clicked(self, widget): def on_add_contact_button_clicked(self, widget):
(model, iter) = self.result_treeview.get_selection().get_selected() (model, iter_) = self.result_treeview.get_selection().get_selected()
if not iter: if not iter_:
return return
jid = model[iter][self.jid_column] jid = model[iter_][self.jid_column]
dialogs.AddNewContactWindow(self.account, jid) dialogs.AddNewContactWindow(self.account, jid)
def on_information_button_clicked(self, widget): def on_information_button_clicked(self, widget):
(model, iter) = self.result_treeview.get_selection().get_selected() (model, iter_) = self.result_treeview.get_selection().get_selected()
if not iter: if not iter_:
return return
jid = model[iter][self.jid_column] jid = model[iter_][self.jid_column]
if jid in gajim.interface.instances[self.account]['infos']: if jid in gajim.interface.instances[self.account]['infos']:
gajim.interface.instances[self.account]['infos'][jid].window.present() gajim.interface.instances[self.account]['infos'][jid].window.present()
else: else:
@ -146,10 +146,10 @@ class SearchWindow:
def on_result_treeview_cursor_changed(self, treeview): def on_result_treeview_cursor_changed(self, treeview):
if self.jid_column == -1: if self.jid_column == -1:
return return
(model, iter) = treeview.get_selection().get_selected() (model, iter_) = treeview.get_selection().get_selected()
if not iter: if not iter_:
return return
if model[iter][self.jid_column]: if model[iter_][self.jid_column]:
self.add_contact_button.set_sensitive(True) self.add_contact_button.set_sensitive(True)
self.information_button.set_sensitive(True) self.information_button.set_sensitive(True)
else: else:

View file

@ -211,9 +211,9 @@ class StatusTable:
files.append(os.path.join(file_path, state_file + '.gif')) files.append(os.path.join(file_path, state_file + '.gif'))
image = gtk.Image() image = gtk.Image()
image.set_from_pixbuf(None) image.set_from_pixbuf(None)
for file in files: for f in files:
if os.path.exists(file): if os.path.exists(f):
image.set_from_file(file) image.set_from_file(f)
break break
spacer = gtk.Label(self.spacer_label) spacer = gtk.Label(self.spacer_label)
image.set_alignment(1, 0.5) image.set_alignment(1, 0.5)
@ -339,36 +339,36 @@ class GCTooltip(BaseTooltip):
# Add avatar # Add avatar
puny_name = helpers.sanitize_filename(contact.name) puny_name = helpers.sanitize_filename(contact.name)
puny_room = helpers.sanitize_filename(contact.room_jid) puny_room = helpers.sanitize_filename(contact.room_jid)
file = helpers.get_avatar_path(os.path.join(gajim.AVATAR_PATH, puny_room, file_ = helpers.get_avatar_path(os.path.join(gajim.AVATAR_PATH, puny_room,
puny_name)) puny_name))
if file: if file_:
self.avatar_image.set_from_file(file) _self.avatar_image.set_from_file(file_)
pix = self.avatar_image.get_pixbuf() pix = self.avatar_image.get_pixbuf()
pix = gtkgui_helpers.get_scaled_pixbuf(pix, 'tooltip') pix = gtkgui_helpers.get_scaled_pixbuf(pix, 'tooltip')
self.avatar_image.set_from_pixbuf(pix) self.avatar_image.set_from_pixbuf(pix)
else: else:
self.avatar_image.set_from_pixbuf(None) self.avatar_image.set_from_pixbuf(None)
while properties: while properties:
property = properties.pop(0) property_ = properties.pop(0)
vcard_current_row += 1 vcard_current_row += 1
vertical_fill = gtk.FILL vertical_fill = gtk.FILL
if not properties: if not properties:
vertical_fill |= gtk.EXPAND vertical_fill |= gtk.EXPAND
label = gtk.Label() label = gtk.Label()
label.set_alignment(0, 0) label.set_alignment(0, 0)
if property[1]: if property_[1]:
label.set_markup(property[0]) label.set_markup(property_[0])
vcard_table.attach(label, 1, 2, vcard_current_row, vcard_table.attach(label, 1, 2, vcard_current_row,
vcard_current_row + 1, gtk.FILL, vertical_fill, 0, 0) vcard_current_row + 1, gtk.FILL, vertical_fill, 0, 0)
label = gtk.Label() label = gtk.Label()
label.set_alignment(0, 0) label.set_alignment(0, 0)
label.set_markup(property[1]) label.set_markup(property_[1])
label.set_line_wrap(True) label.set_line_wrap(True)
vcard_table.attach(label, 2, 3, vcard_current_row, vcard_table.attach(label, 2, 3, vcard_current_row,
vcard_current_row + 1, gtk.EXPAND | gtk.FILL, vcard_current_row + 1, gtk.EXPAND | gtk.FILL,
vertical_fill, 0, 0) vertical_fill, 0, 0)
else: else:
label.set_markup(property[0]) label.set_markup(property_[0])
label.set_line_wrap(True) label.set_line_wrap(True)
vcard_table.attach(label, 1, 3, vcard_current_row, vcard_table.attach(label, 1, 3, vcard_current_row,
vcard_current_row + 1, gtk.FILL, vertical_fill, 0) vcard_current_row + 1, gtk.FILL, vertical_fill, 0)
@ -409,9 +409,9 @@ class RosterTooltip(NotificationAreaTooltip):
puny_jid = helpers.sanitize_filename(prim_contact.jid) puny_jid = helpers.sanitize_filename(prim_contact.jid)
table_size = 3 table_size = 3
file = helpers.get_avatar_path(os.path.join(gajim.AVATAR_PATH, puny_jid)) file_ = helpers.get_avatar_path(os.path.join(gajim.AVATAR_PATH, puny_jid))
if file: if file_:
self.avatar_image.set_from_file(file) self.avatar_image.set_from_file(file_)
pix = self.avatar_image.get_pixbuf() pix = self.avatar_image.get_pixbuf()
pix = gtkgui_helpers.get_scaled_pixbuf(pix, 'tooltip') pix = gtkgui_helpers.get_scaled_pixbuf(pix, 'tooltip')
self.avatar_image.set_from_pixbuf(pix) self.avatar_image.set_from_pixbuf(pix)
@ -543,30 +543,30 @@ class RosterTooltip(NotificationAreaTooltip):
gobject.markup_escape_text(keyID))) gobject.markup_escape_text(keyID)))
while properties: while properties:
property = properties.pop(0) property_ = properties.pop(0)
vcard_current_row += 1 vcard_current_row += 1
vertical_fill = gtk.FILL vertical_fill = gtk.FILL
if not properties and table_size == 4: if not properties and table_size == 4:
vertical_fill |= gtk.EXPAND vertical_fill |= gtk.EXPAND
label = gtk.Label() label = gtk.Label()
label.set_alignment(0, 0) label.set_alignment(0, 0)
if property[1]: if property_[1]:
label.set_markup(property[0]) label.set_markup(property_[0])
vcard_table.attach(label, 1, 2, vcard_current_row, vcard_table.attach(label, 1, 2, vcard_current_row,
vcard_current_row + 1, gtk.FILL, vertical_fill, 0, 0) vcard_current_row + 1, gtk.FILL, vertical_fill, 0, 0)
label = gtk.Label() label = gtk.Label()
label.set_alignment(0, 0) label.set_alignment(0, 0)
label.set_markup(property[1]) label.set_markup(property_[1])
label.set_line_wrap(True) label.set_line_wrap(True)
vcard_table.attach(label, 2, 3, vcard_current_row, vcard_table.attach(label, 2, 3, vcard_current_row,
vcard_current_row + 1, gtk.EXPAND | gtk.FILL, vcard_current_row + 1, gtk.EXPAND | gtk.FILL,
vertical_fill, 0, 0) vertical_fill, 0, 0)
else: else:
if isinstance(property[0], (unicode, str)): #FIXME: rm unicode? if isinstance(property_[0], (unicode, str)): #FIXME: rm unicode?
label.set_markup(property[0]) label.set_markup(property_[0])
label.set_line_wrap(True) label.set_line_wrap(True)
else: else:
label = property[0] label = property_[0]
vcard_table.attach(label, 1, 3, vcard_current_row, vcard_table.attach(label, 1, 3, vcard_current_row,
vcard_current_row + 1, gtk.FILL, vertical_fill, 0) vcard_current_row + 1, gtk.FILL, vertical_fill, 0)
self.avatar_image.set_alignment(0, 0) self.avatar_image.set_alignment(0, 0)
@ -661,20 +661,20 @@ class FileTransfersTooltip(BaseTooltip):
properties.append((_('Name: '), properties.append((_('Name: '),
gobject.markup_escape_text(file_name))) gobject.markup_escape_text(file_name)))
if file_props['type'] == 'r': if file_props['type'] == 'r':
type = _('Download') type_ = _('Download')
actor = _('Sender: ') actor = _('Sender: ')
sender = unicode(file_props['sender']).split('/')[0] sender = unicode(file_props['sender']).split('/')[0]
name = gajim.contacts.get_first_contact_from_jid( name = gajim.contacts.get_first_contact_from_jid(
file_props['tt_account'], sender).get_shown_name() file_props['tt_account'], sender).get_shown_name()
else: else:
type = _('Upload') type_ = _('Upload')
actor = _('Recipient: ') actor = _('Recipient: ')
receiver = file_props['receiver'] receiver = file_props['receiver']
if hasattr(receiver, 'name'): if hasattr(receiver, 'name'):
name = receiver.get_shown_name() name = receiver.get_shown_name()
else: else:
name = receiver.split('/')[0] name = receiver.split('/')[0]
properties.append((_('Type: '), type)) properties.append((_('Type: '), type_))
properties.append((actor, gobject.markup_escape_text(name))) properties.append((actor, gobject.markup_escape_text(name)))
transfered_len = file_props.get('received-len', 0) transfered_len = file_props.get('received-len', 0)
@ -709,17 +709,17 @@ class FileTransfersTooltip(BaseTooltip):
properties.append((_('Description: '), gobject.markup_escape_text( properties.append((_('Description: '), gobject.markup_escape_text(
file_desc))) file_desc)))
while properties: while properties:
property = properties.pop(0) property_ = properties.pop(0)
current_row += 1 current_row += 1
label = gtk.Label() label = gtk.Label()
label.set_alignment(0, 0) label.set_alignment(0, 0)
label.set_markup(property[0]) label.set_markup(property_[0])
ft_table.attach(label, 1, 2, current_row, current_row + 1, ft_table.attach(label, 1, 2, current_row, current_row + 1,
gtk.FILL, gtk.FILL, 0, 0) gtk.FILL, gtk.FILL, 0, 0)
label = gtk.Label() label = gtk.Label()
label.set_alignment(0, 0) label.set_alignment(0, 0)
label.set_line_wrap(True) label.set_line_wrap(True)
label.set_markup(property[1]) label.set_markup(property_[1])
ft_table.attach(label, 2, 3, current_row, current_row + 1, ft_table.attach(label, 2, 3, current_row, current_row + 1,
gtk.EXPAND | gtk.FILL, gtk.FILL, 0, 0) gtk.EXPAND | gtk.FILL, gtk.FILL, 0, 0)

View file

@ -118,8 +118,8 @@ class VcardWindow:
self.fill_jabber_page() self.fill_jabber_page()
annotations = gajim.connections[self.account].annotations annotations = gajim.connections[self.account].annotations
if self.contact.jid in annotations: if self.contact.jid in annotations:
buffer = self.xml.get_widget('textview_annotation').get_buffer() buffer_ = self.xml.get_widget('textview_annotation').get_buffer()
buffer.set_text(annotations[self.contact.jid]) buffer_.set_text(annotations[self.contact.jid])
self.xml.signal_autoconnect(self) self.xml.signal_autoconnect(self)
self.window.show_all() self.window.show_all()
@ -133,9 +133,9 @@ class VcardWindow:
if self.update_progressbar_timeout_id is not None: if self.update_progressbar_timeout_id is not None:
gobject.source_remove(self.update_progressbar_timeout_id) gobject.source_remove(self.update_progressbar_timeout_id)
del gajim.interface.instances[self.account]['infos'][self.contact.jid] del gajim.interface.instances[self.account]['infos'][self.contact.jid]
buffer = self.xml.get_widget('textview_annotation').get_buffer() buffer_ = self.xml.get_widget('textview_annotation').get_buffer()
annotation = buffer.get_text(buffer.get_start_iter(), annotation = buffer_.get_text(buffer_.get_start_iter(),
buffer.get_end_iter()) buffer_.get_end_iter())
connection = gajim.connections[self.account] connection = gajim.connections[self.account]
if annotation != connection.annotations.get(self.contact.jid, ''): if annotation != connection.annotations.get(self.contact.jid, ''):
connection.annotations[self.contact.jid] = annotation connection.annotations[self.contact.jid] = annotation