graphics/LD_Objects.py
changeset 231 fc2d6cbb8b39
parent 213 4931959ea256
child 237 097e8ee006cb
--- a/graphics/LD_Objects.py	Tue Aug 12 18:15:35 2008 +0200
+++ b/graphics/LD_Objects.py	Tue Aug 12 18:16:09 2008 +0200
@@ -372,6 +372,7 @@
         self.Name = name
         self.Id = id
         self.Size = wx.Size(LD_ELEMENT_SIZE[0], LD_ELEMENT_SIZE[1])
+        self.Errors = {}
         # Create an input and output connector
         self.Input = Connector(self, "", "BOOL", wx.Point(0, self.Size[1] / 2 + 1), WEST)
         self.Output = Connector(self, "", "BOOL", wx.Point(self.Size[0], self.Size[1] / 2 + 1), EAST)
@@ -558,6 +559,10 @@
         dc.DrawRectangle(self.Pos.x + self.Size[0] - 3, self.Pos.y - 2, 6, self.Size[1] + 5)
         dc.SetLogicalFunction(wx.COPY)
     
+    def AddError(self, infos, start, end):
+        print infos
+        self.Errors[infos[0]] = (start[1], end[1])
+    
     # Draws contact
     def Draw(self, dc):
         Graphic_Element.Draw(self, dc)
@@ -586,15 +591,21 @@
         dc.DrawRectangle(self.Pos.x, self.Pos.y, 2, self.Size[1] + 1)
         dc.DrawRectangle(self.Pos.x + self.Size[0] - 1, self.Pos.y, 2, self.Size[1] + 1)
         # Draw contact name
-        dc.DrawText(self.Name, self.Pos.x + (self.Size[0] - name_size[0]) / 2,
-                self.Pos.y - (name_size[1] + 2))
+        name_pos = (self.Pos.x + (self.Size[0] - name_size[0]) / 2,
+                    self.Pos.y - (name_size[1] + 2))
+        dc.DrawText(self.Name, name_pos[0], name_pos[1])
         # Draw the modifier symbol in the middle of contact
         if typetext != "":
-            dc.DrawText(typetext, self.Pos.x + (self.Size[0] - type_size[0]) / 2 + 1,
-                    self.Pos.y + (self.Size[1] - type_size[1]) / 2)
+            type_pos = (self.Pos.x + (self.Size[0] - type_size[0]) / 2 + 1,
+                        self.Pos.y + (self.Size[1] - type_size[1]) / 2)
+            dc.DrawText(typetext, type_pos[0], type_pos[1])
         # Draw input and output connectors
         self.Input.Draw(dc)
         self.Output.Draw(dc)
+        if "reference" in self.Errors:
+            HighlightErrorZone(dc, name_pos[0], name_pos[1], name_size[0], name_size[1])
+        if typetext != "" and ("negated" in self.Errors or "rising" in self.Errors or "falling" in self.Errors):
+            HighlightErrorZone(dc, type_pos[0], type_pos[1], type_size[0], type_size[1])
         
 
 #-------------------------------------------------------------------------------
@@ -614,6 +625,7 @@
         self.Name = name
         self.Id = id
         self.Size = wx.Size(LD_ELEMENT_SIZE[0], LD_ELEMENT_SIZE[1])
+        self.Errors = {}
         # Create an input and output connector
         self.Input = Connector(self, "", "BOOL", wx.Point(0, self.Size[1] / 2 + 1), WEST)
         self.Output = Connector(self, "", "BOOL", wx.Point(self.Size[0], self.Size[1] / 2 + 1), EAST)
@@ -800,6 +812,9 @@
         dc.DrawEllipticArc(self.Pos.x, self.Pos.y - int(self.Size[1] * (sqrt(2) - 1.) / 2.) + 1, self.Size[0], int(self.Size[1] * sqrt(2)) - 1, -45, 45)
         dc.SetLogicalFunction(wx.COPY)
     
+    def AddError(self, infos, start, end):
+        self.Errors[infos[0]] = (start[1], end[1])
+    
     # Draws coil
     def Draw(self, dc):
         Graphic_Element.Draw(self, dc)
@@ -839,13 +854,20 @@
                 type_size = self.TypeSize
             
         # Draw coil name
-        dc.DrawText(self.Name, self.Pos.x + (self.Size[0] - name_size[0]) / 2,
-                self.Pos.y - (name_size[1] + 2))
+        name_pos = (self.Pos.x + (self.Size[0] - name_size[0]) / 2,
+                    self.Pos.y - (name_size[1] + 2))
+        dc.DrawText(self.Name, name_pos[0], name_pos[1])
         # Draw the modifier symbol in the middle of coil
         if typetext != "":
-            dc.DrawText(typetext, self.Pos.x + (self.Size[0] - type_size[0]) / 2 + 1,
-                    self.Pos.y + (self.Size[1] - type_size[1]) / 2)
+            type_pos = (self.Pos.x + (self.Size[0] - type_size[0]) / 2 + 1,
+                        self.Pos.y + (self.Size[1] - type_size[1]) / 2)
+            dc.DrawText(typetext, type_pos[0], type_pos[1])
         # Draw input and output connectors
         self.Input.Draw(dc)
         self.Output.Draw(dc)
-        
+        if "reference" in self.Errors:
+            HighlightErrorZone(dc, name_pos[0], name_pos[1], name_size[0], name_size[1])
+        if typetext != "" and ("negated" in self.Errors or "rising" in self.Errors or "falling" in self.Errors):
+            HighlightErrorZone(dc, type_pos[0], type_pos[1], type_size[0], type_size[1])
+            
+