From 31dcd1f021426269b2d5bc4c042955ad419bb0ba Mon Sep 17 00:00:00 2001 From: Robin Dunn Date: Wed, 18 May 2016 16:28:29 -0700 Subject: [PATCH 01/96] Update copyright --- docs/sphinx/conf.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/sphinx/conf.py b/docs/sphinx/conf.py index e4815a7c..715cd635 100644 --- a/docs/sphinx/conf.py +++ b/docs/sphinx/conf.py @@ -47,7 +47,7 @@ master_doc = 'index' # General information about the project. project = u'wxPython (Phoenix)' -copyright = u'2012-2014, The wxPython Team' +copyright = u'2012-2016, The wxPython Team' # The version info for the project you're documenting, acts as replacement for # |version| and |release|, also used in various other places throughout the From ec8b78a8245cb48cadcd4d90b63a57090d99a019 Mon Sep 17 00:00:00 2001 From: Robin Dunn Date: Wed, 18 May 2016 16:29:07 -0700 Subject: [PATCH 02/96] Clean *.rst files too --- build.py | 1 + 1 file changed, 1 insertion(+) diff --git a/build.py b/build.py index 0ea1fc25..73ffb3d4 100755 --- a/build.py +++ b/build.py @@ -1500,6 +1500,7 @@ def cmd_clean_sphinx(options, args): sphinxDir = opj(phoenixDir(), 'docs', 'sphinx') globs = [ opj(sphinxDir, '*.txt'), + opj(sphinxDir, '*.rst'), opj(sphinxDir, '*.inc'), opj(sphinxDir, '*.pkl'), opj(sphinxDir, '*.lst'), From a312e68d5365c3886a400facab5e01a8f5f6ee22 Mon Sep 17 00:00:00 2001 From: Robin Dunn Date: Wed, 18 May 2016 16:35:42 -0700 Subject: [PATCH 03/96] Add wx prefix in the module names map --- sphinxtools/constants.py | 98 ++++++++++++++++++++-------------------- 1 file changed, 49 insertions(+), 49 deletions(-) diff --git a/sphinxtools/constants.py b/sphinxtools/constants.py index 71c1f427..02a02ea1 100644 --- a/sphinxtools/constants.py +++ b/sphinxtools/constants.py @@ -69,87 +69,87 @@ REMOVED_LINKS = ['Library:', 'Category:', 'Predefined objects/pointers:'] # Dictionary mapping the etg module name to the real Phoenix module name # This needs to be kept up to date when other stuff comes in (i.e., wx.grid, # wx.html and so on) -MODULENAME_REPLACE = {'_core' : '', - '_dataview': 'dataview.', - '_adv' : 'adv.', - '_stc' : 'stc.', - '_html' : 'html.', - '_html2' : 'html2.', - '_glcanvas': 'glcanvas.', - '_xml' : 'xml.', - '_xrc' : 'xrc.', - '_grid' : 'grid.', - '_richtext': 'richtext.', - '_webkit' : 'webkit.', - '_media' : 'media.', - '_msw' : 'msw', +MODULENAME_REPLACE = {'_core' : 'wx.', + '_dataview': 'wx.dataview.', + '_adv' : 'wx.adv.', + '_stc' : 'wx.stc.', + '_html' : 'wx.html.', + '_html2' : 'wx.html2.', + '_glcanvas': 'wx.glcanvas.', + '_xml' : 'wx.xml.', + '_xrc' : 'wx.xrc.', + '_grid' : 'wx.grid.', + '_richtext': 'wx.richtext.', + '_webkit' : 'wx.webkit.', + '_media' : 'wx.media.', + '_msw' : 'wx.msw', } NO_MODULE = { # -- wxAdvanced -- # # Widgets - 'DatePickerCtrlGeneric': 'adv.', - 'GenericCalendarCtrl' : 'adv.', - 'OwnerDrawnComboBox' : 'adv.', + 'DatePickerCtrlGeneric': 'wx.adv.', + 'GenericCalendarCtrl' : 'wx.adv.', + 'OwnerDrawnComboBox' : 'wx.adv.', # Enums/constants - 'AnimationType' : 'adv.', - 'CalendarDateBorder' : 'adv.', - 'CalendarHitTestResult' : 'adv.', - 'LayoutAlignment' : 'adv.', - 'LayoutOrientation' : 'adv.', - 'OwnerDrawnComboBoxPaintingFlags': 'adv.', - 'SashDragStatus' : 'adv.', - 'SashEdgePosition' : 'adv.', - 'TaskBarIconType' : 'adv.', - 'TipKind' : 'adv.', + 'AnimationType' : 'wx.adv.', + 'CalendarDateBorder' : 'wx.adv.', + 'CalendarHitTestResult' : 'wx.adv.', + 'LayoutAlignment' : 'wx.adv.', + 'LayoutOrientation' : 'wx.adv.', + 'OwnerDrawnComboBoxPaintingFlags': 'wx.adv.', + 'SashDragStatus' : 'wx.adv.', + 'SashEdgePosition' : 'wx.adv.', + 'TaskBarIconType' : 'wx.adv.', + 'TipKind' : 'wx.adv.', # -- wxDataView -- # # Widgets - 'DataViewItemObjectMapper': 'dataview.', - 'PyDataViewModel' : 'dataview.', + 'DataViewItemObjectMapper': 'wx.dataview.', + 'PyDataViewModel' : 'wx.dataview.', # Enums/constants - 'DataViewCellMode' : 'dataview.', - 'DataViewCellRenderState' : 'dataview.', - 'DataViewColumnFlags' : 'dataview.', + 'DataViewCellMode' : 'wx.dataview.', + 'DataViewCellRenderState' : 'wx.dataview.', + 'DataViewColumnFlags' : 'wx.dataview.', # -- wxHTML -- # # Widgets - 'HTMLHelpDialog' : 'html.', - 'HTMLHelpFrame' : 'html.', - 'HTMLHelpWindow' : 'html.', + 'HTMLHelpDialog' : 'wx.html.', + 'HTMLHelpFrame' : 'wx.html.', + 'HTMLHelpWindow' : 'wx.html.', # Enums/constants - 'HTMLCursor' : 'html.', - 'HtmlOpeningStatus' : 'html.', - 'HtmlScriptMode' : 'html.', - 'HtmlSelectionState' : 'html.', - 'HtmlURLType' : 'html.', + 'HTMLCursor' : 'wx.html.', + 'HtmlOpeningStatus' : 'wx.html.', + 'HtmlScriptMode' : 'wx.html.', + 'HtmlSelectionState' : 'wx.html.', + 'HtmlURLType' : 'wx.html.', # -- wxHTML2 -- # # Widgets # Enums/constants - 'WebViewBackend' : 'html2.', - 'WebViewNavigationError' : 'html2.', - 'WebViewReloadFlags' : 'html2.', - 'WebViewZoom' : 'html2.', - 'WebViewZoomType' : 'html2.', + 'WebViewBackend' : 'wx.html2.', + 'WebViewNavigationError' : 'wx.html2.', + 'WebViewReloadFlags' : 'wx.html2.', + 'WebViewZoom' : 'wx.html2.', + 'WebViewZoomType' : 'wx.html2.', # -- wxXML -- # # Widgets # Enums/constants - 'XmlDocumentLoadFlag' : 'xml.', - 'XmlNodeType' : 'xml.', + 'XmlDocumentLoadFlag' : 'wx.xml.', + 'XmlNodeType' : 'wx.xml.', # -- wxXRC -- # # Widgets - 'XmlSubclassFactory' : 'xrc.', + 'XmlSubclassFactory' : 'wx.xrc.', # Enums/constants - 'XmlResourceFlags' : 'xrc.', + 'XmlResourceFlags' : 'wx.xrc.', } # Other C++ specific things to strip away From 902263f9d9a4a198460108934575121ce3ef2dc5 Mon Sep 17 00:00:00 2001 From: Robin Dunn Date: Wed, 18 May 2016 16:38:18 -0700 Subject: [PATCH 04/96] Move the snippets to their new file names --- .../converted/{AcceleratorTable.1.py => wx.AcceleratorTable.1.py} | 0 .../{AffineMatrix2D.Concat.1.py => wx.AffineMatrix2D.Concat.1.py} | 0 .../{AffineMatrix2D.Invert.1.py => wx.AffineMatrix2D.Invert.1.py} | 0 .../{AffineMatrix2D.Rotate.1.py => wx.AffineMatrix2D.Rotate.1.py} | 0 .../{AffineMatrix2D.Scale.1.py => wx.AffineMatrix2D.Scale.1.py} | 0 ...formDistance.1.py => wx.AffineMatrix2D.TransformDistance.1.py} | 0 ...formDistance.2.py => wx.AffineMatrix2D.TransformDistance.2.py} | 0 ....TransformPoint.1.py => wx.AffineMatrix2D.TransformPoint.1.py} | 0 ....TransformPoint.2.py => wx.AffineMatrix2D.TransformPoint.2.py} | 0 ...neMatrix2D.Translate.1.py => wx.AffineMatrix2D.Translate.1.py} | 0 ...Matrix2DBase.Concat.1.py => wx.AffineMatrix2DBase.Concat.1.py} | 0 ...Matrix2DBase.Invert.1.py => wx.AffineMatrix2DBase.Invert.1.py} | 0 .../converted/{App.SetTopWindow.1.py => wx.App.SetTopWindow.1.py} | 0 .../{AppConsole.SetCLocale.1.py => wx.AppConsole.SetCLocale.1.py} | 0 .../python/converted/{ArtProvider.1.py => wx.ArtProvider.1.py} | 0 .../python/converted/{ArtProvider.2.py => wx.ArtProvider.2.py} | 0 .../{Bitmap.NewFromPNGData.2.py => wx.Bitmap.NewFromPNGData.2.py} | 0 .../converted/{Bitmap.__init__.1.py => wx.Bitmap.__init__.1.py} | 0 .../{BoxSizer.AddSpacer.1.py => wx.BoxSizer.AddSpacer.1.py} | 0 .../python/converted/{BusyCursor.1.py => wx.BusyCursor.1.py} | 0 .../snippets/python/converted/{BusyInfo.1.py => wx.BusyInfo.1.py} | 0 .../snippets/python/converted/{BusyInfo.2.py => wx.BusyInfo.2.py} | 0 .../python/converted/{Clipboard.1.py => wx.Clipboard.1.py} | 0 .../python/converted/{CloseEvent.1.py => wx.CloseEvent.1.py} | 0 .../converted/{CollapsiblePane.1.py => wx.CollapsiblePane.1.py} | 0 .../python/converted/{ComboCtrl.1.py => wx.ComboCtrl.1.py} | 0 .../python/converted/{ComboCtrl.2.py => wx.ComboCtrl.2.py} | 0 ...l.SetTextCtrlStyle.1.py => wx.ComboCtrl.SetTextCtrlStyle.1.py} | 0 .../python/converted/{ConfigBase.1.py => wx.ConfigBase.1.py} | 0 .../python/converted/{ConfigBase.2.py => wx.ConfigBase.2.py} | 0 .../python/converted/{ConfigBase.3.py => wx.ConfigBase.3.py} | 0 .../python/converted/{ConfigBase.4.py => wx.ConfigBase.4.py} | 0 .../python/converted/{ConfigBase.5.py => wx.ConfigBase.5.py} | 0 .../{ConfigPathChanger.1.py => wx.ConfigPathChanger.1.py} | 0 ...thChanger.__init__.1.py => wx.ConfigPathChanger.__init__.1.py} | 0 ...thChanger.__init__.2.py => wx.ConfigPathChanger.__init__.2.py} | 0 .../python/converted/{ContextHelp.1.py => wx.ContextHelp.1.py} | 0 ...tSizeFromTextSize.1.py => wx.Control.GetSizeFromTextSize.1.py} | 0 ...tSizeFromTextSize.2.py => wx.Control.GetSizeFromTextSize.2.py} | 0 ...Control.SetLabelMarkup.1.py => wx.Control.SetLabelMarkup.1.py} | 0 .../snippets/python/converted/{Cursor.1.py => wx.Cursor.1.py} | 0 .../converted/{Cursor.__init__.1.py => wx.Cursor.__init__.1.py} | 0 .../python/converted/{DCClipper.1.py => wx.DCClipper.1.py} | 0 .../{DataObjectComposite.1.py => wx.DataObjectComposite.1.py} | 0 ...Time.ConvertYearToBC.1.py => wx.DateTime.ConvertYearToBC.1.py} | 0 .../python/converted/{DateTime.Now.1.py => wx.DateTime.Now.1.py} | 0 .../{DateTime.ParseFormat.1.py => wx.DateTime.ParseFormat.1.py} | 0 .../{DateTime.ParseFormat.2.py => wx.DateTime.ParseFormat.2.py} | 0 .../snippets/python/converted/{Dialog.1.py => wx.Dialog.1.py} | 0 .../snippets/python/converted/{Dialog.2.py => wx.Dialog.2.py} | 0 .../python/converted/{DirDialog.1.py => wx.DirDialog.1.py} | 0 .../python/converted/{Event.Clone.1.py => wx.Event.Clone.1.py} | 0 .../python/converted/{EventBlocker.1.py => wx.EventBlocker.1.py} | 0 .../python/converted/{EventFilter.1.py => wx.EventFilter.1.py} | 0 .../{EventLoopActivator.1.py => wx.EventLoopActivator.1.py} | 0 ...EventLoopBase.Dispatch.1.py => wx.EventLoopBase.Dispatch.1.py} | 0 .../{EvtHandler.QueueEvent.1.py => wx.EvtHandler.QueueEvent.1.py} | 0 .../{EvtHandler.QueueEvent.2.py => wx.EvtHandler.QueueEvent.2.py} | 0 ...dler.SetNextHandler.1.py => wx.EvtHandler.SetNextHandler.1.py} | 0 .../converted/{FSFile.__init__.1.py => wx.FSFile.__init__.1.py} | 0 .../python/converted/{FileDialog.1.py => wx.FileDialog.1.py} | 0 .../python/converted/{FileDialog.2.py => wx.FileDialog.2.py} | 0 .../python/converted/{FileDialog.3.py => wx.FileDialog.3.py} | 0 .../{FileSystem.AddHandler.1.py => wx.FileSystem.AddHandler.1.py} | 0 ...leSystem.ChangePathTo.1.py => wx.FileSystem.ChangePathTo.1.py} | 0 ...leSystem.ChangePathTo.2.py => wx.FileSystem.ChangePathTo.2.py} | 0 ...stemHandler.CanOpen.1.py => wx.FileSystemHandler.CanOpen.1.py} | 0 ...Handler.GetAnchor.1.py => wx.FileSystemHandler.GetAnchor.1.py} | 0 ...eftLocation.1.py => wx.FileSystemHandler.GetLeftLocation.1.py} | 0 ...eFromExt.1.py => wx.FileSystemHandler.GetMimeTypeFromExt.1.py} | 0 ...ler.GetProtocol.1.py => wx.FileSystemHandler.GetProtocol.1.py} | 0 ...htLocation.1.py => wx.FileSystemHandler.GetRightLocation.1.py} | 0 .../snippets/python/converted/{FileType.1.py => wx.FileType.1.py} | 0 .../snippets/python/converted/{FileType.2.py => wx.FileType.2.py} | 0 .../converted/{Font.__init__.1.py => wx.Font.__init__.1.py} | 0 .../converted/{Font.__init__.2.py => wx.Font.__init__.2.py} | 0 .../snippets/python/converted/{FontInfo.1.py => wx.FontInfo.1.py} | 0 .../python/converted/{FontMapper.1.py => wx.FontMapper.1.py} | 0 .../snippets/python/converted/{Frame.1.py => wx.Frame.1.py} | 0 .../converted/{GraphicsContext.1.py => wx.GraphicsContext.1.py} | 0 .../converted/{GraphicsRenderer.1.py => wx.GraphicsRenderer.1.py} | 0 .../{HeaderColumnSimple.1.py => wx.HeaderColumnSimple.1.py} | 0 ...rl.AddColumnsItems.1.py => wx.HeaderCtrl.AddColumnsItems.1.py} | 0 .../{HeaderCtrl.Create.1.py => wx.HeaderCtrl.Create.1.py} | 0 ...nWidthToFit.1.py => wx.HeaderCtrl.UpdateColumnWidthToFit.1.py} | 0 ...Simple.HideColumn.1.py => wx.HeaderCtrlSimple.HideColumn.1.py} | 0 ...erBase.SetViewer.1.py => wx.HelpControllerBase.SetViewer.1.py} | 0 .../{IconBundle.GetIcon.1.py => wx.IconBundle.GetIcon.1.py} | 0 .../converted/{Image.AddHandler.1.py => wx.Image.AddHandler.1.py} | 0 ...Image.ComputeHistogram.1.py => wx.Image.ComputeHistogram.1.py} | 0 ...GetImageExtWildcard.1.py => wx.Image.GetImageExtWildcard.1.py} | 0 .../converted/{Image.LoadFile.1.py => wx.Image.LoadFile.1.py} | 0 .../converted/{Image.LoadFile.2.py => wx.Image.LoadFile.2.py} | 0 .../converted/{Image.SaveFile.1.py => wx.Image.SaveFile.1.py} | 0 .../converted/{Image.SaveFile.2.py => wx.Image.SaveFile.2.py} | 0 .../python/converted/{Image.Scale.1.py => wx.Image.Scale.1.py} | 0 .../converted/{Image.__init__.1.py => wx.Image.__init__.1.py} | 0 .../snippets/python/converted/{InfoBar.1.py => wx.InfoBar.1.py} | 0 .../{KeyEvent.GetKeyCode.1.py => wx.KeyEvent.GetKeyCode.1.py} | 0 ...State.GetModifiers.1.py => wx.KeyboardState.GetModifiers.1.py} | 0 ...State.GetModifiers.2.py => wx.KeyboardState.GetModifiers.2.py} | 0 .../{ListCtrl.GetNextItem.1.py => wx.ListCtrl.GetNextItem.1.py} | 0 ...Ctrl.SetColumnsOrder.1.py => wx.ListCtrl.SetColumnsOrder.1.py} | 0 .../{ListCtrl.SetItemState.1.py => wx.ListCtrl.SetItemState.1.py} | 0 .../{ListCtrl.SetItemState.2.py => wx.ListCtrl.SetItemState.2.py} | 0 .../{ListCtrl.SortItems.1.py => wx.ListCtrl.SortItems.1.py} | 0 .../snippets/python/converted/{Locale.1.py => wx.Locale.1.py} | 0 .../snippets/python/converted/{Locale.2.py => wx.Locale.2.py} | 0 .../converted/{Log.LogRecord.1.py => wx.Log.LogRecord.1.py} | 0 .../{Log.SetComponentLevel.1.py => wx.Log.SetComponentLevel.1.py} | 0 .../snippets/python/converted/{LogChain.1.py => wx.LogChain.1.py} | 0 .../python/converted/{LogFormatter.1.py => wx.LogFormatter.1.py} | 0 .../python/converted/{LogFormatter.2.py => wx.LogFormatter.2.py} | 0 .../snippets/python/converted/{LogNull.1.py => wx.LogNull.1.py} | 0 .../snippets/python/converted/{LogNull.2.py => wx.LogNull.2.py} | 0 ....OnCreateClient.1.py => wx.MDIParentFrame.OnCreateClient.1.py} | 0 .../snippets/python/converted/{MemoryDC.1.py => wx.MemoryDC.1.py} | 0 .../snippets/python/converted/{MemoryDC.2.py => wx.MemoryDC.2.py} | 0 .../converted/{MemoryFSHandler.1.py => wx.MemoryFSHandler.1.py} | 0 .../python/converted/{Menu.Append.1.py => wx.Menu.Append.1.py} | 0 .../python/converted/{Menu.Append.2.py => wx.Menu.Append.2.py} | 0 .../python/converted/{Menu.Append.3.py => wx.Menu.Append.3.py} | 0 .../python/converted/{Menu.Append.4.py => wx.Menu.Append.4.py} | 0 .../{MenuItem.GetLabelText.1.py => wx.MenuItem.GetLabelText.1.py} | 0 .../{MenuItem.SetItemLabel.1.py => wx.MenuItem.SetItemLabel.1.py} | 0 .../{MenuItem.__init__.1.py => wx.MenuItem.__init__.1.py} | 0 ...g.SetYesNoLabels.1.py => wx.MessageDialog.SetYesNoLabels.1.py} | 0 ...g.SetYesNoLabels.2.py => wx.MessageDialog.SetYesNoLabels.2.py} | 0 .../converted/{ModalDialogHook.1.py => wx.ModalDialogHook.1.py} | 0 ...nOwnedWindow.SetShape.1.py => wx.NonOwnedWindow.SetShape.1.py} | 0 .../snippets/python/converted/{Notebook.1.py => wx.Notebook.1.py} | 0 .../snippets/python/converted/{Notebook.2.py => wx.Notebook.2.py} | 0 .../python/converted/{PaintEvent.1.py => wx.PaintEvent.1.py} | 0 .../python/converted/{PaintEvent.2.py => wx.PaintEvent.2.py} | 0 ...erBase.GetPickerCtrl.1.py => wx.PickerBase.GetPickerCtrl.1.py} | 0 .../python/converted/{PlatformInfo.1.py => wx.PlatformInfo.1.py} | 0 .../{Point.SetDefaults.1.py => wx.Point.SetDefaults.1.py} | 0 .../converted/{Point.__init__.1.py => wx.Point.__init__.1.py} | 0 .../converted/{RearrangeDialog.1.py => wx.RearrangeDialog.1.py} | 0 ...xtraControls.1.py => wx.RearrangeDialog.AddExtraControls.1.py} | 0 .../converted/{RearrangeList.1.py => wx.RearrangeList.1.py} | 0 .../{RichMessageDialog.1.py => wx.RichMessageDialog.1.py} | 0 ...ScrollBar.SetScrollbar.1.py => wx.ScrollBar.SetScrollbar.1.py} | 0 .../{Scrolled.DoPrepareDC.1.py => wx.Scrolled.DoPrepareDC.1.py} | 0 ...Scrolled.SetScrollbars.1.py => wx.Scrolled.SetScrollbars.1.py} | 0 .../python/converted/{SearchCtrl.1.py => wx.SearchCtrl.1.py} | 0 .../{SingleInstanceChecker.1.py => wx.SingleInstanceChecker.1.py} | 0 .../converted/{Size.SetDefaults.1.py => wx.Size.SetDefaults.1.py} | 0 .../converted/{Sizer.AddSpacer.1.py => wx.Sizer.AddSpacer.1.py} | 0 ...Sizer.AddStretchSpacer.1.py => wx.Sizer.AddStretchSpacer.1.py} | 0 .../python/converted/{SizerFlags.1.py => wx.SizerFlags.1.py} | 0 .../python/converted/{SizerFlags.2.py => wx.SizerFlags.2.py} | 0 .../python/converted/{SizerFlags.3.py => wx.SizerFlags.3.py} | 0 ...s.MSWGetShellDir.1.py => wx.StandardPaths.MSWGetShellDir.1.py} | 0 ...dardPaths.UseAppInfo.1.py => wx.StandardPaths.UseAppInfo.1.py} | 0 .../python/converted/{StaticBox.1.py => wx.StaticBox.1.py} | 0 .../python/converted/{StaticBox.2.py => wx.StaticBox.2.py} | 0 .../converted/{StaticBoxSizer.1.py => wx.StaticBoxSizer.1.py} | 0 .../python/converted/{StopWatch.1.py => wx.StopWatch.1.py} | 0 .../{TextCompleterSimple.1.py => wx.TextCompleterSimple.1.py} | 0 .../snippets/python/converted/{TextCtrl.1.py => wx.TextCtrl.1.py} | 0 .../snippets/python/converted/{TextCtrl.2.py => wx.TextCtrl.2.py} | 0 .../snippets/python/converted/{TextCtrl.3.py => wx.TextCtrl.3.py} | 0 .../snippets/python/converted/{TextCtrl.4.py => wx.TextCtrl.4.py} | 0 .../snippets/python/converted/{TextCtrl.5.py => wx.TextCtrl.5.py} | 0 ...GetInsertionPoint.1.py => wx.TextEntry.GetInsertionPoint.1.py} | 0 .../{TextUrlEvent.Clone.1.py => wx.TextUrlEvent.Clone.1.py} | 0 .../python/converted/{TimerEvent.1.py => wx.TimerEvent.1.py} | 0 .../snippets/python/converted/{ToolBar.1.py => wx.ToolBar.1.py} | 0 .../snippets/python/converted/{ToolBar.2.py => wx.ToolBar.2.py} | 0 .../snippets/python/converted/{ToolBar.3.py => wx.ToolBar.3.py} | 0 .../python/converted/{Trackable.1.py => wx.Trackable.1.py} | 0 .../converted/{URLDataObject.1.py => wx.URLDataObject.1.py} | 0 ...ox.GetFirstSelected.1.py => wx.VListBox.GetFirstSelected.1.py} | 0 .../{Validator.SetWindow.1.py => wx.Validator.SetWindow.1.py} | 0 ...rtDialogToPixels.1.py => wx.Window.ConvertDialogToPixels.1.py} | 0 ...ndow.DoUpdateWindowUI.1.py => wx.Window.DoUpdateWindowUI.1.py} | 0 .../python/converted/{Window.Fit.1.py => wx.Window.Fit.1.py} | 0 ...ow.HandleWindowEvent.1.py => wx.Window.HandleWindowEvent.1.py} | 0 .../python/converted/{Window.Move.1.py => wx.Window.Move.1.py} | 0 .../python/converted/{Window.Move.2.py => wx.Window.Move.2.py} | 0 .../python/converted/{Window.Move.3.py => wx.Window.Move.3.py} | 0 .../{Window.ProcessEvent.1.py => wx.Window.ProcessEvent.1.py} | 0 ....ProcessWindowEvent.1.py => wx.Window.ProcessWindowEvent.1.py} | 0 ...ndow.PushEventHandler.1.py => wx.Window.PushEventHandler.1.py} | 0 ....SetBackgroundStyle.1.py => wx.Window.SetBackgroundStyle.1.py} | 0 ...ndow.SetMaxClientSize.1.py => wx.Window.SetMaxClientSize.1.py} | 0 ...ndow.SetMinClientSize.1.py => wx.Window.SetMinClientSize.1.py} | 0 .../{Window.SetScrollbar.1.py => wx.Window.SetScrollbar.1.py} | 0 .../{Window.UpdateWindowUI.1.py => wx.Window.UpdateWindowUI.1.py} | 0 ...ialogEvent.Clone.1.py => wx.WindowModalDialogEvent.Clone.1.py} | 0 .../{adv.AboutDialogInfo.1.py => wx.adv.AboutDialogInfo.1.py} | 0 .../converted/{adv.BannerWindow.1.py => wx.adv.BannerWindow.1.py} | 0 .../converted/{adv.RichToolTip.1.py => wx.adv.RichToolTip.1.py} | 0 .../converted/{adv.Sound.Play.1.py => wx.adv.Sound.Play.1.py} | 0 .../{adv.Sound.PlaySound.1.py => wx.adv.Sound.PlaySound.1.py} | 0 .../converted/{adv.SplashScreen.1.py => wx.adv.SplashScreen.1.py} | 0 ...Ctrl.GetNextItem.1.py => wx.adv.TreeListCtrl.GetNextItem.1.py} | 0 ...rdPageSimple.Chain.1.py => wx.adv.WizardPageSimple.Chain.1.py} | 0 ...rdPageSimple.Chain.2.py => wx.adv.WizardPageSimple.Chain.2.py} | 0 ...rdPageSimple.Chain.3.py => wx.adv.WizardPageSimple.Chain.3.py} | 0 ...adv.functions.AboutBox.1.py => wx.adv.functions.AboutBox.1.py} | 0 ...y => wx.dataview.DataViewCustomRenderer.CreateEditorCtrl.1.py} | 0 ...x.dataview.DataViewCustomRenderer.GetValueFromEditorCtrl.1.py} | 0 ...ew.DataViewListCtrl.1.py => wx.dataview.DataViewListCtrl.1.py} | 0 ...dataview.DataViewModel.1.py => wx.dataview.DataViewModel.1.py} | 0 ...dataview.DataViewModel.2.py => wx.dataview.DataViewModel.2.py} | 0 ...ze.1.py => wx.dataview.DataViewRenderer.DisableEllipsize.1.py} | 0 ...GetNextItem.1.py => wx.dataview.TreeListCtrl.GetNextItem.1.py} | 0 .../{functions.DirSelector.1.py => wx.functions.DirSelector.1.py} | 0 ...functions.FileSelector.1.py => wx.functions.FileSelector.1.py} | 0 ...functions.FileSelector.2.py => wx.functions.FileSelector.2.py} | 0 .../converted/{functions.Kill.1.py => wx.functions.Kill.1.py} | 0 .../converted/{functions.Kill.2.py => wx.functions.Kill.2.py} | 0 .../{functions.MessageBox.1.py => wx.functions.MessageBox.1.py} | 0 .../{grid.Grid.GetCellSize.1.py => wx.grid.Grid.GetCellSize.1.py} | 0 .../{grid.Grid.GetCellSize.2.py => wx.grid.Grid.GetCellSize.2.py} | 0 ...GetRowGridLinePen.1.py => wx.grid.Grid.GetRowGridLinePen.1.py} | 0 ...ment.1.py => wx.grid.GridCellAttr.GetNonDefaultAlignment.1.py} | 0 .../{grid.GridUpdateLocker.1.py => wx.grid.GridUpdateLocker.1.py} | 0 ...AdjustPagebreak.1.py => wx.html.HtmlCell.AdjustPagebreak.1.py} | 0 .../{html.HtmlCell.Draw.1.py => wx.html.HtmlCell.Draw.1.py} | 0 ...ell.DrawInvisible.1.py => wx.html.HtmlCell.DrawInvisible.1.py} | 0 ...dthFloat.1.py => wx.html.HtmlContainerCell.SetWidthFloat.1.py} | 0 ...dthFloat.2.py => wx.html.HtmlContainerCell.SetWidthFloat.2.py} | 0 ...ml.HtmlFilter.CanRead.1.py => wx.html.HtmlFilter.CanRead.1.py} | 0 ....HtmlFilter.ReadFile.1.py => wx.html.HtmlFilter.ReadFile.1.py} | 0 ...oller.AddBook.1.py => wx.html.HtmlHelpController.AddBook.1.py} | 0 ...oller.AddBook.2.py => wx.html.HtmlHelpController.AddBook.2.py} | 0 .../{html.HtmlHelpWindow.1.py => wx.html.HtmlHelpWindow.1.py} | 0 .../{html.HtmlModalHelp.1.py => wx.html.HtmlModalHelp.1.py} | 0 .../{html.HtmlParser.GetFS.1.py => wx.html.HtmlParser.GetFS.1.py} | 0 ...PushTagHandler.1.py => wx.html.HtmlParser.PushTagHandler.1.py} | 0 ....HtmlTag.GetBeginPos.1.py => wx.html.HtmlTag.GetBeginPos.1.py} | 0 ...ml.HtmlTag.GetEndPos1.1.py => wx.html.HtmlTag.GetEndPos1.1.py} | 0 ...ml.HtmlTag.GetEndPos2.1.py => wx.html.HtmlTag.GetEndPos2.1.py} | 0 .../{html.HtmlTag.GetParam.1.py => wx.html.HtmlTag.GetParam.1.py} | 0 ...html.HtmlTag.HasEnding.1.py => wx.html.HtmlTag.HasEnding.1.py} | 0 ...ndler.HandleTag.1.py => wx.html.HtmlTagHandler.HandleTag.1.py} | 0 ...ler.ParseInner.1.py => wx.html.HtmlTagHandler.ParseInner.1.py} | 0 ....GetContainer.1.py => wx.html.HtmlWinParser.GetContainer.1.py} | 0 ...ml.HtmlWindow.SetPage.1.py => wx.html.HtmlWindow.SetPage.1.py} | 0 ...hTextEvent.Clone.1.py => wx.richtext.RichTextEvent.Clone.1.py} | 0 ...py => wx.richtext.RichTextHTMLHandler.SetFontSizeMapping.1.py} | 0 ...ymbolPickerDialog.1.py => wx.richtext.SymbolPickerDialog.1.py} | 0 ...ionPoint.1.py => wx.stc.StyledTextCtrl.GetInsertionPoint.1.py} | 0 .../converted/{xml.XmlDocument.1.py => wx.xml.XmlDocument.1.py} | 0 .../converted/{xml.XmlDocument.2.py => wx.xml.XmlDocument.2.py} | 0 .../converted/{xml.XmlDocument.3.py => wx.xml.XmlDocument.3.py} | 0 ...ode.GetNodeContent.1.py => wx.xml.XmlNode.GetNodeContent.1.py} | 0 ...ode.GetNodeContent.2.py => wx.xml.XmlNode.GetNodeContent.2.py} | 0 .../{xrc.XmlResource.Load.1.py => wx.xrc.XmlResource.Load.1.py} | 0 ...esource.LoadDialog.1.py => wx.xrc.XmlResource.LoadDialog.1.py} | 0 253 files changed, 0 insertions(+), 0 deletions(-) rename docs/sphinx/rest_substitutions/snippets/python/converted/{AcceleratorTable.1.py => wx.AcceleratorTable.1.py} (100%) rename docs/sphinx/rest_substitutions/snippets/python/converted/{AffineMatrix2D.Concat.1.py => wx.AffineMatrix2D.Concat.1.py} (100%) rename docs/sphinx/rest_substitutions/snippets/python/converted/{AffineMatrix2D.Invert.1.py => wx.AffineMatrix2D.Invert.1.py} (100%) rename docs/sphinx/rest_substitutions/snippets/python/converted/{AffineMatrix2D.Rotate.1.py => wx.AffineMatrix2D.Rotate.1.py} (100%) rename docs/sphinx/rest_substitutions/snippets/python/converted/{AffineMatrix2D.Scale.1.py => wx.AffineMatrix2D.Scale.1.py} (100%) rename docs/sphinx/rest_substitutions/snippets/python/converted/{AffineMatrix2D.TransformDistance.1.py => wx.AffineMatrix2D.TransformDistance.1.py} (100%) rename docs/sphinx/rest_substitutions/snippets/python/converted/{AffineMatrix2D.TransformDistance.2.py => wx.AffineMatrix2D.TransformDistance.2.py} (100%) rename docs/sphinx/rest_substitutions/snippets/python/converted/{AffineMatrix2D.TransformPoint.1.py => wx.AffineMatrix2D.TransformPoint.1.py} (100%) rename docs/sphinx/rest_substitutions/snippets/python/converted/{AffineMatrix2D.TransformPoint.2.py => wx.AffineMatrix2D.TransformPoint.2.py} (100%) rename docs/sphinx/rest_substitutions/snippets/python/converted/{AffineMatrix2D.Translate.1.py => wx.AffineMatrix2D.Translate.1.py} (100%) rename docs/sphinx/rest_substitutions/snippets/python/converted/{AffineMatrix2DBase.Concat.1.py => wx.AffineMatrix2DBase.Concat.1.py} (100%) rename docs/sphinx/rest_substitutions/snippets/python/converted/{AffineMatrix2DBase.Invert.1.py => wx.AffineMatrix2DBase.Invert.1.py} (100%) rename docs/sphinx/rest_substitutions/snippets/python/converted/{App.SetTopWindow.1.py => wx.App.SetTopWindow.1.py} (100%) rename docs/sphinx/rest_substitutions/snippets/python/converted/{AppConsole.SetCLocale.1.py => wx.AppConsole.SetCLocale.1.py} (100%) rename docs/sphinx/rest_substitutions/snippets/python/converted/{ArtProvider.1.py => wx.ArtProvider.1.py} (100%) rename docs/sphinx/rest_substitutions/snippets/python/converted/{ArtProvider.2.py => wx.ArtProvider.2.py} (100%) rename docs/sphinx/rest_substitutions/snippets/python/converted/{Bitmap.NewFromPNGData.2.py => wx.Bitmap.NewFromPNGData.2.py} (100%) rename docs/sphinx/rest_substitutions/snippets/python/converted/{Bitmap.__init__.1.py => wx.Bitmap.__init__.1.py} (100%) rename docs/sphinx/rest_substitutions/snippets/python/converted/{BoxSizer.AddSpacer.1.py => wx.BoxSizer.AddSpacer.1.py} (100%) rename docs/sphinx/rest_substitutions/snippets/python/converted/{BusyCursor.1.py => wx.BusyCursor.1.py} (100%) rename docs/sphinx/rest_substitutions/snippets/python/converted/{BusyInfo.1.py => wx.BusyInfo.1.py} (100%) rename docs/sphinx/rest_substitutions/snippets/python/converted/{BusyInfo.2.py => wx.BusyInfo.2.py} (100%) rename docs/sphinx/rest_substitutions/snippets/python/converted/{Clipboard.1.py => wx.Clipboard.1.py} (100%) rename docs/sphinx/rest_substitutions/snippets/python/converted/{CloseEvent.1.py => wx.CloseEvent.1.py} (100%) rename docs/sphinx/rest_substitutions/snippets/python/converted/{CollapsiblePane.1.py => wx.CollapsiblePane.1.py} (100%) rename docs/sphinx/rest_substitutions/snippets/python/converted/{ComboCtrl.1.py => wx.ComboCtrl.1.py} (100%) rename docs/sphinx/rest_substitutions/snippets/python/converted/{ComboCtrl.2.py => wx.ComboCtrl.2.py} (100%) rename docs/sphinx/rest_substitutions/snippets/python/converted/{ComboCtrl.SetTextCtrlStyle.1.py => wx.ComboCtrl.SetTextCtrlStyle.1.py} (100%) rename docs/sphinx/rest_substitutions/snippets/python/converted/{ConfigBase.1.py => wx.ConfigBase.1.py} (100%) rename docs/sphinx/rest_substitutions/snippets/python/converted/{ConfigBase.2.py => wx.ConfigBase.2.py} (100%) rename docs/sphinx/rest_substitutions/snippets/python/converted/{ConfigBase.3.py => wx.ConfigBase.3.py} (100%) rename docs/sphinx/rest_substitutions/snippets/python/converted/{ConfigBase.4.py => wx.ConfigBase.4.py} (100%) rename docs/sphinx/rest_substitutions/snippets/python/converted/{ConfigBase.5.py => wx.ConfigBase.5.py} (100%) rename docs/sphinx/rest_substitutions/snippets/python/converted/{ConfigPathChanger.1.py => wx.ConfigPathChanger.1.py} (100%) rename docs/sphinx/rest_substitutions/snippets/python/converted/{ConfigPathChanger.__init__.1.py => wx.ConfigPathChanger.__init__.1.py} (100%) rename docs/sphinx/rest_substitutions/snippets/python/converted/{ConfigPathChanger.__init__.2.py => wx.ConfigPathChanger.__init__.2.py} (100%) rename docs/sphinx/rest_substitutions/snippets/python/converted/{ContextHelp.1.py => wx.ContextHelp.1.py} (100%) rename docs/sphinx/rest_substitutions/snippets/python/converted/{Control.GetSizeFromTextSize.1.py => wx.Control.GetSizeFromTextSize.1.py} (100%) rename docs/sphinx/rest_substitutions/snippets/python/converted/{Control.GetSizeFromTextSize.2.py => wx.Control.GetSizeFromTextSize.2.py} (100%) rename docs/sphinx/rest_substitutions/snippets/python/converted/{Control.SetLabelMarkup.1.py => wx.Control.SetLabelMarkup.1.py} (100%) rename docs/sphinx/rest_substitutions/snippets/python/converted/{Cursor.1.py => wx.Cursor.1.py} (100%) rename docs/sphinx/rest_substitutions/snippets/python/converted/{Cursor.__init__.1.py => wx.Cursor.__init__.1.py} (100%) rename docs/sphinx/rest_substitutions/snippets/python/converted/{DCClipper.1.py => wx.DCClipper.1.py} (100%) rename docs/sphinx/rest_substitutions/snippets/python/converted/{DataObjectComposite.1.py => wx.DataObjectComposite.1.py} (100%) rename docs/sphinx/rest_substitutions/snippets/python/converted/{DateTime.ConvertYearToBC.1.py => wx.DateTime.ConvertYearToBC.1.py} (100%) rename docs/sphinx/rest_substitutions/snippets/python/converted/{DateTime.Now.1.py => wx.DateTime.Now.1.py} (100%) rename docs/sphinx/rest_substitutions/snippets/python/converted/{DateTime.ParseFormat.1.py => wx.DateTime.ParseFormat.1.py} (100%) rename docs/sphinx/rest_substitutions/snippets/python/converted/{DateTime.ParseFormat.2.py => wx.DateTime.ParseFormat.2.py} (100%) rename docs/sphinx/rest_substitutions/snippets/python/converted/{Dialog.1.py => wx.Dialog.1.py} (100%) rename docs/sphinx/rest_substitutions/snippets/python/converted/{Dialog.2.py => wx.Dialog.2.py} (100%) rename docs/sphinx/rest_substitutions/snippets/python/converted/{DirDialog.1.py => wx.DirDialog.1.py} (100%) rename docs/sphinx/rest_substitutions/snippets/python/converted/{Event.Clone.1.py => wx.Event.Clone.1.py} (100%) rename docs/sphinx/rest_substitutions/snippets/python/converted/{EventBlocker.1.py => wx.EventBlocker.1.py} (100%) rename docs/sphinx/rest_substitutions/snippets/python/converted/{EventFilter.1.py => wx.EventFilter.1.py} (100%) rename docs/sphinx/rest_substitutions/snippets/python/converted/{EventLoopActivator.1.py => wx.EventLoopActivator.1.py} (100%) rename docs/sphinx/rest_substitutions/snippets/python/converted/{EventLoopBase.Dispatch.1.py => wx.EventLoopBase.Dispatch.1.py} (100%) rename docs/sphinx/rest_substitutions/snippets/python/converted/{EvtHandler.QueueEvent.1.py => wx.EvtHandler.QueueEvent.1.py} (100%) rename docs/sphinx/rest_substitutions/snippets/python/converted/{EvtHandler.QueueEvent.2.py => wx.EvtHandler.QueueEvent.2.py} (100%) rename docs/sphinx/rest_substitutions/snippets/python/converted/{EvtHandler.SetNextHandler.1.py => wx.EvtHandler.SetNextHandler.1.py} (100%) rename docs/sphinx/rest_substitutions/snippets/python/converted/{FSFile.__init__.1.py => wx.FSFile.__init__.1.py} (100%) rename docs/sphinx/rest_substitutions/snippets/python/converted/{FileDialog.1.py => wx.FileDialog.1.py} (100%) rename docs/sphinx/rest_substitutions/snippets/python/converted/{FileDialog.2.py => wx.FileDialog.2.py} (100%) rename docs/sphinx/rest_substitutions/snippets/python/converted/{FileDialog.3.py => wx.FileDialog.3.py} (100%) rename docs/sphinx/rest_substitutions/snippets/python/converted/{FileSystem.AddHandler.1.py => wx.FileSystem.AddHandler.1.py} (100%) rename docs/sphinx/rest_substitutions/snippets/python/converted/{FileSystem.ChangePathTo.1.py => wx.FileSystem.ChangePathTo.1.py} (100%) rename docs/sphinx/rest_substitutions/snippets/python/converted/{FileSystem.ChangePathTo.2.py => wx.FileSystem.ChangePathTo.2.py} (100%) rename docs/sphinx/rest_substitutions/snippets/python/converted/{FileSystemHandler.CanOpen.1.py => wx.FileSystemHandler.CanOpen.1.py} (100%) rename docs/sphinx/rest_substitutions/snippets/python/converted/{FileSystemHandler.GetAnchor.1.py => wx.FileSystemHandler.GetAnchor.1.py} (100%) rename docs/sphinx/rest_substitutions/snippets/python/converted/{FileSystemHandler.GetLeftLocation.1.py => wx.FileSystemHandler.GetLeftLocation.1.py} (100%) rename docs/sphinx/rest_substitutions/snippets/python/converted/{FileSystemHandler.GetMimeTypeFromExt.1.py => wx.FileSystemHandler.GetMimeTypeFromExt.1.py} (100%) rename docs/sphinx/rest_substitutions/snippets/python/converted/{FileSystemHandler.GetProtocol.1.py => wx.FileSystemHandler.GetProtocol.1.py} (100%) rename docs/sphinx/rest_substitutions/snippets/python/converted/{FileSystemHandler.GetRightLocation.1.py => wx.FileSystemHandler.GetRightLocation.1.py} (100%) rename docs/sphinx/rest_substitutions/snippets/python/converted/{FileType.1.py => wx.FileType.1.py} (100%) rename docs/sphinx/rest_substitutions/snippets/python/converted/{FileType.2.py => wx.FileType.2.py} (100%) rename docs/sphinx/rest_substitutions/snippets/python/converted/{Font.__init__.1.py => wx.Font.__init__.1.py} (100%) rename docs/sphinx/rest_substitutions/snippets/python/converted/{Font.__init__.2.py => wx.Font.__init__.2.py} (100%) rename docs/sphinx/rest_substitutions/snippets/python/converted/{FontInfo.1.py => wx.FontInfo.1.py} (100%) rename docs/sphinx/rest_substitutions/snippets/python/converted/{FontMapper.1.py => wx.FontMapper.1.py} (100%) rename docs/sphinx/rest_substitutions/snippets/python/converted/{Frame.1.py => wx.Frame.1.py} (100%) rename docs/sphinx/rest_substitutions/snippets/python/converted/{GraphicsContext.1.py => wx.GraphicsContext.1.py} (100%) rename docs/sphinx/rest_substitutions/snippets/python/converted/{GraphicsRenderer.1.py => wx.GraphicsRenderer.1.py} (100%) rename docs/sphinx/rest_substitutions/snippets/python/converted/{HeaderColumnSimple.1.py => wx.HeaderColumnSimple.1.py} (100%) rename docs/sphinx/rest_substitutions/snippets/python/converted/{HeaderCtrl.AddColumnsItems.1.py => wx.HeaderCtrl.AddColumnsItems.1.py} (100%) rename docs/sphinx/rest_substitutions/snippets/python/converted/{HeaderCtrl.Create.1.py => wx.HeaderCtrl.Create.1.py} (100%) rename docs/sphinx/rest_substitutions/snippets/python/converted/{HeaderCtrl.UpdateColumnWidthToFit.1.py => wx.HeaderCtrl.UpdateColumnWidthToFit.1.py} (100%) rename docs/sphinx/rest_substitutions/snippets/python/converted/{HeaderCtrlSimple.HideColumn.1.py => wx.HeaderCtrlSimple.HideColumn.1.py} (100%) rename docs/sphinx/rest_substitutions/snippets/python/converted/{HelpControllerBase.SetViewer.1.py => wx.HelpControllerBase.SetViewer.1.py} (100%) rename docs/sphinx/rest_substitutions/snippets/python/converted/{IconBundle.GetIcon.1.py => wx.IconBundle.GetIcon.1.py} (100%) rename docs/sphinx/rest_substitutions/snippets/python/converted/{Image.AddHandler.1.py => wx.Image.AddHandler.1.py} (100%) rename docs/sphinx/rest_substitutions/snippets/python/converted/{Image.ComputeHistogram.1.py => wx.Image.ComputeHistogram.1.py} (100%) rename docs/sphinx/rest_substitutions/snippets/python/converted/{Image.GetImageExtWildcard.1.py => wx.Image.GetImageExtWildcard.1.py} (100%) rename docs/sphinx/rest_substitutions/snippets/python/converted/{Image.LoadFile.1.py => wx.Image.LoadFile.1.py} (100%) rename docs/sphinx/rest_substitutions/snippets/python/converted/{Image.LoadFile.2.py => wx.Image.LoadFile.2.py} (100%) rename docs/sphinx/rest_substitutions/snippets/python/converted/{Image.SaveFile.1.py => wx.Image.SaveFile.1.py} (100%) rename docs/sphinx/rest_substitutions/snippets/python/converted/{Image.SaveFile.2.py => wx.Image.SaveFile.2.py} (100%) rename docs/sphinx/rest_substitutions/snippets/python/converted/{Image.Scale.1.py => wx.Image.Scale.1.py} (100%) rename docs/sphinx/rest_substitutions/snippets/python/converted/{Image.__init__.1.py => wx.Image.__init__.1.py} (100%) rename docs/sphinx/rest_substitutions/snippets/python/converted/{InfoBar.1.py => wx.InfoBar.1.py} (100%) rename docs/sphinx/rest_substitutions/snippets/python/converted/{KeyEvent.GetKeyCode.1.py => wx.KeyEvent.GetKeyCode.1.py} (100%) rename docs/sphinx/rest_substitutions/snippets/python/converted/{KeyboardState.GetModifiers.1.py => wx.KeyboardState.GetModifiers.1.py} (100%) rename docs/sphinx/rest_substitutions/snippets/python/converted/{KeyboardState.GetModifiers.2.py => wx.KeyboardState.GetModifiers.2.py} (100%) rename docs/sphinx/rest_substitutions/snippets/python/converted/{ListCtrl.GetNextItem.1.py => wx.ListCtrl.GetNextItem.1.py} (100%) rename docs/sphinx/rest_substitutions/snippets/python/converted/{ListCtrl.SetColumnsOrder.1.py => wx.ListCtrl.SetColumnsOrder.1.py} (100%) rename docs/sphinx/rest_substitutions/snippets/python/converted/{ListCtrl.SetItemState.1.py => wx.ListCtrl.SetItemState.1.py} (100%) rename docs/sphinx/rest_substitutions/snippets/python/converted/{ListCtrl.SetItemState.2.py => wx.ListCtrl.SetItemState.2.py} (100%) rename docs/sphinx/rest_substitutions/snippets/python/converted/{ListCtrl.SortItems.1.py => wx.ListCtrl.SortItems.1.py} (100%) rename docs/sphinx/rest_substitutions/snippets/python/converted/{Locale.1.py => wx.Locale.1.py} (100%) rename docs/sphinx/rest_substitutions/snippets/python/converted/{Locale.2.py => wx.Locale.2.py} (100%) rename docs/sphinx/rest_substitutions/snippets/python/converted/{Log.LogRecord.1.py => wx.Log.LogRecord.1.py} (100%) rename docs/sphinx/rest_substitutions/snippets/python/converted/{Log.SetComponentLevel.1.py => wx.Log.SetComponentLevel.1.py} (100%) rename docs/sphinx/rest_substitutions/snippets/python/converted/{LogChain.1.py => wx.LogChain.1.py} (100%) rename docs/sphinx/rest_substitutions/snippets/python/converted/{LogFormatter.1.py => wx.LogFormatter.1.py} (100%) rename docs/sphinx/rest_substitutions/snippets/python/converted/{LogFormatter.2.py => wx.LogFormatter.2.py} (100%) rename docs/sphinx/rest_substitutions/snippets/python/converted/{LogNull.1.py => wx.LogNull.1.py} (100%) rename docs/sphinx/rest_substitutions/snippets/python/converted/{LogNull.2.py => wx.LogNull.2.py} (100%) rename docs/sphinx/rest_substitutions/snippets/python/converted/{MDIParentFrame.OnCreateClient.1.py => wx.MDIParentFrame.OnCreateClient.1.py} (100%) rename docs/sphinx/rest_substitutions/snippets/python/converted/{MemoryDC.1.py => wx.MemoryDC.1.py} (100%) rename docs/sphinx/rest_substitutions/snippets/python/converted/{MemoryDC.2.py => wx.MemoryDC.2.py} (100%) rename docs/sphinx/rest_substitutions/snippets/python/converted/{MemoryFSHandler.1.py => wx.MemoryFSHandler.1.py} (100%) rename docs/sphinx/rest_substitutions/snippets/python/converted/{Menu.Append.1.py => wx.Menu.Append.1.py} (100%) rename docs/sphinx/rest_substitutions/snippets/python/converted/{Menu.Append.2.py => wx.Menu.Append.2.py} (100%) rename docs/sphinx/rest_substitutions/snippets/python/converted/{Menu.Append.3.py => wx.Menu.Append.3.py} (100%) rename docs/sphinx/rest_substitutions/snippets/python/converted/{Menu.Append.4.py => wx.Menu.Append.4.py} (100%) rename docs/sphinx/rest_substitutions/snippets/python/converted/{MenuItem.GetLabelText.1.py => wx.MenuItem.GetLabelText.1.py} (100%) rename docs/sphinx/rest_substitutions/snippets/python/converted/{MenuItem.SetItemLabel.1.py => wx.MenuItem.SetItemLabel.1.py} (100%) rename docs/sphinx/rest_substitutions/snippets/python/converted/{MenuItem.__init__.1.py => wx.MenuItem.__init__.1.py} (100%) rename docs/sphinx/rest_substitutions/snippets/python/converted/{MessageDialog.SetYesNoLabels.1.py => wx.MessageDialog.SetYesNoLabels.1.py} (100%) rename docs/sphinx/rest_substitutions/snippets/python/converted/{MessageDialog.SetYesNoLabels.2.py => wx.MessageDialog.SetYesNoLabels.2.py} (100%) rename docs/sphinx/rest_substitutions/snippets/python/converted/{ModalDialogHook.1.py => wx.ModalDialogHook.1.py} (100%) rename docs/sphinx/rest_substitutions/snippets/python/converted/{NonOwnedWindow.SetShape.1.py => wx.NonOwnedWindow.SetShape.1.py} (100%) rename docs/sphinx/rest_substitutions/snippets/python/converted/{Notebook.1.py => wx.Notebook.1.py} (100%) rename docs/sphinx/rest_substitutions/snippets/python/converted/{Notebook.2.py => wx.Notebook.2.py} (100%) rename docs/sphinx/rest_substitutions/snippets/python/converted/{PaintEvent.1.py => wx.PaintEvent.1.py} (100%) rename docs/sphinx/rest_substitutions/snippets/python/converted/{PaintEvent.2.py => wx.PaintEvent.2.py} (100%) rename docs/sphinx/rest_substitutions/snippets/python/converted/{PickerBase.GetPickerCtrl.1.py => wx.PickerBase.GetPickerCtrl.1.py} (100%) rename docs/sphinx/rest_substitutions/snippets/python/converted/{PlatformInfo.1.py => wx.PlatformInfo.1.py} (100%) rename docs/sphinx/rest_substitutions/snippets/python/converted/{Point.SetDefaults.1.py => wx.Point.SetDefaults.1.py} (100%) rename docs/sphinx/rest_substitutions/snippets/python/converted/{Point.__init__.1.py => wx.Point.__init__.1.py} (100%) rename docs/sphinx/rest_substitutions/snippets/python/converted/{RearrangeDialog.1.py => wx.RearrangeDialog.1.py} (100%) rename docs/sphinx/rest_substitutions/snippets/python/converted/{RearrangeDialog.AddExtraControls.1.py => wx.RearrangeDialog.AddExtraControls.1.py} (100%) rename docs/sphinx/rest_substitutions/snippets/python/converted/{RearrangeList.1.py => wx.RearrangeList.1.py} (100%) rename docs/sphinx/rest_substitutions/snippets/python/converted/{RichMessageDialog.1.py => wx.RichMessageDialog.1.py} (100%) rename docs/sphinx/rest_substitutions/snippets/python/converted/{ScrollBar.SetScrollbar.1.py => wx.ScrollBar.SetScrollbar.1.py} (100%) rename docs/sphinx/rest_substitutions/snippets/python/converted/{Scrolled.DoPrepareDC.1.py => wx.Scrolled.DoPrepareDC.1.py} (100%) rename docs/sphinx/rest_substitutions/snippets/python/converted/{Scrolled.SetScrollbars.1.py => wx.Scrolled.SetScrollbars.1.py} (100%) rename docs/sphinx/rest_substitutions/snippets/python/converted/{SearchCtrl.1.py => wx.SearchCtrl.1.py} (100%) rename docs/sphinx/rest_substitutions/snippets/python/converted/{SingleInstanceChecker.1.py => wx.SingleInstanceChecker.1.py} (100%) rename docs/sphinx/rest_substitutions/snippets/python/converted/{Size.SetDefaults.1.py => wx.Size.SetDefaults.1.py} (100%) rename docs/sphinx/rest_substitutions/snippets/python/converted/{Sizer.AddSpacer.1.py => wx.Sizer.AddSpacer.1.py} (100%) rename docs/sphinx/rest_substitutions/snippets/python/converted/{Sizer.AddStretchSpacer.1.py => wx.Sizer.AddStretchSpacer.1.py} (100%) rename docs/sphinx/rest_substitutions/snippets/python/converted/{SizerFlags.1.py => wx.SizerFlags.1.py} (100%) rename docs/sphinx/rest_substitutions/snippets/python/converted/{SizerFlags.2.py => wx.SizerFlags.2.py} (100%) rename docs/sphinx/rest_substitutions/snippets/python/converted/{SizerFlags.3.py => wx.SizerFlags.3.py} (100%) rename docs/sphinx/rest_substitutions/snippets/python/converted/{StandardPaths.MSWGetShellDir.1.py => wx.StandardPaths.MSWGetShellDir.1.py} (100%) rename docs/sphinx/rest_substitutions/snippets/python/converted/{StandardPaths.UseAppInfo.1.py => wx.StandardPaths.UseAppInfo.1.py} (100%) rename docs/sphinx/rest_substitutions/snippets/python/converted/{StaticBox.1.py => wx.StaticBox.1.py} (100%) rename docs/sphinx/rest_substitutions/snippets/python/converted/{StaticBox.2.py => wx.StaticBox.2.py} (100%) rename docs/sphinx/rest_substitutions/snippets/python/converted/{StaticBoxSizer.1.py => wx.StaticBoxSizer.1.py} (100%) rename docs/sphinx/rest_substitutions/snippets/python/converted/{StopWatch.1.py => wx.StopWatch.1.py} (100%) rename docs/sphinx/rest_substitutions/snippets/python/converted/{TextCompleterSimple.1.py => wx.TextCompleterSimple.1.py} (100%) rename docs/sphinx/rest_substitutions/snippets/python/converted/{TextCtrl.1.py => wx.TextCtrl.1.py} (100%) rename docs/sphinx/rest_substitutions/snippets/python/converted/{TextCtrl.2.py => wx.TextCtrl.2.py} (100%) rename docs/sphinx/rest_substitutions/snippets/python/converted/{TextCtrl.3.py => wx.TextCtrl.3.py} (100%) rename docs/sphinx/rest_substitutions/snippets/python/converted/{TextCtrl.4.py => wx.TextCtrl.4.py} (100%) rename docs/sphinx/rest_substitutions/snippets/python/converted/{TextCtrl.5.py => wx.TextCtrl.5.py} (100%) rename docs/sphinx/rest_substitutions/snippets/python/converted/{TextEntry.GetInsertionPoint.1.py => wx.TextEntry.GetInsertionPoint.1.py} (100%) rename docs/sphinx/rest_substitutions/snippets/python/converted/{TextUrlEvent.Clone.1.py => wx.TextUrlEvent.Clone.1.py} (100%) rename docs/sphinx/rest_substitutions/snippets/python/converted/{TimerEvent.1.py => wx.TimerEvent.1.py} (100%) rename docs/sphinx/rest_substitutions/snippets/python/converted/{ToolBar.1.py => wx.ToolBar.1.py} (100%) rename docs/sphinx/rest_substitutions/snippets/python/converted/{ToolBar.2.py => wx.ToolBar.2.py} (100%) rename docs/sphinx/rest_substitutions/snippets/python/converted/{ToolBar.3.py => wx.ToolBar.3.py} (100%) rename docs/sphinx/rest_substitutions/snippets/python/converted/{Trackable.1.py => wx.Trackable.1.py} (100%) rename docs/sphinx/rest_substitutions/snippets/python/converted/{URLDataObject.1.py => wx.URLDataObject.1.py} (100%) rename docs/sphinx/rest_substitutions/snippets/python/converted/{VListBox.GetFirstSelected.1.py => wx.VListBox.GetFirstSelected.1.py} (100%) rename docs/sphinx/rest_substitutions/snippets/python/converted/{Validator.SetWindow.1.py => wx.Validator.SetWindow.1.py} (100%) rename docs/sphinx/rest_substitutions/snippets/python/converted/{Window.ConvertDialogToPixels.1.py => wx.Window.ConvertDialogToPixels.1.py} (100%) rename docs/sphinx/rest_substitutions/snippets/python/converted/{Window.DoUpdateWindowUI.1.py => wx.Window.DoUpdateWindowUI.1.py} (100%) rename docs/sphinx/rest_substitutions/snippets/python/converted/{Window.Fit.1.py => wx.Window.Fit.1.py} (100%) rename docs/sphinx/rest_substitutions/snippets/python/converted/{Window.HandleWindowEvent.1.py => wx.Window.HandleWindowEvent.1.py} (100%) rename docs/sphinx/rest_substitutions/snippets/python/converted/{Window.Move.1.py => wx.Window.Move.1.py} (100%) rename docs/sphinx/rest_substitutions/snippets/python/converted/{Window.Move.2.py => wx.Window.Move.2.py} (100%) rename docs/sphinx/rest_substitutions/snippets/python/converted/{Window.Move.3.py => wx.Window.Move.3.py} (100%) rename docs/sphinx/rest_substitutions/snippets/python/converted/{Window.ProcessEvent.1.py => wx.Window.ProcessEvent.1.py} (100%) rename docs/sphinx/rest_substitutions/snippets/python/converted/{Window.ProcessWindowEvent.1.py => wx.Window.ProcessWindowEvent.1.py} (100%) rename docs/sphinx/rest_substitutions/snippets/python/converted/{Window.PushEventHandler.1.py => wx.Window.PushEventHandler.1.py} (100%) rename docs/sphinx/rest_substitutions/snippets/python/converted/{Window.SetBackgroundStyle.1.py => wx.Window.SetBackgroundStyle.1.py} (100%) rename docs/sphinx/rest_substitutions/snippets/python/converted/{Window.SetMaxClientSize.1.py => wx.Window.SetMaxClientSize.1.py} (100%) rename docs/sphinx/rest_substitutions/snippets/python/converted/{Window.SetMinClientSize.1.py => wx.Window.SetMinClientSize.1.py} (100%) rename docs/sphinx/rest_substitutions/snippets/python/converted/{Window.SetScrollbar.1.py => wx.Window.SetScrollbar.1.py} (100%) rename docs/sphinx/rest_substitutions/snippets/python/converted/{Window.UpdateWindowUI.1.py => wx.Window.UpdateWindowUI.1.py} (100%) rename docs/sphinx/rest_substitutions/snippets/python/converted/{WindowModalDialogEvent.Clone.1.py => wx.WindowModalDialogEvent.Clone.1.py} (100%) rename docs/sphinx/rest_substitutions/snippets/python/converted/{adv.AboutDialogInfo.1.py => wx.adv.AboutDialogInfo.1.py} (100%) rename docs/sphinx/rest_substitutions/snippets/python/converted/{adv.BannerWindow.1.py => wx.adv.BannerWindow.1.py} (100%) rename docs/sphinx/rest_substitutions/snippets/python/converted/{adv.RichToolTip.1.py => wx.adv.RichToolTip.1.py} (100%) rename docs/sphinx/rest_substitutions/snippets/python/converted/{adv.Sound.Play.1.py => wx.adv.Sound.Play.1.py} (100%) rename docs/sphinx/rest_substitutions/snippets/python/converted/{adv.Sound.PlaySound.1.py => wx.adv.Sound.PlaySound.1.py} (100%) rename docs/sphinx/rest_substitutions/snippets/python/converted/{adv.SplashScreen.1.py => wx.adv.SplashScreen.1.py} (100%) rename docs/sphinx/rest_substitutions/snippets/python/converted/{adv.TreeListCtrl.GetNextItem.1.py => wx.adv.TreeListCtrl.GetNextItem.1.py} (100%) rename docs/sphinx/rest_substitutions/snippets/python/converted/{adv.WizardPageSimple.Chain.1.py => wx.adv.WizardPageSimple.Chain.1.py} (100%) rename docs/sphinx/rest_substitutions/snippets/python/converted/{adv.WizardPageSimple.Chain.2.py => wx.adv.WizardPageSimple.Chain.2.py} (100%) rename docs/sphinx/rest_substitutions/snippets/python/converted/{adv.WizardPageSimple.Chain.3.py => wx.adv.WizardPageSimple.Chain.3.py} (100%) rename docs/sphinx/rest_substitutions/snippets/python/converted/{adv.functions.AboutBox.1.py => wx.adv.functions.AboutBox.1.py} (100%) rename docs/sphinx/rest_substitutions/snippets/python/converted/{dataview.DataViewCustomRenderer.CreateEditorCtrl.1.py => wx.dataview.DataViewCustomRenderer.CreateEditorCtrl.1.py} (100%) rename docs/sphinx/rest_substitutions/snippets/python/converted/{dataview.DataViewCustomRenderer.GetValueFromEditorCtrl.1.py => wx.dataview.DataViewCustomRenderer.GetValueFromEditorCtrl.1.py} (100%) rename docs/sphinx/rest_substitutions/snippets/python/converted/{dataview.DataViewListCtrl.1.py => wx.dataview.DataViewListCtrl.1.py} (100%) rename docs/sphinx/rest_substitutions/snippets/python/converted/{dataview.DataViewModel.1.py => wx.dataview.DataViewModel.1.py} (100%) rename docs/sphinx/rest_substitutions/snippets/python/converted/{dataview.DataViewModel.2.py => wx.dataview.DataViewModel.2.py} (100%) rename docs/sphinx/rest_substitutions/snippets/python/converted/{dataview.DataViewRenderer.DisableEllipsize.1.py => wx.dataview.DataViewRenderer.DisableEllipsize.1.py} (100%) rename docs/sphinx/rest_substitutions/snippets/python/converted/{dataview.TreeListCtrl.GetNextItem.1.py => wx.dataview.TreeListCtrl.GetNextItem.1.py} (100%) rename docs/sphinx/rest_substitutions/snippets/python/converted/{functions.DirSelector.1.py => wx.functions.DirSelector.1.py} (100%) rename docs/sphinx/rest_substitutions/snippets/python/converted/{functions.FileSelector.1.py => wx.functions.FileSelector.1.py} (100%) rename docs/sphinx/rest_substitutions/snippets/python/converted/{functions.FileSelector.2.py => wx.functions.FileSelector.2.py} (100%) rename docs/sphinx/rest_substitutions/snippets/python/converted/{functions.Kill.1.py => wx.functions.Kill.1.py} (100%) rename docs/sphinx/rest_substitutions/snippets/python/converted/{functions.Kill.2.py => wx.functions.Kill.2.py} (100%) rename docs/sphinx/rest_substitutions/snippets/python/converted/{functions.MessageBox.1.py => wx.functions.MessageBox.1.py} (100%) rename docs/sphinx/rest_substitutions/snippets/python/converted/{grid.Grid.GetCellSize.1.py => wx.grid.Grid.GetCellSize.1.py} (100%) rename docs/sphinx/rest_substitutions/snippets/python/converted/{grid.Grid.GetCellSize.2.py => wx.grid.Grid.GetCellSize.2.py} (100%) rename docs/sphinx/rest_substitutions/snippets/python/converted/{grid.Grid.GetRowGridLinePen.1.py => wx.grid.Grid.GetRowGridLinePen.1.py} (100%) rename docs/sphinx/rest_substitutions/snippets/python/converted/{grid.GridCellAttr.GetNonDefaultAlignment.1.py => wx.grid.GridCellAttr.GetNonDefaultAlignment.1.py} (100%) rename docs/sphinx/rest_substitutions/snippets/python/converted/{grid.GridUpdateLocker.1.py => wx.grid.GridUpdateLocker.1.py} (100%) rename docs/sphinx/rest_substitutions/snippets/python/converted/{html.HtmlCell.AdjustPagebreak.1.py => wx.html.HtmlCell.AdjustPagebreak.1.py} (100%) rename docs/sphinx/rest_substitutions/snippets/python/converted/{html.HtmlCell.Draw.1.py => wx.html.HtmlCell.Draw.1.py} (100%) rename docs/sphinx/rest_substitutions/snippets/python/converted/{html.HtmlCell.DrawInvisible.1.py => wx.html.HtmlCell.DrawInvisible.1.py} (100%) rename docs/sphinx/rest_substitutions/snippets/python/converted/{html.HtmlContainerCell.SetWidthFloat.1.py => wx.html.HtmlContainerCell.SetWidthFloat.1.py} (100%) rename docs/sphinx/rest_substitutions/snippets/python/converted/{html.HtmlContainerCell.SetWidthFloat.2.py => wx.html.HtmlContainerCell.SetWidthFloat.2.py} (100%) rename docs/sphinx/rest_substitutions/snippets/python/converted/{html.HtmlFilter.CanRead.1.py => wx.html.HtmlFilter.CanRead.1.py} (100%) rename docs/sphinx/rest_substitutions/snippets/python/converted/{html.HtmlFilter.ReadFile.1.py => wx.html.HtmlFilter.ReadFile.1.py} (100%) rename docs/sphinx/rest_substitutions/snippets/python/converted/{html.HtmlHelpController.AddBook.1.py => wx.html.HtmlHelpController.AddBook.1.py} (100%) rename docs/sphinx/rest_substitutions/snippets/python/converted/{html.HtmlHelpController.AddBook.2.py => wx.html.HtmlHelpController.AddBook.2.py} (100%) rename docs/sphinx/rest_substitutions/snippets/python/converted/{html.HtmlHelpWindow.1.py => wx.html.HtmlHelpWindow.1.py} (100%) rename docs/sphinx/rest_substitutions/snippets/python/converted/{html.HtmlModalHelp.1.py => wx.html.HtmlModalHelp.1.py} (100%) rename docs/sphinx/rest_substitutions/snippets/python/converted/{html.HtmlParser.GetFS.1.py => wx.html.HtmlParser.GetFS.1.py} (100%) rename docs/sphinx/rest_substitutions/snippets/python/converted/{html.HtmlParser.PushTagHandler.1.py => wx.html.HtmlParser.PushTagHandler.1.py} (100%) rename docs/sphinx/rest_substitutions/snippets/python/converted/{html.HtmlTag.GetBeginPos.1.py => wx.html.HtmlTag.GetBeginPos.1.py} (100%) rename docs/sphinx/rest_substitutions/snippets/python/converted/{html.HtmlTag.GetEndPos1.1.py => wx.html.HtmlTag.GetEndPos1.1.py} (100%) rename docs/sphinx/rest_substitutions/snippets/python/converted/{html.HtmlTag.GetEndPos2.1.py => wx.html.HtmlTag.GetEndPos2.1.py} (100%) rename docs/sphinx/rest_substitutions/snippets/python/converted/{html.HtmlTag.GetParam.1.py => wx.html.HtmlTag.GetParam.1.py} (100%) rename docs/sphinx/rest_substitutions/snippets/python/converted/{html.HtmlTag.HasEnding.1.py => wx.html.HtmlTag.HasEnding.1.py} (100%) rename docs/sphinx/rest_substitutions/snippets/python/converted/{html.HtmlTagHandler.HandleTag.1.py => wx.html.HtmlTagHandler.HandleTag.1.py} (100%) rename docs/sphinx/rest_substitutions/snippets/python/converted/{html.HtmlTagHandler.ParseInner.1.py => wx.html.HtmlTagHandler.ParseInner.1.py} (100%) rename docs/sphinx/rest_substitutions/snippets/python/converted/{html.HtmlWinParser.GetContainer.1.py => wx.html.HtmlWinParser.GetContainer.1.py} (100%) rename docs/sphinx/rest_substitutions/snippets/python/converted/{html.HtmlWindow.SetPage.1.py => wx.html.HtmlWindow.SetPage.1.py} (100%) rename docs/sphinx/rest_substitutions/snippets/python/converted/{richtext.RichTextEvent.Clone.1.py => wx.richtext.RichTextEvent.Clone.1.py} (100%) rename docs/sphinx/rest_substitutions/snippets/python/converted/{richtext.RichTextHTMLHandler.SetFontSizeMapping.1.py => wx.richtext.RichTextHTMLHandler.SetFontSizeMapping.1.py} (100%) rename docs/sphinx/rest_substitutions/snippets/python/converted/{richtext.SymbolPickerDialog.1.py => wx.richtext.SymbolPickerDialog.1.py} (100%) rename docs/sphinx/rest_substitutions/snippets/python/converted/{stc.StyledTextCtrl.GetInsertionPoint.1.py => wx.stc.StyledTextCtrl.GetInsertionPoint.1.py} (100%) rename docs/sphinx/rest_substitutions/snippets/python/converted/{xml.XmlDocument.1.py => wx.xml.XmlDocument.1.py} (100%) rename docs/sphinx/rest_substitutions/snippets/python/converted/{xml.XmlDocument.2.py => wx.xml.XmlDocument.2.py} (100%) rename docs/sphinx/rest_substitutions/snippets/python/converted/{xml.XmlDocument.3.py => wx.xml.XmlDocument.3.py} (100%) rename docs/sphinx/rest_substitutions/snippets/python/converted/{xml.XmlNode.GetNodeContent.1.py => wx.xml.XmlNode.GetNodeContent.1.py} (100%) rename docs/sphinx/rest_substitutions/snippets/python/converted/{xml.XmlNode.GetNodeContent.2.py => wx.xml.XmlNode.GetNodeContent.2.py} (100%) rename docs/sphinx/rest_substitutions/snippets/python/converted/{xrc.XmlResource.Load.1.py => wx.xrc.XmlResource.Load.1.py} (100%) rename docs/sphinx/rest_substitutions/snippets/python/converted/{xrc.XmlResource.LoadDialog.1.py => wx.xrc.XmlResource.LoadDialog.1.py} (100%) diff --git a/docs/sphinx/rest_substitutions/snippets/python/converted/AcceleratorTable.1.py b/docs/sphinx/rest_substitutions/snippets/python/converted/wx.AcceleratorTable.1.py similarity index 100% rename from docs/sphinx/rest_substitutions/snippets/python/converted/AcceleratorTable.1.py rename to docs/sphinx/rest_substitutions/snippets/python/converted/wx.AcceleratorTable.1.py diff --git a/docs/sphinx/rest_substitutions/snippets/python/converted/AffineMatrix2D.Concat.1.py b/docs/sphinx/rest_substitutions/snippets/python/converted/wx.AffineMatrix2D.Concat.1.py similarity index 100% rename from docs/sphinx/rest_substitutions/snippets/python/converted/AffineMatrix2D.Concat.1.py rename to docs/sphinx/rest_substitutions/snippets/python/converted/wx.AffineMatrix2D.Concat.1.py diff --git a/docs/sphinx/rest_substitutions/snippets/python/converted/AffineMatrix2D.Invert.1.py b/docs/sphinx/rest_substitutions/snippets/python/converted/wx.AffineMatrix2D.Invert.1.py similarity index 100% rename from docs/sphinx/rest_substitutions/snippets/python/converted/AffineMatrix2D.Invert.1.py rename to docs/sphinx/rest_substitutions/snippets/python/converted/wx.AffineMatrix2D.Invert.1.py diff --git a/docs/sphinx/rest_substitutions/snippets/python/converted/AffineMatrix2D.Rotate.1.py b/docs/sphinx/rest_substitutions/snippets/python/converted/wx.AffineMatrix2D.Rotate.1.py similarity index 100% rename from docs/sphinx/rest_substitutions/snippets/python/converted/AffineMatrix2D.Rotate.1.py rename to docs/sphinx/rest_substitutions/snippets/python/converted/wx.AffineMatrix2D.Rotate.1.py diff --git a/docs/sphinx/rest_substitutions/snippets/python/converted/AffineMatrix2D.Scale.1.py b/docs/sphinx/rest_substitutions/snippets/python/converted/wx.AffineMatrix2D.Scale.1.py similarity index 100% rename from docs/sphinx/rest_substitutions/snippets/python/converted/AffineMatrix2D.Scale.1.py rename to docs/sphinx/rest_substitutions/snippets/python/converted/wx.AffineMatrix2D.Scale.1.py diff --git a/docs/sphinx/rest_substitutions/snippets/python/converted/AffineMatrix2D.TransformDistance.1.py b/docs/sphinx/rest_substitutions/snippets/python/converted/wx.AffineMatrix2D.TransformDistance.1.py similarity index 100% rename from docs/sphinx/rest_substitutions/snippets/python/converted/AffineMatrix2D.TransformDistance.1.py rename to docs/sphinx/rest_substitutions/snippets/python/converted/wx.AffineMatrix2D.TransformDistance.1.py diff --git a/docs/sphinx/rest_substitutions/snippets/python/converted/AffineMatrix2D.TransformDistance.2.py b/docs/sphinx/rest_substitutions/snippets/python/converted/wx.AffineMatrix2D.TransformDistance.2.py similarity index 100% rename from docs/sphinx/rest_substitutions/snippets/python/converted/AffineMatrix2D.TransformDistance.2.py rename to docs/sphinx/rest_substitutions/snippets/python/converted/wx.AffineMatrix2D.TransformDistance.2.py diff --git a/docs/sphinx/rest_substitutions/snippets/python/converted/AffineMatrix2D.TransformPoint.1.py b/docs/sphinx/rest_substitutions/snippets/python/converted/wx.AffineMatrix2D.TransformPoint.1.py similarity index 100% rename from docs/sphinx/rest_substitutions/snippets/python/converted/AffineMatrix2D.TransformPoint.1.py rename to docs/sphinx/rest_substitutions/snippets/python/converted/wx.AffineMatrix2D.TransformPoint.1.py diff --git a/docs/sphinx/rest_substitutions/snippets/python/converted/AffineMatrix2D.TransformPoint.2.py b/docs/sphinx/rest_substitutions/snippets/python/converted/wx.AffineMatrix2D.TransformPoint.2.py similarity index 100% rename from docs/sphinx/rest_substitutions/snippets/python/converted/AffineMatrix2D.TransformPoint.2.py rename to docs/sphinx/rest_substitutions/snippets/python/converted/wx.AffineMatrix2D.TransformPoint.2.py diff --git a/docs/sphinx/rest_substitutions/snippets/python/converted/AffineMatrix2D.Translate.1.py b/docs/sphinx/rest_substitutions/snippets/python/converted/wx.AffineMatrix2D.Translate.1.py similarity index 100% rename from docs/sphinx/rest_substitutions/snippets/python/converted/AffineMatrix2D.Translate.1.py rename to docs/sphinx/rest_substitutions/snippets/python/converted/wx.AffineMatrix2D.Translate.1.py diff --git a/docs/sphinx/rest_substitutions/snippets/python/converted/AffineMatrix2DBase.Concat.1.py b/docs/sphinx/rest_substitutions/snippets/python/converted/wx.AffineMatrix2DBase.Concat.1.py similarity index 100% rename from docs/sphinx/rest_substitutions/snippets/python/converted/AffineMatrix2DBase.Concat.1.py rename to docs/sphinx/rest_substitutions/snippets/python/converted/wx.AffineMatrix2DBase.Concat.1.py diff --git a/docs/sphinx/rest_substitutions/snippets/python/converted/AffineMatrix2DBase.Invert.1.py b/docs/sphinx/rest_substitutions/snippets/python/converted/wx.AffineMatrix2DBase.Invert.1.py similarity index 100% rename from docs/sphinx/rest_substitutions/snippets/python/converted/AffineMatrix2DBase.Invert.1.py rename to docs/sphinx/rest_substitutions/snippets/python/converted/wx.AffineMatrix2DBase.Invert.1.py diff --git a/docs/sphinx/rest_substitutions/snippets/python/converted/App.SetTopWindow.1.py b/docs/sphinx/rest_substitutions/snippets/python/converted/wx.App.SetTopWindow.1.py similarity index 100% rename from docs/sphinx/rest_substitutions/snippets/python/converted/App.SetTopWindow.1.py rename to docs/sphinx/rest_substitutions/snippets/python/converted/wx.App.SetTopWindow.1.py diff --git a/docs/sphinx/rest_substitutions/snippets/python/converted/AppConsole.SetCLocale.1.py b/docs/sphinx/rest_substitutions/snippets/python/converted/wx.AppConsole.SetCLocale.1.py similarity index 100% rename from docs/sphinx/rest_substitutions/snippets/python/converted/AppConsole.SetCLocale.1.py rename to docs/sphinx/rest_substitutions/snippets/python/converted/wx.AppConsole.SetCLocale.1.py diff --git a/docs/sphinx/rest_substitutions/snippets/python/converted/ArtProvider.1.py b/docs/sphinx/rest_substitutions/snippets/python/converted/wx.ArtProvider.1.py similarity index 100% rename from docs/sphinx/rest_substitutions/snippets/python/converted/ArtProvider.1.py rename to docs/sphinx/rest_substitutions/snippets/python/converted/wx.ArtProvider.1.py diff --git a/docs/sphinx/rest_substitutions/snippets/python/converted/ArtProvider.2.py b/docs/sphinx/rest_substitutions/snippets/python/converted/wx.ArtProvider.2.py similarity index 100% rename from docs/sphinx/rest_substitutions/snippets/python/converted/ArtProvider.2.py rename to docs/sphinx/rest_substitutions/snippets/python/converted/wx.ArtProvider.2.py diff --git a/docs/sphinx/rest_substitutions/snippets/python/converted/Bitmap.NewFromPNGData.2.py b/docs/sphinx/rest_substitutions/snippets/python/converted/wx.Bitmap.NewFromPNGData.2.py similarity index 100% rename from docs/sphinx/rest_substitutions/snippets/python/converted/Bitmap.NewFromPNGData.2.py rename to docs/sphinx/rest_substitutions/snippets/python/converted/wx.Bitmap.NewFromPNGData.2.py diff --git a/docs/sphinx/rest_substitutions/snippets/python/converted/Bitmap.__init__.1.py b/docs/sphinx/rest_substitutions/snippets/python/converted/wx.Bitmap.__init__.1.py similarity index 100% rename from docs/sphinx/rest_substitutions/snippets/python/converted/Bitmap.__init__.1.py rename to docs/sphinx/rest_substitutions/snippets/python/converted/wx.Bitmap.__init__.1.py diff --git a/docs/sphinx/rest_substitutions/snippets/python/converted/BoxSizer.AddSpacer.1.py b/docs/sphinx/rest_substitutions/snippets/python/converted/wx.BoxSizer.AddSpacer.1.py similarity index 100% rename from docs/sphinx/rest_substitutions/snippets/python/converted/BoxSizer.AddSpacer.1.py rename to docs/sphinx/rest_substitutions/snippets/python/converted/wx.BoxSizer.AddSpacer.1.py diff --git a/docs/sphinx/rest_substitutions/snippets/python/converted/BusyCursor.1.py b/docs/sphinx/rest_substitutions/snippets/python/converted/wx.BusyCursor.1.py similarity index 100% rename from docs/sphinx/rest_substitutions/snippets/python/converted/BusyCursor.1.py rename to docs/sphinx/rest_substitutions/snippets/python/converted/wx.BusyCursor.1.py diff --git a/docs/sphinx/rest_substitutions/snippets/python/converted/BusyInfo.1.py b/docs/sphinx/rest_substitutions/snippets/python/converted/wx.BusyInfo.1.py similarity index 100% rename from docs/sphinx/rest_substitutions/snippets/python/converted/BusyInfo.1.py rename to docs/sphinx/rest_substitutions/snippets/python/converted/wx.BusyInfo.1.py diff --git a/docs/sphinx/rest_substitutions/snippets/python/converted/BusyInfo.2.py b/docs/sphinx/rest_substitutions/snippets/python/converted/wx.BusyInfo.2.py similarity index 100% rename from docs/sphinx/rest_substitutions/snippets/python/converted/BusyInfo.2.py rename to docs/sphinx/rest_substitutions/snippets/python/converted/wx.BusyInfo.2.py diff --git a/docs/sphinx/rest_substitutions/snippets/python/converted/Clipboard.1.py b/docs/sphinx/rest_substitutions/snippets/python/converted/wx.Clipboard.1.py similarity index 100% rename from docs/sphinx/rest_substitutions/snippets/python/converted/Clipboard.1.py rename to docs/sphinx/rest_substitutions/snippets/python/converted/wx.Clipboard.1.py diff --git a/docs/sphinx/rest_substitutions/snippets/python/converted/CloseEvent.1.py b/docs/sphinx/rest_substitutions/snippets/python/converted/wx.CloseEvent.1.py similarity index 100% rename from docs/sphinx/rest_substitutions/snippets/python/converted/CloseEvent.1.py rename to docs/sphinx/rest_substitutions/snippets/python/converted/wx.CloseEvent.1.py diff --git a/docs/sphinx/rest_substitutions/snippets/python/converted/CollapsiblePane.1.py b/docs/sphinx/rest_substitutions/snippets/python/converted/wx.CollapsiblePane.1.py similarity index 100% rename from docs/sphinx/rest_substitutions/snippets/python/converted/CollapsiblePane.1.py rename to docs/sphinx/rest_substitutions/snippets/python/converted/wx.CollapsiblePane.1.py diff --git a/docs/sphinx/rest_substitutions/snippets/python/converted/ComboCtrl.1.py b/docs/sphinx/rest_substitutions/snippets/python/converted/wx.ComboCtrl.1.py similarity index 100% rename from docs/sphinx/rest_substitutions/snippets/python/converted/ComboCtrl.1.py rename to docs/sphinx/rest_substitutions/snippets/python/converted/wx.ComboCtrl.1.py diff --git a/docs/sphinx/rest_substitutions/snippets/python/converted/ComboCtrl.2.py b/docs/sphinx/rest_substitutions/snippets/python/converted/wx.ComboCtrl.2.py similarity index 100% rename from docs/sphinx/rest_substitutions/snippets/python/converted/ComboCtrl.2.py rename to docs/sphinx/rest_substitutions/snippets/python/converted/wx.ComboCtrl.2.py diff --git a/docs/sphinx/rest_substitutions/snippets/python/converted/ComboCtrl.SetTextCtrlStyle.1.py b/docs/sphinx/rest_substitutions/snippets/python/converted/wx.ComboCtrl.SetTextCtrlStyle.1.py similarity index 100% rename from docs/sphinx/rest_substitutions/snippets/python/converted/ComboCtrl.SetTextCtrlStyle.1.py rename to docs/sphinx/rest_substitutions/snippets/python/converted/wx.ComboCtrl.SetTextCtrlStyle.1.py diff --git a/docs/sphinx/rest_substitutions/snippets/python/converted/ConfigBase.1.py b/docs/sphinx/rest_substitutions/snippets/python/converted/wx.ConfigBase.1.py similarity index 100% rename from docs/sphinx/rest_substitutions/snippets/python/converted/ConfigBase.1.py rename to docs/sphinx/rest_substitutions/snippets/python/converted/wx.ConfigBase.1.py diff --git a/docs/sphinx/rest_substitutions/snippets/python/converted/ConfigBase.2.py b/docs/sphinx/rest_substitutions/snippets/python/converted/wx.ConfigBase.2.py similarity index 100% rename from docs/sphinx/rest_substitutions/snippets/python/converted/ConfigBase.2.py rename to docs/sphinx/rest_substitutions/snippets/python/converted/wx.ConfigBase.2.py diff --git a/docs/sphinx/rest_substitutions/snippets/python/converted/ConfigBase.3.py b/docs/sphinx/rest_substitutions/snippets/python/converted/wx.ConfigBase.3.py similarity index 100% rename from docs/sphinx/rest_substitutions/snippets/python/converted/ConfigBase.3.py rename to docs/sphinx/rest_substitutions/snippets/python/converted/wx.ConfigBase.3.py diff --git a/docs/sphinx/rest_substitutions/snippets/python/converted/ConfigBase.4.py b/docs/sphinx/rest_substitutions/snippets/python/converted/wx.ConfigBase.4.py similarity index 100% rename from docs/sphinx/rest_substitutions/snippets/python/converted/ConfigBase.4.py rename to docs/sphinx/rest_substitutions/snippets/python/converted/wx.ConfigBase.4.py diff --git a/docs/sphinx/rest_substitutions/snippets/python/converted/ConfigBase.5.py b/docs/sphinx/rest_substitutions/snippets/python/converted/wx.ConfigBase.5.py similarity index 100% rename from docs/sphinx/rest_substitutions/snippets/python/converted/ConfigBase.5.py rename to docs/sphinx/rest_substitutions/snippets/python/converted/wx.ConfigBase.5.py diff --git a/docs/sphinx/rest_substitutions/snippets/python/converted/ConfigPathChanger.1.py b/docs/sphinx/rest_substitutions/snippets/python/converted/wx.ConfigPathChanger.1.py similarity index 100% rename from docs/sphinx/rest_substitutions/snippets/python/converted/ConfigPathChanger.1.py rename to docs/sphinx/rest_substitutions/snippets/python/converted/wx.ConfigPathChanger.1.py diff --git a/docs/sphinx/rest_substitutions/snippets/python/converted/ConfigPathChanger.__init__.1.py b/docs/sphinx/rest_substitutions/snippets/python/converted/wx.ConfigPathChanger.__init__.1.py similarity index 100% rename from docs/sphinx/rest_substitutions/snippets/python/converted/ConfigPathChanger.__init__.1.py rename to docs/sphinx/rest_substitutions/snippets/python/converted/wx.ConfigPathChanger.__init__.1.py diff --git a/docs/sphinx/rest_substitutions/snippets/python/converted/ConfigPathChanger.__init__.2.py b/docs/sphinx/rest_substitutions/snippets/python/converted/wx.ConfigPathChanger.__init__.2.py similarity index 100% rename from docs/sphinx/rest_substitutions/snippets/python/converted/ConfigPathChanger.__init__.2.py rename to docs/sphinx/rest_substitutions/snippets/python/converted/wx.ConfigPathChanger.__init__.2.py diff --git a/docs/sphinx/rest_substitutions/snippets/python/converted/ContextHelp.1.py b/docs/sphinx/rest_substitutions/snippets/python/converted/wx.ContextHelp.1.py similarity index 100% rename from docs/sphinx/rest_substitutions/snippets/python/converted/ContextHelp.1.py rename to docs/sphinx/rest_substitutions/snippets/python/converted/wx.ContextHelp.1.py diff --git a/docs/sphinx/rest_substitutions/snippets/python/converted/Control.GetSizeFromTextSize.1.py b/docs/sphinx/rest_substitutions/snippets/python/converted/wx.Control.GetSizeFromTextSize.1.py similarity index 100% rename from docs/sphinx/rest_substitutions/snippets/python/converted/Control.GetSizeFromTextSize.1.py rename to docs/sphinx/rest_substitutions/snippets/python/converted/wx.Control.GetSizeFromTextSize.1.py diff --git a/docs/sphinx/rest_substitutions/snippets/python/converted/Control.GetSizeFromTextSize.2.py b/docs/sphinx/rest_substitutions/snippets/python/converted/wx.Control.GetSizeFromTextSize.2.py similarity index 100% rename from docs/sphinx/rest_substitutions/snippets/python/converted/Control.GetSizeFromTextSize.2.py rename to docs/sphinx/rest_substitutions/snippets/python/converted/wx.Control.GetSizeFromTextSize.2.py diff --git a/docs/sphinx/rest_substitutions/snippets/python/converted/Control.SetLabelMarkup.1.py b/docs/sphinx/rest_substitutions/snippets/python/converted/wx.Control.SetLabelMarkup.1.py similarity index 100% rename from docs/sphinx/rest_substitutions/snippets/python/converted/Control.SetLabelMarkup.1.py rename to docs/sphinx/rest_substitutions/snippets/python/converted/wx.Control.SetLabelMarkup.1.py diff --git a/docs/sphinx/rest_substitutions/snippets/python/converted/Cursor.1.py b/docs/sphinx/rest_substitutions/snippets/python/converted/wx.Cursor.1.py similarity index 100% rename from docs/sphinx/rest_substitutions/snippets/python/converted/Cursor.1.py rename to docs/sphinx/rest_substitutions/snippets/python/converted/wx.Cursor.1.py diff --git a/docs/sphinx/rest_substitutions/snippets/python/converted/Cursor.__init__.1.py b/docs/sphinx/rest_substitutions/snippets/python/converted/wx.Cursor.__init__.1.py similarity index 100% rename from docs/sphinx/rest_substitutions/snippets/python/converted/Cursor.__init__.1.py rename to docs/sphinx/rest_substitutions/snippets/python/converted/wx.Cursor.__init__.1.py diff --git a/docs/sphinx/rest_substitutions/snippets/python/converted/DCClipper.1.py b/docs/sphinx/rest_substitutions/snippets/python/converted/wx.DCClipper.1.py similarity index 100% rename from docs/sphinx/rest_substitutions/snippets/python/converted/DCClipper.1.py rename to docs/sphinx/rest_substitutions/snippets/python/converted/wx.DCClipper.1.py diff --git a/docs/sphinx/rest_substitutions/snippets/python/converted/DataObjectComposite.1.py b/docs/sphinx/rest_substitutions/snippets/python/converted/wx.DataObjectComposite.1.py similarity index 100% rename from docs/sphinx/rest_substitutions/snippets/python/converted/DataObjectComposite.1.py rename to docs/sphinx/rest_substitutions/snippets/python/converted/wx.DataObjectComposite.1.py diff --git a/docs/sphinx/rest_substitutions/snippets/python/converted/DateTime.ConvertYearToBC.1.py b/docs/sphinx/rest_substitutions/snippets/python/converted/wx.DateTime.ConvertYearToBC.1.py similarity index 100% rename from docs/sphinx/rest_substitutions/snippets/python/converted/DateTime.ConvertYearToBC.1.py rename to docs/sphinx/rest_substitutions/snippets/python/converted/wx.DateTime.ConvertYearToBC.1.py diff --git a/docs/sphinx/rest_substitutions/snippets/python/converted/DateTime.Now.1.py b/docs/sphinx/rest_substitutions/snippets/python/converted/wx.DateTime.Now.1.py similarity index 100% rename from docs/sphinx/rest_substitutions/snippets/python/converted/DateTime.Now.1.py rename to docs/sphinx/rest_substitutions/snippets/python/converted/wx.DateTime.Now.1.py diff --git a/docs/sphinx/rest_substitutions/snippets/python/converted/DateTime.ParseFormat.1.py b/docs/sphinx/rest_substitutions/snippets/python/converted/wx.DateTime.ParseFormat.1.py similarity index 100% rename from docs/sphinx/rest_substitutions/snippets/python/converted/DateTime.ParseFormat.1.py rename to docs/sphinx/rest_substitutions/snippets/python/converted/wx.DateTime.ParseFormat.1.py diff --git a/docs/sphinx/rest_substitutions/snippets/python/converted/DateTime.ParseFormat.2.py b/docs/sphinx/rest_substitutions/snippets/python/converted/wx.DateTime.ParseFormat.2.py similarity index 100% rename from docs/sphinx/rest_substitutions/snippets/python/converted/DateTime.ParseFormat.2.py rename to docs/sphinx/rest_substitutions/snippets/python/converted/wx.DateTime.ParseFormat.2.py diff --git a/docs/sphinx/rest_substitutions/snippets/python/converted/Dialog.1.py b/docs/sphinx/rest_substitutions/snippets/python/converted/wx.Dialog.1.py similarity index 100% rename from docs/sphinx/rest_substitutions/snippets/python/converted/Dialog.1.py rename to docs/sphinx/rest_substitutions/snippets/python/converted/wx.Dialog.1.py diff --git a/docs/sphinx/rest_substitutions/snippets/python/converted/Dialog.2.py b/docs/sphinx/rest_substitutions/snippets/python/converted/wx.Dialog.2.py similarity index 100% rename from docs/sphinx/rest_substitutions/snippets/python/converted/Dialog.2.py rename to docs/sphinx/rest_substitutions/snippets/python/converted/wx.Dialog.2.py diff --git a/docs/sphinx/rest_substitutions/snippets/python/converted/DirDialog.1.py b/docs/sphinx/rest_substitutions/snippets/python/converted/wx.DirDialog.1.py similarity index 100% rename from docs/sphinx/rest_substitutions/snippets/python/converted/DirDialog.1.py rename to docs/sphinx/rest_substitutions/snippets/python/converted/wx.DirDialog.1.py diff --git a/docs/sphinx/rest_substitutions/snippets/python/converted/Event.Clone.1.py b/docs/sphinx/rest_substitutions/snippets/python/converted/wx.Event.Clone.1.py similarity index 100% rename from docs/sphinx/rest_substitutions/snippets/python/converted/Event.Clone.1.py rename to docs/sphinx/rest_substitutions/snippets/python/converted/wx.Event.Clone.1.py diff --git a/docs/sphinx/rest_substitutions/snippets/python/converted/EventBlocker.1.py b/docs/sphinx/rest_substitutions/snippets/python/converted/wx.EventBlocker.1.py similarity index 100% rename from docs/sphinx/rest_substitutions/snippets/python/converted/EventBlocker.1.py rename to docs/sphinx/rest_substitutions/snippets/python/converted/wx.EventBlocker.1.py diff --git a/docs/sphinx/rest_substitutions/snippets/python/converted/EventFilter.1.py b/docs/sphinx/rest_substitutions/snippets/python/converted/wx.EventFilter.1.py similarity index 100% rename from docs/sphinx/rest_substitutions/snippets/python/converted/EventFilter.1.py rename to docs/sphinx/rest_substitutions/snippets/python/converted/wx.EventFilter.1.py diff --git a/docs/sphinx/rest_substitutions/snippets/python/converted/EventLoopActivator.1.py b/docs/sphinx/rest_substitutions/snippets/python/converted/wx.EventLoopActivator.1.py similarity index 100% rename from docs/sphinx/rest_substitutions/snippets/python/converted/EventLoopActivator.1.py rename to docs/sphinx/rest_substitutions/snippets/python/converted/wx.EventLoopActivator.1.py diff --git a/docs/sphinx/rest_substitutions/snippets/python/converted/EventLoopBase.Dispatch.1.py b/docs/sphinx/rest_substitutions/snippets/python/converted/wx.EventLoopBase.Dispatch.1.py similarity index 100% rename from docs/sphinx/rest_substitutions/snippets/python/converted/EventLoopBase.Dispatch.1.py rename to docs/sphinx/rest_substitutions/snippets/python/converted/wx.EventLoopBase.Dispatch.1.py diff --git a/docs/sphinx/rest_substitutions/snippets/python/converted/EvtHandler.QueueEvent.1.py b/docs/sphinx/rest_substitutions/snippets/python/converted/wx.EvtHandler.QueueEvent.1.py similarity index 100% rename from docs/sphinx/rest_substitutions/snippets/python/converted/EvtHandler.QueueEvent.1.py rename to docs/sphinx/rest_substitutions/snippets/python/converted/wx.EvtHandler.QueueEvent.1.py diff --git a/docs/sphinx/rest_substitutions/snippets/python/converted/EvtHandler.QueueEvent.2.py b/docs/sphinx/rest_substitutions/snippets/python/converted/wx.EvtHandler.QueueEvent.2.py similarity index 100% rename from docs/sphinx/rest_substitutions/snippets/python/converted/EvtHandler.QueueEvent.2.py rename to docs/sphinx/rest_substitutions/snippets/python/converted/wx.EvtHandler.QueueEvent.2.py diff --git a/docs/sphinx/rest_substitutions/snippets/python/converted/EvtHandler.SetNextHandler.1.py b/docs/sphinx/rest_substitutions/snippets/python/converted/wx.EvtHandler.SetNextHandler.1.py similarity index 100% rename from docs/sphinx/rest_substitutions/snippets/python/converted/EvtHandler.SetNextHandler.1.py rename to docs/sphinx/rest_substitutions/snippets/python/converted/wx.EvtHandler.SetNextHandler.1.py diff --git a/docs/sphinx/rest_substitutions/snippets/python/converted/FSFile.__init__.1.py b/docs/sphinx/rest_substitutions/snippets/python/converted/wx.FSFile.__init__.1.py similarity index 100% rename from docs/sphinx/rest_substitutions/snippets/python/converted/FSFile.__init__.1.py rename to docs/sphinx/rest_substitutions/snippets/python/converted/wx.FSFile.__init__.1.py diff --git a/docs/sphinx/rest_substitutions/snippets/python/converted/FileDialog.1.py b/docs/sphinx/rest_substitutions/snippets/python/converted/wx.FileDialog.1.py similarity index 100% rename from docs/sphinx/rest_substitutions/snippets/python/converted/FileDialog.1.py rename to docs/sphinx/rest_substitutions/snippets/python/converted/wx.FileDialog.1.py diff --git a/docs/sphinx/rest_substitutions/snippets/python/converted/FileDialog.2.py b/docs/sphinx/rest_substitutions/snippets/python/converted/wx.FileDialog.2.py similarity index 100% rename from docs/sphinx/rest_substitutions/snippets/python/converted/FileDialog.2.py rename to docs/sphinx/rest_substitutions/snippets/python/converted/wx.FileDialog.2.py diff --git a/docs/sphinx/rest_substitutions/snippets/python/converted/FileDialog.3.py b/docs/sphinx/rest_substitutions/snippets/python/converted/wx.FileDialog.3.py similarity index 100% rename from docs/sphinx/rest_substitutions/snippets/python/converted/FileDialog.3.py rename to docs/sphinx/rest_substitutions/snippets/python/converted/wx.FileDialog.3.py diff --git a/docs/sphinx/rest_substitutions/snippets/python/converted/FileSystem.AddHandler.1.py b/docs/sphinx/rest_substitutions/snippets/python/converted/wx.FileSystem.AddHandler.1.py similarity index 100% rename from docs/sphinx/rest_substitutions/snippets/python/converted/FileSystem.AddHandler.1.py rename to docs/sphinx/rest_substitutions/snippets/python/converted/wx.FileSystem.AddHandler.1.py diff --git a/docs/sphinx/rest_substitutions/snippets/python/converted/FileSystem.ChangePathTo.1.py b/docs/sphinx/rest_substitutions/snippets/python/converted/wx.FileSystem.ChangePathTo.1.py similarity index 100% rename from docs/sphinx/rest_substitutions/snippets/python/converted/FileSystem.ChangePathTo.1.py rename to docs/sphinx/rest_substitutions/snippets/python/converted/wx.FileSystem.ChangePathTo.1.py diff --git a/docs/sphinx/rest_substitutions/snippets/python/converted/FileSystem.ChangePathTo.2.py b/docs/sphinx/rest_substitutions/snippets/python/converted/wx.FileSystem.ChangePathTo.2.py similarity index 100% rename from docs/sphinx/rest_substitutions/snippets/python/converted/FileSystem.ChangePathTo.2.py rename to docs/sphinx/rest_substitutions/snippets/python/converted/wx.FileSystem.ChangePathTo.2.py diff --git a/docs/sphinx/rest_substitutions/snippets/python/converted/FileSystemHandler.CanOpen.1.py b/docs/sphinx/rest_substitutions/snippets/python/converted/wx.FileSystemHandler.CanOpen.1.py similarity index 100% rename from docs/sphinx/rest_substitutions/snippets/python/converted/FileSystemHandler.CanOpen.1.py rename to docs/sphinx/rest_substitutions/snippets/python/converted/wx.FileSystemHandler.CanOpen.1.py diff --git a/docs/sphinx/rest_substitutions/snippets/python/converted/FileSystemHandler.GetAnchor.1.py b/docs/sphinx/rest_substitutions/snippets/python/converted/wx.FileSystemHandler.GetAnchor.1.py similarity index 100% rename from docs/sphinx/rest_substitutions/snippets/python/converted/FileSystemHandler.GetAnchor.1.py rename to docs/sphinx/rest_substitutions/snippets/python/converted/wx.FileSystemHandler.GetAnchor.1.py diff --git a/docs/sphinx/rest_substitutions/snippets/python/converted/FileSystemHandler.GetLeftLocation.1.py b/docs/sphinx/rest_substitutions/snippets/python/converted/wx.FileSystemHandler.GetLeftLocation.1.py similarity index 100% rename from docs/sphinx/rest_substitutions/snippets/python/converted/FileSystemHandler.GetLeftLocation.1.py rename to docs/sphinx/rest_substitutions/snippets/python/converted/wx.FileSystemHandler.GetLeftLocation.1.py diff --git a/docs/sphinx/rest_substitutions/snippets/python/converted/FileSystemHandler.GetMimeTypeFromExt.1.py b/docs/sphinx/rest_substitutions/snippets/python/converted/wx.FileSystemHandler.GetMimeTypeFromExt.1.py similarity index 100% rename from docs/sphinx/rest_substitutions/snippets/python/converted/FileSystemHandler.GetMimeTypeFromExt.1.py rename to docs/sphinx/rest_substitutions/snippets/python/converted/wx.FileSystemHandler.GetMimeTypeFromExt.1.py diff --git a/docs/sphinx/rest_substitutions/snippets/python/converted/FileSystemHandler.GetProtocol.1.py b/docs/sphinx/rest_substitutions/snippets/python/converted/wx.FileSystemHandler.GetProtocol.1.py similarity index 100% rename from docs/sphinx/rest_substitutions/snippets/python/converted/FileSystemHandler.GetProtocol.1.py rename to docs/sphinx/rest_substitutions/snippets/python/converted/wx.FileSystemHandler.GetProtocol.1.py diff --git a/docs/sphinx/rest_substitutions/snippets/python/converted/FileSystemHandler.GetRightLocation.1.py b/docs/sphinx/rest_substitutions/snippets/python/converted/wx.FileSystemHandler.GetRightLocation.1.py similarity index 100% rename from docs/sphinx/rest_substitutions/snippets/python/converted/FileSystemHandler.GetRightLocation.1.py rename to docs/sphinx/rest_substitutions/snippets/python/converted/wx.FileSystemHandler.GetRightLocation.1.py diff --git a/docs/sphinx/rest_substitutions/snippets/python/converted/FileType.1.py b/docs/sphinx/rest_substitutions/snippets/python/converted/wx.FileType.1.py similarity index 100% rename from docs/sphinx/rest_substitutions/snippets/python/converted/FileType.1.py rename to docs/sphinx/rest_substitutions/snippets/python/converted/wx.FileType.1.py diff --git a/docs/sphinx/rest_substitutions/snippets/python/converted/FileType.2.py b/docs/sphinx/rest_substitutions/snippets/python/converted/wx.FileType.2.py similarity index 100% rename from docs/sphinx/rest_substitutions/snippets/python/converted/FileType.2.py rename to docs/sphinx/rest_substitutions/snippets/python/converted/wx.FileType.2.py diff --git a/docs/sphinx/rest_substitutions/snippets/python/converted/Font.__init__.1.py b/docs/sphinx/rest_substitutions/snippets/python/converted/wx.Font.__init__.1.py similarity index 100% rename from docs/sphinx/rest_substitutions/snippets/python/converted/Font.__init__.1.py rename to docs/sphinx/rest_substitutions/snippets/python/converted/wx.Font.__init__.1.py diff --git a/docs/sphinx/rest_substitutions/snippets/python/converted/Font.__init__.2.py b/docs/sphinx/rest_substitutions/snippets/python/converted/wx.Font.__init__.2.py similarity index 100% rename from docs/sphinx/rest_substitutions/snippets/python/converted/Font.__init__.2.py rename to docs/sphinx/rest_substitutions/snippets/python/converted/wx.Font.__init__.2.py diff --git a/docs/sphinx/rest_substitutions/snippets/python/converted/FontInfo.1.py b/docs/sphinx/rest_substitutions/snippets/python/converted/wx.FontInfo.1.py similarity index 100% rename from docs/sphinx/rest_substitutions/snippets/python/converted/FontInfo.1.py rename to docs/sphinx/rest_substitutions/snippets/python/converted/wx.FontInfo.1.py diff --git a/docs/sphinx/rest_substitutions/snippets/python/converted/FontMapper.1.py b/docs/sphinx/rest_substitutions/snippets/python/converted/wx.FontMapper.1.py similarity index 100% rename from docs/sphinx/rest_substitutions/snippets/python/converted/FontMapper.1.py rename to docs/sphinx/rest_substitutions/snippets/python/converted/wx.FontMapper.1.py diff --git a/docs/sphinx/rest_substitutions/snippets/python/converted/Frame.1.py b/docs/sphinx/rest_substitutions/snippets/python/converted/wx.Frame.1.py similarity index 100% rename from docs/sphinx/rest_substitutions/snippets/python/converted/Frame.1.py rename to docs/sphinx/rest_substitutions/snippets/python/converted/wx.Frame.1.py diff --git a/docs/sphinx/rest_substitutions/snippets/python/converted/GraphicsContext.1.py b/docs/sphinx/rest_substitutions/snippets/python/converted/wx.GraphicsContext.1.py similarity index 100% rename from docs/sphinx/rest_substitutions/snippets/python/converted/GraphicsContext.1.py rename to docs/sphinx/rest_substitutions/snippets/python/converted/wx.GraphicsContext.1.py diff --git a/docs/sphinx/rest_substitutions/snippets/python/converted/GraphicsRenderer.1.py b/docs/sphinx/rest_substitutions/snippets/python/converted/wx.GraphicsRenderer.1.py similarity index 100% rename from docs/sphinx/rest_substitutions/snippets/python/converted/GraphicsRenderer.1.py rename to docs/sphinx/rest_substitutions/snippets/python/converted/wx.GraphicsRenderer.1.py diff --git a/docs/sphinx/rest_substitutions/snippets/python/converted/HeaderColumnSimple.1.py b/docs/sphinx/rest_substitutions/snippets/python/converted/wx.HeaderColumnSimple.1.py similarity index 100% rename from docs/sphinx/rest_substitutions/snippets/python/converted/HeaderColumnSimple.1.py rename to docs/sphinx/rest_substitutions/snippets/python/converted/wx.HeaderColumnSimple.1.py diff --git a/docs/sphinx/rest_substitutions/snippets/python/converted/HeaderCtrl.AddColumnsItems.1.py b/docs/sphinx/rest_substitutions/snippets/python/converted/wx.HeaderCtrl.AddColumnsItems.1.py similarity index 100% rename from docs/sphinx/rest_substitutions/snippets/python/converted/HeaderCtrl.AddColumnsItems.1.py rename to docs/sphinx/rest_substitutions/snippets/python/converted/wx.HeaderCtrl.AddColumnsItems.1.py diff --git a/docs/sphinx/rest_substitutions/snippets/python/converted/HeaderCtrl.Create.1.py b/docs/sphinx/rest_substitutions/snippets/python/converted/wx.HeaderCtrl.Create.1.py similarity index 100% rename from docs/sphinx/rest_substitutions/snippets/python/converted/HeaderCtrl.Create.1.py rename to docs/sphinx/rest_substitutions/snippets/python/converted/wx.HeaderCtrl.Create.1.py diff --git a/docs/sphinx/rest_substitutions/snippets/python/converted/HeaderCtrl.UpdateColumnWidthToFit.1.py b/docs/sphinx/rest_substitutions/snippets/python/converted/wx.HeaderCtrl.UpdateColumnWidthToFit.1.py similarity index 100% rename from docs/sphinx/rest_substitutions/snippets/python/converted/HeaderCtrl.UpdateColumnWidthToFit.1.py rename to docs/sphinx/rest_substitutions/snippets/python/converted/wx.HeaderCtrl.UpdateColumnWidthToFit.1.py diff --git a/docs/sphinx/rest_substitutions/snippets/python/converted/HeaderCtrlSimple.HideColumn.1.py b/docs/sphinx/rest_substitutions/snippets/python/converted/wx.HeaderCtrlSimple.HideColumn.1.py similarity index 100% rename from docs/sphinx/rest_substitutions/snippets/python/converted/HeaderCtrlSimple.HideColumn.1.py rename to docs/sphinx/rest_substitutions/snippets/python/converted/wx.HeaderCtrlSimple.HideColumn.1.py diff --git a/docs/sphinx/rest_substitutions/snippets/python/converted/HelpControllerBase.SetViewer.1.py b/docs/sphinx/rest_substitutions/snippets/python/converted/wx.HelpControllerBase.SetViewer.1.py similarity index 100% rename from docs/sphinx/rest_substitutions/snippets/python/converted/HelpControllerBase.SetViewer.1.py rename to docs/sphinx/rest_substitutions/snippets/python/converted/wx.HelpControllerBase.SetViewer.1.py diff --git a/docs/sphinx/rest_substitutions/snippets/python/converted/IconBundle.GetIcon.1.py b/docs/sphinx/rest_substitutions/snippets/python/converted/wx.IconBundle.GetIcon.1.py similarity index 100% rename from docs/sphinx/rest_substitutions/snippets/python/converted/IconBundle.GetIcon.1.py rename to docs/sphinx/rest_substitutions/snippets/python/converted/wx.IconBundle.GetIcon.1.py diff --git a/docs/sphinx/rest_substitutions/snippets/python/converted/Image.AddHandler.1.py b/docs/sphinx/rest_substitutions/snippets/python/converted/wx.Image.AddHandler.1.py similarity index 100% rename from docs/sphinx/rest_substitutions/snippets/python/converted/Image.AddHandler.1.py rename to docs/sphinx/rest_substitutions/snippets/python/converted/wx.Image.AddHandler.1.py diff --git a/docs/sphinx/rest_substitutions/snippets/python/converted/Image.ComputeHistogram.1.py b/docs/sphinx/rest_substitutions/snippets/python/converted/wx.Image.ComputeHistogram.1.py similarity index 100% rename from docs/sphinx/rest_substitutions/snippets/python/converted/Image.ComputeHistogram.1.py rename to docs/sphinx/rest_substitutions/snippets/python/converted/wx.Image.ComputeHistogram.1.py diff --git a/docs/sphinx/rest_substitutions/snippets/python/converted/Image.GetImageExtWildcard.1.py b/docs/sphinx/rest_substitutions/snippets/python/converted/wx.Image.GetImageExtWildcard.1.py similarity index 100% rename from docs/sphinx/rest_substitutions/snippets/python/converted/Image.GetImageExtWildcard.1.py rename to docs/sphinx/rest_substitutions/snippets/python/converted/wx.Image.GetImageExtWildcard.1.py diff --git a/docs/sphinx/rest_substitutions/snippets/python/converted/Image.LoadFile.1.py b/docs/sphinx/rest_substitutions/snippets/python/converted/wx.Image.LoadFile.1.py similarity index 100% rename from docs/sphinx/rest_substitutions/snippets/python/converted/Image.LoadFile.1.py rename to docs/sphinx/rest_substitutions/snippets/python/converted/wx.Image.LoadFile.1.py diff --git a/docs/sphinx/rest_substitutions/snippets/python/converted/Image.LoadFile.2.py b/docs/sphinx/rest_substitutions/snippets/python/converted/wx.Image.LoadFile.2.py similarity index 100% rename from docs/sphinx/rest_substitutions/snippets/python/converted/Image.LoadFile.2.py rename to docs/sphinx/rest_substitutions/snippets/python/converted/wx.Image.LoadFile.2.py diff --git a/docs/sphinx/rest_substitutions/snippets/python/converted/Image.SaveFile.1.py b/docs/sphinx/rest_substitutions/snippets/python/converted/wx.Image.SaveFile.1.py similarity index 100% rename from docs/sphinx/rest_substitutions/snippets/python/converted/Image.SaveFile.1.py rename to docs/sphinx/rest_substitutions/snippets/python/converted/wx.Image.SaveFile.1.py diff --git a/docs/sphinx/rest_substitutions/snippets/python/converted/Image.SaveFile.2.py b/docs/sphinx/rest_substitutions/snippets/python/converted/wx.Image.SaveFile.2.py similarity index 100% rename from docs/sphinx/rest_substitutions/snippets/python/converted/Image.SaveFile.2.py rename to docs/sphinx/rest_substitutions/snippets/python/converted/wx.Image.SaveFile.2.py diff --git a/docs/sphinx/rest_substitutions/snippets/python/converted/Image.Scale.1.py b/docs/sphinx/rest_substitutions/snippets/python/converted/wx.Image.Scale.1.py similarity index 100% rename from docs/sphinx/rest_substitutions/snippets/python/converted/Image.Scale.1.py rename to docs/sphinx/rest_substitutions/snippets/python/converted/wx.Image.Scale.1.py diff --git a/docs/sphinx/rest_substitutions/snippets/python/converted/Image.__init__.1.py b/docs/sphinx/rest_substitutions/snippets/python/converted/wx.Image.__init__.1.py similarity index 100% rename from docs/sphinx/rest_substitutions/snippets/python/converted/Image.__init__.1.py rename to docs/sphinx/rest_substitutions/snippets/python/converted/wx.Image.__init__.1.py diff --git a/docs/sphinx/rest_substitutions/snippets/python/converted/InfoBar.1.py b/docs/sphinx/rest_substitutions/snippets/python/converted/wx.InfoBar.1.py similarity index 100% rename from docs/sphinx/rest_substitutions/snippets/python/converted/InfoBar.1.py rename to docs/sphinx/rest_substitutions/snippets/python/converted/wx.InfoBar.1.py diff --git a/docs/sphinx/rest_substitutions/snippets/python/converted/KeyEvent.GetKeyCode.1.py b/docs/sphinx/rest_substitutions/snippets/python/converted/wx.KeyEvent.GetKeyCode.1.py similarity index 100% rename from docs/sphinx/rest_substitutions/snippets/python/converted/KeyEvent.GetKeyCode.1.py rename to docs/sphinx/rest_substitutions/snippets/python/converted/wx.KeyEvent.GetKeyCode.1.py diff --git a/docs/sphinx/rest_substitutions/snippets/python/converted/KeyboardState.GetModifiers.1.py b/docs/sphinx/rest_substitutions/snippets/python/converted/wx.KeyboardState.GetModifiers.1.py similarity index 100% rename from docs/sphinx/rest_substitutions/snippets/python/converted/KeyboardState.GetModifiers.1.py rename to docs/sphinx/rest_substitutions/snippets/python/converted/wx.KeyboardState.GetModifiers.1.py diff --git a/docs/sphinx/rest_substitutions/snippets/python/converted/KeyboardState.GetModifiers.2.py b/docs/sphinx/rest_substitutions/snippets/python/converted/wx.KeyboardState.GetModifiers.2.py similarity index 100% rename from docs/sphinx/rest_substitutions/snippets/python/converted/KeyboardState.GetModifiers.2.py rename to docs/sphinx/rest_substitutions/snippets/python/converted/wx.KeyboardState.GetModifiers.2.py diff --git a/docs/sphinx/rest_substitutions/snippets/python/converted/ListCtrl.GetNextItem.1.py b/docs/sphinx/rest_substitutions/snippets/python/converted/wx.ListCtrl.GetNextItem.1.py similarity index 100% rename from docs/sphinx/rest_substitutions/snippets/python/converted/ListCtrl.GetNextItem.1.py rename to docs/sphinx/rest_substitutions/snippets/python/converted/wx.ListCtrl.GetNextItem.1.py diff --git a/docs/sphinx/rest_substitutions/snippets/python/converted/ListCtrl.SetColumnsOrder.1.py b/docs/sphinx/rest_substitutions/snippets/python/converted/wx.ListCtrl.SetColumnsOrder.1.py similarity index 100% rename from docs/sphinx/rest_substitutions/snippets/python/converted/ListCtrl.SetColumnsOrder.1.py rename to docs/sphinx/rest_substitutions/snippets/python/converted/wx.ListCtrl.SetColumnsOrder.1.py diff --git a/docs/sphinx/rest_substitutions/snippets/python/converted/ListCtrl.SetItemState.1.py b/docs/sphinx/rest_substitutions/snippets/python/converted/wx.ListCtrl.SetItemState.1.py similarity index 100% rename from docs/sphinx/rest_substitutions/snippets/python/converted/ListCtrl.SetItemState.1.py rename to docs/sphinx/rest_substitutions/snippets/python/converted/wx.ListCtrl.SetItemState.1.py diff --git a/docs/sphinx/rest_substitutions/snippets/python/converted/ListCtrl.SetItemState.2.py b/docs/sphinx/rest_substitutions/snippets/python/converted/wx.ListCtrl.SetItemState.2.py similarity index 100% rename from docs/sphinx/rest_substitutions/snippets/python/converted/ListCtrl.SetItemState.2.py rename to docs/sphinx/rest_substitutions/snippets/python/converted/wx.ListCtrl.SetItemState.2.py diff --git a/docs/sphinx/rest_substitutions/snippets/python/converted/ListCtrl.SortItems.1.py b/docs/sphinx/rest_substitutions/snippets/python/converted/wx.ListCtrl.SortItems.1.py similarity index 100% rename from docs/sphinx/rest_substitutions/snippets/python/converted/ListCtrl.SortItems.1.py rename to docs/sphinx/rest_substitutions/snippets/python/converted/wx.ListCtrl.SortItems.1.py diff --git a/docs/sphinx/rest_substitutions/snippets/python/converted/Locale.1.py b/docs/sphinx/rest_substitutions/snippets/python/converted/wx.Locale.1.py similarity index 100% rename from docs/sphinx/rest_substitutions/snippets/python/converted/Locale.1.py rename to docs/sphinx/rest_substitutions/snippets/python/converted/wx.Locale.1.py diff --git a/docs/sphinx/rest_substitutions/snippets/python/converted/Locale.2.py b/docs/sphinx/rest_substitutions/snippets/python/converted/wx.Locale.2.py similarity index 100% rename from docs/sphinx/rest_substitutions/snippets/python/converted/Locale.2.py rename to docs/sphinx/rest_substitutions/snippets/python/converted/wx.Locale.2.py diff --git a/docs/sphinx/rest_substitutions/snippets/python/converted/Log.LogRecord.1.py b/docs/sphinx/rest_substitutions/snippets/python/converted/wx.Log.LogRecord.1.py similarity index 100% rename from docs/sphinx/rest_substitutions/snippets/python/converted/Log.LogRecord.1.py rename to docs/sphinx/rest_substitutions/snippets/python/converted/wx.Log.LogRecord.1.py diff --git a/docs/sphinx/rest_substitutions/snippets/python/converted/Log.SetComponentLevel.1.py b/docs/sphinx/rest_substitutions/snippets/python/converted/wx.Log.SetComponentLevel.1.py similarity index 100% rename from docs/sphinx/rest_substitutions/snippets/python/converted/Log.SetComponentLevel.1.py rename to docs/sphinx/rest_substitutions/snippets/python/converted/wx.Log.SetComponentLevel.1.py diff --git a/docs/sphinx/rest_substitutions/snippets/python/converted/LogChain.1.py b/docs/sphinx/rest_substitutions/snippets/python/converted/wx.LogChain.1.py similarity index 100% rename from docs/sphinx/rest_substitutions/snippets/python/converted/LogChain.1.py rename to docs/sphinx/rest_substitutions/snippets/python/converted/wx.LogChain.1.py diff --git a/docs/sphinx/rest_substitutions/snippets/python/converted/LogFormatter.1.py b/docs/sphinx/rest_substitutions/snippets/python/converted/wx.LogFormatter.1.py similarity index 100% rename from docs/sphinx/rest_substitutions/snippets/python/converted/LogFormatter.1.py rename to docs/sphinx/rest_substitutions/snippets/python/converted/wx.LogFormatter.1.py diff --git a/docs/sphinx/rest_substitutions/snippets/python/converted/LogFormatter.2.py b/docs/sphinx/rest_substitutions/snippets/python/converted/wx.LogFormatter.2.py similarity index 100% rename from docs/sphinx/rest_substitutions/snippets/python/converted/LogFormatter.2.py rename to docs/sphinx/rest_substitutions/snippets/python/converted/wx.LogFormatter.2.py diff --git a/docs/sphinx/rest_substitutions/snippets/python/converted/LogNull.1.py b/docs/sphinx/rest_substitutions/snippets/python/converted/wx.LogNull.1.py similarity index 100% rename from docs/sphinx/rest_substitutions/snippets/python/converted/LogNull.1.py rename to docs/sphinx/rest_substitutions/snippets/python/converted/wx.LogNull.1.py diff --git a/docs/sphinx/rest_substitutions/snippets/python/converted/LogNull.2.py b/docs/sphinx/rest_substitutions/snippets/python/converted/wx.LogNull.2.py similarity index 100% rename from docs/sphinx/rest_substitutions/snippets/python/converted/LogNull.2.py rename to docs/sphinx/rest_substitutions/snippets/python/converted/wx.LogNull.2.py diff --git a/docs/sphinx/rest_substitutions/snippets/python/converted/MDIParentFrame.OnCreateClient.1.py b/docs/sphinx/rest_substitutions/snippets/python/converted/wx.MDIParentFrame.OnCreateClient.1.py similarity index 100% rename from docs/sphinx/rest_substitutions/snippets/python/converted/MDIParentFrame.OnCreateClient.1.py rename to docs/sphinx/rest_substitutions/snippets/python/converted/wx.MDIParentFrame.OnCreateClient.1.py diff --git a/docs/sphinx/rest_substitutions/snippets/python/converted/MemoryDC.1.py b/docs/sphinx/rest_substitutions/snippets/python/converted/wx.MemoryDC.1.py similarity index 100% rename from docs/sphinx/rest_substitutions/snippets/python/converted/MemoryDC.1.py rename to docs/sphinx/rest_substitutions/snippets/python/converted/wx.MemoryDC.1.py diff --git a/docs/sphinx/rest_substitutions/snippets/python/converted/MemoryDC.2.py b/docs/sphinx/rest_substitutions/snippets/python/converted/wx.MemoryDC.2.py similarity index 100% rename from docs/sphinx/rest_substitutions/snippets/python/converted/MemoryDC.2.py rename to docs/sphinx/rest_substitutions/snippets/python/converted/wx.MemoryDC.2.py diff --git a/docs/sphinx/rest_substitutions/snippets/python/converted/MemoryFSHandler.1.py b/docs/sphinx/rest_substitutions/snippets/python/converted/wx.MemoryFSHandler.1.py similarity index 100% rename from docs/sphinx/rest_substitutions/snippets/python/converted/MemoryFSHandler.1.py rename to docs/sphinx/rest_substitutions/snippets/python/converted/wx.MemoryFSHandler.1.py diff --git a/docs/sphinx/rest_substitutions/snippets/python/converted/Menu.Append.1.py b/docs/sphinx/rest_substitutions/snippets/python/converted/wx.Menu.Append.1.py similarity index 100% rename from docs/sphinx/rest_substitutions/snippets/python/converted/Menu.Append.1.py rename to docs/sphinx/rest_substitutions/snippets/python/converted/wx.Menu.Append.1.py diff --git a/docs/sphinx/rest_substitutions/snippets/python/converted/Menu.Append.2.py b/docs/sphinx/rest_substitutions/snippets/python/converted/wx.Menu.Append.2.py similarity index 100% rename from docs/sphinx/rest_substitutions/snippets/python/converted/Menu.Append.2.py rename to docs/sphinx/rest_substitutions/snippets/python/converted/wx.Menu.Append.2.py diff --git a/docs/sphinx/rest_substitutions/snippets/python/converted/Menu.Append.3.py b/docs/sphinx/rest_substitutions/snippets/python/converted/wx.Menu.Append.3.py similarity index 100% rename from docs/sphinx/rest_substitutions/snippets/python/converted/Menu.Append.3.py rename to docs/sphinx/rest_substitutions/snippets/python/converted/wx.Menu.Append.3.py diff --git a/docs/sphinx/rest_substitutions/snippets/python/converted/Menu.Append.4.py b/docs/sphinx/rest_substitutions/snippets/python/converted/wx.Menu.Append.4.py similarity index 100% rename from docs/sphinx/rest_substitutions/snippets/python/converted/Menu.Append.4.py rename to docs/sphinx/rest_substitutions/snippets/python/converted/wx.Menu.Append.4.py diff --git a/docs/sphinx/rest_substitutions/snippets/python/converted/MenuItem.GetLabelText.1.py b/docs/sphinx/rest_substitutions/snippets/python/converted/wx.MenuItem.GetLabelText.1.py similarity index 100% rename from docs/sphinx/rest_substitutions/snippets/python/converted/MenuItem.GetLabelText.1.py rename to docs/sphinx/rest_substitutions/snippets/python/converted/wx.MenuItem.GetLabelText.1.py diff --git a/docs/sphinx/rest_substitutions/snippets/python/converted/MenuItem.SetItemLabel.1.py b/docs/sphinx/rest_substitutions/snippets/python/converted/wx.MenuItem.SetItemLabel.1.py similarity index 100% rename from docs/sphinx/rest_substitutions/snippets/python/converted/MenuItem.SetItemLabel.1.py rename to docs/sphinx/rest_substitutions/snippets/python/converted/wx.MenuItem.SetItemLabel.1.py diff --git a/docs/sphinx/rest_substitutions/snippets/python/converted/MenuItem.__init__.1.py b/docs/sphinx/rest_substitutions/snippets/python/converted/wx.MenuItem.__init__.1.py similarity index 100% rename from docs/sphinx/rest_substitutions/snippets/python/converted/MenuItem.__init__.1.py rename to docs/sphinx/rest_substitutions/snippets/python/converted/wx.MenuItem.__init__.1.py diff --git a/docs/sphinx/rest_substitutions/snippets/python/converted/MessageDialog.SetYesNoLabels.1.py b/docs/sphinx/rest_substitutions/snippets/python/converted/wx.MessageDialog.SetYesNoLabels.1.py similarity index 100% rename from docs/sphinx/rest_substitutions/snippets/python/converted/MessageDialog.SetYesNoLabels.1.py rename to docs/sphinx/rest_substitutions/snippets/python/converted/wx.MessageDialog.SetYesNoLabels.1.py diff --git a/docs/sphinx/rest_substitutions/snippets/python/converted/MessageDialog.SetYesNoLabels.2.py b/docs/sphinx/rest_substitutions/snippets/python/converted/wx.MessageDialog.SetYesNoLabels.2.py similarity index 100% rename from docs/sphinx/rest_substitutions/snippets/python/converted/MessageDialog.SetYesNoLabels.2.py rename to docs/sphinx/rest_substitutions/snippets/python/converted/wx.MessageDialog.SetYesNoLabels.2.py diff --git a/docs/sphinx/rest_substitutions/snippets/python/converted/ModalDialogHook.1.py b/docs/sphinx/rest_substitutions/snippets/python/converted/wx.ModalDialogHook.1.py similarity index 100% rename from docs/sphinx/rest_substitutions/snippets/python/converted/ModalDialogHook.1.py rename to docs/sphinx/rest_substitutions/snippets/python/converted/wx.ModalDialogHook.1.py diff --git a/docs/sphinx/rest_substitutions/snippets/python/converted/NonOwnedWindow.SetShape.1.py b/docs/sphinx/rest_substitutions/snippets/python/converted/wx.NonOwnedWindow.SetShape.1.py similarity index 100% rename from docs/sphinx/rest_substitutions/snippets/python/converted/NonOwnedWindow.SetShape.1.py rename to docs/sphinx/rest_substitutions/snippets/python/converted/wx.NonOwnedWindow.SetShape.1.py diff --git a/docs/sphinx/rest_substitutions/snippets/python/converted/Notebook.1.py b/docs/sphinx/rest_substitutions/snippets/python/converted/wx.Notebook.1.py similarity index 100% rename from docs/sphinx/rest_substitutions/snippets/python/converted/Notebook.1.py rename to docs/sphinx/rest_substitutions/snippets/python/converted/wx.Notebook.1.py diff --git a/docs/sphinx/rest_substitutions/snippets/python/converted/Notebook.2.py b/docs/sphinx/rest_substitutions/snippets/python/converted/wx.Notebook.2.py similarity index 100% rename from docs/sphinx/rest_substitutions/snippets/python/converted/Notebook.2.py rename to docs/sphinx/rest_substitutions/snippets/python/converted/wx.Notebook.2.py diff --git a/docs/sphinx/rest_substitutions/snippets/python/converted/PaintEvent.1.py b/docs/sphinx/rest_substitutions/snippets/python/converted/wx.PaintEvent.1.py similarity index 100% rename from docs/sphinx/rest_substitutions/snippets/python/converted/PaintEvent.1.py rename to docs/sphinx/rest_substitutions/snippets/python/converted/wx.PaintEvent.1.py diff --git a/docs/sphinx/rest_substitutions/snippets/python/converted/PaintEvent.2.py b/docs/sphinx/rest_substitutions/snippets/python/converted/wx.PaintEvent.2.py similarity index 100% rename from docs/sphinx/rest_substitutions/snippets/python/converted/PaintEvent.2.py rename to docs/sphinx/rest_substitutions/snippets/python/converted/wx.PaintEvent.2.py diff --git a/docs/sphinx/rest_substitutions/snippets/python/converted/PickerBase.GetPickerCtrl.1.py b/docs/sphinx/rest_substitutions/snippets/python/converted/wx.PickerBase.GetPickerCtrl.1.py similarity index 100% rename from docs/sphinx/rest_substitutions/snippets/python/converted/PickerBase.GetPickerCtrl.1.py rename to docs/sphinx/rest_substitutions/snippets/python/converted/wx.PickerBase.GetPickerCtrl.1.py diff --git a/docs/sphinx/rest_substitutions/snippets/python/converted/PlatformInfo.1.py b/docs/sphinx/rest_substitutions/snippets/python/converted/wx.PlatformInfo.1.py similarity index 100% rename from docs/sphinx/rest_substitutions/snippets/python/converted/PlatformInfo.1.py rename to docs/sphinx/rest_substitutions/snippets/python/converted/wx.PlatformInfo.1.py diff --git a/docs/sphinx/rest_substitutions/snippets/python/converted/Point.SetDefaults.1.py b/docs/sphinx/rest_substitutions/snippets/python/converted/wx.Point.SetDefaults.1.py similarity index 100% rename from docs/sphinx/rest_substitutions/snippets/python/converted/Point.SetDefaults.1.py rename to docs/sphinx/rest_substitutions/snippets/python/converted/wx.Point.SetDefaults.1.py diff --git a/docs/sphinx/rest_substitutions/snippets/python/converted/Point.__init__.1.py b/docs/sphinx/rest_substitutions/snippets/python/converted/wx.Point.__init__.1.py similarity index 100% rename from docs/sphinx/rest_substitutions/snippets/python/converted/Point.__init__.1.py rename to docs/sphinx/rest_substitutions/snippets/python/converted/wx.Point.__init__.1.py diff --git a/docs/sphinx/rest_substitutions/snippets/python/converted/RearrangeDialog.1.py b/docs/sphinx/rest_substitutions/snippets/python/converted/wx.RearrangeDialog.1.py similarity index 100% rename from docs/sphinx/rest_substitutions/snippets/python/converted/RearrangeDialog.1.py rename to docs/sphinx/rest_substitutions/snippets/python/converted/wx.RearrangeDialog.1.py diff --git a/docs/sphinx/rest_substitutions/snippets/python/converted/RearrangeDialog.AddExtraControls.1.py b/docs/sphinx/rest_substitutions/snippets/python/converted/wx.RearrangeDialog.AddExtraControls.1.py similarity index 100% rename from docs/sphinx/rest_substitutions/snippets/python/converted/RearrangeDialog.AddExtraControls.1.py rename to docs/sphinx/rest_substitutions/snippets/python/converted/wx.RearrangeDialog.AddExtraControls.1.py diff --git a/docs/sphinx/rest_substitutions/snippets/python/converted/RearrangeList.1.py b/docs/sphinx/rest_substitutions/snippets/python/converted/wx.RearrangeList.1.py similarity index 100% rename from docs/sphinx/rest_substitutions/snippets/python/converted/RearrangeList.1.py rename to docs/sphinx/rest_substitutions/snippets/python/converted/wx.RearrangeList.1.py diff --git a/docs/sphinx/rest_substitutions/snippets/python/converted/RichMessageDialog.1.py b/docs/sphinx/rest_substitutions/snippets/python/converted/wx.RichMessageDialog.1.py similarity index 100% rename from docs/sphinx/rest_substitutions/snippets/python/converted/RichMessageDialog.1.py rename to docs/sphinx/rest_substitutions/snippets/python/converted/wx.RichMessageDialog.1.py diff --git a/docs/sphinx/rest_substitutions/snippets/python/converted/ScrollBar.SetScrollbar.1.py b/docs/sphinx/rest_substitutions/snippets/python/converted/wx.ScrollBar.SetScrollbar.1.py similarity index 100% rename from docs/sphinx/rest_substitutions/snippets/python/converted/ScrollBar.SetScrollbar.1.py rename to docs/sphinx/rest_substitutions/snippets/python/converted/wx.ScrollBar.SetScrollbar.1.py diff --git a/docs/sphinx/rest_substitutions/snippets/python/converted/Scrolled.DoPrepareDC.1.py b/docs/sphinx/rest_substitutions/snippets/python/converted/wx.Scrolled.DoPrepareDC.1.py similarity index 100% rename from docs/sphinx/rest_substitutions/snippets/python/converted/Scrolled.DoPrepareDC.1.py rename to docs/sphinx/rest_substitutions/snippets/python/converted/wx.Scrolled.DoPrepareDC.1.py diff --git a/docs/sphinx/rest_substitutions/snippets/python/converted/Scrolled.SetScrollbars.1.py b/docs/sphinx/rest_substitutions/snippets/python/converted/wx.Scrolled.SetScrollbars.1.py similarity index 100% rename from docs/sphinx/rest_substitutions/snippets/python/converted/Scrolled.SetScrollbars.1.py rename to docs/sphinx/rest_substitutions/snippets/python/converted/wx.Scrolled.SetScrollbars.1.py diff --git a/docs/sphinx/rest_substitutions/snippets/python/converted/SearchCtrl.1.py b/docs/sphinx/rest_substitutions/snippets/python/converted/wx.SearchCtrl.1.py similarity index 100% rename from docs/sphinx/rest_substitutions/snippets/python/converted/SearchCtrl.1.py rename to docs/sphinx/rest_substitutions/snippets/python/converted/wx.SearchCtrl.1.py diff --git a/docs/sphinx/rest_substitutions/snippets/python/converted/SingleInstanceChecker.1.py b/docs/sphinx/rest_substitutions/snippets/python/converted/wx.SingleInstanceChecker.1.py similarity index 100% rename from docs/sphinx/rest_substitutions/snippets/python/converted/SingleInstanceChecker.1.py rename to docs/sphinx/rest_substitutions/snippets/python/converted/wx.SingleInstanceChecker.1.py diff --git a/docs/sphinx/rest_substitutions/snippets/python/converted/Size.SetDefaults.1.py b/docs/sphinx/rest_substitutions/snippets/python/converted/wx.Size.SetDefaults.1.py similarity index 100% rename from docs/sphinx/rest_substitutions/snippets/python/converted/Size.SetDefaults.1.py rename to docs/sphinx/rest_substitutions/snippets/python/converted/wx.Size.SetDefaults.1.py diff --git a/docs/sphinx/rest_substitutions/snippets/python/converted/Sizer.AddSpacer.1.py b/docs/sphinx/rest_substitutions/snippets/python/converted/wx.Sizer.AddSpacer.1.py similarity index 100% rename from docs/sphinx/rest_substitutions/snippets/python/converted/Sizer.AddSpacer.1.py rename to docs/sphinx/rest_substitutions/snippets/python/converted/wx.Sizer.AddSpacer.1.py diff --git a/docs/sphinx/rest_substitutions/snippets/python/converted/Sizer.AddStretchSpacer.1.py b/docs/sphinx/rest_substitutions/snippets/python/converted/wx.Sizer.AddStretchSpacer.1.py similarity index 100% rename from docs/sphinx/rest_substitutions/snippets/python/converted/Sizer.AddStretchSpacer.1.py rename to docs/sphinx/rest_substitutions/snippets/python/converted/wx.Sizer.AddStretchSpacer.1.py diff --git a/docs/sphinx/rest_substitutions/snippets/python/converted/SizerFlags.1.py b/docs/sphinx/rest_substitutions/snippets/python/converted/wx.SizerFlags.1.py similarity index 100% rename from docs/sphinx/rest_substitutions/snippets/python/converted/SizerFlags.1.py rename to docs/sphinx/rest_substitutions/snippets/python/converted/wx.SizerFlags.1.py diff --git a/docs/sphinx/rest_substitutions/snippets/python/converted/SizerFlags.2.py b/docs/sphinx/rest_substitutions/snippets/python/converted/wx.SizerFlags.2.py similarity index 100% rename from docs/sphinx/rest_substitutions/snippets/python/converted/SizerFlags.2.py rename to docs/sphinx/rest_substitutions/snippets/python/converted/wx.SizerFlags.2.py diff --git a/docs/sphinx/rest_substitutions/snippets/python/converted/SizerFlags.3.py b/docs/sphinx/rest_substitutions/snippets/python/converted/wx.SizerFlags.3.py similarity index 100% rename from docs/sphinx/rest_substitutions/snippets/python/converted/SizerFlags.3.py rename to docs/sphinx/rest_substitutions/snippets/python/converted/wx.SizerFlags.3.py diff --git a/docs/sphinx/rest_substitutions/snippets/python/converted/StandardPaths.MSWGetShellDir.1.py b/docs/sphinx/rest_substitutions/snippets/python/converted/wx.StandardPaths.MSWGetShellDir.1.py similarity index 100% rename from docs/sphinx/rest_substitutions/snippets/python/converted/StandardPaths.MSWGetShellDir.1.py rename to docs/sphinx/rest_substitutions/snippets/python/converted/wx.StandardPaths.MSWGetShellDir.1.py diff --git a/docs/sphinx/rest_substitutions/snippets/python/converted/StandardPaths.UseAppInfo.1.py b/docs/sphinx/rest_substitutions/snippets/python/converted/wx.StandardPaths.UseAppInfo.1.py similarity index 100% rename from docs/sphinx/rest_substitutions/snippets/python/converted/StandardPaths.UseAppInfo.1.py rename to docs/sphinx/rest_substitutions/snippets/python/converted/wx.StandardPaths.UseAppInfo.1.py diff --git a/docs/sphinx/rest_substitutions/snippets/python/converted/StaticBox.1.py b/docs/sphinx/rest_substitutions/snippets/python/converted/wx.StaticBox.1.py similarity index 100% rename from docs/sphinx/rest_substitutions/snippets/python/converted/StaticBox.1.py rename to docs/sphinx/rest_substitutions/snippets/python/converted/wx.StaticBox.1.py diff --git a/docs/sphinx/rest_substitutions/snippets/python/converted/StaticBox.2.py b/docs/sphinx/rest_substitutions/snippets/python/converted/wx.StaticBox.2.py similarity index 100% rename from docs/sphinx/rest_substitutions/snippets/python/converted/StaticBox.2.py rename to docs/sphinx/rest_substitutions/snippets/python/converted/wx.StaticBox.2.py diff --git a/docs/sphinx/rest_substitutions/snippets/python/converted/StaticBoxSizer.1.py b/docs/sphinx/rest_substitutions/snippets/python/converted/wx.StaticBoxSizer.1.py similarity index 100% rename from docs/sphinx/rest_substitutions/snippets/python/converted/StaticBoxSizer.1.py rename to docs/sphinx/rest_substitutions/snippets/python/converted/wx.StaticBoxSizer.1.py diff --git a/docs/sphinx/rest_substitutions/snippets/python/converted/StopWatch.1.py b/docs/sphinx/rest_substitutions/snippets/python/converted/wx.StopWatch.1.py similarity index 100% rename from docs/sphinx/rest_substitutions/snippets/python/converted/StopWatch.1.py rename to docs/sphinx/rest_substitutions/snippets/python/converted/wx.StopWatch.1.py diff --git a/docs/sphinx/rest_substitutions/snippets/python/converted/TextCompleterSimple.1.py b/docs/sphinx/rest_substitutions/snippets/python/converted/wx.TextCompleterSimple.1.py similarity index 100% rename from docs/sphinx/rest_substitutions/snippets/python/converted/TextCompleterSimple.1.py rename to docs/sphinx/rest_substitutions/snippets/python/converted/wx.TextCompleterSimple.1.py diff --git a/docs/sphinx/rest_substitutions/snippets/python/converted/TextCtrl.1.py b/docs/sphinx/rest_substitutions/snippets/python/converted/wx.TextCtrl.1.py similarity index 100% rename from docs/sphinx/rest_substitutions/snippets/python/converted/TextCtrl.1.py rename to docs/sphinx/rest_substitutions/snippets/python/converted/wx.TextCtrl.1.py diff --git a/docs/sphinx/rest_substitutions/snippets/python/converted/TextCtrl.2.py b/docs/sphinx/rest_substitutions/snippets/python/converted/wx.TextCtrl.2.py similarity index 100% rename from docs/sphinx/rest_substitutions/snippets/python/converted/TextCtrl.2.py rename to docs/sphinx/rest_substitutions/snippets/python/converted/wx.TextCtrl.2.py diff --git a/docs/sphinx/rest_substitutions/snippets/python/converted/TextCtrl.3.py b/docs/sphinx/rest_substitutions/snippets/python/converted/wx.TextCtrl.3.py similarity index 100% rename from docs/sphinx/rest_substitutions/snippets/python/converted/TextCtrl.3.py rename to docs/sphinx/rest_substitutions/snippets/python/converted/wx.TextCtrl.3.py diff --git a/docs/sphinx/rest_substitutions/snippets/python/converted/TextCtrl.4.py b/docs/sphinx/rest_substitutions/snippets/python/converted/wx.TextCtrl.4.py similarity index 100% rename from docs/sphinx/rest_substitutions/snippets/python/converted/TextCtrl.4.py rename to docs/sphinx/rest_substitutions/snippets/python/converted/wx.TextCtrl.4.py diff --git a/docs/sphinx/rest_substitutions/snippets/python/converted/TextCtrl.5.py b/docs/sphinx/rest_substitutions/snippets/python/converted/wx.TextCtrl.5.py similarity index 100% rename from docs/sphinx/rest_substitutions/snippets/python/converted/TextCtrl.5.py rename to docs/sphinx/rest_substitutions/snippets/python/converted/wx.TextCtrl.5.py diff --git a/docs/sphinx/rest_substitutions/snippets/python/converted/TextEntry.GetInsertionPoint.1.py b/docs/sphinx/rest_substitutions/snippets/python/converted/wx.TextEntry.GetInsertionPoint.1.py similarity index 100% rename from docs/sphinx/rest_substitutions/snippets/python/converted/TextEntry.GetInsertionPoint.1.py rename to docs/sphinx/rest_substitutions/snippets/python/converted/wx.TextEntry.GetInsertionPoint.1.py diff --git a/docs/sphinx/rest_substitutions/snippets/python/converted/TextUrlEvent.Clone.1.py b/docs/sphinx/rest_substitutions/snippets/python/converted/wx.TextUrlEvent.Clone.1.py similarity index 100% rename from docs/sphinx/rest_substitutions/snippets/python/converted/TextUrlEvent.Clone.1.py rename to docs/sphinx/rest_substitutions/snippets/python/converted/wx.TextUrlEvent.Clone.1.py diff --git a/docs/sphinx/rest_substitutions/snippets/python/converted/TimerEvent.1.py b/docs/sphinx/rest_substitutions/snippets/python/converted/wx.TimerEvent.1.py similarity index 100% rename from docs/sphinx/rest_substitutions/snippets/python/converted/TimerEvent.1.py rename to docs/sphinx/rest_substitutions/snippets/python/converted/wx.TimerEvent.1.py diff --git a/docs/sphinx/rest_substitutions/snippets/python/converted/ToolBar.1.py b/docs/sphinx/rest_substitutions/snippets/python/converted/wx.ToolBar.1.py similarity index 100% rename from docs/sphinx/rest_substitutions/snippets/python/converted/ToolBar.1.py rename to docs/sphinx/rest_substitutions/snippets/python/converted/wx.ToolBar.1.py diff --git a/docs/sphinx/rest_substitutions/snippets/python/converted/ToolBar.2.py b/docs/sphinx/rest_substitutions/snippets/python/converted/wx.ToolBar.2.py similarity index 100% rename from docs/sphinx/rest_substitutions/snippets/python/converted/ToolBar.2.py rename to docs/sphinx/rest_substitutions/snippets/python/converted/wx.ToolBar.2.py diff --git a/docs/sphinx/rest_substitutions/snippets/python/converted/ToolBar.3.py b/docs/sphinx/rest_substitutions/snippets/python/converted/wx.ToolBar.3.py similarity index 100% rename from docs/sphinx/rest_substitutions/snippets/python/converted/ToolBar.3.py rename to docs/sphinx/rest_substitutions/snippets/python/converted/wx.ToolBar.3.py diff --git a/docs/sphinx/rest_substitutions/snippets/python/converted/Trackable.1.py b/docs/sphinx/rest_substitutions/snippets/python/converted/wx.Trackable.1.py similarity index 100% rename from docs/sphinx/rest_substitutions/snippets/python/converted/Trackable.1.py rename to docs/sphinx/rest_substitutions/snippets/python/converted/wx.Trackable.1.py diff --git a/docs/sphinx/rest_substitutions/snippets/python/converted/URLDataObject.1.py b/docs/sphinx/rest_substitutions/snippets/python/converted/wx.URLDataObject.1.py similarity index 100% rename from docs/sphinx/rest_substitutions/snippets/python/converted/URLDataObject.1.py rename to docs/sphinx/rest_substitutions/snippets/python/converted/wx.URLDataObject.1.py diff --git a/docs/sphinx/rest_substitutions/snippets/python/converted/VListBox.GetFirstSelected.1.py b/docs/sphinx/rest_substitutions/snippets/python/converted/wx.VListBox.GetFirstSelected.1.py similarity index 100% rename from docs/sphinx/rest_substitutions/snippets/python/converted/VListBox.GetFirstSelected.1.py rename to docs/sphinx/rest_substitutions/snippets/python/converted/wx.VListBox.GetFirstSelected.1.py diff --git a/docs/sphinx/rest_substitutions/snippets/python/converted/Validator.SetWindow.1.py b/docs/sphinx/rest_substitutions/snippets/python/converted/wx.Validator.SetWindow.1.py similarity index 100% rename from docs/sphinx/rest_substitutions/snippets/python/converted/Validator.SetWindow.1.py rename to docs/sphinx/rest_substitutions/snippets/python/converted/wx.Validator.SetWindow.1.py diff --git a/docs/sphinx/rest_substitutions/snippets/python/converted/Window.ConvertDialogToPixels.1.py b/docs/sphinx/rest_substitutions/snippets/python/converted/wx.Window.ConvertDialogToPixels.1.py similarity index 100% rename from docs/sphinx/rest_substitutions/snippets/python/converted/Window.ConvertDialogToPixels.1.py rename to docs/sphinx/rest_substitutions/snippets/python/converted/wx.Window.ConvertDialogToPixels.1.py diff --git a/docs/sphinx/rest_substitutions/snippets/python/converted/Window.DoUpdateWindowUI.1.py b/docs/sphinx/rest_substitutions/snippets/python/converted/wx.Window.DoUpdateWindowUI.1.py similarity index 100% rename from docs/sphinx/rest_substitutions/snippets/python/converted/Window.DoUpdateWindowUI.1.py rename to docs/sphinx/rest_substitutions/snippets/python/converted/wx.Window.DoUpdateWindowUI.1.py diff --git a/docs/sphinx/rest_substitutions/snippets/python/converted/Window.Fit.1.py b/docs/sphinx/rest_substitutions/snippets/python/converted/wx.Window.Fit.1.py similarity index 100% rename from docs/sphinx/rest_substitutions/snippets/python/converted/Window.Fit.1.py rename to docs/sphinx/rest_substitutions/snippets/python/converted/wx.Window.Fit.1.py diff --git a/docs/sphinx/rest_substitutions/snippets/python/converted/Window.HandleWindowEvent.1.py b/docs/sphinx/rest_substitutions/snippets/python/converted/wx.Window.HandleWindowEvent.1.py similarity index 100% rename from docs/sphinx/rest_substitutions/snippets/python/converted/Window.HandleWindowEvent.1.py rename to docs/sphinx/rest_substitutions/snippets/python/converted/wx.Window.HandleWindowEvent.1.py diff --git a/docs/sphinx/rest_substitutions/snippets/python/converted/Window.Move.1.py b/docs/sphinx/rest_substitutions/snippets/python/converted/wx.Window.Move.1.py similarity index 100% rename from docs/sphinx/rest_substitutions/snippets/python/converted/Window.Move.1.py rename to docs/sphinx/rest_substitutions/snippets/python/converted/wx.Window.Move.1.py diff --git a/docs/sphinx/rest_substitutions/snippets/python/converted/Window.Move.2.py b/docs/sphinx/rest_substitutions/snippets/python/converted/wx.Window.Move.2.py similarity index 100% rename from docs/sphinx/rest_substitutions/snippets/python/converted/Window.Move.2.py rename to docs/sphinx/rest_substitutions/snippets/python/converted/wx.Window.Move.2.py diff --git a/docs/sphinx/rest_substitutions/snippets/python/converted/Window.Move.3.py b/docs/sphinx/rest_substitutions/snippets/python/converted/wx.Window.Move.3.py similarity index 100% rename from docs/sphinx/rest_substitutions/snippets/python/converted/Window.Move.3.py rename to docs/sphinx/rest_substitutions/snippets/python/converted/wx.Window.Move.3.py diff --git a/docs/sphinx/rest_substitutions/snippets/python/converted/Window.ProcessEvent.1.py b/docs/sphinx/rest_substitutions/snippets/python/converted/wx.Window.ProcessEvent.1.py similarity index 100% rename from docs/sphinx/rest_substitutions/snippets/python/converted/Window.ProcessEvent.1.py rename to docs/sphinx/rest_substitutions/snippets/python/converted/wx.Window.ProcessEvent.1.py diff --git a/docs/sphinx/rest_substitutions/snippets/python/converted/Window.ProcessWindowEvent.1.py b/docs/sphinx/rest_substitutions/snippets/python/converted/wx.Window.ProcessWindowEvent.1.py similarity index 100% rename from docs/sphinx/rest_substitutions/snippets/python/converted/Window.ProcessWindowEvent.1.py rename to docs/sphinx/rest_substitutions/snippets/python/converted/wx.Window.ProcessWindowEvent.1.py diff --git a/docs/sphinx/rest_substitutions/snippets/python/converted/Window.PushEventHandler.1.py b/docs/sphinx/rest_substitutions/snippets/python/converted/wx.Window.PushEventHandler.1.py similarity index 100% rename from docs/sphinx/rest_substitutions/snippets/python/converted/Window.PushEventHandler.1.py rename to docs/sphinx/rest_substitutions/snippets/python/converted/wx.Window.PushEventHandler.1.py diff --git a/docs/sphinx/rest_substitutions/snippets/python/converted/Window.SetBackgroundStyle.1.py b/docs/sphinx/rest_substitutions/snippets/python/converted/wx.Window.SetBackgroundStyle.1.py similarity index 100% rename from docs/sphinx/rest_substitutions/snippets/python/converted/Window.SetBackgroundStyle.1.py rename to docs/sphinx/rest_substitutions/snippets/python/converted/wx.Window.SetBackgroundStyle.1.py diff --git a/docs/sphinx/rest_substitutions/snippets/python/converted/Window.SetMaxClientSize.1.py b/docs/sphinx/rest_substitutions/snippets/python/converted/wx.Window.SetMaxClientSize.1.py similarity index 100% rename from docs/sphinx/rest_substitutions/snippets/python/converted/Window.SetMaxClientSize.1.py rename to docs/sphinx/rest_substitutions/snippets/python/converted/wx.Window.SetMaxClientSize.1.py diff --git a/docs/sphinx/rest_substitutions/snippets/python/converted/Window.SetMinClientSize.1.py b/docs/sphinx/rest_substitutions/snippets/python/converted/wx.Window.SetMinClientSize.1.py similarity index 100% rename from docs/sphinx/rest_substitutions/snippets/python/converted/Window.SetMinClientSize.1.py rename to docs/sphinx/rest_substitutions/snippets/python/converted/wx.Window.SetMinClientSize.1.py diff --git a/docs/sphinx/rest_substitutions/snippets/python/converted/Window.SetScrollbar.1.py b/docs/sphinx/rest_substitutions/snippets/python/converted/wx.Window.SetScrollbar.1.py similarity index 100% rename from docs/sphinx/rest_substitutions/snippets/python/converted/Window.SetScrollbar.1.py rename to docs/sphinx/rest_substitutions/snippets/python/converted/wx.Window.SetScrollbar.1.py diff --git a/docs/sphinx/rest_substitutions/snippets/python/converted/Window.UpdateWindowUI.1.py b/docs/sphinx/rest_substitutions/snippets/python/converted/wx.Window.UpdateWindowUI.1.py similarity index 100% rename from docs/sphinx/rest_substitutions/snippets/python/converted/Window.UpdateWindowUI.1.py rename to docs/sphinx/rest_substitutions/snippets/python/converted/wx.Window.UpdateWindowUI.1.py diff --git a/docs/sphinx/rest_substitutions/snippets/python/converted/WindowModalDialogEvent.Clone.1.py b/docs/sphinx/rest_substitutions/snippets/python/converted/wx.WindowModalDialogEvent.Clone.1.py similarity index 100% rename from docs/sphinx/rest_substitutions/snippets/python/converted/WindowModalDialogEvent.Clone.1.py rename to docs/sphinx/rest_substitutions/snippets/python/converted/wx.WindowModalDialogEvent.Clone.1.py diff --git a/docs/sphinx/rest_substitutions/snippets/python/converted/adv.AboutDialogInfo.1.py b/docs/sphinx/rest_substitutions/snippets/python/converted/wx.adv.AboutDialogInfo.1.py similarity index 100% rename from docs/sphinx/rest_substitutions/snippets/python/converted/adv.AboutDialogInfo.1.py rename to docs/sphinx/rest_substitutions/snippets/python/converted/wx.adv.AboutDialogInfo.1.py diff --git a/docs/sphinx/rest_substitutions/snippets/python/converted/adv.BannerWindow.1.py b/docs/sphinx/rest_substitutions/snippets/python/converted/wx.adv.BannerWindow.1.py similarity index 100% rename from docs/sphinx/rest_substitutions/snippets/python/converted/adv.BannerWindow.1.py rename to docs/sphinx/rest_substitutions/snippets/python/converted/wx.adv.BannerWindow.1.py diff --git a/docs/sphinx/rest_substitutions/snippets/python/converted/adv.RichToolTip.1.py b/docs/sphinx/rest_substitutions/snippets/python/converted/wx.adv.RichToolTip.1.py similarity index 100% rename from docs/sphinx/rest_substitutions/snippets/python/converted/adv.RichToolTip.1.py rename to docs/sphinx/rest_substitutions/snippets/python/converted/wx.adv.RichToolTip.1.py diff --git a/docs/sphinx/rest_substitutions/snippets/python/converted/adv.Sound.Play.1.py b/docs/sphinx/rest_substitutions/snippets/python/converted/wx.adv.Sound.Play.1.py similarity index 100% rename from docs/sphinx/rest_substitutions/snippets/python/converted/adv.Sound.Play.1.py rename to docs/sphinx/rest_substitutions/snippets/python/converted/wx.adv.Sound.Play.1.py diff --git a/docs/sphinx/rest_substitutions/snippets/python/converted/adv.Sound.PlaySound.1.py b/docs/sphinx/rest_substitutions/snippets/python/converted/wx.adv.Sound.PlaySound.1.py similarity index 100% rename from docs/sphinx/rest_substitutions/snippets/python/converted/adv.Sound.PlaySound.1.py rename to docs/sphinx/rest_substitutions/snippets/python/converted/wx.adv.Sound.PlaySound.1.py diff --git a/docs/sphinx/rest_substitutions/snippets/python/converted/adv.SplashScreen.1.py b/docs/sphinx/rest_substitutions/snippets/python/converted/wx.adv.SplashScreen.1.py similarity index 100% rename from docs/sphinx/rest_substitutions/snippets/python/converted/adv.SplashScreen.1.py rename to docs/sphinx/rest_substitutions/snippets/python/converted/wx.adv.SplashScreen.1.py diff --git a/docs/sphinx/rest_substitutions/snippets/python/converted/adv.TreeListCtrl.GetNextItem.1.py b/docs/sphinx/rest_substitutions/snippets/python/converted/wx.adv.TreeListCtrl.GetNextItem.1.py similarity index 100% rename from docs/sphinx/rest_substitutions/snippets/python/converted/adv.TreeListCtrl.GetNextItem.1.py rename to docs/sphinx/rest_substitutions/snippets/python/converted/wx.adv.TreeListCtrl.GetNextItem.1.py diff --git a/docs/sphinx/rest_substitutions/snippets/python/converted/adv.WizardPageSimple.Chain.1.py b/docs/sphinx/rest_substitutions/snippets/python/converted/wx.adv.WizardPageSimple.Chain.1.py similarity index 100% rename from docs/sphinx/rest_substitutions/snippets/python/converted/adv.WizardPageSimple.Chain.1.py rename to docs/sphinx/rest_substitutions/snippets/python/converted/wx.adv.WizardPageSimple.Chain.1.py diff --git a/docs/sphinx/rest_substitutions/snippets/python/converted/adv.WizardPageSimple.Chain.2.py b/docs/sphinx/rest_substitutions/snippets/python/converted/wx.adv.WizardPageSimple.Chain.2.py similarity index 100% rename from docs/sphinx/rest_substitutions/snippets/python/converted/adv.WizardPageSimple.Chain.2.py rename to docs/sphinx/rest_substitutions/snippets/python/converted/wx.adv.WizardPageSimple.Chain.2.py diff --git a/docs/sphinx/rest_substitutions/snippets/python/converted/adv.WizardPageSimple.Chain.3.py b/docs/sphinx/rest_substitutions/snippets/python/converted/wx.adv.WizardPageSimple.Chain.3.py similarity index 100% rename from docs/sphinx/rest_substitutions/snippets/python/converted/adv.WizardPageSimple.Chain.3.py rename to docs/sphinx/rest_substitutions/snippets/python/converted/wx.adv.WizardPageSimple.Chain.3.py diff --git a/docs/sphinx/rest_substitutions/snippets/python/converted/adv.functions.AboutBox.1.py b/docs/sphinx/rest_substitutions/snippets/python/converted/wx.adv.functions.AboutBox.1.py similarity index 100% rename from docs/sphinx/rest_substitutions/snippets/python/converted/adv.functions.AboutBox.1.py rename to docs/sphinx/rest_substitutions/snippets/python/converted/wx.adv.functions.AboutBox.1.py diff --git a/docs/sphinx/rest_substitutions/snippets/python/converted/dataview.DataViewCustomRenderer.CreateEditorCtrl.1.py b/docs/sphinx/rest_substitutions/snippets/python/converted/wx.dataview.DataViewCustomRenderer.CreateEditorCtrl.1.py similarity index 100% rename from docs/sphinx/rest_substitutions/snippets/python/converted/dataview.DataViewCustomRenderer.CreateEditorCtrl.1.py rename to docs/sphinx/rest_substitutions/snippets/python/converted/wx.dataview.DataViewCustomRenderer.CreateEditorCtrl.1.py diff --git a/docs/sphinx/rest_substitutions/snippets/python/converted/dataview.DataViewCustomRenderer.GetValueFromEditorCtrl.1.py b/docs/sphinx/rest_substitutions/snippets/python/converted/wx.dataview.DataViewCustomRenderer.GetValueFromEditorCtrl.1.py similarity index 100% rename from docs/sphinx/rest_substitutions/snippets/python/converted/dataview.DataViewCustomRenderer.GetValueFromEditorCtrl.1.py rename to docs/sphinx/rest_substitutions/snippets/python/converted/wx.dataview.DataViewCustomRenderer.GetValueFromEditorCtrl.1.py diff --git a/docs/sphinx/rest_substitutions/snippets/python/converted/dataview.DataViewListCtrl.1.py b/docs/sphinx/rest_substitutions/snippets/python/converted/wx.dataview.DataViewListCtrl.1.py similarity index 100% rename from docs/sphinx/rest_substitutions/snippets/python/converted/dataview.DataViewListCtrl.1.py rename to docs/sphinx/rest_substitutions/snippets/python/converted/wx.dataview.DataViewListCtrl.1.py diff --git a/docs/sphinx/rest_substitutions/snippets/python/converted/dataview.DataViewModel.1.py b/docs/sphinx/rest_substitutions/snippets/python/converted/wx.dataview.DataViewModel.1.py similarity index 100% rename from docs/sphinx/rest_substitutions/snippets/python/converted/dataview.DataViewModel.1.py rename to docs/sphinx/rest_substitutions/snippets/python/converted/wx.dataview.DataViewModel.1.py diff --git a/docs/sphinx/rest_substitutions/snippets/python/converted/dataview.DataViewModel.2.py b/docs/sphinx/rest_substitutions/snippets/python/converted/wx.dataview.DataViewModel.2.py similarity index 100% rename from docs/sphinx/rest_substitutions/snippets/python/converted/dataview.DataViewModel.2.py rename to docs/sphinx/rest_substitutions/snippets/python/converted/wx.dataview.DataViewModel.2.py diff --git a/docs/sphinx/rest_substitutions/snippets/python/converted/dataview.DataViewRenderer.DisableEllipsize.1.py b/docs/sphinx/rest_substitutions/snippets/python/converted/wx.dataview.DataViewRenderer.DisableEllipsize.1.py similarity index 100% rename from docs/sphinx/rest_substitutions/snippets/python/converted/dataview.DataViewRenderer.DisableEllipsize.1.py rename to docs/sphinx/rest_substitutions/snippets/python/converted/wx.dataview.DataViewRenderer.DisableEllipsize.1.py diff --git a/docs/sphinx/rest_substitutions/snippets/python/converted/dataview.TreeListCtrl.GetNextItem.1.py b/docs/sphinx/rest_substitutions/snippets/python/converted/wx.dataview.TreeListCtrl.GetNextItem.1.py similarity index 100% rename from docs/sphinx/rest_substitutions/snippets/python/converted/dataview.TreeListCtrl.GetNextItem.1.py rename to docs/sphinx/rest_substitutions/snippets/python/converted/wx.dataview.TreeListCtrl.GetNextItem.1.py diff --git a/docs/sphinx/rest_substitutions/snippets/python/converted/functions.DirSelector.1.py b/docs/sphinx/rest_substitutions/snippets/python/converted/wx.functions.DirSelector.1.py similarity index 100% rename from docs/sphinx/rest_substitutions/snippets/python/converted/functions.DirSelector.1.py rename to docs/sphinx/rest_substitutions/snippets/python/converted/wx.functions.DirSelector.1.py diff --git a/docs/sphinx/rest_substitutions/snippets/python/converted/functions.FileSelector.1.py b/docs/sphinx/rest_substitutions/snippets/python/converted/wx.functions.FileSelector.1.py similarity index 100% rename from docs/sphinx/rest_substitutions/snippets/python/converted/functions.FileSelector.1.py rename to docs/sphinx/rest_substitutions/snippets/python/converted/wx.functions.FileSelector.1.py diff --git a/docs/sphinx/rest_substitutions/snippets/python/converted/functions.FileSelector.2.py b/docs/sphinx/rest_substitutions/snippets/python/converted/wx.functions.FileSelector.2.py similarity index 100% rename from docs/sphinx/rest_substitutions/snippets/python/converted/functions.FileSelector.2.py rename to docs/sphinx/rest_substitutions/snippets/python/converted/wx.functions.FileSelector.2.py diff --git a/docs/sphinx/rest_substitutions/snippets/python/converted/functions.Kill.1.py b/docs/sphinx/rest_substitutions/snippets/python/converted/wx.functions.Kill.1.py similarity index 100% rename from docs/sphinx/rest_substitutions/snippets/python/converted/functions.Kill.1.py rename to docs/sphinx/rest_substitutions/snippets/python/converted/wx.functions.Kill.1.py diff --git a/docs/sphinx/rest_substitutions/snippets/python/converted/functions.Kill.2.py b/docs/sphinx/rest_substitutions/snippets/python/converted/wx.functions.Kill.2.py similarity index 100% rename from docs/sphinx/rest_substitutions/snippets/python/converted/functions.Kill.2.py rename to docs/sphinx/rest_substitutions/snippets/python/converted/wx.functions.Kill.2.py diff --git a/docs/sphinx/rest_substitutions/snippets/python/converted/functions.MessageBox.1.py b/docs/sphinx/rest_substitutions/snippets/python/converted/wx.functions.MessageBox.1.py similarity index 100% rename from docs/sphinx/rest_substitutions/snippets/python/converted/functions.MessageBox.1.py rename to docs/sphinx/rest_substitutions/snippets/python/converted/wx.functions.MessageBox.1.py diff --git a/docs/sphinx/rest_substitutions/snippets/python/converted/grid.Grid.GetCellSize.1.py b/docs/sphinx/rest_substitutions/snippets/python/converted/wx.grid.Grid.GetCellSize.1.py similarity index 100% rename from docs/sphinx/rest_substitutions/snippets/python/converted/grid.Grid.GetCellSize.1.py rename to docs/sphinx/rest_substitutions/snippets/python/converted/wx.grid.Grid.GetCellSize.1.py diff --git a/docs/sphinx/rest_substitutions/snippets/python/converted/grid.Grid.GetCellSize.2.py b/docs/sphinx/rest_substitutions/snippets/python/converted/wx.grid.Grid.GetCellSize.2.py similarity index 100% rename from docs/sphinx/rest_substitutions/snippets/python/converted/grid.Grid.GetCellSize.2.py rename to docs/sphinx/rest_substitutions/snippets/python/converted/wx.grid.Grid.GetCellSize.2.py diff --git a/docs/sphinx/rest_substitutions/snippets/python/converted/grid.Grid.GetRowGridLinePen.1.py b/docs/sphinx/rest_substitutions/snippets/python/converted/wx.grid.Grid.GetRowGridLinePen.1.py similarity index 100% rename from docs/sphinx/rest_substitutions/snippets/python/converted/grid.Grid.GetRowGridLinePen.1.py rename to docs/sphinx/rest_substitutions/snippets/python/converted/wx.grid.Grid.GetRowGridLinePen.1.py diff --git a/docs/sphinx/rest_substitutions/snippets/python/converted/grid.GridCellAttr.GetNonDefaultAlignment.1.py b/docs/sphinx/rest_substitutions/snippets/python/converted/wx.grid.GridCellAttr.GetNonDefaultAlignment.1.py similarity index 100% rename from docs/sphinx/rest_substitutions/snippets/python/converted/grid.GridCellAttr.GetNonDefaultAlignment.1.py rename to docs/sphinx/rest_substitutions/snippets/python/converted/wx.grid.GridCellAttr.GetNonDefaultAlignment.1.py diff --git a/docs/sphinx/rest_substitutions/snippets/python/converted/grid.GridUpdateLocker.1.py b/docs/sphinx/rest_substitutions/snippets/python/converted/wx.grid.GridUpdateLocker.1.py similarity index 100% rename from docs/sphinx/rest_substitutions/snippets/python/converted/grid.GridUpdateLocker.1.py rename to docs/sphinx/rest_substitutions/snippets/python/converted/wx.grid.GridUpdateLocker.1.py diff --git a/docs/sphinx/rest_substitutions/snippets/python/converted/html.HtmlCell.AdjustPagebreak.1.py b/docs/sphinx/rest_substitutions/snippets/python/converted/wx.html.HtmlCell.AdjustPagebreak.1.py similarity index 100% rename from docs/sphinx/rest_substitutions/snippets/python/converted/html.HtmlCell.AdjustPagebreak.1.py rename to docs/sphinx/rest_substitutions/snippets/python/converted/wx.html.HtmlCell.AdjustPagebreak.1.py diff --git a/docs/sphinx/rest_substitutions/snippets/python/converted/html.HtmlCell.Draw.1.py b/docs/sphinx/rest_substitutions/snippets/python/converted/wx.html.HtmlCell.Draw.1.py similarity index 100% rename from docs/sphinx/rest_substitutions/snippets/python/converted/html.HtmlCell.Draw.1.py rename to docs/sphinx/rest_substitutions/snippets/python/converted/wx.html.HtmlCell.Draw.1.py diff --git a/docs/sphinx/rest_substitutions/snippets/python/converted/html.HtmlCell.DrawInvisible.1.py b/docs/sphinx/rest_substitutions/snippets/python/converted/wx.html.HtmlCell.DrawInvisible.1.py similarity index 100% rename from docs/sphinx/rest_substitutions/snippets/python/converted/html.HtmlCell.DrawInvisible.1.py rename to docs/sphinx/rest_substitutions/snippets/python/converted/wx.html.HtmlCell.DrawInvisible.1.py diff --git a/docs/sphinx/rest_substitutions/snippets/python/converted/html.HtmlContainerCell.SetWidthFloat.1.py b/docs/sphinx/rest_substitutions/snippets/python/converted/wx.html.HtmlContainerCell.SetWidthFloat.1.py similarity index 100% rename from docs/sphinx/rest_substitutions/snippets/python/converted/html.HtmlContainerCell.SetWidthFloat.1.py rename to docs/sphinx/rest_substitutions/snippets/python/converted/wx.html.HtmlContainerCell.SetWidthFloat.1.py diff --git a/docs/sphinx/rest_substitutions/snippets/python/converted/html.HtmlContainerCell.SetWidthFloat.2.py b/docs/sphinx/rest_substitutions/snippets/python/converted/wx.html.HtmlContainerCell.SetWidthFloat.2.py similarity index 100% rename from docs/sphinx/rest_substitutions/snippets/python/converted/html.HtmlContainerCell.SetWidthFloat.2.py rename to docs/sphinx/rest_substitutions/snippets/python/converted/wx.html.HtmlContainerCell.SetWidthFloat.2.py diff --git a/docs/sphinx/rest_substitutions/snippets/python/converted/html.HtmlFilter.CanRead.1.py b/docs/sphinx/rest_substitutions/snippets/python/converted/wx.html.HtmlFilter.CanRead.1.py similarity index 100% rename from docs/sphinx/rest_substitutions/snippets/python/converted/html.HtmlFilter.CanRead.1.py rename to docs/sphinx/rest_substitutions/snippets/python/converted/wx.html.HtmlFilter.CanRead.1.py diff --git a/docs/sphinx/rest_substitutions/snippets/python/converted/html.HtmlFilter.ReadFile.1.py b/docs/sphinx/rest_substitutions/snippets/python/converted/wx.html.HtmlFilter.ReadFile.1.py similarity index 100% rename from docs/sphinx/rest_substitutions/snippets/python/converted/html.HtmlFilter.ReadFile.1.py rename to docs/sphinx/rest_substitutions/snippets/python/converted/wx.html.HtmlFilter.ReadFile.1.py diff --git a/docs/sphinx/rest_substitutions/snippets/python/converted/html.HtmlHelpController.AddBook.1.py b/docs/sphinx/rest_substitutions/snippets/python/converted/wx.html.HtmlHelpController.AddBook.1.py similarity index 100% rename from docs/sphinx/rest_substitutions/snippets/python/converted/html.HtmlHelpController.AddBook.1.py rename to docs/sphinx/rest_substitutions/snippets/python/converted/wx.html.HtmlHelpController.AddBook.1.py diff --git a/docs/sphinx/rest_substitutions/snippets/python/converted/html.HtmlHelpController.AddBook.2.py b/docs/sphinx/rest_substitutions/snippets/python/converted/wx.html.HtmlHelpController.AddBook.2.py similarity index 100% rename from docs/sphinx/rest_substitutions/snippets/python/converted/html.HtmlHelpController.AddBook.2.py rename to docs/sphinx/rest_substitutions/snippets/python/converted/wx.html.HtmlHelpController.AddBook.2.py diff --git a/docs/sphinx/rest_substitutions/snippets/python/converted/html.HtmlHelpWindow.1.py b/docs/sphinx/rest_substitutions/snippets/python/converted/wx.html.HtmlHelpWindow.1.py similarity index 100% rename from docs/sphinx/rest_substitutions/snippets/python/converted/html.HtmlHelpWindow.1.py rename to docs/sphinx/rest_substitutions/snippets/python/converted/wx.html.HtmlHelpWindow.1.py diff --git a/docs/sphinx/rest_substitutions/snippets/python/converted/html.HtmlModalHelp.1.py b/docs/sphinx/rest_substitutions/snippets/python/converted/wx.html.HtmlModalHelp.1.py similarity index 100% rename from docs/sphinx/rest_substitutions/snippets/python/converted/html.HtmlModalHelp.1.py rename to docs/sphinx/rest_substitutions/snippets/python/converted/wx.html.HtmlModalHelp.1.py diff --git a/docs/sphinx/rest_substitutions/snippets/python/converted/html.HtmlParser.GetFS.1.py b/docs/sphinx/rest_substitutions/snippets/python/converted/wx.html.HtmlParser.GetFS.1.py similarity index 100% rename from docs/sphinx/rest_substitutions/snippets/python/converted/html.HtmlParser.GetFS.1.py rename to docs/sphinx/rest_substitutions/snippets/python/converted/wx.html.HtmlParser.GetFS.1.py diff --git a/docs/sphinx/rest_substitutions/snippets/python/converted/html.HtmlParser.PushTagHandler.1.py b/docs/sphinx/rest_substitutions/snippets/python/converted/wx.html.HtmlParser.PushTagHandler.1.py similarity index 100% rename from docs/sphinx/rest_substitutions/snippets/python/converted/html.HtmlParser.PushTagHandler.1.py rename to docs/sphinx/rest_substitutions/snippets/python/converted/wx.html.HtmlParser.PushTagHandler.1.py diff --git a/docs/sphinx/rest_substitutions/snippets/python/converted/html.HtmlTag.GetBeginPos.1.py b/docs/sphinx/rest_substitutions/snippets/python/converted/wx.html.HtmlTag.GetBeginPos.1.py similarity index 100% rename from docs/sphinx/rest_substitutions/snippets/python/converted/html.HtmlTag.GetBeginPos.1.py rename to docs/sphinx/rest_substitutions/snippets/python/converted/wx.html.HtmlTag.GetBeginPos.1.py diff --git a/docs/sphinx/rest_substitutions/snippets/python/converted/html.HtmlTag.GetEndPos1.1.py b/docs/sphinx/rest_substitutions/snippets/python/converted/wx.html.HtmlTag.GetEndPos1.1.py similarity index 100% rename from docs/sphinx/rest_substitutions/snippets/python/converted/html.HtmlTag.GetEndPos1.1.py rename to docs/sphinx/rest_substitutions/snippets/python/converted/wx.html.HtmlTag.GetEndPos1.1.py diff --git a/docs/sphinx/rest_substitutions/snippets/python/converted/html.HtmlTag.GetEndPos2.1.py b/docs/sphinx/rest_substitutions/snippets/python/converted/wx.html.HtmlTag.GetEndPos2.1.py similarity index 100% rename from docs/sphinx/rest_substitutions/snippets/python/converted/html.HtmlTag.GetEndPos2.1.py rename to docs/sphinx/rest_substitutions/snippets/python/converted/wx.html.HtmlTag.GetEndPos2.1.py diff --git a/docs/sphinx/rest_substitutions/snippets/python/converted/html.HtmlTag.GetParam.1.py b/docs/sphinx/rest_substitutions/snippets/python/converted/wx.html.HtmlTag.GetParam.1.py similarity index 100% rename from docs/sphinx/rest_substitutions/snippets/python/converted/html.HtmlTag.GetParam.1.py rename to docs/sphinx/rest_substitutions/snippets/python/converted/wx.html.HtmlTag.GetParam.1.py diff --git a/docs/sphinx/rest_substitutions/snippets/python/converted/html.HtmlTag.HasEnding.1.py b/docs/sphinx/rest_substitutions/snippets/python/converted/wx.html.HtmlTag.HasEnding.1.py similarity index 100% rename from docs/sphinx/rest_substitutions/snippets/python/converted/html.HtmlTag.HasEnding.1.py rename to docs/sphinx/rest_substitutions/snippets/python/converted/wx.html.HtmlTag.HasEnding.1.py diff --git a/docs/sphinx/rest_substitutions/snippets/python/converted/html.HtmlTagHandler.HandleTag.1.py b/docs/sphinx/rest_substitutions/snippets/python/converted/wx.html.HtmlTagHandler.HandleTag.1.py similarity index 100% rename from docs/sphinx/rest_substitutions/snippets/python/converted/html.HtmlTagHandler.HandleTag.1.py rename to docs/sphinx/rest_substitutions/snippets/python/converted/wx.html.HtmlTagHandler.HandleTag.1.py diff --git a/docs/sphinx/rest_substitutions/snippets/python/converted/html.HtmlTagHandler.ParseInner.1.py b/docs/sphinx/rest_substitutions/snippets/python/converted/wx.html.HtmlTagHandler.ParseInner.1.py similarity index 100% rename from docs/sphinx/rest_substitutions/snippets/python/converted/html.HtmlTagHandler.ParseInner.1.py rename to docs/sphinx/rest_substitutions/snippets/python/converted/wx.html.HtmlTagHandler.ParseInner.1.py diff --git a/docs/sphinx/rest_substitutions/snippets/python/converted/html.HtmlWinParser.GetContainer.1.py b/docs/sphinx/rest_substitutions/snippets/python/converted/wx.html.HtmlWinParser.GetContainer.1.py similarity index 100% rename from docs/sphinx/rest_substitutions/snippets/python/converted/html.HtmlWinParser.GetContainer.1.py rename to docs/sphinx/rest_substitutions/snippets/python/converted/wx.html.HtmlWinParser.GetContainer.1.py diff --git a/docs/sphinx/rest_substitutions/snippets/python/converted/html.HtmlWindow.SetPage.1.py b/docs/sphinx/rest_substitutions/snippets/python/converted/wx.html.HtmlWindow.SetPage.1.py similarity index 100% rename from docs/sphinx/rest_substitutions/snippets/python/converted/html.HtmlWindow.SetPage.1.py rename to docs/sphinx/rest_substitutions/snippets/python/converted/wx.html.HtmlWindow.SetPage.1.py diff --git a/docs/sphinx/rest_substitutions/snippets/python/converted/richtext.RichTextEvent.Clone.1.py b/docs/sphinx/rest_substitutions/snippets/python/converted/wx.richtext.RichTextEvent.Clone.1.py similarity index 100% rename from docs/sphinx/rest_substitutions/snippets/python/converted/richtext.RichTextEvent.Clone.1.py rename to docs/sphinx/rest_substitutions/snippets/python/converted/wx.richtext.RichTextEvent.Clone.1.py diff --git a/docs/sphinx/rest_substitutions/snippets/python/converted/richtext.RichTextHTMLHandler.SetFontSizeMapping.1.py b/docs/sphinx/rest_substitutions/snippets/python/converted/wx.richtext.RichTextHTMLHandler.SetFontSizeMapping.1.py similarity index 100% rename from docs/sphinx/rest_substitutions/snippets/python/converted/richtext.RichTextHTMLHandler.SetFontSizeMapping.1.py rename to docs/sphinx/rest_substitutions/snippets/python/converted/wx.richtext.RichTextHTMLHandler.SetFontSizeMapping.1.py diff --git a/docs/sphinx/rest_substitutions/snippets/python/converted/richtext.SymbolPickerDialog.1.py b/docs/sphinx/rest_substitutions/snippets/python/converted/wx.richtext.SymbolPickerDialog.1.py similarity index 100% rename from docs/sphinx/rest_substitutions/snippets/python/converted/richtext.SymbolPickerDialog.1.py rename to docs/sphinx/rest_substitutions/snippets/python/converted/wx.richtext.SymbolPickerDialog.1.py diff --git a/docs/sphinx/rest_substitutions/snippets/python/converted/stc.StyledTextCtrl.GetInsertionPoint.1.py b/docs/sphinx/rest_substitutions/snippets/python/converted/wx.stc.StyledTextCtrl.GetInsertionPoint.1.py similarity index 100% rename from docs/sphinx/rest_substitutions/snippets/python/converted/stc.StyledTextCtrl.GetInsertionPoint.1.py rename to docs/sphinx/rest_substitutions/snippets/python/converted/wx.stc.StyledTextCtrl.GetInsertionPoint.1.py diff --git a/docs/sphinx/rest_substitutions/snippets/python/converted/xml.XmlDocument.1.py b/docs/sphinx/rest_substitutions/snippets/python/converted/wx.xml.XmlDocument.1.py similarity index 100% rename from docs/sphinx/rest_substitutions/snippets/python/converted/xml.XmlDocument.1.py rename to docs/sphinx/rest_substitutions/snippets/python/converted/wx.xml.XmlDocument.1.py diff --git a/docs/sphinx/rest_substitutions/snippets/python/converted/xml.XmlDocument.2.py b/docs/sphinx/rest_substitutions/snippets/python/converted/wx.xml.XmlDocument.2.py similarity index 100% rename from docs/sphinx/rest_substitutions/snippets/python/converted/xml.XmlDocument.2.py rename to docs/sphinx/rest_substitutions/snippets/python/converted/wx.xml.XmlDocument.2.py diff --git a/docs/sphinx/rest_substitutions/snippets/python/converted/xml.XmlDocument.3.py b/docs/sphinx/rest_substitutions/snippets/python/converted/wx.xml.XmlDocument.3.py similarity index 100% rename from docs/sphinx/rest_substitutions/snippets/python/converted/xml.XmlDocument.3.py rename to docs/sphinx/rest_substitutions/snippets/python/converted/wx.xml.XmlDocument.3.py diff --git a/docs/sphinx/rest_substitutions/snippets/python/converted/xml.XmlNode.GetNodeContent.1.py b/docs/sphinx/rest_substitutions/snippets/python/converted/wx.xml.XmlNode.GetNodeContent.1.py similarity index 100% rename from docs/sphinx/rest_substitutions/snippets/python/converted/xml.XmlNode.GetNodeContent.1.py rename to docs/sphinx/rest_substitutions/snippets/python/converted/wx.xml.XmlNode.GetNodeContent.1.py diff --git a/docs/sphinx/rest_substitutions/snippets/python/converted/xml.XmlNode.GetNodeContent.2.py b/docs/sphinx/rest_substitutions/snippets/python/converted/wx.xml.XmlNode.GetNodeContent.2.py similarity index 100% rename from docs/sphinx/rest_substitutions/snippets/python/converted/xml.XmlNode.GetNodeContent.2.py rename to docs/sphinx/rest_substitutions/snippets/python/converted/wx.xml.XmlNode.GetNodeContent.2.py diff --git a/docs/sphinx/rest_substitutions/snippets/python/converted/xrc.XmlResource.Load.1.py b/docs/sphinx/rest_substitutions/snippets/python/converted/wx.xrc.XmlResource.Load.1.py similarity index 100% rename from docs/sphinx/rest_substitutions/snippets/python/converted/xrc.XmlResource.Load.1.py rename to docs/sphinx/rest_substitutions/snippets/python/converted/wx.xrc.XmlResource.Load.1.py diff --git a/docs/sphinx/rest_substitutions/snippets/python/converted/xrc.XmlResource.LoadDialog.1.py b/docs/sphinx/rest_substitutions/snippets/python/converted/wx.xrc.XmlResource.LoadDialog.1.py similarity index 100% rename from docs/sphinx/rest_substitutions/snippets/python/converted/xrc.XmlResource.LoadDialog.1.py rename to docs/sphinx/rest_substitutions/snippets/python/converted/wx.xrc.XmlResource.LoadDialog.1.py From c473965e6a05ecc17f3aff20643ad51628d780ca Mon Sep 17 00:00:00 2001 From: Robin Dunn Date: Wed, 18 May 2016 16:39:38 -0700 Subject: [PATCH 05/96] Use the new names for the module index files --- docs/sphinx/_templates/main.html | 36 ++++++++++++++++---------------- 1 file changed, 18 insertions(+), 18 deletions(-) diff --git a/docs/sphinx/_templates/main.html b/docs/sphinx/_templates/main.html index 5a6bf309..557efb7f 100644 --- a/docs/sphinx/_templates/main.html +++ b/docs/sphinx/_templates/main.html @@ -50,57 +50,57 @@ From 97bcad804fdd9a9dcf5a117d62802820bddd94e0 Mon Sep 17 00:00:00 2001 From: Robin Dunn Date: Wed, 18 May 2016 21:39:21 -0700 Subject: [PATCH 06/96] refactor reading and writing data to pickle files --- sphinxtools/librarydescription.py | 17 ++----- sphinxtools/modulehunter.py | 19 +++----- sphinxtools/postprocess.py | 21 ++++----- sphinxtools/utilities.py | 73 +++++++++++++++++-------------- 4 files changed, 58 insertions(+), 72 deletions(-) diff --git a/sphinxtools/librarydescription.py b/sphinxtools/librarydescription.py index f43d99f3..63c5d3c7 100644 --- a/sphinxtools/librarydescription.py +++ b/sphinxtools/librarydescription.py @@ -12,7 +12,7 @@ else: from inspect import getmro, getclasstree, getdoc, getcomments -from .utilities import MakeSummary, ChopDescription, WriteSphinxOutput +from .utilities import MakeSummary, ChopDescription, WriteSphinxOutput, PickleFile from .utilities import FindControlImages, FormatExternalLink, IsPython3 from .constants import object_types, MODULE_TO_ICON, DOXY_2_REST, SPHINXROOT from . import templates @@ -521,25 +521,14 @@ class Library(ParentBase): def Save(self): - ParentBase.Save(self) class_dict = {} class_dict = self.ClassesToPickle(self, class_dict) pickle_file = os.path.join(SPHINXROOT, 'class_summary.lst') - - if os.path.isfile(pickle_file): - fid = open(pickle_file, 'rb') - items = pickle.load(fid) - fid.close() - else: - items = {} - - items.update(class_dict) - fid = open(pickle_file, 'wb') - pickle.dump(items, fid) - fid.close() + with PickleFile(pickle_file) as pf: + pf.items.update(class_dict) class Module(ParentBase): diff --git a/sphinxtools/modulehunter.py b/sphinxtools/modulehunter.py index 56f63f6c..b922289b 100644 --- a/sphinxtools/modulehunter.py +++ b/sphinxtools/modulehunter.py @@ -29,7 +29,7 @@ from .librarydescription import Method, Property, Attribute from . import inheritance -from .utilities import IsPython3 +from .utilities import IsPython3, PickleFile from .constants import object_types, EXCLUDED_ATTRS, MODULE_TO_ICON from .constants import CONSTANT_RE @@ -582,13 +582,11 @@ def ToRest(import_name): sphinxDir = os.path.join(phoenixDir(), 'docs', 'sphinx') pickle_file = os.path.join(sphinxDir, 'wx%s.pkl'%import_name) - fid = open(pickle_file, 'rb') - library_class = pickle.load(fid) - fid.close() + pf = PickleFile(pickle_file) + library_class = pf.read() - fid = open(os.path.join(sphinxDir, 'class_summary.lst'), 'rb') - class_summary = pickle.load(fid) - fid.close() + pf = PickleFile(os.path.join(sphinxDir, 'class_summary.lst')) + class_summary = pf.read() library_class.Walk(library_class, class_summary) @@ -602,8 +600,6 @@ def ModuleHunter(init_name, import_name, version): ToRest(import_name) return - path = list(sys.path) - directory, module_name = os.path.split(init_name) path = list(sys.path) @@ -660,9 +656,8 @@ def ModuleHunter(init_name, import_name, version): sys.path[:] = path # restore - fid = open(pickle_file, 'wb') - pickle.dump(library_class, fid) - fid.close() + pf = PickleFile(pickle_file) + pf.write(library_class) ToRest(import_name) diff --git a/sphinxtools/postprocess.py b/sphinxtools/postprocess.py index 0d213945..c5bf9c3c 100644 --- a/sphinxtools/postprocess.py +++ b/sphinxtools/postprocess.py @@ -26,7 +26,7 @@ else: from buildtools.config import copyIfNewer, writeIfChanged, newer, getVcsRev, textfile_open from . import templates -from .utilities import Wx2Sphinx +from .utilities import Wx2Sphinx, PickleFile from .constants import HTML_REPLACE, TODAY, SPHINXROOT, SECTIONS_EXCLUDE from .constants import CONSTANT_INSTANCES, WIDGETS_IMAGES_ROOT, SPHINX_IMAGES_ROOT @@ -100,9 +100,8 @@ def BuildEnumsAndMethods(sphinxDir): 4. Some cleanup. """ - fid = open(os.path.join(sphinxDir, 'class_summary.lst'), 'rb') - class_summary = pickle.load(fid) - fid.close() + pf = PickleFile(os.path.join(sphinxDir, 'class_summary.lst')) + class_summary = pf.read() unreferenced_classes = {} @@ -365,10 +364,9 @@ def ReformatFunctions(file): if not newer(file, text_file): return - fid = open(file, 'rb') - functions = pickle.load(fid) - fid.close() - + pf = PickleFile(file) + functions = pf.read() + if local_file.count('.') == 1: # Core functions label = 'Core' @@ -420,11 +418,8 @@ def MakeClassIndex(sphinxDir, file): if not newer(file, text_file): return - fid = open(file, 'rb') - classes = pickle.load(fid) - fid.close() - - if local_file.count('.') == 1: + pf = PickleFile(file) + classes = pf.read() # Core functions label = 'Core' module = '' diff --git a/sphinxtools/utilities.py b/sphinxtools/utilities.py index 03d872dc..885cdb92 100644 --- a/sphinxtools/utilities.py +++ b/sphinxtools/utilities.py @@ -578,12 +578,10 @@ def WriteSphinxOutput(stream, filename, append=False): text = stream.getvalue() mode = 'a' if append else 'w' - fid = codecs.open(text_file, mode, encoding='utf-8') - if mode == 'w': - fid.write('.. include:: headings.inc\n\n') - - fid.write(text) - fid.close() + with codecs.open(text_file, mode, encoding='utf-8') as fid: + if mode == 'w': + fid.write('.. include:: headings.inc\n\n') + fid.write(text) # ----------------------------------------------------------------------- # @@ -614,6 +612,35 @@ def ChopDescription(text): # ----------------------------------------------------------------------- # +class PickleFile(object): + """ + A class to help simplify loading and saving data to pickle files. + """ + def __init__(self, fileName): + self.fileName = fileName + + def __enter__(self): + self.read() + return self + + def __exit__(self, exc_type, exc_val, exc_tb): + self.write(self.items) + + def read(self): + if os.path.isfile(self.fileName): + with open(self.fileName, 'rb') as fid: + items = pickle.load(fid) + else: + items = {} + self.items = items + return items + + def write(self, items): + with open(self.fileName, 'wb') as fid: + pickle.dump(items, fid) + +# ----------------------------------------------------------------------- # + def PickleItem(description, current_module, name, kind): """ This function pickles/unpickles a dictionary containing class names as keys @@ -635,18 +662,9 @@ def PickleItem(description, current_module, name, kind): pickle_file = os.path.join(SPHINXROOT, current_module + 'functions.pkl') else: pickle_file = os.path.join(SPHINXROOT, current_module + '1classindex.pkl') - - if os.path.isfile(pickle_file): - fid = open(pickle_file, 'rb') - items = pickle.load(fid) - fid.close() - else: - items = {} - items[name] = description - fid = open(pickle_file, 'wb') - pickle.dump(items, fid) - fid.close() + with PickleFile(pickle_file) as pf: + pf.items[name] = description # ----------------------------------------------------------------------- # @@ -661,15 +679,6 @@ def PickleClassInfo(class_name, element, short_description): :param string `short_description`: the class short description (if any). """ - pickle_file = os.path.join(SPHINXROOT, 'class_summary.lst') - - if os.path.isfile(pickle_file): - fid = open(pickle_file, 'rb') - items = pickle.load(fid) - fid.close() - else: - items = {} - method_list, bases = [], [] for method, description in element.method_list: method_list.append(method) @@ -677,10 +686,9 @@ def PickleClassInfo(class_name, element, short_description): for base in element.bases: bases.append(Wx2Sphinx(base)[1]) - items[class_name] = (method_list, bases, short_description) - fid = open(pickle_file, 'wb') - pickle.dump(items, fid) - fid.close() + pickle_file = os.path.join(SPHINXROOT, 'class_summary.lst') + with PickleFile(pickle_file) as pf: + pf.items[class_name] = (method_list, bases, short_description) # ----------------------------------------------------------------------- # @@ -786,9 +794,8 @@ def FormatContributedSnippets(kind, contrib_snippets): text = '\n' + spacer + '|contributed| **Contributed Examples:**\n\n' for indx, snippet in enumerate(contrib_snippets): - fid = open(snippet, 'rt') - lines = fid.readlines() - fid.close() + with open(snippet, 'rt') as fid: + lines = fid.readlines() user = lines[0].replace('##', '').strip() onlyfile = os.path.split(snippet)[1] From 240daf555486c38d34e94522c5a8b410908e8829 Mon Sep 17 00:00:00 2001 From: Robin Dunn Date: Thu, 19 May 2016 14:50:04 -0700 Subject: [PATCH 07/96] Add a simple docstring for all of the main modules --- build.py | 1 + etg/_adv.py | 10 +++++++--- etg/_core.py | 8 ++++++-- etg/_dataview.py | 8 ++++++-- etg/_glcanvas.py | 7 ++++--- etg/_grid.py | 8 ++++++-- etg/_html.py | 11 ++++++++--- etg/_html2.py | 13 ++++++++++--- etg/_media.py | 10 +++++++--- etg/_msw.py | 4 +++- etg/_richtext.py | 8 +++++--- etg/_stc.py | 9 ++++++--- etg/_webkit.py | 10 +++++++--- etg/_xml.py | 7 ++++--- etg/_xrc.py | 9 +++++---- 15 files changed, 85 insertions(+), 38 deletions(-) diff --git a/build.py b/build.py index 73ffb3d4..de1909da 100755 --- a/build.py +++ b/build.py @@ -863,6 +863,7 @@ def cmd_etg(options, args): def cmd_sphinx(options, args): + from buildtools import mydbstub from sphinxtools.postprocess import SphinxIndexes, MakeHeadings, PostProcess, GenGallery cmdTimer = CommandTimer('sphinx') diff --git a/etg/_adv.py b/etg/_adv.py index d4836bcd..4ffc5b33 100644 --- a/etg/_adv.py +++ b/etg/_adv.py @@ -3,18 +3,22 @@ # Author: Robin Dunn # # Created: 22-Mar-2012 -# Copyright: (c) 2013 by Total Control Software +# Copyright: (c) 2012-2016 by Total Control Software # License: wxWindows License #--------------------------------------------------------------------------- import etgtools import etgtools.tweaker_tools as tools -from etgtools import PyFunctionDef, PyCodeDef, PyPropertyDef PACKAGE = "wx" MODULE = "_adv" NAME = "_adv" # Base name of the file to generate to for this script -DOCSTRING = "" +DOCSTRING = """\ +The ``wx.adv`` module contains classes which are more advanced and/or less +commonly used than those in the core namespace. They are provided in a +separate module to help reduce overhead and dependencies for those +applications which do not need any of these classes. +""" # The classes and/or the basename of the Doxygen XML files to be processed by # this script. diff --git a/etg/_core.py b/etg/_core.py index 4a570dfe..7db7578e 100644 --- a/etg/_core.py +++ b/etg/_core.py @@ -3,7 +3,7 @@ # Author: Robin Dunn # # Created: 8-Nov-2010 -# Copyright: (c) 2013 by Total Control Software +# Copyright: (c) 2010-2016 by Total Control Software # License: wxWindows License #--------------------------------------------------------------------------- @@ -14,7 +14,11 @@ from etgtools import PyFunctionDef, PyCodeDef, PyPropertyDef PACKAGE = "wx" MODULE = "_core" NAME = "_core" # Base name of the file to generate to for this script -DOCSTRING = "" +DOCSTRING = """\ +The classes in this module are the most commonly used classes for wxPython, +which is why they have been made visible in the core ``wx`` namespace. +Everything you need for building typical GUI applications is here. +""" # The classes and/or the basename of the Doxygen XML files to be processed by # this script. diff --git a/etg/_dataview.py b/etg/_dataview.py index c7cf6e8e..a70c41b2 100644 --- a/etg/_dataview.py +++ b/etg/_dataview.py @@ -3,7 +3,7 @@ # Author: Kevin Ollivier # # Created: 12-Sept-2011 -# Copyright: (c) 2013 by Kevin Ollivier +# Copyright: (c) 2011-2016 by Kevin Ollivier # License: wxWindows License #--------------------------------------------------------------------------- @@ -13,7 +13,11 @@ import etgtools.tweaker_tools as tools PACKAGE = "wx" MODULE = "_dataview" NAME = "_dataview" # Base name of the file to generate to for this script -DOCSTRING = "" +DOCSTRING = """\ +The classes in this module provide views and data models for viewing tabular +or hierarchical data in a more advanced way than what is provided by classes +such as :ref:`wx.ListCtrl`, :ref:`wx.TreeCtrl`, etc. +""" # The classes and/or the basename of the Doxygen XML files to be processed by # this script. diff --git a/etg/_glcanvas.py b/etg/_glcanvas.py index 54b113b9..b85c82d4 100644 --- a/etg/_glcanvas.py +++ b/etg/_glcanvas.py @@ -3,18 +3,19 @@ # Author: Robin Dunn # # Created: 3-Nov-2012 -# Copyright: (c) 2013 by Total Control Software +# Copyright: (c) 2012-2016 by Total Control Software # License: wxWindows License #--------------------------------------------------------------------------- import etgtools import etgtools.tweaker_tools as tools -from etgtools import PyFunctionDef, PyCodeDef, PyPropertyDef PACKAGE = "wx" MODULE = "_glcanvas" NAME = "_glcanvas" # Base name of the file to generate to for this script -DOCSTRING = "" +DOCSTRING = """\ +These classes enable viewing and interacting with an OpenGL context in a wx.Window. +""" # The classes and/or the basename of the Doxygen XML files to be processed by # this script. diff --git a/etg/_grid.py b/etg/_grid.py index 0e9af160..0ba3e7b6 100644 --- a/etg/_grid.py +++ b/etg/_grid.py @@ -3,7 +3,7 @@ # Author: Robin Dunn # # Created: 20-Dec-2012 -# Copyright: (c) 2013 by Total Control Software +# Copyright: (c) 2012-2016 by Total Control Software # License: wxWindows License #--------------------------------------------------------------------------- @@ -13,7 +13,11 @@ import etgtools.tweaker_tools as tools PACKAGE = "wx" MODULE = "_grid" NAME = "_grid" # Base name of the file to generate to for this script -DOCSTRING = "" +DOCSTRING = """\ +The Grid and related classes in this module provide functionality similar to a +spreadsheet, where the application can display rows and columns of data of +various types, which the user can edit and otherwise interact with. +""" # The classes and/or the basename of the Doxygen XML files to be processed by # this script. diff --git a/etg/_html.py b/etg/_html.py index 65f65ab5..bbffe08a 100644 --- a/etg/_html.py +++ b/etg/_html.py @@ -3,18 +3,23 @@ # Author: Robin Dunn # # Created: 27-Oct-2012 -# Copyright: (c) 2013 by Total Control Software +# Copyright: (c) 2012-2016 by Total Control Software # License: wxWindows License #--------------------------------------------------------------------------- import etgtools import etgtools.tweaker_tools as tools -from etgtools import PyFunctionDef, PyCodeDef, PyPropertyDef PACKAGE = "wx" MODULE = "_html" NAME = "_html" # Base name of the file to generate to for this script -DOCSTRING = "" +DOCSTRING = """\ +This module contains a widget class and supporting classes for a generic HTML +renderer. It supports only a subset of the HTML standards, and no Javascript +or CSS, but it is relatively lightweight and has no platform dependencies. It +is suitable for displaying simple HTML documents, such as the application's +documentation or built-in help pages. +""" # The classes and/or the basename of the Doxygen XML files to be processed by # this script. diff --git a/etg/_html2.py b/etg/_html2.py index 27934fcd..99ec310b 100644 --- a/etg/_html2.py +++ b/etg/_html2.py @@ -3,18 +3,25 @@ # Author: Robin Dunn # # Created: 20-Nov-2012 -# Copyright: (c) 2013 by Total Control Software +# Copyright: (c) 2012-2016 by Total Control Software # License: wxWindows License #--------------------------------------------------------------------------- import etgtools import etgtools.tweaker_tools as tools -from etgtools import PyFunctionDef, PyCodeDef, PyPropertyDef + PACKAGE = "wx" MODULE = "_html2" NAME = "_html2" # Base name of the file to generate to for this script -DOCSTRING = "" +DOCSTRING = """\ +The ``wx.html2`` module includes a widget class and supporting classes that +wraps native browser components on the system, therefore providing a fully +featured HTML rendering component including the latest HTML, Javascript and +CSS standards. Since platform-specific back-ends are used (Microsoft Trident, +WebKit webView, etc.) there will be some difference in ability and behaviors, +but these classes will minimize those differences as much as possible. +""" # The classes and/or the basename of the Doxygen XML files to be processed by # this script. diff --git a/etg/_media.py b/etg/_media.py index fa99aa57..2e763bff 100644 --- a/etg/_media.py +++ b/etg/_media.py @@ -3,19 +3,23 @@ # Author: Dietmar Schwertberger # # Created: 13-Nov-2015 -# Copyright: (c) 2015 by Total Control Software +# Copyright: (c) 2015-2016 by Total Control Software # License: wxWindows License #--------------------------------------------------------------------------- import etgtools import etgtools.tweaker_tools as tools -from etgtools import PyFunctionDef, PyCodeDef, PyPropertyDef PACKAGE = "wx" MODULE = "_media" NAME = "_media" # Base name of the file to generate to for this script -DOCSTRING = "" +DOCSTRING = """\ +The ``wx.media`` module provides a widget class that allows displaying various +types of media, such as video and audio files and streaming, using native +system components. The wxWidgets media classes are an optional part of the +build so it may not always be available on your build of wxPython. +""" # The classes and/or the basename of the Doxygen XML files to be processed by # this script. diff --git a/etg/_msw.py b/etg/_msw.py index 6fee7bd6..794ccb16 100644 --- a/etg/_msw.py +++ b/etg/_msw.py @@ -13,7 +13,9 @@ import etgtools.tweaker_tools as tools PACKAGE = "wx" MODULE = "_msw" NAME = "_msw" # Base name of the file to generate to for this script -DOCSTRING = "" +DOCSTRING = """\ +This module contains a few classes that are only available on Windows. +""" # The classes and/or the basename of the Doxygen XML files to be processed by # this script. diff --git a/etg/_richtext.py b/etg/_richtext.py index 72e960c1..07b5e5fc 100644 --- a/etg/_richtext.py +++ b/etg/_richtext.py @@ -3,18 +3,20 @@ # Author: Robin Dunn # # Created: 27-Oct-2012 -# Copyright: (c) 2015 by Total Control Software +# Copyright: (c) 2012-2016 by Total Control Software # License: wxWindows License #--------------------------------------------------------------------------- import etgtools import etgtools.tweaker_tools as tools -from etgtools import PyFunctionDef, PyCodeDef, PyPropertyDef PACKAGE = "wx" MODULE = "_richtext" NAME = "_richtext" # Base name of the file to generate to for this script -DOCSTRING = "" +DOCSTRING = """\ +The ``RichTextCtrl`` is a generic, ground-up implementation of a rich text +control capable of showing multiple text styles and images. +""" # The classes and/or the basename of the Doxygen XML files to be processed by # this script. diff --git a/etg/_stc.py b/etg/_stc.py index c0544ece..b875b703 100644 --- a/etg/_stc.py +++ b/etg/_stc.py @@ -3,18 +3,21 @@ # Author: Robin Dunn # # Created: 24-Oct-2012 -# Copyright: (c) 2013 by Total Control Software +# Copyright: (c) 2012-2016 by Total Control Software # License: wxWindows License #--------------------------------------------------------------------------- import etgtools import etgtools.tweaker_tools as tools -from etgtools import PyFunctionDef, PyCodeDef, PyPropertyDef PACKAGE = "wx" MODULE = "_stc" NAME = "_stc" # Base name of the file to generate to for this script -DOCSTRING = "" +DOCSTRING = """\ +The :ref:`wx.stc.StyledTextCrtl` class provided by this module is a text widget +primarily intended for use as a syntax highlighting source code editor. It is +based on the popular Scintilla widget. +""" # The classes and/or the basename of the Doxygen XML files to be processed by # this script. diff --git a/etg/_webkit.py b/etg/_webkit.py index 8d4d5383..3f1481c0 100644 --- a/etg/_webkit.py +++ b/etg/_webkit.py @@ -3,18 +3,22 @@ # Author: Robin Dunn # # Created: 22-Aug-2013 -# Copyright: (c) 2013 by Total Control Software +# Copyright: (c) 2013-2016 by Total Control Software # License: wxWindows License #--------------------------------------------------------------------------- import etgtools import etgtools.tweaker_tools as tools -from etgtools import PyFunctionDef, PyCodeDef, PyPropertyDef PACKAGE = "wx" MODULE = "_webkit" NAME = "_webkit" # Base name of the file to generate to for this script -DOCSTRING = "" +DOCSTRING = """\ +The :ref:`wx.webkit.wxWebKitCtrl` and related classes are provided mainly for +backwards compatibility only. New code would be more future-proof by using the +``wx.html2`` module. The classes in this module are light wrappers around +the OSX WebKit control and is not implemented on any other platform. +""" # The classes and/or the basename of the Doxygen XML files to be processed by # this script. diff --git a/etg/_xml.py b/etg/_xml.py index 009b8189..d371f453 100644 --- a/etg/_xml.py +++ b/etg/_xml.py @@ -3,18 +3,19 @@ # Author: Robin Dunn # # Created: 28-Nov-2012 -# Copyright: (c) 2013 by Total Control Software +# Copyright: (c) 2012-2016 by Total Control Software # License: wxWindows License #--------------------------------------------------------------------------- import etgtools import etgtools.tweaker_tools as tools -from etgtools import PyFunctionDef, PyCodeDef, PyPropertyDef PACKAGE = "wx" MODULE = "_xml" NAME = "_xml" # Base name of the file to generate to for this script -DOCSTRING = "" +DOCSTRING = """\ +Some simple XML classes for use with XRC. +""" # The classes and/or the basename of the Doxygen XML files to be processed by # this script. diff --git a/etg/_xrc.py b/etg/_xrc.py index ad0f1e05..ff12fbe3 100644 --- a/etg/_xrc.py +++ b/etg/_xrc.py @@ -3,19 +3,20 @@ # Author: Robin Dunn # # Created: 28-Nov-2012 -# Copyright: (c) 2013 by Total Control Software +# Copyright: (c) 2012-2016 by Total Control Software # License: wxWindows License #--------------------------------------------------------------------------- import etgtools import etgtools.tweaker_tools as tools -from etgtools import PyFunctionDef, PyCodeDef, PyPropertyDef,\ - ClassDef, MethodDef, ParamDef +from etgtools import ClassDef, MethodDef, ParamDef PACKAGE = "wx" MODULE = "_xrc" NAME = "_xrc" # Base name of the file to generate to for this script -DOCSTRING = "" +DOCSTRING = """\ +The classes in this module enable loading widgets and layout from XML. +""" # The classes and/or the basename of the Doxygen XML files to be processed by # this script. From b4132cbaa0ea2238be6d2900912762acebef9a87 Mon Sep 17 00:00:00 2001 From: Robin Dunn Date: Thu, 19 May 2016 14:57:07 -0700 Subject: [PATCH 08/96] If we're processing a real[*] module grab and save the etg docstring. [*] A "real" module is defined by the etg scripts which include others, like wx._core, wx._adv, etc. These are the ones turned into the actual extension modules in the final parts of the build. --- etgtools/extractors.py | 1 + etgtools/sphinx_generator.py | 9 ++++++++- sphinxtools/constants.py | 3 ++- 3 files changed, 11 insertions(+), 2 deletions(-) diff --git a/etgtools/extractors.py b/etgtools/extractors.py index eb2d1b01..d9400a96 100644 --- a/etgtools/extractors.py +++ b/etgtools/extractors.py @@ -1311,6 +1311,7 @@ class ModuleDef(BaseDef): self.postInitializerCode = [] self.includes = [] self.imports = [] + self.isARealModule = (module == name) def parseCompleted(self): diff --git a/etgtools/sphinx_generator.py b/etgtools/sphinx_generator.py index bba9a381..9eb6eb60 100644 --- a/etgtools/sphinx_generator.py +++ b/etgtools/sphinx_generator.py @@ -52,12 +52,14 @@ from sphinxtools.utilities import ChopDescription, PythonizeType, Wx2Sphinx from sphinxtools.utilities import PickleClassInfo, IsNumeric from sphinxtools.utilities import Underscore2Capitals, CountSpaces from sphinxtools.utilities import FormatContributedSnippets +from sphinxtools.utilities import PickleFile from sphinxtools.constants import VERSION, REMOVED_LINKS, SECTIONS from sphinxtools.constants import MAGIC_METHODS, MODULENAME_REPLACE from sphinxtools.constants import IGNORE, NO_MODULE from sphinxtools.constants import SPHINXROOT, DOXYROOT from sphinxtools.constants import SNIPPETROOT, TABLEROOT, OVERVIEW_IMAGES_ROOT +from sphinxtools.constants import DOCSTRING_KEY # ----------------------------------------------------------------------- # @@ -2961,7 +2963,12 @@ class SphinxGenerator(generators.DocsGeneratorBase): extractors.PyFunctionDef : self.generatePyFunction, extractors.PyClassDef : self.generatePyClass, } - + + if module.isARealModule: + filename = os.path.join(SPHINXROOT, self.current_module+'1classindex.pkl') + with PickleFile(filename) as pf: + pf.items[DOCSTRING_KEY] = module.docstring + for item in module: if item.ignored: continue diff --git a/sphinxtools/constants.py b/sphinxtools/constants.py index 02a02ea1..9afef81a 100644 --- a/sphinxtools/constants.py +++ b/sphinxtools/constants.py @@ -82,7 +82,7 @@ MODULENAME_REPLACE = {'_core' : 'wx.', '_richtext': 'wx.richtext.', '_webkit' : 'wx.webkit.', '_media' : 'wx.media.', - '_msw' : 'wx.msw', + '_msw' : 'wx.msw.', } NO_MODULE = { @@ -189,6 +189,7 @@ WIDGETS_IMAGES_ROOT = os.path.join(SPHINXROOT, '_static', 'images', 'widgets', # Folder for the icons used for titles, sub-titles and so on for the Sphinx documentation SPHINX_IMAGES_ROOT = os.path.join(SPHINXROOT, '_static', 'images', 'sphinxdocs') +DOCSTRING_KEY = '__module_docstring' # The Doxygen root for the XML docstrings xmlsrcbase = 'docs/doxygen/out/xml' From 8051d899f03f28556cd720de17e7ab2654251547 Mon Sep 17 00:00:00 2001 From: Robin Dunn Date: Thu, 19 May 2016 20:41:46 -0700 Subject: [PATCH 09/96] typo --- etg/rawbmp.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/etg/rawbmp.py b/etg/rawbmp.py index ae66e6c1..f43ec4df 100644 --- a/etg/rawbmp.py +++ b/etg/rawbmp.py @@ -89,7 +89,7 @@ def addPixelDataBaseClass(module): briefDoc="Returns the distance between the start of one row to the start of the next row."), ]) - # TODO: Try to remember why I chose to do it this way instead of direclty + # TODO: Try to remember why I chose to do it this way instead of directly # returning an instance of the Iterator and giving it the methods needed # to be a Python iterator... From 1cf7503a82eba33b9d2e336e562961cced15862e Mon Sep 17 00:00:00 2001 From: Robin Dunn Date: Thu, 19 May 2016 20:42:20 -0700 Subject: [PATCH 10/96] clean *.pyi files too --- build.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build.py b/build.py index de1909da..a375355f 100755 --- a/build.py +++ b/build.py @@ -1477,7 +1477,7 @@ def cmd_clean_py(options, args): cfg = Config() deleteIfExists(getWafBuildBase()) files = list() - for wc in ['*.py', '*.pyc', '*.so', '*.dylib', '*.pyd', '*.pdb', '*.pi']: + for wc in ['*.py', '*.pyc', '*.so', '*.dylib', '*.pyd', '*.pdb', '*.pi', '*.pyi']: files += glob.glob(opj(cfg.PKGDIR, wc)) if isWindows: msw = getMSWSettings(options) From b6488bfb7c12d7c6e0464be44fb94dc46684a3f6 Mon Sep 17 00:00:00 2001 From: Robin Dunn Date: Thu, 19 May 2016 20:56:39 -0700 Subject: [PATCH 11/96] Put the module docstring in the .pi and .pyi files too --- etgtools/pi_generator.py | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/etgtools/pi_generator.py b/etgtools/pi_generator.py index 03aa6968..90036538 100644 --- a/etgtools/pi_generator.py +++ b/etgtools/pi_generator.py @@ -89,15 +89,17 @@ class PiWrapperGenerator(generators.WrapperGeneratorBase, FixWxPrefix): destFile_pi = destFile + '.pi' destFile_pyi = destFile + '.pyi' - def _checkAndWriteHeader(destFile, header): + def _checkAndWriteHeader(destFile, header, docstring): if not os.path.exists(destFile): # create the file and write the header f = textfile_open(destFile, 'wt') f.write(header) + if docstring: + f.write('\n"""\n%s"""\n' % docstring) f.close() - _checkAndWriteHeader(destFile_pi, header_pi) - _checkAndWriteHeader(destFile_pyi, header_pyi) + _checkAndWriteHeader(destFile_pi, header_pi, module.docstring) + _checkAndWriteHeader(destFile_pyi, header_pyi, module.docstring) self.writeSection(destFile_pi, module.name, stream.getvalue()) self.writeSection(destFile_pyi, module.name, stream.getvalue()) From 32c2c747eab633fb83d1eca6a35ff86c3d5c405e Mon Sep 17 00:00:00 2001 From: Robin Dunn Date: Thu, 19 May 2016 20:57:29 -0700 Subject: [PATCH 12/96] Remove debugger import --- build.py | 2 -- 1 file changed, 2 deletions(-) diff --git a/build.py b/build.py index a375355f..948f991c 100755 --- a/build.py +++ b/build.py @@ -863,7 +863,6 @@ def cmd_etg(options, args): def cmd_sphinx(options, args): - from buildtools import mydbstub from sphinxtools.postprocess import SphinxIndexes, MakeHeadings, PostProcess, GenGallery cmdTimer = CommandTimer('sphinx') @@ -1492,7 +1491,6 @@ def cmd_clean_py(options, args): cmd_clean_py(options, args) options.both = True - def cmd_clean_sphinx(options, args): cmdTimer = CommandTimer('clean_sphinx') From 760ebc0878e48d208e38516ea22103e1334bf6a9 Mon Sep 17 00:00:00 2001 From: Robin Dunn Date: Thu, 19 May 2016 20:59:02 -0700 Subject: [PATCH 13/96] Fix link for wx.msw index --- docs/sphinx/_templates/main.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/sphinx/_templates/main.html b/docs/sphinx/_templates/main.html index 557efb7f..f75b8e9e 100644 --- a/docs/sphinx/_templates/main.html +++ b/docs/sphinx/_templates/main.html @@ -94,7 +94,7 @@ - {%- endmacro %} diff --git a/docs/sphinx/_templates/searchbox.html b/docs/sphinx/_templates/searchbox.html new file mode 100644 index 00000000..e9c86019 --- /dev/null +++ b/docs/sphinx/_templates/searchbox.html @@ -0,0 +1,21 @@ +{# + basic/searchbox.html + ~~~~~~~~~~~~~~~~~~~~ + + Sphinx sidebar template: quick search box. + + :copyright: Copyright 2007-2016 by the Sphinx team, see AUTHORS. + :license: BSD, see LICENSE for details. +#} +{%- if pagename != "search" and builder != "singlehtml" %} + + +{%- endif %} diff --git a/docs/sphinx/_templates/sourcelink.html b/docs/sphinx/_templates/sourcelink.html new file mode 100644 index 00000000..2692973e --- /dev/null +++ b/docs/sphinx/_templates/sourcelink.html @@ -0,0 +1,15 @@ +{# + basic/sourcelink.html + ~~~~~~~~~~~~~~~~~~~~~ + + Sphinx sidebar template: "show source" link. + + :copyright: Copyright 2007-2016 by the Sphinx team, see AUTHORS. + :license: BSD, see LICENSE for details. +#} +{%- if show_source and has_source and sourcename %} + +{%- endif %} diff --git a/docs/sphinx/conf.py b/docs/sphinx/conf.py index 7954d654..931ce2c0 100644 --- a/docs/sphinx/conf.py +++ b/docs/sphinx/conf.py @@ -3,7 +3,8 @@ # Phoenix documentation build configuration file, created by # sphinx-quickstart on Mon Jun 22 09:32:57 2009. # -# This file is execfile()d with the current directory set to its containing dir. +# This file is execfile()d with the current directory set to its +# containing dir. # # Note that not all possible configuration values are present in this # autogenerated file. @@ -24,15 +25,17 @@ sys.path.append(os.path.abspath('..')) # Add any Sphinx extension module names here, as strings. They can be extensions # coming with Sphinx (named 'sphinx.ext.*') or your custom ones. -extensions = ['sphinx.ext.todo', 'sphinx.ext.autodoc', - 'sphinx.ext.autosummary', 'sphinx.ext.coverage', +extensions = ['sphinx.ext.todo', + 'sphinx.ext.autodoc', + 'sphinx.ext.autosummary', + 'sphinx.ext.coverage', 'availability'] # Add any paths that contain templates here, relative to this directory. templates_path = ['_templates'] -# The suffix of source filenames. -source_suffix = '.txt' +# The suffix(es) of source filenames. +source_suffix = ['.txt'] todo_include_todos = True todo_all_todos = True @@ -100,6 +103,8 @@ pygments_style = 'sphinx' # A list of ignored prefixes for module index sorting. #modindex_common_prefix = [] +# If true, keep warnings as "system message" paragraphs in the built documents. +#keep_warnings = False # -- Options for HTML output --------------------------------------------------- @@ -147,7 +152,15 @@ html_style = 'css/phoenix.css' #html_use_smartypants = True # Custom sidebar templates, maps document names to template names. -html_sidebars = {'index': 'indexsidebar.html'} +html_sidebars = { + 'index': ['indexsidebar.html'], # TODO: index page doesn't have a sidebar?? + 'main': ['searchbox.html'], + '**': ['localtoc.html', + #'relations.html', # Next/Prev in the sidebar, disabled for now + 'searchbox.html', + 'sourcelink.html', + ], +} # Additional templates that should be rendered to pages, maps page names to # template names. diff --git a/docs/sphinx/rest_substitutions/overviews/index.rst b/docs/sphinx/rest_substitutions/overviews/index.rst index 704b9439..658894d7 100644 --- a/docs/sphinx/rest_substitutions/overviews/index.rst +++ b/docs/sphinx/rest_substitutions/overviews/index.rst @@ -1,4 +1,4 @@ -.. wxPython Phoenix documentation master file, +.. wxPython Phoenix documentation Created: 9-Dec-2011 Copyright: (c) 2011-2016 by Total Control Software License: wxWindows License From 0e4d1f0e992ec0d2227511381df0d54a22a7c436 Mon Sep 17 00:00:00 2001 From: Robin Dunn Date: Sat, 11 Jun 2016 00:43:27 -0700 Subject: [PATCH 80/96] A couple more docs TODOs --- TODO.rst | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/TODO.rst b/TODO.rst index 3273e121..122dfb6b 100644 --- a/TODO.rst +++ b/TODO.rst @@ -99,8 +99,18 @@ to be untangled: * Turn off full justification of text? - * Set max width of body sections? I think it looks nice, but we'll need to - fix the floating and alignment of the sidebar to do it... + * Set max width of body sections? I think it looks a little nicer that way, + but we'll need to fix the floating and alignment of the sidebar to do + it... + + * Change the column widths of the ReST simple tables, to be about 30/70 instead + of 50/50. This can be done by changing how many '=' are generated for the top + and bottom lines of the tables. + + * Move the building of the docs to the Windows build slave so the Windows + specific modules will be present for the wxlib build command, so those + modules can be documented. + Other Dev Stuff From ebaf3a0ddf0c6002fcd26c8396f8d447f94f9205 Mon Sep 17 00:00:00 2001 From: Robin Dunn Date: Sat, 11 Jun 2016 13:53:02 -0700 Subject: [PATCH 81/96] Docstring updates for the stat* modules --- wx/lib/statbmp.py | 46 ++++++++++++++-------------- wx/lib/stattext.py | 74 +++++++++++++++++++++++++--------------------- 2 files changed, 64 insertions(+), 56 deletions(-) diff --git a/wx/lib/statbmp.py b/wx/lib/statbmp.py index 33ec80c2..43019a18 100644 --- a/wx/lib/statbmp.py +++ b/wx/lib/statbmp.py @@ -11,21 +11,23 @@ #---------------------------------------------------------------------- """ -:class:`~lib.statbmp.GenStaticBitmap` is a generic implementation of :class:`StaticBitmap`. +:class:`GenStaticBitmap` is a generic implementation of :class:`wx.StaticBitmap`. Description =========== -:class:`GenStaticBitmap` is a generic implementation of :class:`StaticBitmap`. +:class:`GenStaticBitmap` is a generic implementation of +:class:`wx.StaticBitmap`. -Some of the platforms supported by wxPython (most notably GTK), do not consider -:class:`StaticBitmap` as a separate widget; instead, the bitmap is just drawn on its -parent window. This essentially bars the use of almost all mouse events (such as -detection of mouse motions, mouse clicks and so on). +Some of the platforms supported by wxPython (most notably GTK), do not +consider :class:`wx.StaticBitmap` as a separate widget; instead, the bitmap is +just drawn on its parent window. This essentially bars the use of almost all +mouse events (such as detection of mouse motions, mouse clicks and so on) on +the widget. -Using :class:`GenStaticBitmap` will overcome all the problems described above, as it -is a generic widget and a real window on its own. +Using :class:`GenStaticBitmap` will overcome the problems described above, as +it is a generic widget and a real window on its own. Usage @@ -58,7 +60,7 @@ import wx #---------------------------------------------------------------------- class GenStaticBitmap(wx.Control): - """ :class:`GenStaticBitmap` is a generic implementation of :class:`StaticBitmap`. """ + """ :class:`GenStaticBitmap` is a generic implementation of :class:`wx.StaticBitmap`. """ labelDelta = 1 @@ -71,17 +73,17 @@ class GenStaticBitmap(wx.Control): :param `parent`: parent window, must not be ``None``; :param integer `ID`: window identifier. A value of -1 indicates a default value; - :param Bitmap `bitmap`: the static bitmap used in the control; + :param wx.Bitmap `bitmap`: the static bitmap used in the control; :param `pos`: the control position. A value of (-1, -1) indicates a default position, chosen by either the windowing system or wxPython, depending on platform; :param `size`: the control size. A value of (-1, -1) indicates a default size, chosen by either the windowing system or wxPython, depending on platform; - :param integer `style`: the underlying :class:`Control` style; + :param integer `style`: the underlying :class:`wx.Control` style; :param string `name`: the widget name. - :type parent: :class:`Window` - :type pos: tuple or :class:`Point` - :type size: tuple or :class:`Size` + :type parent: :class:`wx.Window` + :type pos: tuple or :class:`wx.Point` + :type size: tuple or :class:`wx.Size` """ if not style & wx.BORDER_MASK: @@ -101,7 +103,7 @@ class GenStaticBitmap(wx.Control): """ Sets the bitmap label. - :param Bitmap `bitmap`: the new bitmap. + :param wx.Bitmap `bitmap`: the new bitmap. .. seealso:: :meth:`GetBitmap` """ @@ -115,7 +117,7 @@ class GenStaticBitmap(wx.Control): """ Returns the bitmap currently used in the control. - :rtype: Bitmap + :rtype: wx.Bitmap .. seealso:: :meth:`SetBitmap` """ @@ -128,7 +130,7 @@ class GenStaticBitmap(wx.Control): Overridden base class virtual. Determines the best size of the control based on the label size and the current font. - .. note:: Overridden from :class:`Control`. + .. note:: Overridden from :class:`wx.Control`. """ return wx.Size(self._bitmap.GetWidth(), self._bitmap.GetHeight()) @@ -138,7 +140,7 @@ class GenStaticBitmap(wx.Control): """ Can this window be given focus by mouse click? - .. note:: Overridden from :class:`Control`. + .. note:: Overridden from :class:`wx.Control`. """ return False @@ -149,7 +151,7 @@ class GenStaticBitmap(wx.Control): Overridden base class virtual. By default we should use the same font/colour attributes as the native :class:`StaticBitmap`. - .. note:: Overridden from :class:`Control`. + .. note:: Overridden from :class:`wx.Control`. """ return wx.StaticBitmap.GetClassDefaultAttributes() @@ -160,7 +162,7 @@ class GenStaticBitmap(wx.Control): Overridden base class virtual. If the parent has non-default colours then we want this control to inherit them. - .. note:: Overridden from :class:`Control`. + .. note:: Overridden from :class:`wx.Control`. """ return True @@ -170,7 +172,7 @@ class GenStaticBitmap(wx.Control): """ Handles the ``wx.EVT_PAINT`` for :class:`GenStaticBitmap`. - :param `event`: a :class:`PaintEvent` event to be processed. + :param `event`: a :class:`wx.PaintEvent` event to be processed. """ dc = wx.PaintDC(self) @@ -182,7 +184,7 @@ class GenStaticBitmap(wx.Control): """ Handles the ``wx.EVT_ERASE_BACKGROUND`` event for :class:`GenStaticBitmap`. - :param `event`: a :class:`EraseEvent` event to be processed. + :param `event`: a :class:`wx.EraseEvent` event to be processed. .. note:: This is intentionally empty to reduce flicker. """ diff --git a/wx/lib/stattext.py b/wx/lib/stattext.py index 410d536d..fa991a87 100644 --- a/wx/lib/stattext.py +++ b/wx/lib/stattext.py @@ -18,24 +18,25 @@ # """ -:class:`~lib.stattext.GenStaticText` is a generic implementation of :class:`StaticText`. +:class:`GenStaticText` is a generic implementation of :class:`wx.StaticText`. Description =========== -:class:`GenStaticText` is a generic implementation of :class:`StaticText`. +:class:`GenStaticText` is a generic implementation of :class:`wx.StaticText`. -Some of the platforms supported by wxPython (most notably GTK), do not consider -:class:`StaticText` as a separate widget; instead, the label is just drawn on its -parent window. This essentially bars the use of almost all mouse events (such as -detection of mouse motions, mouse clicks and so on). +Some of the platforms supported by wxPython (most notably GTK), do not +consider :class:`wx.StaticText` as a separate widget; instead, the label is +just drawn directly on its parent window. This essentially bars the use of +almost all mouse events (such as detection of mouse motions, mouse clicks and +so on) on that widget. -Moreover, these platforms do not allow the developer to change the widget's background -colour. +Moreover, these platforms do not allow the developer to change the widget's +background colour. -Using :class:`GenStaticText` will overcome all the problems described above, as it -is a generic widget and a real window on its own. +Using :class:`GenStaticText` will overcome all the problems described above, +as it is a generic widget and a real window on its own. Usage @@ -79,7 +80,9 @@ if wx.Platform == "__WXMAC__": #---------------------------------------------------------------------- class GenStaticText(wx.Control): - """ :class:`GenStaticText` is a generic implementation of :class:`StaticText`. """ + """ + :class:`GenStaticText` is a generic implementation of :class:`wx.StaticText`. + """ labelDelta = 1 def __init__(self, parent, ID=-1, label="", @@ -96,12 +99,12 @@ class GenStaticText(wx.Control): chosen by either the windowing system or wxPython, depending on platform; :param `size`: the control size. A value of (-1, -1) indicates a default size, chosen by either the windowing system or wxPython, depending on platform; - :param integer `style`: the underlying :class:`Control` style; + :param integer `style`: the underlying :class:`wx.Control` style; :param string `name`: the widget name. - :type parent: :class:`Window` - :type pos: tuple or :class:`Point` - :type size: tuple or :class:`Size` + :type parent: :class:`wx.Window` + :type pos: tuple or :class:`wx.Point` + :type size: tuple or :class:`wx.Size` """ wx.Control.__init__(self, parent, ID, pos, size, style|wx.NO_BORDER, @@ -123,7 +126,7 @@ class GenStaticText(wx.Control): def SetLabel(self, label): """ Sets the static text label and updates the control's size to exactly - fit the label unless the control has wx.ST_NO_AUTORESIZE flag. + fit the label unless the control has ``wx.ST_NO_AUTORESIZE`` flag. :param string `label`: the static text label (i.e., its text label). """ @@ -139,9 +142,9 @@ class GenStaticText(wx.Control): def SetFont(self, font): """ Sets the static text font and updates the control's size to exactly - fit the label unless the control has wx.ST_NO_AUTORESIZE flag. + fit the label unless the control has ``wx.ST_NO_AUTORESIZE`` flag. - :param Font `font`: a valid font instance, which will be the new font used + :param wx.Font `font`: a valid font instance, which will be the new font used to display the text. """ @@ -158,7 +161,7 @@ class GenStaticText(wx.Control): Overridden base class virtual. Determines the best size of the control based on the label size and the current font. - .. note:: Overridden from :class:`Control`. + .. note:: Overridden from :class:`wx.Control`. """ label = self.GetLabel() @@ -185,15 +188,18 @@ class GenStaticText(wx.Control): """ Enable or disable the widget for user input. - :param bool `enable`: If ``True``, enables the window for input. If ``False``, disables the window. + :param bool `enable`: If ``True``, enables the window for input. If + ``False``, disables the window. - :returns: ``True`` if the window has been enabled or disabled, ``False`` if nothing was - done, i.e. if the window had already been in the specified state. + :returns: ``True`` if the window has been enabled or disabled, + ``False`` if nothing was done, i.e. if the window had already been + in the specified state. - .. note:: Note that when a parent window is disabled, all of its children are disabled as - well and they are reenabled again when the parent is. + .. note:: Note that when a parent window is disabled, all of its + children are disabled as well and they are reenabled again when + the parent is. - .. note:: Overridden from :class:`Control`. + .. note:: Overridden from :class:`wx.Control`. """ retVal = wx.Control.Enable(self, enable) @@ -209,9 +215,10 @@ class GenStaticText(wx.Control): :returns: ``True`` if the window has been disabled, ``False`` if it had been already disabled before the call to this function. - .. note:: This is functionally equivalent of calling :meth:`~Control.Enable` with a ``False`` flag. + .. note:: This is functionally equivalent of calling :meth:`~wx.Control.Enable` + with a ``False`` flag. - .. note:: Overridden from :class:`Control`. + .. note:: Overridden from :class:`wx.Control`. """ retVal = wx.Control.Disable(self) @@ -224,7 +231,7 @@ class GenStaticText(wx.Control): """ Can this window be given focus by mouse click? - .. note:: Overridden from :class:`Control`. + .. note:: Overridden from :class:`wx.Control`. """ return False @@ -233,9 +240,9 @@ class GenStaticText(wx.Control): def GetDefaultAttributes(self): """ Overridden base class virtual. By default we should use - the same font/colour attributes as the native :class:`StaticText`. + the same font/colour attributes as the native :class:`wx.StaticText`. - .. note:: Overridden from :class:`Control`. + .. note:: Overridden from :class:`wx.Control`. """ return wx.StaticText.GetClassDefaultAttributes() @@ -246,7 +253,7 @@ class GenStaticText(wx.Control): Overridden base class virtual. If the parent has non-default colours then we want this control to inherit them. - .. note:: Overridden from :class:`Control`. + .. note:: Overridden from :class:`wx.Control`. """ return True @@ -256,7 +263,7 @@ class GenStaticText(wx.Control): """ Handles the ``wx.EVT_PAINT`` for :class:`GenStaticText`. - :param `event`: a :class:`PaintEvent` event to be processed. + :param `event`: a :class:`wx.PaintEvent` event to be processed. """ if BUFFERED: @@ -304,11 +311,10 @@ class GenStaticText(wx.Control): """ Handles the ``wx.EVT_ERASE_BACKGROUND`` event for :class:`GenStaticText`. - :param `event`: a :class:`EraseEvent` event to be processed. + :param `event`: a :class:`wx.EraseEvent` event to be processed. .. note:: This is intentionally empty to reduce flicker. """ - pass From 2ea46e8c9a1374744339c51153d1d740fd25c709 Mon Sep 17 00:00:00 2001 From: Robin Dunn Date: Sat, 11 Jun 2016 20:59:19 -0700 Subject: [PATCH 82/96] Update to SIP 4.18.1 snapshot --- bin/build-sip-posix | 29 +- build.py | 4 +- sip/siplib/sip.h | 29 +- sip/siplib/siplib.c | 726 +++++++++++++++++++++++++++++++------------ sip/siplib/voidptr.c | 16 +- 5 files changed, 580 insertions(+), 224 deletions(-) diff --git a/bin/build-sip-posix b/bin/build-sip-posix index c2a3c028..f859eddf 100755 --- a/bin/build-sip-posix +++ b/bin/build-sip-posix @@ -1,7 +1,7 @@ #!/bin/bash set -o errexit -#set -o xtrace +#set -o xtrace PYVER=2.7 PYTHON=`which python$PYVER` @@ -13,29 +13,34 @@ fi MYBINDIR=$(dirname $(readlink -f $0)) -cd $PROJECTS/sip/sip -SIPVER=`$PYTHON configure.py --version | grep -v "This is SIP"` PLATFORM=`$PYTHON -c "import buildtools.config as bc; print(bc.getToolsPlatformName(True))"` echo $PLATFORM +cd $PROJECTS/sip/sip +SIPVER=`$PYTHON configure.py --version | grep -v "This is SIP"` if [ "$PLATFORM" = "darwin" ]; then - # try to ensure compatiblity back to 10.5 if we can + # try to ensure compatibility back to 10.6 if we can xcode=$(xcode-select -print-path) - if [ -d $xcode/SDKs/MacOSX10.5.sdk ]; then - SDK=$xcode/SDKs/MacOSX10.5.sdk - elif [ -d $xcode/SDKs/MacOSX10.6.sdk ]; then - SDK=$xcode/SDKs/MacOSX10.6.sdk - elif [ -d $xcode/SDKs/MacOSX10.7.sdk ]; then - SDK=$xcode/SDKs/MacOSX10.7.sdk - fi + for v in 6 7 8 9 10 11 12; do + if [ -d $xcode/SDKs/MacOSX10.$v.sdk ]; then + SDK=$xcode/SDKs/MacOSX10.$v.sdk + break + elif [ -d $xcode/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.$v.sdk ]; then + SDK=$xcode/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.$v.sdk + break + fi + done + $PYTHON configure.py \ - --deployment-target=10.5 \ + --deployment-target=10.6 \ --sdk=$SDK \ --arch=i386 \ + --universal \ --sip-module wx.siplib \ $* make -C sipgen clean all + else $PYTHON configure.py \ --sip-module wx.siplib \ diff --git a/build.py b/build.py index a25c925f..cfd2c6b8 100755 --- a/build.py +++ b/build.py @@ -72,9 +72,9 @@ wxICON = 'docs/sphinx/_static/images/sphinxdocs/mondrian.png' # Some tools will be downloaded for the builds. These are the versions and # MD5s of the tool binaries currently in use. -sipCurrentVersion = '4.16.7' +sipCurrentVersion = '4.18.1.dev1606100655' sipMD5 = { - 'darwin' : '29874bb82327e556554e3ca8ddf8fa16', + 'darwin' : '48f7370706c63036fac66da6439559e8', 'win32' : 'd19030b397034742694a6d229f056ad0', 'linux32' : '6f70956abd8f837b1d55dc5cfa9f6201', 'linux64' : '6ac7653c331462516abbc38c5b93e0ac', diff --git a/sip/siplib/sip.h b/sip/siplib/sip.h index d2d27db6..d0f7d227 100644 --- a/sip/siplib/sip.h +++ b/sip/siplib/sip.h @@ -54,8 +54,8 @@ extern "C" { /* * Define the SIP version number. */ -#define SIP_VERSION 0x041007 -#define SIP_VERSION_STR "4.16.7" +#define SIP_VERSION 0x041201 +#define SIP_VERSION_STR "4.18.1.dev1606100655" /* @@ -68,6 +68,11 @@ extern "C" { * * History: * + * 11.3 Added sip_api_get_interpreter() to the public API. + * + * 11.1 Added sip_api_invoke_slot_ex(). + * 11.2 Added sip_api_get_reference() to the private API. + * * 11.1 Added sip_api_invoke_slot_ex(). * * 11.0 Added the pyqt5QtSignal and pyqt5ClassTypeDef structures. @@ -212,7 +217,7 @@ extern "C" { * 0.0 Original version. */ #define SIP_API_MAJOR_NR 11 -#define SIP_API_MINOR_NR 1 +#define SIP_API_MINOR_NR 3 /* The name of the sip module. */ @@ -590,7 +595,8 @@ typedef enum { /* - * The different Python slot types. + * The different Python slot types. New slots must be added to the end, + * otherwise the major version of the internal ABI must be changed. */ typedef enum { str_slot, /* __str__ */ @@ -655,6 +661,11 @@ typedef enum { iter_slot, /* __iter__ */ next_slot, /* __next__ */ setattr_slot, /* __setattr__, __delattr__ */ + matmul_slot, /* __matmul__ (for Python v3.5 and later) */ + imatmul_slot, /* __imatmul__ (for Python v3.5 and later) */ + await_slot, /* __await__ (for Python v3.5 and later) */ + aiter_slot, /* __aiter__ (for Python v3.5 and later) */ + anext_slot, /* __anext__ (for Python v3.5 and later) */ } sipPySlotType; @@ -1522,6 +1533,16 @@ typedef struct _sipAPIDef { */ PyObject *(*api_invoke_slot_ex)(const sipSlot *slot, PyObject *sigargs, int check_receiver); + + /* + * The following is not part of the public API. + */ + PyObject *(*api_get_reference)(PyObject *self, int key); + + /* + * The following is part of the public API. + */ + PyInterpreterState *(*api_get_interpreter)(); } sipAPIDef; diff --git a/sip/siplib/siplib.c b/sip/siplib/siplib.c index bac662d7..5fae68ff 100644 --- a/sip/siplib/siplib.c +++ b/sip/siplib/siplib.c @@ -1,7 +1,7 @@ /* * SIP library code. * - * Copyright (c) 2015 Riverbank Computing Limited + * Copyright (c) 2016 Riverbank Computing Limited * * This file is part of SIP. * @@ -59,7 +59,7 @@ static PyTypeObject sipWrapperType_Type = { 0, /* tp_print */ 0, /* tp_getattr */ 0, /* tp_setattr */ - 0, /* tp_reserved (Python v3), tp_compare (Python v2) */ + 0, /* tp_as_async (Python v3.5), tp_compare (Python v2) */ 0, /* tp_repr */ 0, /* tp_as_number */ 0, /* tp_as_sequence */ @@ -126,7 +126,7 @@ static sipWrapperType sipWrapper_Type = { 0, /* tp_print */ 0, /* tp_getattr */ 0, /* tp_setattr */ - 0, /* tp_reserved (Python v3), tp_compare (Python v2) */ + 0, /* tp_as_async (Python v3.5), tp_compare (Python v2) */ 0, /* tp_repr */ 0, /* tp_as_number */ 0, /* tp_as_sequence */ @@ -171,6 +171,106 @@ static sipWrapperType sipWrapper_Type = { 0, /* tp_finalize */ #endif }, +#if PY_VERSION_HEX >= 0x03050000 + { + 0, /* am_await */ + 0, /* am_aiter */ + 0, /* am_anext */ + }, +#endif + { + 0, /* nb_add */ + 0, /* nb_subtract */ + 0, /* nb_multiply */ +#if PY_MAJOR_VERSION < 3 + 0, /* nb_divide */ +#endif + 0, /* nb_remainder */ + 0, /* nb_divmod */ + 0, /* nb_power */ + 0, /* nb_negative */ + 0, /* nb_positive */ + 0, /* nb_absolute */ + 0, /* nb_bool (Python v3), nb_nonzero (Python v2) */ + 0, /* nb_invert */ + 0, /* nb_lshift */ + 0, /* nb_rshift */ + 0, /* nb_and */ + 0, /* nb_xor */ + 0, /* nb_or */ +#if PY_MAJOR_VERSION < 3 + 0, /* nb_coerce */ +#endif + 0, /* nb_int */ + 0, /* nb_reserved (Python v3), nb_long (Python v2) */ + 0, /* nb_float */ +#if PY_MAJOR_VERSION < 3 + 0, /* nb_oct */ + 0, /* nb_hex */ +#endif + 0, /* nb_inplace_add */ + 0, /* nb_inplace_subtract */ + 0, /* nb_inplace_multiply */ +#if PY_MAJOR_VERSION < 3 + 0, /* nb_inplace_divide */ +#endif + 0, /* nb_inplace_remainder */ + 0, /* nb_inplace_power */ + 0, /* nb_inplace_lshift */ + 0, /* nb_inplace_rshift */ + 0, /* nb_inplace_and */ + 0, /* nb_inplace_xor */ + 0, /* nb_inplace_or */ +#if PY_VERSION_HEX >= 0x02020000 + 0, /* nb_floor_divide */ + 0, /* nb_true_divide */ + 0, /* nb_inplace_floor_divide */ + 0, /* nb_inplace_true_divide */ +#endif +#if PY_VERSION_HEX >= 0x02050000 + 0, /* nb_index */ +#endif +#if PY_VERSION_HEX >= 0x03050000 + 0, /* nb_matrix_multiply */ + 0, /* nb_inplace_matrix_multiply */ +#endif + }, + { + 0, /* mp_length */ + 0, /* mp_subscript */ + 0, /* mp_ass_subscript */ + }, + { + 0, /* sq_length */ + 0, /* sq_concat */ + 0, /* sq_repeat */ + 0, /* sq_item */ + 0, /* was_sq_slice */ + 0, /* sq_ass_item */ + 0, /* was_sq_ass_slice */ + 0, /* sq_contains */ + 0, /* sq_inplace_concat */ + 0, /* sq_inplace_repeat */ + }, + { +#if PY_MAJOR_VERSION >= 3 + 0, /* bf_getbuffer */ + 0, /* bf_releasebuffer */ +#else + 0, /* bf_getreadbuffer */ + 0, /* bf_getwritebuffer */ + 0, /* bf_getsegcount */ + 0, /* bf_getcharbuffer */ + 0, /* bf_getbuffer */ + 0, /* bf_releasebuffer */ +#endif + }, + 0, /* ht_name */ + 0, /* ht_slots */ +#if PY_MAJOR_VERSION >= 3 + 0, /* ht_qualname */ + 0, /* ht_cached_keys */ +#endif #if !defined(STACKLESS) }, #endif @@ -280,6 +380,7 @@ static int sip_api_register_attribute_getter(const sipTypeDef *td, static void sip_api_clear_any_slot_reference(sipSlot *slot); static int sip_api_visit_slot(sipSlot *slot, visitproc visit, void *arg); static void sip_api_keep_reference(PyObject *self, int key, PyObject *obj); +static PyObject *sip_api_get_reference(PyObject *self, int key); static void sip_api_add_exception(sipErrorState es, PyObject **parseErrp); static void sip_api_set_destroy_on_exit(int value); static int sip_api_enable_autoconversion(const sipTypeDef *td, int enable); @@ -289,6 +390,7 @@ static void *sip_api_get_mixin_address(sipSimpleWrapper *w, const sipTypeDef *td); static int sip_api_register_proxy_resolver(const sipTypeDef *td, sipProxyResolverFunc resolver); +static PyInterpreterState *sip_api_get_interpreter(); /* @@ -419,6 +521,14 @@ static const sipAPIDef sip_api = { * code. */ sip_api_invoke_slot_ex, + /* + * The following is not part of the public API. + */ + sip_api_get_reference, + /* + * The following is part of the public API. + */ + sip_api_get_interpreter, }; @@ -529,7 +639,7 @@ static PyTypeObject sipEnumType_Type = { 0, /* tp_print */ 0, /* tp_getattr */ 0, /* tp_setattr */ - 0, /* tp_reserved (Python v3), tp_compare (Python v2) */ + 0, /* tp_as_async (Python v3.5), tp_compare (Python v2) */ 0, /* tp_repr */ 0, /* tp_as_number */ 0, /* tp_as_sequence */ @@ -647,10 +757,9 @@ static int getSelfFromArgs(sipTypeDef *td, PyObject *args, int argnr, static PyObject *createEnumMember(sipTypeDef *td, sipEnumMemberDef *enm); static int compareTypedefName(const void *key, const void *el); static int checkPointer(void *ptr, sipSimpleWrapper *sw); -static void *cast_cpp_ptr(void *ptr, PyTypeObject *src_type, - const sipTypeDef *dst_type); static void finalise(void); -static PyObject *getDefaultBases(void); +static PyObject *getDefaultBase(void); +static PyObject *getDefaultSimpleBase(void); static PyObject *getScopeDict(sipTypeDef *td, PyObject *mod_dict, sipExportedModuleDef *client); static PyObject *createContainerType(sipContainerDef *cod, sipTypeDef *td, @@ -768,6 +877,7 @@ static sipSimpleWrapper *deref_mixin(sipSimpleWrapper *w); static PyObject *wrap_simple_instance(void *cpp, const sipTypeDef *td, sipWrapper *owner, int flags); static void *resolve_proxy(const sipTypeDef *td, void *proxy); +static void clear_wrapper(sipSimpleWrapper *sw); /* @@ -997,6 +1107,15 @@ PyMODINIT_FUNC SIP_MODULE_ENTRY(void) } +/* + * Return the current interpreter, if there is one. + */ +static PyInterpreterState *sip_api_get_interpreter() +{ + return sipInterpreter; +} + + /* * Display a printf() style message to stderr according to the current trace * mask. @@ -1210,15 +1329,7 @@ static PyObject *callDtor(PyObject *self, PyObject *args) if (checkPointer(addr, sw) < 0) return NULL; - if (PyObject_TypeCheck((PyObject *)sw, (PyTypeObject *)&sipWrapper_Type)) - { - /* - * Transfer ownership to C++ so we don't try to release it again when - * the Python object is garbage collected. - */ - removeFromParent((sipWrapper *)sw); - sipResetPyOwned(sw); - } + clear_wrapper(sw); release(addr, (const sipTypeDef *)ctd, sw->flags); @@ -1300,17 +1411,7 @@ static PyObject *setDeleted(PyObject *self, PyObject *args) if (!PyArg_ParseTuple(args, "O!:setdeleted", &sipSimpleWrapper_Type, &sw)) return NULL; - if (PyObject_TypeCheck((PyObject *)sw, (PyTypeObject *)&sipWrapper_Type)) - { - /* - * Transfer ownership to C++ so we don't try to release it when the - * Python object is garbage collected. - */ - removeFromParent((sipWrapper *)sw); - sipResetPyOwned(sw); - } - - clear_access_func(sw); + clear_wrapper(sw); Py_INCREF(Py_None); return Py_None; @@ -1977,15 +2078,13 @@ static PyObject *sip_api_call_method(int *isErr, PyObject *method, va_start(va,fmt); - if ((args = PyTuple_New(strlen(fmt))) != NULL && buildObject(args,fmt,va) != NULL) - res = PyEval_CallObject(method,args); + if ((args = PyTuple_New(strlen(fmt))) != NULL && buildObject(args, fmt, va) != NULL) + res = PyEval_CallObject(method, args); else - { res = NULL; - if (isErr != NULL) - *isErr = TRUE; - } + if (res == NULL && isErr != NULL) + *isErr = TRUE; Py_XDECREF(args); @@ -5840,29 +5939,56 @@ static SIP_SSIZE_T sip_api_convert_from_sequence_index(SIP_SSIZE_T idx, /* - * Return a tuple of the base classes of a type that has no explicit - * super-type. + * Return a tuple of the base class of a type that has no explicit super-type. */ -static PyObject *getDefaultBases(void) +static PyObject *getDefaultBase(void) { - static PyObject *default_bases = NULL; + static PyObject *default_base = NULL; /* Only do this once. */ - if (default_bases == NULL) + if (default_base == NULL) { #if PY_VERSION_HEX >= 0x02040000 - default_bases = PyTuple_Pack(1, (PyObject *)&sipWrapper_Type); + default_base = PyTuple_Pack(1, (PyObject *)&sipWrapper_Type); #else - default_bases = Py_BuildValue("(O)", &sipWrapper_Type); + default_base = Py_BuildValue("(O)", &sipWrapper_Type); #endif - if (default_bases == NULL) + if (default_base == NULL) return NULL; } - Py_INCREF(default_bases); + Py_INCREF(default_base); - return default_bases; + return default_base; +} + + +/* + * Return a tuple of the base class of a simple type that has no explicit + * super-type. + */ +static PyObject *getDefaultSimpleBase(void) +{ + static PyObject *default_simple_base = NULL; + + /* Only do this once. */ + if (default_simple_base == NULL) + { +#if PY_VERSION_HEX >= 0x02040000 + default_simple_base = PyTuple_Pack(1, + (PyObject *)&sipSimpleWrapper_Type); +#else + default_simple_base = Py_BuildValue("(O)", &sipSimpleWrapper_Type); +#endif + + if (default_simple_base == NULL) + return NULL; + } + + Py_INCREF(default_simple_base); + + return default_simple_base; } @@ -5987,7 +6113,7 @@ static int createClassType(sipExportedModuleDef *client, sipClassTypeDef *ctd, { if (ctd->ctd_supertype < 0) { - bases = getDefaultBases(); + bases = (sipTypeIsNamespace(&ctd->ctd_base) ? getDefaultSimpleBase() : getDefaultBase()); } else { @@ -6125,7 +6251,7 @@ static int createMappedType(sipExportedModuleDef *client, mtd->mtd_base.td_module = client; /* Create the tuple of super-types. */ - if ((bases = getDefaultBases()) == NULL) + if ((bases = getDefaultBase()) == NULL) goto reterr; /* Create the type dictionary. */ @@ -6625,6 +6751,10 @@ static int isNonlazyMethod(PyMethodDef *pmd) "__getattr__", "__enter__", "__exit__", +#if PY_VERSION_HEX >= 0x03050000 + "__aenter__", + "__aexit__", +#endif NULL }; @@ -7466,11 +7596,20 @@ static void sip_api_bad_class(const char *classname) /* - * Report a Python member function with an unexpected return type. + * Report a Python member function with an unexpected result. */ static void sip_api_bad_catcher_result(PyObject *method) { - PyObject *mname; + PyObject *mname, *etype, *evalue, *etraceback; + + /* + * Get the current exception object if there is one. Its string + * representation will be used as the detail of a new exception. + */ + PyErr_Fetch(&etype, &evalue, &etraceback); + PyErr_NormalizeException(&etype, &evalue, &etraceback); + Py_XDECREF(etype); + Py_XDECREF(etraceback); /* * This is part of the public API so we make no assumptions about the @@ -7488,14 +7627,34 @@ static void sip_api_bad_catcher_result(PyObject *method) mname = ((PyFunctionObject *)PyMethod_GET_FUNCTION(method))->func_name; + if (evalue != NULL) + { #if PY_MAJOR_VERSION >= 3 - PyErr_Format(PyExc_TypeError, "invalid result type from %s.%U()", - Py_TYPE(PyMethod_GET_SELF(method))->tp_name, mname); + PyErr_Format(PyExc_TypeError, "invalid result from %s.%U(), %S", + Py_TYPE(PyMethod_GET_SELF(method))->tp_name, mname, evalue); #else - PyErr_Format(PyExc_TypeError, "invalid result type from %s.%s()", - Py_TYPE(PyMethod_GET_SELF(method))->tp_name, - PyString_AsString(mname)); + PyObject *evalue_s = PyObject_Str(evalue); + + PyErr_Format(PyExc_TypeError, "invalid result from %s.%s(), %s", + Py_TYPE(PyMethod_GET_SELF(method))->tp_name, + PyString_AsString(mname), PyString_AsString(evalue_s)); + + Py_XDECREF(evalue_s); #endif + + Py_DECREF(evalue); + } + else + { +#if PY_MAJOR_VERSION >= 3 + PyErr_Format(PyExc_TypeError, "invalid result from %s.%U()", + Py_TYPE(PyMethod_GET_SELF(method))->tp_name, mname); +#else + PyErr_Format(PyExc_TypeError, "invalid result from %s.%s()", + Py_TYPE(PyMethod_GET_SELF(method))->tp_name, + PyString_AsString(mname)); +#endif + } } @@ -8355,7 +8514,6 @@ static void *indirect_access_func(sipSimpleWrapper *sw, AccessFuncOp op) default: addr = NULL; - break; } return addr; @@ -8404,7 +8562,18 @@ void *sip_api_get_cpp_ptr(sipSimpleWrapper *sw, const sipTypeDef *td) if (td != NULL) { - ptr = cast_cpp_ptr(ptr, Py_TYPE(sw), td); + if (PyObject_TypeCheck((PyObject *)sw, sipTypeAsPyTypeObject(td))) + { + sipCastFunc cast = ((const sipClassTypeDef *)((sipWrapperType *)Py_TYPE(sw))->type)->ctd_cast; + + /* Handle any multiple inheritance. */ + if (cast != NULL) + ptr = (*cast)(ptr, td); + } + else + { + ptr = NULL; + } if (ptr == NULL) PyErr_Format(PyExc_TypeError, "could not convert '%s' to '%s'", @@ -8416,22 +8585,6 @@ void *sip_api_get_cpp_ptr(sipSimpleWrapper *sw, const sipTypeDef *td) } -/* - * Cast a C/C++ pointer from a source type to a destination type. - */ -static void *cast_cpp_ptr(void *ptr, PyTypeObject *src_type, - const sipTypeDef *dst_type) -{ - sipCastFunc cast = ((const sipClassTypeDef *)((sipWrapperType *)src_type)->type)->ctd_cast; - - /* C structures don't have cast functions. */ - if (cast != NULL) - ptr = (*cast)(ptr, dst_type); - - return ptr; -} - - /* * Check that a pointer is non-NULL. */ @@ -8494,6 +8647,33 @@ static void sip_api_keep_reference(PyObject *self, int key, PyObject *obj) } +/* + * Get an object that has an extra reference. + */ +static PyObject *sip_api_get_reference(PyObject *self, int key) +{ + PyObject *dict, *key_obj, *obj; + + /* Get the extra references dictionary if there is one. */ + if ((dict = ((sipSimpleWrapper *)self)->extra_refs) == NULL) + return NULL; + +#if PY_MAJOR_VERSION >= 3 + key_obj = PyLong_FromLong(key); +#else + key_obj = PyInt_FromLong(key); +#endif + + if (key_obj == NULL) + return NULL; + + obj = PyDict_GetItem(dict, key_obj); + Py_XINCREF(obj); + + return obj; +} + + /* * Check to see if a Python object can be converted to a type. */ @@ -8502,10 +8682,17 @@ static int sip_api_can_convert_to_type(PyObject *pyObj, const sipTypeDef *td, { int ok; - assert(sipTypeIsClass(td) || sipTypeIsMapped(td)); + assert(td == NULL || sipTypeIsClass(td) || sipTypeIsMapped(td)); - /* None is handled outside the type checkers. */ - if (pyObj == Py_None) + if (td == NULL) + { + /* + * The type must be /External/ and the module that contains the + * implementation hasn't been imported. + */ + ok = FALSE; + } + else if (pyObj == Py_None) { /* If the type explicitly handles None then ignore the flags. */ if (sipTypeAllowNone(td)) @@ -8697,12 +8884,28 @@ PyObject *sip_api_convert_from_type(void *cpp, const sipTypeDef *td, if (cfrom != NULL) return cfrom(cpp, transferObj); - /* Apply any sub-class convertor. */ - if (sipTypeHasSCC(td)) + /* + * See if we have already wrapped it. Invoking sub-class code can be + * expensive so we check the cache first, even though the sub-class code + * might perform a down-cast. + */ + if ((py = sip_api_get_pyobject(cpp, td)) == NULL && sipTypeHasSCC(td)) + { + void *orig_cpp = cpp; + const sipTypeDef *orig_td = td; + + /* Apply the sub-class convertor. */ td = convertSubClass(td, &cpp); - /* See if we have already wrapped it. */ - if ((py = sip_api_get_pyobject(cpp, td)) != NULL) + /* + * If the sub-class convertor has done something then check the cache + * again using the modified values. + */ + if (cpp != orig_cpp || td != orig_td) + py = sip_api_get_pyobject(cpp, td); + } + + if (py != NULL) Py_INCREF(py); else if ((py = wrap_simple_instance(cpp, td, NULL, SIP_SHARE_MAP)) == NULL) return NULL; @@ -9017,7 +9220,7 @@ static int convertPass(const sipTypeDef **tdp, void **cppPtr) while (scc->scc_convertor != NULL) { - PyTypeObject *base_type = sipTypeAsPyTypeObject(scc->scc_basetype); + PyTypeObject *base_type, *tp; /* * The base type is the "root" class that may have a number of @@ -9026,14 +9229,21 @@ static int convertPass(const sipTypeDef **tdp, void **cppPtr) * provides the RTTI used by the convertors and is re-implemented * by derived classes. We therefore see if the target type is a * sub-class of the root, ie. see if the convertor might be able to - * convert the target type to something more specific. + * convert the target type to something more specific. Note that + * we only consider direct sub-classes so that (for example) a + * QLayout is only handled by the QObject convertor and not by the + * QLayoutItem convertor. */ - if (PyType_IsSubtype(py_type, base_type)) - { - void *ptr; - const sipTypeDef *sub_td; + base_type = sipTypeAsPyTypeObject(scc->scc_basetype); - ptr = cast_cpp_ptr(*cppPtr, py_type, scc->scc_basetype); + for (tp = py_type; tp != NULL; tp = tp->tp_base) + if (tp == base_type) + break; + + if (tp != NULL) + { + void *ptr = *cppPtr; + const sipTypeDef *sub_td; if ((sub_td = (*scc->scc_convertor)(&ptr)) != NULL) { @@ -9897,7 +10107,10 @@ static void *sip_api_get_mixin_address(sipSimpleWrapper *w, void *cpp; if ((mixin = PyObject_GetAttrString((PyObject *)w, sipTypeName(td))) == NULL) + { + PyErr_Clear(); return NULL; + } cpp = sip_api_get_address((sipSimpleWrapper *)mixin); @@ -10545,7 +10758,7 @@ sipWrapperType sipSimpleWrapper_Type = { 0, /* tp_print */ 0, /* tp_getattr */ 0, /* tp_setattr */ - 0, /* tp_reserved (Python v3), tp_compare (Python v2) */ + 0, /* tp_as_async (Python v3.5), tp_compare (Python v2) */ 0, /* tp_repr */ 0, /* tp_as_number */ 0, /* tp_as_sequence */ @@ -10588,6 +10801,106 @@ sipWrapperType sipSimpleWrapper_Type = { 0, /* tp_finalize */ #endif }, +#if PY_VERSION_HEX >= 0x03050000 + { + 0, /* am_await */ + 0, /* am_aiter */ + 0, /* am_anext */ + }, +#endif + { + 0, /* nb_add */ + 0, /* nb_subtract */ + 0, /* nb_multiply */ +#if PY_MAJOR_VERSION < 3 + 0, /* nb_divide */ +#endif + 0, /* nb_remainder */ + 0, /* nb_divmod */ + 0, /* nb_power */ + 0, /* nb_negative */ + 0, /* nb_positive */ + 0, /* nb_absolute */ + 0, /* nb_bool (Python v3), nb_nonzero (Python v2) */ + 0, /* nb_invert */ + 0, /* nb_lshift */ + 0, /* nb_rshift */ + 0, /* nb_and */ + 0, /* nb_xor */ + 0, /* nb_or */ +#if PY_MAJOR_VERSION < 3 + 0, /* nb_coerce */ +#endif + 0, /* nb_int */ + 0, /* nb_reserved (Python v3), nb_long (Python v2) */ + 0, /* nb_float */ +#if PY_MAJOR_VERSION < 3 + 0, /* nb_oct */ + 0, /* nb_hex */ +#endif + 0, /* nb_inplace_add */ + 0, /* nb_inplace_subtract */ + 0, /* nb_inplace_multiply */ +#if PY_MAJOR_VERSION < 3 + 0, /* nb_inplace_divide */ +#endif + 0, /* nb_inplace_remainder */ + 0, /* nb_inplace_power */ + 0, /* nb_inplace_lshift */ + 0, /* nb_inplace_rshift */ + 0, /* nb_inplace_and */ + 0, /* nb_inplace_xor */ + 0, /* nb_inplace_or */ +#if PY_VERSION_HEX >= 0x02020000 + 0, /* nb_floor_divide */ + 0, /* nb_true_divide */ + 0, /* nb_inplace_floor_divide */ + 0, /* nb_inplace_true_divide */ +#endif +#if PY_VERSION_HEX >= 0x02050000 + 0, /* nb_index */ +#endif +#if PY_VERSION_HEX >= 0x03050000 + 0, /* nb_matrix_multiply */ + 0, /* nb_inplace_matrix_multiply */ +#endif + }, + { + 0, /* mp_length */ + 0, /* mp_subscript */ + 0, /* mp_ass_subscript */ + }, + { + 0, /* sq_length */ + 0, /* sq_concat */ + 0, /* sq_repeat */ + 0, /* sq_item */ + 0, /* was_sq_slice */ + 0, /* sq_ass_item */ + 0, /* was_sq_ass_slice */ + 0, /* sq_contains */ + 0, /* sq_inplace_concat */ + 0, /* sq_inplace_repeat */ + }, + { +#if PY_MAJOR_VERSION >= 3 + 0, /* bf_getbuffer */ + 0, /* bf_releasebuffer */ +#else + 0, /* bf_getreadbuffer */ + 0, /* bf_getwritebuffer */ + 0, /* bf_getsegcount */ + 0, /* bf_getcharbuffer */ + 0, /* bf_getbuffer */ + 0, /* bf_releasebuffer */ +#endif + }, + 0, /* ht_name */ + 0, /* ht_slots */ +#if PY_MAJOR_VERSION >= 3 + 0, /* ht_qualname */ + 0, /* ht_cached_keys */ +#endif #if !defined(STACKLESS) }, #endif @@ -10608,7 +10921,7 @@ static int sipWrapper_clear(sipWrapper *self) vret = sipSimpleWrapper_clear(sw); /* Remove any slots connected via a proxy. */ - if (sipQtSupport != NULL && sipPossibleProxy(sw)) + if (sipQtSupport != NULL && sipPossibleProxy(sw) && !sipNotInMap(sw)) { void *tx = sip_api_get_address(sw); @@ -10667,8 +10980,13 @@ static int sipWrapper_traverse(sipWrapper *self, visitproc visit, void *arg) if ((vret = sipSimpleWrapper_traverse(sw, visit, arg)) != 0) return vret; - /* This should be handwritten code in PyQt. */ - if (sipQtSupport != NULL && sipQtSupport->qt_find_sipslot) + /* + * This should be handwritten code in PyQt. The map check is a bit of a + * hack to work around PyQt4 problems with qApp and a user created + * instance. qt_find_sipslot() will return the same slot information for + * both causing the gc module to trigger assert() failures. + */ + if (sipQtSupport != NULL && sipQtSupport->qt_find_sipslot && !sipNotInMap(sw)) { void *tx = sip_api_get_address(sw); @@ -10710,46 +11028,49 @@ static int sipWrapper_traverse(sipWrapper *self, visitproc visit, void *arg) */ static void addClassSlots(sipWrapperType *wt, const sipClassTypeDef *ctd) { + PyHeapTypeObject *heap_to = &wt->super; + PyBufferProcs *bp = &heap_to->as_buffer; + /* Add the buffer interface. */ #if PY_MAJOR_VERSION >= 3 if (ctd->ctd_getbuffer != NULL) - wt->super.as_buffer.bf_getbuffer = (getbufferproc)sipSimpleWrapper_getbuffer; + bp->bf_getbuffer = (getbufferproc)sipSimpleWrapper_getbuffer; if (ctd->ctd_releasebuffer != NULL) - wt->super.as_buffer.bf_releasebuffer = (releasebufferproc)sipSimpleWrapper_releasebuffer; + bp->bf_releasebuffer = (releasebufferproc)sipSimpleWrapper_releasebuffer; #else if (ctd->ctd_readbuffer != NULL) #if PY_VERSION_HEX >= 0x02050000 - wt->super.as_buffer.bf_getreadbuffer = (readbufferproc)sipSimpleWrapper_getreadbuffer; + bp->bf_getreadbuffer = (readbufferproc)sipSimpleWrapper_getreadbuffer; #else - wt->super.as_buffer.bf_getreadbuffer = (getreadbufferproc)sipSimpleWrapper_getreadbuffer; + bp->bf_getreadbuffer = (getreadbufferproc)sipSimpleWrapper_getreadbuffer; #endif if (ctd->ctd_writebuffer != NULL) #if PY_VERSION_HEX >= 0x02050000 - wt->super.as_buffer.bf_getwritebuffer = (writebufferproc)sipSimpleWrapper_getwritebuffer; + bp->bf_getwritebuffer = (writebufferproc)sipSimpleWrapper_getwritebuffer; #else - wt->super.as_buffer.bf_getwritebuffer = (getwritebufferproc)sipSimpleWrapper_getwritebuffer; + bp->bf_getwritebuffer = (getwritebufferproc)sipSimpleWrapper_getwritebuffer; #endif if (ctd->ctd_segcount != NULL) #if PY_VERSION_HEX >= 0x02050000 - wt->super.as_buffer.bf_getsegcount = (segcountproc)sipSimpleWrapper_getsegcount; + bp->bf_getsegcount = (segcountproc)sipSimpleWrapper_getsegcount; #else - wt->super.as_buffer.bf_getsegcount = (getsegcountproc)sipSimpleWrapper_getsegcount; + bp->bf_getsegcount = (getsegcountproc)sipSimpleWrapper_getsegcount; #endif if (ctd->ctd_charbuffer != NULL) #if PY_VERSION_HEX >= 0x02050000 - wt->super.as_buffer.bf_getcharbuffer = (charbufferproc)sipSimpleWrapper_getcharbuffer; + bp->bf_getcharbuffer = (charbufferproc)sipSimpleWrapper_getcharbuffer; #else - wt->super.as_buffer.bf_getcharbuffer = (getcharbufferproc)sipSimpleWrapper_getcharbuffer; + bp->bf_getcharbuffer = (getcharbufferproc)sipSimpleWrapper_getcharbuffer; #endif #endif /* Add the slots for this type. */ if (ctd->ctd_pyslots != NULL) - addTypeSlots(&wt->super, ctd->ctd_pyslots); + addTypeSlots(heap_to, ctd->ctd_pyslots); } @@ -10762,12 +11083,18 @@ static void addTypeSlots(PyHeapTypeObject *heap_to, sipPySlotDef *slots) PyNumberMethods *nb; PySequenceMethods *sq; PyMappingMethods *mp; +#if PY_VERSION_HEX >= 0x03050000 + PyAsyncMethods *am; +#endif void *f; - to = (PyTypeObject *)heap_to; + to = &heap_to->ht_type; nb = &heap_to->as_number; sq = &heap_to->as_sequence; mp = &heap_to->as_mapping; +#if PY_VERSION_HEX >= 0x03050000 + am = &heap_to->as_async; +#endif while ((f = slots->psd_func) != NULL) switch (slots++->psd_type) @@ -10777,203 +11104,161 @@ static void addTypeSlots(PyHeapTypeObject *heap_to, sipPySlotDef *slots) break; case int_slot: - if (nb != NULL) - nb->nb_int = (unaryfunc)f; + nb->nb_int = (unaryfunc)f; break; #if PY_MAJOR_VERSION < 3 case long_slot: - if (nb != NULL) - nb->nb_long = (unaryfunc)f; + nb->nb_long = (unaryfunc)f; break; #endif case float_slot: - if (nb != NULL) - nb->nb_float = (unaryfunc)f; + nb->nb_float = (unaryfunc)f; break; case len_slot: - if (mp != NULL) #if PY_VERSION_HEX >= 0x02050000 - mp->mp_length = (lenfunc)f; + mp->mp_length = (lenfunc)f; + sq->sq_length = (lenfunc)f; #else - mp->mp_length = (inquiry)f; -#endif - if (sq != NULL) -#if PY_VERSION_HEX >= 0x02050000 - sq->sq_length = (lenfunc)f; -#else - sq->sq_length = (inquiry)f; + mp->mp_length = (inquiry)f; + sq->sq_length = (inquiry)f; #endif break; case contains_slot: - if (sq != NULL) - sq->sq_contains = (objobjproc)f; + sq->sq_contains = (objobjproc)f; break; case add_slot: - if (nb != NULL) - nb->nb_add = (binaryfunc)f; + nb->nb_add = (binaryfunc)f; break; case concat_slot: - if (sq != NULL) - sq->sq_concat = (binaryfunc)f; + sq->sq_concat = (binaryfunc)f; break; case sub_slot: - if (nb != NULL) - nb->nb_subtract = (binaryfunc)f; + nb->nb_subtract = (binaryfunc)f; break; case mul_slot: - if (nb != NULL) - nb->nb_multiply = (binaryfunc)f; + nb->nb_multiply = (binaryfunc)f; break; case repeat_slot: - if (sq != NULL) #if PY_VERSION_HEX >= 0x02050000 - sq->sq_repeat = (ssizeargfunc)f; + sq->sq_repeat = (ssizeargfunc)f; #else - sq->sq_repeat = (intargfunc)f; + sq->sq_repeat = (intargfunc)f; #endif break; case div_slot: - if (nb != NULL) - { - nb->nb_true_divide = (binaryfunc)f; + nb->nb_true_divide = (binaryfunc)f; #if PY_MAJOR_VERSION < 3 - nb->nb_divide = (binaryfunc)f; + nb->nb_divide = (binaryfunc)f; #endif - } break; case mod_slot: - if (nb != NULL) - nb->nb_remainder = (binaryfunc)f; + nb->nb_remainder = (binaryfunc)f; break; case floordiv_slot: - if (nb != NULL) - nb->nb_floor_divide = (binaryfunc)f; + nb->nb_floor_divide = (binaryfunc)f; break; case truediv_slot: - if (nb != NULL) - nb->nb_true_divide = (binaryfunc)f; + nb->nb_true_divide = (binaryfunc)f; break; case and_slot: - if (nb != NULL) - nb->nb_and = (binaryfunc)f; + nb->nb_and = (binaryfunc)f; break; case or_slot: - if (nb != NULL) - nb->nb_or = (binaryfunc)f; + nb->nb_or = (binaryfunc)f; break; case xor_slot: - if (nb != NULL) - nb->nb_xor = (binaryfunc)f; + nb->nb_xor = (binaryfunc)f; break; case lshift_slot: - if (nb != NULL) - nb->nb_lshift = (binaryfunc)f; + nb->nb_lshift = (binaryfunc)f; break; case rshift_slot: - if (nb != NULL) - nb->nb_rshift = (binaryfunc)f; + nb->nb_rshift = (binaryfunc)f; break; case iadd_slot: - if (nb != NULL) - nb->nb_inplace_add = (binaryfunc)f; + nb->nb_inplace_add = (binaryfunc)f; break; case iconcat_slot: - if (sq != NULL) - sq->sq_inplace_concat = (binaryfunc)f; + sq->sq_inplace_concat = (binaryfunc)f; break; case isub_slot: - if (nb != NULL) - nb->nb_inplace_subtract = (binaryfunc)f; + nb->nb_inplace_subtract = (binaryfunc)f; break; case imul_slot: - if (nb != NULL) - nb->nb_inplace_multiply = (binaryfunc)f; + nb->nb_inplace_multiply = (binaryfunc)f; break; case irepeat_slot: - if (sq != NULL) #if PY_VERSION_HEX >= 0x02050000 - sq->sq_inplace_repeat = (ssizeargfunc)f; + sq->sq_inplace_repeat = (ssizeargfunc)f; #else - sq->sq_inplace_repeat = (intargfunc)f; + sq->sq_inplace_repeat = (intargfunc)f; #endif break; case idiv_slot: - if (nb != NULL) - { - nb->nb_inplace_true_divide = (binaryfunc)f; + nb->nb_inplace_true_divide = (binaryfunc)f; #if PY_MAJOR_VERSION < 3 - nb->nb_inplace_divide = (binaryfunc)f; + nb->nb_inplace_divide = (binaryfunc)f; #endif - } break; case imod_slot: - if (nb != NULL) - nb->nb_inplace_remainder = (binaryfunc)f; + nb->nb_inplace_remainder = (binaryfunc)f; break; case ifloordiv_slot: - if (nb != NULL) - nb->nb_inplace_floor_divide = (binaryfunc)f; + nb->nb_inplace_floor_divide = (binaryfunc)f; break; case itruediv_slot: - if (nb != NULL) - nb->nb_inplace_true_divide = (binaryfunc)f; + nb->nb_inplace_true_divide = (binaryfunc)f; break; case iand_slot: - if (nb != NULL) - nb->nb_inplace_and = (binaryfunc)f; + nb->nb_inplace_and = (binaryfunc)f; break; case ior_slot: - if (nb != NULL) - nb->nb_inplace_or = (binaryfunc)f; + nb->nb_inplace_or = (binaryfunc)f; break; case ixor_slot: - if (nb != NULL) - nb->nb_inplace_xor = (binaryfunc)f; + nb->nb_inplace_xor = (binaryfunc)f; break; case ilshift_slot: - if (nb != NULL) - nb->nb_inplace_lshift = (binaryfunc)f; + nb->nb_inplace_lshift = (binaryfunc)f; break; case irshift_slot: - if (nb != NULL) - nb->nb_inplace_rshift = (binaryfunc)f; + nb->nb_inplace_rshift = (binaryfunc)f; break; case invert_slot: - if (nb != NULL) - nb->nb_invert = (unaryfunc)f; + nb->nb_invert = (unaryfunc)f; break; case call_slot: @@ -10981,18 +11266,14 @@ static void addTypeSlots(PyHeapTypeObject *heap_to, sipPySlotDef *slots) break; case getitem_slot: - if (mp != NULL) - mp->mp_subscript = (binaryfunc)f; - if (sq != NULL) - sq->sq_item = slot_sq_item; + mp->mp_subscript = (binaryfunc)f; + sq->sq_item = slot_sq_item; break; case setitem_slot: case delitem_slot: - if (mp != NULL) - mp->mp_ass_subscript = slot_mp_ass_subscript; - if (sq != NULL) - sq->sq_ass_item = slot_sq_ass_item; + mp->mp_ass_subscript = slot_mp_ass_subscript; + sq->sq_ass_item = slot_sq_ass_item; break; case lt_slot: @@ -11011,17 +11292,15 @@ static void addTypeSlots(PyHeapTypeObject *heap_to, sipPySlotDef *slots) #endif case bool_slot: - if (nb != NULL) #if PY_MAJOR_VERSION >= 3 - nb->nb_bool = (inquiry)f; + nb->nb_bool = (inquiry)f; #else - nb->nb_nonzero = (inquiry)f; + nb->nb_nonzero = (inquiry)f; #endif break; case neg_slot: - if (nb != NULL) - nb->nb_negative = (unaryfunc)f; + nb->nb_negative = (unaryfunc)f; break; case repr_slot: @@ -11033,19 +11312,16 @@ static void addTypeSlots(PyHeapTypeObject *heap_to, sipPySlotDef *slots) break; case pos_slot: - if (nb != NULL) - nb->nb_positive = (unaryfunc)f; + nb->nb_positive = (unaryfunc)f; break; case abs_slot: - if (nb != NULL) - nb->nb_absolute = (unaryfunc)f; + nb->nb_absolute = (unaryfunc)f; break; #if PY_VERSION_HEX >= 0x02050000 case index_slot: - if (nb != NULL) - nb->nb_index = (unaryfunc)f; + nb->nb_index = (unaryfunc)f; break; #endif @@ -11060,6 +11336,32 @@ static void addTypeSlots(PyHeapTypeObject *heap_to, sipPySlotDef *slots) case setattr_slot: to->tp_setattro = (setattrofunc)f; break; + +#if PY_VERSION_HEX >= 0x03050000 + case matmul_slot: + nb->nb_matrix_multiply = (binaryfunc)f; + break; + + case imatmul_slot: + nb->nb_inplace_matrix_multiply = (binaryfunc)f; + break; + + case await_slot: + am->am_await = (unaryfunc)f; + break; + + case aiter_slot: + am->am_aiter = (unaryfunc)f; + break; + + case anext_slot: + am->am_anext = (unaryfunc)f; + break; +#endif + + /* Suppress a compiler warning. */ + default: + ; } } @@ -12253,3 +12555,23 @@ static void *resolve_proxy(const sipTypeDef *td, void *proxy) return proxy; } + + +/* + * Clear a simple wrapper. + */ +static void clear_wrapper(sipSimpleWrapper *sw) +{ + if (PyObject_TypeCheck((PyObject *)sw, (PyTypeObject *)&sipWrapper_Type)) + removeFromParent((sipWrapper *)sw); + + /* + * Transfer ownership to C++ so we don't try to release it when the + * Python object is garbage collected. + */ + sipResetPyOwned(sw); + + sipOMRemoveObject(&cppPyMap, sw); + + clear_access_func(sw); +} diff --git a/sip/siplib/voidptr.c b/sip/siplib/voidptr.c index d1eb02b5..4202e776 100644 --- a/sip/siplib/voidptr.c +++ b/sip/siplib/voidptr.c @@ -314,7 +314,11 @@ static PyNumberMethods sipVoidPtr_NumberMethods = { 0, /* nb_inplace_floor_divide */ 0, /* nb_inplace_true_divide */ #if PY_VERSION_HEX >= 0x02050000 - 0 /* nb_index */ + 0, /* nb_index */ +#endif +#if PY_VERSION_HEX >= 0x03050000 + 0, /* nb_matrix_multiply */ + 0, /* nb_inplace_matrix_multiply */ #endif }; @@ -1063,10 +1067,14 @@ static int vp_convertor(PyObject *arg, struct vp_values *vp) if (PyErr_Occurred()) { -#if PY_VERSION_HEX >= 0x03010000 - PyErr_SetString(PyExc_TypeError, "a single integer, CObject, None, buffer protocol implementor or another sip.voidptr object is required"); +#if defined(SIP_USE_PYCAPSULE) +#if defined(SIP_SUPPORT_PYCOBJECT) + PyErr_SetString(PyExc_TypeError, "a single integer, Capsule, CObject, None, bytes-like object or another sip.voidptr object is required"); #else - PyErr_SetString(PyExc_TypeError, "a single integer, Capsule, CObject, None, buffer protocol implementor or another sip.voidptr object is required"); + PyErr_SetString(PyExc_TypeError, "a single integer, Capsule, None, bytes-like object or another sip.voidptr object is required"); +#endif +#else + PyErr_SetString(PyExc_TypeError, "a single integer, CObject, None, bytes-like object or another sip.voidptr object is required"); #endif return 0; } From 9a104792b7e4fac2336abc1868fc8fedf5bb6ade Mon Sep 17 00:00:00 2001 From: Robin Dunn Date: Sat, 11 Jun 2016 21:31:08 -0700 Subject: [PATCH 83/96] Ignore MacCheckSpelling, it doesn't exist in wxSTC. --- etg/_stc.py | 1 + 1 file changed, 1 insertion(+) diff --git a/etg/_stc.py b/etg/_stc.py index b50a6b98..390c7c8f 100644 --- a/etg/_stc.py +++ b/etg/_stc.py @@ -158,6 +158,7 @@ def run(): c.find('EmulateKeyPress').ignore() c.find('IsMultiLine').ignore() c.find('IsSingleLine').ignore() + c.find('MacCheckSpelling').ignore() # TODO: Add the UTF8 PyMethods from classic (see _stc_utf8_methods.py) From 4428ba405fe73dd285694900c801219d3e2e4a72 Mon Sep 17 00:00:00 2001 From: Robin Dunn Date: Sat, 11 Jun 2016 21:35:36 -0700 Subject: [PATCH 84/96] Add win32 MD5 for sip --- build.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build.py b/build.py index cfd2c6b8..9edeca10 100755 --- a/build.py +++ b/build.py @@ -75,7 +75,7 @@ wxICON = 'docs/sphinx/_static/images/sphinxdocs/mondrian.png' sipCurrentVersion = '4.18.1.dev1606100655' sipMD5 = { 'darwin' : '48f7370706c63036fac66da6439559e8', - 'win32' : 'd19030b397034742694a6d229f056ad0', + 'win32' : '138b2daa19a357ac9d92edd9a8e149b9', 'linux32' : '6f70956abd8f837b1d55dc5cfa9f6201', 'linux64' : '6ac7653c331462516abbc38c5b93e0ac', } From be0022982819c50ab625cf5f60bcb748a5a420b3 Mon Sep 17 00:00:00 2001 From: Robin Dunn Date: Sat, 11 Jun 2016 21:59:17 -0700 Subject: [PATCH 85/96] Add linux MD5s for sip --- build.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/build.py b/build.py index 9edeca10..df4278d6 100755 --- a/build.py +++ b/build.py @@ -76,8 +76,8 @@ sipCurrentVersion = '4.18.1.dev1606100655' sipMD5 = { 'darwin' : '48f7370706c63036fac66da6439559e8', 'win32' : '138b2daa19a357ac9d92edd9a8e149b9', - 'linux32' : '6f70956abd8f837b1d55dc5cfa9f6201', - 'linux64' : '6ac7653c331462516abbc38c5b93e0ac', + 'linux32' : '23f00942b1eb5d69a7bdac517c4e2995', + 'linux64' : 'fce6937c3e67c2d099a8610890d81f87', } wafCurrentVersion = '1.7.15-p1' From d736044bb1475c0e9770b00c38907e46f4c50024 Mon Sep 17 00:00:00 2001 From: Robin Dunn Date: Sat, 11 Jun 2016 22:16:27 -0700 Subject: [PATCH 86/96] We need to ignore the native caret methods in wxSTC too --- etg/_stc.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/etg/_stc.py b/etg/_stc.py index 390c7c8f..9343cefe 100644 --- a/etg/_stc.py +++ b/etg/_stc.py @@ -159,6 +159,8 @@ def run(): c.find('IsMultiLine').ignore() c.find('IsSingleLine').ignore() c.find('MacCheckSpelling').ignore() + c.find('ShowNativeCaret').ignore() + c.find('HideNativeCaret').ignore() # TODO: Add the UTF8 PyMethods from classic (see _stc_utf8_methods.py) From 125c3ecc3acae59f0e3dc74e8e26c3bb95d24b97 Mon Sep 17 00:00:00 2001 From: Scott Talbert Date: Fri, 17 Jun 2016 00:05:58 -0400 Subject: [PATCH 87/96] Fix memory management issues with Clone() in Grid classes by setting as Factory --- etg/grid.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/etg/grid.py b/etg/grid.py index 259b70d1..0d91954a 100644 --- a/etg/grid.py +++ b/etg/grid.py @@ -134,7 +134,7 @@ def run(): tools.addAutoProperties(klass) methods = [ - ('Clone', "virtual wxGridCellRenderer* Clone() const;"), + ('Clone', "virtual wxGridCellRenderer* Clone() const /Factory/;"), ('Draw', "virtual void Draw(wxGrid& grid, wxGridCellAttr& attr, wxDC& dc, " " const wxRect& rect, int row, int col, bool isSelected);"), ('GetBestSize', "virtual wxSize GetBestSize(wxGrid& grid, wxGridCellAttr& attr, " @@ -148,6 +148,7 @@ def run(): c = module.find('wxGridCellRenderer') c.addPrivateCopyCtor() c.find('~wxGridCellRenderer').ignore(False) + c.find('Clone').factory = True for name in ITEMS: if 'Cell' in name and 'Renderer' in name: @@ -164,7 +165,7 @@ def run(): methods = [ ('BeginEdit', "virtual void BeginEdit(int row, int col, wxGrid* grid);"), - ('Clone', "virtual wxGridCellEditor* Clone() const;"), + ('Clone', "virtual wxGridCellEditor* Clone() const /Factory/;"), ('Create', "virtual void Create(wxWindow* parent, wxWindowID id, wxEvtHandler* evtHandler);"), #('EndEdit', "virtual bool EndEdit(int row, int col, const wxGrid* grid, const wxString& oldval, wxString* newval);"), ('ApplyEdit', "virtual void ApplyEdit(int row, int col, wxGrid* grid);"), @@ -244,6 +245,7 @@ def run(): c = module.find('wxGridCellEditor') c.addPrivateCopyCtor() c.find('~wxGridCellEditor').ignore(False) + c.find('Clone').factory = True c = module.find('wxGridCellChoiceEditor') c.find('wxGridCellChoiceEditor').findOverload('count').ignore() From 3a3bfea1665dc11951b4d1838703a68646455858 Mon Sep 17 00:00:00 2001 From: Robin Dunn Date: Fri, 17 Jun 2016 15:52:49 -0700 Subject: [PATCH 88/96] Use just the tail of the fullname on the summary pages --- sphinxtools/postprocess.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/sphinxtools/postprocess.py b/sphinxtools/postprocess.py index d771b686..3cedc576 100644 --- a/sphinxtools/postprocess.py +++ b/sphinxtools/postprocess.py @@ -454,7 +454,7 @@ def makeModuleIndex(sphinxDir, file): out = classes[cls] if '=====' in out: out = '' - text += '%-80s %s\n' % (':ref:`%s`' % wx2Sphinx(cls)[1], out) + text += '%-80s %s\n' % (':ref:`~%s`' % wx2Sphinx(cls)[1], out) text += 80*'=' + ' ' + 80*'=' + '\n\n' @@ -486,7 +486,7 @@ def makeModuleIndex(sphinxDir, file): for func_name in functions: fullname = imm.get_fullname(func_name) doc = function_summaries.get(fullname, '') - text += '%-80s %s\n' % (':func:`%s`' % fullname, doc) + text += '%-80s %s\n' % (':func:`~%s`' % fullname, doc) text += 80 * '=' + ' ' + 80 * '=' + '\n\n' contents.append(module + '.functions') From 5983df8a5fc2c61a5dd96c698fb27d157d951f30 Mon Sep 17 00:00:00 2001 From: Robin Dunn Date: Fri, 17 Jun 2016 16:01:38 -0700 Subject: [PATCH 89/96] Generate attribute docs for exposed C++ attributes like properties. --- TODO.rst | 2 -- etg/_richtext.py | 6 +++-- etgtools/sphinx_generator.py | 45 ++++++++++++++++++++++++++++++------ sphinxtools/utilities.py | 2 +- 4 files changed, 43 insertions(+), 12 deletions(-) diff --git a/TODO.rst b/TODO.rst index 122dfb6b..ae196ad8 100644 --- a/TODO.rst +++ b/TODO.rst @@ -92,8 +92,6 @@ to be untangled: little smarter and pull out the first sentence from the docstring instead of ust the first line. - * Should we generate property-like docs for MemberVar elements? - * Convert the main.html page to a ReST file? It would probably make it a little easier to maintain. diff --git a/etg/_richtext.py b/etg/_richtext.py index 07b5e5fc..33e8760e 100644 --- a/etg/_richtext.py +++ b/etg/_richtext.py @@ -14,8 +14,10 @@ PACKAGE = "wx" MODULE = "_richtext" NAME = "_richtext" # Base name of the file to generate to for this script DOCSTRING = """\ -The ``RichTextCtrl`` is a generic, ground-up implementation of a rich text -control capable of showing multiple text styles and images. +The :class:`RichTextCtrl` is a generic, ground-up implementation of a rich +text control capable of showing multiple text styles and images. This module +contains the control and many supporting classes needed for using the features +of the :class:`RichTextCtrl`. """ # The classes and/or the basename of the Doxygen XML files to be processed by diff --git a/etgtools/sphinx_generator.py b/etgtools/sphinx_generator.py index 47e16c89..58415c8b 100644 --- a/etgtools/sphinx_generator.py +++ b/etgtools/sphinx_generator.py @@ -2386,8 +2386,9 @@ class XMLDocString(object): summary = makeSummary(name, klass.method_list, templates.TEMPLATE_METHOD_SUMMARY, 'meth') stream.write(summary) - if klass.property_list: - summary = makeSummary(name, klass.property_list, templates.TEMPLATE_PROPERTY_SUMMARY, 'attr') + if klass.property_list or klass.memberVar_list: + allAttrs = klass.property_list + klass.memberVar_list + summary = makeSummary(name, allAttrs, templates.TEMPLATE_PROPERTY_SUMMARY, 'attr') stream.write(summary) stream.write(templates.TEMPLATE_API) @@ -3051,6 +3052,7 @@ class SphinxGenerator(generators.DocsGeneratorBase): class_fullname = ItemModuleMap().get_fullname(class_name) self.current_class.method_list = [] self.current_class.property_list = [] + self.current_class.memberVar_list = [] class_items = [i for i in klass if not i.ignored] class_items = sorted(class_items, key=operator.attrgetter('name')) @@ -3142,6 +3144,7 @@ class SphinxGenerator(generators.DocsGeneratorBase): klass.method_list = [] klass.property_list = [] + klass.memberVar_list = [] klass.enum_list = [] # Inspected class Method to call Sort order @@ -3179,10 +3182,13 @@ class SphinxGenerator(generators.DocsGeneratorBase): for item in class_items: if isinstance(item, methods) and not self.IsFullyDeprecated(item): method_name, simple_docs = self.getName(item) - klass.method_list.append(('%s.%s'%(fullname, method_name), simple_docs)) + klass.method_list.append(('%s.%s' % (fullname, method_name), simple_docs)) elif isinstance(item, properties): simple_docs = self.createPropertyLinks(fullname, item) - klass.property_list.append(('%s.%s'%(fullname, item.name), simple_docs)) + klass.property_list.append(('%s.%s' % (fullname, item.name), simple_docs)) + elif isinstance(item, extractors.MemberVarDef): + description = self.createMemberVarDescription(item) + klass.memberVar_list.append(('%s.%s' % (fullname, item.name), description)) for item in ctors: if item.isCtor: @@ -3336,9 +3342,32 @@ class SphinxGenerator(generators.DocsGeneratorBase): def generateMemberVar(self, memberVar): assert isinstance(memberVar, extractors.MemberVarDef) - if memberVar.ignored: + if memberVar.ignored or memberVar.protection != 'public': return + c = self.current_class + name = c.pyName if c.pyName else removeWxPrefix(c.name) + fullname = ItemModuleMap().get_fullname(name) + + description = self.createMemberVarDescription(memberVar) + + stream = StringIO() + stream.write('\n .. attribute:: %s\n\n' % memberVar.name) + stream.write(' %s\n\n' % description) + + filename = "%s.txt" % fullname + writeSphinxOutput(stream, filename, append=True) + + + def createMemberVarDescription(self, memberVar): + varType = pythonizeType(memberVar.type, False) + if varType.startswith('wx.'): + varType = ':ref:`~%s`' % varType + else: + varType = '``%s``' % varType + return 'A public C++ attribute of type %s' % varType + + # ----------------------------------------------------------------------- def generateProperty(self, prop): @@ -3354,7 +3383,7 @@ class SphinxGenerator(generators.DocsGeneratorBase): stream = StringIO() stream.write('\n .. attribute:: %s\n\n' % prop.name) - stream.write(' %s\n\n'%getter_setter) + stream.write(' %s\n\n' % getter_setter) filename = "%s.txt" % fullname writeSphinxOutput(stream, filename, append=True) @@ -3428,7 +3457,9 @@ class SphinxGenerator(generators.DocsGeneratorBase): typedef.nodeBases = all_classes, specials self.fixNodeBaseNames(typedef, ItemModuleMap()) typedef.subClasses = [] - typedef.method_list = typedef.property_list = [] + typedef.method_list = [] + typedef.property_list = [] + typedef.memberVar_list = [] typedef.pyDocstring = typedef.briefDoc self.current_class = typedef diff --git a/sphinxtools/utilities.py b/sphinxtools/utilities.py index 23bc8485..0493d382 100644 --- a/sphinxtools/utilities.py +++ b/sphinxtools/utilities.py @@ -222,7 +222,7 @@ def pythonizeType(ptype, is_param): if 'size_t' in ptype: ptype = 'int' elif 'wx.' in ptype: - ptype = ptype[3:] + ptype = ptype[3:] # *** else: ptype = wx2Sphinx(replaceCppItems(ptype))[1] From 32bf05208f7279f7acc9331bed06845352b5b0fd Mon Sep 17 00:00:00 2001 From: Robin Dunn Date: Tue, 21 Jun 2016 20:23:36 -0700 Subject: [PATCH 90/96] wxpython.org has an SSL cert now --- packaging/README-snapshots.txt | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/packaging/README-snapshots.txt b/packaging/README-snapshots.txt index 14cb5dc8..6c0323ec 100644 --- a/packaging/README-snapshots.txt +++ b/packaging/README-snapshots.txt @@ -58,8 +58,7 @@ software wheels like what is available here, with a command like this: pip install -U --pre \ - --trusted-host wxpython.org \ - -f http://wxpython.org/Phoenix/snapshot-builds/ \ + -f https://wxpython.org/Phoenix/snapshot-builds/ \ wxPython_Phoenix NOTE: if there isn't a binary here for the latest version of Phoenix @@ -72,8 +71,7 @@ To install a specific binary from this site you can append the version number to the command, like this: pip install -U --pre \ - --trusted-host wxpython.org \ - -f http://wxpython.org/Phoenix/snapshot-builds/ \ + -f https://wxpython.org/Phoenix/snapshot-builds/ \ wxPython_Phoenix==3.0.3.dev1641+76cf834 If you don't already have pip then you can install it with commands From 3bfb0dc12f4e4c39a3b8e33589c336fd8d7c2c08 Mon Sep 17 00:00:00 2001 From: Robin Dunn Date: Tue, 21 Jun 2016 00:57:09 -0700 Subject: [PATCH 91/96] Refactor adding extension module build rules --- wscript | 153 +++++++++++--------------------------------------------- 1 file changed, 28 insertions(+), 125 deletions(-) diff --git a/wscript b/wscript index c278308e..b24bae24 100644 --- a/wscript +++ b/wscript @@ -411,8 +411,7 @@ def build(bld): from distutils.file_util import copy_file from distutils.dir_util import mkpath - from distutils.dep_util import newer, newer_group - from buildtools.config import opj, loadETG, getEtgSipCppFiles + from buildtools.config import opj cfg.finishSetup(bld.env.wx_config) @@ -463,132 +462,24 @@ def build(bld): ) makeExtCopyRule(bld, 'siplib') - - etg = loadETG('etg/_core.py') - rc = ['src/wxc.rc'] if isWindows else [] - bld(features = 'c cxx cxxshlib pyext', - target = makeTargetName(bld, '_core'), - source = getEtgSipCppFiles(etg) + rc, - uselib = 'WX WXPY', - ) - makeExtCopyRule(bld, '_core') - - - etg = loadETG('etg/_adv.py') - bld(features = 'c cxx cxxshlib pyext', - target = makeTargetName(bld, '_adv'), - source = getEtgSipCppFiles(etg) + rc, - uselib = 'WXADV WXPY', - ) - makeExtCopyRule(bld, '_adv') - - - etg = loadETG('etg/_dataview.py') - bld(features = 'c cxx cxxshlib pyext', - target = makeTargetName(bld, '_dataview'), - source = getEtgSipCppFiles(etg) + rc, - uselib = 'WXADV WXPY', # dataview classes are also in the adv library - ) - makeExtCopyRule(bld, '_dataview') - - - etg = loadETG('etg/_grid.py') - bld(features = 'c cxx cxxshlib pyext', - target = makeTargetName(bld, '_grid'), - source = getEtgSipCppFiles(etg) + rc, - uselib = 'WXADV WXPY', # grid classes are also in the adv library - ) - makeExtCopyRule(bld, '_grid') - - - etg = loadETG('etg/_stc.py') - bld(features = 'c cxx cxxshlib pyext', - target = makeTargetName(bld, '_stc'), - source = getEtgSipCppFiles(etg) + rc, - uselib = 'WXSTC WXPY', - ) - makeExtCopyRule(bld, '_stc') - - - etg = loadETG('etg/_html.py') - bld(features = 'c cxx cxxshlib pyext', - target = makeTargetName(bld, '_html'), - source = getEtgSipCppFiles(etg) + rc, - uselib = 'WXHTML WXPY', - ) - makeExtCopyRule(bld, '_html') - - - etg = loadETG('etg/_glcanvas.py') - bld(features = 'c cxx cxxshlib pyext', - target = makeTargetName(bld, '_glcanvas'), - source = getEtgSipCppFiles(etg) + rc, - uselib = 'WXGL WXPY', - ) - makeExtCopyRule(bld, '_glcanvas') - - - etg = loadETG('etg/_html2.py') - bld(features = 'c cxx cxxshlib pyext', - target = makeTargetName(bld, '_html2'), - source = getEtgSipCppFiles(etg) + rc, - uselib = 'WXWEBVIEW WXPY', - ) - makeExtCopyRule(bld, '_html2') + # Add build rules for each of our ETG generated extension modules + makeETGRule(bld, 'etg/_core.py', '_core', 'WX') + makeETGRule(bld, 'etg/_adv.py', '_adv', 'WXADV') + makeETGRule(bld, 'etg/_dataview.py', '_dataview', 'WXADV') + makeETGRule(bld, 'etg/_grid.py', '_grid', 'WXADV') + makeETGRule(bld, 'etg/_stc.py', '_stc', 'WXSTC') + makeETGRule(bld, 'etg/_html.py', '_html', 'WXHTML') + makeETGRule(bld, 'etg/_glcanvas.py', '_glcanvas', 'WXGL') + makeETGRule(bld, 'etg/_html2.py', '_html2', 'WXWEBVIEW') + makeETGRule(bld, 'etg/_xml.py', '_xml', 'WXXML') + makeETGRule(bld, 'etg/_xrc.py', '_xrc', 'WXXRC') + makeETGRule(bld, 'etg/_richtext.py', '_richtext', 'WXHTML WXRICHTEXT') + makeETGRule(bld, 'etg/_media.py', '_media', 'WXMEDIA') if isDarwin: - etg = loadETG('etg/_webkit.py') - bld(features = 'c cxx cxxshlib pyext', - target = makeTargetName(bld, '_webkit'), - source = getEtgSipCppFiles(etg) + rc, - uselib = 'WXWEBKIT WXPY', - ) - makeExtCopyRule(bld, '_webkit') - - etg = loadETG('etg/_xml.py') - bld(features = 'c cxx cxxshlib pyext', - target = makeTargetName(bld, '_xml'), - source = getEtgSipCppFiles(etg) + rc, - uselib = 'WXXML WXPY', - ) - makeExtCopyRule(bld, '_xml') - - - etg = loadETG('etg/_xrc.py') - bld(features = 'c cxx cxxshlib pyext', - target = makeTargetName(bld, '_xrc'), - source = getEtgSipCppFiles(etg) + rc, - uselib = 'WXXRC WXPY', - ) - makeExtCopyRule(bld, '_xrc') - - - etg = loadETG('etg/_richtext.py') - bld(features = 'c cxx cxxshlib pyext', - target = makeTargetName(bld, '_richtext'), - source = getEtgSipCppFiles(etg) + rc, - uselib = 'WXHTML WXRICHTEXT WXPY', - ) - makeExtCopyRule(bld, '_richtext') - - etg = loadETG('etg/_media.py') - bld(features = 'c cxx cxxshlib pyext', - target = makeTargetName(bld, '_media'), - source = getEtgSipCppFiles(etg) + rc, - uselib = 'WX WXPY WXMEDIA', - ) - makeExtCopyRule(bld, '_media') - + makeETGRule(bld, 'etg/_webkit.py', '_webkit', 'WXWEBKIT') if isWindows: - etg = loadETG('etg/_msw.py') - bld(features = 'c cxx cxxshlib pyext', - target = makeTargetName(bld, '_msw'), - source = getEtgSipCppFiles(etg) + rc, - uselib = 'WX WXPY', - ) - makeExtCopyRule(bld, '_msw') - - + makeETGRule(bld, 'etg/_msw.py', '_msw', 'WX') # ** Add code for new modules here @@ -646,4 +537,16 @@ def _copyEnvGroup(env, srcPostfix, destPostfix): newKey = key[:-len(srcPostfix)] + destPostfix env[newKey] = copy.copy(env[key]) +# Make extension module build rules using info gleaned from an ETG script +def makeETGRule(bld, etgScript, moduleName, libFlags): + from buildtools.config import loadETG, getEtgSipCppFiles + rc = ['src/wxc.rc'] if isWindows else [] + etg = loadETG(etgScript) + bld(features='c cxx cxxshlib pyext', + target=makeTargetName(bld, moduleName), + source=getEtgSipCppFiles(etg) + rc, + uselib='{} WXPY'.format(libFlags), + ) + makeExtCopyRule(bld, moduleName) + #----------------------------------------------------------------------------- From 1f81ba929909941b10455fe63a515c3cb279201f Mon Sep 17 00:00:00 2001 From: Robin Dunn Date: Tue, 21 Jun 2016 00:57:45 -0700 Subject: [PATCH 92/96] Let's try multilib builds on Mac... --- buildtools/build_wxwidgets.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/buildtools/build_wxwidgets.py b/buildtools/build_wxwidgets.py index 19d695fe..31af3e54 100644 --- a/buildtools/build_wxwidgets.py +++ b/buildtools/build_wxwidgets.py @@ -285,7 +285,8 @@ def main(wxDir, args): ] if sys.platform.startswith("darwin"): - wxpy_configure_opts.append("--enable-monolithic") + #wxpy_configure_opts.append("--enable-monolithic") + pass else: wxpy_configure_opts.append("--with-sdl") From a485513e4a3face72d2c741fd028daeaa77a28e2 Mon Sep 17 00:00:00 2001 From: Robin Dunn Date: Tue, 21 Jun 2016 00:58:55 -0700 Subject: [PATCH 93/96] Update copyright text added written to %Copying blocks --- etgtools/sip_generator.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/etgtools/sip_generator.py b/etgtools/sip_generator.py index 7479dff9..2aed9c07 100644 --- a/etgtools/sip_generator.py +++ b/etgtools/sip_generator.py @@ -76,7 +76,7 @@ class SipWrapperGenerator(generators.WrapperGeneratorBase): }; %%Copying - Copyright: (c) 2013 by Total Control Software + Copyright: (c) 2016 by Total Control Software License: wxWindows License %%End From b098f2378c8ea7c6a760524806ba788be5acb21a Mon Sep 17 00:00:00 2001 From: Robin Dunn Date: Tue, 21 Jun 2016 01:04:59 -0700 Subject: [PATCH 94/96] Don't map ignored items --- etgtools/map_generator.py | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/etgtools/map_generator.py b/etgtools/map_generator.py index f9caaac1..23706af2 100644 --- a/etgtools/map_generator.py +++ b/etgtools/map_generator.py @@ -47,6 +47,8 @@ class ItemMapGenerator(generators.DocsGeneratorBase): def generateClass(self, item, imm, scope): # Map names for classes, nested classes and nested enums + if item.ignored: + return name = self._getName(item) if not name or name.startswith('@'): return @@ -66,6 +68,8 @@ class ItemMapGenerator(generators.DocsGeneratorBase): def generateEnum(self, item, imm, scope, topLevel=True): # map names of enum types and enum elements + if item.ignored: + return name = self._getName(item) if name and not name.startswith('@'): imm[name] = scope @@ -81,6 +85,8 @@ class ItemMapGenerator(generators.DocsGeneratorBase): def generateDefault(self, item, imm, scope): # this handles all types that don't need special attention + if item.ignored: + return name = self._getName(item) if not name or name.startswith('@'): return From ebf1ed11381786cf3ed23e8996538a4f35afc417 Mon Sep 17 00:00:00 2001 From: Robin Dunn Date: Tue, 21 Jun 2016 14:13:23 -0700 Subject: [PATCH 95/96] Add a #include via addHeaderCode to the etg template --- bin/make-new-etg-file.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/bin/make-new-etg-file.py b/bin/make-new-etg-file.py index b6df7f32..5809fa6f 100755 --- a/bin/make-new-etg-file.py +++ b/bin/make-new-etg-file.py @@ -56,7 +56,9 @@ def run(): #----------------------------------------------------------------- # Tweak the parsed meta objects in the module object as needed for # customizing the generated code and docstrings. - + + #module.addHeaderCode('#include ') + #c = module.find('') #assert isinstance(c, etgtools.ClassDef) From d8c7b219111b45de496419ec67e8b0f93327c1f7 Mon Sep 17 00:00:00 2001 From: Robin Dunn Date: Wed, 22 Jun 2016 14:33:05 -0700 Subject: [PATCH 96/96] More Clone methods that need to be marked as Factories. --- etg/dialog.py | 7 ++++++- etg/grid.py | 1 + etg/richtextbuffer.py | 14 ++++++++++++-- etgtools/tweaker_tools.py | 2 ++ 4 files changed, 21 insertions(+), 3 deletions(-) diff --git a/etg/dialog.py b/etg/dialog.py index ca4f1ef6..4a1ee588 100644 --- a/etg/dialog.py +++ b/etg/dialog.py @@ -57,7 +57,12 @@ def run(): c.addPyMethod('__exit__', '(self, exc_type, exc_val, exc_tb)', 'self.Destroy()') tools.fixTopLevelWindowClass(c) - + + + c = module.find('wxWindowModalDialogEvent') + tools.fixEventClass(c) + + #----------------------------------------------------------------- tools.doCommonTweaks(module) tools.runGenerators(module) diff --git a/etg/grid.py b/etg/grid.py index 0d91954a..3c8b940b 100644 --- a/etg/grid.py +++ b/etg/grid.py @@ -260,6 +260,7 @@ def run(): c = module.find('wxGridCellAttr') c.addPrivateCopyCtor() c.find('~wxGridCellAttr').ignore(False) + c.find('Clone').factory = True c.find('GetAlignment.hAlign').out = True c.find('GetAlignment.vAlign').out = True diff --git a/etg/richtextbuffer.py b/etg/richtextbuffer.py index 946344bf..d6e96e6f 100644 --- a/etg/richtextbuffer.py +++ b/etg/richtextbuffer.py @@ -214,7 +214,13 @@ def run(): if c.findItem('CalculateRange'): c.find('CalculateRange.end').out = True # TODO: should it be an inOut? - + + if c.findItem('Clone'): + c.find('Clone').factory = True + else: + c.addItem(etgtools.WigCode("""\ + virtual wxRichTextObject* Clone() const /Factory/; + """)) # These are the pure virtuals in the base class. SIP needs to see that # all the derived classes have an implementation, otherwise it will @@ -269,6 +275,10 @@ def run(): c = module.find('wxRichTextBox') _fixDrawObject(c) + #------------------------------------------------------- + c = module.find('wxRichTextCell') + _fixDrawObject(c) + #------------------------------------------------------- c = module.find('wxRichTextField') _fixDrawObject(c) @@ -279,7 +289,7 @@ def run(): tools.ignoreConstOverloads(c) c.find('SetRange.from').name = 'from_' c.find('SetRange.to').name = 'to_' - + c.find('Clone').factory = True #------------------------------------------------------- c = module.find('wxRichTextParagraph') diff --git a/etgtools/tweaker_tools.py b/etgtools/tweaker_tools.py index 34e7a0f9..9596eadc 100644 --- a/etgtools/tweaker_tools.py +++ b/etgtools/tweaker_tools.py @@ -212,6 +212,8 @@ def fixEventClass(klass, ignoreProtected=True): # it won't think that they are abstract classes too. if not klass.findItem('Clone'): klass.addPublic('virtual wxEvent* Clone() const /Factory/;') + else: + klass.findItem('Clone').factory = True # Add a private assignment operator so the back-end (if it's watching out # for this) won't try to make copies by assignment.
- - - - - - - - - - - - - - - + - -