## If so, limit it. Would it be better just to not draw it?
## note that this limit is dependent on how much memory you have, etc.
Size = min(Size, self.MaxFontSize)
-
- dc.SetFont(self.SetFont(Size, self.Family, self.Style, self.Weight, self.Underline, self.FaceName))
+
+ font = self.SetFont(Size, self.Family, self.Style, self.Weight, self.Underline, self.FaceName)
+ dc.SetFont(font)
dc.SetTextForeground(self.Color)
dc.SetBackgroundMode(wx.TRANSPARENT)
## create the Hit Test Dicts:
self.HitDict = None
-
+ self._HTdc = None
self._DrawList = []
self._ForeDrawList = []
self.ObjectUnderMouse = None
# called just to make sure everything is initialized
- self.OnSize(None)
-
+ # this is a bug on OS-X, maybe it's not required?
+ self.SizeTimer = wx.PyTimer(self.OnSizeTimer) # timer to give a delay when re-sizing so that bufferes aren't re-built too many times.
+
+ self.InitializePanel()
+ self.MakeNewBuffers()
+
self.InHereNum = 0
self.CreateCursors()
pass
def LeftUpEvent(self,event):
- if self.HasCapture():
+ if self.HasCapture():
self.ReleaseMouse()
if self.GUIMode:
if self.GUIMode == "ZoomIn":
else:
self._ForegroundHTdc = None
- def OnSize(self,event):
- self.PanelSize = array(self.GetClientSizeTuple(),Int32)
+ def OnSize(self, event=None):
+ self.InitializePanel()
+ self.SizeTimer.Start(50, oneShot=True)
+
+ def OnSizeTimer(self, event=None):
+ self.MakeNewBuffers()
+ self.Draw()
+
+ def InitializePanel(self):
+ self.PanelSize = self.GetClientSizeTuple()
+ if self.PanelSize == (0,0):
+ ## OS-X sometimes gives a Size event when the panel is size (0,0)
+ self.PanelSize = (2,2)
+ self.PanelSize = array(self.PanelSize, Int32)
self.HalfPanelSize = self.PanelSize / 2 # lrk: added for speed in WorldToPixel
if self.PanelSize[0] == 0 or self.PanelSize[1] == 0:
self.AspectRatio = 1.0
else:
self.AspectRatio = float(self.PanelSize[0]) / self.PanelSize[1]
- self.MakeNewBuffers()
- self.Draw()
def OnPaint(self, event):
dc = wx.PaintDC(self)
animation, for instance.
"""
- if sometrue(self.PanelSize < 1 ): # it's possible for this to get called before being properly initialized.
+ if sometrue(self.PanelSize <= 2 ): # it's possible for this to get called before being properly initialized.
return
if self.Debug: start = clock()
ScreenDC = wx.ClientDC(self)
pass
else:
raise FloatCanvasError('CoordType must be either "Panel", "Pixel", or "World"')
-
- #print "shifting by:", shift
self.ViewPortCenter = self.ViewPortCenter + shift
self.MapProjectionVector = self.ProjectionFun(self.ViewPortCenter)
self.BoundingBox = None
self.ViewPortCenter= array( (0,0), Float)
self.TransformVector = array( (1,-1), Float)
- self.MapProjectionVector = array( (1,1), Float)
+ self.MapProjectionVector = array( (1,1), Float)
self.Scale = 1
self.BoundingBoxDirty = False