we can see people in the groupchat. groupchat is now usable
This commit is contained in:
		
							parent
							
								
									2264da922b
								
							
						
					
					
						commit
						2f1648f94f
					
				
					 1 changed files with 45 additions and 11 deletions
				
			
		| 
						 | 
				
			
			@ -301,12 +301,40 @@ class message_Window:
 | 
			
		|||
class gc:
 | 
			
		||||
	def delete_event(self, widget):
 | 
			
		||||
		"""close window"""
 | 
			
		||||
		del self.plugin.windows[self.account]['chats'][self.jid]
 | 
			
		||||
		del self.plugin.windows[self.account]['gc'][self.jid]
 | 
			
		||||
 | 
			
		||||
	def on_close(self, widget):
 | 
			
		||||
		"""When Cancel button is clicked"""
 | 
			
		||||
		widget.get_toplevel().destroy()
 | 
			
		||||
 | 
			
		||||
	def get_user_iter(self, nick):
 | 
			
		||||
		model = self.tree.get_model()
 | 
			
		||||
		iter = model.get_iter_root()
 | 
			
		||||
		if not iter:
 | 
			
		||||
			return None
 | 
			
		||||
		while iter:
 | 
			
		||||
			if nick == model.get_value(iter, 0):
 | 
			
		||||
				return iter
 | 
			
		||||
			iter = model.iter_next(iter)
 | 
			
		||||
		return None
 | 
			
		||||
	
 | 
			
		||||
	def add_user_to_roster(self, nick):
 | 
			
		||||
		model = self.tree.get_model()
 | 
			
		||||
		model.append(None, (nick,))
 | 
			
		||||
 | 
			
		||||
	def chg_user_status(self, nick, show, status, account):
 | 
			
		||||
		"""When a user change his status"""
 | 
			
		||||
		model = self.tree.get_model()
 | 
			
		||||
		if show == 'offline' or show == 'error':
 | 
			
		||||
			self.remove_user(user, account)
 | 
			
		||||
		else:
 | 
			
		||||
			if not self.get_user_iter(nick):
 | 
			
		||||
				self.add_user_to_roster(nick)
 | 
			
		||||
#			u = self.contacts[account][user.jid]
 | 
			
		||||
#			u.show = show
 | 
			
		||||
#			u.status = status
 | 
			
		||||
#			self.redraw_jid(user.jid, account)
 | 
			
		||||
 | 
			
		||||
	def on_msg_key_press_event(self, widget, event):
 | 
			
		||||
		"""When a key is pressed :
 | 
			
		||||
		if enter is pressed without the shit key, message (if not empty) is sent
 | 
			
		||||
| 
						 | 
				
			
			@ -359,7 +387,11 @@ class gc:
 | 
			
		|||
		self.account = account
 | 
			
		||||
		self.xml = gtk.glade.XML(GTKGUI_GLADE, 'Gc', APP)
 | 
			
		||||
		self.window = self.xml.get_widget('Gc')
 | 
			
		||||
		self.list = self.xml.get_widget('list')
 | 
			
		||||
		self.tree = self.xml.get_widget('list')
 | 
			
		||||
		store = gtk.TreeStore(str)
 | 
			
		||||
		column = gtk.TreeViewColumn('contacts', gtk.CellRendererText(), text=0)
 | 
			
		||||
		self.tree.append_column(column)
 | 
			
		||||
		self.tree.set_model(store)
 | 
			
		||||
		conversation = self.xml.get_widget('conversation')
 | 
			
		||||
		buffer = conversation.get_buffer()
 | 
			
		||||
		end_iter = buffer.get_end_iter()
 | 
			
		||||
| 
						 | 
				
			
			@ -393,7 +425,7 @@ class join_gc:
 | 
			
		|||
		server = self.xml.get_widget('entry_server').get_text()
 | 
			
		||||
		passw = self.xml.get_widget('entry_pass').get_text()
 | 
			
		||||
		jid = '%s@%s' % (room, server)
 | 
			
		||||
		self.plugin.windows[self.account]['chats'][jid] = gc(jid, nick, \
 | 
			
		||||
		self.plugin.windows[self.account]['gc'][jid] = gc(jid, nick, \
 | 
			
		||||
			self.plugin, self.account)
 | 
			
		||||
		#TODO: verify entries
 | 
			
		||||
		self.plugin.send('GC_JOIN', self.account, (nick, room, server, passw))
 | 
			
		||||
| 
						 | 
				
			
			@ -1829,6 +1861,10 @@ class plugin:
 | 
			
		|||
		elif self.roster.contacts[account].has_key(ji):
 | 
			
		||||
			#It isn't an agent
 | 
			
		||||
			self.roster.chg_user_status(user1, array[1], array[2], account)
 | 
			
		||||
		elif self.windows[account]['gc'].has_key(ji):
 | 
			
		||||
			#it is a groupchat presence
 | 
			
		||||
			self.windows[account]['gc'][ji].chg_user_status(resource, array[1],\
 | 
			
		||||
				array[2], account)
 | 
			
		||||
 | 
			
		||||
	def handle_event_msg(self, account, array):
 | 
			
		||||
		#('MSG', account, (user, msg))
 | 
			
		||||
| 
						 | 
				
			
			@ -1895,7 +1931,7 @@ class plugin:
 | 
			
		|||
					'proxyhost': array[7], \
 | 
			
		||||
					'proxyport': array[8]}
 | 
			
		||||
		self.send('CONFIG', None, ('accounts', self.accounts))
 | 
			
		||||
		self.windows[name] = {'infos': {}, 'chats': {}}
 | 
			
		||||
		self.windows[name] = {'infos': {}, 'chats': {}, 'gc': {}}
 | 
			
		||||
		self.queues[name] = {}
 | 
			
		||||
		self.connected[name] = 0
 | 
			
		||||
		self.roster.groups[name] = {}
 | 
			
		||||
| 
						 | 
				
			
			@ -1940,16 +1976,16 @@ class plugin:
 | 
			
		|||
		#('GC_MSG', account, (jid, msg))
 | 
			
		||||
		jids = string.split(array[0], '/')
 | 
			
		||||
		jid = jids[0]
 | 
			
		||||
		if not self.windows[account]['chats'].has_key(jid):
 | 
			
		||||
		if not self.windows[account]['gc'].has_key(jid):
 | 
			
		||||
			return
 | 
			
		||||
		if len(jids) == 1:
 | 
			
		||||
			#message from server
 | 
			
		||||
			self.windows[account]['chats'][jid].print_conversation(array[1])
 | 
			
		||||
			self.windows[account]['gc'][jid].print_conversation(array[1])
 | 
			
		||||
		else:
 | 
			
		||||
			#message from someone
 | 
			
		||||
			self.windows[account]['chats'][jid].print_conversation(array[1], \
 | 
			
		||||
			self.windows[account]['gc'][jid].print_conversation(array[1], \
 | 
			
		||||
				jids[1])
 | 
			
		||||
			if not self.windows[account]['chats'][jid].window.\
 | 
			
		||||
			if not self.windows[account]['gc'][jid].window.\
 | 
			
		||||
				get_property('is-active'):
 | 
			
		||||
				self.systray.add_jid(jid, account)
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -2055,9 +2091,7 @@ class plugin:
 | 
			
		|||
		self.nicks = {}
 | 
			
		||||
		self.sleeper_state = {} #whether we pass auto away / xa or not
 | 
			
		||||
		for a in self.accounts.keys():
 | 
			
		||||
			self.windows[a] = {}
 | 
			
		||||
			self.windows[a]['infos'] = {}
 | 
			
		||||
			self.windows[a]['chats'] = {}
 | 
			
		||||
			self.windows[a] = {'infos': {}, 'chats': {}, 'gc': {}}
 | 
			
		||||
			self.queues[a] = {}
 | 
			
		||||
			self.connected[a] = 0
 | 
			
		||||
			self.nicks[a] = self.accounts[a]['name']
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		
		Reference in a new issue