Author: bct
Date: 2008-06-13 04:18:16 +0200 (Fri, 13 Jun 2008)
New Revision: 9795
Modified:
trunk/src/common/gajim.py
trunk/src/roster_window.py
Log:
don't make submenus in the Actions menu if we've only got a zeroconf account and a normal account
Modified: trunk/src/common/gajim.py
===================================================================
--- trunk/src/common/gajim.py 2008-06-12 23:54:46 UTC (rev 9794)
+++ trunk/src/common/gajim.py 2008-06-13 02:18:16 UTC (rev 9795)
@@ -285,6 +285,10 @@
def account_is_disconnected(account):
return not account_is_connected(account)
+def zeroconf_is_connected():
+ return account_is_connected(ZEROCONF_ACC_NAME) and \
+ config.get_per('accounts', ZEROCONF_ACC_NAME, 'is_zeroconf')
+
def get_number_of_securely_connected_accounts():
'''returns the number of the accounts that are SSL/TLS connected'''
num_of_secured = 0
Modified: trunk/src/roster_window.py
===================================================================
--- trunk/src/roster_window.py 2008-06-12 23:54:46 UTC (rev 9794)
+++ trunk/src/roster_window.py 2008-06-13 02:18:16 UTC (rev 9795)
@@ -4196,14 +4196,13 @@
connected_accounts_with_private_storage = 0
+ accounts_list = gajim.contacts.get_accounts()
+ accounts_list.sort()
+
+ # items that get shown whether an account is zeroconf or not
if connected_accounts > 1: # 2 or more accounts? make submenus
- add_sub_menu = gtk.Menu()
- disco_sub_menu = gtk.Menu()
new_chat_sub_menu = gtk.Menu()
- single_message_sub_menu = gtk.Menu()
- accounts_list = gajim.contacts.get_accounts()
- accounts_list.sort()
for account in accounts_list:
if gajim.connections[account].connected <= 1:
# if offline or connecting
@@ -4216,49 +4215,28 @@
new_chat_item.connect('activate',
self.on_new_chat_menuitem_activate, account)
- if gajim.config.get_per('accounts', account, 'is_zeroconf'):
- continue
-
- # single message
- single_message_item = gtk.MenuItem(_('using account %s') % account,
- False)
- single_message_sub_menu.append(single_message_item)
- single_message_item.connect('activate',
- self.on_send_single_message_menuitem_activate, account)
-
- # join gc
- if gajim.connections[account].private_storage_supported:
- connected_accounts_with_private_storage += 1
- gc_item = gtk.MenuItem(_('using account %s') % account, False)
- gc_sub_menu.append(gc_item)
- gc_menuitem_menu = gtk.Menu()
- self.add_bookmarks_list(gc_menuitem_menu, account)
- gc_item.set_submenu(gc_menuitem_menu)
-
- # add
- add_item = gtk.MenuItem(_('to %s account') % account, False)
- add_sub_menu.append(add_item)
- add_item.connect('activate', self.on_add_new_contact, account)
-
- # disco
- disco_item = gtk.MenuItem(_('using %s account') % account, False)
- disco_sub_menu.append(disco_item)
- disco_item.connect('activate',
- self.on_service_disco_menuitem_activate, account)
-
- add_new_contact_menuitem.set_submenu(add_sub_menu)
- add_sub_menu.show_all()
- service_disco_menuitem.set_submenu(disco_sub_menu)
- disco_sub_menu.show_all()
new_chat_menuitem.set_submenu(new_chat_sub_menu)
new_chat_sub_menu.show_all()
- single_message_menuitem.set_submenu(single_message_sub_menu)
- single_message_sub_menu.show_all()
- gc_sub_menu.show_all()
elif connected_accounts == 1: # user has only one account
for account in gajim.connections:
if gajim.account_is_connected(account): # THE connected account
+ # new chat
+ if not self.new_chat_menuitem_handler_id:
+ self.new_chat_menuitem_handler_id = new_chat_menuitem.\
+ connect('activate', self.on_new_chat_menuitem_activate,
+ account)
+
+ break
+
+ # 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 accounts_list:
+ if gajim.account_is_connected(account) and \
+ not gajim.config.get_per('accounts', account, 'is_zeroconf'):
# gc
if gajim.connections[account].private_storage_supported:
connected_accounts_with_private_storage += 1
@@ -4274,11 +4252,6 @@
self.service_disco_handler_id = service_disco_menuitem.\
connect('activate',
self.on_service_disco_menuitem_activate, account)
- # new chat
- if not self.new_chat_menuitem_handler_id:
- self.new_chat_menuitem_handler_id = new_chat_menuitem.\
- connect('activate', self.on_new_chat_menuitem_activate,
- account)
# single message
if not self.single_message_menuitem_handler_id:
@@ -4294,7 +4267,53 @@
self.have_new_chat_accel = True
break # No other account connected
+ else:
+ # 2 or more 'real' accounts are connected, make submenus
+ single_message_sub_menu = gtk.Menu()
+ add_sub_menu = gtk.Menu()
+ disco_sub_menu = gtk.Menu()
+ for account in accounts_list:
+ if gajim.connections[account].connected <= 1 or \
+ gajim.config.get_per('accounts', account, 'is_zeroconf'):
+ # skip account if it's offline or connecting or is zeroconf
+ continue
+
+ # single message
+ single_message_item = gtk.MenuItem(_('using account %s') % account,
+ False)
+ single_message_sub_menu.append(single_message_item)
+ single_message_item.connect('activate',
+ self.on_send_single_message_menuitem_activate, account)
+
+ # join gc
+ if gajim.connections[account].private_storage_supported:
+ connected_accounts_with_private_storage += 1
+ gc_item = gtk.MenuItem(_('using account %s') % account, False)
+ gc_sub_menu.append(gc_item)
+ gc_menuitem_menu = gtk.Menu()
+ self.add_bookmarks_list(gc_menuitem_menu, account)
+ gc_item.set_submenu(gc_menuitem_menu)
+
+ # add
+ add_item = gtk.MenuItem(_('to %s account') % account, False)
+ add_sub_menu.append(add_item)
+ add_item.connect('activate', self.on_add_new_contact, account)
+
+ # disco
+ disco_item = gtk.MenuItem(_('using %s account') % account, False)
+ disco_sub_menu.append(disco_item)
+ disco_item.connect('activate',
+ self.on_service_disco_menuitem_activate, account)
+
+ single_message_menuitem.set_submenu(single_message_sub_menu)
+ single_message_sub_menu.show_all()
+ gc_sub_menu.show_all()
+ add_new_contact_menuitem.set_submenu(add_sub_menu)
+ add_sub_menu.show_all()
+ service_disco_menuitem.set_submenu(disco_sub_menu)
+ disco_sub_menu.show_all()
+
if connected_accounts == 0:
# no connected accounts, make the menuitems insensitive
for item in [new_chat_menuitem, join_gc_menuitem,\