blob: ecfd35ff1195977960308081ef622058f5bdfd07 (
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
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
|
# -*- coding: utf-8 -*-
# connections.py
# Copyright (C) 2013 LEAP
#
# 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, either version 3 of the License, or
# (at your option) any later version.
#
# 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.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
"""
Abstract LEAP connections.
"""
# TODO use zope.interface instead
from abc import ABCMeta
from PySide import QtCore
from leap.common.check import leap_assert
_tr = QtCore.QObject().tr
class State(object):
"""
Abstract state class
"""
__metaclass__ = ABCMeta
label = None
short_label = None
"""
The different services should declare a ServiceConnection class that
inherits from AbstractLEAPConnection, so an instance of such class
can be used to inform the StateMachineBuilder of the particularities
of the state transitions for each particular connection.
"""
class AbstractLEAPConnection(object):
"""
Abstract LEAP Connection class.
This class is likely to undergo heavy transformations
in the coming releases, to better accomodate the use cases
of the different connections that we use in the Bitmask
client.
"""
__metaclass__ = ABCMeta
_connection_name = None
@property
def name(self):
"""
Name of the connection
"""
con_name = self._connection_name
leap_assert(con_name is not None)
return con_name
_qtsigs = None
@property
def qtsigs(self):
"""
Object that encapsulates the Qt Signals emitted
by this connection.
"""
return self._qtsigs
components = None
# Signals that derived classes
# have to implement.
# Commands
do_connect_signal = None
do_disconnect_signal = None
# Intermediate stages
connecting_signal = None
disconnecting_signal = None
# Complete stages
connected_signal = None
disconnected_signal = None
# Bypass stages
connection_died_signal = None
connection_aborted_signal = None
class Disconnected(State):
"""Disconnected state"""
label = _tr("Disconnected")
short_label = _tr("OFF")
class Connected(State):
"""Connected state"""
label = _tr("Connected")
short_label = _tr("ON")
class Connecting(State):
"""Connecting state"""
label = _tr("Connecting")
short_label = _tr("...")
class Disconnecting(State):
"""Disconnecting state"""
label = _tr("Disconnecting")
short_label = _tr("...")
|