X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/ec873c943d71f0d5f13e3398557071448cda6c23..a4027e74873007e3430af3bd77019bcab76f6c04:/wxPython/misc/fixdc.py diff --git a/wxPython/misc/fixdc.py b/wxPython/misc/fixdc.py deleted file mode 100644 index 29e98000c5..0000000000 --- a/wxPython/misc/fixdc.py +++ /dev/null @@ -1,130 +0,0 @@ -""" -This module will do surgery on the wx.DC class in wxPython 2.5.1.5 to -make it act like the wx.DC class in later versions will. To use this -module simply import it in one of your program's modules before you -use any DC's. It does its work upon import and then is done. - -This module will *only* do something if it is imported in an app -running on wxPython 2.5.1.5, for all other versions it will do -nothing. This means that you can include it with your application and -then if your user is on 2.5.1.5 the DC methods will be updated, but if -they are on a newer version (or an older one for that matter) then -nothing will be done and your code using DCs will still be compatible. - -So what does it do? In a nutshell, the old 2.4.x style of method -names, where the 'normal' name takes separate parameters for x, y, -width and height will be restored, and the new methods that take -wx.Point and/or wx.Size (which can also be converted from 2-element -sequences) will be given new non-default method names. The 2.5.1.5 -'XY' style names will be removed. The new names for the 'Point/Size' -methods are: - - * BlitPointSize - * CrossHairPoint - * DrawArcPoint - * DrawBitmapPoint - * DrawCheckMarkRect - * DrawCirclePoint - * DrawEllipsePointSize - * DrawEllipticArcPointSize - * DrawIconPoint - * DrawLinePoint - * DrawPointPoint - * DrawRectanglePointSize - * DrawRotatedTextPoint - * DrawRoundedRectanglePointSize - * DrawTextPoint - * FloodFillPoint - * GetPixelPoint - * SetClippingRegionPointSize - -Please note that only the names that you access the methods by will be -changed. The names used in docstrings as well as the names used to -call the extenaion functions and the names used when raising -exceptions will still use the old names. (Of course once a new -version of wxPython has been built with this new style then this will -no longer apply. The new names will be the real names.) For -example:: - - Traceback (most recent call last): - File "/usr/lib/python2.3/site-packages/wx/lib/buttons.py", line 272, in OnPaint - self.DrawBezel(dc, x1, y1, x2, y2) - File "/usr/lib/python2.3/site-packages/wx/lib/buttons.py", line 220, in DrawBezel - dc.DrawLine((x1+i, y1), (x1+i, y2-i)) - File "/usr/lib/python2.3/site-packages/wx/gdi.py", line 2293, in DrawLine - return _gdi.DC_DrawLineXY(*args, **kwargs) - TypeError: DC_DrawLineXY() takes exactly 5 arguments (3 given) - - -WARNING: If you import this module then the wx.DC class will be - changed for the entire application, so if you use code from - the wx.lib package (or 3rd party modules that have already - been converted to the doomed 2.5.1.5 implementaion of the DC - Draw methods) then that code will break as shown above. This - is an all-or-nothing fix, (just like the next version of - wxPython will be,) so you *will* need to do something to - resolve this situation if you run into it. The best thing to - do of course is to correct the library module to work with - the corrected DC semantics and then send me a patch, although - it probably won't be too long before the library modules are - updated in CVS so you could get a copy of them there. - ---Robin -""" - -import wx - -_names = [ - ("BlitXY", "Blit", "BlitPointSize"), - ("CrossHairXY", "CrossHair", "CrossHairPoint"), - ("DrawArcXY", "DrawArc", "DrawArcPoint"), - ("DrawBitmapXY", "DrawBitmap", "DrawBitmapPoint"), - ("DrawCheckMarkXY", "DrawCheckMark", "DrawCheckMarkRect"), - ("DrawCircleXY", "DrawCircle", "DrawCirclePoint"), - ("DrawEllipseXY", "DrawEllipse", "DrawEllipsePointSize"), - ("DrawEllipticArcXY", "DrawEllipticArc", "DrawEllipticArcPointSize"), - ("DrawIconXY", "DrawIcon", "DrawIconPoint"), - ("DrawLineXY", "DrawLine", "DrawLinePoint"), - ("DrawPointXY", "DrawPoint", "DrawPointPoint"), - ("DrawRectangleXY", "DrawRectangle", "DrawRectanglePointSize"), - ("DrawRotatedTextXY", "DrawRotatedText", "DrawRotatedTextPoint"), - ("DrawRoundedRectangleXY", "DrawRoundedRectangle", "DrawRoundedRectanglePointSize"), - ("DrawTextXY", "DrawText", "DrawTextPoint"), - ("FloodFillXY", "FloodFill", "FloodFillPoint"), - ("GetPixelXY", "GetPixel", "GetPixelPoint"), - ("SetClippingRegionXY", "SetClippingRegion", "SetClippingRegionPointSize"), -] - - -# this is a bit of handy code from the Python Cookbook -def _renamefunction(function, name): - """ - This function returns a function identical to the given one, but - with the given name. - """ - from types import FunctionType, CodeType - - c = function.func_code - if c.co_name != name: - # rename the code object. - c = CodeType(c.co_argcount, c.co_nlocals, c.co_stacksize, - c.co_flags, c.co_code, c.co_consts, - c.co_names, c.co_varnames, c.co_filename, - name, c.co_firstlineno, c.co_lnotab) - if function.func_defaults != None: - return FunctionType(c, function.func_globals, name, - function.func_defaults) - return FunctionType(c, function.func_globals, name) - - -if wx.VERSION[:4] == (2,5,1,5): - for old, norm, new in _names: - m_old = getattr(wx.DC, old) - m_norm = getattr(wx.DC, norm) - setattr(wx.DC, new, _renamefunction(m_norm, new)) - setattr(wx.DC, norm, _renamefunction(m_old, norm)) - delattr(wx.DC, old) - - del old, norm, new, m_old, m_norm - -