forked from bobjacobsen/JMRI
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathNumberInput.py
80 lines (63 loc) · 2.28 KB
/
NumberInput.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
# Fill a memory with a two-digit number, using 10 sensors
# as digit inputs. Use this to e.g. put a keypad on
# a panel.
#
# Author: Bob Jacobsen, copyright 2008, 2017
# Part of the JMRI distribution
#
import jmri
import java
import java.beans
# Define a listener which appends a single character (from its
# local 'digit' variable) to a memory (in its local 'memory' variable)
#
class NumberInputListener(java.beans.PropertyChangeListener) :
def propertyChange(self, event) :
if (event.propertyName == "KnownState" and event.newValue == ACTIVE and event.oldValue != ACTIVE) :
oldValue = self.memory.getValue()
self.memory.setValue(oldValue[1:]+self.digit)
return
# create the memory to use and give it initial contents
memory = memories.provideMemory("IM1")
memory.setValue("00")
# now use this 10 times, for the 10 sensors that give digits
listener = NumberInputListener()
listener.memory = memory
listener.digit = "0"
sensors.provideSensor("IS10").addPropertyChangeListener(listener)
listener = NumberInputListener()
listener.memory = memory
listener.digit = "1"
sensors.provideSensor("IS11").addPropertyChangeListener(listener)
listener = NumberInputListener()
listener.memory = memory
listener.digit = "2"
sensors.provideSensor("IS12").addPropertyChangeListener(listener)
listener = NumberInputListener()
listener.memory = memory
listener.digit = "3"
sensors.provideSensor("IS13").addPropertyChangeListener(listener)
listener = NumberInputListener()
listener.memory = memory
listener.digit = "4"
sensors.provideSensor("IS14").addPropertyChangeListener(listener)
listener = NumberInputListener()
listener.memory = memory
listener.digit = "5"
sensors.provideSensor("IS15").addPropertyChangeListener(listener)
listener = NumberInputListener()
listener.memory = memory
listener.digit = "6"
sensors.provideSensor("IS16").addPropertyChangeListener(listener)
listener = NumberInputListener()
listener.memory = memory
listener.digit = "7"
sensors.provideSensor("IS17").addPropertyChangeListener(listener)
listener = NumberInputListener()
listener.memory = memory
listener.digit = "8"
sensors.provideSensor("IS18").addPropertyChangeListener(listener)
listener = NumberInputListener()
listener.memory = memory
listener.digit = "9"
sensors.provideSensor("IS19").addPropertyChangeListener(listener)