--- a/graphics/GraphicCommons.py Sun Sep 07 15:27:53 2008 +0200
+++ b/graphics/GraphicCommons.py Sun Sep 07 15:29:12 2008 +0200
@@ -976,8 +976,10 @@
current = False
for wire, handle in self.Wires:
value = wire.GetValue()
- if isinstance(value, BooleanType):
+ if current != "undefined" and isinstance(value, BooleanType):
current |= wire.GetValue()
+ elif value == "undefined":
+ current = "undefined"
return current
def SpreadCurrent(self, spreading):
@@ -1195,6 +1197,8 @@
dc.SetPen(wx.RED_PEN)
elif isinstance(self.Value, BooleanType) and self.Value:
dc.SetPen(wx.GREEN_PEN)
+ elif self.Value == "undefined":
+ dc.SetPen(wx.Pen(wx.NamedColour("orange")))
else:
dc.SetPen(self.Pen)
dc.SetBrush(wx.WHITE_BRUSH)
@@ -1271,11 +1275,11 @@
self.Valid = True
self.Value = None
self.ValueSize = None
+ self.ComputedValue = None
self.OverStart = False
self.OverEnd = False
self.ComputingType = False
- parent_font = parent.GetFont()
- self.Font = wx.Font(parent_font.GetPointSize() * 0.75, wx.SWISS, wx.NORMAL, wx.NORMAL, faceName = parent_font.GetFaceName())
+ self.Font = parent.GetMiniFont()
def Flush(self):
self.StartConnected = None
@@ -1376,19 +1380,19 @@
return False
def SetValue(self, value):
- if value is not None and not isinstance(value, BooleanType):
- if isinstance(value, StringType):
- value = "\"%s\""%value
- else:
- value = str(value)
- if len(value) > 4:
- value = value[:4] + "_"
if self.Value != value:
self.Value = value
- if isinstance(self.Value, StringType):
+ if value is not None and not isinstance(value, BooleanType):
+ if isinstance(value, StringType):
+ self.ComputedValue = "\"%s\""%value
+ else:
+ self.ComputedValue = str(value)
+ if len(self.ComputedValue) > 4:
+ self.ComputedValue = self.ComputedValue[:4] + "..."
+ if isinstance(self.ComputedValue, StringType):
dc = wx.ClientDC(self.Parent)
dc.SetFont(self.Font)
- self.ValueSize = dc.GetTextExtent(self.Value)
+ self.ValueSize = dc.GetTextExtent(self.ComputedValue)
else:
self.ValueSize = None
if self.StartConnected:
@@ -2183,6 +2187,8 @@
dc.SetPen(wx.RED_PEN)
elif isinstance(self.Value, BooleanType) and self.Value:
dc.SetPen(wx.GREEN_PEN)
+ elif self.Value == "undefined":
+ dc.SetPen(wx.Pen(wx.NamedColour("orange")))
else:
dc.SetPen(wx.BLACK_PEN)
dc.SetBrush(wx.BLACK_BRUSH)
@@ -2201,22 +2207,22 @@
self.Points[self.SelectedSegment + 1].x, self.Points[self.SelectedSegment + 1].y)
if self.SelectedSegment == len(self.Segments) - 1:
dc.DrawPoint(self.Points[-1].x, self.Points[-1].y)
- if self.Value is not None and not isinstance(self.Value, BooleanType):
+ if self.Value is not None and not isinstance(self.Value, BooleanType) and self.Value != "undefined":
dc.SetFont(self.Font)
dc.SetTextForeground(wx.NamedColour("purple"))
width, height = self.ValueSize
if self.BoundingBox[2] > width * 4 or self.BoundingBox[3] > height * 4:
- x = self.Points[0].x + width * self.StartPoint[1][0] / 2
+ x = self.Points[0].x + width * (self.StartPoint[1][0] - 1) / 2
y = self.Points[0].y + height * (self.StartPoint[1][1] - 1) / 2
- dc.DrawText(self.Value, x, y)
- x = self.Points[-1].x + width * self.EndPoint[1][0] / 2
+ dc.DrawText(self.ComputedValue, x, y)
+ x = self.Points[-1].x + width * (self.EndPoint[1][0] - 1) / 2
y = self.Points[-1].y + height * (self.EndPoint[1][1] - 1) / 2
- dc.DrawText(self.Value, x, y)
+ dc.DrawText(self.ComputedValue, x, y)
else:
middle = len(self.Segments) / 2 + len(self.Segments) % 2 - 1
x = (self.Points[middle].x + self.Points[middle + 1].x - width) / 2
y = (self.Points[middle].y + self.Points[middle + 1].y - height) / 2
- dc.DrawText(self.Value, x, y)
+ dc.DrawText(self.ComputedValue, x, y)
dc.SetFont(self.Parent.GetFont())
dc.SetTextForeground(wx.BLACK)