Author: asterix
Date: 2008-12-20 16:34:34 +0100 (Sat, 20 Dec 2008)
New Revision: 10886
Modified:
branches/gajim_0.12/src/systray.py
Log:
improve systray popup menu taking into account zeroconf accounts to set sensitivity. Fix #4598
Modified: branches/gajim_0.12/src/systray.py
===================================================================
--- branches/gajim_0.12/src/systray.py 2008-12-20 10:38:14 UTC (rev 10885)
+++ branches/gajim_0.12/src/systray.py 2008-12-20 15:34:34 UTC (rev 10886)
@@ -185,6 +185,8 @@
if connected_accounts < 1:
item.set_sensitive(False)
+ connected_accounts_with_private_storage = 0
+
item = gtk.SeparatorMenuItem()
sub_menu.append(item)
@@ -200,58 +202,77 @@
single_message_menuitem.set_sensitive(iskey)
join_gc_menuitem.set_sensitive(iskey)
- if connected_accounts >= 2: # 2 or more connections? make submenus
+ accounts_list = sorted(gajim.contacts.get_accounts())
+ # items that get shown whether an account is zeroconf or not
+ if connected_accounts > 1: # 2 or more connections? make submenus
account_menu_for_chat_with = gtk.Menu()
chat_with_menuitem.set_submenu(account_menu_for_chat_with)
self.popup_menus.append(account_menu_for_chat_with)
- account_menu_for_single_message = gtk.Menu()
- single_message_menuitem.set_submenu(
- account_menu_for_single_message)
- self.popup_menus.append(account_menu_for_single_message)
-
- accounts_list = sorted(gajim.contacts.get_accounts())
for account in accounts_list:
- if gajim.connections[account].is_zeroconf:
- continue
- if gajim.connections[account].connected > 1:
+ if gajim.account_is_connected(account):
# for chat_with
item = gtk.MenuItem(_('using account %s') % account)
account_menu_for_chat_with.append(item)
item.connect('activate', self.on_new_chat, account)
- # for single message
- item = gtk.MenuItem(_('using account %s') % account)
- item.connect('activate',
- self.on_single_message_menuitem_activate, account)
- account_menu_for_single_message.append(item)
-
- # join gc
- gc_item = gtk.MenuItem(_('using account %s') % account, False)
- gc_sub_menu.append(gc_item)
- gc_menuitem_menu = gtk.Menu()
- gajim.interface.roster.add_bookmarks_list(gc_menuitem_menu,
- account)
- gc_item.set_submenu(gc_menuitem_menu)
- gc_sub_menu.show_all()
-
elif connected_accounts == 1: # one account
# one account connected, no need to show 'as jid'
for account in gajim.connections:
if gajim.connections[account].connected > 1:
+ # for start chat
self.new_chat_handler_id = chat_with_menuitem.connect(
- 'activate', self.on_new_chat, account)
+ 'activate', self.on_new_chat, account)
+ break # No other connected account
+
+ # menu items that don't apply to zeroconf connections
+ if connected_accounts == 1 or (connected_accounts == 2 and \
+ gajim.zeroconf_is_connected()):
+ # only one 'real' (non-zeroconf) account is connected, don't need
+ # submenus
+ for account in gajim.connections:
+ if gajim.account_is_connected(account) and \
+ not gajim.config.get_per('accounts', account, 'is_zeroconf'):
+ if gajim.connections[account].private_storage_supported:
+ connected_accounts_with_private_storage += 1
+
# for single message
single_message_menuitem.remove_submenu()
self.single_message_handler_id = single_message_menuitem.\
connect('activate',
self.on_single_message_menuitem_activate, account)
-
# join gc
gajim.interface.roster.add_bookmarks_list(gc_sub_menu,
account)
- break # No other connected account
+ break # No other account connected
+ else:
+ # 2 or more 'real' accounts are connected, make submenus
+ account_menu_for_single_message = gtk.Menu()
+ single_message_menuitem.set_submenu(
+ account_menu_for_single_message)
+ self.popup_menus.append(account_menu_for_single_message)
+ for account in accounts_list:
+ if gajim.connections[account].is_zeroconf or \
+ not gajim.account_is_connected(account):
+ continue
+ if gajim.connections[account].private_storage_supported:
+ connected_accounts_with_private_storage += 1
+ # for single message
+ item = gtk.MenuItem(_('using account %s') % account)
+ item.connect('activate',
+ self.on_single_message_menuitem_activate, account)
+ account_menu_for_single_message.append(item)
+
+ # join gc
+ gc_item = gtk.MenuItem(_('using account %s') % account, False)
+ gc_sub_menu.append(gc_item)
+ gc_menuitem_menu = gtk.Menu()
+ gajim.interface.roster.add_bookmarks_list(gc_menuitem_menu,
+ account)
+ gc_item.set_submenu(gc_menuitem_menu)
+ gc_sub_menu.show_all()
+
newitem = gtk.SeparatorMenuItem() # separator
gc_sub_menu.append(newitem)
newitem = gtk.ImageMenuItem(_('_Manage Bookmarks...'))
@@ -260,6 +281,8 @@
newitem.connect('activate',
gajim.interface.roster.on_manage_bookmarks_menuitem_activate)
gc_sub_menu.append(newitem)
+ if connected_accounts_with_private_storage == 0:
+ newitem.set_sensitive(False)
sounds_mute_menuitem.set_active(not gajim.config.get('sounds_on'))