diff -r fd9625f6e92a -r dc403c47af54 graphics/GraphicCommons.py --- 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)