begin to use the new functions to handle contacts and gc_contacts
This commit is contained in:
		
							parent
							
								
									a15a6e8e6e
								
							
						
					
					
						commit
						a3d6c3c43f
					
				
					 9 changed files with 208 additions and 141 deletions
				
			
		| 
						 | 
					@ -298,9 +298,9 @@ class Chat:
 | 
				
			||||||
	def get_message_type(self, jid):
 | 
						def get_message_type(self, jid):
 | 
				
			||||||
		if self.widget_name == 'groupchat_window':
 | 
							if self.widget_name == 'groupchat_window':
 | 
				
			||||||
			return 'gc'
 | 
								return 'gc'
 | 
				
			||||||
		if gajim.contacts[self.account].has_key(jid):
 | 
							if gajim.contacts.is_pm_from_jid(self.account, jid):
 | 
				
			||||||
			return 'chat'
 | 
					 | 
				
			||||||
			return 'pm'
 | 
								return 'pm'
 | 
				
			||||||
 | 
							return 'chat'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	def on_window_destroy(self, widget, kind): #kind is 'chats' or 'gc'
 | 
						def on_window_destroy(self, widget, kind): #kind is 'chats' or 'gc'
 | 
				
			||||||
		'''clean gajim.interface.instances[self.account][kind]'''
 | 
							'''clean gajim.interface.instances[self.account][kind]'''
 | 
				
			||||||
| 
						 | 
					@ -425,7 +425,7 @@ class Chat:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		if self.widget_name == 'tabbed_chat_window':
 | 
							if self.widget_name == 'tabbed_chat_window':
 | 
				
			||||||
			jid = self.get_active_jid()
 | 
								jid = self.get_active_jid()
 | 
				
			||||||
			c = gajim.get_first_contact_instance_from_jid(self.account, jid)
 | 
								c = gajim.contacts.get_first_contact_from_jid(self.account, jid)
 | 
				
			||||||
			if _('not in the roster') in c.groups: # for add_to_roster_menuitem
 | 
								if _('not in the roster') in c.groups: # for add_to_roster_menuitem
 | 
				
			||||||
				childs[5].show()
 | 
									childs[5].show()
 | 
				
			||||||
				childs[5].set_no_show_all(False)
 | 
									childs[5].set_no_show_all(False)
 | 
				
			||||||
| 
						 | 
					@ -463,7 +463,7 @@ class Chat:
 | 
				
			||||||
			childs[3].set_active(isactive)
 | 
								childs[3].set_active(isactive)
 | 
				
			||||||
			childs[3].set_property('sensitive', issensitive)
 | 
								childs[3].set_property('sensitive', issensitive)
 | 
				
			||||||
			# If we don't have resource, we can't do file transfert
 | 
								# If we don't have resource, we can't do file transfert
 | 
				
			||||||
			c = gajim.get_first_contact_instance_from_jid(self.account, jid)
 | 
								c = gajim.contacts.get_first_contact_from_jid(self.account, jid)
 | 
				
			||||||
			if not c.resource:
 | 
								if not c.resource:
 | 
				
			||||||
				childs[2].set_sensitive(False)
 | 
									childs[2].set_sensitive(False)
 | 
				
			||||||
			else:
 | 
								else:
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -130,36 +130,27 @@ class Contacts:
 | 
				
			||||||
		if not len(self._contacts[account][contact.jid]):
 | 
							if not len(self._contacts[account][contact.jid]):
 | 
				
			||||||
			self._contacts[account].remove(contact.jid)
 | 
								self._contacts[account].remove(contact.jid)
 | 
				
			||||||
	
 | 
						
 | 
				
			||||||
	def create_gc_contact(self, room_jid='', nick='', show='', status='',
 | 
						def remove_jid(self, account, jid):
 | 
				
			||||||
		role='', affiliation='', jid=''):
 | 
							'''Removes all contacts for a given jid'''
 | 
				
			||||||
		return GC_Contact(room_jid, nick, show, status, role, affiliation, jid)
 | 
							if not self._contacts.has_key(account):
 | 
				
			||||||
 | 
								return
 | 
				
			||||||
 | 
							if not self._contacts[account].has_key(contact.jid):
 | 
				
			||||||
 | 
								return
 | 
				
			||||||
 | 
							del self._contacts[account][jid]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	def add_gc_contact(self, account, gc_contact):
 | 
						def get_contact(self, account, jid, resource = None):
 | 
				
			||||||
		# No such account before ?
 | 
							'''Returns the list of contact instances for this jid (one per resource)
 | 
				
			||||||
		if not self._gc_contacts.has_key(account):
 | 
							if no resource is given
 | 
				
			||||||
			self._contacts[account] = {gc_contact.room_jid : {gc_contact.nick: \
 | 
							returns the contact instance for the given resource if it's given
 | 
				
			||||||
				gc_contact}}
 | 
							or None if there is not'''
 | 
				
			||||||
			return
 | 
							if jid in self._contacts[account]:
 | 
				
			||||||
		# No such room_jid before ?
 | 
								contacts = self._contacts[account][jid]
 | 
				
			||||||
		if not self._gc_contacts[account].has_key(gc_contact.room_jid):
 | 
								if not resource:
 | 
				
			||||||
			self._gc_contacts[account][gc_contact.room_jid] = {gc_contact.nick: \
 | 
									return contacts
 | 
				
			||||||
				gc_contact}
 | 
								for c in contacts:
 | 
				
			||||||
			return
 | 
									if c.resource == resource:
 | 
				
			||||||
		self._gc_contacts[account][gc_contact.room_jid][gc_contact.nick] = \
 | 
										return c
 | 
				
			||||||
				gc_contact
 | 
							return None
 | 
				
			||||||
 | 
					 | 
				
			||||||
	def remove_gc_contact(self, account, gc_contact):
 | 
					 | 
				
			||||||
		if not self._gc_contacts.has_key(account):
 | 
					 | 
				
			||||||
			return
 | 
					 | 
				
			||||||
		if not self._gc_contacts[account].has_key(gc_contact.room_jid):
 | 
					 | 
				
			||||||
			return
 | 
					 | 
				
			||||||
		if not self._gc_contacts[account][gc_contact.room_jid].has_key(
 | 
					 | 
				
			||||||
			gc_contact.nick):
 | 
					 | 
				
			||||||
			return
 | 
					 | 
				
			||||||
		self._gc_contacts[account][gc_contact.room_jid].remove(gc_contact.nick)
 | 
					 | 
				
			||||||
		# It was the last nick in room ?
 | 
					 | 
				
			||||||
		if not len(self._gc_contacts[account][gc_contact.room_jid]):
 | 
					 | 
				
			||||||
			self._gc_contacts[account].remove(gc_contact.room_jid)
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
	def is_subcontact(self, account, contact):
 | 
						def is_subcontact(self, account, contact):
 | 
				
			||||||
		if contact.jid in self._sub_contacts[account]:
 | 
							if contact.jid in self._sub_contacts[account]:
 | 
				
			||||||
| 
						 | 
					@ -213,14 +204,87 @@ class Contacts:
 | 
				
			||||||
				parrent_jid)
 | 
									parrent_jid)
 | 
				
			||||||
		return contact
 | 
							return contact
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						def is_pm_from_jid(self, account, jid):
 | 
				
			||||||
 | 
							'''Returns True if the given jid is a private message jid'''
 | 
				
			||||||
 | 
							if jid in self._contacts[account]:
 | 
				
			||||||
 | 
								return False
 | 
				
			||||||
 | 
							return True
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						def is_pm_from_contact(self, account, contact):
 | 
				
			||||||
 | 
							'''Returns True if the given contact is a private message contact'''
 | 
				
			||||||
 | 
							if isinstance(contact, Contcat):
 | 
				
			||||||
 | 
								return False
 | 
				
			||||||
 | 
							return True
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						def get_jid_list(self, account):
 | 
				
			||||||
 | 
							return self._contacts[account].keys()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	def contact_from_gc_contact(self, gc_contact):
 | 
						def contact_from_gc_contact(self, gc_contact):
 | 
				
			||||||
		'''Create a Contact instance from a GC_Contact instance'''
 | 
							'''Create a Contact instance from a GC_Contact instance'''
 | 
				
			||||||
		return Contact(jid = gc_contact.get_full_jid(), name = gc_contact.nick,
 | 
							return Contact(jid = gc_contact.get_full_jid(), name = gc_contact.nick,
 | 
				
			||||||
			groups = ['none'], show = gc_contact.show, status = gc_contact.status,
 | 
								groups = ['none'], show = gc_contact.show, status = gc_contact.status,
 | 
				
			||||||
			sub = 'none')
 | 
								sub = 'none')
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	def is_pm_from_jid(self, account, jid):
 | 
						def create_gc_contact(self, room_jid='', nick='', show='', status='',
 | 
				
			||||||
		'''Returns True if the given jid is a private message jid'''
 | 
							role='', affiliation='', jid=''):
 | 
				
			||||||
		if jid in self._contacts[account]:
 | 
							return GC_Contact(room_jid, nick, show, status, role, affiliation, jid)
 | 
				
			||||||
			return False
 | 
						
 | 
				
			||||||
		return True
 | 
						def add_gc_contact(self, account, gc_contact):
 | 
				
			||||||
 | 
							# No such account before ?
 | 
				
			||||||
 | 
							if not self._gc_contacts.has_key(account):
 | 
				
			||||||
 | 
								self._contacts[account] = {gc_contact.room_jid : {gc_contact.nick: \
 | 
				
			||||||
 | 
									gc_contact}}
 | 
				
			||||||
 | 
								return
 | 
				
			||||||
 | 
							# No such room_jid before ?
 | 
				
			||||||
 | 
							if not self._gc_contacts[account].has_key(gc_contact.room_jid):
 | 
				
			||||||
 | 
								self._gc_contacts[account][gc_contact.room_jid] = {gc_contact.nick: \
 | 
				
			||||||
 | 
									gc_contact}
 | 
				
			||||||
 | 
								return
 | 
				
			||||||
 | 
							self._gc_contacts[account][gc_contact.room_jid][gc_contact.nick] = \
 | 
				
			||||||
 | 
									gc_contact
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						def remove_gc_contact(self, account, gc_contact):
 | 
				
			||||||
 | 
							if not self._gc_contacts.has_key(account):
 | 
				
			||||||
 | 
								return
 | 
				
			||||||
 | 
							if not self._gc_contacts[account].has_key(gc_contact.room_jid):
 | 
				
			||||||
 | 
								return
 | 
				
			||||||
 | 
							if not self._gc_contacts[account][gc_contact.room_jid].has_key(
 | 
				
			||||||
 | 
								gc_contact.nick):
 | 
				
			||||||
 | 
								return
 | 
				
			||||||
 | 
							self._gc_contacts[account][gc_contact.room_jid].remove(gc_contact.nick)
 | 
				
			||||||
 | 
							# It was the last nick in room ?
 | 
				
			||||||
 | 
							if not len(self._gc_contacts[account][gc_contact.room_jid]):
 | 
				
			||||||
 | 
								self._gc_contacts[account].remove(gc_contact.room_jid)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						def remove_room(self, account, room_jid):
 | 
				
			||||||
 | 
							if not self._gc_contacts.has_key(account):
 | 
				
			||||||
 | 
								return
 | 
				
			||||||
 | 
							if not self._gc_contacts[account].has_key(room_jid):
 | 
				
			||||||
 | 
								return
 | 
				
			||||||
 | 
							self._gc_contacts[account].remove(room_jid)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						def get_gc_contact(self, account, room_jid, nick):
 | 
				
			||||||
 | 
							if not self._gc_contacts.has_key(account):
 | 
				
			||||||
 | 
								return
 | 
				
			||||||
 | 
							if not self._gc_contacts[account].has_key(room_jid):
 | 
				
			||||||
 | 
								return
 | 
				
			||||||
 | 
							if not self._gc_contacts[account][room_jid].has_key(nick):
 | 
				
			||||||
 | 
								return
 | 
				
			||||||
 | 
							self._gc_contacts[account][room_jid].remove(nick)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						def get_gc_list(self, account):
 | 
				
			||||||
 | 
							if not self._gc_contacts.has_key(account):
 | 
				
			||||||
 | 
								return []
 | 
				
			||||||
 | 
							return self._gc_contacts[account].keys()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						def get_nick_list(self, account, room_jid):
 | 
				
			||||||
 | 
							gc_list = self.get_gc_list(account)
 | 
				
			||||||
 | 
							if not room_jid in gc_list:
 | 
				
			||||||
 | 
								return []
 | 
				
			||||||
 | 
							return self._gc_contacts[account][room_jid].keys()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						def get_gc_contact(self, account, room_jid, nick):
 | 
				
			||||||
 | 
							nick_list = self.get_nick_list(account, room_jid)
 | 
				
			||||||
 | 
							if not nick in nick_list:
 | 
				
			||||||
 | 
								return None
 | 
				
			||||||
 | 
							return self._gc_contacts[account][room_jid][nick]
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -549,7 +549,7 @@ class PreferencesWindow:
 | 
				
			||||||
			# open new tabbed chat windows
 | 
								# open new tabbed chat windows
 | 
				
			||||||
			for jid in jids:
 | 
								for jid in jids:
 | 
				
			||||||
				if kind == 'chats':
 | 
									if kind == 'chats':
 | 
				
			||||||
					c = gajim.get_contact_instance_with_highest_priority(acct, jid)
 | 
										c = gajim.contacts.get_contact_with_highest_priority(acct, jid)
 | 
				
			||||||
					gajim.interface.roster.new_chat(c, acct)
 | 
										gajim.interface.roster.new_chat(c, acct)
 | 
				
			||||||
				if kind == 'gc':
 | 
									if kind == 'gc':
 | 
				
			||||||
					gajim.interface.roster.new_room(jid, saved_var[jid]['nick'], acct)
 | 
										gajim.interface.roster.new_room(jid, saved_var[jid]['nick'], acct)
 | 
				
			||||||
| 
						 | 
					@ -578,7 +578,7 @@ class PreferencesWindow:
 | 
				
			||||||
			# open new tabbed chat windows
 | 
								# open new tabbed chat windows
 | 
				
			||||||
			for jid in jids:
 | 
								for jid in jids:
 | 
				
			||||||
				if kind == 'chats':
 | 
									if kind == 'chats':
 | 
				
			||||||
					c = gajim.get_contact_instance_with_highest_priority(acct, jid)
 | 
										c = gajim.contacts.get_contact_with_highest_priority(acct, jid)
 | 
				
			||||||
					gajim.interface.roster.new_chat(c, acct)
 | 
										gajim.interface.roster.new_chat(c, acct)
 | 
				
			||||||
				if kind == 'gc':
 | 
									if kind == 'gc':
 | 
				
			||||||
					gajim.interface.roster.new_room(jid, saved_var[jid]['nick'], acct)
 | 
										gajim.interface.roster.new_room(jid, saved_var[jid]['nick'], acct)
 | 
				
			||||||
| 
						 | 
					@ -1268,8 +1268,6 @@ class AccountModificationWindow:
 | 
				
			||||||
			gajim.allow_notifications[name] = \
 | 
								gajim.allow_notifications[name] = \
 | 
				
			||||||
				gajim.allow_notifications[self.account]
 | 
									gajim.allow_notifications[self.account]
 | 
				
			||||||
			gajim.groups[name] = gajim.groups[self.account]
 | 
								gajim.groups[name] = gajim.groups[self.account]
 | 
				
			||||||
			gajim.contacts[name] = gajim.contacts[self.account]
 | 
					 | 
				
			||||||
			gajim.gc_contacts[name] = gajim.gc_contacts[self.account]
 | 
					 | 
				
			||||||
			gajim.gc_connected[name] = gajim.gc_connected[self.account]
 | 
								gajim.gc_connected[name] = gajim.gc_connected[self.account]
 | 
				
			||||||
			gajim.newly_added[name] = gajim.newly_added[self.account]
 | 
								gajim.newly_added[name] = gajim.newly_added[self.account]
 | 
				
			||||||
			gajim.to_be_removed[name] = gajim.to_be_removed[self.account]
 | 
								gajim.to_be_removed[name] = gajim.to_be_removed[self.account]
 | 
				
			||||||
| 
						 | 
					@ -1281,6 +1279,8 @@ class AccountModificationWindow:
 | 
				
			||||||
				gajim.status_before_autoaway[self.account]
 | 
									gajim.status_before_autoaway[self.account]
 | 
				
			||||||
			gajim.events_for_ui[name] = gajim.events_for_ui[self.account]
 | 
								gajim.events_for_ui[name] = gajim.events_for_ui[self.account]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								gajim.contacts.change_account_name(self.account, name)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
			#upgrade account variable in opened windows
 | 
								#upgrade account variable in opened windows
 | 
				
			||||||
			for kind in ('infos', 'disco', 'chats', 'gc', 'gc_config'):
 | 
								for kind in ('infos', 'disco', 'chats', 'gc', 'gc_config'):
 | 
				
			||||||
				for j in gajim.interface.instances[name][kind]:
 | 
									for j in gajim.interface.instances[name][kind]:
 | 
				
			||||||
| 
						 | 
					@ -1297,8 +1297,6 @@ class AccountModificationWindow:
 | 
				
			||||||
			del gajim.nicks[self.account]
 | 
								del gajim.nicks[self.account]
 | 
				
			||||||
			del gajim.allow_notifications[self.account]
 | 
								del gajim.allow_notifications[self.account]
 | 
				
			||||||
			del gajim.groups[self.account]
 | 
								del gajim.groups[self.account]
 | 
				
			||||||
			del gajim.contacts[self.account]
 | 
					 | 
				
			||||||
			del gajim.gc_contacts[self.account]
 | 
					 | 
				
			||||||
			del gajim.gc_connected[self.account]
 | 
								del gajim.gc_connected[self.account]
 | 
				
			||||||
			del gajim.newly_added[self.account]
 | 
								del gajim.newly_added[self.account]
 | 
				
			||||||
			del gajim.to_be_removed[self.account]
 | 
								del gajim.to_be_removed[self.account]
 | 
				
			||||||
| 
						 | 
					@ -2195,8 +2193,7 @@ class RemoveAccountWindow:
 | 
				
			||||||
		del gajim.nicks[self.account]
 | 
							del gajim.nicks[self.account]
 | 
				
			||||||
		del gajim.allow_notifications[self.account]
 | 
							del gajim.allow_notifications[self.account]
 | 
				
			||||||
		del gajim.groups[self.account]
 | 
							del gajim.groups[self.account]
 | 
				
			||||||
		del gajim.contacts[self.account]
 | 
							gajim.contacts.remove_account(self.account)
 | 
				
			||||||
		del gajim.gc_contacts[self.account]
 | 
					 | 
				
			||||||
		del gajim.gc_connected[self.account]
 | 
							del gajim.gc_connected[self.account]
 | 
				
			||||||
		del gajim.to_be_removed[self.account]
 | 
							del gajim.to_be_removed[self.account]
 | 
				
			||||||
		del gajim.newly_added[self.account]
 | 
							del gajim.newly_added[self.account]
 | 
				
			||||||
| 
						 | 
					@ -2737,8 +2734,7 @@ _('You can set advanced account options by pressing Advanced button, or later by
 | 
				
			||||||
		gajim.awaiting_events[self.account] = {}
 | 
							gajim.awaiting_events[self.account] = {}
 | 
				
			||||||
		gajim.connections[self.account].connected = 0
 | 
							gajim.connections[self.account].connected = 0
 | 
				
			||||||
		gajim.groups[self.account] = {}
 | 
							gajim.groups[self.account] = {}
 | 
				
			||||||
		gajim.contacts[self.account] = {}
 | 
							gajim.contacts.add_account(self.account)
 | 
				
			||||||
		gajim.gc_contacts[self.account] = {}
 | 
					 | 
				
			||||||
		gajim.gc_connected[self.account] = {}
 | 
							gajim.gc_connected[self.account] = {}
 | 
				
			||||||
		gajim.newly_added[self.account] = []
 | 
							gajim.newly_added[self.account] = []
 | 
				
			||||||
		gajim.to_be_removed[self.account] = []
 | 
							gajim.to_be_removed[self.account] = []
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -370,8 +370,8 @@ class ConversationTextview(gtk.TextView):
 | 
				
			||||||
				self.on_join_group_chat_menuitem_activate, text)
 | 
									self.on_join_group_chat_menuitem_activate, text)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
			allow_add = False
 | 
								allow_add = False
 | 
				
			||||||
			if gajim.contacts[self.account].has_key(text):
 | 
								c = gajim.contacts.get_first_contact_from_jid(self.account, text)
 | 
				
			||||||
				c = gajim.contacts[self.account][text][0]
 | 
								if c and not gajim.contacts.is_pm_from_contact(self.account, c):
 | 
				
			||||||
				if _('not in the roster') in c.groups:
 | 
									if _('not in the roster') in c.groups:
 | 
				
			||||||
					allow_add = True
 | 
										allow_add = True
 | 
				
			||||||
			else: # he or she's not at all in the account contacts
 | 
								else: # he or she's not at all in the account contacts
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -303,10 +303,10 @@ _('Please fill in the data of the contact you want to add in account %s') %accou
 | 
				
			||||||
		liststore.append(['Jabber', ''])
 | 
							liststore.append(['Jabber', ''])
 | 
				
			||||||
		self.agents = ['Jabber']
 | 
							self.agents = ['Jabber']
 | 
				
			||||||
		jid_agents = []
 | 
							jid_agents = []
 | 
				
			||||||
		for j in gajim.contacts[account]:
 | 
							for j in gajim.contacts.get_jid_list(account):
 | 
				
			||||||
			user = gajim.contacts[account][j][0]
 | 
								contact = gajim.contacts.get_first_contact_from_jid(account, j)
 | 
				
			||||||
			if _('Transports') in user.groups and user.show != 'offline' and \
 | 
								if _('Transports') in contact.groups and contact.show != 'offline' and\
 | 
				
			||||||
					user.show != 'error':
 | 
										contact.show != 'error':
 | 
				
			||||||
				jid_agents.append(j)
 | 
									jid_agents.append(j)
 | 
				
			||||||
		for a in jid_agents:
 | 
							for a in jid_agents:
 | 
				
			||||||
			if a.find('aim') > -1:
 | 
								if a.find('aim') > -1:
 | 
				
			||||||
| 
						 | 
					@ -381,8 +381,9 @@ _('Please fill in the data of the contact you want to add in account %s') %accou
 | 
				
			||||||
			return
 | 
								return
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		# Check if jid is already in roster
 | 
							# Check if jid is already in roster
 | 
				
			||||||
		if jid in gajim.contacts[self.account] and _('not in the roster') not in \
 | 
							if jid in gajim.contacts.get_jid_list(self.account) and \
 | 
				
			||||||
			gajim.contacts[self.account][jid][0].groups:
 | 
								_('not in the roster') not in \
 | 
				
			||||||
 | 
								gajim.contacts.get_first_contact_from_jid(self.account, jid).groups:
 | 
				
			||||||
			ErrorDialog(_('Contact already in roster'),
 | 
								ErrorDialog(_('Contact already in roster'),
 | 
				
			||||||
			_('This contact is already listed in your roster.')).get_response()
 | 
								_('This contact is already listed in your roster.')).get_response()
 | 
				
			||||||
			return
 | 
								return
 | 
				
			||||||
| 
						 | 
					@ -628,7 +629,7 @@ class SubscriptionRequestWindow:
 | 
				
			||||||
		'''accept the request'''
 | 
							'''accept the request'''
 | 
				
			||||||
		gajim.connections[self.account].send_authorization(self.jid)
 | 
							gajim.connections[self.account].send_authorization(self.jid)
 | 
				
			||||||
		self.window.destroy()
 | 
							self.window.destroy()
 | 
				
			||||||
		if not gajim.contacts[self.account].has_key(self.jid):
 | 
							if self.jid not in gajim.contacts.get_jid_list(self.account):
 | 
				
			||||||
			AddNewContactWindow(self.account, self.jid)
 | 
								AddNewContactWindow(self.account, self.jid)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	def on_contact_info_button_clicked(self, widget):
 | 
						def on_contact_info_button_clicked(self, widget):
 | 
				
			||||||
| 
						 | 
					@ -825,8 +826,8 @@ class PopupNotificationWindow:
 | 
				
			||||||
		
 | 
							
 | 
				
			||||||
		event_type_label.set_markup('<b>' + event_type + '</b>')
 | 
							event_type_label.set_markup('<b>' + event_type + '</b>')
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		if self.jid in gajim.contacts[account]:
 | 
							if self.jid in gajim.contacts.get_jid_list(account):
 | 
				
			||||||
			txt = gajim.contacts[account][self.jid][0].name
 | 
								txt = gajim.contacts.get_first_contact_from_jid(account, self.jid).name
 | 
				
			||||||
		else:
 | 
							else:
 | 
				
			||||||
			txt = self.jid
 | 
								txt = self.jid
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -866,7 +867,8 @@ class PopupNotificationWindow:
 | 
				
			||||||
			close_button.modify_bg(gtk.STATE_NORMAL, bg_color)
 | 
								close_button.modify_bg(gtk.STATE_NORMAL, bg_color)
 | 
				
			||||||
			eventbox.modify_bg(gtk.STATE_NORMAL, bg_color)
 | 
								eventbox.modify_bg(gtk.STATE_NORMAL, bg_color)
 | 
				
			||||||
			event_description_label.set_text(txt)
 | 
								event_description_label.set_text(txt)
 | 
				
			||||||
		elif event_type in (_('File Transfer Completed'), _('File Transfer Stopped')):
 | 
							elif event_type in (_('File Transfer Completed'),
 | 
				
			||||||
 | 
								_('File Transfer Stopped')):
 | 
				
			||||||
			bg_color = gtk.gdk.color_parse('yellowgreen')
 | 
								bg_color = gtk.gdk.color_parse('yellowgreen')
 | 
				
			||||||
			close_button.modify_bg(gtk.STATE_NORMAL, bg_color)
 | 
								close_button.modify_bg(gtk.STATE_NORMAL, bg_color)
 | 
				
			||||||
			eventbox.modify_bg(gtk.STATE_NORMAL, bg_color)
 | 
								eventbox.modify_bg(gtk.STATE_NORMAL, bg_color)
 | 
				
			||||||
| 
						 | 
					@ -874,8 +876,8 @@ class PopupNotificationWindow:
 | 
				
			||||||
				if file_props['type'] == 'r':
 | 
									if file_props['type'] == 'r':
 | 
				
			||||||
					# get the name of the sender, as it is in the roster
 | 
										# get the name of the sender, as it is in the roster
 | 
				
			||||||
					sender = unicode(file_props['sender']).split('/')[0]
 | 
										sender = unicode(file_props['sender']).split('/')[0]
 | 
				
			||||||
					name = gajim.get_first_contact_instance_from_jid( 
 | 
										name = gajim.contacts.get_first_contact_from_jid(account,
 | 
				
			||||||
						account, sender).name
 | 
											sender).name
 | 
				
			||||||
					txt = _('From %s') % name
 | 
										txt = _('From %s') % name
 | 
				
			||||||
				else:
 | 
									else:
 | 
				
			||||||
					receiver = file_props['receiver']
 | 
										receiver = file_props['receiver']
 | 
				
			||||||
| 
						 | 
					@ -883,8 +885,8 @@ class PopupNotificationWindow:
 | 
				
			||||||
						receiver = receiver.jid
 | 
											receiver = receiver.jid
 | 
				
			||||||
					receiver = receiver.split('/')[0]
 | 
										receiver = receiver.split('/')[0]
 | 
				
			||||||
					# get the name of the contact, as it is in the roster
 | 
										# get the name of the contact, as it is in the roster
 | 
				
			||||||
					name = gajim.get_first_contact_instance_from_jid( 
 | 
										name = gajim.contacts.get_first_contact_from_jid(account,
 | 
				
			||||||
						account, receiver).name
 | 
											receiver).name
 | 
				
			||||||
					txt = _('To %s') % name
 | 
										txt = _('To %s') % name
 | 
				
			||||||
			else:
 | 
								else:
 | 
				
			||||||
				txt = ''
 | 
									txt = ''
 | 
				
			||||||
| 
						 | 
					@ -928,8 +930,8 @@ class PopupNotificationWindow:
 | 
				
			||||||
			return
 | 
								return
 | 
				
			||||||
		# use Contact class, new_chat expects it that way
 | 
							# use Contact class, new_chat expects it that way
 | 
				
			||||||
		# is it in the roster?
 | 
							# is it in the roster?
 | 
				
			||||||
		if gajim.contacts[self.account].has_key(self.jid):
 | 
							if self.jid in gajim.contacts.get_jid_list(self.account):
 | 
				
			||||||
			contact = gajim.get_contact_instance_with_highest_priority(
 | 
								contact = gajim.contacts.get_contact_with_highest_priority(
 | 
				
			||||||
				self.account, self.jid)
 | 
									self.account, self.jid)
 | 
				
			||||||
		else:
 | 
							else:
 | 
				
			||||||
			keyID = ''
 | 
								keyID = ''
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1193,9 +1193,10 @@ class ToplevelAgentBrowser(AgentBrowser):
 | 
				
			||||||
		if self.register_button and xmpp.NS_REGISTER in features:
 | 
							if self.register_button and xmpp.NS_REGISTER in features:
 | 
				
			||||||
			# We can register this agent
 | 
								# We can register this agent
 | 
				
			||||||
			registered_transports = []
 | 
								registered_transports = []
 | 
				
			||||||
			contacts = gajim.contacts[self.account]
 | 
								jid_list = gajim.contacts.get_jid_list(self.account)
 | 
				
			||||||
			for j in contacts:
 | 
								for j in jid_list:
 | 
				
			||||||
				if _('Transports') in contacts[j][0].groups:
 | 
									contact = gajim.contacts.get_first_contact_from_jid(self.account, j)
 | 
				
			||||||
 | 
									if _('Transports') in contact.groups:
 | 
				
			||||||
					registered_transports.append(j)
 | 
										registered_transports.append(j)
 | 
				
			||||||
			if jid in registered_transports:
 | 
								if jid in registered_transports:
 | 
				
			||||||
				self.register_button.set_label(_('_Edit'))
 | 
									self.register_button.set_label(_('_Edit'))
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -177,7 +177,7 @@ class FileTransfersWindow:
 | 
				
			||||||
		helpers.convert_bytes(file_props['size'])
 | 
							helpers.convert_bytes(file_props['size'])
 | 
				
			||||||
		if file_props['type'] == 'r':
 | 
							if file_props['type'] == 'r':
 | 
				
			||||||
			jid = unicode(file_props['sender']).split('/')[0]
 | 
								jid = unicode(file_props['sender']).split('/')[0]
 | 
				
			||||||
			sender_name = gajim.get_first_contact_instance_from_jid( 
 | 
								sender_name = gajim.contacts.get_first_contact_from_jid( 
 | 
				
			||||||
				file_props['tt_account'], jid).name
 | 
									file_props['tt_account'], jid).name
 | 
				
			||||||
			sender = gtkgui_helpers.escape_for_pango_markup(sender_name)
 | 
								sender = gtkgui_helpers.escape_for_pango_markup(sender_name)
 | 
				
			||||||
		else:
 | 
							else:
 | 
				
			||||||
| 
						 | 
					@ -187,7 +187,7 @@ class FileTransfersWindow:
 | 
				
			||||||
		sectext += '\n\t' +_('Recipient: ')
 | 
							sectext += '\n\t' +_('Recipient: ')
 | 
				
			||||||
		if file_props['type'] == 's':
 | 
							if file_props['type'] == 's':
 | 
				
			||||||
			jid = unicode(file_props['receiver']).split('/')[0]
 | 
								jid = unicode(file_props['receiver']).split('/')[0]
 | 
				
			||||||
			receiver_name = gajim.get_first_contact_instance_from_jid( 
 | 
								receiver_name = gajim.contacts.get_first_contact_from_jid( 
 | 
				
			||||||
				file_props['tt_account'], jid).name
 | 
									file_props['tt_account'], jid).name
 | 
				
			||||||
			recipient = gtkgui_helpers.escape_for_pango_markup(receiver_name)
 | 
								recipient = gtkgui_helpers.escape_for_pango_markup(receiver_name)
 | 
				
			||||||
		else:
 | 
							else:
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
							
								
								
									
										45
									
								
								src/gajim.py
									
										
									
									
									
								
							
							
						
						
									
										45
									
								
								src/gajim.py
									
										
									
									
									
								
							| 
						 | 
					@ -276,8 +276,10 @@ class Interface:
 | 
				
			||||||
		else:
 | 
							else:
 | 
				
			||||||
			ji = jid
 | 
								ji = jid
 | 
				
			||||||
		# Update contact
 | 
							# Update contact
 | 
				
			||||||
		if gajim.contacts[account].has_key(ji):
 | 
					
 | 
				
			||||||
			lcontact = gajim.contacts[account][ji]
 | 
							jid_list = gajim.contacts.het_jid_list(account)
 | 
				
			||||||
 | 
							if ji in jid_list:
 | 
				
			||||||
 | 
								lcontact = gajim.contacts.get_contacts_from_jid(account, ji)
 | 
				
			||||||
			contact1 = None
 | 
								contact1 = None
 | 
				
			||||||
			resources = []
 | 
								resources = []
 | 
				
			||||||
			for c in lcontact:
 | 
								for c in lcontact:
 | 
				
			||||||
| 
						 | 
					@ -291,7 +293,7 @@ class Interface:
 | 
				
			||||||
				if old_show == new_show and contact1.status == array[2]: #no change
 | 
									if old_show == new_show and contact1.status == array[2]: #no change
 | 
				
			||||||
					return
 | 
										return
 | 
				
			||||||
			else:
 | 
								else:
 | 
				
			||||||
				contact1 = gajim.contacts[account][ji][0]
 | 
									contact1 = gajim.contacts.get_first_contact_from_jid(account, ji)
 | 
				
			||||||
				if contact1.show in statuss:
 | 
									if contact1.show in statuss:
 | 
				
			||||||
					old_show = statuss.index(contact1.show)
 | 
										old_show = statuss.index(contact1.show)
 | 
				
			||||||
				if (resources != [''] and (len(lcontact) != 1 or 
 | 
									if (resources != [''] and (len(lcontact) != 1 or 
 | 
				
			||||||
| 
						 | 
					@ -324,13 +326,13 @@ class Interface:
 | 
				
			||||||
			contact1.keyID = keyID
 | 
								contact1.keyID = keyID
 | 
				
			||||||
		if jid.find('@') <= 0:
 | 
							if jid.find('@') <= 0:
 | 
				
			||||||
			# It must be an agent
 | 
								# It must be an agent
 | 
				
			||||||
			if gajim.contacts[account].has_key(ji):
 | 
								if ji in jid_list:
 | 
				
			||||||
				# Update existing iter
 | 
									# Update existing iter
 | 
				
			||||||
				self.roster.draw_contact(ji, account)
 | 
									self.roster.draw_contact(ji, account)
 | 
				
			||||||
		elif jid == gajim.get_jid_from_account(account):
 | 
							elif jid == gajim.get_jid_from_account(account):
 | 
				
			||||||
			# It's another of our resources.  We don't need to see that!
 | 
								# It's another of our resources.  We don't need to see that!
 | 
				
			||||||
			return
 | 
								return
 | 
				
			||||||
		elif gajim.contacts[account].has_key(ji):
 | 
							elif ji in jid_list:
 | 
				
			||||||
			# It isn't an agent
 | 
								# It isn't an agent
 | 
				
			||||||
			# reset chatstate if needed:
 | 
								# reset chatstate if needed:
 | 
				
			||||||
			# (when contact signs out or has errors)
 | 
								# (when contact signs out or has errors)
 | 
				
			||||||
| 
						 | 
					@ -418,7 +420,7 @@ class Interface:
 | 
				
			||||||
			return
 | 
								return
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		# Handle chat states  
 | 
							# Handle chat states  
 | 
				
			||||||
		contact = gajim.get_first_contact_instance_from_jid(account, jid)
 | 
							contact = gajim.contacts.get_first_contact_from_jid(account, jid)
 | 
				
			||||||
		if self.instances[account]['chats'].has_key(jid):
 | 
							if self.instances[account]['chats'].has_key(jid):
 | 
				
			||||||
			chat_win = self.instances[account]['chats'][jid]
 | 
								chat_win = self.instances[account]['chats'][jid]
 | 
				
			||||||
			if chatstate is not None: # he or she sent us reply, so he supports jep85
 | 
								if chatstate is not None: # he or she sent us reply, so he supports jep85
 | 
				
			||||||
| 
						 | 
					@ -520,8 +522,8 @@ class Interface:
 | 
				
			||||||
	def handle_event_subscribed(self, account, array):
 | 
						def handle_event_subscribed(self, account, array):
 | 
				
			||||||
		#('SUBSCRIBED', account, (jid, resource))
 | 
							#('SUBSCRIBED', account, (jid, resource))
 | 
				
			||||||
		jid = array[0]
 | 
							jid = array[0]
 | 
				
			||||||
		if gajim.contacts[account].has_key(jid):
 | 
							if jid in gajim.contacts.get_jid_list(account):
 | 
				
			||||||
			c = gajim.get_first_contact_instance_from_jid(account, jid)
 | 
								c = gajim.contacts.get_first_contact_from_jid(account, jid)
 | 
				
			||||||
			c.resource = array[1]
 | 
								c.resource = array[1]
 | 
				
			||||||
			self.roster.remove_contact(c, account)
 | 
								self.roster.remove_contact(c, account)
 | 
				
			||||||
			if _('not in the roster') in c.groups:
 | 
								if _('not in the roster') in c.groups:
 | 
				
			||||||
| 
						 | 
					@ -541,7 +543,7 @@ class Interface:
 | 
				
			||||||
			contact1 = gajim.contacts.create_contact(jid = jid, name = name,
 | 
								contact1 = gajim.contacts.create_contact(jid = jid, name = name,
 | 
				
			||||||
				groups = [_('General')], show = 'online', status = 'online',
 | 
									groups = [_('General')], show = 'online', status = 'online',
 | 
				
			||||||
				ask = 'to', resource = array[1], keyID = keyID)
 | 
									ask = 'to', resource = array[1], keyID = keyID)
 | 
				
			||||||
			gajim.contacts[account][jid] = [contact1]
 | 
								gajim.contacts.add_contact(account, contact1)
 | 
				
			||||||
			self.roster.add_contact_to_roster(jid, account)
 | 
								self.roster.add_contact_to_roster(jid, account)
 | 
				
			||||||
		dialogs.InformationDialog(_('Authorization accepted'),
 | 
							dialogs.InformationDialog(_('Authorization accepted'),
 | 
				
			||||||
				_('The contact "%s" has authorized you to see his or her status.')
 | 
									_('The contact "%s" has authorized you to see his or her status.')
 | 
				
			||||||
| 
						 | 
					@ -748,12 +750,12 @@ class Interface:
 | 
				
			||||||
	def handle_event_roster_info(self, account, array):
 | 
						def handle_event_roster_info(self, account, array):
 | 
				
			||||||
		#('ROSTER_INFO', account, (jid, name, sub, ask, groups))
 | 
							#('ROSTER_INFO', account, (jid, name, sub, ask, groups))
 | 
				
			||||||
		jid = array[0]
 | 
							jid = array[0]
 | 
				
			||||||
		if not gajim.contacts[account].has_key(jid):
 | 
							if not jid in gajim.contacts.get_jid_list(account):
 | 
				
			||||||
			return
 | 
								return
 | 
				
			||||||
		contacts = gajim.contacts[account][jid]
 | 
							contacts = gajim.contacts.get_contacts_from_jid(account, jid)
 | 
				
			||||||
		if not (array[2] or array[3]):
 | 
							if not (array[2] or array[3]):
 | 
				
			||||||
			self.roster.remove_contact(contacts[0], account)
 | 
								self.roster.remove_contact(contacts[0], account)
 | 
				
			||||||
			del gajim.contacts[account][jid]
 | 
								gajim.contacts.remove_jid(account, jid)
 | 
				
			||||||
			#FIXME if it was the only one in its group, remove the group
 | 
								#FIXME if it was the only one in its group, remove the group
 | 
				
			||||||
			return
 | 
								return
 | 
				
			||||||
		for contact in contacts:
 | 
							for contact in contacts:
 | 
				
			||||||
| 
						 | 
					@ -860,10 +862,10 @@ class Interface:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	def handle_event_file_request(self, account, array):
 | 
						def handle_event_file_request(self, account, array):
 | 
				
			||||||
		jid = array[0]
 | 
							jid = array[0]
 | 
				
			||||||
		if not gajim.contacts[account].has_key(jid):
 | 
							if jid not in gajim.contacts.get_jid_list(account):
 | 
				
			||||||
			return
 | 
								return
 | 
				
			||||||
		file_props = array[1]
 | 
							file_props = array[1]
 | 
				
			||||||
		contact = gajim.contacts[account][jid][0]
 | 
							contact = gajim.contacts.get_first_contact_from_jid(account, jid)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		if gajim.popup_window(account):
 | 
							if gajim.popup_window(account):
 | 
				
			||||||
			self.instances['file_transfers'].show_file_request(account, contact,
 | 
								self.instances['file_transfers'].show_file_request(account, contact,
 | 
				
			||||||
| 
						 | 
					@ -1244,20 +1246,22 @@ class Interface:
 | 
				
			||||||
			if wins['chats'].has_key(jid):
 | 
								if wins['chats'].has_key(jid):
 | 
				
			||||||
				w = wins['chats'][jid]
 | 
									w = wins['chats'][jid]
 | 
				
			||||||
			else:
 | 
								else:
 | 
				
			||||||
				self.roster.new_chat(gajim.contacts[account][jid][0], account)
 | 
									contact = gajim.contacts.get_first_contact_from_jid(account, jid)
 | 
				
			||||||
 | 
									self.roster.new_chat(contact, account)
 | 
				
			||||||
				w = wins['chats'][jid]
 | 
									w = wins['chats'][jid]
 | 
				
			||||||
		elif typ == 'pm':
 | 
							elif typ == 'pm':
 | 
				
			||||||
			if wins['chats'].has_key(jid):
 | 
								if wins['chats'].has_key(jid):
 | 
				
			||||||
				w = wins['chats'][jid]
 | 
									w = wins['chats'][jid]
 | 
				
			||||||
			else:
 | 
								else:
 | 
				
			||||||
				room_jid, nick = jid.split('/', 1)
 | 
									room_jid, nick = jid.split('/', 1)
 | 
				
			||||||
				if gajim.gc_contacts[account][room_jid].has_key(nick):
 | 
									gc_contact = gajim.contacts.get_gc_contact(account, room_jid, nick)
 | 
				
			||||||
					show = gajim.gc_contacts[account][room_jid][nick].show
 | 
									if gc_contact:
 | 
				
			||||||
 | 
										show = gc_contact.show
 | 
				
			||||||
				else:
 | 
									else:
 | 
				
			||||||
					show = 'offline'
 | 
										show = 'offline'
 | 
				
			||||||
				gc_c = gajim.contacts.create_gc_contact(room_jid = room_jid,
 | 
										gc_contact = gajim.contacts.create_gc_contact(room_jid = room_jid,
 | 
				
			||||||
						nick = nick, show = show)
 | 
											nick = nick, show = show)
 | 
				
			||||||
				c = gajim.contacts.contact_from_gc_contct(c)
 | 
									c = gajim.contacts.contact_from_gc_contct(gc_contact)
 | 
				
			||||||
				self.roster.new_chat(c, account)
 | 
									self.roster.new_chat(c, account)
 | 
				
			||||||
				w = wins['chats'][jid]
 | 
									w = wins['chats'][jid]
 | 
				
			||||||
		elif typ in ('normal', 'file-request', 'file-request-error',
 | 
							elif typ in ('normal', 'file-request', 'file-request-error',
 | 
				
			||||||
| 
						 | 
					@ -1338,9 +1342,8 @@ class Interface:
 | 
				
			||||||
		for a in gajim.connections:
 | 
							for a in gajim.connections:
 | 
				
			||||||
			self.instances[a] = {'infos': {}, 'disco': {}, 'chats': {},
 | 
								self.instances[a] = {'infos': {}, 'disco': {}, 'chats': {},
 | 
				
			||||||
				'gc': {}, 'gc_config': {}}
 | 
									'gc': {}, 'gc_config': {}}
 | 
				
			||||||
			gajim.contacts[a] = {}
 | 
								gajim.contacts.add_account(a)
 | 
				
			||||||
			gajim.groups[a] = {}
 | 
								gajim.groups[a] = {}
 | 
				
			||||||
			gajim.gc_contacts[a] = {}
 | 
					 | 
				
			||||||
			gajim.gc_connected[a] = {}
 | 
								gajim.gc_connected[a] = {}
 | 
				
			||||||
			gajim.newly_added[a] = []
 | 
								gajim.newly_added[a] = []
 | 
				
			||||||
			gajim.to_be_removed[a] = []
 | 
								gajim.to_be_removed[a] = []
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -120,8 +120,6 @@ class GroupchatWindow(chat.Chat):
 | 
				
			||||||
			'nick': self.nicks[room_jid],
 | 
								'nick': self.nicks[room_jid],
 | 
				
			||||||
			'model': self.list_treeview[room_jid].get_model(),
 | 
								'model': self.list_treeview[room_jid].get_model(),
 | 
				
			||||||
			'subject': self.subjects[room_jid],
 | 
								'subject': self.subjects[room_jid],
 | 
				
			||||||
			'contacts': gajim.gc_contacts[self.account][room_jid],
 | 
					 | 
				
			||||||
			'connected': gajim.gc_connected[self.account][room_jid],
 | 
					 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	def load_var(self, room_jid, var):
 | 
						def load_var(self, room_jid, var):
 | 
				
			||||||
| 
						 | 
					@ -131,8 +129,6 @@ class GroupchatWindow(chat.Chat):
 | 
				
			||||||
		self.list_treeview[room_jid].expand_all()
 | 
							self.list_treeview[room_jid].expand_all()
 | 
				
			||||||
		self.set_subject(room_jid, var['subject'])
 | 
							self.set_subject(room_jid, var['subject'])
 | 
				
			||||||
		self.subjects[room_jid] = var['subject']
 | 
							self.subjects[room_jid] = var['subject']
 | 
				
			||||||
		gajim.gc_contacts[self.account][room_jid] = var['contacts']
 | 
					 | 
				
			||||||
		gajim.gc_connected[self.account][room_jid] = var['connected']
 | 
					 | 
				
			||||||
		if gajim.gc_connected[self.account][room_jid]:
 | 
							if gajim.gc_connected[self.account][room_jid]:
 | 
				
			||||||
			self.got_connected(room_jid)
 | 
								self.got_connected(room_jid)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -193,7 +189,7 @@ class GroupchatWindow(chat.Chat):
 | 
				
			||||||
	def on_groupchat_window_destroy(self, widget):
 | 
						def on_groupchat_window_destroy(self, widget):
 | 
				
			||||||
		chat.Chat.on_window_destroy(self, widget, 'gc')
 | 
							chat.Chat.on_window_destroy(self, widget, 'gc')
 | 
				
			||||||
		for room_jid in self.xmls:
 | 
							for room_jid in self.xmls:
 | 
				
			||||||
			del gajim.gc_contacts[self.account][room_jid]
 | 
								gajim.contacts.remove_room(self.account, room_jid)
 | 
				
			||||||
			del gajim.gc_connected[self.account][room_jid]
 | 
								del gajim.gc_connected[self.account][room_jid]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	def on_groupchat_window_focus_in_event(self, widget, event):
 | 
						def on_groupchat_window_focus_in_event(self, widget, event):
 | 
				
			||||||
| 
						 | 
					@ -346,18 +342,15 @@ class GroupchatWindow(chat.Chat):
 | 
				
			||||||
				fin = True
 | 
									fin = True
 | 
				
			||||||
		return None
 | 
							return None
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	def get_nick_list(self, room_jid):
 | 
					 | 
				
			||||||
		'''get nicks of contacts in a room'''
 | 
					 | 
				
			||||||
		return gajim.gc_contacts[self.account][room_jid].keys()
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	def remove_contact(self, room_jid, nick):
 | 
						def remove_contact(self, room_jid, nick):
 | 
				
			||||||
		'''Remove a user from the contacts_list'''
 | 
							'''Remove a user from the contacts_list'''
 | 
				
			||||||
		model = self.list_treeview[room_jid].get_model()
 | 
							model = self.list_treeview[room_jid].get_model()
 | 
				
			||||||
		iter = self.get_contact_iter(room_jid, nick)
 | 
							iter = self.get_contact_iter(room_jid, nick)
 | 
				
			||||||
		if not iter:
 | 
							if not iter:
 | 
				
			||||||
			return
 | 
								return
 | 
				
			||||||
		if gajim.gc_contacts[self.account][room_jid].has_key(nick):
 | 
							gc_contact = gajim.contacts.get_gc_contact(self.account, room_jid, nick)
 | 
				
			||||||
			del gajim.gc_contacts[self.account][room_jid][nick]
 | 
							if 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:
 | 
				
			||||||
| 
						 | 
					@ -365,7 +358,6 @@ class GroupchatWindow(chat.Chat):
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	def add_contact_to_roster(self, room_jid, nick, show, role, jid, affiliation, status):
 | 
						def add_contact_to_roster(self, room_jid, nick, show, role, jid, affiliation, status):
 | 
				
			||||||
		model = self.list_treeview[room_jid].get_model()
 | 
							model = self.list_treeview[room_jid].get_model()
 | 
				
			||||||
		resource = ''
 | 
					 | 
				
			||||||
		role_name = helpers.get_uf_role(role, plural = True)
 | 
							role_name = helpers.get_uf_role(role, plural = True)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		if jid:
 | 
							if jid:
 | 
				
			||||||
| 
						 | 
					@ -381,11 +373,11 @@ class GroupchatWindow(chat.Chat):
 | 
				
			||||||
				(gajim.interface.roster.jabber_state_images['16']['closed'], 'role', role,
 | 
									(gajim.interface.roster.jabber_state_images['16']['closed'], 'role', role,
 | 
				
			||||||
				'<b>%s</b>' % role_name))
 | 
									'<b>%s</b>' % role_name))
 | 
				
			||||||
		iter = model.append(role_iter, (None, 'contact', nick, name))
 | 
							iter = model.append(role_iter, (None, 'contact', nick, name))
 | 
				
			||||||
		if not gajim.gc_contacts[self.account][room_jid].has_key(nick):
 | 
							if not nick in gajim.contacts.get_nick_list(self.account, room_jid, nick):
 | 
				
			||||||
			gajim.gc_contacts[self.account][room_jid][nick] = \
 | 
								gc_contact = gajim.contacts.create_gc_contact(room_jid = room_jid,
 | 
				
			||||||
				gajim.contacts.create_gc_contact(room_jid = room_jid, nick = nick,
 | 
									nick = nick, show = show, status = status, role = role,
 | 
				
			||||||
				show = show, status = status, role = role,
 | 
					 | 
				
			||||||
				affiliation = affiliation, jid = jid)
 | 
									affiliation = affiliation, jid = jid)
 | 
				
			||||||
 | 
								gajim.contacts.add_gc_contact(self.account, gc_contact)
 | 
				
			||||||
		self.draw_contact(room_jid, nick)
 | 
							self.draw_contact(room_jid, nick)
 | 
				
			||||||
		if nick == self.nicks[room_jid]: # we became online
 | 
							if nick == self.nicks[room_jid]: # we became online
 | 
				
			||||||
			self.got_connected(room_jid)
 | 
								self.got_connected(room_jid)
 | 
				
			||||||
| 
						 | 
					@ -398,15 +390,15 @@ class GroupchatWindow(chat.Chat):
 | 
				
			||||||
		if not iter:
 | 
							if not iter:
 | 
				
			||||||
			return
 | 
								return
 | 
				
			||||||
		model = self.list_treeview[room_jid].get_model()
 | 
							model = self.list_treeview[room_jid].get_model()
 | 
				
			||||||
		contact = gajim.gc_contacts[self.account][room_jid][nick]
 | 
							gc_contact = gajim.contacts.get_gc_contact(self.account, room_jid, nick)
 | 
				
			||||||
		state_images = gajim.interface.roster.jabber_state_images['16']
 | 
							state_images = gajim.interface.roster.jabber_state_images['16']
 | 
				
			||||||
		if gajim.awaiting_events[self.account].has_key(room_jid + '/' + nick):
 | 
							if gajim.awaiting_events[self.account].has_key(room_jid + '/' + nick):
 | 
				
			||||||
			image = state_images['message']
 | 
								image = state_images['message']
 | 
				
			||||||
		else:
 | 
							else:
 | 
				
			||||||
			image = state_images[contact.show]
 | 
								image = state_images[gc_contact.show]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		name = gtkgui_helpers.escape_for_pango_markup(contact.name)
 | 
							name = gtkgui_helpers.escape_for_pango_markup(gc_contact.name)
 | 
				
			||||||
		status = contact.status
 | 
							status = gc_contact.status
 | 
				
			||||||
		# add status msg, if not empty, under contact name in the treeview
 | 
							# add status msg, if not empty, under contact name in the treeview
 | 
				
			||||||
		if status and gajim.config.get('show_status_msgs_in_roster'):
 | 
							if status and gajim.config.get('show_status_msgs_in_roster'):
 | 
				
			||||||
			status = status.strip()
 | 
								status = status.strip()
 | 
				
			||||||
| 
						 | 
					@ -425,13 +417,11 @@ class GroupchatWindow(chat.Chat):
 | 
				
			||||||
	def draw_roster(self, room_jid):
 | 
						def draw_roster(self, room_jid):
 | 
				
			||||||
		model = self.list_treeview[room_jid].get_model()
 | 
							model = self.list_treeview[room_jid].get_model()
 | 
				
			||||||
		model.clear()
 | 
							model.clear()
 | 
				
			||||||
		for nick in gajim.gc_contacts[self.account][room_jid]:
 | 
							for nick in gajim.contact.get_nick_list(self.account, room_jid)0:
 | 
				
			||||||
			contact = gajim.gc_contacts[self.account][room_jid][nick]
 | 
								gc_contact = gajim.contact.get_gc_contact(self.account, room_jid, nick)
 | 
				
			||||||
			fjid = contact.jid
 | 
								self.add_contact_to_roster(room_jid, nick, gc_contact.show,
 | 
				
			||||||
			if contact.resource:
 | 
									gc_contact.role, gc_contact.jid, gc_contact.affiliation,
 | 
				
			||||||
				fjid += '/' + contact.resource
 | 
									gc_contact.status)
 | 
				
			||||||
			self.add_contact_to_roster(room_jid, nick, contact.show, contact.role,
 | 
					 | 
				
			||||||
				fjid, contact.affiliation, contact.status)
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
	def get_role(self, room_jid, nick):
 | 
						def get_role(self, room_jid, nick):
 | 
				
			||||||
		if gajim.gc_contacts[self.account][room_jid].has_key(nick):
 | 
							if gajim.gc_contacts[self.account][room_jid].has_key(nick):
 | 
				
			||||||
| 
						 | 
					@ -487,7 +477,7 @@ class GroupchatWindow(chat.Chat):
 | 
				
			||||||
				room_jid + '/' + nick):
 | 
									room_jid + '/' + nick):
 | 
				
			||||||
				self.remove_contact(room_jid, nick)
 | 
									self.remove_contact(room_jid, nick)
 | 
				
			||||||
			else:
 | 
								else:
 | 
				
			||||||
				c = gajim.gc_contacts[self.account][room_jid][nick]
 | 
									c = gajim.contacts.get_gc_contact(self.account, room_jid, nick)
 | 
				
			||||||
				c.show = show
 | 
									c.show = show
 | 
				
			||||||
				c.status = status
 | 
									c.status = status
 | 
				
			||||||
			if nick == self.nicks[room_jid] and statusCode != '303': # We became offline
 | 
								if nick == self.nicks[room_jid] and statusCode != '303': # We became offline
 | 
				
			||||||
| 
						 | 
					@ -504,7 +494,7 @@ class GroupchatWindow(chat.Chat):
 | 
				
			||||||
					self.add_contact_to_roster(room_jid, nick, show, role, jid,
 | 
										self.add_contact_to_roster(room_jid, nick, show, role, jid,
 | 
				
			||||||
						affiliation, status)
 | 
											affiliation, status)
 | 
				
			||||||
				else:
 | 
									else:
 | 
				
			||||||
					c = gajim.gc_contacts[self.account][room_jid][nick]
 | 
										c = gajim.contacts.get_gc_contact(self.account, room_jid, nick)
 | 
				
			||||||
					if c.show == show and c.status == status and \
 | 
										if c.show == show and c.status == status and \
 | 
				
			||||||
						c.affiliation == affiliation: #no change
 | 
											c.affiliation == affiliation: #no change
 | 
				
			||||||
						return
 | 
											return
 | 
				
			||||||
| 
						 | 
					@ -544,7 +534,7 @@ class GroupchatWindow(chat.Chat):
 | 
				
			||||||
		# for room_jid & number of unread private msgs with each contact
 | 
							# for room_jid & number of unread private msgs with each contact
 | 
				
			||||||
		# that we have
 | 
							# that we have
 | 
				
			||||||
		nb = 0
 | 
							nb = 0
 | 
				
			||||||
		for nick in self.get_nick_list(room_jid):
 | 
							for nick in gajim.contacts.get_nick_list(self.account, room_jid):
 | 
				
			||||||
			fjid = room_jid + '/' + nick
 | 
								fjid = room_jid + '/' + nick
 | 
				
			||||||
			if gajim.awaiting_events[self.account].has_key(fjid):
 | 
								if gajim.awaiting_events[self.account].has_key(fjid):
 | 
				
			||||||
				# gc can only have messages as event
 | 
									# gc can only have messages as event
 | 
				
			||||||
| 
						 | 
					@ -686,7 +676,8 @@ class GroupchatWindow(chat.Chat):
 | 
				
			||||||
						self.nick_hits[room_jid].pop(0)
 | 
											self.nick_hits[room_jid].pop(0)
 | 
				
			||||||
					else:
 | 
										else:
 | 
				
			||||||
						self.nick_hits[room_jid] = [] # clear the hit list
 | 
											self.nick_hits[room_jid] = [] # clear the hit list
 | 
				
			||||||
						list_nick = self.get_nick_list(room_jid)
 | 
											list_nick = gajim.contacts.get_nick_list(self.account,
 | 
				
			||||||
 | 
												room_jid)
 | 
				
			||||||
						for nick in list_nick:
 | 
											for nick in list_nick:
 | 
				
			||||||
							if nick.lower().startswith(begin.lower()): # the word is the begining of a nick
 | 
												if nick.lower().startswith(begin.lower()): # the word is the begining of a nick
 | 
				
			||||||
								self.nick_hits[room_jid].append(nick)
 | 
													self.nick_hits[room_jid].append(nick)
 | 
				
			||||||
| 
						 | 
					@ -804,7 +795,7 @@ class GroupchatWindow(chat.Chat):
 | 
				
			||||||
					# example: /query foo
 | 
										# example: /query foo
 | 
				
			||||||
					if len(message_array):
 | 
										if len(message_array):
 | 
				
			||||||
						nick = message_array.pop(0)
 | 
											nick = message_array.pop(0)
 | 
				
			||||||
						nicks = self.get_nick_list(room_jid)
 | 
											nicks = gajim.contacts.get_nick_list(self.account, room_jid)
 | 
				
			||||||
						if nick in nicks:
 | 
											if nick in nicks:
 | 
				
			||||||
							self.on_send_pm(nick = nick)
 | 
												self.on_send_pm(nick = nick)
 | 
				
			||||||
							self.clear(message_textview)
 | 
												self.clear(message_textview)
 | 
				
			||||||
| 
						 | 
					@ -819,7 +810,8 @@ class GroupchatWindow(chat.Chat):
 | 
				
			||||||
					if len(message_array):
 | 
										if len(message_array):
 | 
				
			||||||
						message_array = message_array[0].split()
 | 
											message_array = message_array[0].split()
 | 
				
			||||||
						nick = message_array.pop(0)
 | 
											nick = message_array.pop(0)
 | 
				
			||||||
						room_nicks = self.get_nick_list(room_jid)
 | 
											room_nicks = gajim.contacts.get_nick_list(self.account,
 | 
				
			||||||
 | 
												room_jid)
 | 
				
			||||||
						if nick in room_nicks:
 | 
											if nick in room_nicks:
 | 
				
			||||||
							privmsg = ' '.join(message_array)
 | 
												privmsg = ' '.join(message_array)
 | 
				
			||||||
							self.on_send_pm(nick=nick, msg=privmsg)
 | 
												self.on_send_pm(nick=nick, msg=privmsg)
 | 
				
			||||||
| 
						 | 
					@ -901,7 +893,8 @@ class GroupchatWindow(chat.Chat):
 | 
				
			||||||
					if len(message_array):
 | 
										if len(message_array):
 | 
				
			||||||
						message_array = message_array[0].split()
 | 
											message_array = message_array[0].split()
 | 
				
			||||||
						nick = message_array.pop(0)
 | 
											nick = message_array.pop(0)
 | 
				
			||||||
						room_nicks = self.get_nick_list(room_jid)
 | 
											room_nicks = gajim.contacts.get_nick_list(self.account,
 | 
				
			||||||
 | 
												room_jid)
 | 
				
			||||||
						reason = ' '.join(message_array)
 | 
											reason = ' '.join(message_array)
 | 
				
			||||||
						if nick in room_nicks:
 | 
											if nick in room_nicks:
 | 
				
			||||||
							ban_jid = gajim.construct_fjid(room_jid, nick)
 | 
												ban_jid = gajim.construct_fjid(room_jid, nick)
 | 
				
			||||||
| 
						 | 
					@ -921,7 +914,8 @@ class GroupchatWindow(chat.Chat):
 | 
				
			||||||
					if len(message_array):
 | 
										if len(message_array):
 | 
				
			||||||
						message_array = message_array[0].split()
 | 
											message_array = message_array[0].split()
 | 
				
			||||||
						nick = message_array.pop(0)
 | 
											nick = message_array.pop(0)
 | 
				
			||||||
						room_nicks = self.get_nick_list(room_jid)
 | 
											room_nicks = gajim.contacts.get_nick_list(self.account,
 | 
				
			||||||
 | 
												room_jid)
 | 
				
			||||||
						reason = ' '.join(message_array)
 | 
											reason = ' '.join(message_array)
 | 
				
			||||||
						if nick in room_nicks:
 | 
											if nick in room_nicks:
 | 
				
			||||||
							gajim.connections[self.account].gc_set_role(room_jid, nick,
 | 
												gajim.connections[self.account].gc_set_role(room_jid, nick,
 | 
				
			||||||
| 
						 | 
					@ -1159,7 +1153,7 @@ current room topic.') % command, room_jid)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	def on_info(self, widget, room_jid, nick):
 | 
						def on_info(self, widget, room_jid, nick):
 | 
				
			||||||
		'''Call vcard_information_window class to display user's information'''
 | 
							'''Call vcard_information_window class to display user's information'''
 | 
				
			||||||
		c = gajim.gc_contacts[self.account][room_jid][nick]
 | 
							c = gajim.contacts.get_gc_contact(self.account, room_jid, nick)
 | 
				
			||||||
		if c.jid and c.resource:
 | 
							if c.jid and c.resource:
 | 
				
			||||||
			# on GC, we know resource only if we're mod and up
 | 
								# on GC, we know resource only if we're mod and up
 | 
				
			||||||
			jid = c.jid
 | 
								jid = c.jid
 | 
				
			||||||
| 
						 | 
					@ -1190,7 +1184,7 @@ current room topic.') % command, room_jid)
 | 
				
			||||||
		room_jid = self.get_active_jid()
 | 
							room_jid = self.get_active_jid()
 | 
				
			||||||
		fjid = gajim.construct_fjid(room_jid, nick) # 'fake' jid
 | 
							fjid = gajim.construct_fjid(room_jid, nick) # 'fake' jid
 | 
				
			||||||
		if not gajim.interface.instances[self.account]['chats'].has_key(fjid):
 | 
							if not gajim.interface.instances[self.account]['chats'].has_key(fjid):
 | 
				
			||||||
			gc_c = gajim.gc_contacts[self.account][room_jid][nick]
 | 
								gc_c = gajim.contacts.get_gc_contact(self.account, room_jid, nick)
 | 
				
			||||||
			gajim.interface.roster.new_chat(gc_c, self.account)
 | 
								gajim.interface.roster.new_chat(gc_c, self.account)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		#make active here in case we need to send a message
 | 
							#make active here in case we need to send a message
 | 
				
			||||||
| 
						 | 
					@ -1234,15 +1228,15 @@ current room topic.') % command, room_jid)
 | 
				
			||||||
		'''Make contact's popup menu'''
 | 
							'''Make contact's popup menu'''
 | 
				
			||||||
		model = self.list_treeview[room_jid].get_model()
 | 
							model = self.list_treeview[room_jid].get_model()
 | 
				
			||||||
		nick = model[iter][C_NICK].decode('utf-8')
 | 
							nick = model[iter][C_NICK].decode('utf-8')
 | 
				
			||||||
		c = gajim.gc_contacts[self.account][room_jid][nick]
 | 
							c = gajim.contacts.get_gc_contact(self.account, room_jid, nick)
 | 
				
			||||||
		jid = c.jid
 | 
							jid = c.jid
 | 
				
			||||||
		target_affiliation = c.affiliation
 | 
							target_affiliation = c.affiliation
 | 
				
			||||||
		target_role = c.role
 | 
							target_role = c.role
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		# looking for user's affiliation and role
 | 
							# looking for user's affiliation and role
 | 
				
			||||||
		user_nick = self.nicks[room_jid]
 | 
							user_nick = self.nicks[room_jid]
 | 
				
			||||||
		user_affiliation = gajim.gc_contacts[self.account][room_jid][user_nick].\
 | 
							user_affiliation = gajim.contacts.get_gc_contact(self.account, room_jid,
 | 
				
			||||||
			affiliation
 | 
								user_nick].affiliation
 | 
				
			||||||
		user_role = self.get_role(room_jid, user_nick)
 | 
							user_role = self.get_role(room_jid, user_nick)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		# making menu from glade
 | 
							# making menu from glade
 | 
				
			||||||
| 
						 | 
					@ -1333,8 +1327,8 @@ current room topic.') % command, room_jid)
 | 
				
			||||||
				room_jid, show='offline', status=reason)
 | 
									room_jid, show='offline', status=reason)
 | 
				
			||||||
		del self.nicks[room_jid]
 | 
							del self.nicks[room_jid]
 | 
				
			||||||
		# They can already be removed by the destroy function
 | 
							# They can already be removed by the destroy function
 | 
				
			||||||
		if gajim.gc_contacts[self.account].has_key(room_jid):
 | 
							if room_jid in gajim.contacts.get_room_list(self.account):
 | 
				
			||||||
			del gajim.gc_contacts[self.account][room_jid]
 | 
								gajim.contacts.remove_room(self.account, room_jid)
 | 
				
			||||||
			del gajim.gc_connected[self.account][room_jid]
 | 
								del gajim.gc_connected[self.account][room_jid]
 | 
				
			||||||
		del self.list_treeview[room_jid]
 | 
							del self.list_treeview[room_jid]
 | 
				
			||||||
		del self.subjects[room_jid]
 | 
							del self.subjects[room_jid]
 | 
				
			||||||
| 
						 | 
					@ -1350,7 +1344,11 @@ current room topic.') % command, room_jid)
 | 
				
			||||||
	def got_disconnected(self, room_jid):
 | 
						def got_disconnected(self, room_jid):
 | 
				
			||||||
		model = self.list_treeview[room_jid].get_model()
 | 
							model = self.list_treeview[room_jid].get_model()
 | 
				
			||||||
		model.clear()
 | 
							model.clear()
 | 
				
			||||||
		gajim.gc_contacts[self.account][room_jid] = {}
 | 
							nick_list = gajim.contacts.get_nick_list(self.account, room_jid)
 | 
				
			||||||
 | 
							for nick in nick_list:
 | 
				
			||||||
 | 
								gc_contact = gajim.contacts.get_gc_contact(self.account, room_jid,
 | 
				
			||||||
 | 
									nick)
 | 
				
			||||||
 | 
								gajim.contacts.remove_gc_contact(self.account, gc_contact)
 | 
				
			||||||
		gajim.gc_connected[self.account][room_jid] = False
 | 
							gajim.gc_connected[self.account][room_jid] = False
 | 
				
			||||||
		message_textview = self.message_textviews[room_jid]
 | 
							message_textview = self.message_textviews[room_jid]
 | 
				
			||||||
		message_textview.set_sensitive(False)
 | 
							message_textview.set_sensitive(False)
 | 
				
			||||||
| 
						 | 
					@ -1518,7 +1516,7 @@ current room topic.') % command, room_jid)
 | 
				
			||||||
					gajim.interface.systray.add_jid(fjid, self.account, 'pm')
 | 
										gajim.interface.systray.add_jid(fjid, self.account, 'pm')
 | 
				
			||||||
			self.show_title()
 | 
								self.show_title()
 | 
				
			||||||
		else:
 | 
							else:
 | 
				
			||||||
			gc_c = gajim.gc_contacts[self.account][room_jid][nick]
 | 
								gc_c = gajim.contacts.get_gc_contact(self.account, room_jid, nick)
 | 
				
			||||||
			gajim.interface.roster.new_chat(gc_c, self.account)
 | 
								gajim.interface.roster.new_chat(gc_c, self.account)
 | 
				
			||||||
		# Scroll to line
 | 
							# Scroll to line
 | 
				
			||||||
		self.list_treeview[room_jid].expand_row(path[0:1], False)
 | 
							self.list_treeview[room_jid].expand_row(path[0:1], False)
 | 
				
			||||||
| 
						 | 
					@ -1553,7 +1551,8 @@ current room topic.') % command, room_jid)
 | 
				
			||||||
					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.gc_contacts[account][room_jid][nick])
 | 
											self.show_tooltip, gajim.contacts.get_gc_contact(account,
 | 
				
			||||||
 | 
											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()
 | 
							model = widget.get_model()
 | 
				
			||||||
| 
						 | 
					@ -1627,7 +1626,8 @@ current room topic.') % command, room_jid)
 | 
				
			||||||
				nick = model[iter][C_NICK].decode('utf-8')
 | 
									nick = model[iter][C_NICK].decode('utf-8')
 | 
				
			||||||
				fjid = gajim.construct_fjid(room_jid, nick)
 | 
									fjid = gajim.construct_fjid(room_jid, nick)
 | 
				
			||||||
				if not gajim.interface.instances[self.account]['chats'].has_key(fjid):
 | 
									if not gajim.interface.instances[self.account]['chats'].has_key(fjid):
 | 
				
			||||||
					gc_c = gajim.gc_contacts[self.account][room_jid][nick]
 | 
										gc_c = gajim.contacts.get_gc_contact(self.account, room_jid,
 | 
				
			||||||
 | 
											nick)
 | 
				
			||||||
					gajim.interface.roster.new_chat(gc_c, self.account)
 | 
										gajim.interface.roster.new_chat(gc_c, self.account)
 | 
				
			||||||
				gajim.interface.instances[self.account]['chats'][fjid].set_active_tab(fjid)
 | 
									gajim.interface.instances[self.account]['chats'][fjid].set_active_tab(fjid)
 | 
				
			||||||
				gajim.interface.instances[self.account]['chats'][fjid].window.present()
 | 
									gajim.interface.instances[self.account]['chats'][fjid].window.present()
 | 
				
			||||||
| 
						 | 
					@ -1644,7 +1644,8 @@ current room topic.') % command, room_jid)
 | 
				
			||||||
			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.gc_contacts[self.account][room_jid]: #it's a group
 | 
								if not nick in gajim.get_nick_list(self.account, room_jid):
 | 
				
			||||||
 | 
									#it's a group
 | 
				
			||||||
				if x < 20: # first cell in 1st column (the arrow SINGLE clicked)
 | 
									if x < 20: # first cell in 1st column (the arrow SINGLE clicked)
 | 
				
			||||||
					if (widget.row_expanded(path)):
 | 
										if (widget.row_expanded(path)):
 | 
				
			||||||
						widget.collapse_row(path)
 | 
											widget.collapse_row(path)
 | 
				
			||||||
| 
						 | 
					@ -1669,9 +1670,9 @@ current room topic.') % command, room_jid)
 | 
				
			||||||
			nick = model[iter][C_NICK].decode('utf-8')
 | 
								nick = model[iter][C_NICK].decode('utf-8')
 | 
				
			||||||
			jid = gajim.construct_fjid(room_jid, nick)
 | 
								jid = gajim.construct_fjid(room_jid, nick)
 | 
				
			||||||
			if not gajim.interface.instances[self.account]['chats'].has_key(jid):
 | 
								if not gajim.interface.instances[self.account]['chats'].has_key(jid):
 | 
				
			||||||
				gc_c = gajim.gc_contacts[self.account][room_jid][nick]
 | 
									gc_c = gajim.contacts.get_gc_contact(self.account, room_jid, nick)
 | 
				
			||||||
				gajim.interface.roster.new_chat(gc_c, self.account)
 | 
									gajim.interface.roster.new_chat(gc_c, self.account)
 | 
				
			||||||
				jid = contact.jid
 | 
									jid = gc_c.jid
 | 
				
			||||||
			gajim.interface.instances[self.account]['chats'][jid].set_active_tab(jid)
 | 
								gajim.interface.instances[self.account]['chats'][jid].set_active_tab(jid)
 | 
				
			||||||
			gajim.interface.instances[self.account]['chats'][jid].window.present()
 | 
								gajim.interface.instances[self.account]['chats'][jid].window.present()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
	Add table
		
		Reference in a new issue