24 |
24 |
25 |
25 |
26 from __future__ import absolute_import |
26 from __future__ import absolute_import |
27 from __future__ import division |
27 from __future__ import division |
28 from math import * |
28 from math import * |
29 from types import * |
29 from six import string_types |
30 from six.moves import xrange |
30 from six.moves import xrange |
31 |
31 |
32 import wx |
32 import wx |
33 from graphics.ToolTipProducer import ToolTipProducer |
33 from graphics.ToolTipProducer import ToolTipProducer |
34 from graphics.DebugDataConsumer import DebugDataConsumer |
34 from graphics.DebugDataConsumer import DebugDataConsumer |
1079 height = CONNECTOR_SIZE |
1079 height = CONNECTOR_SIZE |
1080 if self.Edge == "rising" and self.Direction[1] == 1: |
1080 if self.Edge == "rising" and self.Direction[1] == 1: |
1081 y -= 5 |
1081 y -= 5 |
1082 height += 5 |
1082 height += 5 |
1083 rect = wx.Rect(x - abs(movex), y - abs(movey), width + 2 * abs(movex), height + 2 * abs(movey)) |
1083 rect = wx.Rect(x - abs(movex), y - abs(movey), width + 2 * abs(movex), height + 2 * abs(movey)) |
1084 if self.ValueSize is None and isinstance(self.ComputedValue, (StringType, UnicodeType)): |
1084 if self.ValueSize is None and isinstance(self.ComputedValue, string_types): |
1085 self.ValueSize = self.ParentBlock.Parent.GetMiniTextExtent(self.ComputedValue) |
1085 self.ValueSize = self.ParentBlock.Parent.GetMiniTextExtent(self.ComputedValue) |
1086 if self.ValueSize is not None: |
1086 if self.ValueSize is not None: |
1087 width, height = self.ValueSize |
1087 width, height = self.ValueSize |
1088 rect = rect.Union( |
1088 rect = rect.Union( |
1089 wx.Rect( |
1089 wx.Rect( |
1161 self.Forced = forced |
1161 self.Forced = forced |
1162 if self.Visible: |
1162 if self.Visible: |
1163 self.Parent.ElementNeedRefresh(self) |
1163 self.Parent.ElementNeedRefresh(self) |
1164 |
1164 |
1165 def GetComputedValue(self): |
1165 def GetComputedValue(self): |
1166 if self.Value is not None and self.Value != "undefined" and not isinstance(self.Value, BooleanType): |
1166 if self.Value is not None and self.Value != "undefined" and not isinstance(self.Value, bool): |
1167 return self.Value |
1167 return self.Value |
1168 return None |
1168 return None |
1169 |
1169 |
1170 def GetToolTipValue(self): |
1170 def GetToolTipValue(self): |
1171 return self.GetComputedValue() |
1171 return self.GetComputedValue() |
1198 |
1198 |
1199 def ReceivingCurrent(self): |
1199 def ReceivingCurrent(self): |
1200 current = False |
1200 current = False |
1201 for wire, _handle in self.Wires: |
1201 for wire, _handle in self.Wires: |
1202 value = wire.GetValue() |
1202 value = wire.GetValue() |
1203 if current != "undefined" and isinstance(value, BooleanType): |
1203 if current != "undefined" and isinstance(value, bool): |
1204 current |= wire.GetValue() |
1204 current |= wire.GetValue() |
1205 elif value == "undefined": |
1205 elif value == "undefined": |
1206 current = "undefined" |
1206 current = "undefined" |
1207 return current |
1207 return current |
1208 |
1208 |
1470 # dc.SetPen(MiterPen(self.Highlights[-1][1])) |
1470 # dc.SetPen(MiterPen(self.Highlights[-1][1])) |
1471 # dc.SetBrush(wx.Brush(self.Highlights[-1][0])) |
1471 # dc.SetBrush(wx.Brush(self.Highlights[-1][0])) |
1472 else: |
1472 else: |
1473 if not self.Valid: |
1473 if not self.Valid: |
1474 dc.SetPen(MiterPen(wx.RED)) |
1474 dc.SetPen(MiterPen(wx.RED)) |
1475 elif isinstance(self.Value, BooleanType) and self.Value: |
1475 elif isinstance(self.Value, bool) and self.Value: |
1476 if self.Forced: |
1476 if self.Forced: |
1477 dc.SetPen(MiterPen(wx.CYAN)) |
1477 dc.SetPen(MiterPen(wx.CYAN)) |
1478 else: |
1478 else: |
1479 dc.SetPen(MiterPen(wx.GREEN)) |
1479 dc.SetPen(MiterPen(wx.GREEN)) |
1480 elif self.Value == "undefined": |
1480 elif self.Value == "undefined": |
1534 # Draw the text |
1534 # Draw the text |
1535 dc.DrawText(self.Name, xtext, ytext) |
1535 dc.DrawText(self.Name, xtext, ytext) |
1536 if not getattr(dc, "printing", False): |
1536 if not getattr(dc, "printing", False): |
1537 DrawHighlightedText(dc, self.Name, self.Highlights, xtext, ytext) |
1537 DrawHighlightedText(dc, self.Name, self.Highlights, xtext, ytext) |
1538 |
1538 |
1539 if self.Value is not None and not isinstance(self.Value, BooleanType) and self.Value != "undefined": |
1539 if self.Value is not None and not isinstance(self.Value, bool) and self.Value != "undefined": |
1540 dc.SetFont(self.ParentBlock.Parent.GetMiniFont()) |
1540 dc.SetFont(self.ParentBlock.Parent.GetMiniFont()) |
1541 dc.SetTextForeground(wx.NamedColour("purple")) |
1541 dc.SetTextForeground(wx.NamedColour("purple")) |
1542 if self.ValueSize is None and isinstance(self.ComputedValue, (StringType, UnicodeType)): |
1542 if self.ValueSize is None and isinstance(self.ComputedValue, string_types): |
1543 self.ValueSize = self.ParentBlock.Parent.GetMiniTextExtent(self.ComputedValue) |
1543 self.ValueSize = self.ParentBlock.Parent.GetMiniTextExtent(self.ComputedValue) |
1544 if self.ValueSize is not None: |
1544 if self.ValueSize is not None: |
1545 width, height = self.ValueSize |
1545 width, height = self.ValueSize |
1546 dc.DrawText(self.ComputedValue, |
1546 dc.DrawText(self.ComputedValue, |
1547 parent_pos[0] + self.Pos.x + CONNECTOR_SIZE * self.Direction[0] + |
1547 parent_pos[0] + self.Pos.x + CONNECTOR_SIZE * self.Direction[0] + |
1605 rect = Graphic_Element.GetRedrawRect(self, movex, movey) |
1605 rect = Graphic_Element.GetRedrawRect(self, movex, movey) |
1606 if self.StartConnected: |
1606 if self.StartConnected: |
1607 rect = rect.Union(self.StartConnected.GetRedrawRect(movex, movey)) |
1607 rect = rect.Union(self.StartConnected.GetRedrawRect(movex, movey)) |
1608 if self.EndConnected: |
1608 if self.EndConnected: |
1609 rect = rect.Union(self.EndConnected.GetRedrawRect(movex, movey)) |
1609 rect = rect.Union(self.EndConnected.GetRedrawRect(movex, movey)) |
1610 if self.ValueSize is None and isinstance(self.ComputedValue, (StringType, UnicodeType)): |
1610 if self.ValueSize is None and isinstance(self.ComputedValue, string_types): |
1611 self.ValueSize = self.Parent.GetMiniTextExtent(self.ComputedValue) |
1611 self.ValueSize = self.Parent.GetMiniTextExtent(self.ComputedValue) |
1612 if self.ValueSize is not None: |
1612 if self.ValueSize is not None: |
1613 width, height = self.ValueSize |
1613 width, height = self.ValueSize |
1614 if self.BoundingBox[2] > width * 4 or self.BoundingBox[3] > height * 4: |
1614 if self.BoundingBox[2] > width * 4 or self.BoundingBox[3] > height * 4: |
1615 x = self.Points[0].x + width * self.StartPoint[1][0] // 2 |
1615 x = self.Points[0].x + width * self.StartPoint[1][0] // 2 |
1754 self.EndConnected.RefreshForced() |
1754 self.EndConnected.RefreshForced() |
1755 if self.Visible: |
1755 if self.Visible: |
1756 self.Parent.ElementNeedRefresh(self) |
1756 self.Parent.ElementNeedRefresh(self) |
1757 |
1757 |
1758 def GetComputedValue(self): |
1758 def GetComputedValue(self): |
1759 if self.Value is not None and self.Value != "undefined" and not isinstance(self.Value, BooleanType): |
1759 if self.Value is not None and self.Value != "undefined" and not isinstance(self.Value, bool): |
1760 return self.Value |
1760 return self.Value |
1761 return None |
1761 return None |
1762 |
1762 |
1763 def GetToolTipValue(self): |
1763 def GetToolTipValue(self): |
1764 return self.GetComputedValue() |
1764 return self.GetComputedValue() |
1786 self.StartConnected.RefreshValue() |
1786 self.StartConnected.RefreshValue() |
1787 if self.EndConnected: |
1787 if self.EndConnected: |
1788 self.EndConnected.RefreshValue() |
1788 self.EndConnected.RefreshValue() |
1789 if self.Visible: |
1789 if self.Visible: |
1790 self.Parent.ElementNeedRefresh(self) |
1790 self.Parent.ElementNeedRefresh(self) |
1791 if isinstance(value, BooleanType) and self.StartConnected is not None: |
1791 if isinstance(value, bool) and self.StartConnected is not None: |
1792 block = self.StartConnected.GetParentBlock() |
1792 block = self.StartConnected.GetParentBlock() |
1793 block.SpreadCurrent() |
1793 block.SpreadCurrent() |
1794 |
1794 |
1795 # Unconnect the start and end points |
1795 # Unconnect the start and end points |
1796 def Clean(self): |
1796 def Clean(self): |
2679 def Draw(self, dc): |
2679 def Draw(self, dc): |
2680 Graphic_Element.Draw(self, dc) |
2680 Graphic_Element.Draw(self, dc) |
2681 if not self.Valid: |
2681 if not self.Valid: |
2682 dc.SetPen(MiterPen(wx.RED)) |
2682 dc.SetPen(MiterPen(wx.RED)) |
2683 dc.SetBrush(wx.RED_BRUSH) |
2683 dc.SetBrush(wx.RED_BRUSH) |
2684 elif isinstance(self.Value, BooleanType) and self.Value: |
2684 elif isinstance(self.Value, bool) and self.Value: |
2685 if self.Forced: |
2685 if self.Forced: |
2686 dc.SetPen(MiterPen(wx.CYAN)) |
2686 dc.SetPen(MiterPen(wx.CYAN)) |
2687 dc.SetBrush(wx.CYAN_BRUSH) |
2687 dc.SetBrush(wx.CYAN_BRUSH) |
2688 else: |
2688 else: |
2689 dc.SetPen(MiterPen(wx.GREEN)) |
2689 dc.SetPen(MiterPen(wx.GREEN)) |
2717 end = 0 |
2717 end = 0 |
2718 else: |
2718 else: |
2719 end = 1 |
2719 end = 1 |
2720 dc.DrawLine(self.Points[self.SelectedSegment].x - 1, self.Points[self.SelectedSegment].y, |
2720 dc.DrawLine(self.Points[self.SelectedSegment].x - 1, self.Points[self.SelectedSegment].y, |
2721 self.Points[self.SelectedSegment + 1].x + end, self.Points[self.SelectedSegment + 1].y) |
2721 self.Points[self.SelectedSegment + 1].x + end, self.Points[self.SelectedSegment + 1].y) |
2722 if self.Value is not None and not isinstance(self.Value, BooleanType) and self.Value != "undefined": |
2722 if self.Value is not None and not isinstance(self.Value, bool) and self.Value != "undefined": |
2723 dc.SetFont(self.Parent.GetMiniFont()) |
2723 dc.SetFont(self.Parent.GetMiniFont()) |
2724 dc.SetTextForeground(wx.NamedColour("purple")) |
2724 dc.SetTextForeground(wx.NamedColour("purple")) |
2725 if self.ValueSize is None and isinstance(self.ComputedValue, (StringType, UnicodeType)): |
2725 if self.ValueSize is None and isinstance(self.ComputedValue, string_types): |
2726 self.ValueSize = self.Parent.GetMiniTextExtent(self.ComputedValue) |
2726 self.ValueSize = self.Parent.GetMiniTextExtent(self.ComputedValue) |
2727 if self.ValueSize is not None: |
2727 if self.ValueSize is not None: |
2728 width, height = self.ValueSize |
2728 width, height = self.ValueSize |
2729 if self.BoundingBox[2] > width * 4 or self.BoundingBox[3] > height * 4: |
2729 if self.BoundingBox[2] > width * 4 or self.BoundingBox[3] > height * 4: |
2730 x = self.Points[0].x + width * (self.StartPoint[1][0] - 1) // 2 |
2730 x = self.Points[0].x + width * (self.StartPoint[1][0] - 1) // 2 |