Author: sb Date: 2006-10-18 00:15:20 +0200 (Wed, 18 Oct 2006) New Revision: 7283
Added: trunk/src/network_manager_listener.py Modified: trunk/src/roster_window.py Log: add simple implementation of network manager awareness (should find a better place) - see #860
Added: trunk/src/network_manager_listener.py =================================================================== --- trunk/src/network_manager_listener.py (rev 0) +++ trunk/src/network_manager_listener.py 2006-10-17 22:15:20 UTC (rev 7283) @@ -0,0 +1,32 @@ +# -*- coding: utf-8 -*- +## network_manager_listener.py +## +## Copyright (C) 2006 Stefan Bethge stefan@lanpartei.de +## +## This program is free software; you can redistribute it and/or modify +## it under the terms of the GNU General Public License as published +## by the Free Software Foundation; version 2 only. +## +## This program is distributed in the hope that it will be useful, +## but WITHOUT ANY WARRANTY; without even the implied warranty of +## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +## GNU General Public License for more details. +## + +import dbus +import dbus.glib + +NM_OBJ_PATH = "/org/freedesktop/NetworkManager" +NM_INTERFACE = "org.freedesktop.NetworkManager" +NM_SERVICE = "org.freedesktop.NetworkManager" + +class NetworkManagerListener: + def __init__(self, nm_activated_CB, nm_deactivated_CB): + sys_bus = dbus.SystemBus() + proxy_obj = sys_bus.get_object(NM_SERVICE, NM_OBJ_PATH) + self._nm_iface = dbus.Interface(proxy_obj, NM_INTERFACE) + + self._devices = self._nm_iface.getDevices() + + self._nm_iface.connect_to_signal('DeviceNowActive', nm_activated_CB) + self._nm_iface.connect_to_signal('DeviceNoLongerActive', nm_deactivated_CB)
Modified: trunk/src/roster_window.py =================================================================== --- trunk/src/roster_window.py 2006-10-17 21:56:59 UTC (rev 7282) +++ trunk/src/roster_window.py 2006-10-17 22:15:20 UTC (rev 7283) @@ -47,6 +47,10 @@ if dbus_support.supported: from music_track_listener import MusicTrackListener
+from common import dbus_support +if dbus_support.supported: + from network_manager_listener import NetworkManagerListener + #(icon, name, type, jid, account, editable, second pixbuf) ( C_IMG, # image to show state (online, new message etc) @@ -4169,3 +4173,13 @@ gajim.interface.instances['account_creation_wizard'] = \ config.AccountCreationWizardWindow()
+ nm_listener = NetworkManagerListener(self.nm_activated_CB, self.nm_deactivated_CB) + + def nm_activated_CB(self, dev, net): + for acc in gajim.contacts.get_accounts(): + gajim.interface.roster.send_status(acc, 'online', '') + + def nm_deactivated_CB(self, dev): + for acc in gajim.contacts.get_accounts(): + gajim.interface.roster.send_status(acc, 'offline', '') +