use NEC to handle our-status event

This commit is contained in:
Yann Leboulanger 2010-11-06 10:04:41 +01:00
parent f68d270f8f
commit 69578659a2
8 changed files with 103 additions and 60 deletions

View file

@ -43,6 +43,7 @@ import re
from common import gajim from common import gajim
from common import helpers from common import helpers
from common import exceptions from common import exceptions
from common import ged
from message_control import MessageControl from message_control import MessageControl
from conversation_textview import ConversationTextview from conversation_textview import ConversationTextview
from message_textview import MessageTextView from message_textview import MessageTextView
@ -198,6 +199,19 @@ class ChatControlBase(MessageControl, ChatCommandProcessor, CommandTools):
""" """
pass pass
def _nec_our_status(self, obj):
if self.account != obj.conn.name:
return
if obj.show == 'offline' or (obj.show == 'invisible' and \
obj.conn.is_zeroconf):
self.got_disconnected()
else:
# Other code rejoins all GCs, so we don't do it here
if not self.type_id == message_control.TYPE_GC:
self.got_connected()
if self.parent_win:
self.parent_win.redraw_tab(self)
def handle_message_textview_mykey_press(self, widget, event_keyval, def handle_message_textview_mykey_press(self, widget, event_keyval,
event_keymod): event_keymod):
""" """
@ -430,6 +444,9 @@ class ChatControlBase(MessageControl, ChatCommandProcessor, CommandTools):
# instance object (also subclasses, eg. ChatControl or GroupchatControl) # instance object (also subclasses, eg. ChatControl or GroupchatControl)
gajim.plugin_manager.gui_extension_point('chat_control_base', self) gajim.plugin_manager.gui_extension_point('chat_control_base', self)
gajim.ged.register_event_handler('our-show', ged.GUI1,
self._nec_our_status)
# This is bascially a very nasty hack to surpass the inability # This is bascially a very nasty hack to surpass the inability
# to properly use the super, because of the old code. # to properly use the super, because of the old code.
CommandTools.__init__(self) CommandTools.__init__(self)
@ -474,6 +491,8 @@ class ChatControlBase(MessageControl, ChatCommandProcessor, CommandTools):
# instance object # instance object
gajim.plugin_manager.remove_gui_extension_point('chat_control_base', self) gajim.plugin_manager.remove_gui_extension_point('chat_control_base', self)
gajim.plugin_manager.remove_gui_extension_point('chat_control_base_draw_banner', self) gajim.plugin_manager.remove_gui_extension_point('chat_control_base_draw_banner', self)
gajim.ged.remove_event_handler('our-show', ged.GUI1,
self._nec_our_status)
def on_msg_textview_populate_popup(self, textview, menu): def on_msg_textview_populate_popup(self, textview, menu):
""" """

View file

@ -231,7 +231,8 @@ class CommonConnection:
Called when a disconnect request has completed successfully Called when a disconnect request has completed successfully
""" """
self.disconnect(on_purpose=True) self.disconnect(on_purpose=True)
self.dispatch('STATUS', 'offline') gajim.nec.push_incoming_event(OurShowEvent(None, conn=self,
show='offline'))
def get_status(self): def get_status(self):
return gajim.SHOW_LIST[self.connected] return gajim.SHOW_LIST[self.connected]
@ -731,7 +732,8 @@ class Connection(CommonConnection, ConnectionHandlers):
if self.connected < 2: # connection failed if self.connected < 2: # connection failed
log.debug('reconnect') log.debug('reconnect')
self.connected = 1 self.connected = 1
self.dispatch('STATUS', 'connecting') gajim.nec.push_incoming_event(OurShowEvent(None, conn=self,
show='connecting'))
self.retrycount += 1 self.retrycount += 1
self.on_connect_auth = self._discover_server_at_connection self.on_connect_auth = self._discover_server_at_connection
self.connect_and_init(self.old_show, self.status, self.USE_GPG) self.connect_and_init(self.old_show, self.status, self.USE_GPG)
@ -768,11 +770,13 @@ class Connection(CommonConnection, ConnectionHandlers):
self.old_show = gajim.SHOW_LIST[self.connected] self.old_show = gajim.SHOW_LIST[self.connected]
self.connected = 0 self.connected = 0
if not self.on_purpose: if not self.on_purpose:
self.dispatch('STATUS', 'offline') gajim.nec.push_incoming_event(OurShowEvent(None, conn=self,
show='offline'))
self.disconnect() self.disconnect()
if gajim.config.get_per('accounts', self.name, 'autoreconnect'): if gajim.config.get_per('accounts', self.name, 'autoreconnect'):
self.connected = -1 self.connected = -1
self.dispatch('STATUS', 'error') gajim.nec.push_incoming_event(OurShowEvent(None, conn=self,
show='error'))
if gajim.status_before_autoaway[self.name]: if gajim.status_before_autoaway[self.name]:
# We were auto away. So go back online # We were auto away. So go back online
self.status = gajim.status_before_autoaway[self.name] self.status = gajim.status_before_autoaway[self.name]
@ -804,7 +808,8 @@ class Connection(CommonConnection, ConnectionHandlers):
def _connection_lost(self): def _connection_lost(self):
log.debug('_connection_lost') log.debug('_connection_lost')
self.disconnect(on_purpose = False) self.disconnect(on_purpose = False)
self.dispatch('STATUS', 'offline') gajim.nec.push_incoming_event(OurShowEvent(None, conn=self,
show='offline'))
self.dispatch('CONNECTION_LOST', self.dispatch('CONNECTION_LOST',
(_('Connection with account "%s" has been lost') % self.name, (_('Connection with account "%s" has been lost') % self.name,
_('Reconnect manually.'))) _('Reconnect manually.')))
@ -1164,7 +1169,8 @@ class Connection(CommonConnection, ConnectionHandlers):
# we are not retrying, and not conecting # we are not retrying, and not conecting
if not self.retrycount and self.connected != 0: if not self.retrycount and self.connected != 0:
self.disconnect(on_purpose = True) self.disconnect(on_purpose = True)
self.dispatch('STATUS', 'offline') gajim.nec.push_incoming_event(OurShowEvent(None, conn=self,
show='offline'))
pritxt = _('Could not connect to "%s"') % self._hostname pritxt = _('Could not connect to "%s"') % self._hostname
sectxt = _('Check your connection or try again later.') sectxt = _('Check your connection or try again later.')
if self.streamError: if self.streamError:
@ -1182,7 +1188,8 @@ class Connection(CommonConnection, ConnectionHandlers):
self.time_to_reconnect = None self.time_to_reconnect = None
self.on_connect_failure = None self.on_connect_failure = None
self.disconnect(on_purpose = True) self.disconnect(on_purpose = True)
self.dispatch('STATUS', 'offline') gajim.nec.push_incoming_event(OurShowEvent(None, conn=self,
show='offline'))
self.dispatch('CONNECTION_LOST', self.dispatch('CONNECTION_LOST',
(_('Connection to proxy failed'), reason)) (_('Connection to proxy failed'), reason))
@ -1213,7 +1220,8 @@ class Connection(CommonConnection, ConnectionHandlers):
def connection_accepted(self, con, con_type): def connection_accepted(self, con, con_type):
if not con or not con.Connection: if not con or not con.Connection:
self.disconnect(on_purpose=True) self.disconnect(on_purpose=True)
self.dispatch('STATUS', 'offline') gajim.nec.push_incoming_event(OurShowEvent(None, conn=self,
show='offline'))
self.dispatch('CONNECTION_LOST', self.dispatch('CONNECTION_LOST',
(_('Could not connect to account %s') % self.name, (_('Could not connect to account %s') % self.name,
_('Connection with account %s has been lost. Retry connecting.') % \ _('Connection with account %s has been lost. Retry connecting.') % \
@ -1272,7 +1280,8 @@ class Connection(CommonConnection, ConnectionHandlers):
def ssl_certificate_accepted(self): def ssl_certificate_accepted(self):
if not self.connection: if not self.connection:
self.disconnect(on_purpose=True) self.disconnect(on_purpose=True)
self.dispatch('STATUS', 'offline') gajim.nec.push_incoming_event(OurShowEvent(None, conn=self,
show='offline'))
self.dispatch('CONNECTION_LOST', self.dispatch('CONNECTION_LOST',
(_('Could not connect to account %s') % self.name, (_('Could not connect to account %s') % self.name,
_('Connection with account %s has been lost. Retry connecting.') % \ _('Connection with account %s has been lost. Retry connecting.') % \
@ -1292,7 +1301,8 @@ class Connection(CommonConnection, ConnectionHandlers):
def __on_auth(self, con, auth): def __on_auth(self, con, auth):
if not con: if not con:
self.disconnect(on_purpose=True) self.disconnect(on_purpose=True)
self.dispatch('STATUS', 'offline') gajim.nec.push_incoming_event(OurShowEvent(None, conn=self,
show='offline'))
self.dispatch('CONNECTION_LOST', self.dispatch('CONNECTION_LOST',
(_('Could not connect to "%s"') % self._hostname, (_('Could not connect to "%s"') % self._hostname,
_('Check your connection or try again later'))) _('Check your connection or try again later')))
@ -1327,7 +1337,8 @@ class Connection(CommonConnection, ConnectionHandlers):
self.password = None self.password = None
gajim.log.debug("Couldn't authenticate to %s" % self._hostname) gajim.log.debug("Couldn't authenticate to %s" % self._hostname)
self.disconnect(on_purpose = True) self.disconnect(on_purpose = True)
self.dispatch('STATUS', 'offline') gajim.nec.push_incoming_event(OurShowEvent(None, conn=self,
show='offline'))
self.dispatch('ERROR', (_('Authentication failed with "%s"') % \ self.dispatch('ERROR', (_('Authentication failed with "%s"') % \
self._hostname, self._hostname,
_('Please check your login and password for correctness.'))) _('Please check your login and password for correctness.')))
@ -1475,7 +1486,8 @@ class Connection(CommonConnection, ConnectionHandlers):
if not gajim.account_is_connected(self.name): if not gajim.account_is_connected(self.name):
return return
if not self.privacy_rules_supported: if not self.privacy_rules_supported:
self.dispatch('STATUS', gajim.SHOW_LIST[self.connected]) gajim.nec.push_incoming_event(OurShowEvent(None, conn=self,
show=gajim.SHOW_LIST[self.connected]))
self.dispatch('ERROR', (_('Invisibility not supported'), self.dispatch('ERROR', (_('Invisibility not supported'),
_('Account %s doesn\'t support invisibility.') % self.name)) _('Account %s doesn\'t support invisibility.') % self.name))
return return
@ -1512,7 +1524,8 @@ class Connection(CommonConnection, ConnectionHandlers):
p.setTag(common.xmpp.NS_SIGNED + ' x').setData(signed) p.setTag(common.xmpp.NS_SIGNED + ' x').setData(signed)
self.connection.send(p) self.connection.send(p)
self.priority = priority self.priority = priority
self.dispatch('STATUS', 'invisible') gajim.nec.push_incoming_event(OurShowEvent(None, conn=self,
show='invisible'))
if initial: if initial:
# ask our VCard # ask our VCard
self.request_vcard(None) self.request_vcard(None)
@ -1617,7 +1630,8 @@ class Connection(CommonConnection, ConnectionHandlers):
if self.connection: if self.connection:
self.connection.send(p) self.connection.send(p)
self.priority = priority self.priority = priority
self.dispatch('STATUS', show) gajim.nec.push_incoming_event(OurShowEvent(None, conn=self,
show=show))
def send_motd(self, jid, subject = '', msg = '', xhtml = None): def send_motd(self, jid, subject = '', msg = '', xhtml = None):
if not gajim.account_is_connected(self.name): if not gajim.account_is_connected(self.name):

View file

@ -708,7 +708,8 @@ class ConnectionVcard:
# Trying to login as invisible but privacy list not # Trying to login as invisible but privacy list not
# supported # supported
self.disconnect(on_purpose=True) self.disconnect(on_purpose=True)
self.dispatch('STATUS', 'offline') gajim.nec.push_incoming_event(OurShowEvent(None, conn=self,
show='offline'))
self.dispatch('ERROR', (_('Invisibility not supported'), self.dispatch('ERROR', (_('Invisibility not supported'),
_('Account %s doesn\'t support invisibility.') % \ _('Account %s doesn\'t support invisibility.') % \
self.name)) self.name))
@ -2035,7 +2036,8 @@ ConnectionJingle, ConnectionIBBytestream):
if self.connection: if self.connection:
self.connection.send(p) self.connection.send(p)
self.priority = priority self.priority = priority
self.dispatch('STATUS', show) gajim.nec.push_incoming_event(OurShowEvent(None, conn=self,
show=show))
if self.vcard_supported: if self.vcard_supported:
# ask our VCard # ask our VCard
self.request_vcard(None) self.request_vcard(None)

View file

@ -758,7 +758,8 @@ class PresenceReceivedEvent(nec.NetworkIncomingEvent, HelperEvent):
if self.jid == our_jid and self.resource == \ if self.jid == our_jid and self.resource == \
self.conn.server_resource: self.conn.server_resource:
# We got our own presence # We got our own presence
self.conn.dispatch('STATUS', self.show) gajim.nec.push_incoming_event(OurShowEvent(None, conn=self.conn,
show=self.show))
elif self.jid in jid_list or self.jid == our_jid: elif self.jid in jid_list or self.jid == our_jid:
return True return True
@ -874,6 +875,10 @@ class UnsubscribedPresenceReceivedEvent(nec.NetworkIncomingEvent):
self.jid = self.presence_obj.jid self.jid = self.presence_obj.jid
return True return True
class OurShowEvent(nec.NetworkIncomingEvent):
name = 'our-show'
base_network_events = []
class MessageReceivedEvent(nec.NetworkIncomingEvent, HelperEvent): class MessageReceivedEvent(nec.NetworkIncomingEvent, HelperEvent):
name = 'message-received' name = 'message-received'
base_network_events = ['raw-message-received'] base_network_events = ['raw-message-received']

View file

@ -168,14 +168,16 @@ class ConnectionZeroconf(CommonConnection, ConnectionHandlersZeroconf):
# after we auth to server # after we auth to server
self.old_show = STATUS_LIST[self.connected] self.old_show = STATUS_LIST[self.connected]
self.connected = 0 self.connected = 0
self.dispatch('STATUS', 'offline') gajim.nec.push_incoming_event(OurShowEvent(None, conn=self,
show='offline'))
# random number to show we wait network manager to send us a reconenct # random number to show we wait network manager to send us a reconenct
self.time_to_reconnect = 5 self.time_to_reconnect = 5
self.on_purpose = False self.on_purpose = False
def _on_name_conflictCB(self, alt_name): def _on_name_conflictCB(self, alt_name):
self.disconnect() self.disconnect()
self.dispatch('STATUS', 'offline') gajim.nec.push_incoming_event(OurShowEvent(None, conn=self,
show='offline'))
self.dispatch('ZC_NAME_CONFLICT', alt_name) self.dispatch('ZC_NAME_CONFLICT', alt_name)
def _on_error(self, message): def _on_error(self, message):
@ -187,7 +189,8 @@ class ConnectionZeroconf(CommonConnection, ConnectionHandlersZeroconf):
if not self.connection: if not self.connection:
self.connection = client_zeroconf.ClientZeroconf(self) self.connection = client_zeroconf.ClientZeroconf(self)
if not zeroconf.test_zeroconf(): if not zeroconf.test_zeroconf():
self.dispatch('STATUS', 'offline') gajim.nec.push_incoming_event(OurShowEvent(None, conn=self,
show='offline'))
self.status = 'offline' self.status = 'offline'
self.dispatch('CONNECTION_LOST', self.dispatch('CONNECTION_LOST',
(_('Could not connect to "%s"') % self.name, (_('Could not connect to "%s"') % self.name,
@ -196,7 +199,8 @@ class ConnectionZeroconf(CommonConnection, ConnectionHandlersZeroconf):
return return
result = self.connection.connect(show, msg) result = self.connection.connect(show, msg)
if not result: if not result:
self.dispatch('STATUS', 'offline') gajim.nec.push_incoming_event(OurShowEvent(None, conn=self,
show='offline'))
self.status = 'offline' self.status = 'offline'
if result is False: if result is False:
self.dispatch('CONNECTION_LOST', self.dispatch('CONNECTION_LOST',
@ -278,10 +282,12 @@ class ConnectionZeroconf(CommonConnection, ConnectionHandlersZeroconf):
# stay offline when zeroconf does something wrong # stay offline when zeroconf does something wrong
if check: if check:
self.dispatch('STATUS', show) gajim.nec.push_incoming_event(OurShowEvent(None, conn=self,
show=show))
else: else:
# show notification that avahi or system bus is down # show notification that avahi or system bus is down
self.dispatch('STATUS', 'offline') gajim.nec.push_incoming_event(OurShowEvent(None, conn=self,
show='offline'))
self.status = 'offline' self.status = 'offline'
self.dispatch('CONNECTION_LOST', self.dispatch('CONNECTION_LOST',
(_('Could not change status of account "%s"') % self.name, (_('Could not change status of account "%s"') % self.name,
@ -289,10 +295,12 @@ class ConnectionZeroconf(CommonConnection, ConnectionHandlersZeroconf):
def _change_to_invisible(self, msg): def _change_to_invisible(self, msg):
if self.connection.remove_announce(): if self.connection.remove_announce():
self.dispatch('STATUS', 'invisible') gajim.nec.push_incoming_event(OurShowEvent(None, conn=self,
show='invisible'))
else: else:
# show notification that avahi or system bus is down # show notification that avahi or system bus is down
self.dispatch('STATUS', 'offline') gajim.nec.push_incoming_event(OurShowEvent(None, conn=self,
show='offline'))
self.status = 'offline' self.status = 'offline'
self.dispatch('CONNECTION_LOST', self.dispatch('CONNECTION_LOST',
(_('Could not change status of account "%s"') % self.name, (_('Could not change status of account "%s"') % self.name,
@ -303,10 +311,12 @@ class ConnectionZeroconf(CommonConnection, ConnectionHandlersZeroconf):
def _update_status(self, show, msg): def _update_status(self, show, msg):
if self.connection.set_show_msg(show, msg): if self.connection.set_show_msg(show, msg):
self.dispatch('STATUS', show) gajim.nec.push_incoming_event(OurShowEvent(None, conn=self,
show=show))
else: else:
# show notification that avahi or system bus is down # show notification that avahi or system bus is down
self.dispatch('STATUS', 'offline') gajim.nec.push_incoming_event(OurShowEvent(None, conn=self,
show='offline'))
self.status = 'offline' self.status = 'offline'
self.dispatch('CONNECTION_LOST', self.dispatch('CONNECTION_LOST',
(_('Could not change status of account "%s"') % self.name, (_('Could not change status of account "%s"') % self.name,

View file

@ -202,10 +202,10 @@ class Interface:
def unblock_signed_in_notifications(self, account): def unblock_signed_in_notifications(self, account):
gajim.block_signed_in_notifications[account] = False gajim.block_signed_in_notifications[account] = False
def handle_event_status(self, account, show): # OUR status def handle_event_status(self, obj): # OUR status
#('STATUS', account, show) #('STATUS', account, show)
model = self.roster.status_combobox.get_model() account = obj.conn.name
if show in ('offline', 'error'): if obj.show in ('offline', 'error'):
for name in self.instances[account]['online_dialog'].keys(): for name in self.instances[account]['online_dialog'].keys():
# .keys() is needed to not have a dictionary length changed # .keys() is needed to not have a dictionary length changed
# during iteration error # during iteration error
@ -218,10 +218,7 @@ class Interface:
request.interrupt(account=account) request.interrupt(account=account)
if account in self.pass_dialog: if account in self.pass_dialog:
self.pass_dialog[account].window.destroy() self.pass_dialog[account].window.destroy()
if show == 'offline': if obj.show == 'offline':
# sensitivity for this menuitem
if gajim.get_number_of_connected_accounts() == 0:
model[self.roster.status_message_menuitem_iter][3] = False
gajim.block_signed_in_notifications[account] = True gajim.block_signed_in_notifications[account] = True
else: else:
# 30 seconds after we change our status to sth else than offline # 30 seconds after we change our status to sth else than offline
@ -230,32 +227,10 @@ class Interface:
# contacts. 30 seconds should be enough time # contacts. 30 seconds should be enough time
gobject.timeout_add_seconds(30, gobject.timeout_add_seconds(30,
self.unblock_signed_in_notifications, account) self.unblock_signed_in_notifications, account)
# sensitivity for this menuitem
model[self.roster.status_message_menuitem_iter][3] = True
# Inform all controls for this account of the connection state change if account in self.show_vcard_when_connect and obj.show not in (
ctrls = self.msg_win_mgr.get_controls() 'offline', 'error'):
if account in self.minimized_controls:
# Can not be the case when we remove account
ctrls += self.minimized_controls[account].values()
for ctrl in ctrls:
if ctrl.account == account:
if show == 'offline' or (show == 'invisible' and \
gajim.connections[account].is_zeroconf):
ctrl.got_disconnected()
else:
# Other code rejoins all GCs, so we don't do it here
if not ctrl.type_id == message_control.TYPE_GC:
ctrl.got_connected()
if ctrl.parent_win:
ctrl.parent_win.redraw_tab(ctrl)
self.roster.on_status_changed(account, show)
if account in self.show_vcard_when_connect and show not in ('offline',
'error'):
self.edit_own_details(account) self.edit_own_details(account)
if self.remote_ctrl:
self.remote_ctrl.raise_signal('AccountPresence', (show, account))
def edit_own_details(self, account): def edit_own_details(self, account):
jid = gajim.get_jid_from_account(account) jid = gajim.get_jid_from_account(account)
@ -1833,7 +1808,6 @@ class Interface:
'ERROR': [self.handle_event_error], 'ERROR': [self.handle_event_error],
'DB_ERROR': [self.handle_event_db_error], 'DB_ERROR': [self.handle_event_db_error],
'INFORMATION': [self.handle_event_information], 'INFORMATION': [self.handle_event_information],
'STATUS': [self.handle_event_status],
'MSGERROR': [self.handle_event_msgerror], 'MSGERROR': [self.handle_event_msgerror],
'MSGSENT': [self.handle_event_msgsent], 'MSGSENT': [self.handle_event_msgsent],
'MSGNOTSENT': [self.handle_event_msgnotsent], 'MSGNOTSENT': [self.handle_event_msgnotsent],
@ -1901,6 +1875,7 @@ class Interface:
'last-result-received': [self.handle_event_last_status_time], 'last-result-received': [self.handle_event_last_status_time],
'muc-admin-received': [self.handle_event_gc_affiliation], 'muc-admin-received': [self.handle_event_gc_affiliation],
'muc-owner-received': [self.handle_event_gc_config], 'muc-owner-received': [self.handle_event_gc_config],
'our-show': [self.handle_event_status],
'presence-received': [self.handle_event_presence], 'presence-received': [self.handle_event_presence],
'roster-info': [self.handle_event_roster_info], 'roster-info': [self.handle_event_roster_info],
'roster-item-exchange-received': \ 'roster-item-exchange-received': \

View file

@ -125,6 +125,8 @@ class Remote:
ged.POSTGUI, self.on_unsubscribed_presence_received) ged.POSTGUI, self.on_unsubscribed_presence_received)
gajim.ged.register_event_handler('gc-message-received', gajim.ged.register_event_handler('gc-message-received',
ged.POSTGUI, self.on_gc_message_received) ged.POSTGUI, self.on_gc_message_received)
gajim.ged.register_event_handler('our-show',
ged.POSTGUI, self.on_our_status)
def on_last_status_time(self, obj): def on_last_status_time(self, obj):
self.raise_signal('LastStatusTime', (obj.conn.name, [ self.raise_signal('LastStatusTime', (obj.conn.name, [
@ -178,6 +180,9 @@ class Remote:
obj.timestamp, obj.has_timestamp, obj.xhtml_msgtxt, obj.status_code, obj.timestamp, obj.has_timestamp, obj.xhtml_msgtxt, obj.status_code,
obj.displaymarking, obj.captcha_form, obj.needs_highlight])) obj.displaymarking, obj.captcha_form, obj.needs_highlight]))
def on_our_status(self, obj):
self.raise_signal('AccountPresence', (obj.show, obj.conn.name))
def raise_signal(self, signal, arg): def raise_signal(self, signal, arg):
if self.signal_object: if self.signal_object:
try: try:

View file

@ -2484,6 +2484,17 @@ class RosterWindow:
""" """
self.rename_self_contact(obj.old_jid, obj.new_jid, obj.conn.name) self.rename_self_contact(obj.old_jid, obj.new_jid, obj.conn.name)
def _nec_our_show(self, obj):
model = self.status_combobox.get_model()
if obj.show == 'offline':
# sensitivity for this menuitem
if gajim.get_number_of_connected_accounts() == 0:
model[self.status_message_menuitem_iter][3] = False
else:
# sensitivity for this menuitem
model[self.status_message_menuitem_iter][3] = True
self.on_status_changed(obj.conn.name, obj.show)
################################################################################ ################################################################################
### Menu and GUI callbacks ### Menu and GUI callbacks
### FIXME: order callbacks in itself... ### FIXME: order callbacks in itself...
@ -6216,3 +6227,5 @@ class RosterWindow:
self._nec_roster_received) self._nec_roster_received)
gajim.ged.register_event_handler('anonymous-auth', ged.GUI1, gajim.ged.register_event_handler('anonymous-auth', ged.GUI1,
self._nec_anonymous_auth) self._nec_anonymous_auth)
gajim.ged.register_event_handler('our-show', ged.GUI1,
self._nec_our_show)