|
1 |
|
2 class button: |
|
3 |
|
4 def __init__(self, parent, back_id, sele_id, toggle, state, active): |
|
5 self.parent = parent |
|
6 self.back_elt = getSVGElementById(back_id) |
|
7 self.sele_elt = getSVGElementById(sele_id) |
|
8 self.toggle = toggle |
|
9 self.state = state |
|
10 self.active = active |
|
11 self.dragging = False |
|
12 if toggle: |
|
13 self.up = not state |
|
14 else: |
|
15 self.up = True |
|
16 |
|
17 # Add event on each element of the button |
|
18 if self.active: |
|
19 self.back_elt.addEventListener("mouseup", self, False) |
|
20 self.back_elt.addEventListener("mousedown", self, False) |
|
21 self.back_elt.addEventListener("mouseover", self, False) |
|
22 self.back_elt.addEventListener("mouseout", self, False) |
|
23 |
|
24 self.sele_elt.addEventListener("mouseup", self, False) |
|
25 self.sele_elt.addEventListener("mousedown", self, False) |
|
26 self.sele_elt.addEventListener("mouseover", self, False) |
|
27 self.sele_elt.addEventListener("mouseout", self, False) |
|
28 |
|
29 blockSVGElementDrag(self.back_elt) |
|
30 blockSVGElementDrag(self.sele_elt) |
|
31 |
|
32 self.updateElements() |
|
33 |
|
34 # method to display the current state of interface |
|
35 def updateElements(self): |
|
36 if self.up: |
|
37 self.sele_elt.setAttribute("visibility", "hidden") |
|
38 self.back_elt.setAttribute("visibility", "visible") |
|
39 else: |
|
40 self.sele_elt.setAttribute("visibility", "visible") |
|
41 self.back_elt.setAttribute("visibility", "hidden") |
|
42 |
|
43 def updateState(self, value): |
|
44 self.up = not value |
|
45 self.updateElements() |
|
46 |
|
47 def handleEvent(self, evt): |
|
48 # Quand le bouton de la souris est presse |
|
49 if evt.type == "mousedown": |
|
50 evt.stopPropagation() |
|
51 setCurrentObject(self) |
|
52 |
|
53 self.dragging = True |
|
54 |
|
55 if self.toggle: |
|
56 self.up = self.state |
|
57 else: |
|
58 self.up = False |
|
59 self.state = True |
|
60 updateAttr(self.back_elt.id, 'state', self.state) |
|
61 self.updateElements() |
|
62 |
|
63 if isCurrentObject(self) and self.dragging: |
|
64 # Quand le bouton est survole |
|
65 if evt.type == "mouseover" and self.toggle: |
|
66 self.up = self.state |
|
67 self.updateElements() |
|
68 |
|
69 # Quand le curseur quitte la zone du bouton |
|
70 elif evt.type == "mouseout" and self.toggle: |
|
71 self.up = not self.state |
|
72 self.updateElements() |
|
73 |
|
74 # Quand le bouton de la souris est relache |
|
75 elif evt.type == "mouseup": |
|
76 evt.stopPropagation() |
|
77 if self.toggle and self.up == self.state: |
|
78 self.state = not self.state |
|
79 updateAttr(self.back_elt.id, 'state', self.state) |
|
80 elif not self.toggle: |
|
81 self.up = True |
|
82 self.state = False |
|
83 updateAttr(self.back_elt.id, 'state', self.state) |
|
84 self.updateElements() |
|
85 self.dragging = False |
|
86 |
|
87 class textControl: |
|
88 |
|
89 def __init__(self, parent, back_id, state): |
|
90 self.parent = parent |
|
91 self.back_elt = getSVGElementById(back_id) |
|
92 self.state = state |
|
93 self.setValue(self.state) |
|
94 |
|
95 def handleEvent(self, evt): |
|
96 pass |
|
97 |
|
98 def getValue(self): |
|
99 return self.back_elt.firstChild.firstChild.textContent |
|
100 |
|
101 def setValue(self, value): |
|
102 self.back_elt.firstChild.firstChild.textContent = value |
|
103 |
|
104 def updateState(self, value): |
|
105 self.setValue(value) |
|
106 |