JID->Jabber ID in gc tooltip

if print_time==sometimes : Show the day if needed also. Use locale for time format (do
not force
24h)
Delete a lot of unused locale variables (thanks pychecker)
del gajim.py useless global vars after use
configpaths.py : use self. not this.
This commit is contained in:
Jean-Marie Traissard 2006-11-21 18:46:33 +00:00
parent 6ece819abd
commit f041f8dd5e
15 changed files with 67 additions and 79 deletions

View File

@ -1120,7 +1120,6 @@ class ChatControl(ChatControlBase):
self.reset_kbd_mouse_timeout_vars() self.reset_kbd_mouse_timeout_vars()
contact = self.contact contact = self.contact
jid = self.contact.jid
keyID = '' keyID = ''
encrypted = False encrypted = False
@ -1189,7 +1188,6 @@ class ChatControl(ChatControlBase):
if yes we go active if yes we go active
if no we go inactive ''' if no we go inactive '''
contact = self.contact contact = self.contact
jid = contact.jid
current_state = contact.our_chatstate current_state = contact.our_chatstate
if current_state is False: # jid doesn't support chatstates if current_state is False: # jid doesn't support chatstates
@ -1439,7 +1437,6 @@ class ChatControl(ChatControlBase):
# contact was from pm in MUC, and left the room so contact is None # contact was from pm in MUC, and left the room so contact is None
# so we cannot send chatstate anymore # so we cannot send chatstate anymore
return return
jid = contact.jid
# Don't send chatstates to offline contacts # Don't send chatstates to offline contacts
if contact.show == 'offline': if contact.show == 'offline':

View File

@ -58,8 +58,6 @@ class OldEntry(xmpp.Node, object):
def get_feed_title(self): def get_feed_title(self):
''' Returns title of feed, where the entry was created. The result is the feed name ''' Returns title of feed, where the entry was created. The result is the feed name
concatenated with source-feed title. ''' concatenated with source-feed title. '''
title = u''
if self.parent is not None: if self.parent is not None:
main_feed = self.parent.getTagData('title') main_feed = self.parent.getTagData('title')
else: else:

View File

@ -26,11 +26,11 @@ def fse(s):
return unicode(s, sys.getfilesystemencoding()) return unicode(s, sys.getfilesystemencoding())
class ConfigPaths: class ConfigPaths:
def __init__(this, root=None): def __init__(self, root=None):
this.root = root self.root = root
this.paths = {} self.paths = {}
if this.root is None: if self.root is None:
if os.name == 'nt': if os.name == 'nt':
try: try:
# Documents and Settings\[User Name]\Application Data\Gajim # Documents and Settings\[User Name]\Application Data\Gajim
@ -38,35 +38,35 @@ class ConfigPaths:
# How are we supposed to know what encoding the environment # How are we supposed to know what encoding the environment
# variable 'appdata' is in? Assuming it to be in filesystem # variable 'appdata' is in? Assuming it to be in filesystem
# encoding. # encoding.
this.root = os.path.join(fse(os.environ[u'appdata']), u'Gajim') self.root = os.path.join(fse(os.environ[u'appdata']), u'Gajim')
except KeyError: except KeyError:
# win9x, in cwd # win9x, in cwd
this.root = u'' self.root = u''
else: # Unices else: # Unices
# Pass in an Unicode string, and hopefully get one back. # Pass in an Unicode string, and hopefully get one back.
this.root = os.path.expanduser(u'~/.gajim') self.root = os.path.expanduser(u'~/.gajim')
def add_from_root(this, name, path): def add_from_root(self, name, path):
this.paths[name] = (True, path) self.paths[name] = (True, path)
def add(this, name, path): def add(self, name, path):
this.paths[name] = (False, path) self.paths[name] = (False, path)
def __getitem__(this, key): def __getitem__(self, key):
relative, path = this.paths[key] relative, path = self.paths[key]
if not relative: if not relative:
return path return path
return os.path.join(this.root, path) return os.path.join(self.root, path)
def get(this, key, default=None): def get(self, key, default=None):
try: try:
return this[key] return self[key]
except KeyError: except KeyError:
return default return default
def iteritems(this): def iteritems(self):
for key in this.paths.iterkeys(): for key in self.paths.iterkeys():
yield (key, this[key]) yield (key, self[key])
def windowsify(s): def windowsify(s):
if os.name == 'nt': if os.name == 'nt':

View File

@ -107,8 +107,11 @@ class ProxyResolver:
query = iq.setTag('query') query = iq.setTag('query')
query.setNamespace(common.xmpp.NS_BYTESTREAM) query.setNamespace(common.xmpp.NS_BYTESTREAM)
query.setAttr('sid', self.sid) query.setAttr('sid', self.sid)
activate = query.setTag('activate')
query.setTag('activate')
# activate = query.setTag('activate')
# activate.setData(self.jid + "/" + self.sid) # activate.setData(self.jid + "/" + self.sid)
if self.active_connection: if self.active_connection:
self.active_connection.send(iq) self.active_connection.send(iq)
self.state = S_ACTIVATED self.state = S_ACTIVATED

View File

@ -268,7 +268,6 @@ class ConversationTextview:
if over_line and not self.line_tooltip.win: if over_line and not self.line_tooltip.win:
# check if the current pointer is still over the line # check if the current pointer is still over the line
position = self.tv.window.get_origin() position = self.tv.window.get_origin()
win = self.tv.get_toplevel()
self.line_tooltip.show_tooltip(_('Text below this line is what has ' self.line_tooltip.show_tooltip(_('Text below this line is what has '
'been said since the last time you paid attention to this group chat'), 8, position[1] + pointer[1]) 'been said since the last time you paid attention to this group chat'), 8, position[1] + pointer[1])
@ -408,7 +407,6 @@ class ConversationTextview:
if event.button != 3: # if not right click if event.button != 3: # if not right click
return False return False
win = self.tv.get_window(gtk.TEXT_WINDOW_TEXT)
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)
@ -691,27 +689,7 @@ class ConversationTextview:
before_str = helpers.from_one_line(before_str) before_str = helpers.from_one_line(before_str)
after_str = gajim.config.get('after_time') after_str = gajim.config.get('after_time')
after_str = helpers.from_one_line(after_str) after_str = helpers.from_one_line(after_str)
# get difference in days since epoch (86400 = 24*3600) tim_format = before_str + self.get_time_to_show(tim) + after_str
# number of days since epoch for current time (in GMT) -
# number of days since epoch for message (in GMT)
diff_day = int(timegm(time.localtime())) / 86400 - int(timegm(tim)) / 86400
if diff_day == 0:
day_str = ''
elif diff_day == 1:
day_str = _('Yesterday')
else:
#the number is >= 2
# %i is day in year (1-365), %d (1-31) we want %i
day_str = _('%i days ago') % diff_day
format = before_str
if day_str:
format += day_str + ' '
format += '%X' + after_str
tim_format = time.strftime(format, tim)
if locale.getpreferredencoding() == 'UTF-8':
# if tim_format comes as unicode because of day_str.
# we convert it to the encoding that we want (and that is utf-8)
tim_format = helpers.ensure_utf8_string(tim_format)
buffer.insert_with_tags_by_name(end_iter, tim_format + ' ', buffer.insert_with_tags_by_name(end_iter, tim_format + ' ',
*other_tags_for_time) *other_tags_for_time)
elif current_print_time == 'sometimes' and kind != 'info': elif current_print_time == 'sometimes' and kind != 'info':
@ -727,9 +705,7 @@ class ConversationTextview:
ft = fc.getFuzzyTime(gajim.config.get('print_time_fuzzy')) ft = fc.getFuzzyTime(gajim.config.get('print_time_fuzzy'))
tim_format = ft.decode(locale.getpreferredencoding()) tim_format = ft.decode(locale.getpreferredencoding())
else: else:
tim_format = time.strftime('%H:%M', tim).decode( tim_format = self.get_time_to_show(tim)
locale.getpreferredencoding())
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, ...
@ -761,6 +737,33 @@ class ConversationTextview:
buffer.end_user_action() buffer.end_user_action()
def get_time_to_show(self, tim):
'''Get the time, with the day before if needed and return it.
It DOESN'T format a fuzzy time'''
format = ''
# get difference in days since epoch (86400 = 24*3600)
# number of days since epoch for current time (in GMT) -
# number of days since epoch for message (in GMT)
diff_day = int(timegm(time.localtime())) / 86400 -\
int(timegm(tim)) / 86400
if diff_day == 0:
day_str = ''
elif diff_day == 1:
day_str = _('Yesterday')
else:
#the number is >= 2
# %i is day in year (1-365), %d (1-31) we want %i
day_str = _('%i days ago') % diff_day
if day_str:
format += day_str + ' '
format += '%X'
tim_format = time.strftime(format, tim)
if locale.getpreferredencoding() == 'UTF-8':
# if tim_format comes as unicode because of day_str.
# we convert it to the encoding that we want (and that is utf-8)
tim_format = helpers.ensure_utf8_string(tim_format)
return tim_format
def detect_other_text_tag(self, text, kind): def detect_other_text_tag(self, text, kind):
if kind == 'status': if kind == 'status':
return kind return kind

View File

@ -131,6 +131,8 @@ for o, a in opts:
gajim.verbose = True gajim.verbose = True
elif o in ('-p', '--profile'): # gajim --profile name elif o in ('-p', '--profile'): # gajim --profile name
profile = a profile = a
del opts
del args
import locale import locale
profile = unicode(profile, locale.getpreferredencoding()) profile = unicode(profile, locale.getpreferredencoding())
@ -152,8 +154,13 @@ if os.path.exists(pid_filename):
dialog = dialogs.YesNoDialog(pritext, sectext) dialog = dialogs.YesNoDialog(pritext, sectext)
if dialog.get_response() != gtk.RESPONSE_YES: if dialog.get_response() != gtk.RESPONSE_YES:
sys.exit(3) sys.exit(3)
# run anyway, delete pid and useless global vars
if os.path.exists(pid_filename): if os.path.exists(pid_filename):
os.remove(pid_filename) os.remove(pid_filename)
del path_to_file
del pix
del pritext
del sectext
dialog.destroy() dialog.destroy()
# Create .gajim dir # Create .gajim dir
@ -163,6 +170,7 @@ if not os.path.exists(pid_dir):
# Create pid file # Create pid file
f = open(pid_filename, 'a') f = open(pid_filename, 'a')
f.close() f.close()
del pid_dir
def on_exit(): def on_exit():
# delete pid file on normal exit # delete pid file on normal exit
@ -1145,7 +1153,7 @@ class Interface:
path_to_bw_file = path_to_file + '_notif_size_bw.png' path_to_bw_file = path_to_file + '_notif_size_bw.png'
bwbuf.save(path_to_bw_file, 'png') bwbuf.save(path_to_bw_file, 'png')
def add_event(self, account, jid, type_, args): def add_event(self, account, jid, type_, event_args):
'''add an event to the gajim.events var''' '''add an event to the gajim.events var'''
# We add it to the gajim.events queue # We add it to the gajim.events queue
# Do we have a queue? # Do we have a queue?
@ -1161,7 +1169,7 @@ class Interface:
event_type = event_types[type_] event_type = event_types[type_]
show_in_roster = notify.get_show_in_roster(event_type, account, jid) show_in_roster = notify.get_show_in_roster(event_type, account, jid)
show_in_systray = notify.get_show_in_systray(event_type, account, jid) show_in_systray = notify.get_show_in_systray(event_type, account, jid)
event = gajim.events.create_event(type_, args, event = gajim.events.create_event(type_, event_args,
show_in_roster = show_in_roster, show_in_roster = show_in_roster,
show_in_systray = show_in_systray) show_in_systray = show_in_systray)
gajim.events.add_event(account, jid, event) gajim.events.add_event(account, jid, event)

View File

@ -878,7 +878,6 @@ class GroupchatControl(ChatControlBase):
if (time.time() - self.room_creation) > 30 and \ if (time.time() - self.room_creation) > 30 and \
nick != self.nick and statusCode != '303': nick != self.nick and statusCode != '303':
st = '' st = ''
found = False
print_status = None print_status = None
for bookmark in gajim.connections[self.account].bookmarks: for bookmark in gajim.connections[self.account].bookmarks:
if bookmark['jid'] == self.room_jid: if bookmark['jid'] == self.room_jid:
@ -1414,8 +1413,6 @@ class GroupchatControl(ChatControlBase):
message_buffer = widget.get_buffer() message_buffer = widget.get_buffer()
start_iter, end_iter = message_buffer.get_bounds() start_iter, end_iter = message_buffer.get_bounds()
message = message_buffer.get_text(start_iter, end_iter, False).decode(
'utf-8')
if event.keyval == gtk.keysyms.Tab: # TAB if event.keyval == gtk.keysyms.Tab: # TAB
cursor_position = message_buffer.get_insert() cursor_position = message_buffer.get_insert()
@ -1765,7 +1762,6 @@ class GroupchatControl(ChatControlBase):
self.room_jid, nick)) self.room_jid, nick))
def on_list_treeview_leave_notify_event(self, widget, event): def on_list_treeview_leave_notify_event(self, widget, event):
model = widget.get_model()
props = widget.get_path_at_pos(int(event.x), int(event.y)) props = widget.get_path_at_pos(int(event.x), int(event.y))
if self.tooltip.timeout > 0: if self.tooltip.timeout > 0:
if not props or self.tooltip.id == props[0]: if not props or self.tooltip.id == props[0]:

View File

@ -792,7 +792,6 @@ class HtmlTextView(gtk.TextView):
if text: if text:
pointer = self.get_pointer() pointer = self.get_pointer()
position = self.window.get_origin() position = self.window.get_origin()
win = self.get_toplevel()
self.tooltip.show_tooltip(text, 8, position[1] + pointer[1]) self.tooltip.show_tooltip(text, 8, position[1] + pointer[1])
def __motion_notify_event(self, widget, event): def __motion_notify_event(self, widget, event):

View File

@ -491,8 +491,6 @@ class MessageWindow:
def _on_notebook_key_press(self, widget, event): def _on_notebook_key_press(self, widget, event):
st = '1234567890' # alt+1 means the first tab (tab 0) st = '1234567890' # alt+1 means the first tab (tab 0)
ctrl = self.get_active_control() ctrl = self.get_active_control()
contact = ctrl.contact
jid = ctrl.contact.jid
# CTRL mask # CTRL mask
if event.state & gtk.gdk.CONTROL_MASK: if event.state & gtk.gdk.CONTROL_MASK:
@ -557,7 +555,6 @@ class MessageWindow:
source_page_num = int(selection.data) source_page_num = int(selection.data)
dest_page_num, to_right = self.get_tab_at_xy(x, y) dest_page_num, to_right = self.get_tab_at_xy(x, y)
source_child = self.notebook.get_nth_page(source_page_num) source_child = self.notebook.get_nth_page(source_page_num)
source_tab_label = self.notebook.get_tab_label(source_child)
if dest_page_num != source_page_num: if dest_page_num != source_page_num:
self.notebook.reorder_child(source_child, dest_page_num) self.notebook.reorder_child(source_child, dest_page_num)

View File

@ -329,11 +329,9 @@ def popup(event_type, jid, account, msg_type = '', path_to_image = None,
instance) instance)
def on_pynotify_notification_clicked(notification, action): def on_pynotify_notification_clicked(notification, action):
event_type = notification.get_data('event_type')
jid = notification.get_data('jid') jid = notification.get_data('jid')
account = notification.get_data('account') account = notification.get_data('account')
msg_type = notification.get_data('msg_type') msg_type = notification.get_data('msg_type')
path_to_image = notification.get_data('path_to_image')
notification.close() notification.close()
gajim.interface.handle_event(account, jid, msg_type) gajim.interface.handle_event(account, jid, msg_type)

View File

@ -109,7 +109,6 @@ class ProfileWindow:
self.avatar_mime_type = None self.avatar_mime_type = None
def on_set_avatar_button_clicked(self, widget): def on_set_avatar_button_clicked(self, widget):
f = None
def on_ok(widget, path_to_file): def on_ok(widget, path_to_file):
filesize = os.path.getsize(path_to_file) # in bytes filesize = os.path.getsize(path_to_file) # in bytes
#FIXME: use messages for invalid file for 0.11 #FIXME: use messages for invalid file for 0.11

View File

@ -120,7 +120,6 @@ class SignalObject(dbus.service.Object):
returns status (show to be exact) which is the global one returns status (show to be exact) which is the global one
unless account is given''' unless account is given'''
account = self._get_real_arguments(args, 1)[0] account = self._get_real_arguments(args, 1)[0]
accounts = gajim.contacts.get_accounts()
if not account: if not account:
# If user did not ask for account, returns the global status # If user did not ask for account, returns the global status
return helpers.get_global_show() return helpers.get_global_show()
@ -134,7 +133,6 @@ class SignalObject(dbus.service.Object):
returns status which is the global one returns status which is the global one
unless account is given''' unless account is given'''
account = self._get_real_arguments(args, 1)[0] account = self._get_real_arguments(args, 1)[0]
accounts = gajim.contacts.get_accounts()
if not account: if not account:
# If user did not ask for account, returns the global status # If user did not ask for account, returns the global status
return str(helpers.get_global_status()) return str(helpers.get_global_status())

View File

@ -805,8 +805,6 @@ class RosterWindow:
add_new_contact_menuitem = self.xml.get_widget('add_new_contact_menuitem') add_new_contact_menuitem = self.xml.get_widget('add_new_contact_menuitem')
service_disco_menuitem = self.xml.get_widget('service_disco_menuitem') service_disco_menuitem = self.xml.get_widget('service_disco_menuitem')
advanced_menuitem = self.xml.get_widget('advanced_menuitem') advanced_menuitem = self.xml.get_widget('advanced_menuitem')
show_offline_contacts_menuitem = self.xml.get_widget(
'show_offline_contacts_menuitem')
profile_avatar_menuitem = self.xml.get_widget('profile_avatar_menuitem') profile_avatar_menuitem = self.xml.get_widget('profile_avatar_menuitem')
# destroy old advanced menus # destroy old advanced menus
@ -1161,7 +1159,6 @@ class RosterWindow:
def chg_contact_status(self, contact, show, status, account): def chg_contact_status(self, contact, show, status, account):
'''When a contact changes his or her status''' '''When a contact changes his or her status'''
showOffline = gajim.config.get('showoffline')
contact_instances = gajim.contacts.get_contact(account, contact.jid) contact_instances = gajim.contacts.get_contact(account, contact.jid)
contact.show = show contact.show = show
contact.status = status contact.status = status
@ -1176,11 +1173,10 @@ class RosterWindow:
jid_list = [contact.jid] jid_list = [contact.jid]
if contact.get_full_jid() != contact.jid: if contact.get_full_jid() != contact.jid:
jid_list.append(contact.get_full_jid()) jid_list.append(contact.get_full_jid())
for j in jid_list: for jid in jid_list:
if gajim.interface.msg_win_mgr.has_window(j, account): if gajim.interface.msg_win_mgr.has_window(jid, account):
jid = contact.jid win = gajim.interface.msg_win_mgr.get_window(jid, account)
win = gajim.interface.msg_win_mgr.get_window(j, account) ctrl = win.get_control(jid, account)
ctrl = win.get_control(j, account)
ctrl.contact = contact ctrl.contact = contact
ctrl.update_ui() ctrl.update_ui()
win.redraw_tab(ctrl) win.redraw_tab(ctrl)
@ -1248,7 +1244,6 @@ class RosterWindow:
self.tooltip.hide_tooltip() self.tooltip.hide_tooltip()
def on_roster_treeview_leave_notify_event(self, widget, event): def on_roster_treeview_leave_notify_event(self, widget, event):
model = widget.get_model()
props = widget.get_path_at_pos(int(event.x), int(event.y)) props = widget.get_path_at_pos(int(event.x), int(event.y))
if self.tooltip.timeout > 0: if self.tooltip.timeout > 0:
if not props or self.tooltip.id == props[0]: if not props or self.tooltip.id == props[0]:
@ -3976,7 +3971,6 @@ class RosterWindow:
contact.groups) contact.groups)
def remove_contact_from_group(self, account, contact, group): def remove_contact_from_group(self, account, contact, group):
model = self.tree.get_model()
# Make sure contact was in the group # Make sure contact was in the group
if group in contact.groups: if group in contact.groups:
contact.groups.remove(group) contact.groups.remove(group)
@ -4049,7 +4043,6 @@ class RosterWindow:
it = iter_source it = iter_source
while model[it][C_TYPE] == 'contact': while model[it][C_TYPE] == 'contact':
it = model.iter_parent(it) it = model.iter_parent(it)
iter_group_source = it
grp_source = model[it][C_JID].decode('utf-8') grp_source = model[it][C_JID].decode('utf-8')
if grp_source in helpers.special_groups: if grp_source in helpers.special_groups:
return return

View File

@ -341,7 +341,6 @@ class Systray:
self.tooltip.show_tooltip('', size[1], position[1]) self.tooltip.show_tooltip('', size[1], position[1])
def on_tray_motion_notify_event(self, widget, event): def on_tray_motion_notify_event(self, widget, event):
wireq=widget.size_request()
position = widget.window.get_origin() position = widget.window.get_origin()
if self.tooltip.timeout > 0: if self.tooltip.timeout > 0:
if self.tooltip.id != position: if self.tooltip.id != position:

View File

@ -306,7 +306,7 @@ class GCTooltip(BaseTooltip):
properties.append((show, None)) properties.append((show, None))
if contact.jid.strip() != '': if contact.jid.strip() != '':
properties.append((_('JID: '), contact.jid)) properties.append((_('Jabber ID: '), contact.jid))
if hasattr(contact, 'resource') and contact.resource.strip() != '': if hasattr(contact, 'resource') and contact.resource.strip() != '':
properties.append((_('Resource: '), properties.append((_('Resource: '),