1
4 self.to = to
5 self.label = label
6
8 if other is None:
9 return False
10 if self.to == other.to and self.label == other.label:
11 return True
12 return False
13
15 return hash((self.to, self.label))
16
18 VRM = 1
19 SINK = 2
20 COMPONENT = 3
21 SENSE = 4
22 SWITCHVRM = 5
23 UNKNOWN = 6
24
25 - def __init__(self, iterator, obj, type, color, metaData = None):
33
36
39
41 self._outputs.add(connection)
42
45
47 if other is None:
48 return False
49 if self.obj.name == other.obj.name and self.type == other.type and self.vrmIterator == other.vrmIterator:
50 return True
51 return False
52
55
58 self._topology = []
59 self._row = -1
60 self._column = 0
61 self._previousIt = 0
62 self._senseLines = []
63
65 pos = self.position(element)
66 if pos is not None:
67 return self._topology[pos[0]][pos[1]]
68 if self._row == -1:
69 self.addRow()
70 while len(self._topology[self._row]) < self._column:
71 self._topology[self._row].append(None)
72 self._topology[self._row].insert(self._column,element)
73 self._column +=1
74 return element
75
77 while len(self._topology) < rowNr+1:
78 self.addRow()
79 for element in self._topology[rowNr]:
80 if element is None:
81 continue
82 if element.type != TopologyElement.SENSE:
83 self.insertRow(rowNr)
84 break
85 while len(self._topology[rowNr]) < columnNr:
86 self._topology[rowNr].append(None)
87 self._topology[rowNr].insert(columnNr,senseElement)
88
91
93 self._previousIt = iterator
94
96 self._senseLines.append(senseLine)
97
100
102 self._topology.append([])
103 self._row += 1
104 if self._column > 0:
105 self._column -=1
106
108 self._topology.insert(rowNr, [])
109
111 if index < len(self._topology):
112 del self._topology[index]
113
114 - def addConnection(self, fromElement, toElement, outLabel="", inLabel=""):
117
119 maxCol = 0
120
121 rowsToRemove=[]
122 for index,row in enumerate(self._topology):
123 if not row:
124 rowsToRemove.append(index)
125 rowsToRemove.sort(reverse=True)
126 for index in rowsToRemove:
127 self.removeRow(index)
128
129 for senseLine in self._senseLines:
130 pos = self.positionByName(senseLine.obj.vrmName)
131 rowNr = pos[0] + 1
132 columnNr = pos[1]
133 self.insertSenseElement(senseLine, rowNr, columnNr)
134
135 return self
136
138 for row in self._topology:
139 for element in row:
140 if element == _element:
141 return (self._topology.index(row), row.index(element))
142 return None
143
145 for row in self._topology:
146 for element in row:
147 if element is not None and element.obj.name == name:
148 return (self._topology.index(row), row.index(element))
149 return None
150