--- a/graphics/GraphicCommons.py Tue Dec 08 16:29:16 2009 +0100
+++ b/graphics/GraphicCommons.py Tue Dec 08 17:10:30 2009 +0100
@@ -192,7 +192,7 @@
def Inhibit(self, inhibit):
self.Inhibited = inhibit
if not inhibit and self.LastValue is not None:
- self.Forced = self.LastForced
+ self.SetForced(self.LastForced)
self.SetValue(self.LastValue)
self.LastValue = None
@@ -201,12 +201,15 @@
self.LastValue = value
self.LastForced = forced
else:
- self.Forced = forced
+ self.SetForced(forced)
self.SetValue(value)
def SetValue(self, value):
self.Value = value
-
+
+ def SetForced(self, forced):
+ self.Forced = forced
+
def IsForced(self):
return self.Forced
@@ -1185,6 +1188,7 @@
self.OneConnected = onlyone
self.Valid = True
self.Value = None
+ self.Forced = False
self.Pen = wx.BLACK_PEN
self.Errors = {}
self.RefreshNameSize()
@@ -1270,6 +1274,11 @@
self.Name = name
self.RefreshNameSize()
+ def RefreshForced(self):
+ self.Forced = False
+ for wire, handle in self.Wires:
+ self.Forced |= wire.IsForced()
+
def RefreshValue(self):
self.Value = self.ReceivingCurrent()
@@ -1503,9 +1512,14 @@
if not self.Valid:
dc.SetPen(wx.RED_PEN)
elif isinstance(self.Value, BooleanType) and self.Value:
- dc.SetPen(wx.GREEN_PEN)
+ if self.Forced:
+ dc.SetPen(wx.CYAN_PEN)
+ else:
+ dc.SetPen(wx.GREEN_PEN)
elif self.Value == "undefined":
dc.SetPen(wx.Pen(wx.NamedColour("orange")))
+ elif self.Forced:
+ dc.SetPen(wx.Pen(wx.BLUE))
else:
dc.SetPen(self.Pen)
dc.SetBrush(wx.WHITE_BRUSH)
@@ -1758,6 +1772,16 @@
return True
return False
+ def SetForced(self, forced):
+ if self.Forced != forced:
+ self.Forced = forced
+ if self.StartConnected:
+ self.StartConnected.RefreshForced()
+ if self.EndConnected:
+ self.EndConnected.RefreshForced()
+ if self.Visible:
+ self.Parent.UpdateRefreshRect(self.GetRedrawRect())
+
def SetValue(self, value):
if self.Value != value:
self.Value = value
@@ -1812,11 +1836,11 @@
# The segment selected is the first
elif segment == 0:
if self.StartConnected:
- self.StartConnected.SetPen(wx.BLUE_PEN)
+ self.StartConnected.SetPen(wx.Pen(wx.BLUE))
if self.EndConnected:
# There is only one segment
if len(self.Segments) == 1:
- self.EndConnected.SetPen(wx.BLUE_PEN)
+ self.EndConnected.SetPen(wx.Pen(wx.BLUE))
else:
self.EndConnected.SetPen(wx.BLACK_PEN)
# The segment selected is the last
@@ -1824,7 +1848,7 @@
if self.StartConnected:
self.StartConnected.SetPen(wx.BLACK_PEN)
if self.EndConnected:
- self.EndConnected.SetPen(wx.BLUE_PEN)
+ self.EndConnected.SetPen(wx.Pen(wx.BLUE))
self.SelectedSegment = segment
self.Refresh()
@@ -2630,11 +2654,18 @@
dc.SetPen(wx.RED_PEN)
dc.SetBrush(wx.RED_BRUSH)
elif isinstance(self.Value, BooleanType) and self.Value:
- dc.SetPen(wx.GREEN_PEN)
- dc.SetBrush(wx.GREEN_BRUSH)
+ if self.Forced:
+ dc.SetPen(wx.CYAN_PEN)
+ dc.SetBrush(wx.CYAN_BRUSH)
+ else:
+ dc.SetPen(wx.GREEN_PEN)
+ dc.SetBrush(wx.GREEN_BRUSH)
elif self.Value == "undefined":
dc.SetPen(wx.Pen(wx.NamedColour("orange")))
dc.SetBrush(wx.Brush(wx.NamedColour("orange")))
+ elif self.Forced:
+ dc.SetPen(wx.Pen(wx.BLUE))
+ dc.SetBrush(wx.BLUE_BRUSH)
else:
dc.SetPen(wx.BLACK_PEN)
dc.SetBrush(wx.BLACK_BRUSH)