+gc-tooltip:Create get_uf_affiliation(); show SHOW in the place of status message if and

only if there is no status message, else don't show SHOW
+roster-tooltip:Show subscription only if it is different from 'both'; integrate SHOW to
last_status_time (status message alone in second line); name is now title, jid is after;
status message and show are italic everywhere; last_status_time is not showed anymore when
more than one ressource, takes too muck place(was broken anyway).
Fixes #2110 if no comment.
This commit is contained in:
Jean-Marie Traissard 2006-09-26 02:41:47 +00:00
parent bbc0940942
commit 84b9e2af34
2 changed files with 88 additions and 68 deletions

View File

@ -290,6 +290,21 @@ def get_uf_role(role, plural = False):
else:
role_name = _('Visitor')
return role_name
def get_uf_affiliation(affiliation):
'''Get a nice and translated affilition for muc'''
if affiliation == 'none':
affiliation_name = Q_('?Group Chat Contact Affiliation:None')
elif affiliation == 'owner':
affiliation_name = _('Owner')
elif affiliation == 'admin':
affiliation_name = _('Administrator')
elif affiliation == 'member':
affiliation_name = _('Member')
else: # Argl ! An unknown affiliation !
affiliation_name = affiliation.capitalize()
return affiliation_name
def get_sorted_keys(adict):
keys = adict.keys()

View File

@ -179,8 +179,10 @@ class StatusTable:
status = unicode(status, encoding='utf-8')
# reduce to 200 chars, 1 line
status = gtkgui_helpers.reduce_chars_newlines(status, 200, 1)
str_status += ' - ' + status
return gtkgui_helpers.escape_for_pango_markup(str_status)
str_status = gtkgui_helpers.escape_for_pango_markup(str_status)
status = gtkgui_helpers.escape_for_pango_markup(status)
str_status += ' - <span style="italic">' + status + '</span>'
return str_status
def add_status_row(self, file_path, show, str_status, status_time = None, show_lock = False):
''' appends a new row with status icon to the table '''
@ -213,13 +215,6 @@ class StatusTable:
gtk.ICON_SIZE_MENU)
self.table.attach(lock_image, 4, 5, self.current_row,
self.current_row + 1, 0, 0, 0, 0)
if status_time:
self.current_row += 1
# decode locale encoded string, the same way as below (10x nk)
local_time = time.strftime("%c", status_time)
local_time = local_time.decode(locale.getpreferredencoding())
status_time_label = gtk.Label(local_time)
status_time_label.set_alignment(0, 0)
class NotificationAreaTooltip(BaseTooltip, StatusTable):
''' Tooltip that is shown in the notification area '''
@ -364,32 +359,34 @@ class GCTooltip(BaseTooltip):
vcard_table.set_homogeneous(False)
vcard_current_row = 1
properties = []
status_message_present = False
show = helpers.get_uf_show(contact.show)
nick_show_markup = '<span weight="bold">' + \
nick_markup = '<span weight="bold">' + \
gtkgui_helpers.escape_for_pango_markup(contact.get_shown_name()) \
+ '</span> (' + show + ')'
properties.append((nick_show_markup, None))
+ '</span>'
properties.append((nick_markup, None))
#status message :
if contact.status:
status_message = contact.status.strip()
if status_message != '':
if contact.status: # status message
status = contact.status.strip()
if status != '':
# escape markup entities
status_message = gtkgui_helpers.reduce_chars_newlines(status_message, 200, 5)
status_message = '<span style="italic">' +\
gtkgui_helpers.escape_for_pango_markup(status_message) + '</span>'
properties.append((status_message, None))
status_message_present = True
status = gtkgui_helpers.reduce_chars_newlines(status, 200, 5)
status = '<span style="italic">' +\
gtkgui_helpers.escape_for_pango_markup(status) + '</span>'
properties.append((status, None))
else: # no status message, show SHOW instead
show = helpers.get_uf_show(contact.show)
show = '<span style="italic">' + show + '</span>'
properties.append((show, None))
if contact.jid.strip() != '':
properties.append((_('JID: '), contact.jid))
if contact.affiliation != "none":
properties.append((_('Affiliation: '), contact.affiliation.capitalize()))
properties.append((_('Jabber ID: '), contact.jid))
if hasattr(contact, 'resource') and contact.resource.strip() != '':
properties.append((_('Resource: '),
gtkgui_helpers.escape_for_pango_markup(contact.resource) ))
if contact.affiliation != 'none':
affiliation = helpers.get_uf_affiliation(contact.affiliation) +\
_(' of the room')
properties.append((affiliation, None))
# Add avatar
puny_name = helpers.sanitize_filename(contact.name)
@ -491,23 +488,10 @@ class RosterTooltip(NotificationAreaTooltip):
vcard_table.set_homogeneous(False)
vcard_current_row = 1
properties = []
jid_markup = '<span weight="bold">' + prim_contact.jid + '</span>'
properties.append((jid_markup, None))
properties.append((_('Name: '), gtkgui_helpers.escape_for_pango_markup(
prim_contact.get_shown_name())))
if prim_contact.sub:
properties.append(( _('Subscription: '),
gtkgui_helpers.escape_for_pango_markup(helpers.get_uf_sub(prim_contact.sub))))
if prim_contact.keyID:
keyID = None
if len(prim_contact.keyID) == 8:
keyID = prim_contact.keyID
elif len(prim_contact.keyID) == 16:
keyID = prim_contact.keyID[8:]
if keyID:
properties.append((_('OpenPGP: '),
gtkgui_helpers.escape_for_pango_markup(keyID)))
name_markup = u'<span weight="bold">' + gtkgui_helpers.escape_for_pango_markup(
prim_contact.get_shown_name())+ '</span>'
properties.append((name_markup, None))
num_resources = 0
# put contacts in dict, where key is priority
contacts_dict = {}
@ -518,11 +502,6 @@ class RosterTooltip(NotificationAreaTooltip):
contacts_dict[contact.priority].append(contact)
else:
contacts_dict[contact.priority] = [contact]
if num_resources == 1 and contact.resource:
properties.append((_('Resource: '),
gtkgui_helpers.escape_for_pango_markup(contact.resource) + ' (' + \
unicode(contact.priority) + ')'))
if num_resources > 1:
properties.append((_('Status: '), ' '))
contact_keys = contacts_dict.keys()
@ -540,6 +519,26 @@ class RosterTooltip(NotificationAreaTooltip):
else: # only one resource
if contact.show:
show = helpers.get_uf_show(contact.show)
if contact.last_status_time:
vcard_current_row += 1
if contact.show == 'offline':
text = ' - ' + _('Last status : %s')
else:
text = _(' since %s')
if time.strftime('%j', time.localtime())== \
time.strftime('%j', contact.last_status_time):
# it's today, show only the locale hour representation
local_time = time.strftime('%X', contact.last_status_time)
else:
# time.strftime returns locale encoded string
local_time = time.strftime('%c', contact.last_status_time)
local_time = local_time.decode(locale.getpreferredencoding())
text = text % local_time
show += text
show = u'<span style="italic">' + show + '</span>'
# we append show at end of properties below
if contact.status:
status = contact.status.strip()
if status:
@ -548,26 +547,32 @@ class RosterTooltip(NotificationAreaTooltip):
status = gtkgui_helpers.reduce_chars_newlines(status, 200, 5)
# escape markup entities.
status = gtkgui_helpers.escape_for_pango_markup(status)
show += ' - ' + status
properties.append((_('Status: '), show))
if contact.last_status_time:
vcard_current_row += 1
if contact.show == 'offline':
text = _('Last status on %s')
else:
text = _('Since %s')
if time.strftime('%j', time.localtime())== \
time.strftime('%j', contact.last_status_time):
# it's today, show only the locale hour representation
local_time = time.strftime('%X', contact.last_status_time)
else:
# time.strftime returns locale encoded string
local_time = time.strftime('%c', contact.last_status_time)
local_time = local_time.decode(locale.getpreferredencoding())
text = text % local_time
properties.append(('<span style="italic">%s</span>' % text, None))
properties.append((u'<span style="italic">%s</span>' % status, None))
properties.append((_('Jabber ID: '), prim_contact.jid ))
if prim_contact.sub and prim_contact.sub != 'both':
# ('both' is the normal sub so we don't show it)
properties.append(( _('Subscription: '),
gtkgui_helpers.escape_for_pango_markup(helpers.get_uf_sub(prim_contact.sub))))
if prim_contact.keyID:
keyID = None
if len(prim_contact.keyID) == 8:
keyID = prim_contact.keyID
elif len(prim_contact.keyID) == 16:
keyID = prim_contact.keyID[8:]
if keyID:
properties.append((_('OpenPGP: '),
gtkgui_helpers.escape_for_pango_markup(keyID)))
if num_resources <= 1:
# contact is offline(show only show) or has only one ressource
if num_resources == 1 and contact.resource:
properties.append((_('Resource: '),
gtkgui_helpers.escape_for_pango_markup(contact.resource) + ' (' + \
unicode(contact.priority) + ')'))
properties.append((show, None))
while properties:
property = properties.pop(0)
vcard_current_row += 1