--- a/graphics/SFC_Objects.py Wed Jun 04 17:48:26 2008 +0200
+++ b/graphics/SFC_Objects.py Mon Jun 23 18:48:49 2008 +0200
@@ -46,7 +46,7 @@
# Create a new step
def __init__(self, parent, name, initial = False, id = None):
Graphic_Element.__init__(self, parent)
- self.Name = name
+ self.SetName(name)
self.Initial = initial
self.Id = id
self.Size = wx.Size(SFC_STEP_DEFAULT_SIZE[0], SFC_STEP_DEFAULT_SIZE[1])
@@ -109,6 +109,10 @@
if self.Action:
self.Action.UnConnect(delete = self.Parent.GetDrawingMode() == FREEDRAWING_MODE)
+ # Refresh the size of text for name
+ def RefreshNameSize(self):
+ self.NameSize = self.Parent.GetTextExtent(self.Name)
+
# Add output connector to step
def AddInput(self):
if not self.Input:
@@ -244,6 +248,7 @@
# Changes the step name
def SetName(self, name):
self.Name = name
+ self.RefreshNameSize()
# Returns the step name
def GetName(self):
@@ -459,14 +464,19 @@
Graphic_Element.Draw(self, dc)
dc.SetPen(wx.BLACK_PEN)
dc.SetBrush(wx.WHITE_BRUSH)
+
+ if getattr(dc, "printing", False):
+ name_size = dc.GetTextExtent(self.Name)
+ else:
+ name_size = self.NameSize
+
# Draw two rectangles for representing the step
dc.DrawRectangle(self.Pos.x, self.Pos.y, self.Size[0] + 1, self.Size[1] + 1)
if self.Initial:
dc.DrawRectangle(self.Pos.x + 2, self.Pos.y + 2, self.Size[0] - 3, self.Size[1] - 3)
# Draw step name
- namewidth, nameheight = dc.GetTextExtent(self.Name)
- dc.DrawText(self.Name, self.Pos.x + (self.Size[0] - namewidth) / 2,
- self.Pos.y + (self.Size[1] - nameheight) / 2)
+ dc.DrawText(self.Name, self.Pos.x + (self.Size[0] - name_size[0]) / 2,
+ self.Pos.y + (self.Size[1] - name_size[1]) / 2)
# Draw input and output connectors
if self.Input:
self.Input.Draw(dc)
@@ -815,6 +825,18 @@
Graphic_Element.Draw(self, dc)
dc.SetPen(wx.BLACK_PEN)
dc.SetBrush(wx.BLACK_BRUSH)
+
+ if getattr(dc, "printing", False):
+ if self.Type != "connection":
+ condition_size = dc.GetTextExtent(self.Condition)
+ if self.Priority != 0:
+ priority_size = dc.GetTextExtent(str(self.Priority))
+ else:
+ if self.Type != "connection":
+ condition_size = self.ConditionSize
+ if self.Priority != 0:
+ priority_size = self.PrioritySize
+
# Draw plain rectangle for representing the transition
dc.DrawRectangle(self.Pos.x,
self.Pos.y + (self.Size[1] - SFC_TRANSITION_SIZE[1])/2,
@@ -824,17 +846,15 @@
dc.DrawLine(vertical_line_x, self.Pos.y, vertical_line_x, self.Pos.y + self.Size[1] + 1)
# Draw transition condition
if self.Type != "connection":
- text_width, text_height = self.ConditionSize
if self.Condition != "":
condition = self.Condition
else:
condition = "Transition"
dc.DrawText(condition, self.Pos.x + self.Size[0] + 5,
- self.Pos.y + (self.Size[1] - text_height) / 2)
+ self.Pos.y + (self.Size[1] - condition_size[1]) / 2)
# Draw priority number
if self.Priority != 0:
- priority_width, priority_height = self.PrioritySize
- dc.DrawText(str(self.Priority), self.Pos.x, self.Pos.y - self.PrioritySize[1] - 2)
+ dc.DrawText(str(self.Priority), self.Pos.x, self.Pos.y - priority_size[1] - 2)
# Draw input and output connectors
self.Input.Draw(dc)
self.Output.Draw(dc)
@@ -1283,7 +1303,7 @@
# Create a new jump
def __init__(self, parent, target, id = None):
Graphic_Element.__init__(self, parent)
- self.Target = target
+ self.SetTarget(target)
self.Id = id
self.Size = wx.Size(SFC_JUMP_SIZE[0], SFC_JUMP_SIZE[1])
# Create an input and output connector
@@ -1329,6 +1349,10 @@
def Clean(self):
self.Input.UnConnect(delete = self.Parent.GetDrawingMode() == FREEDRAWING_MODE)
+ # Refresh the size of text for target
+ def RefreshTargetSize(self):
+ self.TargetSize = self.Parent.GetTextExtent(self.Target)
+
# Refresh the jump bounding box
def RefreshBoundingBox(self):
text_width, text_height = self.Parent.GetTextExtent(self.Target)
@@ -1372,6 +1396,7 @@
# Changes the jump target
def SetTarget(self, target):
self.Target = target
+ self.RefreshTargetSize()
self.RefreshBoundingBox()
# Returns the jump target
@@ -1462,6 +1487,12 @@
Graphic_Element.Draw(self, dc)
dc.SetPen(wx.BLACK_PEN)
dc.SetBrush(wx.BLACK_BRUSH)
+
+ if getattr(dc, "printing", False):
+ target_size = dc.GetTextExtent(self.Target)
+ else:
+ target_size = self.TargetSize
+
# Draw plain rectangle for representing the divergence
dc.DrawLine(self.Pos.x + self.Size[0] / 2, self.Pos.y, self.Pos.x + self.Size[0] / 2, self.Pos.y + self.Size[1])
points = [wx.Point(self.Pos.x, self.Pos.y),
@@ -1469,9 +1500,8 @@
wx.Point(self.Pos.x + self.Size[0], self.Pos.y),
wx.Point(self.Pos.x + self.Size[0] / 2, self.Pos.y + self.Size[1])]
dc.DrawPolygon(points)
- text_width, text_height = dc.GetTextExtent(self.Target)
dc.DrawText(self.Target, self.Pos.x + self.Size[0] + 2,
- self.Pos.y + (self.Size[1] - text_height) / 2)
+ self.Pos.y + (self.Size[1] - target_size[1]) / 2)
# Draw input connector
if self.Input:
self.Input.Draw(dc)