354 def Draw(self, dc): |
354 def Draw(self, dc): |
355 Graphic_Element.Draw(self, dc) |
355 Graphic_Element.Draw(self, dc) |
356 dc.SetPen(self.Pen) |
356 dc.SetPen(self.Pen) |
357 dc.SetBrush(wx.WHITE_BRUSH) |
357 dc.SetBrush(wx.WHITE_BRUSH) |
358 dc.SetTextForeground(self.Colour) |
358 dc.SetTextForeground(self.Colour) |
|
359 |
|
360 if getattr(dc, "printing", False): |
|
361 name_size = dc.GetTextExtent(self.Name) |
|
362 type_size = dc.GetTextExtent(self.Type) |
|
363 executionorder_size = dc.GetTextExtent(str(self.ExecutionOrder)) |
|
364 else: |
|
365 name_size = self.NameSize |
|
366 type_size = self.TypeSize |
|
367 executionorder_size = self.ExecutionOrderSize |
|
368 |
359 # Draw a rectangle with the block size |
369 # Draw a rectangle with the block size |
360 dc.DrawRectangle(self.Pos.x, self.Pos.y, self.Size[0] + 1, self.Size[1] + 1) |
370 dc.DrawRectangle(self.Pos.x, self.Pos.y, self.Size[0] + 1, self.Size[1] + 1) |
361 # Draw block name and block type |
371 # Draw block name and block type |
362 dc.DrawText(self.Name, self.Pos.x + (self.Size[0] - self.NameSize[0]) / 2, |
372 dc.DrawText(self.Name, self.Pos.x + (self.Size[0] - name_size[0]) / 2, |
363 self.Pos.y - (self.NameSize[1] + 2)) |
373 self.Pos.y - (name_size[1] + 2)) |
364 dc.DrawText(self.Type, self.Pos.x + (self.Size[0] - self.TypeSize[0]) / 2, |
374 dc.DrawText(self.Type, self.Pos.x + (self.Size[0] - type_size[0]) / 2, |
365 self.Pos.y + 5) |
375 self.Pos.y + 5) |
366 # Draw inputs and outputs connectors |
376 # Draw inputs and outputs connectors |
367 for input in self.Inputs: |
377 for input in self.Inputs: |
368 input.Draw(dc) |
378 input.Draw(dc) |
369 for output in self.Outputs: |
379 for output in self.Outputs: |
370 output.Draw(dc) |
380 output.Draw(dc) |
371 if self.ExecutionOrder != 0: |
381 if self.ExecutionOrder != 0: |
372 # Draw block execution order |
382 # Draw block execution order |
373 dc.DrawText(str(self.ExecutionOrder), self.Pos.x + self.Size[0] - self.ExecutionOrderSize[0], |
383 dc.DrawText(str(self.ExecutionOrder), self.Pos.x + self.Size[0] - executionorder_size[0], |
374 self.Pos.y + self.Size[1] + 2) |
384 self.Pos.y + self.Size[1] + 2) |
375 dc.SetTextForeground(wx.BLACK) |
385 dc.SetTextForeground(wx.BLACK) |
376 |
386 |
377 |
387 |
378 #------------------------------------------------------------------------------- |
388 #------------------------------------------------------------------------------- |
587 # Draws variable |
597 # Draws variable |
588 def Draw(self, dc): |
598 def Draw(self, dc): |
589 Graphic_Element.Draw(self, dc) |
599 Graphic_Element.Draw(self, dc) |
590 dc.SetPen(wx.BLACK_PEN) |
600 dc.SetPen(wx.BLACK_PEN) |
591 dc.SetBrush(wx.WHITE_BRUSH) |
601 dc.SetBrush(wx.WHITE_BRUSH) |
|
602 |
|
603 if getattr(dc, "printing", False): |
|
604 name_size = dc.GetTextExtent(self.Name) |
|
605 executionorder_size = dc.GetTextExtent(str(self.ExecutionOrder)) |
|
606 else: |
|
607 name_size = self.NameSize |
|
608 executionorder_size = self.ExecutionOrderSize |
|
609 |
592 # Draw a rectangle with the variable size |
610 # Draw a rectangle with the variable size |
593 dc.DrawRectangle(self.Pos.x, self.Pos.y, self.Size[0] + 1, self.Size[1] + 1) |
611 dc.DrawRectangle(self.Pos.x, self.Pos.y, self.Size[0] + 1, self.Size[1] + 1) |
594 # Draw variable name |
612 # Draw variable name |
595 dc.DrawText(self.Name, self.Pos.x + (self.Size[0] - self.NameSize[0]) / 2, |
613 dc.DrawText(self.Name, self.Pos.x + (self.Size[0] - name_size[0]) / 2, |
596 self.Pos.y + (self.Size[1] - self.NameSize[1]) / 2) |
614 self.Pos.y + (self.Size[1] - name_size[1]) / 2) |
597 # Draw connectors |
615 # Draw connectors |
598 if self.Input: |
616 if self.Input: |
599 self.Input.Draw(dc) |
617 self.Input.Draw(dc) |
600 if self.Output: |
618 if self.Output: |
601 self.Output.Draw(dc) |
619 self.Output.Draw(dc) |
602 if self.ExecutionOrder != 0: |
620 if self.ExecutionOrder != 0: |
603 # Draw variable execution order |
621 # Draw variable execution order |
604 dc.DrawText(str(self.ExecutionOrder), self.Pos.x + self.Size[0] - self.ExecutionOrderSize[0], |
622 dc.DrawText(str(self.ExecutionOrder), self.Pos.x + self.Size[0] - executionorder_size[0], |
605 self.Pos.y + self.Size[1] + 2) |
623 self.Pos.y + self.Size[1] + 2) |
606 |
624 |
607 |
625 |
608 #------------------------------------------------------------------------------- |
626 #------------------------------------------------------------------------------- |
609 # Function Block Diagram Connector |
627 # Function Block Diagram Connector |
759 # Draws connection |
777 # Draws connection |
760 def Draw(self, dc): |
778 def Draw(self, dc): |
761 Graphic_Element.Draw(self, dc) |
779 Graphic_Element.Draw(self, dc) |
762 dc.SetPen(wx.BLACK_PEN) |
780 dc.SetPen(wx.BLACK_PEN) |
763 dc.SetBrush(wx.WHITE_BRUSH) |
781 dc.SetBrush(wx.WHITE_BRUSH) |
|
782 |
|
783 if getattr(dc, "printing", False): |
|
784 name_size = dc.GetTextExtent(self.Name) |
|
785 else: |
|
786 name_size = self.NameSize |
|
787 |
764 # Draw a rectangle with the connection size with arrows in |
788 # Draw a rectangle with the connection size with arrows in |
765 dc.DrawRectangle(self.Pos.x, self.Pos.y, self.Size[0] + 1, self.Size[1] + 1) |
789 dc.DrawRectangle(self.Pos.x, self.Pos.y, self.Size[0] + 1, self.Size[1] + 1) |
766 arrowsize = min(self.Size[1] / 2, (self.Size[0] - self.NameSize[0] - 10) / 2) |
790 arrowsize = min(self.Size[1] / 2, (self.Size[0] - name_size[0] - 10) / 2) |
767 dc.DrawLine(self.Pos.x, self.Pos.y, self.Pos.x + arrowsize, |
791 dc.DrawLine(self.Pos.x, self.Pos.y, self.Pos.x + arrowsize, |
768 self.Pos.y + self.Size[1] / 2) |
792 self.Pos.y + self.Size[1] / 2) |
769 dc.DrawLine(self.Pos.x + arrowsize, self.Pos.y + self.Size[1] / 2, |
793 dc.DrawLine(self.Pos.x + arrowsize, self.Pos.y + self.Size[1] / 2, |
770 self.Pos.x, self.Pos.y + self.Size[1]) |
794 self.Pos.x, self.Pos.y + self.Size[1]) |
771 dc.DrawLine(self.Pos.x + self.Size[0] - arrowsize, self.Pos.y, |
795 dc.DrawLine(self.Pos.x + self.Size[0] - arrowsize, self.Pos.y, |
772 self.Pos.x + self.Size[0], self.Pos.y + self.Size[1] / 2) |
796 self.Pos.x + self.Size[0], self.Pos.y + self.Size[1] / 2) |
773 dc.DrawLine(self.Pos.x + self.Size[0], self.Pos.y + self.Size[1] / 2, |
797 dc.DrawLine(self.Pos.x + self.Size[0], self.Pos.y + self.Size[1] / 2, |
774 self.Pos.x + self.Size[0] - arrowsize, self.Pos.y + self.Size[1]) |
798 self.Pos.x + self.Size[0] - arrowsize, self.Pos.y + self.Size[1]) |
775 # Draw connection name |
799 # Draw connection name |
776 dc.DrawText(self.Name, self.Pos.x + (self.Size[0] - self.NameSize[0]) / 2, |
800 dc.DrawText(self.Name, self.Pos.x + (self.Size[0] - name_size[0]) / 2, |
777 self.Pos.y + (self.Size[1] - self.NameSize[1]) / 2) |
801 self.Pos.y + (self.Size[1] - name_size[1]) / 2) |
778 # Draw connector |
802 # Draw connector |
779 if self.Connector: |
803 if self.Connector: |
780 self.Connector.Draw(dc) |
804 self.Connector.Draw(dc) |
781 |
805 |