75 elif self.Mode in [MODE_BLOCK,MODE_VARIABLE,MODE_CONNECTION,MODE_COMMENT]: |
75 elif self.Mode in [MODE_BLOCK,MODE_VARIABLE,MODE_CONNECTION,MODE_COMMENT]: |
76 self.rubberBand.Reset() |
76 self.rubberBand.Reset() |
77 self.rubberBand.OnLeftDown(event, self.Scaling) |
77 self.rubberBand.OnLeftDown(event, self.Scaling) |
78 elif self.Mode == MODE_WIRE: |
78 elif self.Mode == MODE_WIRE: |
79 pos = GetScaledEventPosition(event, self.Scaling) |
79 pos = GetScaledEventPosition(event, self.Scaling) |
80 wire = Wire(self, [wxPoint(pos.x, pos.y), EAST], [wxPoint(pos.x, pos.y), WEST]) |
80 connector = self.FindBlockConnector(pos) |
81 wire.oldPos = pos |
81 if connector: |
82 wire.Handle = (HANDLE_POINT, 0) |
82 if (connector.GetDirection() == EAST): |
83 wire.ProcessDragging(0, 0) |
83 wire = Wire(self, [wxPoint(pos.x, pos.y), EAST], [wxPoint(pos.x, pos.y), WEST]) |
84 wire.Handle = (HANDLE_POINT, 1) |
84 else: |
85 self.Wires.append(wire) |
85 wire = Wire(self, [wxPoint(pos.x, pos.y), WEST], [wxPoint(pos.x, pos.y), EAST]) |
86 self.Elements.append(wire) |
86 wire.oldPos = pos |
87 if self.SelectedElement: |
87 wire.Handle = (HANDLE_POINT, 0) |
|
88 wire.ProcessDragging(0, 0) |
|
89 wire.Handle = (HANDLE_POINT, 1) |
|
90 self.Wires.append(wire) |
|
91 self.Elements.append(wire) |
|
92 if self.SelectedElement: |
|
93 self.SelectedElement.SetSelected(False) |
|
94 self.SelectedElement = wire |
|
95 elif self.SelectedElement: |
88 self.SelectedElement.SetSelected(False) |
96 self.SelectedElement.SetSelected(False) |
89 self.SelectedElement = wire |
97 self.SelectedElement = None |
90 self.Refresh() |
98 self.Refresh() |
91 event.Skip() |
99 event.Skip() |
92 |
100 |
93 def OnViewerLeftUp(self, event): |
101 def OnViewerLeftUp(self, event): |
94 if self.rubberBand.IsShown(): |
102 if self.rubberBand.IsShown(): |
120 self.SelectedElement.OnLeftUp(event, self.Scaling) |
128 self.SelectedElement.OnLeftUp(event, self.Scaling) |
121 wxCallAfter(self.SetCursor, wxNullCursor) |
129 wxCallAfter(self.SetCursor, wxNullCursor) |
122 self.ReleaseMouse() |
130 self.ReleaseMouse() |
123 self.Refresh() |
131 self.Refresh() |
124 elif self.Mode == MODE_WIRE and self.SelectedElement: |
132 elif self.Mode == MODE_WIRE and self.SelectedElement: |
125 self.SelectedElement.ResetPoints() |
133 pos = GetScaledEventPosition(event, self.Scaling) |
126 self.SelectedElement.OnMotion(event, self.Scaling) |
134 connector = self.FindBlockConnector(pos, False) |
127 self.SelectedElement.GeneratePoints() |
135 if connector and connector != self.SelectedElement.StartConnected: |
128 self.SelectedElement.RefreshModel() |
136 self.SelectedElement.ResetPoints() |
129 self.SelectedElement.SetSelected(True) |
137 self.SelectedElement.OnMotion(event, self.Scaling) |
130 self.Refresh() |
138 self.SelectedElement.GeneratePoints() |
|
139 self.SelectedElement.RefreshModel() |
|
140 self.SelectedElement.SetSelected(True) |
|
141 else: |
|
142 self.SelectedElement.Delete() |
|
143 self.SelectedElement = None |
|
144 self.Refresh() |
|
145 if not self.SavedMode: |
|
146 wxCallAfter(self.Parent.ResetCurrentMode) |
131 event.Skip() |
147 event.Skip() |
132 |
148 |
133 def OnViewerRightUp(self, event): |
149 def OnViewerRightUp(self, event): |
134 pos = event.GetPosition() |
150 pos = event.GetPosition() |
135 element = self.FindElement(pos) |
151 element = self.FindElement(pos) |
155 self.rubberBand.OnMotion(event, self.Scaling) |
171 self.rubberBand.OnMotion(event, self.Scaling) |
156 elif self.Mode == MODE_SELECTION and self.SelectedElement: |
172 elif self.Mode == MODE_SELECTION and self.SelectedElement: |
157 self.SelectedElement.OnMotion(event, self.Scaling) |
173 self.SelectedElement.OnMotion(event, self.Scaling) |
158 self.Refresh() |
174 self.Refresh() |
159 elif self.Mode == MODE_WIRE and self.SelectedElement: |
175 elif self.Mode == MODE_WIRE and self.SelectedElement: |
160 self.SelectedElement.ResetPoints() |
176 pos = GetScaledEventPosition(event, self.Scaling) |
161 self.SelectedElement.OnMotion(event, self.Scaling) |
177 connector = self.FindBlockConnector(pos, False) |
162 self.SelectedElement.GeneratePoints() |
178 if not connector or self.SelectedElement.EndConnected == None: |
163 self.Refresh() |
179 self.SelectedElement.ResetPoints() |
|
180 self.SelectedElement.OnMotion(event, self.Scaling) |
|
181 self.SelectedElement.GeneratePoints() |
|
182 self.Refresh() |
164 event.Skip() |
183 event.Skip() |
165 |
184 |
166 #------------------------------------------------------------------------------- |
185 #------------------------------------------------------------------------------- |
167 # Keyboard event functions |
186 # Keyboard event functions |
168 #------------------------------------------------------------------------------- |
187 #------------------------------------------------------------------------------- |
207 block.SetSize(values["width"], values["height"]) |
226 block.SetSize(values["width"], values["height"]) |
208 self.Blocks.append(block) |
227 self.Blocks.append(block) |
209 self.Elements.append(block) |
228 self.Elements.append(block) |
210 self.Controler.AddCurrentElementEditingBlock(id) |
229 self.Controler.AddCurrentElementEditingBlock(id) |
211 self.RefreshBlockModel(block) |
230 self.RefreshBlockModel(block) |
212 self.Parent.RefreshProjectTree() |
|
213 self.Refresh() |
231 self.Refresh() |
214 dialog.Destroy() |
232 dialog.Destroy() |
215 |
233 |
216 def AddNewVariable(self, bbox): |
234 def AddNewVariable(self, bbox): |
217 dialog = VariablePropertiesDialog(self.Parent) |
235 dialog = VariablePropertiesDialog(self.Parent) |
233 variable.SetSize(values["width"], values["height"]) |
251 variable.SetSize(values["width"], values["height"]) |
234 self.Blocks.append(variable) |
252 self.Blocks.append(variable) |
235 self.Elements.append(variable) |
253 self.Elements.append(variable) |
236 self.Controler.AddCurrentElementEditingVariable(id, values["type"]) |
254 self.Controler.AddCurrentElementEditingVariable(id, values["type"]) |
237 self.RefreshVariableModel(variable) |
255 self.RefreshVariableModel(variable) |
238 self.Parent.RefreshProjectTree() |
|
239 self.Refresh() |
256 self.Refresh() |
240 dialog.Destroy() |
257 dialog.Destroy() |
241 |
258 |
242 def AddNewConnection(self, bbox): |
259 def AddNewConnection(self, bbox): |
243 dialog = ConnectionPropertiesDialog(self.Parent) |
260 dialog = ConnectionPropertiesDialog(self.Parent) |
250 connection.SetSize(values["width"], values["height"]) |
267 connection.SetSize(values["width"], values["height"]) |
251 self.Blocks.append(connection) |
268 self.Blocks.append(connection) |
252 self.Elements.append(connection) |
269 self.Elements.append(connection) |
253 self.Controler.AddCurrentElementEditingConnection(id, values["type"]) |
270 self.Controler.AddCurrentElementEditingConnection(id, values["type"]) |
254 self.RefreshConnectionModel(connection) |
271 self.RefreshConnectionModel(connection) |
255 self.Parent.RefreshProjectTree() |
|
256 self.Refresh() |
272 self.Refresh() |
257 dialog.Destroy() |
273 dialog.Destroy() |
258 |
274 |
259 def AddNewComment(self, bbox): |
275 def AddNewComment(self, bbox): |
260 dialog = wxTextEntryDialog(self.Parent, "Add a new comment", "Please enter comment text", "", wxOK|wxCANCEL|wxTE_MULTILINE) |
276 dialog = wxTextEntryDialog(self.Parent, "Add a new comment", "Please enter comment text", "", wxOK|wxCANCEL|wxTE_MULTILINE) |
283 self.Blocks.remove(block) |
299 self.Blocks.remove(block) |
284 self.Elements.remove(block) |
300 self.Elements.remove(block) |
285 self.Controler.RemoveCurrentElementEditingInstance(block.GetId()) |
301 self.Controler.RemoveCurrentElementEditingInstance(block.GetId()) |
286 for wire in wires: |
302 for wire in wires: |
287 wire.RefreshModel() |
303 wire.RefreshModel() |
288 self.Parent.RefreshProjectTree() |
|
289 |
304 |
290 def DeleteVariable(self, variable): |
305 def DeleteVariable(self, variable): |
291 wires = [] |
306 wires = [] |
292 if self.SelectedElement.GetType() == INPUT: |
307 if variable.GetType() == INPUT: |
293 connector = variable.GetConnector() |
308 connector = variable.GetConnector() |
294 wires.extend([wire[0] for wire in connector.GetWires()]) |
309 wires.extend([wire[0] for wire in connector.GetWires()]) |
295 variable.Clean() |
310 variable.Clean() |
296 self.Blocks.remove(variable) |
311 self.Blocks.remove(variable) |
297 self.Elements.remove(variable) |
312 self.Elements.remove(variable) |
298 self.Controler.RemoveCurrentElementEditingInstance(variable.GetId()) |
313 self.Controler.RemoveCurrentElementEditingInstance(variable.GetId()) |
299 for wire in wires: |
314 for wire in wires: |
300 wire.RefreshModel() |
315 wire.RefreshModel() |
301 self.Parent.RefreshProjectTree() |
|
302 |
316 |
303 def DeleteConnection(self, connection): |
317 def DeleteConnection(self, connection): |
304 wires = [] |
318 wires = [] |
305 if self.SelectedElement.GetType() == CONTINUATION: |
319 if connection.GetType() == CONTINUATION: |
306 connector = connection.GetConnector() |
320 connector = connection.GetConnector() |
307 wires.extend([wire[0] for wire in connector.GetWires()]) |
321 wires.extend([wire[0] for wire in connector.GetWires()]) |
308 connection.Clean() |
322 connection.Clean() |
309 self.Blocks.remove(connection) |
323 self.Blocks.remove(connection) |
310 self.Elements.remove(connection) |
324 self.Elements.remove(connection) |
311 self.Controler.RemoveCurrentElementEditingInstance(connection.GetId()) |
325 self.Controler.RemoveCurrentElementEditingInstance(connection.GetId()) |
312 for wire in wires: |
326 for wire in wires: |
313 wire.RefreshModel() |
327 wire.RefreshModel() |
314 self.Parent.RefreshProjectTree() |
|
315 |
328 |
316 def DeleteComment(self, comment): |
329 def DeleteComment(self, comment): |
317 self.Elements.remove(comment) |
330 self.Elements.remove(comment) |
318 self.Controler.RemoveCurrentElementEditingInstance(comment.GetId()) |
331 self.Controler.RemoveCurrentElementEditingInstance(comment.GetId()) |
319 |
332 |
320 def DeleteWire(self, wire): |
333 def DeleteWire(self, wire): |
321 connected = wire.GetConnected() |
334 connected = wire.GetConnected() |
322 self.SelectedElement.Clean() |
335 wire.Clean() |
323 self.Wires.remove(wire) |
336 self.Wires.remove(wire) |
324 self.Elements.remove(wire) |
337 self.Elements.remove(wire) |
325 for connector in connected: |
338 for connector in connected: |
326 connector.RefreshParentBlock() |
339 connector.RefreshParentBlock() |
327 |
340 |
341 if "name" in values: |
354 if "name" in values: |
342 block.SetName(values["name"]) |
355 block.SetName(values["name"]) |
343 block.SetExtension(values["extension"]) |
356 block.SetExtension(values["extension"]) |
344 block.SetSize(values["width"], values["height"]) |
357 block.SetSize(values["width"], values["height"]) |
345 block.SetType(values["type"]) |
358 block.SetType(values["type"]) |
|
359 self.RefreshBlockModel(block) |
|
360 self.Refresh() |
|
361 dialog.Destroy() |
|
362 |
|
363 def EditVariableContent(self, variable): |
|
364 dialog = VariablePropertiesDialog(self.Parent) |
|
365 dialog.SetMinVariableSize(variable.GetSize()) |
|
366 varlist = [] |
|
367 vars = self.Controler.GetCurrentElementEditingInterfaceVars() |
|
368 if vars: |
|
369 for var in vars: |
|
370 varlist.append((var["Name"], var["Class"], var["Type"])) |
|
371 returntype = self.Controler.GetCurrentElementEditingInterfaceReturnType() |
|
372 if returntype: |
|
373 varlist.append((self.Controler.GetCurrentElementEditingName(), "Output", returntype)) |
|
374 dialog.SetVariables(varlist) |
|
375 values = {"name" : variable.GetName(), "type" : variable.GetType()} |
|
376 dialog.SetValues(values) |
|
377 if dialog.ShowModal() == wxID_OK: |
|
378 old_type = variable.GetType() |
|
379 values = dialog.GetValues() |
|
380 variable.SetName(values["name"]) |
|
381 variable.SetType(values["type"], values["value_type"]) |
|
382 variable.SetSize(values["width"], values["height"]) |
|
383 if old_type != values["type"]: |
|
384 id = variable.GetId() |
|
385 self.Controler.RemoveCurrentElementEditingInstance(id) |
|
386 self.Controler.AddCurrentElementEditingVariable(id, values["type"]) |
|
387 self.RefreshVariableModel(variable) |
346 self.Refresh() |
388 self.Refresh() |
347 dialog.Destroy() |
389 dialog.Destroy() |
348 |
390 |
349 #------------------------------------------------------------------------------- |
391 #------------------------------------------------------------------------------- |
350 # Create New Block Dialog |
392 # Create New Block Dialog |
657 self.MinVariableSize = size |
699 self.MinVariableSize = size |
658 |
700 |
659 def SetVariables(self, vars): |
701 def SetVariables(self, vars): |
660 self.VarList = vars |
702 self.VarList = vars |
661 self.RefreshNameList() |
703 self.RefreshNameList() |
|
704 |
|
705 def SetValues(self, values): |
|
706 for name, value in values.items(): |
|
707 if name == "type": |
|
708 if value == INPUT: |
|
709 self.Class.SetStringSelection("Input") |
|
710 if value == OUTPUT: |
|
711 self.Class.SetStringSelection("Output") |
|
712 if value == INOUT: |
|
713 self.Class.SetStringSelection("InOut") |
|
714 elif name == "name": |
|
715 self.Name.SetStringSelection(value) |
|
716 self.RefreshPreview() |
662 |
717 |
663 def GetValues(self): |
718 def GetValues(self): |
664 values = {} |
719 values = {} |
665 classtype = self.Class.GetStringSelection() |
720 classtype = self.Class.GetStringSelection() |
666 if classtype == "Input": |
721 if classtype == "Input": |