diff --git a/bin/make-new-etg-file.py b/bin/make-new-etg-file.py index 5809fa6f..8305a94f 100755 --- a/bin/make-new-etg-file.py +++ b/bin/make-new-etg-file.py @@ -78,7 +78,7 @@ if __name__ == '__main__': unitteststub = """\ import unittest -import wtc +from unittests import wtc import wx #--------------------------------------------------------------------------- diff --git a/demo/PseudoDC.py b/demo/PseudoDC.py index b5364f7d..21b72edd 100644 --- a/demo/PseudoDC.py +++ b/demo/PseudoDC.py @@ -1,6 +1,7 @@ #!/usr/bin/env python import wx +import wx.adv import images import random @@ -10,7 +11,7 @@ W = 2000 H = 2000 SW = 150 SH = 150 -SHAPE_COUNT = 2500 +SHAPE_COUNT = 750 hitradius = 5 #--------------------------------------------------------------------------- @@ -58,7 +59,7 @@ class MyCanvas(wx.ScrolledWindow): self.SetScrollRate(20,20) # create a PseudoDC to record our drawing - self.pdc = wx.PseudoDC() + self.pdc = wx.adv.PseudoDC() self.pen_cache = {} self.brush_cache = {} self.DoDrawing(self.pdc) @@ -81,7 +82,7 @@ class MyCanvas(wx.ScrolledWindow): def OffsetRect(self, r): xView, yView = self.GetViewStart() xDelta, yDelta = self.GetScrollPixelsPerUnit() - r.OffsetXY(-(xView*xDelta),-(yView*yDelta)) + r.Offset(-(xView*xDelta),-(yView*yDelta)) def OnMouse(self, event): global hitradius @@ -123,14 +124,14 @@ class MyCanvas(wx.ScrolledWindow): def RandomPen(self): c = random.choice(colours) t = random.randint(1, 4) - if not self.pen_cache.has_key( (c, t) ): + if (c, t) not in self.pen_cache: self.pen_cache[(c, t)] = wx.Pen(c, t) return self.pen_cache[(c, t)] def RandomBrush(self): c = random.choice(colours) - if not self.brush_cache.has_key(c): + if c not in self.brush_cache: self.brush_cache[c] = wx.Brush(c) return self.brush_cache[c] @@ -144,12 +145,15 @@ class MyCanvas(wx.ScrolledWindow): # wx.PaintDC and then blit the bitmap to it when dc is # deleted. dc = wx.BufferedPaintDC(self) - # use PrepateDC to set position correctly - self.PrepareDC(dc) + # we need to clear the dc BEFORE calling PrepareDC bg = wx.Brush(self.GetBackgroundColour()) dc.SetBackground(bg) dc.Clear() + + # use PrepareDC to set position correctly + self.PrepareDC(dc) + # create a clipping rect from our position and size # and the Update Region xv, yv = self.GetViewStart() @@ -158,9 +162,12 @@ class MyCanvas(wx.ScrolledWindow): rgn = self.GetUpdateRegion() rgn.Offset(x,y) r = rgn.GetBox() - # draw to the dc using the calculated clipping rect + + # Draw the saved drawing operations to the dc using the calculated + # clipping rect self.pdc.DrawToDCClipped(dc,r) + def DoDrawing(self, dc): random.seed() self.objids = [] @@ -298,9 +305,9 @@ def runTest(frame, nb, log): overview = """
-DrawToDC(dc)-The operations can be tagged with an id in order to associated them with a +The operations can be tagged with an id in order to associate them with a specific object. To do this use:
SetId(id)
-Every operation after this will be associated with id until SetId is called
+Every operation after this will be associated with that tag id until SetId is called
again. The PseudoDC also supports object level clipping. To enable this use:
SetIdBounds(id,rect)
@@ -320,7 +327,7 @@ for each object that should be clipped. Then use:
DrawToDCClipped(dc, clippingRect)
To draw the PseudoDC to a real dc. This is useful for large scrolled windows
-where many objects are offscreen.
+where many objects are off screen.
Objects can be moved around without re-drawing using:
TranslateId(id, dx, dy)
diff --git a/docs/classic_vs_phoenix.rst b/docs/classic_vs_phoenix.rst
index b1f79def..fa42dcce 100644
--- a/docs/classic_vs_phoenix.rst
+++ b/docs/classic_vs_phoenix.rst
@@ -22,170 +22,170 @@ Functions and Classes Modifications
=========================================================== ===========================================================
`Classic` Name `Phoenix` Name
=========================================================== ===========================================================
-AboutBox :func:`adv.AboutBox `
-AboutDialogInfo :class:`adv.AboutDialogInfo`
+AboutBox :func:`wx.adv.AboutBox `
+AboutDialogInfo :class:`wx.adv.AboutDialogInfo`
AcceleratorEntry_Create ``MISSING``
ANIHandler ``MISSING``
App_CleanUp ``MISSING``
-ArtProvider_Delete :meth:`ArtProvider.Delete`
-ArtProvider_GetBitmap :meth:`ArtProvider.GetBitmap`
-ArtProvider_GetIcon :meth:`ArtProvider.GetIcon`
-ArtProvider_GetIconBundle :meth:`ArtProvider.GetIconBundle`
-ArtProvider_GetMessageBoxIcon :meth:`ArtProvider.GetMessageBoxIcon`
-ArtProvider_GetMessageBoxIconId :meth:`ArtProvider.GetMessageBoxIconId`
-ArtProvider_GetNativeSizeHint :meth:`ArtProvider.GetNativeSizeHint`
-ArtProvider_GetSizeHint :meth:`ArtProvider.GetSizeHint`
-ArtProvider_HasNativeProvider :meth:`ArtProvider.HasNativeProvider`
-ArtProvider_Insert :meth:`ArtProvider.Insert`
-ArtProvider_Pop :meth:`ArtProvider.Pop`
-ArtProvider_Push :meth:`ArtProvider.Push`
-ArtProvider_PushBack :meth:`ArtProvider.PushBack`
-Bitmap.SetBitmapSelected :meth:`Bitmap.SetBitmapPressed`
-BitmapFromBits :class:`Bitmap`
-BitmapFromIcon :class:`Bitmap`
-BitmapFromImage :class:`Bitmap`
-BitmapFromXPMData :class:`Bitmap`
+ArtProvider_Delete :meth:`wx.ArtProvider.Delete`
+ArtProvider_GetBitmap :meth:`wx.ArtProvider.GetBitmap`
+ArtProvider_GetIcon :meth:`wx.ArtProvider.GetIcon`
+ArtProvider_GetIconBundle :meth:`wx.ArtProvider.GetIconBundle`
+ArtProvider_GetMessageBoxIcon :meth:`wx.ArtProvider.GetMessageBoxIcon`
+ArtProvider_GetMessageBoxIconId :meth:`wx.ArtProvider.GetMessageBoxIconId`
+ArtProvider_GetNativeSizeHint :meth:`wx.ArtProvider.GetNativeSizeHint`
+ArtProvider_GetSizeHint :meth:`wx.ArtProvider.GetSizeHint`
+ArtProvider_HasNativeProvider :meth:`wx.ArtProvider.HasNativeProvider`
+ArtProvider_Insert :meth:`wx.ArtProvider.Insert`
+ArtProvider_Pop :meth:`wx.ArtProvider.Pop`
+ArtProvider_Push :meth:`wx.ArtProvider.Push`
+ArtProvider_PushBack :meth:`wx.ArtProvider.PushBack`
+Bitmap.SetBitmapSelected :meth:`wx.Bitmap.SetBitmapPressed`
+BitmapFromBits :class:`wx.Bitmap`
+BitmapFromIcon :class:`wx.Bitmap`
+BitmapFromImage :class:`wx.Bitmap`
+BitmapFromXPMData :class:`wx.Bitmap`
BMPHandler ``MISSING``
-BookCtrlBase_GetClassDefaultAttributes :meth:`BookCtrl.GetClassDefaultAttributes `
-BrushFromBitmap :class:`Brush`
-Button_GetClassDefaultAttributes :meth:`Button.GetClassDefaultAttributes `
-Button_GetDefaultSize :meth:`Button.GetDefaultSize`
-CalculateLayoutEvent :class:`adv.CalculateLayoutEvent`
-Caret_GetBlinkTime :meth:`Caret.GetBlinkTime`
-Caret_SetBlinkTime :meth:`Caret.SetBlinkTime`
-CheckBox_GetClassDefaultAttributes :meth:`CheckBox.GetClassDefaultAttributes `
-Choice_GetClassDefaultAttributes :meth:`Choice.GetClassDefaultAttributes `
-ChoicebookEvent :class:`BookCtrlEvent`
-Clipboard_Get :meth:`Clipboard.Get`
-ClipboardEvent :class:`ClipboardTextEvent`
+BookCtrlBase_GetClassDefaultAttributes :meth:`wx.BookCtrl.GetClassDefaultAttributes `
+BrushFromBitmap :class:`wx.Brush`
+Button_GetClassDefaultAttributes :meth:`wx.Button.GetClassDefaultAttributes `
+Button_GetDefaultSize :meth:`wx.Button.GetDefaultSize`
+CalculateLayoutEvent :class:`wx.adv.CalculateLayoutEvent`
+Caret_GetBlinkTime :meth:`wx.Caret.GetBlinkTime`
+Caret_SetBlinkTime :meth:`wx.Caret.SetBlinkTime`
+CheckBox_GetClassDefaultAttributes :meth:`wx.CheckBox.GetClassDefaultAttributes `
+Choice_GetClassDefaultAttributes :meth:`wx.Choice.GetClassDefaultAttributes `
+ChoicebookEvent :class:`wx.BookCtrlEvent`
+Clipboard_Get :meth:`wx.Clipboard.Get`
+ClipboardEvent :class:`wx.ClipboardTextEvent`
ClipboardLocker ``MISSING``
-Colour.SetFromString :meth:`Colour.Set`
-ColourRGB :class:`Colour`
-ComboBox_GetClassDefaultAttributes :meth:`ComboBox.GetClassDefaultAttributes `
-CommandLinkButton :class:`adv.CommandLinkButton`
-ConfigBase_Create :meth:`ConfigBase.Create`
-ConfigBase_DontCreateOnDemand :meth:`ConfigBase.DontCreateOnDemand`
-ConfigBase_Get :meth:`ConfigBase.Get`
-ConfigBase_Set :meth:`ConfigBase.Set`
-Control_Ellipsize :meth:`Control.Ellipsize`
-Control_EscapeMnemonics :meth:`Control.EscapeMnemonics`
+Colour.SetFromString :meth:`wx.Colour.Set`
+ColourRGB :class:`wx.Colour`
+ComboBox_GetClassDefaultAttributes :meth:`wx.ComboBox.GetClassDefaultAttributes `
+CommandLinkButton :class:`wx.adv.CommandLinkButton`
+ConfigBase_Create :meth:`wx.ConfigBase.Create`
+ConfigBase_DontCreateOnDemand :meth:`wx.ConfigBase.DontCreateOnDemand`
+ConfigBase_Get :meth:`wx.ConfigBase.Get`
+ConfigBase_Set :meth:`wx.ConfigBase.Set`
+Control_Ellipsize :meth:`wx.Control.Ellipsize`
+Control_EscapeMnemonics :meth:`wx.Control.EscapeMnemonics`
Control_FindAccelIndex ``MISSING``
-Control_GetClassDefaultAttributes :meth:`Control.GetClassDefaultAttributes `
+Control_GetClassDefaultAttributes :meth:`wx.Control.GetClassDefaultAttributes `
Control_GetCompositeControlsDefaultAttributes ``MISSING``
-Control_RemoveMnemonics :meth:`Control.RemoveMnemonics`
+Control_RemoveMnemonics :meth:`wx.Control.RemoveMnemonics`
CPPFileSystemHandler ``REMOVED``
-CreateFileTipProvider :func:`adv.CreateFileTipProvider `
+CreateFileTipProvider :func:`wx.adv.CreateFileTipProvider `
CURHandler ``MISSING``
-CursorFromImage :class:`Cursor`
-CustomDataFormat :class:`DataFormat`
-DateEvent :class:`adv.DateEvent`
-DatePickerCtrl :class:`adv.DatePickerCtrl`
-DatePickerCtrlBase :class:`adv.DatePickerCtrl`
-DateSpan_Day :meth:`DateSpan.Day`
-DateSpan_Days :meth:`DateSpan.Days`
-DateSpan_Month :meth:`DateSpan.Month`
-DateSpan_Months :meth:`DateSpan.Months`
-DateSpan_Week :meth:`DateSpan.Week`
-DateSpan_Weeks :meth:`DateSpan.Weeks`
-DateSpan_Year :meth:`DateSpan.Year`
-DateSpan_Years :meth:`DateSpan.Years`
-DateTime_ConvertYearToBC :meth:`DateTime.ConvertYearToBC`
-DateTime_GetAmPmStrings :meth:`DateTime.GetAmPmStrings`
-DateTime_GetBeginDST :meth:`DateTime.GetBeginDST`
-DateTime_GetCentury :meth:`DateTime.GetCentury`
-DateTime_GetCountry :meth:`DateTime.GetCountry`
-DateTime_GetCurrentMonth :meth:`DateTime.GetCurrentMonth`
-DateTime_GetCurrentYear :meth:`DateTime.GetCurrentYear`
-DateTime_GetEndDST :meth:`DateTime.GetEndDST`
-DateTime_GetEnglishMonthName :meth:`DateTime.GetEnglishMonthName`
-DateTime_GetEnglishWeekDayName :meth:`DateTime.GetEnglishWeekDayName`
-DateTime_GetMonthName :meth:`DateTime.GetMonthName`
+CursorFromImage :class:`wx.Cursor`
+CustomDataFormat :class:`wx.DataFormat`
+DateEvent :class:`wx.adv.DateEvent`
+DatePickerCtrl :class:`wx.adv.DatePickerCtrl`
+DatePickerCtrlBase :class:`wx.adv.DatePickerCtrl`
+DateSpan_Day :meth:`wx.DateSpan.Day`
+DateSpan_Days :meth:`wx.DateSpan.Days`
+DateSpan_Month :meth:`wx.DateSpan.Month`
+DateSpan_Months :meth:`wx.DateSpan.Months`
+DateSpan_Week :meth:`wx.DateSpan.Week`
+DateSpan_Weeks :meth:`wx.DateSpan.Weeks`
+DateSpan_Year :meth:`wx.DateSpan.Year`
+DateSpan_Years :meth:`wx.DateSpan.Years`
+DateTime_ConvertYearToBC :meth:`wx.DateTime.ConvertYearToBC`
+DateTime_GetAmPmStrings :meth:`wx.DateTime.GetAmPmStrings`
+DateTime_GetBeginDST :meth:`wx.DateTime.GetBeginDST`
+DateTime_GetCentury :meth:`wx.DateTime.GetCentury`
+DateTime_GetCountry :meth:`wx.DateTime.GetCountry`
+DateTime_GetCurrentMonth :meth:`wx.DateTime.GetCurrentMonth`
+DateTime_GetCurrentYear :meth:`wx.DateTime.GetCurrentYear`
+DateTime_GetEndDST :meth:`wx.DateTime.GetEndDST`
+DateTime_GetEnglishMonthName :meth:`wx.DateTime.GetEnglishMonthName`
+DateTime_GetEnglishWeekDayName :meth:`wx.DateTime.GetEnglishWeekDayName`
+DateTime_GetMonthName :meth:`wx.DateTime.GetMonthName`
DateTime_GetNumberOfDaysInMonth ``MISSING``
DateTime_GetNumberOfDaysinYear ``MISSING``
-DateTime_GetWeekDayName :meth:`DateTime.GetWeekDayName`
-DateTime_IsDSTApplicable :meth:`DateTime.IsDSTApplicable`
-DateTime_IsLeapYear :meth:`DateTime.IsLeapYear`
-DateTime_IsWestEuropeanCountry :meth:`DateTime.IsWestEuropeanCountry`
-DateTime_Now :meth:`DateTime.Now`
-DateTime_SetCountry :meth:`DateTime.SetCountry`
-DateTime_SetToWeekOfYear :meth:`DateTime.SetToWeekOfYear`
-DateTime_Today :meth:`DateTime.Today`
-DateTime_UNow :meth:`DateTime.UNow`
-DateTimeFromDateTime :class:`DateTime`
-Dialog_EnableLayoutAdaptation :meth:`Dialog.EnableLayoutAdaptation`
-Dialog_GetClassDefaultAttributes :meth:`Dialog.GetClassDefaultAttributes `
-Dialog_GetLayoutAdapter :meth:`Dialog.GetLayoutAdapter`
-Dialog_IsLayoutAdaptationEnabled :meth:`Dialog.IsLayoutAdaptationEnabled`
-Dialog_SetLayoutAdapter :meth:`Dialog.SetLayoutAdapter`
+DateTime_GetWeekDayName :meth:`wx.DateTime.GetWeekDayName`
+DateTime_IsDSTApplicable :meth:`wx.DateTime.IsDSTApplicable`
+DateTime_IsLeapYear :meth:`wx.DateTime.IsLeapYear`
+DateTime_IsWestEuropeanCountry :meth:`wx.DateTime.IsWestEuropeanCountry`
+DateTime_Now :meth:`wx.DateTime.Now`
+DateTime_SetCountry :meth:`wx.DateTime.SetCountry`
+DateTime_SetToWeekOfYear :meth:`wx.DateTime.SetToWeekOfYear`
+DateTime_Today :meth:`wx.DateTime.Today`
+DateTime_UNow :meth:`wx.DateTime.UNow`
+DateTimeFromDateTime :class:`wx.DateTime`
+Dialog_EnableLayoutAdaptation :meth:`wx.Dialog.EnableLayoutAdaptation`
+Dialog_GetClassDefaultAttributes :meth:`wx.Dialog.GetClassDefaultAttributes `
+Dialog_GetLayoutAdapter :meth:`wx.Dialog.GetLayoutAdapter`
+Dialog_IsLayoutAdaptationEnabled :meth:`wx.Dialog.IsLayoutAdaptationEnabled`
+Dialog_SetLayoutAdapter :meth:`wx.Dialog.SetLayoutAdapter`
DirItemData ``MISSING``
-Display_GetCount :meth:`Display.GetCount`
-Display_GetFromPoint :meth:`Display.GetFromPoint`
-Display_GetFromWindow :meth:`Display.GetFromWindow`
+Display_GetCount :meth:`wx.Display.GetCount`
+Display_GetFromPoint :meth:`wx.Display.GetFromPoint`
+Display_GetFromWindow :meth:`wx.Display.GetFromWindow`
DragIcon ``MISSING``
DragListItem ``MISSING``
DragString ``MISSING``
DragTreeItem ``MISSING``
DROP_ICON ``MISSING``
-EmptyBitmap :class:`Bitmap`
-EmptyIcon :class:`Icon`
-EmptyImage :class:`Image`
+EmptyBitmap :class:`wx.Bitmap`
+EmptyIcon :class:`wx.Icon`
+EmptyImage :class:`wx.Image`
EncodingConverter ``MISSING``
EncodingConverter_CanConvert ``MISSING``
EncodingConverter_GetAllEquivalents ``MISSING``
EncodingConverter_GetPlatformEquivalents ``MISSING``
-EventLoopBase_GetActive :meth:`EventLoopBase.GetActive`
-EventLoopBase_SetActive :meth:`EventLoopBase.SetActive`
+EventLoopBase_GetActive :meth:`wx.EventLoopBase.GetActive`
+EventLoopBase_SetActive :meth:`wx.EventLoopBase.SetActive`
EventProcessInHandlerOnly ``MISSING``
EVT_COMMAND ``MISSING``
EVT_COMMAND_RANGE ``MISSING``
ExpandEnvVars ``MISSING``
-FFontFromPixelSize :class:`Font`
-FileConfig_GetGlobalFileName :meth:`FileConfig.GetGlobalFileName`
-FileConfig_GetLocalFileName :meth:`FileConfig.GetLocalFileName`
-FileSystem_AddHandler :meth:`FileSystem.AddHandler`
+FFontFromPixelSize :class:`wx.Font`
+FileConfig_GetGlobalFileName :meth:`wx.FileConfig.GetGlobalFileName`
+FileConfig_GetLocalFileName :meth:`wx.FileConfig.GetLocalFileName`
+FileSystem_AddHandler :meth:`wx.FileSystem.AddHandler`
FileSystem_CleanUpHandlers ``MISSING``
-FileSystem_FileNameToURL :meth:`FileSystem.FileNameToURL`
-FileSystem_RemoveHandler :meth:`FileSystem.RemoveHandler`
-FileSystem_URLToFileName :meth:`FileSystem.URLToFileName`
+FileSystem_FileNameToURL :meth:`wx.FileSystem.FileNameToURL`
+FileSystem_RemoveHandler :meth:`wx.FileSystem.RemoveHandler`
+FileSystem_URLToFileName :meth:`wx.FileSystem.URLToFileName`
FileSystemHandler_GetAnchor ``MISSING``
FileSystemHandler_GetLeftLocation ``MISSING``
-FileSystemHandler_GetMimeTypeFromExt :meth:`FileSystemHandler.GetMimeTypeFromExt`
+FileSystemHandler_GetMimeTypeFromExt :meth:`wx.FileSystemHandler.GetMimeTypeFromExt`
FileSystemHandler_GetProtocol ``MISSING``
FileSystemHandler_GetRightLocation ``MISSING``
-FileType_ExpandCommand :meth:`FileType.ExpandCommand`
+FileType_ExpandCommand :meth:`wx.FileType.ExpandCommand`
FileTypeInfoSequence ``MISSING``
-FindWindowById :meth:`Window.FindWindowById`
-Font2 :class:`Font`
+FindWindowById :meth:`wx.Window.FindWindowById`
+Font2 :class:`wx.Font`
Font_AdjustToSymbolicSize ``MISSING``
-Font_GetDefaultEncoding :meth:`Font.GetDefaultEncoding`
-Font_SetDefaultEncoding :meth:`Font.SetDefaultEncoding`
-FontEnumerator_GetEncodings :meth:`FontEnumerator.GetEncodings`
-FontEnumerator_GetFacenames :meth:`FontEnumerator.GetFacenames`
-FontEnumerator_IsValidFacename :meth:`FontEnumerator.IsValidFacename`
-FontFromNativeInfo :class:`Font`
-FontFromNativeInfoString :class:`Font`
-FontFromPixelSize :class:`Font`
-FontMapper_Get :meth:`FontMapper.Get`
+Font_GetDefaultEncoding :meth:`wx.Font.GetDefaultEncoding`
+Font_SetDefaultEncoding :meth:`wx.Font.SetDefaultEncoding`
+FontEnumerator_GetEncodings :meth:`wx.FontEnumerator.GetEncodings`
+FontEnumerator_GetFacenames :meth:`wx.FontEnumerator.GetFacenames`
+FontEnumerator_IsValidFacename :meth:`wx.FontEnumerator.IsValidFacename`
+FontFromNativeInfo :class:`wx.Font`
+FontFromNativeInfoString :class:`wx.Font`
+FontFromPixelSize :class:`wx.Font`
+FontMapper_Get :meth:`wx.FontMapper.Get`
FontMapper_GetDefaultConfigPath ``MISSING``
-FontMapper_GetEncoding :meth:`FontMapper.GetEncoding`
-FontMapper_GetEncodingDescription :meth:`FontMapper.GetEncodingDescription`
-FontMapper_GetEncodingFromName :meth:`FontMapper.GetEncodingFromName`
-FontMapper_GetEncodingName :meth:`FontMapper.GetEncodingName`
-FontMapper_GetSupportedEncodingsCount :meth:`FontMapper.GetSupportedEncodingsCount`
-FontMapper_Set :meth:`FontMapper.Set`
-Frame_GetClassDefaultAttributes :meth:`Frame.GetClassDefaultAttributes `
-FutureCall :class:`CallLater`
-Gauge_GetClassDefaultAttributes :meth:`Gauge.GetClassDefaultAttributes `
-GBSizerItemSizer :class:`GbSizerItem`
-GBSizerItemSpacer :class:`GbSizerItem`
-GBSizerItemWindow :class:`GbSizerItem`
+FontMapper_GetEncoding :meth:`wx.FontMapper.GetEncoding`
+FontMapper_GetEncodingDescription :meth:`wx.FontMapper.GetEncodingDescription`
+FontMapper_GetEncodingFromName :meth:`wx.FontMapper.GetEncodingFromName`
+FontMapper_GetEncodingName :meth:`wx.FontMapper.GetEncodingName`
+FontMapper_GetSupportedEncodingsCount :meth:`wx.FontMapper.GetSupportedEncodingsCount`
+FontMapper_Set :meth:`wx.FontMapper.Set`
+Frame_GetClassDefaultAttributes :meth:`wx.Frame.GetClassDefaultAttributes `
+FutureCall :class:`wx.CallLater`
+Gauge_GetClassDefaultAttributes :meth:`wx.Gauge.GetClassDefaultAttributes `
+GBSizerItemSizer :class:`wx.GbSizerItem`
+GBSizerItemSpacer :class:`wx.GbSizerItem`
+GBSizerItemWindow :class:`wx.GbSizerItem`
GDIObjListBase ``MISSING``
-GenericFindWindowAtPoint :func:`FindWindowAtPoint`
+GenericFindWindowAtPoint :func:`wx.FindWindowAtPoint`
GetAccelFromString ``MISSING``
GetCurrentId ``MISSING``
GetCurrentTime ``MISSING``
GetDefaultPyEncoding ``REMOVED``
-GetDisplayDepth :func:`DisplayDepth`
+GetDisplayDepth :func:`wx.DisplayDepth`
GetFreeMemory ``MISSING``
GetLocale ``MISSING``
GetLocalTime ``MISSING``
@@ -200,344 +200,344 @@ GetTextFromUser ``MISSING``
GetUTCTime ``MISSING``
GetXDisplay ``MISSING``
GIFHandler ``MISSING``
-GraphicsContext_Create :meth:`GraphicsContext.Create`
-GraphicsContext_CreateFromNative :meth:`GraphicsContext.CreateFromNative`
-GraphicsContext_CreateFromNativeWindow :meth:`GraphicsContext.CreateFromNativeWindow`
-GraphicsContext_CreateMeasuringContext :meth:`GraphicsContext.Create`
-GraphicsRenderer_GetCairoRenderer :meth:`GraphicsRenderer.GetCairoRenderer`
-GraphicsRenderer_GetDefaultRenderer :meth:`GraphicsRenderer.GetDefaultRenderer`
-HelpProvider_Get :meth:`HelpProvider.Get`
-HelpProvider_Set :meth:`HelpProvider.Set`
+GraphicsContext_Create :meth:`wx.GraphicsContext.Create`
+GraphicsContext_CreateFromNative :meth:`wx.GraphicsContext.CreateFromNative`
+GraphicsContext_CreateFromNativeWindow :meth:`wx.GraphicsContext.CreateFromNativeWindow`
+GraphicsContext_CreateMeasuringContext :meth:`wx.GraphicsContext.Create`
+GraphicsRenderer_GetCairoRenderer :meth:`wx.GraphicsRenderer.GetCairoRenderer`
+GraphicsRenderer_GetDefaultRenderer :meth:`wx.GraphicsRenderer.GetDefaultRenderer`
+HelpProvider_Get :meth:`wx.HelpProvider.Get`
+HelpProvider_Set :meth:`wx.HelpProvider.Set`
HtmlListBox ``MISSING``
-HyperlinkCtrl :class:`adv.HyperlinkCtrl`
-HyperlinkEvent :class:`adv.HyperlinkEvent`
+HyperlinkCtrl :class:`wx.adv.HyperlinkCtrl`
+HyperlinkEvent :class:`wx.adv.HyperlinkEvent`
ICOHandler ``MISSING``
-IconBundleFromFile :class:`IconBundle`
-IconBundleFromIcon :class:`IconBundle`
-IconBundleFromStream :class:`IconBundle`
-IconFromBitmap :class:`Icon`
-IconFromLocation :class:`Icon`
-IconFromXPMData :class:`Icon`
-IdleEvent_GetMode :meth:`IdleEvent.GetMode`
-IdleEvent_SetMode :meth:`IdleEvent.SetMode`
-Image_AddHandler :meth:`Image.AddHandler`
-Image_CanRead :meth:`Image.CanRead`
-Image_CanReadStream :meth:`Image.CanRead`
+IconBundleFromFile :class:`wx.IconBundle`
+IconBundleFromIcon :class:`wx.IconBundle`
+IconBundleFromStream :class:`wx.IconBundle`
+IconFromBitmap :class:`wx.Icon`
+IconFromLocation :class:`wx.Icon`
+IconFromXPMData :class:`wx.Icon`
+IdleEvent_GetMode :meth:`wx.IdleEvent.GetMode`
+IdleEvent_SetMode :meth:`wx.IdleEvent.SetMode`
+Image_AddHandler :meth:`wx.Image.AddHandler`
+Image_CanRead :meth:`wx.Image.CanRead`
+Image_CanReadStream :meth:`wx.Image.CanRead`
Image_GetHandlers ``MISSING``
-Image_GetImageCount :meth:`Image.GetImageCount`
-Image_GetImageExtWildcard :meth:`Image.GetImageExtWildcard`
-Image_HSVtoRGB :meth:`Image.HSVtoRGB`
-Image_HSVValue :class:`HSVValue`
-Image_InsertHandler :meth:`Image.InsertHandler`
-Image_RemoveHandler :meth:`Image.RemoveHandler`
-Image_RGBtoHSV :meth:`Image.RGBtoHSV`
-Image_RGBValue :class:`RGBValue`
-ImageFromMime :class:`Image`
-ImageFromStream :class:`Image`
-ImageFromStreamMime :class:`Image`
-ImageHistogram_MakeKey :meth:`ImageHistogram.MakeKey`
+Image_GetImageCount :meth:`wx.Image.GetImageCount`
+Image_GetImageExtWildcard :meth:`wx.Image.GetImageExtWildcard`
+Image_HSVtoRGB :meth:`wx.Image.HSVtoRGB`
+Image_HSVValue :class:`wx.HSVValue`
+Image_InsertHandler :meth:`wx.Image.InsertHandler`
+Image_RemoveHandler :meth:`wx.Image.RemoveHandler`
+Image_RGBtoHSV :meth:`wx.Image.RGBtoHSV`
+Image_RGBValue :class:`wx.RGBValue`
+ImageFromMime :class:`wx.Image`
+ImageFromStream :class:`wx.Image`
+ImageFromStreamMime :class:`wx.Image`
+ImageHistogram_MakeKey :meth:`wx.ImageHistogram.MakeKey`
IsStockID ``MISSING``
IsStockLabel ``MISSING``
-Joystick :class:`adv.Joystick`
+Joystick :class:`wx.adv.Joystick`
JPEGHandler ``MISSING``
-KeyEvent.m_altDown :meth:`~KeyboardState.GetModifiers`
-KeyEvent.m_controlDown :meth:`~KeyboardState.GetModifiers`
-KeyEvent.m_keyCode :attr:`KeyEvent.KeyCode`
-KeyEvent.m_metaDown :meth:`~KeyboardState.GetModifiers`
-KeyEvent.m_shiftDown :meth:`~KeyboardState.GetModifiers`
-KeyEvent.m_x :attr:`KeyEvent.X`
-KeyEvent.m_y :attr:`KeyEvent.Y`
-LayoutAlgorithm :class:`adv.LayoutAlgorithm`
-ListbookEvent :class:`BookCtrlEvent`
-ListBox_GetClassDefaultAttributes :meth:`ListBox.GetClassDefaultAttributes `
-ListCtrl_GetClassDefaultAttributes :meth:`ListCtrl.GetClassDefaultAttributes `
-ListCtrl_HasColumnOrderSupport :meth:`ListCtrl.HasColumnOrderSupport`
-ListEvent.m_code :attr:`ListEvent.KeyCode`
-ListEvent.m_col :attr:`ListEvent.Column`
-ListEvent.m_item :attr:`ListEvent.Item`
-ListEvent.m_itemIndex :attr:`ListEvent.Index`
-ListEvent.m_oldItemIndex :attr:`ListEvent.CacheFrom`
-ListEvent.m_pointDrag :attr:`ListEvent.Point`
-ListItem.m_col :attr:`ListItem.Column`
-ListItem.m_data :attr:`ListItem.Data`
-ListItem.m_format :attr:`ListItem.Align`
-ListItem.m_image :attr:`ListItem.Image`
-ListItem.m_itemId :attr:`ListItem.Id`
-ListItem.m_mask :attr:`ListItem.Mask`
-ListItem.m_state :attr:`ListItem.State`
-ListItem.m_stateMask :attr:`ListItem.State`
-ListItem.m_text :attr:`ListItem.Text`
-ListItem.m_width :attr:`ListItem.Width`
-Locale_AddCatalogLookupPathPrefix :meth:`Locale.AddCatalogLookupPathPrefix`
-Locale_AddLanguage :meth:`Locale.AddLanguage`
-Locale_FindLanguageInfo :meth:`Locale.FindLanguageInfo`
-Locale_GetInfo :meth:`Locale.GetInfo`
-Locale_GetLanguageCanonicalName :meth:`Locale.GetLanguageCanonicalName`
-Locale_GetLanguageInfo :meth:`Locale.GetLanguageInfo`
-Locale_GetLanguageName :meth:`Locale.GetLanguageName`
-Locale_GetSystemEncoding :meth:`Locale.GetSystemEncoding`
-Locale_GetSystemEncodingName :meth:`Locale.GetSystemEncodingName`
-Locale_GetSystemLanguage :meth:`Locale.GetSystemLanguage`
-Locale_IsAvailable :meth:`Locale.IsAvailable`
-Log_AddTraceMask :meth:`Log.AddTraceMask`
-Log_ClearTraceMasks :meth:`Log.ClearTraceMasks`
+KeyEvent.m_altDown :meth:`wx.KeyboardState.GetModifiers`
+KeyEvent.m_controlDown :meth:`wx.KeyboardState.GetModifiers`
+KeyEvent.m_keyCode :attr:`wx.KeyEvent.KeyCode`
+KeyEvent.m_metaDown :meth:`wx.KeyboardState.GetModifiers`
+KeyEvent.m_shiftDown :meth:`wx.KeyboardState.GetModifiers`
+KeyEvent.m_x :attr:`wx.KeyEvent.X`
+KeyEvent.m_y :attr:`wx.KeyEvent.Y`
+LayoutAlgorithm :class:`wx.adv.LayoutAlgorithm`
+ListbookEvent :class:`wx.BookCtrlEvent`
+ListBox_GetClassDefaultAttributes :meth:`wx.ListBox.GetClassDefaultAttributes `
+ListCtrl_GetClassDefaultAttributes :meth:`wx.ListCtrl.GetClassDefaultAttributes `
+ListCtrl_HasColumnOrderSupport :meth:`wx.ListCtrl.HasColumnOrderSupport`
+ListEvent.m_code :attr:`wx.ListEvent.KeyCode`
+ListEvent.m_col :attr:`wx.ListEvent.Column`
+ListEvent.m_item :attr:`wx.ListEvent.Item`
+ListEvent.m_itemIndex :attr:`wx.ListEvent.Index`
+ListEvent.m_oldItemIndex :attr:`wx.ListEvent.CacheFrom`
+ListEvent.m_pointDrag :attr:`wx.ListEvent.Point`
+ListItem.m_col :attr:`wx.ListItem.Column`
+ListItem.m_data :attr:`wx.ListItem.Data`
+ListItem.m_format :attr:`wx.ListItem.Align`
+ListItem.m_image :attr:`wx.ListItem.Image`
+ListItem.m_itemId :attr:`wx.ListItem.Id`
+ListItem.m_mask :attr:`wx.ListItem.Mask`
+ListItem.m_state :attr:`wx.ListItem.State`
+ListItem.m_stateMask :attr:`wx.ListItem.State`
+ListItem.m_text :attr:`wx.ListItem.Text`
+ListItem.m_width :attr:`wx.ListItem.Width`
+Locale_AddCatalogLookupPathPrefix :meth:`wx.Locale.AddCatalogLookupPathPrefix`
+Locale_AddLanguage :meth:`wx.Locale.AddLanguage`
+Locale_FindLanguageInfo :meth:`wx.Locale.FindLanguageInfo`
+Locale_GetInfo :meth:`wx.Locale.GetInfo`
+Locale_GetLanguageCanonicalName :meth:`wx.Locale.GetLanguageCanonicalName`
+Locale_GetLanguageInfo :meth:`wx.Locale.GetLanguageInfo`
+Locale_GetLanguageName :meth:`wx.Locale.GetLanguageName`
+Locale_GetSystemEncoding :meth:`wx.Locale.GetSystemEncoding`
+Locale_GetSystemEncodingName :meth:`wx.Locale.GetSystemEncodingName`
+Locale_GetSystemLanguage :meth:`wx.Locale.GetSystemLanguage`
+Locale_IsAvailable :meth:`wx.Locale.IsAvailable`
+Log_AddTraceMask :meth:`wx.Log.AddTraceMask`
+Log_ClearTraceMasks :meth:`wx.Log.ClearTraceMasks`
Log_DoCreateOnDemand ``MISSING``
-Log_DontCreateOnDemand :meth:`Log.DontCreateOnDemand`
-Log_EnableLogging :meth:`Log.EnableLogging`
-Log_FlushActive :meth:`Log.FlushActive`
-Log_GetActiveTarget :meth:`Log.GetActiveTarget`
+Log_DontCreateOnDemand :meth:`wx.Log.DontCreateOnDemand`
+Log_EnableLogging :meth:`wx.Log.EnableLogging`
+Log_FlushActive :meth:`wx.Log.FlushActive`
+Log_GetActiveTarget :meth:`wx.Log.GetActiveTarget`
Log_GetComponentLevel ``MISSING``
-Log_GetLogLevel :meth:`Log.GetLogLevel`
-Log_GetRepetitionCounting :meth:`Log.GetRepetitionCounting`
-Log_GetTimestamp :meth:`Log.GetTimestamp`
+Log_GetLogLevel :meth:`wx.Log.GetLogLevel`
+Log_GetRepetitionCounting :meth:`wx.Log.GetRepetitionCounting`
+Log_GetTimestamp :meth:`wx.Log.GetTimestamp`
Log_GetTraceMask ``MISSING``
-Log_GetTraceMasks :meth:`Log.GetTraceMasks`
-Log_GetVerbose :meth:`Log.GetVerbose`
-Log_IsAllowedTraceMask :meth:`Log.IsAllowedTraceMask`
-Log_IsEnabled :meth:`Log.IsEnabled`
-Log_IsLevelEnabled :meth:`Log.IsLevelEnabled`
-Log_RemoveTraceMask :meth:`Log.RemoveTraceMask`
-Log_Resume :meth:`Log.Resume`
-Log_SetActiveTarget :meth:`Log.SetActiveTarget`
-Log_SetComponentLevel :meth:`Log.SetComponentLevel`
-Log_SetLogLevel :meth:`Log.SetLogLevel`
-Log_SetRepetitionCounting :meth:`Log.SetRepetitionCounting`
-Log_SetTimestamp :meth:`Log.SetTimestamp`
+Log_GetTraceMasks :meth:`wx.Log.GetTraceMasks`
+Log_GetVerbose :meth:`wx.Log.GetVerbose`
+Log_IsAllowedTraceMask :meth:`wx.Log.IsAllowedTraceMask`
+Log_IsEnabled :meth:`wx.Log.IsEnabled`
+Log_IsLevelEnabled :meth:`wx.Log.IsLevelEnabled`
+Log_RemoveTraceMask :meth:`wx.Log.RemoveTraceMask`
+Log_Resume :meth:`wx.Log.Resume`
+Log_SetActiveTarget :meth:`wx.Log.SetActiveTarget`
+Log_SetComponentLevel :meth:`wx.Log.SetComponentLevel`
+Log_SetLogLevel :meth:`wx.Log.SetLogLevel`
+Log_SetRepetitionCounting :meth:`wx.Log.SetRepetitionCounting`
+Log_SetTimestamp :meth:`wx.Log.SetTimestamp`
Log_SetTraceMask ``MISSING``
-Log_SetVerbose :meth:`Log.SetVerbose`
-Log_Suspend :meth:`Log.Suspend`
+Log_SetVerbose :meth:`wx.Log.SetVerbose`
+Log_Suspend :meth:`wx.Log.Suspend`
Log_TimeStamp ``MISSING``
-LogInfo :func:`LogMessage`
-LogStatusFrame :func:`LogStatus`
+LogInfo :func:`wx.LogMessage`
+LogStatusFrame :func:`wx.LogStatus`
LogTrace ``MISSING``
-MaskColour :class:`Colour`
-MemoryDCFromDC :class:`MemoryDC`
-MemoryFSHandler_AddFile :meth:`MemoryFSHandler.AddFile`
-MemoryFSHandler_AddFileWithMimeType :meth:`MemoryFSHandler.AddFileWithMimeType`
-MemoryFSHandler_RemoveFile :meth:`MemoryFSHandler.RemoveFile`
+MaskColour :class:`wx.Colour`
+MemoryDCFromDC :class:`wx.MemoryDC`
+MemoryFSHandler_AddFile :meth:`wx.MemoryFSHandler.AddFile`
+MemoryFSHandler_AddFileWithMimeType :meth:`wx.MemoryFSHandler.AddFileWithMimeType`
+MemoryFSHandler_RemoveFile :meth:`wx.MemoryFSHandler.RemoveFile`
MenuBar_GetAutoWindowMenu ``MISSING``
-MenuBar_MacSetCommonMenuBar :meth:`MenuBar.MacSetCommonMenuBar`
+MenuBar_MacSetCommonMenuBar :meth:`wx.MenuBar.MacSetCommonMenuBar`
MenuBar_SetAutoWindowMenu ``MISSING``
MenuItem_GetDefaultMarginWidth ``MISSING``
-MenuItem_GetLabelText :meth:`MenuItem.GetLabelText`
-MetaFile :class:`msw.MemoryDC`
+MenuItem_GetLabelText :meth:`wx.MenuItem.GetLabelText`
+MetaFile :class:`wx.msw.MemoryDC`
MetafileDataObject ``MISSING``
-MetaFileDC :class:`msw.MetafileDC`
-MimeTypesManager_IsOfType :meth:`MimeTypesManager.IsOfType`
+MetaFileDC :class:`wx.msw.MetafileDC`
+MimeTypesManager_IsOfType :meth:`wx.MimeTypesManager.IsOfType`
ModalEventLoop ``MISSING``
MutexGuiEnter ``MISSING``
MutexGuiLeave ``MISSING``
MutexGuiLocker ``MISSING``
-NamedColour :class:`Colour`
+NamedColour :class:`wx.Colour`
NativeEncodingInfo ``MISSING``
NcPaintEvent ``MISSING``
-Notebook_GetClassDefaultAttributes :meth:`Notebook.GetClassDefaultAttributes `
-NotebookEvent :class:`BookCtrlEvent`
+Notebook_GetClassDefaultAttributes :meth:`wx.Notebook.GetClassDefaultAttributes `
+NotebookEvent :class:`wx.BookCtrlEvent`
NotebookPage ``MISSING``
-NotificationMessage :class:`adv.NotificationMessage`
+NotificationMessage :class:`wx.adv.NotificationMessage`
NullFileTypeInfo ``MISSING``
NumberEntryDialog ``MISSING``
-Panel_GetClassDefaultAttributes :meth:`Panel.GetClassDefaultAttributes `
+Panel_GetClassDefaultAttributes :meth:`wx.Panel.GetClassDefaultAttributes `
PCXHandler ``MISSING``
-PlatformInformation_GetOperatingSystemDirectory :meth:`PlatformInfo.GetOperatingSystemDirectory`
+PlatformInformation_GetOperatingSystemDirectory :meth:`wx.PlatformInfo.GetOperatingSystemDirectory`
PNGHandler ``MISSING``
PNMHandler ``MISSING``
-Point2DCopy :class:`Point2DDouble`
-Point2DFromPoint :class:`Point2DDouble`
-PreBitmapButton :class:`BitmapButton`
-PreButton :class:`Button`
-PreCheckBox :class:`CheckBox`
-PreCheckListBox :class:`CheckListBox`
-PreChoice :class:`Choice`
-PreChoicebook :class:`Choicebook`
-PreCollapsiblePane :class:`CollapsiblePane`
-PreColourPickerCtrl :class:`ColourPickerCtrl`
-PreComboBox :class:`ComboBox`
-PreCommandLinkButton :class:`adv.CommandLinkButton`
-PreControl :class:`Control`
-PreDatePickerCtrl :class:`adv.DatePickerCtrl`
-PreDialog :class:`Dialog`
-PreDirFilterListCtrl :class:`DirFilterListCtrl`
-PreDirPickerCtrl :class:`DirPickerCtrl`
-PreFileCtrl :class:`FileCtrl`
-PreFilePickerCtrl :class:`FilePickerCtrl`
-PreFindReplaceDialog :class:`FindReplaceDialog`
-PreFontPickerCtrl :class:`FontPickerCtrl`
-PreFrame :class:`Frame`
-PreGauge :class:`Gauge`
-PreGenericDirCtrl :class:`GenericDirCtrl`
-PreHScrolledWindow :class:`HScrolledWindow`
+Point2DCopy :class:`wx.Point2DDouble`
+Point2DFromPoint :class:`wx.Point2DDouble`
+PreBitmapButton :class:`wx.BitmapButton`
+PreButton :class:`wx.Button`
+PreCheckBox :class:`wx.CheckBox`
+PreCheckListBox :class:`wx.CheckListBox`
+PreChoice :class:`wx.Choice`
+PreChoicebook :class:`wx.Choicebook`
+PreCollapsiblePane :class:`wx.CollapsiblePane`
+PreColourPickerCtrl :class:`wx.ColourPickerCtrl`
+PreComboBox :class:`wx.ComboBox`
+PreCommandLinkButton :class:`wx.adv.CommandLinkButton`
+PreControl :class:`wx.Control`
+PreDatePickerCtrl :class:`wx.adv.DatePickerCtrl`
+PreDialog :class:`wx.Dialog`
+PreDirFilterListCtrl :class:`wx.DirFilterListCtrl`
+PreDirPickerCtrl :class:`wx.DirPickerCtrl`
+PreFileCtrl :class:`wx.FileCtrl`
+PreFilePickerCtrl :class:`wx.FilePickerCtrl`
+PreFindReplaceDialog :class:`wx.FindReplaceDialog`
+PreFontPickerCtrl :class:`wx.FontPickerCtrl`
+PreFrame :class:`wx.Frame`
+PreGauge :class:`wx.Gauge`
+PreGenericDirCtrl :class:`wx.GenericDirCtrl`
+PreHScrolledWindow :class:`wx.HScrolledWindow`
PreHtmlListBox ``MISSING``
-PreHVScrolledWindow :class:`HVScrolledWindow`
-PreHyperlinkCtrl :class:`adv.HyperlinkCtrl`
-PreInfoBar :class:`InfoBar`
-PreListbook :class:`Listbook`
-PreListBox :class:`ListBox`
-PreListCtrl :class:`ListCtrl`
-PreListView :class:`ListView`
-PreMDIChildFrame :class:`MDIChildFrame`
-PreMDIClientWindow :class:`MDIClientWindow`
-PreMDIParentFrame :class:`MDIParentFrame`
-PreMiniFrame :class:`MiniFrame`
-PreNotebook :class:`Notebook`
-PrePanel :class:`Panel`
-PrePopupTransientWindow :class:`PopupTransientWindow`
-PrePopupWindow :class:`PopupWindow`
+PreHVScrolledWindow :class:`wx.HVScrolledWindow`
+PreHyperlinkCtrl :class:`wx.adv.HyperlinkCtrl`
+PreInfoBar :class:`wx.InfoBar`
+PreListbook :class:`wx.Listbook`
+PreListBox :class:`wx.ListBox`
+PreListCtrl :class:`wx.ListCtrl`
+PreListView :class:`wx.ListView`
+PreMDIChildFrame :class:`wx.MDIChildFrame`
+PreMDIClientWindow :class:`wx.MDIClientWindow`
+PreMDIParentFrame :class:`wx.MDIParentFrame`
+PreMiniFrame :class:`wx.MiniFrame`
+PreNotebook :class:`wx.Notebook`
+PrePanel :class:`wx.Panel`
+PrePopupTransientWindow :class:`wx.PopupTransientWindow`
+PrePopupWindow :class:`wx.PopupWindow`
PrePyAxBaseWindow ``MISSING``
-PrePyControl :class:`Control`
-PrePyPanel :class:`Panel`
-PrePyPickerBase :class:`PickerBase`
-PrePyScrolledWindow :class:`ScrolledWindow`
-PrePyWindow :class:`Window`
-PreRadioBox :class:`RadioBox`
-PreRadioButton :class:`RadioButton`
-PreSashLayoutWindow :class:`adv.SashLayoutWindow`
-PreSashWindow :class:`adv.SashWindow`
-PreScrollBar :class:`ScrollBar`
-PreScrolledWindow :class:`ScrolledWindow`
-PreSearchCtrl :class:`SearchCtrl`
+PrePyControl :class:`wx.Control`
+PrePyPanel :class:`wx.Panel`
+PrePyPickerBase :class:`wx.PickerBase`
+PrePyScrolledWindow :class:`wx.ScrolledWindow`
+PrePyWindow :class:`wx.Window`
+PreRadioBox :class:`wx.RadioBox`
+PreRadioButton :class:`wx.RadioButton`
+PreSashLayoutWindow :class:`wx.adv.SashLayoutWindow`
+PreSashWindow :class:`wx.adv.SashWindow`
+PreScrollBar :class:`wx.ScrollBar`
+PreScrolledWindow :class:`wx.ScrolledWindow`
+PreSearchCtrl :class:`wx.SearchCtrl`
PreSimpleHtmlListBox ``MISSING``
-PreSingleInstanceChecker :class:`SingleInstanceChecker`
-PreSlider :class:`Slider`
-PreSpinButton :class:`SpinButton`
-PreSpinCtrl :class:`SpinCtrl`
-PreSpinCtrlDouble :class:`SpinCtrlDouble`
-PreSplitterWindow :class:`SplitterWindow`
-PreStaticBitmap :class:`StaticBitmap`
-PreStaticBox :class:`StaticBox`
-PreStaticLine :class:`StaticLine`
-PreStaticText :class:`StaticText`
-PreStatusBar :class:`StatusBar`
-PreTextCtrl :class:`TextCtrl`
-PreToggleButton :class:`ToggleButton`
-PreToolBar :class:`ToolBar`
-PreToolbook :class:`Toolbook`
-PreTreebook :class:`Treebook`
-PreTreeCtrl :class:`TreeCtrl`
-PreVListBox :class:`VListBox`
-PreVScrolledWindow :class:`VScrolledWindow`
-PreWindow :class:`Window`
-Printer_GetLastError :meth:`Printer.GetLastError`
-Process_Exists :meth:`Process.Exists`
-Process_Kill :meth:`Process.Kill`
-Process_Open :meth:`Process.Open`
-PseudoDC ``MISSING``
-PyApp_GetComCtl32Version :meth:`PyApp.GetComCtl32Version`
-PyApp_GetMacAboutMenuItemId :meth:`PyApp.GetMacAboutMenuItemId`
-PyApp_GetMacExitMenuItemId :meth:`PyApp.GetMacExitMenuItemId`
-PyApp_GetMacHelpMenuTitleName :meth:`PyApp.GetMacHelpMenuTitleName`
-PyApp_GetMacPreferencesMenuItemId :meth:`PyApp.GetMacPreferencesMenuItemId`
+PreSingleInstanceChecker :class:`wx.SingleInstanceChecker`
+PreSlider :class:`wx.Slider`
+PreSpinButton :class:`wx.SpinButton`
+PreSpinCtrl :class:`wx.SpinCtrl`
+PreSpinCtrlDouble :class:`wx.SpinCtrlDouble`
+PreSplitterWindow :class:`wx.SplitterWindow`
+PreStaticBitmap :class:`wx.StaticBitmap`
+PreStaticBox :class:`wx.StaticBox`
+PreStaticLine :class:`wx.StaticLine`
+PreStaticText :class:`wx.StaticText`
+PreStatusBar :class:`wx.StatusBar`
+PreTextCtrl :class:`wx.TextCtrl`
+PreToggleButton :class:`wx.ToggleButton`
+PreToolBar :class:`wx.ToolBar`
+PreToolbook :class:`wx.Toolbook`
+PreTreebook :class:`wx.Treebook`
+PreTreeCtrl :class:`wx.TreeCtrl`
+PreVListBox :class:`wx.VListBox`
+PreVScrolledWindow :class:`wx.VScrolledWindow`
+PreWindow :class:`wx.Window`
+Printer_GetLastError :meth:`wx.Printer.GetLastError`
+Process_Exists :meth:`wx.Process.Exists`
+Process_Kill :meth:`wx.Process.Kill`
+Process_Open :meth:`wx.Process.Open`
+PseudoDC :class:`wx.adv.PseudoDC`
+PyApp_GetComCtl32Version :meth:`wx.PyApp.GetComCtl32Version`
+PyApp_GetMacAboutMenuItemId :meth:`wx.PyApp.GetMacAboutMenuItemId`
+PyApp_GetMacExitMenuItemId :meth:`wx.PyApp.GetMacExitMenuItemId`
+PyApp_GetMacHelpMenuTitleName :meth:`wx.PyApp.GetMacHelpMenuTitleName`
+PyApp_GetMacPreferencesMenuItemId :meth:`wx.PyApp.GetMacPreferencesMenuItemId`
PyApp_GetMacSupportPCMenuShortcuts ``MISSING``
-PyApp_GetShell32Version :meth:`PyApp.GetShell32Version`
+PyApp_GetShell32Version :meth:`wx.PyApp.GetShell32Version`
PyApp_GetTraitsIfExists ``MISSING``
-PyApp_IsDisplayAvailable :meth:`PyApp.IsDisplayAvailable`
-PyApp_IsMainLoopRunning :meth:`PyApp.IsMainLoopRunning `
-PyApp_SetMacAboutMenuItemId :meth:`PyApp.SetMacAboutMenuItemId`
-PyApp_SetMacExitMenuItemId :meth:`PyApp.SetMacExitMenuItemId`
-PyApp_SetMacHelpMenuTitleName :meth:`PyApp.SetMacHelpMenuTitleName`
-PyApp_SetMacPreferencesMenuItemId :meth:`PyApp.SetMacPreferencesMenuItemId`
+PyApp_IsDisplayAvailable :meth:`wx.PyApp.IsDisplayAvailable`
+PyApp_IsMainLoopRunning :meth:`wx.PyApp.IsMainLoopRunning `
+PyApp_SetMacAboutMenuItemId :meth:`wx.PyApp.SetMacAboutMenuItemId`
+PyApp_SetMacExitMenuItemId :meth:`wx.PyApp.SetMacExitMenuItemId`
+PyApp_SetMacHelpMenuTitleName :meth:`wx.PyApp.SetMacHelpMenuTitleName`
+PyApp_SetMacPreferencesMenuItemId :meth:`wx.PyApp.SetMacPreferencesMenuItemId`
PyApp_SetMacSupportPCMenuShortcuts ``MISSING``
PyAxBaseWindow_FromHWND ``MISSING``
-PyBitmapDataObject :class:`BitmapDataObject`
-PyControl :class:`Control`
-PyDataObjectSimple :class:`DataObjectSimple`
+PyBitmapDataObject :class:`wx.BitmapDataObject`
+PyControl :class:`wx.Control`
+PyDataObjectSimple :class:`wx.DataObjectSimple`
PyDeadObjectError `RuntimeError`
-PyDropTarget :class:`DropTarget`
-PyEvtHandler :class:`EvtHandler`
-PyImageHandler :class:`ImageHandler`
-PyLocale :class:`Locale`
-PyLog :class:`Log`
-PyPanel :class:`Panel`
-PyPickerBase :class:`PickerBase`
-PyPreviewControlBar :class:`PreviewControlBar`
-PyPreviewFrame :class:`PreviewFrame`
-PyPrintPreview :class:`PrintPreview`
-PyScrolledWindow :class:`ScrolledWindow`
-PySimpleApp :class:`App`
-PyTextDataObject :class:`TextDataObject`
-PyTimer :class:`Timer`
-PyTipProvider :class:`adv.TipProvider`
-PyValidator :class:`Validator`
-PyWindow :class:`Window`
+PyDropTarget :class:`wx.DropTarget`
+PyEvtHandler :class:`wx.EvtHandler`
+PyImageHandler :class:`wx.ImageHandler`
+PyLocale :class:`wx.Locale`
+PyLog :class:`wx.Log`
+PyPanel :class:`wx.Panel`
+PyPickerBase :class:`wx.PickerBase`
+PyPreviewControlBar :class:`wx.PreviewControlBar`
+PyPreviewFrame :class:`wx.PreviewFrame`
+PyPrintPreview :class:`wx.PrintPreview`
+PyScrolledWindow :class:`wx.ScrolledWindow`
+PySimpleApp :class:`wx.App`
+PyTextDataObject :class:`wx.TextDataObject`
+PyTimer :class:`wx.Timer`
+PyTipProvider :class:`wx.adv.TipProvider`
+PyValidator :class:`wx.Validator`
+PyWindow :class:`wx.Window`
Quantize ``MISSING``
Quantize_Quantize ``MISSING``
-QueryLayoutInfoEvent :class:`adv.QueryLayoutInfoEvent`
-RadioBox_GetClassDefaultAttributes :meth:`RadioBox.GetClassDefaultAttributes `
-RadioButton_GetClassDefaultAttributes :meth:`RadioButton.GetClassDefaultAttributes `
-RectPP :class:`Rect`
-RectPS :class:`Rect`
-RectS :class:`Rect`
-Rect.OffsetXY :meth:`Rect.Offset`
-RegionFromBitmap :class:`Region`
-RegionFromBitmapColour :class:`Region`
-RegionFromPoints :class:`Region`
-RendererNative_Get :meth:`RendererNative.Get`
-RendererNative_GetDefault :meth:`RendererNative.GetDefault`
-RendererNative_GetGeneric :meth:`RendererNative.GetGeneric`
-RendererNative_Set :meth:`RendererNative.Set`
-RendererVersion_IsCompatible :meth:`RendererVersion.IsCompatible`
-SashEvent :class:`adv.SashEvent`
-SashLayoutWindow :class:`adv.SashLayoutWindow`
-SashWindow :class:`adv.SashWindow`
-ScrollBar_GetClassDefaultAttributes :meth:`ScrollBar.GetClassDefaultAttributes `
-ScrolledWindow_GetClassDefaultAttributes :meth:`ScrolledWindow.GetClassDefaultAttributes `
-ScrollHelper :class:`VarHVScrollHelper`
-SearchCtrlBase :class:`SearchCtrl`
+QueryLayoutInfoEvent :class:`wx.adv.QueryLayoutInfoEvent`
+RadioBox_GetClassDefaultAttributes :meth:`wx.RadioBox.GetClassDefaultAttributes `
+RadioButton_GetClassDefaultAttributes :meth:`wx.RadioButton.GetClassDefaultAttributes `
+RectPP :class:`wx.Rect`
+RectPS :class:`wx.Rect`
+RectS :class:`wx.Rect`
+Rect.OffsetXY :meth:`wx.Rect.Offset`
+RegionFromBitmap :class:`wx.Region`
+RegionFromBitmapColour :class:`wx.Region`
+RegionFromPoints :class:`wx.Region`
+RendererNative_Get :meth:`wx.RendererNative.Get`
+RendererNative_GetDefault :meth:`wx.RendererNative.GetDefault`
+RendererNative_GetGeneric :meth:`wx.RendererNative.GetGeneric`
+RendererNative_Set :meth:`wx.RendererNative.Set`
+RendererVersion_IsCompatible :meth:`wx.RendererVersion.IsCompatible`
+SashEvent :class:`wx.adv.SashEvent`
+SashLayoutWindow :class:`wx.adv.SashLayoutWindow`
+SashWindow :class:`wx.adv.SashWindow`
+ScrollBar_GetClassDefaultAttributes :meth:`wx.ScrollBar.GetClassDefaultAttributes `
+ScrolledWindow_GetClassDefaultAttributes :meth:`wx.ScrolledWindow.GetClassDefaultAttributes `
+ScrollHelper :class:`wx.VarHVScrollHelper`
+SearchCtrlBase :class:`wx.SearchCtrl`
SetCursor ``MISSING``
SetDefaultPyEncoding ``REMOVED``
-SetBitmapSelected :meth:`AnyButton.SetBitmapPressed`
-ShowTip :func:`adv.ShowTip `
+SetBitmapSelected :meth:`wx.AnyButton.SetBitmapPressed`
+ShowTip :func:`wx.adv.ShowTip`
SimpleHtmlListBox ``MISSING``
-SizerFlags_GetDefaultBorder :meth:`SizerFlags.GetDefaultBorder`
-SizerItemSizer :class:`SizerItem`
-SizerItemSpacer :class:`SizerItem`
-SizerItemWindow :class:`SizerItem`
-Slider_GetClassDefaultAttributes :meth:`Slider.GetClassDefaultAttributes `
-Sound :class:`adv.Sound`
-Sound_PlaySound :meth:`adv.Sound.PlaySound`
-Sound_Stop :meth:`adv.Sound.Stop`
-SoundFromData :class:`adv.Sound`
-SpinButton_GetClassDefaultAttributes :meth:`SpinButton.GetClassDefaultAttributes `
-SpinCtrl_GetClassDefaultAttributes :meth:`SpinCtrl.GetClassDefaultAttributes `
-SplashScreen :class:`adv.SplashScreen`
+SizerFlags_GetDefaultBorder :meth:`wx.SizerFlags.GetDefaultBorder`
+SizerItemSizer :class:`wx.SizerItem`
+SizerItemSpacer :class:`wx.SizerItem`
+SizerItemWindow :class:`wx.SizerItem`
+Slider_GetClassDefaultAttributes :meth:`wx.Slider.GetClassDefaultAttributes `
+Sound :class:`wx.adv.Sound`
+Sound_PlaySound :meth:`wx.adv.Sound.PlaySound`
+Sound_Stop :meth:`wx.adv.Sound.Stop`
+SoundFromData :class:`wx.adv.Sound`
+SpinButton_GetClassDefaultAttributes :meth:`wx.SpinButton.GetClassDefaultAttributes `
+SpinCtrl_GetClassDefaultAttributes :meth:`wx.SpinCtrl.GetClassDefaultAttributes `
+SplashScreen :class:`wx.adv.SplashScreen`
SplashScreenWindow ``MISSING``
SplitterWindow.SetSashSize ``REMOVED``
-SplitterWindow_GetClassDefaultAttributes :meth:`SplitterWindow.GetClassDefaultAttributes `
+SplitterWindow_GetClassDefaultAttributes :meth:`wx.SplitterWindow.GetClassDefaultAttributes `
StandardDialogLayoutAdapter ``MISSING``
StandardDialogLayoutAdapter_DoFitWithScrolling ``MISSING``
StandardDialogLayoutAdapter_DoMustScroll ``MISSING``
StandardDialogLayoutAdapter_DoReparentControls ``MISSING``
-StandardPaths_Get :meth:`StandardPaths.Get`
-StaticBitmap_GetClassDefaultAttributes :meth:`StaticBitmap.GetClassDefaultAttributes `
-StaticBox_GetClassDefaultAttributes :meth:`StaticBox.GetClassDefaultAttributes `
-StaticLine_GetClassDefaultAttributes :meth:`StaticLine.GetClassDefaultAttributes `
-StaticLine_GetDefaultSize :meth:`StaticLine.GetDefaultSize`
-StaticText_GetClassDefaultAttributes :meth:`StaticText.GetClassDefaultAttributes `
-StatusBar_GetClassDefaultAttributes :meth:`StatusBar.GetClassDefaultAttributes `
-StockCursor :class:`Cursor`
-StockGDI_DeleteAll :meth:`StockGDI.DeleteAll`
-StockGDI_GetBrush :meth:`StockGDI.GetBrush`
-StockGDI_GetColour :meth:`StockGDI.GetColour`
-StockGDI_GetCursor :meth:`StockGDI.GetCursor`
-StockGDI_GetPen :meth:`StockGDI.GetPen`
-StockGDI_instance :meth:`StockGDI.instance`
+StandardPaths_Get :meth:`wx.StandardPaths.Get`
+StaticBitmap_GetClassDefaultAttributes :meth:`wx.StaticBitmap.GetClassDefaultAttributes `
+StaticBox_GetClassDefaultAttributes :meth:`wx.StaticBox.GetClassDefaultAttributes `
+StaticLine_GetClassDefaultAttributes :meth:`wx.StaticLine.GetClassDefaultAttributes `
+StaticLine_GetDefaultSize :meth:`wx.StaticLine.GetDefaultSize`
+StaticText_GetClassDefaultAttributes :meth:`wx.StaticText.GetClassDefaultAttributes `
+StatusBar_GetClassDefaultAttributes :meth:`wx.StatusBar.GetClassDefaultAttributes `
+StockCursor :class:`wx.Cursor`
+StockGDI_DeleteAll :meth:`wx.StockGDI.DeleteAll`
+StockGDI_GetBrush :meth:`wx.StockGDI.GetBrush`
+StockGDI_GetColour :meth:`wx.StockGDI.GetColour`
+StockGDI_GetCursor :meth:`wx.StockGDI.GetCursor`
+StockGDI_GetPen :meth:`wx.StockGDI.GetPen`
+StockGDI_instance :meth:`wx.StockGDI.instance`
StopWatch ``MISSING``
StyledTextCtrl.SetUseAntiAliasing ``REMOVED``
-SystemOptions_GetOption :meth:`SystemOptions.GetOption`
-SystemOptions_GetOptionInt :meth:`SystemOptions.GetOptionInt`
-SystemOptions_HasOption :meth:`SystemOptions.HasOption`
-SystemOptions_IsFalse :meth:`SystemOptions.IsFalse`
-SystemOptions_SetOption :meth:`SystemOptions.SetOption`
-SystemOptions_SetOptionInt :meth:`SystemOptions.SetOption`
-SystemSettings_GetColour :meth:`SystemSettings.GetColour`
-SystemSettings_GetFont :meth:`SystemSettings.GetFont`
-SystemSettings_GetMetric :meth:`SystemSettings.GetMetric`
-SystemSettings_GetScreenType :meth:`SystemSettings.GetScreenType`
-SystemSettings_HasFeature :meth:`SystemSettings.HasFeature`
+SystemOptions_GetOption :meth:`wx.SystemOptions.GetOption`
+SystemOptions_GetOptionInt :meth:`wx.SystemOptions.GetOptionInt`
+SystemOptions_HasOption :meth:`wx.SystemOptions.HasOption`
+SystemOptions_IsFalse :meth:`wx.SystemOptions.IsFalse`
+SystemOptions_SetOption :meth:`wx.SystemOptions.SetOption`
+SystemOptions_SetOptionInt :meth:`wx.SystemOptions.SetOption`
+SystemSettings_GetColour :meth:`wx.SystemSettings.GetColour`
+SystemSettings_GetFont :meth:`wx.SystemSettings.GetFont`
+SystemSettings_GetMetric :meth:`wx.SystemSettings.GetMetric`
+SystemSettings_GetScreenType :meth:`wx.SystemSettings.GetScreenType`
+SystemSettings_HasFeature :meth:`wx.SystemSettings.HasFeature`
SystemSettings_SetScreenType ``MISSING``
-TaskBarIcon :class:`adv.TaskBarIcon`
-TaskBarIcon_IsAvailable :meth:`adv.TaskBarIcon.IsAvailable`
-TaskBarIconEvent :class:`adv.TaskBarIconEvent`
+TaskBarIcon :class:`wx.adv.TaskBarIcon`
+TaskBarIcon_IsAvailable :meth:`wx.adv.TaskBarIcon.IsAvailable`
+TaskBarIconEvent :class:`wx.adv.TaskBarIconEvent`
TestFontEncoding ``MISSING``
TextAreaBase ``NONE (implementation detail)``
TextAttr_BitlistsEqPartial ``MISSING``
@@ -546,167 +546,167 @@ TextAttr_CombineBitlists ``MISSING``
TextAttr_RemoveStyle ``MISSING``
TextAttr_SplitParaCharStyles ``MISSING``
TextAttr_TabsEq ``MISSING``
-TextCtrl_GetClassDefaultAttributes :meth:`TextCtrl.GetClassDefaultAttributes `
+TextCtrl_GetClassDefaultAttributes :meth:`wx.TextCtrl.GetClassDefaultAttributes `
TextCtrlBase ``NONE (implementation detail)``
TextCtrlIface ``NONE (implementation detail)``
TextEntryBase ``NONE (implementation detail)``
TextUrlEvent ``MISSING``
TGAHandler ``MISSING``
-Thread_IsMain :meth:`IsMainThread`
+Thread_IsMain :meth:`wx.IsMainThread`
ThreadEvent ``MISSING``
TIFFHandler ``MISSING``
-TimeSpan_Day :meth:`TimeSpan.Day`
-TimeSpan_Days :meth:`TimeSpan.Days`
-TimeSpan_Hour :meth:`TimeSpan.Hour`
-TimeSpan_Hours :meth:`TimeSpan.Hours`
-TimeSpan_Millisecond :meth:`TimeSpan.Millisecond`
-TimeSpan_Milliseconds :meth:`TimeSpan.Milliseconds`
-TimeSpan_Minute :meth:`TimeSpan.Minute`
-TimeSpan_Minutes :meth:`TimeSpan.Minutes`
-TimeSpan_Second :meth:`TimeSpan.Second`
-TimeSpan_Seconds :meth:`TimeSpan.Seconds`
-TimeSpan_Week :meth:`TimeSpan.Week`
-TimeSpan_Weeks :meth:`TimeSpan.Weeks`
-TipProvider :class:`adv.TipProvider`
-ToggleButton_GetClassDefaultAttributes :meth:`ToggleButton.GetClassDefaultAttributes `
-ToolBar_GetClassDefaultAttributes :meth:`ToolBar.GetClassDefaultAttributes `
-ToolbookEvent :class:`BookCtrlEvent`
-ToolTip_Enable :meth:`ToolTip.Enable`
-ToolTip_SetAutoPop :meth:`ToolTip.SetAutoPop`
-ToolTip_SetDelay :meth:`ToolTip.SetDelay`
-ToolTip_SetMaxWidth :meth:`ToolTip.SetMaxWidth`
-ToolTip_SetReshow :meth:`ToolTip.SetReshow`
-TopLevelWindow_GetDefaultSize :meth:`TopLevelWindow.GetDefaultSize`
+TimeSpan_Day :meth:`wx.TimeSpan.Day`
+TimeSpan_Days :meth:`wx.TimeSpan.Days`
+TimeSpan_Hour :meth:`wx.TimeSpan.Hour`
+TimeSpan_Hours :meth:`wx.TimeSpan.Hours`
+TimeSpan_Millisecond :meth:`wx.TimeSpan.Millisecond`
+TimeSpan_Milliseconds :meth:`wx.TimeSpan.Milliseconds`
+TimeSpan_Minute :meth:`wx.TimeSpan.Minute`
+TimeSpan_Minutes :meth:`wx.TimeSpan.Minutes`
+TimeSpan_Second :meth:`wx.TimeSpan.Second`
+TimeSpan_Seconds :meth:`wx.TimeSpan.Seconds`
+TimeSpan_Week :meth:`wx.TimeSpan.Week`
+TimeSpan_Weeks :meth:`wx.TimeSpan.Weeks`
+TipProvider :class:`wx.adv.TipProvider`
+ToggleButton_GetClassDefaultAttributes :meth:`wx.ToggleButton.GetClassDefaultAttributes `
+ToolBar_GetClassDefaultAttributes :meth:`wx.ToolBar.GetClassDefaultAttributes `
+ToolbookEvent :class:`wx.BookCtrlEvent`
+ToolTip_Enable :meth:`wx.ToolTip.Enable`
+ToolTip_SetAutoPop :meth:`wx.ToolTip.SetAutoPop`
+ToolTip_SetDelay :meth:`wx.ToolTip.SetDelay`
+ToolTip_SetMaxWidth :meth:`wx.ToolTip.SetMaxWidth`
+ToolTip_SetReshow :meth:`wx.ToolTip.SetReshow`
+TopLevelWindow_GetDefaultSize :meth:`wx.TopLevelWindow.GetDefaultSize`
Trap ``MISSING``
-TreebookEvent :class:`BookCtrlEvent`
-TreeCtrl_GetClassDefaultAttributes :meth:`TreeCtrl.GetClassDefaultAttributes `
+TreebookEvent :class:`wx.BookCtrlEvent`
+TreeCtrl_GetClassDefaultAttributes :meth:`wx.TreeCtrl.GetClassDefaultAttributes `
TreeItemData ``REMOVED`` (a MappedType is being used instead to handle setting any PyObject as item data.)
-UpdateUIEvent_CanUpdate :meth:`UpdateUIEvent.CanUpdate`
-UpdateUIEvent_GetMode :meth:`UpdateUIEvent.GetMode`
-UpdateUIEvent_GetUpdateInterval :meth:`UpdateUIEvent.GetUpdateInterval`
-UpdateUIEvent_ResetUpdateTime :meth:`UpdateUIEvent.ResetUpdateTime`
-UpdateUIEvent_SetMode :meth:`UpdateUIEvent.SetMode`
-UpdateUIEvent_SetUpdateInterval :meth:`UpdateUIEvent.SetUpdateInterval`
-Validator_IsSilent :meth:`Validator.IsSilent`
+UpdateUIEvent_CanUpdate :meth:`wx.UpdateUIEvent.CanUpdate`
+UpdateUIEvent_GetMode :meth:`wx.UpdateUIEvent.GetMode`
+UpdateUIEvent_GetUpdateInterval :meth:`wx.UpdateUIEvent.GetUpdateInterval`
+UpdateUIEvent_ResetUpdateTime :meth:`wx.UpdateUIEvent.ResetUpdateTime`
+UpdateUIEvent_SetMode :meth:`wx.UpdateUIEvent.SetMode`
+UpdateUIEvent_SetUpdateInterval :meth:`wx.UpdateUIEvent.SetUpdateInterval`
+Validator_IsSilent :meth:`wx.Validator.IsSilent`
Validator_SetBellOnError ``REMOVED``
-Validator_SuppressBellOnError :meth:`Validator.SuppressBellOnError`
+Validator_SuppressBellOnError :meth:`wx.Validator.SuppressBellOnError`
WakeUpMainThread ``MISSING``
-Window_FindFocus :meth:`Window.FindFocus`
+Window_FindFocus :meth:`wx.Window.FindFocus`
Window_FromHWND ``MISSING``
-Window_GetCapture :meth:`Window.GetCapture`
-Window_GetClassDefaultAttributes :meth:`Window.GetClassDefaultAttributes`
-Window_NewControlId :meth:`Window.NewControlId`
-Window_UnreserveControlId :meth:`Window.UnreserveControlId`
+Window_GetCapture :meth:`wx.Window.GetCapture`
+Window_GetClassDefaultAttributes :meth:`wx.Window.GetClassDefaultAttributes`
+Window_NewControlId :meth:`wx.Window.NewControlId`
+Window_UnreserveControlId :meth:`wx.Window.UnreserveControlId`
XPMHandler ``MISSING``
-YieldIfNeeded :meth:`App.Yield` wx.GetApp().Yield(onlyIfNeeded=True)
+YieldIfNeeded :meth:`wx.App.Yield` wx.GetApp().Yield(onlyIfNeeded=True)
=========================================================== ===========================================================
-:class:`DC` Modifications
+:class:`wx.DC` Modifications
-------------------------
=========================================================== ===========================================================
`Classic` Name `Phoenix` Name
=========================================================== ===========================================================
BeginDrawing ``REMOVED``
-BlitPointSize :meth:`~DC.Blit`
-CalcBoundingBoxPoint :meth:`~DC.CalcBoundingBox`
-CrossHairPoint :meth:`~DC.CrossHair`
-DrawArcPoint :meth:`~DC.DrawArc`
-DrawBitmapPoint :meth:`~DC.DrawBitmap`
-DrawCheckMarkRect :meth:`~DC.DrawCheckMark`
-DrawCirclePoint :meth:`~DC.DrawCircle`
-DrawEllipsePointSize :meth:`~DC.DrawEllipse`
-DrawEllipseRect :meth:`~DC.DrawEllipse`
-DrawEllipticArcPointSize :meth:`~DC.DrawEllipticArc`
-DrawIconPoint :meth:`~DC.DrawIcon`
-DrawLinePoint :meth:`~DC.DrawLine`
-DrawPointPoint :meth:`~DC.DrawPoint`
-DrawRectanglePointSize :meth:`~DC.DrawRectangle`
-DrawRectangleRect :meth:`~DC.DrawRectangle`
-DrawRotatedTextPoint :meth:`~DC.DrawRotatedText`
-DrawRoundedRectanglePointSize :meth:`~DC.DrawRoundedRectangle`
-DrawRoundedRectangleRect :meth:`~DC.DrawRoundedRectangle`
-DrawTextPoint :meth:`~DC.DrawText`
+BlitPointSize :meth:`wx.DC.Blit`
+CalcBoundingBoxPoint :meth:`wx.DC.CalcBoundingBox`
+CrossHairPoint :meth:`wx.DC.CrossHair`
+DrawArcPoint :meth:`wx.DC.DrawArc`
+DrawBitmapPoint :meth:`wx.DC.DrawBitmap`
+DrawCheckMarkRect :meth:`wx.DC.DrawCheckMark`
+DrawCirclePoint :meth:`wx.DC.DrawCircle`
+DrawEllipsePointSize :meth:`wx.DC.DrawEllipse`
+DrawEllipseRect :meth:`wx.DC.DrawEllipse`
+DrawEllipticArcPointSize :meth:`wx.DC.DrawEllipticArc`
+DrawIconPoint :meth:`wx.DC.DrawIcon`
+DrawLinePoint :meth:`wx.DC.DrawLine`
+DrawPointPoint :meth:`wx.DC.DrawPoint`
+DrawRectanglePointSize :meth:`wx.DC.DrawRectangle`
+DrawRectangleRect :meth:`wx.DC.DrawRectangle`
+DrawRotatedTextPoint :meth:`wx.DC.DrawRotatedText`
+DrawRoundedRectanglePointSize :meth:`wx.DC.DrawRoundedRectangle`
+DrawRoundedRectangleRect :meth:`wx.DC.DrawRoundedRectangle`
+DrawTextPoint :meth:`wx.DC.DrawText`
EndDrawing ``REMOVED``
-FloodFillPoint :meth:`~DC.FloodFill`
-GetDeviceOriginTuple :meth:`~DC.GetDeviceOrigin`
+FloodFillPoint :meth:`wx.DC.FloodFill`
+GetDeviceOriginTuple :meth:`wx.DC.GetDeviceOrigin`
GetImpl ``REMOVED``
-GetLogicalOriginTuple :meth:`~DC.GetLogicalOrigin`
-GetMultiLineTextExtent :meth:`~DC.GetFullMultiLineTextExtent`
+GetLogicalOriginTuple :meth:`wx.DC.GetLogicalOrigin`
+GetMultiLineTextExtent :meth:`wx.DC.GetFullMultiLineTextExtent`
GetOptimization ``REMOVED``
-GetPixelPoint :meth:`~DC.GetPixel`
-GetResolution :meth:`~DC.GetPPI`
-GetSizeMMTuple :meth:`~DC.GetSizeMM`
-Ok :meth:`~DC.IsOk`
-SetClippingRect :meth:`~DC.SetClippingRegion`
-SetClippingRegionAsRegion :meth:`~DC.SetClippingRegion`
-SetClippingRegionPointSize :meth:`~DC.SetClippingRegion`
-SetDeviceOriginPoint :meth:`~DC.SetDeviceOrigin`
-SetLogicalOriginPoint :meth:`~DC.SetLogicalOrigin`
+GetPixelPoint :meth:`wx.DC.GetPixel`
+GetResolution :meth:`wx.DC.GetPPI`
+GetSizeMMTuple :meth:`wx.DC.GetSizeMM`
+Ok :meth:`wx.DC.IsOk`
+SetClippingRect :meth:`wx.DC.SetClippingRegion`
+SetClippingRegionAsRegion :meth:`wx.DC.SetClippingRegion`
+SetClippingRegionPointSize :meth:`wx.DC.SetClippingRegion`
+SetDeviceOriginPoint :meth:`wx.DC.SetDeviceOrigin`
+SetLogicalOriginPoint :meth:`wx.DC.SetLogicalOrigin`
SetOptimization ``REMOVED``
-StretchBlitPointSize :meth:`~DC.StretchBlit`
+StretchBlitPointSize :meth:`wx.DC.StretchBlit`
=========================================================== ===========================================================
-:class:`Window` Modifications
+:class:`wx.Window` Modifications
-----------------------------
=========================================================== ===========================================================
`Classic` Name `Phoenix` Name
=========================================================== ===========================================================
-ClientToScreenXY :meth:`~Window.ClientToScreen`
-ConvertDialogPointToPixels :meth:`~Window.ConvertDialogToPixels`
-ConvertDialogSizeToPixels :meth:`~Window.ConvertDialogToPixels`
-GetAdjustedBestSize :meth:`~Window.GetEffectiveMinSize`
-GetBestFittingSize :meth:`~Window.GetEffectiveMinSize`
-GetBestSizeTuple :meth:`~Window.GetBestSize`
-GetClientSizeTuple :meth:`~Window.GetClientSize`
-GetScreenPositionTuple :meth:`~Window.GetScreenPosition`
-GetSizeTuple :meth:`~Window.GetSize`
-GetToolTipString :meth:`~Window.GetToolTipText`
-HitTestXY :meth:`~Window.HitTest`
-IsExposedPoint :meth:`~Window.IsExposed`
-IsExposedRect :meth:`~Window.IsExposed`
+ClientToScreenXY :meth:`wx.Window.ClientToScreen`
+ConvertDialogPointToPixels :meth:`wx.Window.ConvertDialogToPixels`
+ConvertDialogSizeToPixels :meth:`wx.Window.ConvertDialogToPixels`
+GetAdjustedBestSize :meth:`wx.Window.GetEffectiveMinSize`
+GetBestFittingSize :meth:`wx.Window.GetEffectiveMinSize`
+GetBestSizeTuple :meth:`wx.Window.GetBestSize`
+GetClientSizeTuple :meth:`wx.Window.GetClientSize`
+GetScreenPositionTuple :meth:`wx.Window.GetScreenPosition`
+GetSizeTuple :meth:`wx.Window.GetSize`
+GetToolTipString :meth:`wx.Window.GetToolTipText`
+HitTestXY :meth:`wx.Window.HitTest`
+IsExposedPoint :meth:`wx.Window.IsExposed`
+IsExposedRect :meth:`wx.Window.IsExposed`
MakeModal ``REMOVED``
-PopupMenuXY :meth:`~Window.PopupMenu`
-ScreenToClientXY :meth:`~Window.ScreenToClient`
-SetBestFittingSize :meth:`~Window.SetInitialSize`
-SetClientSizeWH :meth:`~Window.SetClientSize`
-SetDimensions :meth:`~Window.SetSize`
-SetHelpTextForId :meth:`~Window.SetHelpText`
-SetSizeHintsSz :meth:`~Window.SetSizeHints`
-SetToolTipString :meth:`~Window.SetToolTip`
+PopupMenuXY :meth:`wx.Window.PopupMenu`
+ScreenToClientXY :meth:`wx.Window.ScreenToClient`
+SetBestFittingSize :meth:`wx.Window.SetInitialSize`
+SetClientSizeWH :meth:`wx.Window.SetClientSize`
+SetDimensions :meth:`wx.Window.SetSize`
+SetHelpTextForId :meth:`wx.Window.SetHelpText`
+SetSizeHintsSz :meth:`wx.Window.SetSizeHints`
+SetToolTipString :meth:`wx.Window.SetToolTip`
SetVirtualSizeHints ``REMOVED``
SetVirtualSizeHintsSz ``REMOVED``
=========================================================== ===========================================================
-:class:`Sizer` Modifications
+:class:`wx.Sizer` Modifications
----------------------------
=========================================================== ===========================================================
`Classic` Name `Phoenix` Name
=========================================================== ===========================================================
-AddF :meth:`~Sizer.Add`
-AddItem :meth:`~Sizer.Add`
-AddSizer :meth:`~Sizer.Add`
-AddWindow :meth:`~Sizer.Add`
-DeleteWindows :meth:`~Sizer.Clear`
-GetItemIndex :meth:`~Sizer.GetItem`
-GetMinSizeTuple :meth:`~Sizer.GetMinSize`
-GetPositionTuple :meth:`~Sizer.GetPosition`
-InsertF :meth:`~Sizer.Insert`
-InsertItem :meth:`~Sizer.Insert`
-InsertSizer :meth:`~Sizer.Insert`
-InsertWindow :meth:`~Sizer.Insert`
-PrependF :meth:`~Sizer.Prepend`
-PrependItem :meth:`~Sizer.Prepend`
-PrependSizer :meth:`~Sizer.Prepend`
-PrependWindow :meth:`~Sizer.Prepend`
-RemovePos :meth:`~Sizer.Remove`
-RemoveSizer :meth:`~Sizer.Remove`
-RemoveWindow :meth:`~Sizer.Remove`
+AddF :meth:`wx.Sizer.Add`
+AddItem :meth:`wx.Sizer.Add`
+AddSizer :meth:`wx.Sizer.Add`
+AddWindow :meth:`wx.Sizer.Add`
+DeleteWindows :meth:`wx.Sizer.Clear`
+GetItemIndex :meth:`wx.Sizer.GetItem`
+GetMinSizeTuple :meth:`wx.Sizer.GetMinSize`
+GetPositionTuple :meth:`wx.Sizer.GetPosition`
+InsertF :meth:`wx.Sizer.Insert`
+InsertItem :meth:`wx.Sizer.Insert`
+InsertSizer :meth:`wx.Sizer.Insert`
+InsertWindow :meth:`wx.Sizer.Insert`
+PrependF :meth:`wx.Sizer.Prepend`
+PrependItem :meth:`wx.Sizer.Prepend`
+PrependSizer :meth:`wx.Sizer.Prepend`
+PrependWindow :meth:`wx.Sizer.Prepend`
+RemovePos :meth:`wx.Sizer.Remove`
+RemoveSizer :meth:`wx.Sizer.Remove`
+RemoveWindow :meth:`wx.Sizer.Remove`
=========================================================== ===========================================================
@@ -719,11 +719,11 @@ wx.lib Modifications
=========================================================== ===========================================================
`Classic` Name `Phoenix` Name
=========================================================== ===========================================================
-wx.lib.buttonpanel :mod:`lib.agw.buttonpanel`
-wx.lib.customtreectrl :mod:`lib.agw.customtreectrl`
-wx.lib.flatnotebook :mod:`lib.agw.flatnotebook`
-wx.lib.foldpanelbar :mod:`lib.agw.foldpanelbar`
-wx.lib.hyperlink :mod:`lib.agw.hyperlink`
+wx.lib.buttonpanel :mod:`wx.lib.agw.buttonpanel`
+wx.lib.customtreectrl :mod:`wx.lib.agw.customtreectrl`
+wx.lib.flatnotebook :mod:`wx.lib.agw.flatnotebook`
+wx.lib.foldpanelbar :mod:`wx.lib.agw.foldpanelbar`
+wx.lib.hyperlink :mod:`wx.lib.agw.hyperlink`
wx.lib.grids ``REMOVED``
wx.lib.pyshell ``REMOVED``
wx.lib.rightalign ``REMOVED``
@@ -741,17 +741,17 @@ Modules which have moved
=========================================================== ===========================================================
`Classic` Name `Phoenix` Name
=========================================================== ===========================================================
-wx.calendar.CalendarCtrl :mod:`adv.CalendarCtrl`
-wx.animate.Animation :mod:`adv.Animation`
-wx.animate.AnimationCtrl :mod:`adv.AnimationCtrl`
-wx.combo.OwnerDrawnComboBox :mod:`adv.OwnerDrawnComboBox`
-wx.gizmos.EditableListBox :mod:`adv.EditableListBox`
-wx.gizmos.TreeListCtrl :mod:`dataview.TreeListCtrl`
-wx.AboutBox :meth:`adv.AboutBox`
-wx.AboutDialogInfo :mod:`adv.AboutDialogInfo`
-wx.DatePickerCtrl :mod:`adv.DatePickerCtrl`
-wx.GenericDatePickerCtrl :mod:`adv.GenericPickerCtrl`
-wx.TaskBarIcon :mod:`adv.TaskBarIcon`
-wx.SplashScreen :mod:`adv.SplashScreen`
-wx.wizard.Wizard :mod:`adv.Wizard`
+wx.calendar.CalendarCtrl :mod:`wx.adv.CalendarCtrl`
+wx.animate.Animation :mod:`wx.adv.Animation`
+wx.animate.AnimationCtrl :mod:`wx.adv.AnimationCtrl`
+wx.combo.OwnerDrawnComboBox :mod:`wx.adv.OwnerDrawnComboBox`
+wx.gizmos.EditableListBox :mod:`wx.adv.EditableListBox`
+wx.gizmos.TreeListCtrl :mod:`wx.dataview.TreeListCtrl`
+wx.AboutBox :meth:`wx.adv.AboutBox`
+wx.AboutDialogInfo :mod:`wx.adv.AboutDialogInfo`
+wx.DatePickerCtrl :mod:`wx.adv.DatePickerCtrl`
+wx.GenericDatePickerCtrl :mod:`wx.adv.GenericPickerCtrl`
+wx.TaskBarIcon :mod:`wx.adv.TaskBarIcon`
+wx.SplashScreen :mod:`wx.adv.SplashScreen`
+wx.wizard.Wizard :mod:`wx.adv.Wizard`
=========================================================== ===========================================================
diff --git a/docs/sphinx/itemToModuleMap.json b/docs/sphinx/itemToModuleMap.json
index a8170d22..d734eb53 100644
--- a/docs/sphinx/itemToModuleMap.json
+++ b/docs/sphinx/itemToModuleMap.json
@@ -2514,6 +2514,7 @@
"ProgressDialog":"wx.",
"PropagateOnce":"wx.",
"PropagationDisabler":"wx.",
+"PseudoDC":"wx.adv.",
"PyApp":"wx.",
"PyAxBaseWindow":"wx.msw.",
"PyCommandEvent":"wx.",
diff --git a/etg/_adv.py b/etg/_adv.py
index 4ffc5b33..6104ab25 100644
--- a/etg/_adv.py
+++ b/etg/_adv.py
@@ -52,6 +52,7 @@ INCLUDES = [
'richtooltip',
'timectrl',
'wizard',
+ 'pseudodc',
]
diff --git a/etg/pseudodc.py b/etg/pseudodc.py
new file mode 100644
index 00000000..b81f5d30
--- /dev/null
+++ b/etg/pseudodc.py
@@ -0,0 +1,687 @@
+#---------------------------------------------------------------------------
+# Name: etg/pseudodc.py
+# Author: Robin Dunn
+#
+# Created: 26-Jul-2016
+# Copyright: (c) 2016 by Total Control Software
+# License: wxWindows License
+#---------------------------------------------------------------------------
+
+import etgtools
+import etgtools.tweaker_tools as tools
+from etgtools.extractors import ClassDef, MethodDef, ParamDef
+
+
+PACKAGE = "wx"
+MODULE = "_adv"
+NAME = "pseudodc" # Base name of the file to generate to for this script
+DOCSTRING = ""
+
+# The classes and/or the basename of the Doxygen XML files to be processed by
+# this script.
+ITEMS = [ ]
+
+OTHERDEPS = [ 'src/pseudodc.h',
+ 'src/pseudodc.cpp',
+ ]
+
+#---------------------------------------------------------------------------
+
+def run():
+ # Parse the XML file(s) building a collection of Extractor objects
+ module = etgtools.ModuleDef(PACKAGE, MODULE, NAME, DOCSTRING)
+ etgtools.parseDoxyXML(module, ITEMS)
+
+ #-----------------------------------------------------------------
+ # Tweak the parsed meta objects in the module object as needed for
+ # customizing the generated code and docstrings.
+
+ # The PseudoDC class is not in wxWidgets, so there is no Doxygen XML for
+ # them. That means we'll have to construct the extractor objects here,
+ # from scratch.
+
+ module.addHeaderCode('#include "pseudodc.h"')
+ module.includeCppCode('src/pseudodc.cpp')
+
+
+
+ cls = ClassDef(name='wxPseudoDC', bases=['wxObject'],
+ briefDoc="""\
+ A PseudoDC is an object that can be used much like real
+ :class:`wx.DC`, however it provides some additional features for
+ object recording and manipulation beyond what a ``wx.DC`` can
+ provide.
+
+ All commands issued to the ``PseudoDC`` are stored in a list. You
+ can then play these commands back to a real DC object as often as
+ needed, using the :meth:`DrawToDC` method or one of the similar
+ methods. Commands in the command list can be tagged by an ID. You
+ can use this ID to clear the operations associated with a single
+ ID, redraw the objects associated with that ID, grey them, adjust
+ their position, etc.
+ """,
+ items=[
+ # ----------------------------------------------
+ # Constructor and Destructor
+
+ MethodDef(name='wxPseudoDC', isCtor=True, items=[],
+ briefDoc="""\
+ Constructs a new Pseudo device context for recording and
+ replaying DC operations."""),
+
+ MethodDef(name='~wxPseudoDC', isDtor=True),
+
+
+ # ----------------------------------------------
+ # PseudoDC-specific functionality
+
+ MethodDef(type='void', name='RemoveAll', items=[],
+ briefDoc="Removes all objects and operations from the recorded list."),
+
+ MethodDef(type='int', name='GetLen', items=[],
+ briefDoc="Returns the number of operations in the recorded list."),
+
+ MethodDef(type='void', name='SetId',
+ items=[ParamDef(type='int', name='id')],
+ briefDoc="Sets the id to be associated with subsequent operations."),
+
+ MethodDef(type='void', name='ClearId',
+ items=[ParamDef(type='int', name='id')],
+ briefDoc="Removes all operations associated with id so the object can be redrawn."),
+
+ MethodDef(type='void', name='RemoveId',
+ items=[ParamDef(type='int', name='id')],
+ briefDoc="Remove the object node (and all operations) associated with an id."),
+
+ MethodDef(type='void', name='TranslateId',
+ items=[ParamDef(type='int', name='id'),
+ ParamDef(type='wxCoord', name='dx'),
+ ParamDef(type='wxCoord', name='dy'),
+ ],
+ briefDoc="Translate the position of the operations of tag `id` by (`dx`, `dy`)."),
+
+ MethodDef(type='void', name='SetIdGreyedOut',
+ items=[ParamDef(type='int', name='id'),
+ ParamDef(type='bool', name='greyout'),
+ ],
+ briefDoc="Set whether the set of objects with tag `id` are drawn greyed out or not."),
+
+ MethodDef(type='bool', name='GetIdGreyedOut',
+ items=[ParamDef(type='int', name='id')],
+ briefDoc="Get whether the set of objects with tag `id` are drawn greyed out or not."),
+
+
+ MethodDef(type='PyObject*', name='FindObjects',
+ items=[ ParamDef(type='wxCoord', name='x'),
+ ParamDef(type='wxCoord', name='y'),
+ ParamDef(type='wxCoord', name='radius', default='1'),
+ ParamDef(type='const wxColour &', name='bg', default='*wxWHITE'),
+ ],
+ briefDoc="""\
+ Returns a list of all the id's that draw a pixel with
+ color not equal to bg within radius of (x,y). Returns an
+ empty list if nothing is found. The list is in reverse
+ drawing order so list[0] is the top id."""),
+
+
+ MethodDef(type='PyObject*', name='FindObjectsByBBox',
+ items=[ ParamDef(type='wxCoord', name='x'),
+ ParamDef(type='wxCoord', name='y')],
+ briefDoc="""\
+ Returns a list of all the id's whose bounding boxes include (x,y).
+ Returns an empty list if nothing is found. The list is in
+ reverse drawing order so list[0] is the top id."""),
+
+
+ MethodDef(type='void', name='DrawIdToDC',
+ items=[ ParamDef(type='int', name='id'),
+ ParamDef(type='wxDC *', name='dc')],
+ briefDoc="Draw recorded operations tagged with id to dc."),
+
+
+ MethodDef(type='void', name='SetIdBounds',
+ items=[ ParamDef(type='int', name='id'),
+ ParamDef(type='wxRect &', name='rect')],
+ briefDoc="""\
+ Set the bounding rect of a given object.
+ This will create an object node if one doesn't exist."""),
+
+
+ MethodDef(type='wxRect', name='GetIdBounds',
+ items=[ParamDef(type='int', name='id')],
+ briefDoc="""\
+ Returns the bounding rectangle previously set with `SetIdBounds`.
+ If no bounds have been set, it returns wx.Rect(0,0,0,0)."""),
+
+
+ MethodDef(type='void', name='DrawToDCClipped',
+ items=[ ParamDef(type='wxDC *', name='dc'),
+ ParamDef(type='const wxRect &', name='rect')],
+ briefDoc="""\
+ Draws the recorded operations to dc,
+ unless the operation is known to be outside of rect."""),
+
+ MethodDef(type='void', name='DrawToDCClippedRgn',
+ items=[ParamDef(type='wxDC *', name='dc'),
+ ParamDef(type='const wxRegion &', name='region')],
+ briefDoc="""\
+ Draws the recorded operations to dc,
+ unless the operation is known to be outside the given region."""),
+
+ MethodDef(type='void', name='DrawToDC',
+ items=[ParamDef(type='wxDC *', name='dc')],
+ briefDoc="Draws the recorded operations to dc."),
+
+
+ #----------------------------------------------
+ # Methods which mirror the wxDC API
+
+
+ MethodDef(type='void', name='FloodFill',
+ items=[ ParamDef(type='wxCoord', name='x'),
+ ParamDef(type='wxCoord', name='y'),
+ ParamDef(type='const wxColour &', name='col'),
+ ParamDef(type='wxFloodFillStyle', name='style', default='wxFLOOD_SURFACE')],
+ briefDoc="""\
+ Flood fills the device context starting from the given point,
+ using the current brush colour, and using a style:
+
+ - ``wx.FLOOD_SURFACE``: the flooding occurs until a colour other than the given colour is encountered.
+
+ - ``wx.FLOOD_BORDER``: the area to be flooded is bounded by the given colour.
+ """,
+ overloads=[
+ MethodDef(type='void', name='FloodFill',
+ items=[ ParamDef(type='const wxPoint &', name='pt'),
+ ParamDef(type='const wxColour &', name='col'),
+ ParamDef(type='wxFloodFillStyle', name='style', default='wxFLOOD_SURFACE')]),
+ ]),
+
+
+ MethodDef(type='void', name='DrawLine',
+ items=[ ParamDef(type='wxCoord', name='x1'),
+ ParamDef(type='wxCoord', name='y1'),
+ ParamDef(type='wxCoord', name='x2'),
+ ParamDef(type='wxCoord', name='y2')],
+ briefDoc="""\
+ Draws a line from the first point to the second.
+ The current pen is used for drawing the line. Note that
+ the second point is *not* part of the line and is not
+ drawn by this function (this is consistent with the
+ behaviour of many other toolkits).
+ """,
+ overloads=[
+ MethodDef(type='void', name='DrawLine',
+ items=[ ParamDef(type='const wxPoint &', name='pt1'),
+ ParamDef(type='const wxPoint &', name='pt2')])
+ ]),
+
+ MethodDef(type='void', name='CrossHair',
+ items=[ ParamDef(type='wxCoord', name='x'),
+ ParamDef(type='wxCoord', name='y')],
+ briefDoc="""\
+ Displays a cross hair using the current pen. This is a
+ vertical and horizontal line the height and width of the
+ window, centred on the given point.""",
+ overloads=[
+ MethodDef(type='void', name='CrossHair',
+ items=[ ParamDef(type='const wxPoint &', name='pt') ])
+ ]),
+
+
+ MethodDef(type='void', name='DrawArc',
+ items=[ ParamDef(type='wxCoord', name='x1'),
+ ParamDef(type='wxCoord', name='y1'),
+ ParamDef(type='wxCoord', name='x2'),
+ ParamDef(type='wxCoord', name='y2'),
+ ParamDef(type='wxCoord', name='xc'),
+ ParamDef(type='wxCoord', name='yc'),],
+ briefDoc="""\
+ Draws an arc of a circle, centred on the *center* point
+ (xc, yc), from the first point to the second. The current
+ pen is used for the outline and the current brush for
+ filling the shape.
+
+ The arc is drawn in an anticlockwise direction from the
+ start point to the end point.
+ """,
+ overload=[
+ MethodDef(type='void', name='DrawArc',
+ items=[ParamDef(type='wxCoord', name='x1'),
+ ParamDef(type='wxCoord', name='xc'),
+ ParamDef(type='wxCoord', name='yc'), ]),
+ ]),
+
+
+ MethodDef(type='void', name='DrawCheckMark',
+ items=[ ParamDef(type='wxCoord', name='x'),
+ ParamDef(type='wxCoord', name='y'),
+ ParamDef(type='wxCoord', name='width'),
+ ParamDef(type='wxCoord', name='height')],
+ briefDoc="Draws a check mark inside the given rectangle",
+ overloads=[
+ MethodDef(type='void', name='DrawCheckMark',
+ items=[ ParamDef(type='const wxRect &', name='rect') ])
+ ]),
+
+
+ MethodDef(type='void', name='DrawEllipticArc',
+ items=[ ParamDef(type='wxCoord', name='x'),
+ ParamDef(type='wxCoord', name='y'),
+ ParamDef(type='wxCoord', name='w'),
+ ParamDef(type='wxCoord', name='h'),
+ ParamDef(type='double', name='start'),
+ ParamDef(type='double', name='end')],
+ briefDoc="""\
+ Draws an arc of an ellipse, with the given rectangle
+ defining the bounds of the ellipse. The current pen is
+ used for drawing the arc and the current brush is used for
+ drawing the pie.
+
+ The *start* and *end* parameters specify the start and end
+ of the arc relative to the three-o'clock position from the
+ center of the rectangle. Angles are specified in degrees
+ (360 is a complete circle). Positive values mean
+ counter-clockwise motion. If start is equal to end, a
+ complete ellipse will be drawn.""",
+ overloads=[
+ MethodDef(type='void', name='DrawEllipticArc',
+ items=[ ParamDef(type='const wxPoint &', name='pt'),
+ ParamDef(type='const wxSize &', name='sz'),
+ ParamDef(type='double', name='start'),
+ ParamDef(type='double', name='end')])
+ ]),
+
+
+ MethodDef(type='void', name='DrawPoint',
+ items=[ParamDef(type='wxCoord', name='x'),
+ ParamDef(type='wxCoord', name='y')],
+ briefDoc="Draws a point using the current pen.",
+ overloads=[
+ MethodDef(type='void', name='DrawPoint',
+ items=[ParamDef(type='const wxPoint &', name='pt') ])
+ ]),
+
+
+ MethodDef(type='void', name='DrawRectangle',
+ items=[ ParamDef(type='wxCoord', name='x'),
+ ParamDef(type='wxCoord', name='y'),
+ ParamDef(type='wxCoord', name='width'),
+ ParamDef(type='wxCoord', name='height') ],
+ briefDoc="""\
+ Draws a rectangle with the given top left corner, and with
+ the given size. The current pen is used for the outline
+ and the current brush for filling the shape.
+ """,
+ overloads=[
+ MethodDef(type='void', name='DrawRectangle',
+ items=[ ParamDef(type='const wxRect &', name='rect') ]),
+ MethodDef(type='void', name='DrawRectangle',
+ items=[ ParamDef(type='const wxPoint &', name='pt'),
+ ParamDef(type='const wxSize &', name='sz') ])
+ ]),
+
+
+
+
+ MethodDef(type='void', name='DrawRoundedRectangle',
+ items=[ ParamDef(type='wxCoord', name='x'),
+ ParamDef(type='wxCoord', name='y'),
+ ParamDef(type='wxCoord', name='width'),
+ ParamDef(type='wxCoord', name='height'),
+ ParamDef(type='double', name='radius')],
+ briefDoc="""\
+ Draws a rectangle with the given top left corner, and with
+ the given size. The current pen is used for the outline
+ and the current brush for filling the shape.
+ """,
+ overloads=[
+ MethodDef(type='void', name='DrawRoundedRectangle',
+ items=[ ParamDef(type='const wxRect &', name='rect'),
+ ParamDef(type='double', name='radius') ]),
+ MethodDef(type='void', name='DrawRoundedRectangle',
+ items=[ ParamDef(type='const wxPoint &', name='pt'),
+ ParamDef(type='const wxSize &', name='sz'),
+ ParamDef(type='double', name='radius') ])
+ ]),
+
+
+ MethodDef(type='void', name='DrawCircle',
+ items=[ ParamDef(type='wxCoord', name='x'),
+ ParamDef(type='wxCoord', name='y'),
+ ParamDef(type='wxCoord', name='radius'),],
+ briefDoc="""\
+ Draws a circle with the given center point and radius.
+ The current pen is used for the outline and the current
+ brush for filling the shape.
+
+ :see: `DrawEllipse`
+ """,
+ overloads=[
+ MethodDef(type='void', name='DrawCircle',
+ items=[ ParamDef(type='const wxPoint &', name='pt'),
+ ParamDef(type='wxCoord', name='radius') ]),
+ ]),
+
+
+ MethodDef(type='void', name='DrawEllipse',
+ items=[ ParamDef(type='wxCoord', name='x'),
+ ParamDef(type='wxCoord', name='y'),
+ ParamDef(type='wxCoord', name='width'),
+ ParamDef(type='wxCoord', name='height')],
+ briefDoc="""\
+ Draws an ellipse contained in the specified rectangle. The current pen
+ is used for the outline and the current brush for filling the shape.", "
+
+ :see: `DrawCircle`
+ """,
+ overloads=[
+ MethodDef(type='void', name='DrawEllipse',
+ items=[ ParamDef(type='const wxRect &', name='rect') ]),
+ MethodDef(type='void', name='DrawEllipse',
+ items=[ ParamDef(type='const wxPoint &', name='pt'),
+ ParamDef(type='const wxSize &', name='sz') ])
+ ]),
+
+
+ MethodDef(type='void', name='DrawIcon',
+ items=[ ParamDef(type='const wxIcon &', name='icon'),
+ ParamDef(type='wxCoord', name='x'),
+ ParamDef(type='wxCoord', name='y')
+ ],
+ briefDoc="Draw an icon on the display at the given position.",
+ overloads=[
+ MethodDef(type='void', name='DrawIcon',
+ items=[ ParamDef(type='const wxIcon &', name='icon'),
+ ParamDef(type='const wxPoint &', name='pt') ])
+ ]),
+
+
+ MethodDef(type='void', name='DrawBitmap',
+ items=[ ParamDef(type='const wxBitmap &', name='bmp'),
+ ParamDef(type='wxCoord', name='x'),
+ ParamDef(type='wxCoord', name='y'),
+ ParamDef(type='bool', name='useMask', default='false') ],
+ briefDoc="""\
+ Draw a bitmap on the device context at the specified
+ point. If *useMask* is true and the bitmap has a
+ transparency mask, (or alpha channel on the platforms that
+ support it) then the bitmap will be drawn transparently.
+
+ When drawing a mono-bitmap, the current text foreground
+ colour will be used to draw the foreground of the bitmap
+ (all bits set to 1), and the current text background
+ colour to draw the background (all bits set to 0).
+
+ :see: `SetTextForeground`, `SetTextBackground` and `wx.MemoryDC`
+ """,
+ overloads=[
+ MethodDef(type='void', name='DrawBitmap',
+ items=[ ParamDef(type='const wxBitmap &', name='bmp'),
+ ParamDef(type='const wxPoint &', name='pt'),
+ ParamDef(type='bool', name='useMask', default='false') ])
+ ]),
+
+
+ MethodDef(type='void', name='DrawText',
+ items=[ ParamDef(type='const wxString &', name='text'),
+ ParamDef(type='wxCoord', name='x'),
+ ParamDef(type='wxCoord', name='y') ],
+ briefDoc="""\
+ Draws a text string at the specified point, using the
+ current text font, and the current text foreground and
+ background colours.
+
+ The coordinates refer to the top-left corner of the
+ rectangle bounding the string. See `wx.DC.GetTextExtent`
+ for how to get the dimensions of a text string, which can
+ be used to position the text more precisely, (you will
+ need to use a real DC with GetTextExtent as wx.PseudoDC
+ does not implement it.)
+
+ **NOTE**: under wxGTK the current logical function is used
+ *by this function but it is ignored by wxMSW. Thus, you
+ *should avoid using logical functions with this function
+ *in portable programs.", "
+
+ :see: `DrawRotatedText`
+ """,
+ overloads=[
+ MethodDef(type='void', name='DrawText',
+ items=[ ParamDef(type='const wxString &', name='text'),
+ ParamDef(type='const wxPoint &', name='pt') ])
+ ]),
+
+
+ MethodDef(type='void', name='DrawRotatedText',
+ items=[ ParamDef(type='const wxString &', name='text'),
+ ParamDef(type='wxCoord', name='x'),
+ ParamDef(type='wxCoord', name='y'),
+ ParamDef(type='double', name='angle') ],
+ briefDoc="Draws the text rotated by *angle* degrees, if supported by the platform.",
+ overloads=[
+ MethodDef(type='void', name='DrawRotatedText',
+ items=[ ParamDef(type='const wxString &', name='text'),
+ ParamDef(type='const wxPoint &', name='pt'),
+ ParamDef(type='double', name='angle') ])
+ ]),
+
+
+ MethodDef(type='void', name='DrawLabel',
+ items=[ ParamDef(type='const wxString &', name='text'),
+ ParamDef(type='const wxRect &', name='rect'),
+ ParamDef(type='int', name='alignment', default='wxALIGN_LEFT|wxALIGN_TOP'),
+ ParamDef(type='int', name='indexAccel', default='-1'),
+ ],
+ briefDoc="""\
+ Draw *text* within the specified rectangle, abiding by the
+ alignment flags. Will additionally emphasize the
+ character at *indexAccel* if it is not -1.
+ """,
+ overloads=[
+ MethodDef(type='void', name='DrawLabel',
+ items=[ ParamDef(type='const wxString &', name='text'),
+ ParamDef(type='const wxBitmap &', name='image'),
+ ParamDef(type='const wxRect &', name='rect'),
+ ParamDef(type='int', name='alignment', default='wxALIGN_LEFT|wxALIGN_TOP'),
+ ParamDef(type='int', name='indexAccel', default='-1'),
+ ],
+ briefDoc="""\
+ Draw *text* and an image (which may be ``wx.NullBitmap`` to skip
+ drawing it) within the specified rectangle, abiding by the alignment
+ flags. Will additionally emphasize the character at *indexAccel* if
+ it is not -1.
+ """)]
+ ),
+
+
+
+ MethodDef(type='void', name='Clear',
+ items=[],
+ briefDoc="Clears the device context using the current background brush.",
+ overloads=[]),
+
+
+ MethodDef(type='void', name='SetFont',
+ items=[ ParamDef(type='const wxFont &', name='font') ],
+ briefDoc="""\
+ Sets the current font for the DC. It must be a valid font, in
+ particular you should not pass ``wx.NullFont`` to this method.
+
+ :see: `wx.Font`
+ """,
+ overloads=[]),
+
+ MethodDef(type='void', name='SetPen',
+ items=[ParamDef(type='const wxPen &', name='pen')],
+ briefDoc="""\
+ Sets the current pen for the DC.
+
+ If the argument is ``wx.NullPen``, the current pen is selected out of the
+ device context, and the original pen restored.
+
+ :see: `wx.Pen`
+ """,
+ overloads=[]),
+
+
+ MethodDef(type='void', name='SetBrush',
+ items=[ParamDef(type='const wxBrush &', name='brush')],
+ briefDoc="""\
+ Sets the current brush for the DC.
+
+ If the argument is ``wx.NullBrush``, the current brush is selected out
+ of the device context, and the original brush restored, allowing the
+ current brush to be destroyed safely.
+
+ :see: `wx.Brush`
+ """,
+ overloads=[]),
+
+
+ MethodDef(type='void', name='SetBackground',
+ items=[ ParamDef(type='const wxBrush &', name='brush') ],
+ briefDoc="Sets the current background brush for the DC.",
+ overloads=[]),
+
+
+ MethodDef(type='void', name='SetBackgroundMode',
+ items=[ ParamDef(type='int', name='mode') ],
+ briefDoc="""\
+ The *mode* parameter may be one of ``wx.SOLID`` and
+ ``wx.TRANSPARENT``. This setting determines whether text
+ will be drawn with a background colour or not.
+ """,
+ overloads=[]),
+
+
+ MethodDef(type='void', name='SetTextForeground',
+ items=[ ParamDef(type='const wxColour &', name='colour') ],
+ briefDoc="Sets the current text foreground colour for the DC.",
+ overloads=[]),
+
+
+ MethodDef(type='void', name='SetTextBackground',
+ items=[ ParamDef(type='const wxColour&', name='colour') ],
+ briefDoc="Sets the current text background colour for the DC.",
+ overloads=[]),
+
+
+ MethodDef(type='void', name='SetLogicalFunction',
+ items=[ ParamDef(type='wxRasterOperationMode', name='function') ],
+ briefDoc="""\
+ Sets the current logical function for the device context. This
+ determines how a source pixel (from a pen or brush colour, combines
+ with a destination pixel in the current device context.
+
+ The possible values and their meaning in terms of source and
+ destination pixel values are defined in the :ref:`wx.RasterOperationMode`
+ enumeration.
+
+ The default is wx.COPY, which simply draws with the current
+ colour. The others combine the current colour and the background using
+ a logical operation. wx.INVERT is commonly used for drawing rubber
+ bands or moving outlines, since drawing twice reverts to the original
+ colour.
+ """,
+ overloads=[]),
+
+
+ MethodDef(type='void', name='DrawLines',
+ items=[ ParamDef(type='const wxPointList *', name='points'),
+ ParamDef(type='wxCoord', name='xoffset', default='0'),
+ ParamDef(type='wxCoord', name='yoffset', default='0')],
+ briefDoc="""\
+ Draws lines using a sequence of `wx.Point` objects, adding the
+ optional offset coordinate. The current pen is used for drawing the
+ lines.
+ """,
+ overloads=[]),
+
+
+ MethodDef(type='void', name='DrawPolygon',
+ items=[ ParamDef(type='const wxPointList *', name='points'),
+ ParamDef(type='wxCoord', name='xoffset', default='0'),
+ ParamDef(type='wxCoord', name='yoffset', default='0'),
+ ParamDef(type='wxPolygonFillMode', name='fillStyle', default='wxODDEVEN_RULE'),
+ ],
+ briefDoc="""\
+ Draws a filled polygon using a sequence of `wx.Point` objects, adding
+ the optional offset coordinate. The last argument specifies the fill
+ rule: ``wx.ODDEVEN_RULE`` (the default) or ``wx.WINDING_RULE``.
+
+ The current pen is used for drawing the outline, and the current brush
+ for filling the shape. Using a transparent brush suppresses
+ filling. Note that wxWidgets automatically closes the first and last
+ points.
+ """,
+ overloads=[]),
+
+
+ MethodDef(type='void', name='DrawSpline',
+ items=[ ParamDef(type='const wxPointList *', name='points') ],
+ briefDoc="""\
+ Draws a spline between all given control points, (a list of `wx.Point`
+ objects) using the current pen. The spline is drawn using a series of
+ lines, using an algorithm taken from the X drawing program 'XFIG'.
+ """,
+ overloads=[]),
+
+ ])
+
+ # add deprecation warnings for the old method names
+ cls.addPyCode("""\
+ PseudoDC.BeginDrawing = wx.deprecated(lambda *args: None, 'BeginDrawing has been removed.')
+ PseudoDC.EndDrawing = wx.deprecated(lambda *args: None, 'EndDrawing has been removed.')
+ PseudoDC.FloodFillPoint = wx.deprecated(PseudoDC.FloodFill, 'Use FloodFill instead.')
+ PseudoDC.DrawLinePoint = wx.deprecated(PseudoDC.DrawLine, 'Use DrawLine instead.')
+ PseudoDC.CrossHairPoint = wx.deprecated(PseudoDC.CrossHair, 'Use CrossHair instead.')
+ PseudoDC.DrawArcPoint = wx.deprecated(PseudoDC.DrawArc, 'Use DrawArc instead.')
+ PseudoDC.DrawCheckMarkRect = wx.deprecated(PseudoDC.DrawCheckMark, 'Use DrawArc instead.')
+ PseudoDC.DrawEllipticArcPointSize = wx.deprecated(PseudoDC.DrawEllipticArc, 'Use DrawEllipticArc instead.')
+ PseudoDC.DrawPointPoint = wx.deprecated(PseudoDC.DrawPoint, 'Use DrawPoint instead.')
+ PseudoDC.DrawRectangleRect = wx.deprecated(PseudoDC.DrawRectangle, 'Use DrawRectangle instead.')
+ PseudoDC.DrawRectanglePointSize = wx.deprecated(PseudoDC.DrawRectangle, 'Use DrawRectangle instead.')
+ PseudoDC.DrawRoundedRectangleRect = wx.deprecated(PseudoDC.DrawRoundedRectangle, 'Use DrawRectangle instead.')
+ PseudoDC.DrawRoundedRectanglePointSize = wx.deprecated(PseudoDC.DrawRoundedRectangle, 'Use DrawRectangle instead.')
+ PseudoDC.DrawCirclePoint = wx.deprecated(PseudoDC.DrawCircle, 'Use DrawCircle instead.')
+ PseudoDC.DrawEllipseRect = wx.deprecated(PseudoDC.DrawEllipse, 'Use DrawEllipse instead.')
+ PseudoDC.DrawEllipsePointSize = wx.deprecated(PseudoDC.DrawEllipse, 'Use DrawEllipse instead.')
+ PseudoDC.DrawIconPoint = wx.deprecated(PseudoDC.DrawIcon, 'Use DrawIcon instead.')
+ PseudoDC.DrawBitmapPoint = wx.deprecated(PseudoDC.DrawBitmap, 'Use DrawBitmap instead.')
+ PseudoDC.DrawTextPoint = wx.deprecated(PseudoDC.DrawText, 'Use DrawText instead.')
+ PseudoDC.DrawRotatedTextPoint = wx.deprecated(PseudoDC.DrawRotatedText, 'Use DrawRotatedText instead.')
+ PseudoDC.DrawImageLabel = wx.deprecated(PseudoDC.DrawLabel, 'Use DrawLabel instead.')
+ """)
+
+
+
+ # Other stuff not wrapped yet
+ # // Figure out a good typemap for this...
+ # // Convert the first 3 args from a sequence of sequences?
+ # // void DrawPolyPolygon(int n, int count[], wxPoint points[],
+ # // wxCoord xoffset = 0, wxCoord yoffset = 0,
+ # // int fillStyle = wxODDEVEN_RULE);
+ #
+ #
+ # DocDeclStr(
+ # virtual void , SetPalette(const wxPalette& palette),
+ # "If this is a window DC or memory DC, assigns the given palette to the
+ # window or bitmap associated with the DC. If the argument is
+ # ``wx.NullPalette``, the current palette is selected out of the device
+ # context, and the original palette restored.", "
+ #
+ # :see: `wx.Palette`");
+
+
+ module.addItem(cls)
+
+ #-----------------------------------------------------------------
+ tools.doCommonTweaks(module)
+ tools.runGenerators(module)
+
+
+#---------------------------------------------------------------------------
+if __name__ == '__main__':
+ run()
+
diff --git a/sphinxtools/utilities.py b/sphinxtools/utilities.py
index 0493d382..18a40164 100644
--- a/sphinxtools/utilities.py
+++ b/sphinxtools/utilities.py
@@ -180,6 +180,8 @@ def replaceCppItems(line):
if 'wxString' in item:
item = 'string'
+ elif 'wxCoord' == item:
+ item = 'int'
elif item == 'char':
item = 'int'
elif item == 'double':
diff --git a/src/core_ex.py b/src/core_ex.py
index 3f58e593..5ade3b4e 100644
--- a/src/core_ex.py
+++ b/src/core_ex.py
@@ -64,7 +64,7 @@ def deprecated(item, msg='', useName=False):
elif callable(item):
# wrap a new function around the callable
def deprecated_func(*args, **kw):
- warnings.warn("Call to deprecated item %s. %s" % (name, msg),
+ warnings.warn("Call to deprecated item%s. %s" % (name, msg),
wxPyDeprecationWarning, stacklevel=2)
if not kw:
return item(*args)
diff --git a/src/pseudodc.cpp b/src/pseudodc.cpp
new file mode 100644
index 00000000..0a3d127a
--- /dev/null
+++ b/src/pseudodc.cpp
@@ -0,0 +1,661 @@
+/////////////////////////////////////////////////////////////////////////////
+// Name: src/pseudodc.cpp
+// Purpose: Implementation of the wxPseudoDC classes
+// Author: Paul Lanier
+// Modified by: Robin Dunn
+//
+// Created: 05/25/06
+// Copyright: (c) 2006-2016 Total Control Software
+// Licence: wxWindows licence
+/////////////////////////////////////////////////////////////////////////////
+
+// For compilers that support precompilation, includes "wx.h".
+//include "wx/wxprec.h"
+
+//#undef DEBUG
+
+// wxList based class definitions
+#include
+WX_DEFINE_LIST(pdcOpList);
+WX_DEFINE_LIST(pdcObjectList);
+
+//----------------------------------------------------------------------------
+// Helper functions used for drawing greyed out versions of objects
+//----------------------------------------------------------------------------
+wxColour &MakeColourGrey(const wxColour &c)
+{
+ static wxColour rval;
+ rval.Set(byte((230-c.Red())*0.7+c.Red()),
+ byte((230-c.Green())*0.7+c.Green()),
+ byte((230-c.Blue())*0.7+c.Blue()));
+ return rval;
+}
+wxBrush &GetGreyBrush(wxBrush &brush)
+{
+ static wxBrush b;
+ wxColour c;
+ b = brush;
+ c = MakeColourGrey(brush.GetColour());
+ b.SetColour(c);
+ return b;
+}
+
+wxPen &GetGreyPen(wxPen &pen)
+{
+ static wxPen p;
+ wxColour c;
+ p = pen;
+ c = MakeColourGrey(pen.GetColour());
+ p.SetColour(c);
+ return p;
+}
+
+void GreyOutImage(wxImage &img)
+{
+ unsigned char *data = img.GetData();
+ unsigned char r,g,b;
+ unsigned char mr,mg,mb;
+ int i, tst;
+ int len = img.GetHeight()*img.GetWidth()*3;
+ if (img.HasMask())
+ {
+ mr = img.GetMaskRed();
+ mg = img.GetMaskGreen();
+ mb = img.GetMaskBlue();
+ }
+ tst=0;
+ for (i=0;ibegin(); iter != points->end(); iter++)
+ {
+ // The first * gives us a wxPoint ptr, second * dereferences that ptr
+ m_points->push_back(new wxPoint(**iter));
+ }
+}
+
+
+pdcDrawLinesOp::~pdcDrawLinesOp()
+{
+ m_points->clear();
+ delete m_points;
+ m_points = NULL;
+}
+
+
+void pdcDrawLinesOp::Translate(wxCoord dx, wxCoord dy)
+{
+ wxPointList::const_iterator iter;
+ for (iter = m_points->begin(); iter != m_points->end(); iter++)
+ {
+ (*iter)->x += dx;
+ (*iter)->y += dy;
+ }
+}
+
+// ----------------------------------------------------------------------------
+// pdcDrawPolygonOp
+// ----------------------------------------------------------------------------
+pdcDrawPolygonOp::pdcDrawPolygonOp(const wxPointList* points,
+ wxCoord xoffset,
+ wxCoord yoffset,
+ wxPolygonFillMode fillStyle)
+{
+ m_xoffset = xoffset;
+ m_yoffset = yoffset;
+ m_fillStyle = fillStyle;
+
+ m_points = new wxPointList;
+ wxPointList::const_iterator iter;
+ for (iter = points->begin(); iter != points->end(); ++iter)
+ {
+ // The first * gives us a wxPoint ptr, second * dereferences that ptr
+ m_points->push_back(new wxPoint(**iter));
+ }
+}
+
+
+pdcDrawPolygonOp::~pdcDrawPolygonOp()
+{
+ m_points->clear();
+ delete m_points;
+}
+
+
+void pdcDrawPolygonOp::Translate(wxCoord dx, wxCoord dy)
+{
+ wxPointList::const_iterator iter;
+ for (iter = m_points->begin(); iter != m_points->end(); iter++)
+ {
+ (*iter)->x += dx;
+ (*iter)->y += dy;
+ }
+}
+
+#if wxUSE_SPLINES
+// ----------------------------------------------------------------------------
+// pdcDrawSplineOp
+// ----------------------------------------------------------------------------
+pdcDrawSplineOp::pdcDrawSplineOp(const wxPointList* points)
+{
+ m_points = new wxPointList;
+ wxPointList::const_iterator iter;
+ for (iter = points->begin(); iter != points->end(); iter++)
+ {
+ // The first * gives us a wxPoint ptr, second * dereferences that ptr
+ m_points->push_back(new wxPoint(**iter));
+ }
+}
+
+
+pdcDrawSplineOp::~pdcDrawSplineOp()
+{
+ m_points->clear();
+ delete m_points;
+}
+
+
+void pdcDrawSplineOp::Translate(wxCoord dx, wxCoord dy)
+{
+ wxPointList::const_iterator iter;
+ for (iter = m_points->begin(); iter != m_points->end(); iter++)
+ {
+ (*iter)->x += dx;
+ (*iter)->y += dy;
+ }
+}
+
+#endif // wxUSE_SPLINES
+
+// ============================================================================
+// pdcObject implementation
+// ============================================================================
+
+// ----------------------------------------------------------------------------
+// DrawToDC - play back the op list to the DC
+// ----------------------------------------------------------------------------
+void pdcObject::DrawToDC(wxDC *dc)
+{
+ pdcOpList::compatibility_iterator node = m_oplist.GetFirst();
+ while(node)
+ {
+ node->GetData()->DrawToDC(dc, m_greyedout);
+ node = node->GetNext();
+ }
+}
+
+// ----------------------------------------------------------------------------
+// Translate - translate all the operations by some dx,dy
+// ----------------------------------------------------------------------------
+void pdcObject::Translate(wxCoord dx, wxCoord dy)
+{
+ pdcOpList::compatibility_iterator node = m_oplist.GetFirst();
+ while(node)
+ {
+ node->GetData()->Translate(dx,dy);
+ node = node->GetNext();
+ }
+ if (m_bounded)
+ {
+ m_bounds.x += dx;
+ m_bounds.y += dy;
+ }
+}
+
+// ----------------------------------------------------------------------------
+// SetGreyedOut - set the greyout member and cache grey versions of everything
+// if greyout is true
+// ----------------------------------------------------------------------------
+void pdcObject::SetGreyedOut(bool greyout)
+{
+ m_greyedout=greyout;
+ if (greyout)
+ {
+ pdcOpList::compatibility_iterator node = m_oplist.GetFirst();
+ pdcOp *obj;
+ while(node)
+ {
+ obj = node->GetData();
+ obj->CacheGrey();
+ node = node->GetNext();
+ }
+ }
+}
+
+// ============================================================================
+// wxPseudoDC implementation
+// ============================================================================
+
+// ----------------------------------------------------------------------------
+// Destructor
+// ----------------------------------------------------------------------------
+wxPseudoDC::~wxPseudoDC()
+{
+ // delete all the nodes in the list
+ RemoveAll();
+
+}
+
+// ----------------------------------------------------------------------------
+// ClearAll - remove all nodes from list
+// ----------------------------------------------------------------------------
+void wxPseudoDC::RemoveAll(void)
+{
+ m_objectlist.Clear();
+ m_objectIndex.clear();
+ m_currId = -1;
+ m_lastObject = NULL;
+
+}
+
+// ----------------------------------------------------------------------------
+// GetLen - return the number of operations in the current op list
+// ----------------------------------------------------------------------------
+int wxPseudoDC::GetLen(void)
+{
+ pdcObjectList::compatibility_iterator pt = m_objectlist.GetFirst();
+ int len=0;
+ while (pt)
+ {
+ len += pt->GetData()->GetLen();
+ pt = pt->GetNext();
+ }
+ return len;
+}
+
+// ----------------------------------------------------------------------------
+// FindObject - find and return an object node by id. If node doesn't exist
+// and create is true then create one and return it. Otherwise
+// return NULL.
+// ----------------------------------------------------------------------------
+pdcObject *wxPseudoDC::FindObject(int id, bool create)
+{
+ // see if last operation was for same id
+ //~ if (m_lastObject && m_lastObject->GetId() == id)
+ //~ return m_lastObject;
+ // if not then search for it
+ pdcObjectHash::iterator lookup = m_objectIndex.find(id);
+ if (lookup == m_objectIndex.end()) {//not found
+ if (create) {
+ m_lastObject = new pdcObject(id);
+ m_objectlist.Append(m_lastObject);
+ pdcObjectHash::value_type insert(id, m_lastObject);
+ m_objectIndex.insert(insert);
+ return m_lastObject;
+ } else {
+ return NULL;
+ }
+ } else { //found
+ return lookup->second;
+ }
+}
+
+// ----------------------------------------------------------------------------
+// AddToList - Add a node to the list at the end (preserve draw order)
+// ----------------------------------------------------------------------------
+void wxPseudoDC::AddToList(pdcOp *newOp)
+{
+ pdcObject *obj = FindObject(m_currId, true);
+ obj->AddOp(newOp);
+}
+
+// ----------------------------------------------------------------------------
+// ClearID - remove all the operations associated with a single ID
+// ----------------------------------------------------------------------------
+void wxPseudoDC::ClearId(int id)
+{
+ pdcObject *obj = FindObject(id);
+ if (obj) obj->Clear();
+}
+
+// ----------------------------------------------------------------------------
+// RemoveID - Remove the object node (and all operations) associated with an id
+// ----------------------------------------------------------------------------
+void wxPseudoDC::RemoveId(int id)
+{
+ pdcObject *obj = FindObject(id);
+ if (obj)
+ {
+ if (m_lastObject == obj)
+ m_lastObject = obj;
+ m_objectlist.DeleteObject(obj);
+ }
+ m_objectIndex.erase(id);
+}
+
+// ----------------------------------------------------------------------------
+// SetIdBounds - Set the bounding rect for a given id
+// ----------------------------------------------------------------------------
+void wxPseudoDC::SetIdBounds(int id, wxRect& rect)
+{
+ pdcObject *obj = FindObject(id, true);
+ obj->SetBounds(rect);
+}
+
+// ----------------------------------------------------------------------------
+// GetIdBounds - Get the bounding rect for a given id
+// ----------------------------------------------------------------------------
+wxRect wxPseudoDC::GetIdBounds(int id)
+{
+ wxRect rect;
+
+ pdcObject *obj = FindObject(id);
+ if (obj && obj->IsBounded())
+ rect = obj->GetBounds();
+ else
+ rect.x = rect.y = rect.width = rect.height = 0;
+ return rect;
+}
+
+// ----------------------------------------------------------------------------
+// TranslateId - Translate all the operations of a single id
+// ----------------------------------------------------------------------------
+void wxPseudoDC::TranslateId(int id, wxCoord dx, wxCoord dy)
+{
+ pdcObject *obj = FindObject(id);
+ if (obj) obj->Translate(dx,dy);
+}
+
+// ----------------------------------------------------------------------------
+// DrawIdToDC - Draw a specific id to the dc passed in
+// ----------------------------------------------------------------------------
+void wxPseudoDC::DrawIdToDC(int id, wxDC *dc)
+{
+ pdcObject *obj = FindObject(id);
+ if (obj) obj->DrawToDC(dc);
+}
+
+// ----------------------------------------------------------------------------
+// SetIdGreyedOut - Set the greyedout member of id
+// ----------------------------------------------------------------------------
+void wxPseudoDC::SetIdGreyedOut(int id, bool greyout)
+{
+ pdcObject *obj = FindObject(id);
+ if (obj) obj->SetGreyedOut(greyout);
+}
+
+// ----------------------------------------------------------------------------
+// GetIdGreyedOut - Get the greyedout member of id
+// ----------------------------------------------------------------------------
+bool wxPseudoDC::GetIdGreyedOut(int id)
+{
+ pdcObject *obj = FindObject(id);
+ if (obj) return obj->GetGreyedOut();
+ else return false;
+}
+
+// ----------------------------------------------------------------------------
+// FindObjectsByBBox - Return a list of all the ids whose bounding boxes
+// contain (x,y)
+// ----------------------------------------------------------------------------
+PyObject *wxPseudoDC::FindObjectsByBBox(wxCoord x, wxCoord y)
+{
+ //wxPyBlock_t blocked = wxPyBeginBlockThreads();
+ pdcObjectList::compatibility_iterator pt = m_objectlist.GetFirst();
+ pdcObject *obj;
+ PyObject* pyList = NULL;
+ pyList = PyList_New(0);
+ wxRect r;
+ while (pt)
+ {
+ obj = pt->GetData();
+ r = obj->GetBounds();
+ if (obj->IsBounded() && r.Contains(x,y))
+ {
+ PyObject* pyObj = wxPyInt_FromLong((long)obj->GetId());
+ PyList_Insert(pyList, 0, pyObj);
+ Py_DECREF(pyObj);
+ }
+ pt = pt->GetNext();
+ }
+ //wxPyEndBlockThreads(blocked);
+ return pyList;
+}
+
+// ----------------------------------------------------------------------------
+// FindObjects - Return a list of all the ids that draw to (x,y)
+// ----------------------------------------------------------------------------
+PyObject *wxPseudoDC::FindObjects(wxCoord x, wxCoord y,
+ wxCoord radius, const wxColor& bg)
+{
+ //wxPyBlock_t blocked = wxPyBeginBlockThreads();
+ pdcObjectList::compatibility_iterator pt = m_objectlist.GetFirst();
+ pdcObject *obj;
+ PyObject* pyList = NULL;
+ pyList = PyList_New(0);
+ wxBrush bgbrush(bg);
+ wxPen bgpen(bg);
+ // special case radius = 0
+ if (radius == 0)
+ {
+ wxBitmap bmp(4,4,24);
+ wxMemoryDC memdc;
+ wxColor pix;
+ wxRect viewrect(x-2,y-2,4,4);
+ // setup the memdc for rendering
+ memdc.SelectObject(bmp);
+ memdc.SetBackground(bgbrush);
+ memdc.Clear();
+ memdc.SetDeviceOrigin(2-x,2-y);
+ while (pt)
+ {
+ obj = pt->GetData();
+ if (obj->IsBounded() && obj->GetBounds().Contains(x,y))
+ {
+ // start clean
+ memdc.SetBrush(bgbrush);
+ memdc.SetPen(bgpen);
+ memdc.DrawRectangle(viewrect);
+ // draw the object
+ obj->DrawToDC(&memdc);
+ memdc.GetPixel(x,y,&pix);
+ // clear and update rgn2
+ if (pix != bg)
+ {
+ PyObject* pyObj = wxPyInt_FromLong((long)obj->GetId());
+ PyList_Insert(pyList, 0, pyObj);
+ Py_DECREF(pyObj);
+ }
+ }
+ pt = pt->GetNext();
+ }
+ memdc.SelectObject(wxNullBitmap);
+ }
+ else
+ {
+ wxRect viewrect(x-radius,y-radius,2*radius,2*radius);
+ wxBitmap maskbmp(2*radius,2*radius,24);
+ wxMemoryDC maskdc;
+ // create bitmap with circle for masking
+ maskdc.SelectObject(maskbmp);
+ maskdc.SetBackground(*wxBLACK_BRUSH);
+ maskdc.Clear();
+ maskdc.SetBrush(*wxWHITE_BRUSH);
+ maskdc.SetPen(*wxWHITE_PEN);
+ maskdc.DrawCircle(radius,radius,radius);
+ // now setup a memdc for rendering our object
+ wxBitmap bmp(2*radius,2*radius,24);
+ wxMemoryDC memdc;
+ memdc.SelectObject(bmp);
+ // set the origin so (x,y) is in the bmp center
+ memdc.SetDeviceOrigin(radius-x,radius-y);
+ // a region will be used to see if the result is empty
+ wxRegion rgn2;
+ while (pt)
+ {
+ obj = pt->GetData();
+ if (obj->IsBounded() && viewrect.Intersects(obj->GetBounds()))
+ {
+ // start clean
+ //memdc.Clear();
+ memdc.SetBrush(bgbrush);
+ memdc.SetPen(bgpen);
+ memdc.DrawRectangle(viewrect);
+ // draw the object
+ obj->DrawToDC(&memdc);
+ // remove background color
+ memdc.SetLogicalFunction(wxXOR);
+ memdc.SetBrush(bgbrush);
+ memdc.SetPen(bgpen);
+ memdc.DrawRectangle(viewrect);
+ memdc.SetLogicalFunction(wxCOPY);
+ memdc.Blit(x-radius,y-radius,2*radius,2*radius,&maskdc,0,0,wxCOPY);
+ // clear and update rgn2
+ memdc.SelectObject(wxNullBitmap);
+ rgn2.Clear();
+ rgn2.Union(bmp, *wxBLACK);
+ //rgn2.Intersect(rgn);
+ memdc.SelectObject(bmp);
+ if (!rgn2.IsEmpty())
+ {
+ PyObject* pyObj = wxPyInt_FromLong((long)obj->GetId());
+ PyList_Insert(pyList, 0, pyObj);
+ Py_DECREF(pyObj);
+ }
+ }
+ pt = pt->GetNext();
+ }
+ maskdc.SelectObject(wxNullBitmap);
+ memdc.SelectObject(wxNullBitmap);
+ }
+ //wxPyEndBlockThreads(blocked);
+ return pyList;
+}
+
+// ----------------------------------------------------------------------------
+// DrawToDCClipped - play back the op list to the DC but clip any objects
+// known to be not in rect. This is a coarse level of
+// clipping to speed things up when lots of objects are off
+// screen and doesn't affect the dc level clipping
+// ----------------------------------------------------------------------------
+void wxPseudoDC::DrawToDCClipped(wxDC *dc, const wxRect& rect)
+{
+ pdcObjectList::compatibility_iterator pt = m_objectlist.GetFirst();
+ pdcObject *obj;
+ while (pt)
+ {
+ obj = pt->GetData();
+ if (!obj->IsBounded() || rect.Intersects(obj->GetBounds()))
+ obj->DrawToDC(dc);
+ pt = pt->GetNext();
+ }
+}
+void wxPseudoDC::DrawToDCClippedRgn(wxDC *dc, const wxRegion& region)
+{
+ pdcObjectList::compatibility_iterator pt = m_objectlist.GetFirst();
+ pdcObject *obj;
+ while (pt)
+ {
+ obj = pt->GetData();
+ if (!obj->IsBounded() ||
+ (region.Contains(obj->GetBounds()) != wxOutRegion))
+ obj->DrawToDC(dc);
+ pt = pt->GetNext();
+ }
+}
+
+// ----------------------------------------------------------------------------
+// DrawToDC - play back the op list to the DC
+// ----------------------------------------------------------------------------
+void wxPseudoDC::DrawToDC(wxDC *dc)
+{
+ pdcObjectList::compatibility_iterator pt = m_objectlist.GetFirst();
+ while (pt)
+ {
+ pt->GetData()->DrawToDC(dc);
+ pt = pt->GetNext();
+ }
+}
+
diff --git a/src/pseudodc.h b/src/pseudodc.h
new file mode 100644
index 00000000..0be2a5b0
--- /dev/null
+++ b/src/pseudodc.h
@@ -0,0 +1,817 @@
+/////////////////////////////////////////////////////////////////////////////
+// Name: pseudodc.h
+// Purpose: wxPseudoDC classes
+// Author: Paul Lanier
+// Modified by: Robin Dunn
+//
+// Created: 05/25/06
+// Copyright: (c) 2006-2016 Total Control Software
+// Licence: wxWindows licence
+/////////////////////////////////////////////////////////////////////////////
+
+#ifndef _WX_PSUEDO_DC_H_BASE_
+#define _WX_PSUEDO_DC_H_BASE_
+
+//----------------------------------------------------------------------------
+// Base class for all pdcOp classes
+//----------------------------------------------------------------------------
+class pdcOp
+{
+ public:
+ // Constructor and Destructor
+ pdcOp() {}
+ virtual ~pdcOp() {}
+
+ // Virtual Drawing Methods
+ virtual void DrawToDC(wxDC *dc, bool grey=false)=0;
+ virtual void Translate(wxCoord WXUNUSED(dx), wxCoord WXUNUSED(dy)) {}
+ virtual void CacheGrey() {}
+};
+
+//----------------------------------------------------------------------------
+// declare a list class for list of pdcOps
+//----------------------------------------------------------------------------
+WX_DECLARE_LIST(pdcOp, pdcOpList);
+
+
+//----------------------------------------------------------------------------
+// Helper functions used for drawing greyed out versions of objects
+//----------------------------------------------------------------------------
+wxColour &MakeColourGrey(const wxColour &c);
+wxBrush &GetGreyBrush(wxBrush &brush);
+wxPen &GetGreyPen(wxPen &pen);
+wxIcon &GetGreyIcon(wxIcon &icon);
+wxBitmap &GetGreyBitmap(wxBitmap &bmp);
+
+//----------------------------------------------------------------------------
+// Classes derived from pdcOp
+// There is one class for each method mirrored from wxDC to wxPseudoDC
+//----------------------------------------------------------------------------
+class pdcSetFontOp : public pdcOp
+{
+ public:
+ pdcSetFontOp(const wxFont& font)
+ {m_font=font;}
+ virtual void DrawToDC(wxDC *dc, bool WXUNUSED(grey)=false) {dc->SetFont(m_font);}
+ protected:
+ wxFont m_font;
+};
+
+class pdcSetBrushOp : public pdcOp
+{
+ public:
+ pdcSetBrushOp(const wxBrush& brush)
+ {m_greybrush=m_brush=brush;}
+ virtual void DrawToDC(wxDC *dc, bool grey=false)
+ {
+ if (!grey) dc->SetBrush(m_brush);
+ else dc->SetBrush(m_greybrush);
+ }
+ virtual void CacheGrey() {m_greybrush=GetGreyBrush(m_brush);}
+ protected:
+ wxBrush m_brush;
+ wxBrush m_greybrush;
+};
+
+class pdcSetBackgroundOp : public pdcOp
+{
+ public:
+ pdcSetBackgroundOp(const wxBrush& brush)
+ {m_greybrush=m_brush=brush;}
+ virtual void DrawToDC(wxDC *dc, bool grey=false)
+ {
+ if (!grey) dc->SetBackground(m_brush);
+ else dc->SetBackground(m_greybrush);
+ }
+ virtual void CacheGrey() {m_greybrush=GetGreyBrush(m_brush);}
+ protected:
+ wxBrush m_brush;
+ wxBrush m_greybrush;
+};
+
+class pdcSetPenOp : public pdcOp
+{
+ public:
+ pdcSetPenOp(const wxPen& pen)
+ {m_greypen=m_pen=pen;}
+ virtual void DrawToDC(wxDC *dc, bool grey=false)
+ {
+ if (!grey) dc->SetPen(m_pen);
+ else dc->SetPen(m_greypen);
+ }
+ virtual void CacheGrey() {m_greypen=GetGreyPen(m_pen);}
+ protected:
+ wxPen m_pen;
+ wxPen m_greypen;
+};
+
+class pdcSetTextBackgroundOp : public pdcOp
+{
+ public:
+ pdcSetTextBackgroundOp(const wxColour& colour)
+ {m_colour=colour;}
+ virtual void DrawToDC(wxDC *dc, bool grey=false)
+ {
+ if (!grey) dc->SetTextBackground(m_colour);
+ else dc->SetTextBackground(MakeColourGrey(m_colour));
+ }
+ protected:
+ wxColour m_colour;
+};
+
+class pdcSetTextForegroundOp : public pdcOp
+{
+ public:
+ pdcSetTextForegroundOp(const wxColour& colour)
+ {m_colour=colour;}
+ virtual void DrawToDC(wxDC *dc, bool grey=false)
+ {
+ if (!grey) dc->SetTextForeground(m_colour);
+ else dc->SetTextForeground(MakeColourGrey(m_colour));
+ }
+ protected:
+ wxColour m_colour;
+};
+
+class pdcDrawRectangleOp : public pdcOp
+{
+ public:
+ pdcDrawRectangleOp(wxCoord x, wxCoord y, wxCoord w, wxCoord h)
+ {m_x=x; m_y=y; m_w=w; m_h=h;}
+ virtual void DrawToDC(wxDC *dc, bool WXUNUSED(grey)=false) {dc->DrawRectangle(m_x,m_y,m_w,m_h);}
+ virtual void Translate(wxCoord dx, wxCoord dy)
+ {m_x+=dx;m_y+=dy;}
+ protected:
+ wxCoord m_x,m_y,m_w,m_h;
+};
+
+class pdcDrawLineOp : public pdcOp
+{
+ public:
+ pdcDrawLineOp(wxCoord x1, wxCoord y1, wxCoord x2, wxCoord y2)
+ {m_x1=x1; m_y1=y1; m_x2=x2; m_y2=y2;}
+ virtual void DrawToDC(wxDC *dc, bool WXUNUSED(grey)=false) {dc->DrawLine(m_x1,m_y1,m_x2,m_y2);}
+ virtual void Translate(wxCoord dx, wxCoord dy)
+ {m_x1+=dx; m_y1+=dy; m_x2+=dx; m_y2+=dy;}
+ protected:
+ wxCoord m_x1,m_y1,m_x2,m_y2;
+};
+
+class pdcSetBackgroundModeOp : public pdcOp
+{
+ public:
+ pdcSetBackgroundModeOp(int mode) {m_mode=mode;}
+ virtual void DrawToDC(wxDC *dc, bool WXUNUSED(grey)=false) {dc->SetBackgroundMode(m_mode);}
+ protected:
+ int m_mode;
+};
+
+class pdcDrawTextOp : public pdcOp
+{
+ public:
+ pdcDrawTextOp(const wxString& text, wxCoord x, wxCoord y)
+ {m_text=text; m_x=x; m_y=y;}
+ virtual void DrawToDC(wxDC *dc, bool WXUNUSED(grey)=false) {dc->DrawText(m_text, m_x, m_y);}
+ virtual void Translate(wxCoord dx, wxCoord dy)
+ {m_x+=dx; m_y+=dy;}
+ protected:
+ wxString m_text;
+ wxCoord m_x, m_y;
+};
+
+class pdcClearOp : public pdcOp
+{
+ public:
+ pdcClearOp() {}
+ virtual void DrawToDC(wxDC *dc, bool WXUNUSED(grey)=false) {dc->Clear();}
+};
+
+class pdcBeginDrawingOp : public pdcOp
+{
+ public:
+ pdcBeginDrawingOp() {}
+ virtual void DrawToDC(wxDC *WXUNUSED(dc), bool WXUNUSED(grey)=false) {}
+};
+
+class pdcEndDrawingOp : public pdcOp
+{
+ public:
+ pdcEndDrawingOp() {}
+ virtual void DrawToDC(wxDC *WXUNUSED(dc), bool WXUNUSED(grey)=false) {}
+};
+
+class pdcFloodFillOp : public pdcOp
+{
+ public:
+ pdcFloodFillOp(wxCoord x, wxCoord y, const wxColour& col,
+ wxFloodFillStyle style) {m_x=x; m_y=y; m_col=col; m_style=style;}
+ virtual void DrawToDC(wxDC *dc, bool grey=false)
+ {
+ if (!grey) dc->FloodFill(m_x,m_y,m_col,m_style);
+ else dc->FloodFill(m_x,m_y,MakeColourGrey(m_col),m_style);
+ }
+ virtual void Translate(wxCoord dx, wxCoord dy)
+ {m_x+=dx; m_y+=dy;}
+ protected:
+ wxCoord m_x,m_y;
+ wxColour m_col;
+ wxFloodFillStyle m_style;
+};
+
+class pdcCrossHairOp : public pdcOp
+{
+ public:
+ pdcCrossHairOp(wxCoord x, wxCoord y) {m_x=x; m_y=y;}
+ virtual void DrawToDC(wxDC *dc, bool WXUNUSED(grey)=false) {dc->CrossHair(m_x,m_y);}
+ virtual void Translate(wxCoord dx, wxCoord dy)
+ {m_x+=dx; m_y+=dy;}
+ protected:
+ wxCoord m_x,m_y;
+};
+
+class pdcDrawArcOp : public pdcOp
+{
+ public:
+ pdcDrawArcOp(wxCoord x1, wxCoord y1, wxCoord x2, wxCoord y2,
+ wxCoord xc, wxCoord yc)
+ {m_x1=x1; m_y1=y1; m_x2=x2; m_y2=y2; m_xc=xc; m_yc=yc;}
+ virtual void DrawToDC(wxDC *dc, bool WXUNUSED(grey)=false)
+ {dc->DrawArc(m_x1,m_y1,m_x2,m_y2,m_xc,m_yc);}
+ virtual void Translate(wxCoord dx, wxCoord dy)
+ {m_x1+=dx; m_x2+=dx; m_y1+=dy; m_y2+=dy;}
+ protected:
+ wxCoord m_x1,m_x2,m_xc;
+ wxCoord m_y1,m_y2,m_yc;
+};
+
+class pdcDrawCheckMarkOp : public pdcOp
+{
+ public:
+ pdcDrawCheckMarkOp(wxCoord x, wxCoord y,
+ wxCoord width, wxCoord height)
+ {m_x=x; m_y=y; m_w=width; m_h=height;}
+ virtual void DrawToDC(wxDC *dc, bool WXUNUSED(grey)=false)
+ {dc->DrawCheckMark(m_x,m_y,m_w,m_h);}
+ virtual void Translate(wxCoord dx, wxCoord dy)
+ {m_x+=dx; m_y+=dy;}
+ protected:
+ wxCoord m_x,m_y,m_w,m_h;
+};
+
+class pdcDrawEllipticArcOp : public pdcOp
+{
+ public:
+ pdcDrawEllipticArcOp(wxCoord x, wxCoord y, wxCoord w, wxCoord h,
+ double sa, double ea)
+ {m_x=x; m_y=y; m_w=w; m_h=h; m_sa=sa; m_ea=ea;}
+ virtual void DrawToDC(wxDC *dc, bool WXUNUSED(grey)=false)
+ {dc->DrawEllipticArc(m_x,m_y,m_w,m_h,m_sa,m_ea);}
+ virtual void Translate(wxCoord dx, wxCoord dy)
+ {m_x+=dx; m_y+=dy;}
+ protected:
+ wxCoord m_x,m_y,m_w,m_h;
+ double m_sa,m_ea;
+};
+
+class pdcDrawPointOp : public pdcOp
+{
+ public:
+ pdcDrawPointOp(wxCoord x, wxCoord y)
+ {m_x=x; m_y=y;}
+ virtual void DrawToDC(wxDC *dc, bool WXUNUSED(grey)=false) {dc->DrawPoint(m_x,m_y);}
+ virtual void Translate(wxCoord dx, wxCoord dy)
+ {m_x+=dx; m_y+=dy;}
+ protected:
+ wxCoord m_x,m_y;
+};
+
+class pdcDrawRoundedRectangleOp : public pdcOp
+{
+ public:
+ pdcDrawRoundedRectangleOp(wxCoord x, wxCoord y, wxCoord width,
+ wxCoord height, double radius)
+ {m_x=x; m_y=y; m_w=width; m_h=height; m_r=radius;}
+ virtual void DrawToDC(wxDC *dc, bool WXUNUSED(grey)=false)
+ {dc->DrawRoundedRectangle(m_x,m_y,m_w,m_h,m_r);}
+ virtual void Translate(wxCoord dx, wxCoord dy)
+ {m_x+=dx; m_y+=dy;}
+ protected:
+ wxCoord m_x,m_y,m_w,m_h;
+ double m_r;
+};
+
+class pdcDrawEllipseOp : public pdcOp
+{
+ public:
+ pdcDrawEllipseOp(wxCoord x, wxCoord y, wxCoord width, wxCoord height)
+ {m_x=x; m_y=y; m_w=width; m_h=height;}
+ virtual void DrawToDC(wxDC *dc, bool WXUNUSED(grey)=false) {dc->DrawEllipse(m_x,m_y,m_w,m_h);}
+ virtual void Translate(wxCoord dx, wxCoord dy)
+ {m_x+=dx; m_y+=dy;}
+ protected:
+ wxCoord m_x,m_y,m_w,m_h;
+};
+
+class pdcDrawIconOp : public pdcOp
+{
+ public:
+ pdcDrawIconOp(const wxIcon& icon, wxCoord x, wxCoord y)
+ {m_icon=icon; m_x=x; m_y=y;}
+ virtual void DrawToDC(wxDC *dc, bool grey=false)
+ {
+ if (grey) dc->DrawIcon(m_greyicon,m_x,m_y);
+ else dc->DrawIcon(m_icon,m_x,m_y);
+ }
+ virtual void CacheGrey() {m_greyicon=GetGreyIcon(m_icon);}
+ virtual void Translate(wxCoord dx, wxCoord dy)
+ {m_x+=dx; m_y+=dy;}
+ protected:
+ wxIcon m_icon;
+ wxIcon m_greyicon;
+ wxCoord m_x,m_y;
+};
+
+class pdcDrawLinesOp : public pdcOp
+{
+ public:
+ pdcDrawLinesOp(const wxPointList* points,
+ wxCoord xoffset = 0,
+ wxCoord yoffset = 0);
+ virtual ~pdcDrawLinesOp();
+
+ virtual void DrawToDC(wxDC *dc, bool WXUNUSED(grey)=false)
+ { dc->DrawLines(m_points, m_xoffset, m_yoffset); }
+
+ virtual void Translate(wxCoord dx, wxCoord dy);
+
+ protected:
+ wxPointList* m_points;
+ wxCoord m_xoffset;
+ wxCoord m_yoffset;
+};
+
+class pdcDrawPolygonOp : public pdcOp
+{
+ public:
+ pdcDrawPolygonOp(const wxPointList* points,
+ wxCoord xoffset = 0,
+ wxCoord yoffset = 0,
+ wxPolygonFillMode fillStyle = wxODDEVEN_RULE);
+ virtual ~pdcDrawPolygonOp();
+
+ virtual void DrawToDC(wxDC *dc, bool WXUNUSED(grey)=false)
+ { dc->DrawPolygon(m_points, m_xoffset, m_yoffset, m_fillStyle); }
+
+ virtual void Translate(wxCoord dx, wxCoord dy);
+
+ protected:
+ wxPointList* m_points;
+ wxCoord m_xoffset;
+ wxCoord m_yoffset;
+ wxPolygonFillMode m_fillStyle;
+};
+
+class pdcDrawPolyPolygonOp : public pdcOp
+{
+ public:
+ pdcDrawPolyPolygonOp(int n, int count[], wxPoint points[],
+ wxCoord xoffset = 0, wxCoord yoffset = 0,
+ wxPolygonFillMode fillStyle = wxODDEVEN_RULE);
+ virtual ~pdcDrawPolyPolygonOp();
+ virtual void DrawToDC(wxDC *dc, bool WXUNUSED(grey)=false)
+ {dc->DrawPolyPolygon(m_n,m_count,m_points,
+ m_xoffset,m_yoffset,m_fillStyle);}
+ virtual void Translate(wxCoord dx, wxCoord dy)
+ {
+ for(int i=0; iDrawRotatedText(m_text,m_x,m_y,m_angle);}
+ virtual void Translate(wxCoord dx, wxCoord dy)
+ {m_x+=dx; m_y+=dy;}
+ protected:
+ wxString m_text;
+ wxCoord m_x,m_y;
+ double m_angle;
+};
+
+class pdcDrawBitmapOp : public pdcOp
+{
+ public:
+ pdcDrawBitmapOp(const wxBitmap &bmp, wxCoord x, wxCoord y,
+ bool useMask = false)
+ {m_bmp=bmp; m_x=x; m_y=y; m_useMask=useMask;}
+ virtual void DrawToDC(wxDC *dc, bool grey=false)
+ {
+ if (grey) dc->DrawBitmap(m_greybmp,m_x,m_y,m_useMask);
+ else dc->DrawBitmap(m_bmp,m_x,m_y,m_useMask);
+ }
+ virtual void CacheGrey() {m_greybmp=GetGreyBitmap(m_bmp);}
+ virtual void Translate(wxCoord dx, wxCoord dy)
+ {m_x+=dx; m_y+=dy;}
+ protected:
+ wxBitmap m_bmp;
+ wxBitmap m_greybmp;
+ wxCoord m_x,m_y;
+ bool m_useMask;
+};
+
+class pdcDrawLabelOp : public pdcOp
+{
+ public:
+ pdcDrawLabelOp(const wxString& text,
+ const wxBitmap& image,
+ const wxRect& rect,
+ int alignment = wxALIGN_LEFT | wxALIGN_TOP,
+ int indexAccel = -1)
+ {m_text=text; m_image=image; m_rect=rect;
+ m_align=alignment; m_iAccel=indexAccel;}
+ virtual void DrawToDC(wxDC *dc, bool WXUNUSED(grey)=false)
+ {dc->DrawLabel(m_text,m_image,m_rect,m_align,m_iAccel);}
+ virtual void Translate(wxCoord dx, wxCoord dy)
+ {m_rect.x+=dx; m_rect.y+=dy;}
+ protected:
+ wxString m_text;
+ wxBitmap m_image;
+ wxRect m_rect;
+ int m_align;
+ int m_iAccel;
+};
+
+#if wxUSE_SPLINES
+class pdcDrawSplineOp : public pdcOp
+{
+ public:
+ pdcDrawSplineOp(const wxPointList* points);
+ virtual ~pdcDrawSplineOp();
+ virtual void DrawToDC(wxDC *dc, bool WXUNUSED(grey)=false)
+ { dc->DrawSpline(m_points); }
+
+ virtual void Translate(wxCoord dx, wxCoord dy);
+
+ protected:
+ wxPointList* m_points;
+};
+#endif // wxUSE_SPLINES
+
+#if wxUSE_PALETTE
+class pdcSetPaletteOp : public pdcOp
+{
+ public:
+ pdcSetPaletteOp(const wxPalette& palette) {m_palette=palette;}
+ virtual void DrawToDC(wxDC *dc, bool WXUNUSED(grey)=false) {dc->SetPalette(m_palette);}
+ protected:
+ wxPalette m_palette;
+};
+#endif // wxUSE_PALETTE
+
+class pdcSetLogicalFunctionOp : public pdcOp
+{
+ public:
+ pdcSetLogicalFunctionOp(wxRasterOperationMode function) {m_function=function;}
+ virtual void DrawToDC(wxDC *dc, bool WXUNUSED(grey)=false) {dc->SetLogicalFunction(m_function);}
+ protected:
+ wxRasterOperationMode m_function;
+};
+
+//----------------------------------------------------------------------------
+// pdcObject type to contain list of operations for each real (Python) object
+//----------------------------------------------------------------------------
+class pdcObject
+{
+ public:
+ pdcObject(int id)
+ {m_id=id; m_bounded=false; m_oplist.DeleteContents(true);
+ m_greyedout=false;}
+
+ virtual ~pdcObject() {m_oplist.Clear();}
+
+ // Protected Member Access
+ void SetId(int id) {m_id=id;}
+ int GetId() {return m_id;}
+ void SetBounds(wxRect& rect) {m_bounds=rect; m_bounded=true;}
+ wxRect GetBounds() {return m_bounds;}
+ void SetBounded(bool bounded) {m_bounded=bounded;}
+ bool IsBounded() {return m_bounded;}
+ void SetGreyedOut(bool greyout=true);
+ bool GetGreyedOut() {return m_greyedout;}
+
+ // Op List Management Methods
+ void Clear() {m_oplist.Clear();}
+ void AddOp(pdcOp *op)
+ {
+ m_oplist.Append(op);
+ if (m_greyedout) op->CacheGrey();
+ }
+ int GetLen() {return m_oplist.GetCount();}
+ virtual void Translate(wxCoord dx, wxCoord dy);
+
+ // Drawing Method
+ virtual void DrawToDC(wxDC *dc);
+ protected:
+ int m_id; // id of object (associates this pdcObject
+ // with a Python object with same id)
+ wxRect m_bounds; // bounding rect of this object
+ bool m_bounded; // true if bounds is valid, false by default
+ pdcOpList m_oplist; // list of operations for this object
+ bool m_greyedout; // if true then draw this object in greys only
+};
+
+
+//----------------------------------------------------------------------------
+// Declare a wxList to hold all the objects. List order reflects drawing
+// order (Z order) and is the same order as objects are added to the list
+//----------------------------------------------------------------------------
+class pdcObjectList;
+WX_DECLARE_LIST(pdcObject, pdcObjectList);
+
+//Declare a hashmap that maps from ids to nodes in the object list.
+WX_DECLARE_HASH_MAP(
+ int,
+ pdcObject *,
+ wxIntegerHash,
+ wxIntegerEqual,
+ pdcObjectHash
+);
+
+
+// ----------------------------------------------------------------------------
+// wxPseudoDC class
+// ----------------------------------------------------------------------------
+// This is the actual PseudoDC class
+// This class stores a list of recorded dc operations in m_list
+// and plays them back to a real dc using DrawToDC or DrawToDCClipped.
+// Drawing methods are mirrored from wxDC but add nodes to m_list
+// instead of doing any real drawing.
+// ----------------------------------------------------------------------------
+class wxPseudoDC : public wxObject
+{
+public:
+ wxPseudoDC()
+ {m_currId=-1; m_lastObject=NULL; m_objectlist.DeleteContents(true);m_objectIndex.clear();}
+ ~wxPseudoDC();
+ // ------------------------------------------------------------------------
+ // List management methods
+ //
+ void RemoveAll();
+ int GetLen();
+
+ // ------------------------------------------------------------------------
+ // methods for managing operations by ID
+ //
+ // Set the Id for all subsequent operations (until SetId is called again)
+ void SetId(int id) {m_currId = id;}
+ // Remove all the operations associated with an id so it can be redrawn
+ void ClearId(int id);
+ // Remove the object node (and all operations) associated with an id
+ void RemoveId(int id);
+ // Set the bounding rect of a given object
+ // This will create an object node if one doesn't exist
+ void SetIdBounds(int id, wxRect& rect);
+ wxRect GetIdBounds(int id);
+ // Translate all the operations for this id
+ void TranslateId(int id, wxCoord dx, wxCoord dy);
+ // Grey-out an object
+ void SetIdGreyedOut(int id, bool greyout=true);
+ bool GetIdGreyedOut(int id);
+ // Find Objects at a point. Returns Python list of id's
+ // sorted in reverse drawing order (result[0] is top object)
+ // This version looks at drawn pixels
+ PyObject *FindObjects(wxCoord x, wxCoord y,
+ wxCoord radius=1, const wxColor& bg=*wxWHITE);
+ // This version only looks at bounding boxes
+ PyObject *FindObjectsByBBox(wxCoord x, wxCoord y);
+
+ // ------------------------------------------------------------------------
+ // Playback Methods
+ //
+ // draw to dc but skip objects known to be outside of rect
+ // This is a coarse level of clipping to speed things up
+ // when lots of objects are off screen and doesn't affect the dc level
+ // clipping
+ void DrawToDCClipped(wxDC *dc, const wxRect& rect);
+ void DrawToDCClippedRgn(wxDC *dc, const wxRegion& region);
+ // draw to dc with no clipping (well the dc will still clip)
+ void DrawToDC(wxDC *dc);
+ // draw a single object to the dc
+ void DrawIdToDC(int id, wxDC *dc);
+
+ // ------------------------------------------------------------------------
+ // Hit Detection Methods
+ //
+ // returns list of object with a drawn pixel within radius pixels of (x,y)
+ // the list is in reverse draw order so last drawn is first in list
+ // PyObject *HitTest(wxCoord x, wxCoord y, double radius)
+ // returns list of objects whose bounding boxes include (x,y)
+ // PyObject *HitTestBB(wxCoord x, wxCoord y)
+
+
+ // ------------------------------------------------------------------------
+ // Methods mirrored from wxDC
+ //
+ void FloodFill(wxCoord x, wxCoord y, const wxColour& col,
+ wxFloodFillStyle style = wxFLOOD_SURFACE)
+ {AddToList(new pdcFloodFillOp(x,y,col,style));}
+ void FloodFill(const wxPoint& pt, const wxColour& col,
+ wxFloodFillStyle style = wxFLOOD_SURFACE)
+ { FloodFill(pt.x, pt.y, col, style); }
+
+ void DrawLine(wxCoord x1, wxCoord y1, wxCoord x2, wxCoord y2)
+ {AddToList(new pdcDrawLineOp(x1, y1, x2, y2));}
+ void DrawLine(const wxPoint& pt1, const wxPoint& pt2)
+ { DrawLine(pt1.x, pt1.y, pt2.x, pt2.y); }
+
+ void CrossHair(wxCoord x, wxCoord y)
+ {AddToList(new pdcCrossHairOp(x,y));}
+ void CrossHair(const wxPoint& pt)
+ { CrossHair(pt.x, pt.y); }
+
+ void DrawArc(wxCoord x1, wxCoord y1, wxCoord x2, wxCoord y2,
+ wxCoord xc, wxCoord yc)
+ {AddToList(new pdcDrawArcOp(x1,y1,x2,y2,xc,yc));}
+ void DrawArc(const wxPoint& pt1, const wxPoint& pt2, const wxPoint& centre)
+ { DrawArc(pt1.x, pt1.y, pt2.x, pt2.y, centre.x, centre.y); }
+
+ void DrawCheckMark(wxCoord x, wxCoord y,
+ wxCoord width, wxCoord height)
+ {AddToList(new pdcDrawCheckMarkOp(x,y,width,height));}
+ void DrawCheckMark(const wxRect& rect)
+ { DrawCheckMark(rect.x, rect.y, rect.width, rect.height); }
+
+ void DrawEllipticArc(wxCoord x, wxCoord y, wxCoord w, wxCoord h,
+ double sa, double ea)
+ {AddToList(new pdcDrawEllipticArcOp(x,y,w,h,sa,ea));}
+ void DrawEllipticArc(const wxPoint& pt, const wxSize& sz,
+ double sa, double ea)
+ { DrawEllipticArc(pt.x, pt.y, sz.x, sz.y, sa, ea); }
+
+ void DrawPoint(wxCoord x, wxCoord y)
+ {AddToList(new pdcDrawPointOp(x,y));}
+ void DrawPoint(const wxPoint& pt)
+ { DrawPoint(pt.x, pt.y); }
+
+ void DrawPolygon(const wxPointList* points,
+ wxCoord xoffset = 0,
+ wxCoord yoffset = 0,
+ wxPolygonFillMode fillStyle = wxODDEVEN_RULE)
+ {AddToList(new pdcDrawPolygonOp(points, xoffset, yoffset, fillStyle));}
+
+ void DrawPolyPolygon(int n, int count[], wxPoint points[],
+ wxCoord xoffset = 0, wxCoord yoffset = 0,
+ wxPolygonFillMode fillStyle = wxODDEVEN_RULE)
+ {AddToList(new pdcDrawPolyPolygonOp(n,count,points,xoffset,yoffset,fillStyle));}
+
+ void DrawRectangle(wxCoord x, wxCoord y, wxCoord width, wxCoord height)
+ {AddToList(new pdcDrawRectangleOp(x, y, width, height));}
+ void DrawRectangle(const wxPoint& pt, const wxSize& sz)
+ { DrawRectangle(pt.x, pt.y, sz.x, sz.y); }
+ void DrawRectangle(const wxRect& rect)
+ { DrawRectangle(rect.x, rect.y, rect.width, rect.height); }
+
+ void DrawRoundedRectangle(wxCoord x, wxCoord y, wxCoord width, wxCoord height,
+ double radius)
+ {AddToList(new pdcDrawRoundedRectangleOp(x,y,width,height,radius));}
+ void DrawRoundedRectangle(const wxPoint& pt, const wxSize& sz,
+ double radius)
+ { DrawRoundedRectangle(pt.x, pt.y, sz.x, sz.y, radius); }
+ void DrawRoundedRectangle(const wxRect& r, double radius)
+ { DrawRoundedRectangle(r.x, r.y, r.width, r.height, radius); }
+
+ void DrawCircle(wxCoord x, wxCoord y, wxCoord radius)
+ { DrawEllipse(x - radius, y - radius, 2*radius, 2*radius); }
+ void DrawCircle(const wxPoint& pt, wxCoord radius)
+ { DrawCircle(pt.x, pt.y, radius); }
+
+ void DrawEllipse(wxCoord x, wxCoord y, wxCoord width, wxCoord height)
+ {AddToList(new pdcDrawEllipseOp(x,y,width,height));}
+ void DrawEllipse(const wxPoint& pt, const wxSize& sz)
+ { DrawEllipse(pt.x, pt.y, sz.x, sz.y); }
+ void DrawEllipse(const wxRect& rect)
+ { DrawEllipse(rect.x, rect.y, rect.width, rect.height); }
+
+ void DrawIcon(const wxIcon& icon, wxCoord x, wxCoord y)
+ {AddToList(new pdcDrawIconOp(icon,x,y));}
+ void DrawIcon(const wxIcon& icon, const wxPoint& pt)
+ { DrawIcon(icon, pt.x, pt.y); }
+
+ void DrawLines(const wxPointList* points,
+ wxCoord xoffset = 0, wxCoord yoffset = 0)
+ { AddToList(new pdcDrawLinesOp(points, xoffset, yoffset)); }
+
+ void DrawBitmap(const wxBitmap &bmp, wxCoord x, wxCoord y,
+ bool useMask = false)
+ {AddToList(new pdcDrawBitmapOp(bmp,x,y,useMask));}
+ void DrawBitmap(const wxBitmap &bmp, const wxPoint& pt,
+ bool useMask = false)
+ { DrawBitmap(bmp, pt.x, pt.y, useMask); }
+
+ void DrawText(const wxString& text, wxCoord x, wxCoord y)
+ {AddToList(new pdcDrawTextOp(text, x, y));}
+ void DrawText(const wxString& text, const wxPoint& pt)
+ { DrawText(text, pt.x, pt.y); }
+
+ void DrawRotatedText(const wxString& text, wxCoord x, wxCoord y, double angle)
+ {AddToList(new pdcDrawRotatedTextOp(text,x,y,angle));}
+ void DrawRotatedText(const wxString& text, const wxPoint& pt, double angle)
+ { DrawRotatedText(text, pt.x, pt.y, angle); }
+
+ // this version puts both optional bitmap and the text into the given
+ // rectangle and aligns is as specified by alignment parameter; it also
+ // will emphasize the character with the given index if it is != -1
+ void DrawLabel(const wxString& text,
+ const wxBitmap& image,
+ const wxRect& rect,
+ int alignment = wxALIGN_LEFT | wxALIGN_TOP,
+ int indexAccel = -1)
+ {AddToList(new pdcDrawLabelOp(text,image,rect,alignment,indexAccel));}
+
+ void DrawLabel(const wxString& text, const wxRect& rect,
+ int alignment = wxALIGN_LEFT | wxALIGN_TOP,
+ int indexAccel = -1)
+ { DrawLabel(text, wxNullBitmap, rect, alignment, indexAccel); }
+
+/*?????? I don't think that the source dc would stick around
+ void Blit(wxCoord xdest, wxCoord ydest, wxCoord width, wxCoord height,
+ wxDC *source, wxCoord xsrc, wxCoord ysrc,
+ int rop = wxCOPY, bool useMask = false, wxCoord xsrcMask = wxDefaultCoord, wxCoord ysrcMask = wxDefaultCoord)
+ {AddToList(new pdcBlitOp(xdest,ydest,width,height,source,xsrc,
+ ysrc,rop,useMask,xsrcMask,ysrcMask));}
+ void Blit(const wxPoint& destPt, const wxSize& sz,
+ wxDC *source, const wxPoint& srcPt,
+ int rop = wxCOPY, bool useMask = false, const wxPoint& srcPtMask = wxDefaultPosition)
+ {
+ Blit(destPt.x, destPt.y, sz.x, sz.y, source, srcPt.x, srcPt.y,
+ rop, useMask, srcPtMask.x, srcPtMask.y);
+ }
+??????*/
+
+#if wxUSE_SPLINES
+ void DrawSpline(const wxPointList* points)
+ { AddToList(new pdcDrawSplineOp(points)); }
+#endif // wxUSE_SPLINES
+
+#if wxUSE_PALETTE
+ void SetPalette(const wxPalette& palette)
+ {AddToList(new pdcSetPaletteOp(palette));}
+#endif // wxUSE_PALETTE
+
+ void SetLogicalFunction(wxRasterOperationMode function)
+ {AddToList(new pdcSetLogicalFunctionOp(function));}
+ void SetFont(const wxFont& font)
+ {AddToList(new pdcSetFontOp(font));}
+ void SetPen(const wxPen& pen)
+ {AddToList(new pdcSetPenOp(pen));}
+ void SetBrush(const wxBrush& brush)
+ {AddToList(new pdcSetBrushOp(brush));}
+ void SetBackground(const wxBrush& brush)
+ {AddToList(new pdcSetBackgroundOp(brush));}
+ void SetBackgroundMode(int mode)
+ {AddToList(new pdcSetBackgroundModeOp(mode));}
+ void SetTextBackground(const wxColour& colour)
+ {AddToList(new pdcSetTextBackgroundOp(colour));}
+ void SetTextForeground(const wxColour& colour)
+ {AddToList(new pdcSetTextForegroundOp(colour));}
+
+ void Clear()
+ {AddToList(new pdcClearOp());}
+ void BeginDrawing()
+ {AddToList(new pdcBeginDrawingOp());}
+ void EndDrawing()
+ {AddToList(new pdcEndDrawingOp());}
+
+protected:
+ // ------------------------------------------------------------------------
+ // protected helper methods
+ void AddToList(pdcOp *newOp);
+ pdcObject *FindObject(int id, bool create=false);
+
+ // ------------------------------------------------------------------------
+ // Data members
+ //
+ int m_currId; // id to use for operations done on the PseudoDC
+ pdcObject *m_lastObject; // used to find last used object quickly
+ pdcObjectList m_objectlist; // list of objects
+ pdcObjectHash m_objectIndex; //id->object lookup index
+
+};
+
+#endif
+
diff --git a/unittests/test_pseudodc.py b/unittests/test_pseudodc.py
new file mode 100644
index 00000000..d673d823
--- /dev/null
+++ b/unittests/test_pseudodc.py
@@ -0,0 +1,117 @@
+import unittest
+from unittests import wtc
+import wx
+import wx.adv
+
+WAITFOR = 250
+
+#---------------------------------------------------------------------------
+
+class pseudodc_Tests(wtc.WidgetTestCase):
+
+ def setUp(self):
+ super(pseudodc_Tests, self).setUp()
+ self.pnl = wx.Panel(self.frame)
+ self.pnl.Bind(wx.EVT_PAINT, self._paintIt)
+ self.pdc = wx.adv.PseudoDC()
+
+ self.pdc.SetBackground(wx.Brush('pink'))
+ self.pdc.Clear()
+ self.pdc.SetPen(wx.Pen('navy', 2))
+ self.pdc.SetBrush(wx.Brush('white'))
+
+
+ def _paintIt(self, evt):
+ # Paint event handler for the panel
+ dc = wx.PaintDC(self.pnl)
+ if 'wxMac' not in wx.PlatformInfo:
+ dc = wx.GCDC(dc)
+ self.pdc.DrawToDC(dc)
+
+ def _showIt(self):
+ self.pnl.Refresh()
+ self.waitFor(WAITFOR)
+
+
+ def test_pseudodc01(self):
+ assert self.pdc.GetLen() == 4
+ assert self.pdc.Len == 4
+
+
+ def test_pseudodc02(self):
+ self.pdc.DrawRectangle(10, 10, 50, 25)
+ self.pdc.DrawRectangle(wx.Rect(10, 40, 50, 25))
+ self.pdc.DrawRectangle((10, 70), (50,25))
+ self._showIt()
+
+
+ def test_pseudodc03(self):
+ self.pdc.DrawRoundedRectangle(10, 10, 50, 25, 4.5)
+ self.pdc.DrawRoundedRectangle(wx.Rect(10, 40, 50, 25), 4.5)
+ self.pdc.DrawRoundedRectangle((10, 70), (50,25), 4.5)
+ self._showIt()
+
+
+ def test_pseudodc04(self):
+ points = [ (10, 10),
+ (50, 10),
+ (50, 50),
+ (10, 50),
+ (10, 90),
+ (50, 90),
+ ]
+ self.pdc.DrawLines(points)
+ self._showIt()
+
+
+ def test_pseudodc05(self):
+ for offset in range(0, 300, 10):
+ self.pdc.DrawLine(0, offset, offset, 0)
+ self._showIt()
+
+
+ def test_pseudodc06(self):
+ for offset in range(0, 300, 10):
+ self.pdc.DrawLine((0, offset), (offset, 0))
+ self._showIt()
+
+
+ def test_pseudodc07(self):
+ points = [ (10, 10),
+ (25, 50),
+ (10, 75),
+ (75, 100)]
+ self.pdc.DrawSpline(points)
+ self._showIt()
+
+
+ def test_pseudodc08(self):
+ points = [ (10, 10),
+ (50, 10),
+ (50, 50),
+ (10, 50),
+ (10, 90),
+ (50, 90),
+ ]
+ self.pdc.DrawPolygon(points)
+ self._showIt()
+
+
+ def test_pseudodc09(self):
+ self.pdc.DrawEllipse(10, 10, 50, 25)
+ self.pdc.DrawEllipse(wx.Rect(10, 40, 50, 25))
+ self.pdc.DrawEllipse((10, 70), (50,25))
+ self._showIt()
+
+
+ def test_pseudodc10(self):
+ self.pdc.SetId(123)
+ self.test_pseudodc02()
+ self.pdc.TranslateId(123, 25, 25)
+ self._showIt()
+
+
+#---------------------------------------------------------------------------
+
+if __name__ == '__main__':
+ unittest.main()
diff --git a/unittests/test_wxdatetime.py b/unittests/test_wxdatetime.py
index 7579c897..4dc78ae6 100644
--- a/unittests/test_wxdatetime.py
+++ b/unittests/test_wxdatetime.py
@@ -192,9 +192,12 @@ class datetime_Tests(wtc.WidgetTestCase):
def test_datetimeParseRfc822Date(self):
d = wx.DateTime()
- val = d.ParseRfc822Date('Wed, 25 Feb 2015 13:34:45 -0800')
+ rfc822str = 'Wed, 25 Feb 2015 13:34:45 -0800'
+ import email.utils as eu
+ st = time.localtime(eu.mktime_tz(eu.parsedate_tz(rfc822str)))
+ val = d.ParseRfc822Date(rfc822str)
self.assertEqual(val, 31)
- self.assertEqual(d.hour, 13)
+ self.assertEqual(d.hour, st.tm_hour)
self.assertEqual(d.minute, 34)