Welcome to mirror list, hosted at ThFree Co, Russian Federation.

dev.gajim.org/gajim/gajim-plugins.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDenis Fomin <fominde@gmail.com>2012-11-03 18:34:39 +0400
committerDenis Fomin <fominde@gmail.com>2012-11-03 18:34:39 +0400
commitcb380d8e570906b331bbf9a9f5250ad9f19ec7d3 (patch)
tree70b4dba6827dc0b551bad474fda687c0357568a1 /wicd_support/wicd_support.py
parent1e5186da4de46aadf7a2d2391ee1b5ec214826ad (diff)
Add Wicd Support plugin. Big thanks to Darlan for help!
Diffstat (limited to 'wicd_support/wicd_support.py')
-rw-r--r--wicd_support/wicd_support.py66
1 files changed, 66 insertions, 0 deletions
diff --git a/wicd_support/wicd_support.py b/wicd_support/wicd_support.py
new file mode 100644
index 0000000..0bf9034
--- /dev/null
+++ b/wicd_support/wicd_support.py
@@ -0,0 +1,66 @@
+# -*- coding: utf-8 -*-
+
+import gobject
+
+from common import gajim
+from plugins import GajimPlugin
+from plugins.helpers import log_calls
+from common import dbus_support
+
+
+class WicdPlugin(GajimPlugin):
+ @log_calls('WicdPlugin')
+ def init(self):
+ self.description = _('Support for autodetection of network status '
+ 'for Wicd Network Manager.\nRequires wicd and python-dbus.')
+ self.config_dialog = None
+ self.test_activatable()
+
+ def test_activatable(self):
+ self.available_text = ''
+ if not dbus_support.supported:
+ self.activatable = False
+ self.available_text += _('python-dbus is missing! '
+ 'Install python-dbus.')
+
+ @log_calls('WicdPlugin')
+ def activate(self):
+ try:
+ import dbus
+ from common.dbus_support import system_bus
+
+ self.bus = system_bus.bus()
+
+ if 'org.wicd.daemon' not in self.bus.list_names():
+ return
+ wicd_object = self.bus.get_object('org.wicd.daemon',
+ '/org/wicd/daemon')
+ self.props = dbus.Interface(wicd_object,
+ "org.freedesktop.DBus.Properties")
+ self.bus.add_signal_receiver(self.state_changed, 'StatusChanged',
+ 'org.wicd.daemon', 'org.wicd.daemon', '/org/wicd/daemon')
+ except dbus.DBusException:
+ pass
+
+ @log_calls('WicdPlugin')
+ def deactivate(self):
+ self.bus.remove_signal_receiver(self.state_changed, 'StatusChanged',
+ 'org.wicd.daemon', 'org.wicd.daemon','/org/wicd/daemon')
+
+ def state_changed(self, state, info):
+ # Connection state constants
+ #NOT_CONNECTED = 0
+ #CONNECTING = 1
+ #WIRELESS = 2
+ #WIRED = 3
+ #SUSPENDED = 4
+ if state == 2 or state == 3:
+ for connection in gajim.connections.itervalues():
+ if gajim.config.get_per('accounts', connection.name,
+ 'listen_to_network_manager') and connection.time_to_reconnect:
+ connection._reconnect()
+ else:
+ for connection in gajim.connections.itervalues():
+ if gajim.config.get_per('accounts', connection.name,
+ 'listen_to_network_manager') and connection.connected > 1:
+ connection._disconnectedReconnCB()