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

wicd_support.py « wicd_support - dev.gajim.org/gajim/gajim-plugins.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
blob: d1e9ae4c70cd490e968316db00dd8ea56df25e23 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
# -*- coding: utf-8 -*-

import gobject
import os

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.config_dialog = None
        self.test_activatable()

    def test_activatable(self):
        self.available_text = ''
        if os.name == 'nt':
            self.available_text = _('Plugin can\'t be run under Windows.')
            self.activatable = False
            return
        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()