diff -r 127d524a5f1d -r 8d9e7edc0195 graphics/GraphicCommons.py --- a/graphics/GraphicCommons.py Thu Aug 20 09:03:31 2009 -0600 +++ b/graphics/GraphicCommons.py Wed Sep 02 08:30:34 2009 -0600 @@ -812,24 +812,25 @@ # Draws the handles of this element if it is selected def Draw(self, dc): - if self.Highlighted: - self.DrawHighlightment(dc) - if self.Selected: - dc.SetPen(wx.BLACK_PEN) - dc.SetBrush(wx.BLACK_BRUSH) - dc.DrawRectangle(self.BoundingBox.x - HANDLE_SIZE - 2, self.BoundingBox.y - HANDLE_SIZE - 2, HANDLE_SIZE, HANDLE_SIZE) - dc.DrawRectangle(self.BoundingBox.x + (self.BoundingBox.width - HANDLE_SIZE) / 2, - self.BoundingBox.y - HANDLE_SIZE - 2, HANDLE_SIZE, HANDLE_SIZE) - dc.DrawRectangle(self.BoundingBox.x + self.BoundingBox.width + 2, - self.BoundingBox.y - HANDLE_SIZE - 2, HANDLE_SIZE, HANDLE_SIZE) - dc.DrawRectangle(self.BoundingBox.x + self.BoundingBox.width + 2, - self.BoundingBox.y + (self.BoundingBox.height - HANDLE_SIZE) / 2, HANDLE_SIZE, HANDLE_SIZE) - dc.DrawRectangle(self.BoundingBox.x + self.BoundingBox.width + 2, - self.BoundingBox.y + self.BoundingBox.height + 2, HANDLE_SIZE, HANDLE_SIZE) - dc.DrawRectangle(self.BoundingBox.x + (self.BoundingBox.width - HANDLE_SIZE) / 2, - self.BoundingBox.y + self.BoundingBox.height + 2, HANDLE_SIZE, HANDLE_SIZE) - dc.DrawRectangle(self.BoundingBox.x - HANDLE_SIZE - 2, self.BoundingBox.y + self.BoundingBox.height + 2, HANDLE_SIZE, HANDLE_SIZE) - dc.DrawRectangle(self.BoundingBox.x - HANDLE_SIZE - 2, self.BoundingBox.y + (self.BoundingBox.height - HANDLE_SIZE) / 2, HANDLE_SIZE, HANDLE_SIZE) + if not getattr(dc, "printing", False): + if self.Highlighted: + self.DrawHighlightment(dc) + if self.Selected: + dc.SetPen(wx.BLACK_PEN) + dc.SetBrush(wx.BLACK_BRUSH) + dc.DrawRectangle(self.BoundingBox.x - HANDLE_SIZE - 2, self.BoundingBox.y - HANDLE_SIZE - 2, HANDLE_SIZE, HANDLE_SIZE) + dc.DrawRectangle(self.BoundingBox.x + (self.BoundingBox.width - HANDLE_SIZE) / 2, + self.BoundingBox.y - HANDLE_SIZE - 2, HANDLE_SIZE, HANDLE_SIZE) + dc.DrawRectangle(self.BoundingBox.x + self.BoundingBox.width + 2, + self.BoundingBox.y - HANDLE_SIZE - 2, HANDLE_SIZE, HANDLE_SIZE) + dc.DrawRectangle(self.BoundingBox.x + self.BoundingBox.width + 2, + self.BoundingBox.y + (self.BoundingBox.height - HANDLE_SIZE) / 2, HANDLE_SIZE, HANDLE_SIZE) + dc.DrawRectangle(self.BoundingBox.x + self.BoundingBox.width + 2, + self.BoundingBox.y + self.BoundingBox.height + 2, HANDLE_SIZE, HANDLE_SIZE) + dc.DrawRectangle(self.BoundingBox.x + (self.BoundingBox.width - HANDLE_SIZE) / 2, + self.BoundingBox.y + self.BoundingBox.height + 2, HANDLE_SIZE, HANDLE_SIZE) + dc.DrawRectangle(self.BoundingBox.x - HANDLE_SIZE - 2, self.BoundingBox.y + self.BoundingBox.height + 2, HANDLE_SIZE, HANDLE_SIZE) + dc.DrawRectangle(self.BoundingBox.x - HANDLE_SIZE - 2, self.BoundingBox.y + (self.BoundingBox.height - HANDLE_SIZE) / 2, HANDLE_SIZE, HANDLE_SIZE) #------------------------------------------------------------------------------- @@ -1930,15 +1931,21 @@ self.Segments = [] i = 0 while i < len(self.Points) - 1: - segment = vector(self.Points[i], self.Points[i + 1]) - if is_null_vector(segment) and i > 0: - segment = (self.Segments[-1][1], self.Segments[-1][0]) - if i < len(self.Points) - 2: - next = vector(self.Points[i + 1], self.Points[i + 2]) - if next == segment or is_null_vector(add_vectors(segment, next)): - self.Points.insert(i + 1, wx.Point(self.Points[i + 1].x, self.Points[i + 1].y)) - self.Segments.append(segment) - i += 1 + if 0 < i < len(self.Points) - 2 and \ + self.Points[i] == self.Points[i + 1] and \ + self.Segments[-1] == vector(self.Points[i + 1], self.Points[i + 2]): + for j in xrange(2): + self.Points.pop(i) + else: + segment = vector(self.Points[i], self.Points[i + 1]) + if is_null_vector(segment) and i > 0: + segment = (self.Segments[-1][1], self.Segments[-1][0]) + if i < len(self.Points) - 2: + next = vector(self.Points[i + 1], self.Points[i + 2]) + if next == segment or is_null_vector(add_vectors(segment, next)): + self.Points.insert(i + 1, wx.Point(self.Points[i + 1].x, self.Points[i + 1].y)) + self.Segments.append(segment) + i += 1 self.RefreshBoundingBox() self.RefreshRealPoints() @@ -2604,7 +2611,7 @@ dc.DrawLines(self.Points) dc.DrawPoint(self.Points[-1].x, self.Points[-1].y) # Draw the segment selected in red - if self.SelectedSegment is not None: + if not getattr(dc, "printing", False) and self.SelectedSegment is not None: dc.SetPen(wx.RED_PEN) dc.DrawLine(self.Points[self.SelectedSegment].x, self.Points[self.SelectedSegment].y, self.Points[self.SelectedSegment + 1].x, self.Points[self.SelectedSegment + 1].y)