X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/ae601e32a8877d7968fd4552ea7857be11a4d15c..25b3661bd4cb44304418b93c0dee1d0dfb99765c:/wxPython/wx/lib/ogl/_basic.py diff --git a/wxPython/wx/lib/ogl/_basic.py b/wxPython/wx/lib/ogl/_basic.py index 142ee3366a..69028630a8 100644 --- a/wxPython/wx/lib/ogl/_basic.py +++ b/wxPython/wx/lib/ogl/_basic.py @@ -19,7 +19,6 @@ from _oglmisc import * DragOffsetX = 0.0 DragOffsetY = 0.0 - def OGLInitialize(): global WhiteBackgroundPen, WhiteBackgroundBrush, TransparentPen global BlackForegroundPen, NormalFont @@ -82,7 +81,11 @@ class ShapeEvtHandler(object): def GetPreviousHandler(self): return self._previousHandler - + + def OnDelete(self): + if self!=self.GetShape(): + del self + def OnDraw(self, dc): if self._previousHandler: self._previousHandler.OnDraw(dc) @@ -283,8 +286,8 @@ class Shape(ShapeEvtHandler): def GetClassName(self): return str(self.__class__).split(".")[-1][:-2] - - def __del__(self): + + def Delete(self): if self._parent: i = self._parent.GetChildren().index(self) self._parent.GetChildren(i).remove(self) @@ -293,10 +296,16 @@ class Shape(ShapeEvtHandler): self.ClearRegions() self.ClearAttachments() + self._handlerShape = None + if self._canvas: - self._canvas.RemoveShape(self) + self.RemoveFromCanvas(self._canvas) self.GetEventHandler().OnDelete() + self._eventHandler = None + + def __del__(self): + ShapeEvtHandler.__del__(self) def Draggable(self): """TRUE if the shape may be dragged by the user.""" @@ -386,6 +395,10 @@ class Shape(ShapeEvtHandler): else: self._shadowMode = mode + def GetShadowMode(self): + """Return the current shadow mode setting""" + return self._shadowMode + def SetCanvas(self, theCanvas): """Identical to Shape.Attach.""" self._canvas = theCanvas @@ -416,6 +429,8 @@ class Shape(ShapeEvtHandler): """Remove the shape from the canvas.""" if self.Selected(): self.Select(False) + + self._canvas = None theCanvas.RemoveShape(self) for object in self._children: object.RemoveFromCanvas(theCanvas) @@ -633,7 +648,7 @@ class Shape(ShapeEvtHandler): """Get the colour for the specified text region.""" if regionId >= len(self._regions): return "" - return self._regions[regionId].GetTextColour() + return self._regions[regionId].GetColour() def SetRegionName(self, name, regionId = 0): """Set the name for this region. @@ -814,7 +829,7 @@ class Shape(ShapeEvtHandler): for line in self._lines: if attachment == -1 or (line.GetTo() == self and line.GetAttachmentTo() == attachment or line.GetFrom() == self and line.GetAttachmentFrom() == attachment): - line.GetEventHandler().Draw(dc) + line.Draw(dc) if recurse: for child in self._children: @@ -1372,13 +1387,13 @@ class Shape(ShapeEvtHandler): Does not redraw the shape. """ - for control in self._controlPoints: + for control in self._controlPoints[:]: if dc: control.GetEventHandler().OnErase(dc) - self._canvas.RemoveShape(control) - del control + control.Delete() + self._controlPoints.remove(control) self._controlPoints = [] - + # Children of divisions are contained objects, # so stop here if not isinstance(self, DivisionShape): @@ -1540,11 +1555,6 @@ class Shape(ShapeEvtHandler): return True return False - # Clears points from a list of wxRealPoints, and clears list - # Useless in python? /pi - def ClearPointList(self, list): - list = [] - # Assuming the attachment lies along a vertical or horizontal line, # calculate the position on that point. def CalcSimpleAttachment(self, pt1, pt2, nth, noArcs, line): @@ -1797,15 +1807,15 @@ class Shape(ShapeEvtHandler): dc.SetBrush(wx.BLACK_BRUSH) # Draw neck - dc.DrawLine(root, neck) + dc.DrawLine(root[0], root[1], neck[0], neck[1]) if count > 1: # Draw shoulder-to-shoulder line - dc.DrawLine(shoulder1, shoulder2) + dc.DrawLine(shoulder1[0], shoulder1[1], shoulder2[0], shoulder2[1]) # Draw all the little branches for i in range(count): pt, stemPt = self.GetBranchingAttachmentPoint(attachment, i) - dc.DrawLine(stemPt, pt) + dc.DrawLine(stemPt[0], stemPt[1], pt[0], pt[1]) if self.GetBranchStyle() & BRANCHING_ATTACHMENT_BLOB and count > 1: blobSize = 6.0 @@ -2227,7 +2237,7 @@ class Shape(ShapeEvtHandler): elif pt._type == CONTROL_POINT_VERTICAL: newX1 = pt._controlPointDragStartX newX2 = newX1 + pt._controlPointDragStartWidth - elif pt._type == CONTROL_POINT_DIAGONAL and (keys & KEYS or self.GetMaintainAspectRatio()): + elif pt._type == CONTROL_POINT_DIAGONAL and (keys & KEY_SHIFT or self.GetMaintainAspectRatio()): newH = (newX2 - newX1) * (float(pt._controlPointDragStartHeight) / pt._controlPointDragStartWidth) if pt.GetY() > pt._controlPointDragStartY: newY2 = newY1 + newH