Changeset 10329
- Timestamp:
- 08/28/08 10:23:31 (3 months ago)
- Files:
-
- 1 modified
-
trunk/src/roster_window.py (modified) (19 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/roster_window.py
r10292 r10329 2509 2509 on_response_ok = (remove, list_)) 2510 2510 2511 def on_block(self, widget, titer, group_list): 2512 ''' When clicked on the 'block' button in context menu. ''' 2511 def on_block(self, widget, list_, group=None): 2512 ''' When clicked on the 'block' button in context menu. 2513 list_ is a list of (contact, account)''' 2513 2514 def on_continue(msg): 2514 2515 if msg is None: … … 2517 2518 model = self.modelfilter 2518 2519 accounts = [] 2519 if group_list is None: 2520 jid = model[titer][C_JID].decode('utf-8') 2521 account = model[titer][C_ACCOUNT].decode('utf-8') 2522 accounts.append(account) 2523 self.send_status(account, 'offline', msg, to = jid) 2524 new_rule = {'order': u'1', 'type': u'jid', 'action': u'deny', 2525 'value' : jid, 'child': [u'message', u'iq', u'presence-out']} 2526 gajim.connections[account].blocked_list.append(new_rule) 2527 # needed for draw_contact: 2528 gajim.connections[account].blocked_contacts.append(jid) 2529 self.draw_contact(jid, account) 2530 else: 2531 if titer is None: 2532 for (contact, account) in group_list: 2533 if account not in accounts: 2534 if not gajim.connections[account].privacy_rules_supported: 2535 continue 2536 accounts.append(account) 2537 self.send_status(account, 'offline', msg, to=contact.jid) 2538 new_rule = {'order': u'1', 'type': u'jid', 2539 'action': u'deny', 'value' : contact.jid, 2540 'child': [u'message', u'iq', u'presence-out']} 2541 gajim.connections[account].blocked_list.append(new_rule) 2542 # needed for draw_contact: 2543 gajim.connections[account].blocked_contacts.append( 2544 contact.jid) 2545 self.draw_contact(contact.jid, account) 2546 else: 2547 group = model[titer][C_JID].decode('utf-8') 2548 for (contact, account) in group_list: 2549 if account not in accounts: 2550 if not gajim.connections[account].privacy_rules_supported: 2551 continue 2552 accounts.append(account) 2553 # needed for draw_group: 2554 gajim.connections[account].blocked_groups.append(group) 2555 self.draw_group(group, account) 2556 self.send_status(account, 'offline', msg, to=contact.jid) 2557 self.draw_contact(contact.jid, account) 2558 new_rule = {'order': u'1', 'type': u'group', 'action': u'deny', 2559 'value' : group, 'child': [u'message', u'iq', 2520 if group is None: 2521 for (contact, account) in list_: 2522 if account not in accounts: 2523 if not gajim.connections[account].privacy_rules_supported: 2524 continue 2525 accounts.append(account) 2526 self.send_status(account, 'offline', msg, to=contact.jid) 2527 new_rule = {'order': u'1', 'type': u'jid', 'action': u'deny', 2528 'value' : contact.jid, 'child': [u'message', u'iq', 2560 2529 u'presence-out']} 2561 2530 gajim.connections[account].blocked_list.append(new_rule) 2531 # needed for draw_contact: 2532 gajim.connections[account].blocked_contacts.append( 2533 contact.jid) 2534 self.draw_contact(contact.jid, account) 2535 else: 2536 for (contact, account) in list_: 2537 if account not in accounts: 2538 if not gajim.connections[account].privacy_rules_supported: 2539 continue 2540 accounts.append(account) 2541 # needed for draw_group: 2542 gajim.connections[account].blocked_groups.append(group) 2543 self.draw_group(group, account) 2544 self.send_status(account, 'offline', msg, to=contact.jid) 2545 self.draw_contact(contact.jid, account) 2546 new_rule = {'order': u'1', 'type': u'group', 'action': u'deny', 2547 'value' : group, 'child': [u'message', u'iq', u'presence-out']} 2548 gajim.connections[account].blocked_list.append(new_rule) 2562 2549 for account in accounts: 2563 2550 gajim.connections[account].set_privacy_list( … … 2570 2557 self.get_status_message('offline', on_continue) 2571 2558 2572 def on_unblock(self, widget, titer, group_list):2559 def on_unblock(self, widget, list_, group=None): 2573 2560 ''' When clicked on the 'unblock' button in context menu. ''' 2574 2561 model = self.modelfilter 2575 2562 accounts = [] 2576 if group_list is None: 2577 jid = model[titer][C_JID].decode('utf-8') 2578 jid_account = model[titer][C_ACCOUNT].decode('utf-8') 2579 accounts.append(jid_account) 2580 gajim.connections[jid_account].new_blocked_list = [] 2581 for rule in gajim.connections[jid_account].blocked_list: 2582 if rule['action'] != 'deny' or rule['type'] != 'jid' \ 2583 or rule['value'] != jid: 2584 gajim.connections[jid_account].new_blocked_list.append(rule) 2585 # needed for draw_contact: 2586 if jid in gajim.connections[jid_account].blocked_contacts: 2587 gajim.connections[jid_account].blocked_contacts.remove(jid) 2588 self.draw_contact(jid, jid_account) 2589 else: 2590 if titer is None: 2591 for (contact, account) in group_list: 2592 if account not in accounts: 2593 if gajim.connections[account].privacy_rules_supported: 2594 accounts.append(account) 2595 gajim.connections[account].new_blocked_list = [] 2596 gajim.connections[account].to_unblock = [] 2597 gajim.connections[account].to_unblock.append(contact.jid) 2598 else: 2563 if group is None: 2564 for (contact, account) in list_: 2565 if account not in accounts: 2566 if gajim.connections[account].privacy_rules_supported: 2567 accounts.append(account) 2568 gajim.connections[account].new_blocked_list = [] 2569 gajim.connections[account].to_unblock = [] 2599 2570 gajim.connections[account].to_unblock.append(contact.jid) 2600 # needed for draw_contact: 2601 if contact.jid in gajim.connections[account].blocked_contacts: 2602 gajim.connections[account].blocked_contacts.remove( 2603 contact.jid) 2604 self.draw_contact(contact.jid, account) 2605 for account in accounts: 2606 for rule in gajim.connections[account].blocked_list: 2607 if rule['action'] != 'deny' or rule['type'] != 'jid' \ 2608 or rule['value'] not in gajim.connections[account].to_unblock: 2609 gajim.connections[account].new_blocked_list.append(rule) 2610 else: 2611 group = model[titer][C_JID].decode('utf-8') 2612 for (contact, account) in group_list: 2613 if account not in accounts: 2614 if gajim.connections[account].privacy_rules_supported: 2615 accounts.append(account) 2616 # needed for draw_group: 2617 if group in gajim.connections[account].blocked_groups: 2618 gajim.connections[account].blocked_groups.remove(group) 2619 self.draw_group(group, account) 2620 gajim.connections[account].new_blocked_list = [] 2621 for rule in gajim.connections[account].blocked_list: 2622 if rule['action'] != 'deny' or rule['type'] != 'group' \ 2623 or rule['value'] != group: 2624 gajim.connections[account].new_blocked_list.append( 2625 rule) 2626 self.draw_contact(contact.jid, account) 2571 else: 2572 gajim.connections[account].to_unblock.append(contact.jid) 2573 # needed for draw_contact: 2574 if contact.jid in gajim.connections[account].blocked_contacts: 2575 gajim.connections[account].blocked_contacts.remove(contact.jid) 2576 self.draw_contact(contact.jid, account) 2577 for account in accounts: 2578 for rule in gajim.connections[account].blocked_list: 2579 if rule['action'] != 'deny' or rule['type'] != 'jid' \ 2580 or rule['value'] not in gajim.connections[account].to_unblock: 2581 gajim.connections[account].new_blocked_list.append(rule) 2582 else: 2583 for (contact, account) in list_: 2584 if account not in accounts: 2585 if gajim.connections[account].privacy_rules_supported: 2586 accounts.append(account) 2587 # needed for draw_group: 2588 if group in gajim.connections[account].blocked_groups: 2589 gajim.connections[account].blocked_groups.remove(group) 2590 self.draw_group(group, account) 2591 gajim.connections[account].new_blocked_list = [] 2592 for rule in gajim.connections[account].blocked_list: 2593 if rule['action'] != 'deny' or rule['type'] != 'group' \ 2594 or rule['value'] != group: 2595 gajim.connections[account].new_blocked_list.append(rule) 2596 self.draw_contact(contact.jid, account) 2627 2597 for account in accounts: 2628 gajim.connections[account].set_privacy_list( 2629 'block',gajim.connections[account].new_blocked_list)2598 gajim.connections[account].set_privacy_list('block', 2599 gajim.connections[account].new_blocked_list) 2630 2600 gajim.connections[account].get_privacy_list('block') 2631 2601 if len(gajim.connections[account].new_blocked_list) == 0: … … 2639 2609 gajim.interface.instances[account]['blocked_contacts'].\ 2640 2610 privacy_list_received([]) 2641 if group_list is None: 2642 status = gajim.connections[jid_account].connected 2643 if gajim.SHOW_LIST[status] == 'invisible': 2644 # Don't send our presence if we're invisible 2645 return 2646 msg = gajim.connections[jid_account].status 2611 for (contact, account) in list_: 2647 2612 if not self.regroup: 2648 show = gajim.SHOW_LIST[ status]2613 show = gajim.SHOW_LIST[gajim.connections[account].connected] 2649 2614 else: # accounts merged 2650 2615 show = helpers.get_global_show() 2651 self.send_status(jid_account, show, msg, to=jid) 2652 else: 2653 for (contact, account) in group_list: 2654 if not self.regroup: 2655 show = gajim.SHOW_LIST[gajim.connections[account].connected] 2656 else: # accounts merged 2657 show = helpers.get_global_show() 2658 if show == 'invisible': 2659 # Don't send our presence if we're invisible 2660 continue 2661 if account not in accounts: 2662 if gajim.connections[account].privacy_rules_supported: 2663 accounts.append(account) 2664 self.send_status(account, show, 2665 gajim.connections[account].status, to=contact.jid) 2666 else: 2616 if show == 'invisible': 2617 # Don't send our presence if we're invisible 2618 continue 2619 if account not in accounts: 2620 accounts.append(account) 2621 if gajim.connections[account].privacy_rules_supported: 2667 2622 self.send_status(account, show, 2668 2623 gajim.connections[account].status, to=contact.jid) 2669 2670 def on_rename(self, widget, titer, path): 2624 else: 2625 self.send_status(account, show, 2626 gajim.connections[account].status, to=contact.jid) 2627 2628 def on_rename(self, widget, row_type, jid, account): 2671 2629 # this function is called either by F2 or by Rename menuitem 2672 2630 if gajim.interface.instances.has_key('rename'): … … 2675 2633 model = self.modelfilter 2676 2634 2677 row_type = model[titer][C_TYPE]2678 jid = model[titer][C_JID].decode('utf-8')2679 account = model[titer][C_ACCOUNT].decode('utf-8')2680 2635 # account is offline, don't allow to rename 2681 2636 if gajim.connections[account].connected < 2: … … 2690 2645 if jid in helpers.special_groups + (_('General'),): 2691 2646 return 2692 old_text = model[titer][C_JID].decode('utf-8')2647 old_text = jid 2693 2648 title = _('Rename Group') 2694 message = _('Enter a new name for group %s') % old_text2649 message = _('Enter a new name for group %s') % jid 2695 2650 2696 2651 def on_renamed(new_text, account, row_type, jid, old_text): … … 2982 2937 type_ = model[path][C_TYPE] 2983 2938 if type_ in ('contact', 'group', 'agent'): 2984 titer = model.get_iter(path) 2985 self.on_rename(widget, titer, path) 2939 jid = model[path][C_JID].decode('utf-8') 2940 account = model[path][C_ACCOUNT].decode('utf-8') 2941 self.on_rename(widget, type_, jid, account) 2986 2942 2987 2943 elif event.keyval == gtk.keysyms.Delete: … … 2991 2947 return 2992 2948 type_ = model[list_of_paths[0]][C_TYPE] 2993 account = model[list_of_paths[0]][C_ACCOUNT] 2949 account = model[list_of_paths[0]][C_ACCOUNT].decode('utf-8') 2994 2950 list_ = [] 2995 2951 for path in list_of_paths: … … 5126 5082 rename_item.set_image(img) 5127 5083 menu.append(rename_item) 5128 rename_item.connect('activate', self.on_rename, titer, path) 5084 rename_item.connect('activate', self.on_rename, 'group', group, 5085 account) 5129 5086 5130 5087 # Block group … … 5142 5099 icon = gtk.image_new_from_stock(gtk.STOCK_STOP, gtk.ICON_SIZE_MENU) 5143 5100 unblock_menuitem.set_image(icon) 5144 unblock_menuitem.connect('activate', self.on_unblock, titer, list_)5101 unblock_menuitem.connect('activate', self.on_unblock, list_, group) 5145 5102 menu.append(unblock_menuitem) 5146 5103 else: … … 5148 5105 icon = gtk.image_new_from_stock(gtk.STOCK_STOP, gtk.ICON_SIZE_MENU) 5149 5106 block_menuitem.set_image(icon) 5150 block_menuitem.connect('activate', self.on_block, titer, list_)5107 block_menuitem.connect('activate', self.on_block, list_, group) 5151 5108 menu.append(block_menuitem) 5152 5109 if not gajim.connections[account].privacy_rules_supported: … … 5248 5205 send_file_menuitem.set_sensitive(False) 5249 5206 5250 rename_menuitem.connect('activate', self.on_rename, titer, tree_path) 5207 rename_menuitem.connect('activate', self.on_rename, 'contact', jid, 5208 account) 5251 5209 if contact.show in ('offline', 'error'): 5252 5210 information_menuitem.set_sensitive(False) … … 5427 5385 self.on_send_single_message_menuitem_activate, account, contact) 5428 5386 5429 rename_menuitem.connect('activate', self.on_rename, titer, tree_path) 5387 rename_menuitem.connect('activate', self.on_rename, 'contact', jid, 5388 account) 5430 5389 remove_from_roster_menuitem.connect('activate', self.on_req_usub, 5431 5390 [(contact, account)]) … … 5501 5460 unblock_menuitem.hide() 5502 5461 unignore_menuitem.set_no_show_all(False) 5503 unignore_menuitem.connect('activate', self.on_unblock, titer,5504 None)5462 unignore_menuitem.connect('activate', self.on_unblock, [(contact, 5463 account)]) 5505 5464 else: 5506 unblock_menuitem.connect('activate', self.on_unblock, titer,5507 None)5465 unblock_menuitem.connect('activate', self.on_unblock, [(contact, 5466 account)]) 5508 5467 else: 5509 5468 unblock_menuitem.set_no_show_all(True) … … 5513 5472 block_menuitem.hide() 5514 5473 ignore_menuitem.set_no_show_all(False) 5515 ignore_menuitem.connect('activate', self.on_block, titer, None) 5474 ignore_menuitem.connect('activate', self.on_block, [(contact, 5475 account)]) 5516 5476 else: 5517 block_menuitem.connect('activate', self.on_block, titer, None) 5477 block_menuitem.connect('activate', self.on_block, [(contact, 5478 account)]) 5518 5479 else: 5519 5480 unblock_menuitem.set_no_show_all(True) … … 5598 5559 icon = gtk.image_new_from_stock(gtk.STOCK_STOP, gtk.ICON_SIZE_MENU) 5599 5560 unblock_menuitem.set_image(icon) 5600 unblock_menuitem.connect('activate', self.on_unblock, None,list_)5561 unblock_menuitem.connect('activate', self.on_unblock, list_) 5601 5562 manage_contacts_submenu.append(unblock_menuitem) 5602 5563 else: … … 5604 5565 icon = gtk.image_new_from_stock(gtk.STOCK_STOP, gtk.ICON_SIZE_MENU) 5605 5566 block_menuitem.set_image(icon) 5606 block_menuitem.connect('activate', self.on_block, None,list_)5567 block_menuitem.connect('activate', self.on_block, list_) 5607 5568 manage_contacts_submenu.append(block_menuitem) 5608 5569 … … 5718 5679 item.set_image(img) 5719 5680 manage_transport_submenu.append(item) 5720 item.connect('activate', self.on_rename, titer, path)5681 item.connect('activate', self.on_rename, 'agent', jid, account) 5721 5682 if gajim.account_is_disconnected(account): 5722 5683 item.set_sensitive(False) … … 5728 5689 if blocked: 5729 5690 item = gtk.ImageMenuItem(_('_Unblock')) 5730 item.connect('activate', self.on_unblock, titer, None)5691 item.connect('activate', self.on_unblock, [(contact, account)]) 5731 5692 else: 5732 5693 item = gtk.ImageMenuItem(_('_Block')) 5733 item.connect('activate', self.on_block, titer, None)5694 item.connect('activate', self.on_block, [(contact, account)]) 5734 5695 5735 5696 icon = gtk.image_new_from_stock(gtk.STOCK_STOP, gtk.ICON_SIZE_MENU)
