support trayicon from pythongnomeextras too

This commit is contained in:
Nikos Kouremenos 2005-03-14 13:25:34 +00:00
parent bbfc49bad9
commit 45d3c05f13
3 changed files with 86 additions and 50 deletions

View File

@ -3,8 +3,8 @@
## Gajim Team:
## - Yann Le Boulanger <asterix@lagaule.org>
## - Vincent Hanquez <tab@snarc.org>
## - Nikos Kouremenos <kourem@gmail.com>
## - Alex Podaras <bigpod@gmail.com>
## - Nikos Kouremenos <kourem@gmail.com>
## - Alex Podaras <bigpod@gmail.com>
##
## Copyright (C) 2003-2005 Gajim Team
##
@ -849,11 +849,14 @@ class plugin:
self.config['autoxatime']*60)
self.systray_visible = 0
try:
import trayicon
import egg.trayicon as trayicon # use gnomepythonextras traycion
except:
self.config['trayicon'] = 0
self.send('CONFIG', None, ('GtkGui', self.config, 'GtkGui'))
self.systray = systrayDummy()
try:
import trayicon # use yann's
except: # user doesn't have trayicon capabilities
self.config['trayicon'] = 0
self.send('CONFIG', None, ('GtkGui', self.config, 'GtkGui'))
self.systray = systrayDummy()
else:
self.systray = systray(self)
if self.config['trayicon']:

View File

@ -214,7 +214,7 @@ class roster_window:
join_gc_menuitem.set_sensitive(False)
add_contact_menuitem.set_sensitive(False)
browse_agents_menuitem.set_sensitive(False)
if len(self.plugin.accounts.keys()) > 1: # 2 or more accounts? make submenus
if len(self.plugin.accounts.keys()) >= 2: # 2 or more accounts? make submenus
#add
sub_menu = gtk.Menu()
add_contact_menuitem.set_submenu(sub_menu)
@ -247,23 +247,22 @@ class roster_window:
sub_menu.append(item)
item.connect("activate", self.on_new_message_menuitem_activate, account)
sub_menu.show_all()
elif len(self.plugin.accounts.keys()) == 1:
elif len(self.plugin.accounts.keys()) == 1: # one account
#add
if not self.add_contact_handler_id:
self.add_contact_handler_id = self.xml.get_widget('add_contact_menuitem').connect(
"activate", self.on_add_contact, self.plugin.accounts.keys()[0])
self.add_contact_handler_id = add_contact_menuitem.connect(\
'activate', self.on_add_contact, self.plugin.accounts.keys()[0])
#agents
if not self.browse_agents_handler_id:
self.browse_agents_handler_id = self.xml.get_widget(
'browse_agents_menuitem').connect("activate", self.on_browse_agents,
self.plugin.accounts.keys()[0])
self.browse_agents_handler_id = browse_agents_menuitem.connect(\
'activate', self.on_browse_agents, self.plugin.accounts.keys()[0])
#join_gc
if not self.join_gc_handler_id:
self.join_gc_handler_id = self.xml.get_widget('join_gc_menuitem').connect(
self.join_gc_handler_id = join_gc_menuitem.connect(\
"activate", self.on_join_gc, self.plugin.accounts.keys()[0])
if not self.new_message_menuitem_handler_id:
self.new_message_menuitem_handler_id = self.xml.get_widget('new_message_menuitem').connect(
"activate", self.on_new_message_menuitem_activate, self.plugin.accounts.keys()[0])
self.new_message_menuitem_handler_id = new_message_menuitem.connect(\
'activate', self.on_new_message_menuitem_activate, self.plugin.accounts.keys()[0])
def draw_roster(self):
"""Clear and draw roster"""

View File

@ -20,6 +20,7 @@
import gtk
import gtk.glade
from dialogs import *
from common import i18n
@ -45,7 +46,6 @@ class systrayDummy:
def __init__(self):
self.t = gtk.Button()
class systray:
"""Class for icon in the systray"""
def set_img(self):
@ -86,10 +86,14 @@ class systray:
self.plugin.roster.new_chat(
self.plugin.roster.contacts[account][jid][0], account)
def mk_menu(self, event):
def on_new_message_menuitem_activate(self, widget, account):
"""When new message menuitem is activated:
call the New_message_dialog class"""
New_message_dialog(self.plugin, account)
def make_menu(self, event):
"""create the browse agents, add contact & join groupchat sub menus"""
menu = gtk.Menu()
item = gtk.TearoffMenuItem()
menu.append(item)
item = gtk.MenuItem(_("Status"))
menu.append(item)
@ -116,34 +120,58 @@ class systray:
sub_menu.append(item)
item.connect("activate", self.set_cb, 'offline')
item = gtk.MenuItem()
menu.append(item)
chat_with_menuitem = gtk.MenuItem(_("Chat with"))
menu.append(chat_with_menuitem)
new_message_menuitem = gtk.MenuItem(_('New Message'))
menu.append(new_message_menuitem)
item = gtk.MenuItem(_("Chat with"))
menu.append(item)
menu_account = gtk.Menu()
item.set_submenu(menu_account)
for account in self.plugin.accounts.keys():
item = gtk.MenuItem(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)
if len(self.plugin.accounts.keys()) > 0:
chat_with_menuitem.set_sensitive(True)
new_message_menuitem.set_sensitive(True)
else:
chat_with_menuitem.set_sensitive(False)
new_message_menuitem.set_sensitive(False)
item = gtk.MenuItem()
if len(self.plugin.accounts.keys()) >= 2: # 2 or more accounts? make submenus
menu_account = gtk.Menu()
chat_with_menuitem.set_submenu(menu_account)
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)
elif len(self.plugin.accounts.keys()) == 1: # one 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])
#for new message
self.new_message_handler_id = new_message_menuitem.connect(\
'activate', self.on_new_message_menuitem_activate, account)
item = gtk.MenuItem() # seperator
menu.append(item)
item = gtk.MenuItem(_("Quit"))
@ -178,7 +206,7 @@ class systray:
self.plugin.roster.new_chat(
self.plugin.roster.contacts[account][jid][0], account)
if event.button == 3:
self.mk_menu(event)
self.make_menu(event)
def show_icon(self):
if not self.t:
@ -204,5 +232,11 @@ 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
import trayicon
try:
import egg.trayicon as trayicon # gnomepythonextras trayicon
except:
import trayicon # yann's trayicon