-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathGraphObjects.py
151 lines (106 loc) · 3.35 KB
/
GraphObjects.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
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
from Node import Node
import Edge
import graph
class GraphObject():
def __init__(self, graph):
"""
:param graph:
:type graph: Graph
"""
self.graph = graph
self.a = 30
self.b = 0
def move(self, p):
"""
:param p:
:type p: tuple
:return:
"""
pass
def delete(self):
pass
def rotate(self):
aux = self.a
self.a = self.b
self.b = aux;
class Resistance(GraphObject):
def __init__(self, graph):
super(Resistance, self).__init__(graph)
self.resNode = Node(0,0,self,"res")
self.connection1 = Node(0,0, self)
self.connection2 = Node(0,0, self)
self.resNode.add(self.connection1)
self.resNode.add(self.connection2)
def move(self, p):
p1 = (p[0] + self.a , p[1] + self.b)
p2 = (p[0] - self.a , p[1] - self.b)
self.connection1.move(p1)
self.resNode.move(p)
self.connection2.move(p2)
def setVal(self, value):
self.resNode.resVal = value
def add(self):
self.graph.nodes.append(self.connection1)
self.graph.nodes.append(self.resNode)
self.graph.nodes.append(self.connection2)
def delete(self):
self.resNode.deleteMe()
self.connection1.deleteMe()
self.connection2.deleteMe()
del self.resNode
del self.connection1
del self.connection2
class Power(GraphObject):
def __init__(self, graph):
super(Power, self).__init__(graph)
self.voltNode = Node(0, 0, self, Node.volt)
self.connection1 = Node(0, 0, self)
self.connection2 = Node(0, 0, self)
self.voltNode.add(self.connection1)
self.voltNode.add(self.connection2)
def setVal(self, value):
self.voltNode.volt = value
def move(self, p):
p1 = (p[0] + self.a, p[1] + self.b)
p2 = (p[0] - self.a, p[1] - self.b)
self.connection1.move(p1)
self.voltNode.move(p)
self.connection2.move(p2)
def add(self):
self.graph.nodes.append(self.connection1)
self.graph.nodes.append(self.voltNode)
self.graph.nodes.append(self.connection2)
def delete(self):
self.voltNode.deleteMe()
self.connection1.deleteMe()
self.connection2.deleteMe()
del self.voltNode
del self.connection1
del self.connection2
class Line(GraphObject):
def __init__(self, graph, node):
"""
:param graph:
:type graph: Graph
:param node:
:type node: Node
"""
super(Line, self).__init__(graph)
self.lineNode = Node(0,0, self)
self.connectedNode = node
if self.connectedNode:
e = Edge.Edge(self.lineNode, self.connectedNode)
self.lineNode.add(node)
self.lineNode.edges.append(e)
self.connectedNode.edges.append(e)
def move(self, p):
self.lineNode.move(p)
def add(self):
if self.graph.highlightNode and self.graph.selectedNode: # TODO: test if the nodes are equal
self.graph.selectedNode.add(self.graph.highlightNode)
self.delete()
else:
self.graph.nodes.append(self.lineNode)
def delete(self):
self.lineNode.deleteMe()
del self.lineNode