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

@ -849,8 +849,11 @@ class plugin:
self.config['autoxatime']*60)
self.systray_visible = 0
try:
import trayicon
import egg.trayicon as trayicon # use gnomepythonextras traycion
except:
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()

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,15 +120,27 @@ 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)
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)
if len(self.plugin.accounts.keys()) >= 2: # 2 or more accounts? make submenus
menu_account = gtk.Menu()
item.set_submenu(menu_account)
chat_with_menuitem.set_submenu(menu_account)
for account in self.plugin.accounts.keys():
item = gtk.MenuItem(account)
#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)
@ -141,9 +157,21 @@ class systray:
user.show != 'error':
item = gtk.MenuItem(user.name.replace('_', '__'))
menu_user.append(item)
item.connect("activate", self.start_chat, account, user.jid)
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])
item = gtk.MenuItem()
#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