Better cleanup of circular references.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@37267 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
@@ -288,9 +288,16 @@ class Shape(ShapeEvtHandler):
|
|||||||
return str(self.__class__).split(".")[-1][:-2]
|
return str(self.__class__).split(".")[-1][:-2]
|
||||||
|
|
||||||
def Delete(self):
|
def Delete(self):
|
||||||
|
"""
|
||||||
|
Fully disconnect this shape from parents, children, the
|
||||||
|
canvas, etc.
|
||||||
|
"""
|
||||||
if self._parent:
|
if self._parent:
|
||||||
self._parent.GetChildren().remove(self)
|
self._parent.GetChildren().remove(self)
|
||||||
|
|
||||||
|
for child in self.GetChildren():
|
||||||
|
child.Delete()
|
||||||
|
|
||||||
self.ClearText()
|
self.ClearText()
|
||||||
self.ClearRegions()
|
self.ClearRegions()
|
||||||
self.ClearAttachments()
|
self.ClearAttachments()
|
||||||
@@ -3040,7 +3047,7 @@ class ShapeRegion(object):
|
|||||||
return None
|
return None
|
||||||
if self._penColour=="Invisible":
|
if self._penColour=="Invisible":
|
||||||
return None
|
return None
|
||||||
self._actualPenObject = wx.ThePenList.FindOrCreatePen(self._penColour, 1, self._penStyle)
|
self._actualPenObject = wx.Pen(self._penColour, 1, self._penStyle)
|
||||||
return self._actualPenObject
|
return self._actualPenObject
|
||||||
|
|
||||||
def SetText(self, s):
|
def SetText(self, s):
|
||||||
|
@@ -559,6 +559,18 @@ class CompositeShape(RectangleShape):
|
|||||||
self.RemoveChildFromConstraints(child)
|
self.RemoveChildFromConstraints(child)
|
||||||
child.SetParent(None)
|
child.SetParent(None)
|
||||||
|
|
||||||
|
def Delete(self):
|
||||||
|
"""
|
||||||
|
Fully disconnect this shape from parents, children, the
|
||||||
|
canvas, etc.
|
||||||
|
"""
|
||||||
|
for child in self.GetChildren():
|
||||||
|
self.RemoveChild(child)
|
||||||
|
child.Delete()
|
||||||
|
RectangleShape.Delete(self)
|
||||||
|
self._constraints = []
|
||||||
|
self._divisions = []
|
||||||
|
|
||||||
def DeleteConstraintsInvolvingChild(self, child):
|
def DeleteConstraintsInvolvingChild(self, child):
|
||||||
"""This function deletes constraints which mention the given child.
|
"""This function deletes constraints which mention the given child.
|
||||||
|
|
||||||
|
@@ -78,6 +78,7 @@ class Diagram(object):
|
|||||||
for shape in self._shapeList[:]:
|
for shape in self._shapeList[:]:
|
||||||
if not shape.GetParent():
|
if not shape.GetParent():
|
||||||
self.RemoveShape(shape)
|
self.RemoveShape(shape)
|
||||||
|
shape.Delete()
|
||||||
|
|
||||||
def ShowAll(self, show):
|
def ShowAll(self, show):
|
||||||
"""Call Show for each shape in the diagram."""
|
"""Call Show for each shape in the diagram."""
|
||||||
|
@@ -90,7 +90,7 @@ class OpSetGDI(DrawOp):
|
|||||||
if self._gdiIndex in self._image._outlineColours:
|
if self._gdiIndex in self._image._outlineColours:
|
||||||
# Need to construct a brush to match the outline pen's colour
|
# Need to construct a brush to match the outline pen's colour
|
||||||
if self._image._outlinePen:
|
if self._image._outlinePen:
|
||||||
br = wx.TheBrushList.FindOrCreateBrush(self._image._outlinePen, wx.SOLID)
|
br = wx.Brush(self._image._outlinePen, wx.SOLID)
|
||||||
if br:
|
if br:
|
||||||
dc.SetBrush(br)
|
dc.SetBrush(br)
|
||||||
elif self._gdiIndex in self._image._fillColours:
|
elif self._gdiIndex in self._image._fillColours:
|
||||||
|
@@ -131,7 +131,7 @@ class LabelShape(RectangleShape):
|
|||||||
RectangleShape.__init__(self, w, h)
|
RectangleShape.__init__(self, w, h)
|
||||||
self._lineShape = parent
|
self._lineShape = parent
|
||||||
self._shapeRegion = region
|
self._shapeRegion = region
|
||||||
self.SetPen(wx.ThePenList.FindOrCreatePen(wx.Colour(0, 0, 0), 1, wx.DOT))
|
self.SetPen(wx.Pen(wx.Colour(0, 0, 0), 1, wx.DOT))
|
||||||
|
|
||||||
def OnDraw(self, dc):
|
def OnDraw(self, dc):
|
||||||
if self._lineShape and not self._lineShape.GetDrawHandles():
|
if self._lineShape and not self._lineShape.GetDrawHandles():
|
||||||
@@ -1027,7 +1027,7 @@ class LineShape(Shape):
|
|||||||
# Problem with pen - if not a solid pen, does strange things
|
# Problem with pen - if not a solid pen, does strange things
|
||||||
# to the arrowhead. So make (get) a new pen that's solid.
|
# to the arrowhead. So make (get) a new pen that's solid.
|
||||||
if self._pen and self._pen.GetStyle() != wx.SOLID:
|
if self._pen and self._pen.GetStyle() != wx.SOLID:
|
||||||
solid_pen = wx.ThePenList.FindOrCreatePen(self._pen.GetColour(), 1, wx.SOLID)
|
solid_pen = wx.Pen(self._pen.GetColour(), 1, wx.SOLID)
|
||||||
if solid_pen:
|
if solid_pen:
|
||||||
dc.SetPen(solid_pen)
|
dc.SetPen(solid_pen)
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user