testing: align status message left to avatar
in tooltip
This commit is contained in:
		
							parent
							
								
									df38aa897c
								
							
						
					
					
						commit
						a6700273d9
					
				
					 1 changed files with 67 additions and 63 deletions
				
			
		
							
								
								
									
										130
									
								
								src/tooltips.py
									
										
									
									
									
								
							
							
						
						
									
										130
									
								
								src/tooltips.py
									
										
									
									
									
								
							| 
						 | 
					@ -447,9 +447,7 @@ class RosterTooltip(NotificationAreaTooltip):
 | 
				
			||||||
			self.vbox.add(self.table)
 | 
								self.vbox.add(self.table)
 | 
				
			||||||
			self.win.add(self.vbox)
 | 
								self.win.add(self.vbox)
 | 
				
			||||||
			return
 | 
								return
 | 
				
			||||||
		vcard_table = gtk.Table(5, 1)
 | 
							
 | 
				
			||||||
		vcard_table.set_property('column-spacing', 2)
 | 
					 | 
				
			||||||
		vcard_current_row = 1
 | 
					 | 
				
			||||||
		
 | 
							
 | 
				
			||||||
		# primary contact
 | 
							# primary contact
 | 
				
			||||||
		prim_contact = gajim.contacts.get_highest_prio_contact_from_contacts(
 | 
							prim_contact = gajim.contacts.get_highest_prio_contact_from_contacts(
 | 
				
			||||||
| 
						 | 
					@ -464,14 +462,34 @@ class RosterTooltip(NotificationAreaTooltip):
 | 
				
			||||||
			if not iconset:
 | 
								if not iconset:
 | 
				
			||||||
				iconset = 'dcraven'
 | 
									iconset = 'dcraven'
 | 
				
			||||||
			file_path = os.path.join(gajim.DATA_DIR, 'iconsets', iconset, '16x16')
 | 
								file_path = os.path.join(gajim.DATA_DIR, 'iconsets', iconset, '16x16')
 | 
				
			||||||
 | 
							puny_jid = punycode_encode(prim_contact.jid)
 | 
				
			||||||
 | 
							table_size = 3
 | 
				
			||||||
 | 
							
 | 
				
			||||||
 | 
							for type_ in ('jpeg', 'png'):
 | 
				
			||||||
 | 
								file = os.path.join(gajim.AVATAR_PATH, puny_jid + '.' + type_)
 | 
				
			||||||
 | 
								if os.path.exists(file):
 | 
				
			||||||
 | 
									self.avatar_image.set_from_file(file)
 | 
				
			||||||
 | 
									pix = self.avatar_image.get_pixbuf()
 | 
				
			||||||
 | 
									pix = gtkgui_helpers.get_scaled_pixbuf(pix, 'tooltip')
 | 
				
			||||||
 | 
									self.avatar_image.set_from_pixbuf(pix)
 | 
				
			||||||
 | 
									table_size = 4
 | 
				
			||||||
 | 
									break
 | 
				
			||||||
 | 
							else:
 | 
				
			||||||
 | 
								self.avatar_image.set_from_pixbuf(None)
 | 
				
			||||||
 | 
							vcard_table = gtk.Table(table_size, 1)
 | 
				
			||||||
 | 
							vcard_table.set_property('column-spacing', 2)
 | 
				
			||||||
 | 
							vcard_table.set_homogeneous(False)
 | 
				
			||||||
 | 
							vcard_current_row = 1
 | 
				
			||||||
		
 | 
							
 | 
				
			||||||
		label = gtk.Label()
 | 
							label = gtk.Label()
 | 
				
			||||||
		label.set_alignment(0, 0)
 | 
							label.set_alignment(0, 0)
 | 
				
			||||||
		label.set_markup('<span size="large" weight="bold">' + prim_contact.jid + '</span>')
 | 
							label.set_markup('<span size="large" weight="bold">' + prim_contact.jid + '</span>')
 | 
				
			||||||
		vcard_table.attach(label, 1, 5, vcard_current_row, vcard_current_row + 1, gtk.FILL, gtk.FILL, 0, 0)
 | 
							
 | 
				
			||||||
 | 
							vcard_table.attach(label, 1, table_size, vcard_current_row, vcard_current_row + 1, 
 | 
				
			||||||
 | 
																		gtk.EXPAND | gtk.FILL, gtk.FILL, 0, 0)
 | 
				
			||||||
		properties = []
 | 
							properties = []
 | 
				
			||||||
		properties.append(( _('Name: '), gtkgui_helpers.escape_for_pango_markup(
 | 
							properties.append(( _('Name: '), gtkgui_helpers.escape_for_pango_markup(
 | 
				
			||||||
																			prim_contact.get_shown_name())))
 | 
																	prim_contact.get_shown_name())))
 | 
				
			||||||
		if prim_contact.sub:
 | 
							if prim_contact.sub:
 | 
				
			||||||
			properties.append(( _('Subscription: '), 
 | 
								properties.append(( _('Subscription: '), 
 | 
				
			||||||
				gtkgui_helpers.escape_for_pango_markup(prim_contact.sub)))
 | 
									gtkgui_helpers.escape_for_pango_markup(prim_contact.sub)))
 | 
				
			||||||
| 
						 | 
					@ -491,71 +509,28 @@ class RosterTooltip(NotificationAreaTooltip):
 | 
				
			||||||
		
 | 
							
 | 
				
			||||||
		if num_resources== 1 and contact.resource:
 | 
							if num_resources== 1 and contact.resource:
 | 
				
			||||||
			properties.append((_('Resource: '),	gtkgui_helpers.escape_for_pango_markup(
 | 
								properties.append((_('Resource: '),	gtkgui_helpers.escape_for_pango_markup(
 | 
				
			||||||
												contact.resource) + ' (' + unicode(contact.priority) + ')'))
 | 
												contact.resource) + ' (' + unicode(contact.priority) + ')'))
 | 
				
			||||||
		if num_resources > 1:
 | 
							if num_resources > 1:
 | 
				
			||||||
			properties.append((_('Status: '),	''))
 | 
								properties.append((_('Status: '),	''))
 | 
				
			||||||
		
 | 
							else: # only one resource
 | 
				
			||||||
		puny_jid = punycode_encode(prim_contact.jid)
 | 
					 | 
				
			||||||
		for type_ in ('jpeg', 'png'):
 | 
					 | 
				
			||||||
			file = os.path.join(gajim.AVATAR_PATH, puny_jid + '.' + type_)
 | 
					 | 
				
			||||||
			if os.path.exists(file):
 | 
					 | 
				
			||||||
				self.avatar_image.set_from_file(file)
 | 
					 | 
				
			||||||
				pix = self.avatar_image.get_pixbuf()
 | 
					 | 
				
			||||||
				pix = gtkgui_helpers.get_scaled_pixbuf(pix, 'tooltip')
 | 
					 | 
				
			||||||
				self.avatar_image.set_from_pixbuf(pix)
 | 
					 | 
				
			||||||
				break
 | 
					 | 
				
			||||||
		else:
 | 
					 | 
				
			||||||
			self.avatar_image.set_from_pixbuf(None)
 | 
					 | 
				
			||||||
		
 | 
					 | 
				
			||||||
		while properties:
 | 
					 | 
				
			||||||
			property = properties.pop(0)
 | 
					 | 
				
			||||||
			vcard_current_row += 1
 | 
					 | 
				
			||||||
			label = gtk.Label()
 | 
					 | 
				
			||||||
			label.set_alignment(0, 0)
 | 
					 | 
				
			||||||
			label.set_markup('<span weight="bold">%s</span>' % property[0])
 | 
					 | 
				
			||||||
			vertical_fill = gtk.FILL
 | 
					 | 
				
			||||||
			if not properties:
 | 
					 | 
				
			||||||
				vertical_fill |= gtk.EXPAND
 | 
					 | 
				
			||||||
				
 | 
					 | 
				
			||||||
			vcard_table.attach(label, 1, 3, vcard_current_row, vcard_current_row + 1, 
 | 
					 | 
				
			||||||
																						gtk.FILL,  vertical_fill, 0, 0)
 | 
					 | 
				
			||||||
			label = gtk.Label()
 | 
					 | 
				
			||||||
			if num_resources > 1 and not properties:
 | 
					 | 
				
			||||||
				label.set_alignment(0, 1)
 | 
					 | 
				
			||||||
			else:
 | 
					 | 
				
			||||||
				label.set_alignment(0, 0)
 | 
					 | 
				
			||||||
			label.set_markup(property[1])
 | 
					 | 
				
			||||||
			vcard_table.attach(label, 3, 4, vcard_current_row, vcard_current_row + 1, 
 | 
					 | 
				
			||||||
																	gtk.EXPAND | gtk.FILL, vertical_fill, 0, 0)
 | 
					 | 
				
			||||||
		self.avatar_image.set_alignment(0, 0)
 | 
					 | 
				
			||||||
		vcard_table.attach(self.avatar_image, 4, 5, 2, vcard_current_row +1, gtk.FILL, 
 | 
					 | 
				
			||||||
																						gtk.FILL | gtk.EXPAND, 3, 0)
 | 
					 | 
				
			||||||
		self.vbox.pack_start(vcard_table, True, True)
 | 
					 | 
				
			||||||
		
 | 
					 | 
				
			||||||
		if num_resources == 1: # only one resource
 | 
					 | 
				
			||||||
			if contact.show:
 | 
								if contact.show:
 | 
				
			||||||
				show = helpers.get_uf_show(contact.show) 
 | 
									show = helpers.get_uf_show(contact.show) 
 | 
				
			||||||
				if contact.status:
 | 
									if contact.status:
 | 
				
			||||||
					status = contact.status.strip()
 | 
										status = contact.status.strip()
 | 
				
			||||||
					if status != '':
 | 
										if status:
 | 
				
			||||||
						# reduce long status
 | 
											# reduce long status
 | 
				
			||||||
						# (no more than 130 chars on line and no more than 5 lines)
 | 
											# (no more than 130 chars on line and no more than 5 lines)
 | 
				
			||||||
						status = gtkgui_helpers.reduce_chars_newlines(status, 130, 5)
 | 
											status = gtkgui_helpers.reduce_chars_newlines(status, 130, 5)
 | 
				
			||||||
						# escape markup entities. 
 | 
											# escape markup entities. 
 | 
				
			||||||
						show += ' - ' + gtkgui_helpers.escape_for_pango_markup(status)
 | 
											status = gtkgui_helpers.escape_for_pango_markup(status)
 | 
				
			||||||
				vcard_current_row += 1
 | 
											if len(status) > 10:
 | 
				
			||||||
				label = gtk.Label()
 | 
												show += '\n' + status
 | 
				
			||||||
				label.set_alignment(0, 0)
 | 
											else:
 | 
				
			||||||
				label.set_markup('<span weight="bold">' + _('Status: ')  + '</span>')
 | 
												show += ' - ' + status
 | 
				
			||||||
				vcard_table.attach(label, 1, 3, vcard_current_row, vcard_current_row + 1, gtk.FILL, 
 | 
									properties.append((_('Status: '),	show))
 | 
				
			||||||
																											gtk.FILL | gtk.EXPAND, 0, 0)
 | 
								
 | 
				
			||||||
				
 | 
					 | 
				
			||||||
				label = gtk.Label()
 | 
					 | 
				
			||||||
				label.set_alignment(0, 0)
 | 
					 | 
				
			||||||
				label.set_markup(show)
 | 
					 | 
				
			||||||
				label.set_line_wrap(True)
 | 
					 | 
				
			||||||
				vcard_table.attach(label, 3, 5, vcard_current_row, vcard_current_row + 1, gtk.FILL, 0, 0, 0)
 | 
					 | 
				
			||||||
			if contact.last_status_time:
 | 
								if contact.last_status_time:
 | 
				
			||||||
 | 
									vcard_current_row += 1
 | 
				
			||||||
				if contact.show == 'offline':
 | 
									if contact.show == 'offline':
 | 
				
			||||||
					text = _('Last status on %s')
 | 
										text = _('Last status on %s')
 | 
				
			||||||
				else:
 | 
									else:
 | 
				
			||||||
| 
						 | 
					@ -565,11 +540,40 @@ class RosterTooltip(NotificationAreaTooltip):
 | 
				
			||||||
				local_time = time.strftime('%c', contact.last_status_time)
 | 
									local_time = time.strftime('%c', contact.last_status_time)
 | 
				
			||||||
				local_time = local_time.decode(locale.getpreferredencoding()) 
 | 
									local_time = local_time.decode(locale.getpreferredencoding()) 
 | 
				
			||||||
				text = text % local_time 
 | 
									text = text % local_time 
 | 
				
			||||||
				self.current_row += 1
 | 
									properties.append((' <span style="italic">%s</span>' % text, None))
 | 
				
			||||||
 | 
							while properties:
 | 
				
			||||||
 | 
								property = properties.pop(0)
 | 
				
			||||||
 | 
								vcard_current_row += 1
 | 
				
			||||||
 | 
								vertical_fill = gtk.FILL
 | 
				
			||||||
 | 
								if not properties and table_size == 4:
 | 
				
			||||||
 | 
									vertical_fill |= gtk.EXPAND
 | 
				
			||||||
 | 
								label = gtk.Label()
 | 
				
			||||||
 | 
								label.set_alignment(0, 0)
 | 
				
			||||||
 | 
								if property[1]:
 | 
				
			||||||
 | 
									label.set_markup('<span weight="bold">%s</span>' % property[0])
 | 
				
			||||||
 | 
									vcard_table.attach(label, 1, 2, vcard_current_row, vcard_current_row + 1, 
 | 
				
			||||||
 | 
																			gtk.FILL,  vertical_fill, 0, 0)
 | 
				
			||||||
				label = gtk.Label()
 | 
									label = gtk.Label()
 | 
				
			||||||
				label.set_alignment(0, 0)
 | 
									if num_resources > 1 and not properties:
 | 
				
			||||||
				label.set_markup(' <span style="italic">%s</span>' % text)
 | 
										label.set_alignment(0, 1)
 | 
				
			||||||
				self.vbox.pack_start(label, True, True)
 | 
									else:
 | 
				
			||||||
 | 
										label.set_alignment(0, 0)
 | 
				
			||||||
 | 
									label.set_markup(property[1])
 | 
				
			||||||
 | 
									vcard_table.attach(label, 2, 3, vcard_current_row, vcard_current_row + 1, 
 | 
				
			||||||
 | 
															gtk.EXPAND | gtk.FILL, vertical_fill, 0, 0)
 | 
				
			||||||
 | 
								else:
 | 
				
			||||||
 | 
									label.set_markup(property[0])
 | 
				
			||||||
 | 
									vcard_table.attach(label, 1, 3, vcard_current_row, vcard_current_row + 1, 
 | 
				
			||||||
 | 
																				gtk.FILL, vertical_fill, 0)
 | 
				
			||||||
 | 
							self.avatar_image.set_alignment(0, 0)
 | 
				
			||||||
 | 
							if table_size == 4:
 | 
				
			||||||
 | 
								vcard_table.attach(self.avatar_image, 3, 4, 2, vcard_current_row +1, 
 | 
				
			||||||
 | 
															gtk.FILL, gtk.FILL | gtk.EXPAND, 3, 0)
 | 
				
			||||||
 | 
							self.table.resize(table_size, vcard_current_row)
 | 
				
			||||||
 | 
							self.vbox.pack_start(vcard_table, True, True)
 | 
				
			||||||
 | 
							
 | 
				
			||||||
 | 
							if num_resources == 1: # only one resource
 | 
				
			||||||
 | 
								pass
 | 
				
			||||||
		else:
 | 
							else:
 | 
				
			||||||
			for contact in contacts:
 | 
								for contact in contacts:
 | 
				
			||||||
				if contact.resource:
 | 
									if contact.resource:
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
	Add table
		
		Reference in a new issue