[thorstenp] fix possible undefined loop variables
This commit is contained in:
parent
31dc32eeb9
commit
60ba33eb31
|
@ -400,14 +400,12 @@ class ChatControlBase(MessageControl):
|
|||
|
||||
def disconnect_style_event(self, widget):
|
||||
# Try to find the event_id
|
||||
found = False
|
||||
for id_ in self.handlers:
|
||||
for id_ in self.handlers.keys():
|
||||
if self.handlers[id_] == widget:
|
||||
found = True
|
||||
break
|
||||
if found:
|
||||
widget.disconnect(id_)
|
||||
del self.handlers[id_]
|
||||
break
|
||||
if found:
|
||||
|
||||
def connect_style_event(self, widget, set_fg = False, set_bg = False):
|
||||
self.disconnect_style_event(widget)
|
||||
|
|
|
@ -35,6 +35,7 @@
|
|||
import os
|
||||
import random
|
||||
import socket
|
||||
import operator
|
||||
|
||||
import time
|
||||
import locale
|
||||
|
@ -379,29 +380,30 @@ class Connection(ConnectionHandlers):
|
|||
self.dispatch('STANZA_SENT', unicode(data))
|
||||
|
||||
def _select_next_host(self, hosts):
|
||||
'''Chooses best 'real' host basing on the SRV priority and weight data;
|
||||
more info in RFC2782'''
|
||||
hosts_best_prio = []
|
||||
best_prio = 65535
|
||||
sum_weight = 0
|
||||
for h in hosts:
|
||||
if h['prio'] < best_prio:
|
||||
hosts_best_prio = [h]
|
||||
best_prio = h['prio']
|
||||
sum_weight = h['weight']
|
||||
elif h['prio'] == best_prio:
|
||||
hosts_best_prio.append(h)
|
||||
sum_weight += h['weight']
|
||||
if len(hosts_best_prio) == 1:
|
||||
return hosts_best_prio[0]
|
||||
r = random.randint(0, sum_weight)
|
||||
min_w = sum_weight
|
||||
# We return the one for which has the minimum weight and weight >= r
|
||||
for h in hosts_best_prio:
|
||||
if h['weight'] >= r:
|
||||
if h['weight'] <= min_w:
|
||||
min_w = h['weight']
|
||||
return h
|
||||
'''Selects the next host according to RFC2782 p.3 based on it's
|
||||
priority. Chooses between hosts with the same priority randomly,
|
||||
where the probability of being selected is proportional to the weight
|
||||
of the host.'''
|
||||
|
||||
hosts_by_prio = sorted(hosts, key=operator.itemgetter('prio'))
|
||||
|
||||
try:
|
||||
lowest_prio = hosts_by_prio[0]['prio']
|
||||
except IndexError:
|
||||
raise ValueError("No hosts to choose from!")
|
||||
|
||||
hosts_lowest_prio = [h for h in hosts_by_prio if h['prio'] == lowest_prio]
|
||||
|
||||
if len(hosts_lowest_prio) == 1:
|
||||
return hosts_lowest_prio[0]
|
||||
else:
|
||||
rndint = random.randint(0, sum(h['weight'] for h in hosts_lowest_prio))
|
||||
weightsum = 0
|
||||
for host in sorted(hosts_lowest_prio, key=operator.itemgetter(
|
||||
'weight')):
|
||||
weightsum += host['weight']
|
||||
if weightsum >= rndint:
|
||||
return host
|
||||
|
||||
def connect(self, data = None):
|
||||
''' Start a connection to the Jabber server.
|
||||
|
|
|
@ -410,30 +410,22 @@ def get_uf_chatstate(chatstate):
|
|||
return _('has closed the chat window or tab')
|
||||
return ''
|
||||
|
||||
def is_in_path(name_of_command, return_abs_path = False):
|
||||
# if return_abs_path is True absolute path will be returned
|
||||
# for name_of_command
|
||||
# on failures False is returned
|
||||
is_in_dir = False
|
||||
found_in_which_dir = None
|
||||
path = os.getenv('PATH').split(os.pathsep)
|
||||
for path_to_directory in path:
|
||||
try:
|
||||
contents = os.listdir(path_to_directory)
|
||||
except OSError: # user can have something in PATH that is not a dir
|
||||
pass
|
||||
else:
|
||||
is_in_dir = name_of_command in contents
|
||||
if is_in_dir:
|
||||
if return_abs_path:
|
||||
found_in_which_dir = path_to_directory
|
||||
break
|
||||
def is_in_path(command, return_abs_path=False):
|
||||
'''Returns True if 'command' is found in one of the directories in the
|
||||
user's path. If 'return_abs_path' is True, returns the absolute path of
|
||||
the first found command instead. Returns False otherwise and on errors.'''
|
||||
|
||||
if found_in_which_dir:
|
||||
abs_path = os.path.join(path_to_directory, name_of_command)
|
||||
return abs_path
|
||||
for directory in os.getenv('PATH').split(os.pathsep):
|
||||
try:
|
||||
if command in os.listdir(directory):
|
||||
if return_abs_path:
|
||||
return os.path.join(directory, command)
|
||||
else:
|
||||
return is_in_dir
|
||||
return True
|
||||
except OSError:
|
||||
# If the user has non directories in his path
|
||||
pass
|
||||
return False
|
||||
|
||||
def exec_command(command):
|
||||
subprocess.Popen(command, shell = True)
|
||||
|
|
|
@ -227,10 +227,7 @@ class Dispatcher(PlugIn):
|
|||
if typ+ns not in self.handlers[xmlns][name]:
|
||||
return
|
||||
for pack in self.handlers[xmlns][name][typ+ns]:
|
||||
if handler==pack['func']:
|
||||
break
|
||||
else:
|
||||
pack=None
|
||||
if pack['func'] == handler:
|
||||
try:
|
||||
self.handlers[xmlns][name][typ+ns].remove(pack)
|
||||
except ValueError:
|
||||
|
|
|
@ -211,7 +211,7 @@ class ConversationTextview:
|
|||
|
||||
|
||||
self.account = account
|
||||
self.change_cursor = None
|
||||
self.change_cursor = False
|
||||
self.last_time_printout = 0
|
||||
|
||||
font = pango.FontDescription(gajim.config.get('conversation_font'))
|
||||
|
@ -618,7 +618,7 @@ class ConversationTextview:
|
|||
if self.change_cursor:
|
||||
self.tv.get_window(gtk.TEXT_WINDOW_TEXT).set_cursor(
|
||||
gtk.gdk.Cursor(gtk.gdk.XTERM))
|
||||
self.change_cursor = None
|
||||
self.change_cursor = False
|
||||
tag_table = self.tv.get_buffer().get_tag_table()
|
||||
over_line = False
|
||||
xep0184_warning = False
|
||||
|
@ -627,7 +627,7 @@ class ConversationTextview:
|
|||
tag_table.lookup('xmpp'), tag_table.lookup('sth_at_sth')):
|
||||
self.tv.get_window(gtk.TEXT_WINDOW_TEXT).set_cursor(
|
||||
gtk.gdk.Cursor(gtk.gdk.HAND2))
|
||||
self.change_cursor = tag
|
||||
self.change_cursor = True
|
||||
elif tag == tag_table.lookup('focus-out-line'):
|
||||
over_line = True
|
||||
elif tag == tag_table.lookup('xep0184-warning'):
|
||||
|
@ -642,14 +642,13 @@ class ConversationTextview:
|
|||
self.show_line_tooltip)
|
||||
self.tv.get_window(gtk.TEXT_WINDOW_TEXT).set_cursor(
|
||||
gtk.gdk.Cursor(gtk.gdk.LEFT_PTR))
|
||||
self.change_cursor = tag
|
||||
self.change_cursor = True
|
||||
if xep0184_warning and not self.xep0184_warning_tooltip.win:
|
||||
self.xep0184_warning_tooltip.timeout = \
|
||||
gobject.timeout_add(500,
|
||||
self.xep0184_warning_tooltip.timeout = gobject.timeout_add(500,
|
||||
self.show_xep0184_warning_tooltip)
|
||||
self.tv.get_window(gtk.TEXT_WINDOW_TEXT).set_cursor(
|
||||
gtk.gdk.Cursor(gtk.gdk.LEFT_PTR))
|
||||
self.change_cursor = tag
|
||||
self.change_cursor = True
|
||||
|
||||
def clear(self, tv = None):
|
||||
'''clear text in the textview'''
|
||||
|
|
|
@ -967,21 +967,17 @@ class HtmlTextView(gtk.TextView):
|
|||
x, y, _ = widget.window.get_pointer()
|
||||
x, y = widget.window_to_buffer_coords(gtk.TEXT_WINDOW_TEXT, x, y)
|
||||
tags = widget.get_iter_at_location(x, y).get_tags()
|
||||
is_over_anchor = False
|
||||
for tag in tags:
|
||||
if getattr(tag, 'is_anchor', False):
|
||||
is_over_anchor = True
|
||||
break
|
||||
anchor_tags = [tag for tag in tags if getattr(tag, 'is_anchor', False)]
|
||||
if self.tooltip.timeout != 0:
|
||||
# Check if we should hide the line tooltip
|
||||
if not is_over_anchor:
|
||||
if not anchor_tags:
|
||||
self.tooltip.hide_tooltip()
|
||||
if not self._changed_cursor and is_over_anchor:
|
||||
if not self._changed_cursor and anchor_tags:
|
||||
window = widget.get_window(gtk.TEXT_WINDOW_TEXT)
|
||||
window.set_cursor(gtk.gdk.Cursor(gtk.gdk.HAND2))
|
||||
self._changed_cursor = True
|
||||
self.tooltip.timeout = gobject.timeout_add(500, self.show_tooltip, tag)
|
||||
elif self._changed_cursor and not is_over_anchor:
|
||||
self.tooltip.timeout = gobject.timeout_add(500, self.show_tooltip, anchor_tags[0])
|
||||
elif self._changed_cursor and not anchor_tags:
|
||||
window = widget.get_window(gtk.TEXT_WINDOW_TEXT)
|
||||
window.set_cursor(gtk.gdk.Cursor(gtk.gdk.XTERM))
|
||||
self._changed_cursor = False
|
||||
|
|
|
@ -266,10 +266,8 @@ class ProfileWindow:
|
|||
found = False
|
||||
for e in loc[entries[0]]:
|
||||
if entries[1] in e:
|
||||
found = True
|
||||
break
|
||||
if found:
|
||||
e[entries[2]] = txt
|
||||
break
|
||||
else:
|
||||
loc[entries[0]].append({entries[1]: '', entries[2]: txt})
|
||||
return vcard_
|
||||
|
|
|
@ -2512,7 +2512,7 @@ class RosterWindow:
|
|||
_('You must read them before removing this transport.'))
|
||||
return
|
||||
if len(list_) == 1:
|
||||
pritext = _('Transport "%s" will be removed') % contact.jid
|
||||
pritext = _('Transport "%s" will be removed') % list_[0][0].jid
|
||||
sectext = _('You will no longer be able to send and receive messages '
|
||||
'from contacts using this transport.')
|
||||
else:
|
||||
|
@ -2564,12 +2564,12 @@ class RosterWindow:
|
|||
'value' : group, 'child': [u'message', u'iq', u'presence-out']}
|
||||
gajim.connections[account].blocked_list.append(new_rule)
|
||||
for account in accounts:
|
||||
gajim.connections[account].set_privacy_list(
|
||||
'block', gajim.connections[account].blocked_list)
|
||||
if len(gajim.connections[account].blocked_list) == 1:
|
||||
gajim.connections[account].set_active_list('block')
|
||||
gajim.connections[account].set_default_list('block')
|
||||
gajim.connections[account].get_privacy_list('block')
|
||||
connection = gajim.connections[account]
|
||||
connection.set_privacy_list('block', connection.blocked_list)
|
||||
if len(connection.blocked_list) == 1:
|
||||
connection.set_active_list('block')
|
||||
connection.set_default_list('block')
|
||||
connection.get_privacy_list('block')
|
||||
|
||||
self.get_status_message('offline', on_continue)
|
||||
|
||||
|
|
|
@ -463,13 +463,13 @@ class RosterTooltip(NotificationAreaTooltip):
|
|||
contact_keys = sorted(contacts_dict.keys())
|
||||
contact_keys.reverse()
|
||||
for priority in contact_keys:
|
||||
for contact in contacts_dict[priority]:
|
||||
status_line = self.get_status_info(contact.resource,
|
||||
contact.priority, contact.show, contact.status)
|
||||
for acontact in contacts_dict[priority]:
|
||||
status_line = self.get_status_info(acontact.resource,
|
||||
acontact.priority, acontact.show, acontact.status)
|
||||
|
||||
icon_name = self._get_icon_name_for_tooltip(contact)
|
||||
icon_name = self._get_icon_name_for_tooltip(acontact)
|
||||
self.add_status_row(file_path, icon_name, status_line,
|
||||
contact.last_status_time)
|
||||
acontact.last_status_time)
|
||||
properties.append((self.table, None))
|
||||
|
||||
else: # only one resource
|
||||
|
|
Loading…
Reference in New Issue