Add Wicd Support plugin. Big thanks to Darlan for help!

This commit is contained in:
Denis Fomin
2012-11-03 18:34:39 +04:00
parent 1e5186da4d
commit cb380d8e57
4 changed files with 75 additions and 0 deletions

1
wicd_support/__init__.py Normal file
View File

@@ -0,0 +1 @@
from wicd_support import WicdPlugin

View File

@@ -0,0 +1,8 @@
[info]
name: Wicd support
short_name: wicd_support
version: 0.1
description: Support for autodetection of network status for Wicd Network Manager.
Requires wicd and python-dbus.
authors = Denis Fomin <fominde@gmail.com>
homepage = http://trac-plugins.gajim.org/wiki/WicdSupportPlugin

Binary file not shown.

After

Width:  |  Height:  |  Size: 608 B

View File

@@ -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()