-
Notifications
You must be signed in to change notification settings - Fork 9
/
WagoPneuBrick.py
114 lines (73 loc) · 2.8 KB
/
WagoPneuBrick.py
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
from qt import *
import SynopticBrick
__category__ = 'Synoptic'
class WagoPneuBrick(SynopticBrick.SynopticBrick):
wagoStates = {
'out': '#ff00ff',
'in': '#00ff00',
'unknown': '#ff0000',
}
def __init__(self, *args):
SynopticBrick.SynopticBrick.__init__.im_func(self, *args)
self.addProperty('mnemonic', 'string')
self.addProperty('allow_control', 'boolean')
self.wagopneu = None
self.allow_control = False
self.defineSlot('allowControl',())
#
# GUI elements
#
self.lblWago = QLabel('?', self.containerBox)
self.cmdOpenClose = QPushButton('', self.containerBox)
self.lblWago.setAlignment(Qt.AlignCenter)
self.lblWago.setMinimumWidth( self.fontMetrics().width("1234567890"))
#
# connect signals/slots
#
self.connect(self.cmdOpenClose, SIGNAL('clicked()'), self.cmdOpenCloseClicked)
#
# configuration
#
self.setEnabled(False)
def updateGUI(self):
self.wagopneu = self.getHardwareObject(self['mnemonic'])
if self.wagopneu is not None:
if self.isRunning():
self.setEnabled(True)
self.stateChanged(self.wagopneu.getWagoState())
self.connect(self.wagopneu, PYSIGNAL('wagoStateChanged'), self.stateChanged)
else:
self.setEnabled(False)
if self.allow_control:
self.cmdOpenClose.show()
else:
self.cmdOpenClose.hide()
def allowControl(self,state):
self['allow_control']=state
def stateChanged(self, state):
self.lblWago.setText('<b>%s</b>' % state)
self.lblWago.setPaletteBackgroundColor(QColor(WagoPneuBrick.wagoStates[state]))
if state == 'in':
self.cmdOpenClose.setText('Set Out')
elif state == 'out':
self.cmdOpenClose.setText('Set In')
def cmdOpenCloseClicked(self):
if self.cmdOpenClose.text() == 'Set In':
self.wagopneu.wagoIn()
else:
self.wagopneu.wagoOut()
def run(self):
self.updateGUI()
def stop(self):
self.setEnabled(False)
def setMnemonic(self, mne):
self.getProperty('mnemonic').setValue(mne)
self.updateGUI()
def propertyChanged(self, propertyName, oldValue, newValue):
if propertyName == 'mnemonic':
self.updateGUI()
elif propertyName == 'allow_control':
self.allow_control = newValue
self.updateGUI()
else:
SynopticBrick.SynopticBrick.propertyChanged.im_func(self, propertyName, oldValue, newValue)