graphics/FBD_Objects.py
changeset 213 4931959ea256
parent 165 e464a4e4e06d
child 231 fc2d6cbb8b39
equal deleted inserted replaced
212:e36ba4f15fc8 213:4931959ea256
   354     def Draw(self, dc):
   354     def Draw(self, dc):
   355         Graphic_Element.Draw(self, dc)
   355         Graphic_Element.Draw(self, dc)
   356         dc.SetPen(self.Pen)
   356         dc.SetPen(self.Pen)
   357         dc.SetBrush(wx.WHITE_BRUSH)
   357         dc.SetBrush(wx.WHITE_BRUSH)
   358         dc.SetTextForeground(self.Colour)
   358         dc.SetTextForeground(self.Colour)
       
   359         
       
   360         if getattr(dc, "printing", False):
       
   361             name_size = dc.GetTextExtent(self.Name)
       
   362             type_size = dc.GetTextExtent(self.Type)
       
   363             executionorder_size = dc.GetTextExtent(str(self.ExecutionOrder))
       
   364         else:
       
   365             name_size = self.NameSize
       
   366             type_size = self.TypeSize
       
   367             executionorder_size = self.ExecutionOrderSize
       
   368             
   359         # Draw a rectangle with the block size
   369         # Draw a rectangle with the block size
   360         dc.DrawRectangle(self.Pos.x, self.Pos.y, self.Size[0] + 1, self.Size[1] + 1)
   370         dc.DrawRectangle(self.Pos.x, self.Pos.y, self.Size[0] + 1, self.Size[1] + 1)
   361         # Draw block name and block type
   371         # Draw block name and block type
   362         dc.DrawText(self.Name, self.Pos.x + (self.Size[0] - self.NameSize[0]) / 2,
   372         dc.DrawText(self.Name, self.Pos.x + (self.Size[0] - name_size[0]) / 2,
   363                 self.Pos.y - (self.NameSize[1] + 2))
   373                 self.Pos.y - (name_size[1] + 2))
   364         dc.DrawText(self.Type, self.Pos.x + (self.Size[0] - self.TypeSize[0]) / 2,
   374         dc.DrawText(self.Type, self.Pos.x + (self.Size[0] - type_size[0]) / 2,
   365                 self.Pos.y + 5)
   375                 self.Pos.y + 5)
   366         # Draw inputs and outputs connectors
   376         # Draw inputs and outputs connectors
   367         for input in self.Inputs:
   377         for input in self.Inputs:
   368             input.Draw(dc)
   378             input.Draw(dc)
   369         for output in self.Outputs:
   379         for output in self.Outputs:
   370             output.Draw(dc)
   380             output.Draw(dc)
   371         if self.ExecutionOrder != 0:
   381         if self.ExecutionOrder != 0:
   372             # Draw block execution order
   382             # Draw block execution order
   373             dc.DrawText(str(self.ExecutionOrder), self.Pos.x + self.Size[0] - self.ExecutionOrderSize[0],
   383             dc.DrawText(str(self.ExecutionOrder), self.Pos.x + self.Size[0] - executionorder_size[0],
   374                     self.Pos.y + self.Size[1] + 2)
   384                     self.Pos.y + self.Size[1] + 2)
   375         dc.SetTextForeground(wx.BLACK)
   385         dc.SetTextForeground(wx.BLACK)
   376         
   386         
   377 
   387 
   378 #-------------------------------------------------------------------------------
   388 #-------------------------------------------------------------------------------
   587     # Draws variable
   597     # Draws variable
   588     def Draw(self, dc):
   598     def Draw(self, dc):
   589         Graphic_Element.Draw(self, dc)
   599         Graphic_Element.Draw(self, dc)
   590         dc.SetPen(wx.BLACK_PEN)
   600         dc.SetPen(wx.BLACK_PEN)
   591         dc.SetBrush(wx.WHITE_BRUSH)
   601         dc.SetBrush(wx.WHITE_BRUSH)
       
   602         
       
   603         if getattr(dc, "printing", False):
       
   604             name_size = dc.GetTextExtent(self.Name)
       
   605             executionorder_size = dc.GetTextExtent(str(self.ExecutionOrder))
       
   606         else:
       
   607             name_size = self.NameSize
       
   608             executionorder_size = self.ExecutionOrderSize
       
   609         
   592         # Draw a rectangle with the variable size
   610         # Draw a rectangle with the variable size
   593         dc.DrawRectangle(self.Pos.x, self.Pos.y, self.Size[0] + 1, self.Size[1] + 1)
   611         dc.DrawRectangle(self.Pos.x, self.Pos.y, self.Size[0] + 1, self.Size[1] + 1)
   594         # Draw variable name
   612         # Draw variable name
   595         dc.DrawText(self.Name, self.Pos.x + (self.Size[0] - self.NameSize[0]) / 2,
   613         dc.DrawText(self.Name, self.Pos.x + (self.Size[0] - name_size[0]) / 2,
   596                 self.Pos.y + (self.Size[1] - self.NameSize[1]) / 2)
   614                 self.Pos.y + (self.Size[1] - name_size[1]) / 2)
   597         # Draw connectors
   615         # Draw connectors
   598         if self.Input:
   616         if self.Input:
   599             self.Input.Draw(dc)
   617             self.Input.Draw(dc)
   600         if self.Output:    
   618         if self.Output:    
   601             self.Output.Draw(dc)
   619             self.Output.Draw(dc)
   602         if self.ExecutionOrder != 0:
   620         if self.ExecutionOrder != 0:
   603             # Draw variable execution order
   621             # Draw variable execution order
   604             dc.DrawText(str(self.ExecutionOrder), self.Pos.x + self.Size[0] - self.ExecutionOrderSize[0],
   622             dc.DrawText(str(self.ExecutionOrder), self.Pos.x + self.Size[0] - executionorder_size[0],
   605                     self.Pos.y + self.Size[1] + 2)
   623                     self.Pos.y + self.Size[1] + 2)
   606 
   624 
   607 
   625 
   608 #-------------------------------------------------------------------------------
   626 #-------------------------------------------------------------------------------
   609 #                        Function Block Diagram Connector
   627 #                        Function Block Diagram Connector
   759     # Draws connection
   777     # Draws connection
   760     def Draw(self, dc):
   778     def Draw(self, dc):
   761         Graphic_Element.Draw(self, dc)
   779         Graphic_Element.Draw(self, dc)
   762         dc.SetPen(wx.BLACK_PEN)
   780         dc.SetPen(wx.BLACK_PEN)
   763         dc.SetBrush(wx.WHITE_BRUSH)
   781         dc.SetBrush(wx.WHITE_BRUSH)
       
   782         
       
   783         if getattr(dc, "printing", False):
       
   784             name_size = dc.GetTextExtent(self.Name)
       
   785         else:
       
   786             name_size = self.NameSize
       
   787         
   764         # Draw a rectangle with the connection size with arrows in 
   788         # Draw a rectangle with the connection size with arrows in 
   765         dc.DrawRectangle(self.Pos.x, self.Pos.y, self.Size[0] + 1, self.Size[1] + 1)
   789         dc.DrawRectangle(self.Pos.x, self.Pos.y, self.Size[0] + 1, self.Size[1] + 1)
   766         arrowsize = min(self.Size[1] / 2, (self.Size[0] - self.NameSize[0] - 10) / 2)
   790         arrowsize = min(self.Size[1] / 2, (self.Size[0] - name_size[0] - 10) / 2)
   767         dc.DrawLine(self.Pos.x, self.Pos.y, self.Pos.x + arrowsize, 
   791         dc.DrawLine(self.Pos.x, self.Pos.y, self.Pos.x + arrowsize, 
   768                 self.Pos.y + self.Size[1] / 2)
   792                 self.Pos.y + self.Size[1] / 2)
   769         dc.DrawLine(self.Pos.x + arrowsize, self.Pos.y + self.Size[1] / 2, 
   793         dc.DrawLine(self.Pos.x + arrowsize, self.Pos.y + self.Size[1] / 2, 
   770                 self.Pos.x, self.Pos.y + self.Size[1])
   794                 self.Pos.x, self.Pos.y + self.Size[1])
   771         dc.DrawLine(self.Pos.x + self.Size[0] - arrowsize, self.Pos.y, 
   795         dc.DrawLine(self.Pos.x + self.Size[0] - arrowsize, self.Pos.y, 
   772                 self.Pos.x + self.Size[0], self.Pos.y + self.Size[1] / 2)
   796                 self.Pos.x + self.Size[0], self.Pos.y + self.Size[1] / 2)
   773         dc.DrawLine(self.Pos.x + self.Size[0], self.Pos.y + self.Size[1] / 2, 
   797         dc.DrawLine(self.Pos.x + self.Size[0], self.Pos.y + self.Size[1] / 2, 
   774                 self.Pos.x + self.Size[0] - arrowsize, self.Pos.y + self.Size[1])
   798                 self.Pos.x + self.Size[0] - arrowsize, self.Pos.y + self.Size[1])
   775         # Draw connection name
   799         # Draw connection name
   776         dc.DrawText(self.Name, self.Pos.x + (self.Size[0] - self.NameSize[0]) / 2,
   800         dc.DrawText(self.Name, self.Pos.x + (self.Size[0] - name_size[0]) / 2,
   777                 self.Pos.y + (self.Size[1] - self.NameSize[1]) / 2)
   801                 self.Pos.y + (self.Size[1] - name_size[1]) / 2)
   778         # Draw connector
   802         # Draw connector
   779         if self.Connector:
   803         if self.Connector:
   780             self.Connector.Draw(dc)
   804             self.Connector.Draw(dc)
   781         
   805