better popup
This commit is contained in:
		
							parent
							
								
									423240e352
								
							
						
					
					
						commit
						d4fc3f4bf1
					
				
					 6 changed files with 140 additions and 52 deletions
				
			
		| 
						 | 
				
			
			@ -420,8 +420,6 @@ class Chat:
 | 
			
		|||
				self.plugin.launch_browser_mailer(kind, word)
 | 
			
		||||
 | 
			
		||||
	def detect_and_print_special_text(self, otext, jid, other_tag, print_all_special):
 | 
			
		||||
		# nk 2 yann: when doing this in GC you have to pass sth and looks for
 | 
			
		||||
		# xmls[Other-key-here] I believe  :D
 | 
			
		||||
		conversation_textview = self.xmls[jid].get_widget('conversation_textview')
 | 
			
		||||
		conversation_buffer = conversation_textview.get_buffer()
 | 
			
		||||
		
 | 
			
		||||
| 
						 | 
				
			
			@ -462,7 +460,6 @@ class Chat:
 | 
			
		|||
			#it's an emoticon
 | 
			
		||||
			tag = None
 | 
			
		||||
			emot_ascii = possible_emot_ascii_caps
 | 
			
		||||
			print 'emoticon:', emot_ascii
 | 
			
		||||
			end_iter = conversation_buffer.get_end_iter()
 | 
			
		||||
			conversation_buffer.insert_pixbuf(end_iter, \
 | 
			
		||||
				self.plugin.emoticons[emot_ascii])
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -3,8 +3,8 @@
 | 
			
		|||
## Gajim Team:
 | 
			
		||||
## 	- Yann Le Boulanger <asterix@lagaule.org>
 | 
			
		||||
## 	- Vincent Hanquez <tab@snarc.org>
 | 
			
		||||
##		- Nikos Kouremenos <nkour@jabber.org>
 | 
			
		||||
##		- Alex Podaras <bigpod@jabber.org>
 | 
			
		||||
##	- Nikos Kouremenos <nkour@jabber.org>
 | 
			
		||||
##	- Alex Podaras <bigpod@jabber.org>
 | 
			
		||||
##
 | 
			
		||||
##	Copyright (C) 2003-2005 Gajim Team
 | 
			
		||||
##
 | 
			
		||||
| 
						 | 
				
			
			@ -519,6 +519,7 @@ class Information_dialog:
 | 
			
		|||
			gtk.MESSAGE_INFO, gtk.BUTTONS_CLOSE, label)
 | 
			
		||||
		dialog.connect('response', self.on_response)
 | 
			
		||||
		dialog.show()
 | 
			
		||||
		#dialog.run() #IT freezes WHY? also if you do a lot of stuff all together it freezes
 | 
			
		||||
 | 
			
		||||
class Error_dialog:
 | 
			
		||||
	"""Class for error dialog"""
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -8985,4 +8985,74 @@ send a chat message to</property>
 | 
			
		|||
  </child>
 | 
			
		||||
</widget>
 | 
			
		||||
 | 
			
		||||
<widget class="GtkMenu" id="menu1">
 | 
			
		||||
 | 
			
		||||
  <child>
 | 
			
		||||
    <widget class="GtkMenuItem" id="status_menu">
 | 
			
		||||
      <property name="visible">True</property>
 | 
			
		||||
      <property name="label" translatable="yes">Status</property>
 | 
			
		||||
      <property name="use_underline">True</property>
 | 
			
		||||
 | 
			
		||||
      <child>
 | 
			
		||||
	<widget class="GtkMenu" id="status_menu_menu">
 | 
			
		||||
 | 
			
		||||
	  <child>
 | 
			
		||||
	    <widget class="GtkMenuItem" id="online1">
 | 
			
		||||
	      <property name="visible">True</property>
 | 
			
		||||
	      <property name="label" translatable="yes">Online</property>
 | 
			
		||||
	      <property name="use_underline">True</property>
 | 
			
		||||
	      <signal name="activate" handler="set_cb" last_modification_time="Mon, 14 Mar 2005 16:14:43 GMT"/>
 | 
			
		||||
	    </widget>
 | 
			
		||||
	  </child>
 | 
			
		||||
 | 
			
		||||
	  <child>
 | 
			
		||||
	    <widget class="GtkMenuItem" id="away1">
 | 
			
		||||
	      <property name="visible">True</property>
 | 
			
		||||
	      <property name="label" translatable="yes">Away</property>
 | 
			
		||||
	      <property name="use_underline">True</property>
 | 
			
		||||
	      <signal name="activate" handler="set_cb" last_modification_time="Mon, 14 Mar 2005 16:14:43 GMT"/>
 | 
			
		||||
	    </widget>
 | 
			
		||||
	  </child>
 | 
			
		||||
 | 
			
		||||
	  <child>
 | 
			
		||||
	    <widget class="GtkMenuItem" id="xa1">
 | 
			
		||||
	      <property name="visible">True</property>
 | 
			
		||||
	      <property name="label" translatable="yes">XA</property>
 | 
			
		||||
	      <property name="use_underline">True</property>
 | 
			
		||||
	      <signal name="activate" handler="set_cb" last_modification_time="Mon, 14 Mar 2005 16:14:43 GMT"/>
 | 
			
		||||
	    </widget>
 | 
			
		||||
	  </child>
 | 
			
		||||
 | 
			
		||||
	  <child>
 | 
			
		||||
	    <widget class="GtkMenuItem" id="dnd1">
 | 
			
		||||
	      <property name="visible">True</property>
 | 
			
		||||
	      <property name="label" translatable="yes">DND</property>
 | 
			
		||||
	      <property name="use_underline">True</property>
 | 
			
		||||
	      <signal name="activate" handler="set_cb" last_modification_time="Mon, 14 Mar 2005 16:14:43 GMT"/>
 | 
			
		||||
	    </widget>
 | 
			
		||||
	  </child>
 | 
			
		||||
 | 
			
		||||
	  <child>
 | 
			
		||||
	    <widget class="GtkMenuItem" id="invisible1">
 | 
			
		||||
	      <property name="visible">True</property>
 | 
			
		||||
	      <property name="label" translatable="yes">Invisible</property>
 | 
			
		||||
	      <property name="use_underline">True</property>
 | 
			
		||||
	      <signal name="activate" handler="set_cb" last_modification_time="Mon, 14 Mar 2005 16:14:43 GMT"/>
 | 
			
		||||
	    </widget>
 | 
			
		||||
	  </child>
 | 
			
		||||
 | 
			
		||||
	  <child>
 | 
			
		||||
	    <widget class="GtkMenuItem" id="offline1">
 | 
			
		||||
	      <property name="visible">True</property>
 | 
			
		||||
	      <property name="label" translatable="yes">Offline</property>
 | 
			
		||||
	      <property name="use_underline">True</property>
 | 
			
		||||
	      <signal name="activate" handler="set_cb" last_modification_time="Mon, 14 Mar 2005 16:14:43 GMT"/>
 | 
			
		||||
	    </widget>
 | 
			
		||||
	  </child>
 | 
			
		||||
	</widget>
 | 
			
		||||
      </child>
 | 
			
		||||
    </widget>
 | 
			
		||||
  </child>
 | 
			
		||||
</widget>
 | 
			
		||||
 | 
			
		||||
</glade-interface>
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -849,7 +849,7 @@ class plugin:
 | 
			
		|||
			self.config['autoxatime']*60)
 | 
			
		||||
		self.systray_visible = 0
 | 
			
		||||
		try:
 | 
			
		||||
			import egg.trayicon as trayicon # use gnomepythonextras traycion
 | 
			
		||||
			import egg.trayicon as trayicon # use gnomepythonextras trayicon
 | 
			
		||||
		except:
 | 
			
		||||
			try:
 | 
			
		||||
				import trayicon # use yann's
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -219,7 +219,7 @@ class roster_window:
 | 
			
		|||
			sub_menu = gtk.Menu()
 | 
			
		||||
			add_contact_menuitem.set_submenu(sub_menu)
 | 
			
		||||
			for account in self.plugin.accounts.keys():
 | 
			
		||||
				item = gtk.MenuItem('using ' + account + ' account')
 | 
			
		||||
				item = gtk.MenuItem(_('using ') + account + _(' account'))
 | 
			
		||||
				sub_menu.append(item)
 | 
			
		||||
				item.connect("activate", self.on_add_contact, account)
 | 
			
		||||
			sub_menu.show_all()
 | 
			
		||||
| 
						 | 
				
			
			@ -227,15 +227,15 @@ class roster_window:
 | 
			
		|||
			sub_menu = gtk.Menu()
 | 
			
		||||
			browse_agents_menuitem.set_submenu(sub_menu)
 | 
			
		||||
			for account in self.plugin.accounts.keys():
 | 
			
		||||
				item = gtk.MenuItem('using ' + account + ' account')
 | 
			
		||||
				item = gtk.MenuItem(_('using ') + account + _(' account'))
 | 
			
		||||
				sub_menu.append(item)
 | 
			
		||||
				item.connect("activate", self.on_browse_agents, account)
 | 
			
		||||
				item.connect('activate', self.on_browse_agents, account)
 | 
			
		||||
			sub_menu.show_all()
 | 
			
		||||
			#join gc
 | 
			
		||||
			sub_menu = gtk.Menu()
 | 
			
		||||
			join_gc_menuitem.set_submenu(sub_menu)
 | 
			
		||||
			for account in self.plugin.accounts.keys():
 | 
			
		||||
				item = gtk.MenuItem('using ' + account + ' account')
 | 
			
		||||
				item = gtk.MenuItem(_('using ') + account + _(' account'))
 | 
			
		||||
				sub_menu.append(item)
 | 
			
		||||
				item.connect("activate", self.on_join_gc, account)
 | 
			
		||||
			sub_menu.show_all()
 | 
			
		||||
| 
						 | 
				
			
			@ -243,7 +243,7 @@ class roster_window:
 | 
			
		|||
			sub_menu = gtk.Menu()
 | 
			
		||||
			new_message_menuitem.set_submenu(sub_menu)
 | 
			
		||||
			for account in self.plugin.accounts.keys():
 | 
			
		||||
				item = gtk.MenuItem('using ' + account + ' account')
 | 
			
		||||
				item = gtk.MenuItem(_('using ') + account + _(' account'))
 | 
			
		||||
				sub_menu.append(item)
 | 
			
		||||
				item.connect("activate", self.on_new_message_menuitem_activate, account)
 | 
			
		||||
			sub_menu.show_all()
 | 
			
		||||
| 
						 | 
				
			
			@ -259,7 +259,7 @@ class roster_window:
 | 
			
		|||
			#join_gc
 | 
			
		||||
			if not self.join_gc_handler_id:
 | 
			
		||||
				self.join_gc_handler_id = join_gc_menuitem.connect(\
 | 
			
		||||
					"activate", self.on_join_gc, self.plugin.accounts.keys()[0])
 | 
			
		||||
					'activate', self.on_join_gc, self.plugin.accounts.keys()[0])
 | 
			
		||||
			if not self.new_message_menuitem_handler_id:
 | 
			
		||||
				self.new_message_menuitem_handler_id = new_message_menuitem.connect(\
 | 
			
		||||
'activate', self.on_new_message_menuitem_activate, self.plugin.accounts.keys()[0])
 | 
			
		||||
| 
						 | 
				
			
			@ -1195,10 +1195,10 @@ class roster_window:
 | 
			
		|||
		self.tree = self.xml.get_widget('roster_treeview')
 | 
			
		||||
		self.plugin = plugin
 | 
			
		||||
		self.nb_unread = 0
 | 
			
		||||
		self.add_contact_handler_id = 0
 | 
			
		||||
		self.browse_agents_handler_id = 0
 | 
			
		||||
		self.join_gc_handler_id = 0
 | 
			
		||||
		self.new_message_menuitem_handler_id = 0
 | 
			
		||||
		self.add_contact_handler_id = False
 | 
			
		||||
		self.browse_agents_handler_id = False
 | 
			
		||||
		self.join_gc_handler_id = False
 | 
			
		||||
		self.new_message_menuitem_handler_id = False
 | 
			
		||||
		self.regroup = 0
 | 
			
		||||
		if self.plugin.config.has_key('mergeaccounts'):
 | 
			
		||||
			self.regroup = self.plugin.config['mergeaccounts']
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -92,7 +92,7 @@ class systray:
 | 
			
		|||
		New_message_dialog(self.plugin, account)
 | 
			
		||||
 | 
			
		||||
	def make_menu(self, event):
 | 
			
		||||
		"""create the browse agents, add contact & join groupchat sub menus"""
 | 
			
		||||
		"""create chat with and new message (sub) menus/menuitems"""
 | 
			
		||||
		menu = gtk.Menu()
 | 
			
		||||
		
 | 
			
		||||
		item = gtk.MenuItem(_("Status"))
 | 
			
		||||
| 
						 | 
				
			
			@ -120,7 +120,7 @@ class systray:
 | 
			
		|||
		sub_menu.append(item)
 | 
			
		||||
		item.connect("activate", self.set_cb, 'offline')
 | 
			
		||||
 | 
			
		||||
		chat_with_menuitem = gtk.MenuItem(_("Chat with"))
 | 
			
		||||
		chat_with_menuitem = gtk.MenuItem(_('Chat with'))
 | 
			
		||||
		menu.append(chat_with_menuitem)
 | 
			
		||||
		new_message_menuitem = gtk.MenuItem(_('New Message'))
 | 
			
		||||
		menu.append(new_message_menuitem)
 | 
			
		||||
| 
						 | 
				
			
			@ -133,39 +133,31 @@ class systray:
 | 
			
		|||
			new_message_menuitem.set_sensitive(False)
 | 
			
		||||
		
 | 
			
		||||
		if len(self.plugin.accounts.keys()) >= 2: # 2 or more accounts? make submenus
 | 
			
		||||
			menu_account = gtk.Menu()
 | 
			
		||||
			chat_with_menuitem.set_submenu(menu_account)
 | 
			
		||||
			account_menu_for_chat_with = gtk.Menu()
 | 
			
		||||
			chat_with_menuitem.set_submenu(account_menu_for_chat_with)
 | 
			
		||||
 | 
			
		||||
			account_menu_for_new_message = gtk.Menu()
 | 
			
		||||
			new_message_menuitem.set_submenu(account_menu_for_new_message)
 | 
			
		||||
 | 
			
		||||
			for account in self.plugin.accounts.keys():
 | 
			
		||||
				#for chat_with
 | 
			
		||||
				menu_account = gtk.Menu()
 | 
			
		||||
				chat_with_menuitem.set_submenu(menu_account)
 | 
			
		||||
				for account in self.plugin.accounts.keys():
 | 
			
		||||
					item = gtk.MenuItem('using ' + account + ' account')
 | 
			
		||||
					menu_account.append(item)
 | 
			
		||||
					menu_group = gtk.Menu()
 | 
			
		||||
					item.set_submenu(menu_group)
 | 
			
		||||
					for group in self.plugin.roster.groups[account].keys():
 | 
			
		||||
						if group == 'Agents':
 | 
			
		||||
							continue
 | 
			
		||||
						item = gtk.MenuItem(group)
 | 
			
		||||
						menu_group.append(item)
 | 
			
		||||
						menu_user = gtk.Menu()
 | 
			
		||||
						item.set_submenu(menu_user)
 | 
			
		||||
						for users in self.plugin.roster.contacts[account].values():
 | 
			
		||||
							user = users[0]
 | 
			
		||||
							if group in user.groups and user.show != 'offline' and \
 | 
			
		||||
									user.show != 'error':
 | 
			
		||||
								item = gtk.MenuItem(user.name.replace('_', '__'))
 | 
			
		||||
								menu_user.append(item)
 | 
			
		||||
								item.connect("activate", self.start_chat, account,\
 | 
			
		||||
									user.jid)
 | 
			
		||||
				item = gtk.MenuItem(_('using ') + account + _(' account'))
 | 
			
		||||
				account_menu_for_chat_with.append(item)
 | 
			
		||||
				group_menu = self.make_groups_submenus_for_chat_with(account)
 | 
			
		||||
				item.set_submenu(group_menu)
 | 
			
		||||
				#for new_message
 | 
			
		||||
				item = gtk.MenuItem(_('using ') + account + _(' account'))
 | 
			
		||||
				item.connect('activate',\
 | 
			
		||||
					self.on_new_message_menuitem_activate, account)
 | 
			
		||||
				account_menu_for_new_message.append(item)
 | 
			
		||||
				
 | 
			
		||||
		elif len(self.plugin.accounts.keys()) == 1: # one account
 | 
			
		||||
			#one account, no need to show 'using foo account'
 | 
			
		||||
			#for chat_with
 | 
			
		||||
			menu_account = gtk.Menu()
 | 
			
		||||
			chat_with_menuitem.set_submenu(menu_account)
 | 
			
		||||
			if not self.chat_with_handler_id:
 | 
			
		||||
				self.chat_with_handler_id = chat_with_menuitem.connect(\
 | 
			
		||||
					'activate', self.start_chat, self.plugin.accounts.keys()[0])
 | 
			
		||||
			account = self.plugin.accounts.keys()[0]
 | 
			
		||||
			
 | 
			
		||||
			group_menu = self.make_groups_submenus_for_chat_with(account)
 | 
			
		||||
			chat_with_menuitem.set_submenu(group_menu)
 | 
			
		||||
					
 | 
			
		||||
			#for new message
 | 
			
		||||
			self.new_message_handler_id = new_message_menuitem.connect(\
 | 
			
		||||
| 
						 | 
				
			
			@ -174,14 +166,45 @@ class systray:
 | 
			
		|||
		item = gtk.MenuItem() # seperator
 | 
			
		||||
		menu.append(item)
 | 
			
		||||
		
 | 
			
		||||
		item = gtk.MenuItem(_("Quit"))
 | 
			
		||||
		item = gtk.MenuItem(_('Quit'))
 | 
			
		||||
		menu.append(item)
 | 
			
		||||
		item.connect("activate", self.plugin.roster.on_quit_menuitem_activate)
 | 
			
		||||
		item.connect('activate', self.plugin.roster.on_quit_menuitem_activate)
 | 
			
		||||
		
 | 
			
		||||
		menu.popup(None, None, None, event.button, event.time)
 | 
			
		||||
		menu.show_all()
 | 
			
		||||
		menu.reposition()
 | 
			
		||||
	
 | 
			
		||||
	def make_groups_submenus_for_chat_with(self, account):
 | 
			
		||||
		groups_menu = gtk.Menu()
 | 
			
		||||
		
 | 
			
		||||
		for group in self.plugin.roster.groups[account].keys():
 | 
			
		||||
			if group == 'Agents':
 | 
			
		||||
				continue
 | 
			
		||||
			# at least one not offline or with errors in this group
 | 
			
		||||
			at_least_one = False
 | 
			
		||||
			item = gtk.MenuItem(group)
 | 
			
		||||
			groups_menu.append(item)
 | 
			
		||||
			contacts_menu = gtk.Menu()
 | 
			
		||||
			item.set_submenu(contacts_menu)
 | 
			
		||||
			for users in self.plugin.roster.contacts[account].values():
 | 
			
		||||
				user = users[0]
 | 
			
		||||
				if group in user.groups and user.show != 'offline' and \
 | 
			
		||||
						user.show != 'error':
 | 
			
		||||
					at_least_one = True
 | 
			
		||||
					s = user.name.replace('_', '__') + ' (' + user.show + ')'
 | 
			
		||||
					item = gtk.MenuItem(s)
 | 
			
		||||
					item.connect('activate', self.start_chat, account,\
 | 
			
		||||
							user.jid)
 | 
			
		||||
					contacts_menu.append(item)
 | 
			
		||||
			
 | 
			
		||||
			if not at_least_one:
 | 
			
		||||
				message = _('All contacts in this group are offline or have errors')
 | 
			
		||||
				item = gtk.MenuItem(message)
 | 
			
		||||
				item.set_sensitive(False)
 | 
			
		||||
				contacts_menu.append(item)
 | 
			
		||||
 | 
			
		||||
		return groups_menu
 | 
			
		||||
 | 
			
		||||
	def on_clicked(self, widget, event):
 | 
			
		||||
		if event.type == gtk.gdk.BUTTON_PRESS and event.button == 1:
 | 
			
		||||
			if len(self.jids) == 0:
 | 
			
		||||
| 
						 | 
				
			
			@ -232,11 +255,8 @@ class systray:
 | 
			
		|||
		self.t = None
 | 
			
		||||
		self.img_tray = gtk.Image()
 | 
			
		||||
		self.status = 'offline'
 | 
			
		||||
		self.chat_with_handler_id = None
 | 
			
		||||
		self.new_message_handler_id = None
 | 
			
		||||
		global trayicon
 | 
			
		||||
		try:
 | 
			
		||||
			import egg.trayicon as trayicon	# gnomepythonextras trayicon
 | 
			
		||||
		except:
 | 
			
		||||
			import trayicon # yann's trayicon
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		
		Reference in a new issue