diff --git a/CHANGES.rst b/CHANGES.rst index 92a2b8ef..77c77ef5 100644 --- a/CHANGES.rst +++ b/CHANGES.rst @@ -13,7 +13,7 @@ wxPython Changelog ------- * (not yet released) -PyPI: https://pypi.python.org/pypi/wxPython/4.0.0b1 +PyPI: https://pypi.python.org/pypi/wxPython/4.0.0b2 Extras: https://extras.wxPython.org/wxPython4/extras/ Changes in this release include the following: @@ -26,6 +26,9 @@ Changes in this release include the following: * Add missing wx.VScrolledWindow methods listed in the docs as deprecated but still present. (#441) +* Fixed copy/paste error in wx.BusyInfo.__exit__ (#449) + + 4.0.0b1 diff --git a/MANIFEST.in b/MANIFEST.in index 41c49fb8..0f8652cb 100644 --- a/MANIFEST.in +++ b/MANIFEST.in @@ -3,10 +3,14 @@ # still an easy way to specify what data files (non *.py files) should be # included in the package dirs. # +# See cmd_sdist() in build.py for the actual building of the source dist. +# recursive-include wx ** recursive-include license *.txt include LICENSE.txt +graft docs +prune docs/sphinx/build recursive-exclude wx .git recursive-exclude wx *.pyc diff --git a/build.py b/build.py index eab9baac..c0aaaf62 100755 --- a/build.py +++ b/build.py @@ -1766,10 +1766,16 @@ def cmd_sdist(options, args): getWafCmd() copyFile('bin/waf-%s' % wafCurrentVersion, os.path.join(PDEST, 'bin')) - # and the REV.txt if there is one + # And the REV.txt if there is one if os.path.exists('REV.txt'): copyFile('REV.txt', PDEST) + # Copy the Sphinx source files in the docs tree, excluding the html and + # sphinx/build folders, if present. + shutil.rmtree(opj(PDEST, 'docs'), ignore_errors=True) + shutil.copytree('docs', opj(PDEST, 'docs'), + ignore=shutil.ignore_patterns('html', 'build', '__pycache__', 'cpp')) + # Add some extra stuff to the root folder cmd_egg_info(options, args, egg_base=PDEST) copyFile(opj(PDEST, '{}.egg-info/PKG-INFO'.format(baseName)), diff --git a/buildbot/master.cfg b/buildbot/master.cfg index a4f09185..53b1943e 100644 --- a/buildbot/master.cfg +++ b/buildbot/master.cfg @@ -213,7 +213,7 @@ def makeFactory(port, buildType='buildOnly', pyVer='2.7'): factory = BuildFactory() # Was the build started from the force build form with a "fullclean" - # property set? If so, clobber the git workspace and start fresh. + # property set? If so, fully clobber the git workspace and start fresh. cmd = ['bash', '-c', WithProperties('if [ %(fullclean:-no)s == yes ]; then rm -rf ../Phoenix; echo fully cleaned; fi'), ] @@ -226,7 +226,7 @@ def makeFactory(port, buildType='buildOnly', pyVer='2.7'): clean = '' # Start from a clean build tree for the daily "dist" builds - if buildType in ['dist', 'docs', 'vagrant']: + if buildType in ['dist', 'sdist', 'docs', 'vagrant']: mode = 'full' method = 'clobber' @@ -246,7 +246,7 @@ def makeFactory(port, buildType='buildOnly', pyVer='2.7'): if buildType == 'sdist': cmd = 'python -u build.py %s setrev dox touch etg sip build '\ - 'sdist sdist_demo --upload' % pyVer + 'wxlib sdist sdist_demo --upload' % pyVer elif buildType == 'docs': cmd = 'python -u build.py %s setrev dox touch etg sip build wxlib ' \ diff --git a/demo/Main.py b/demo/Main.py index 79364bfc..f8c737d1 100644 --- a/demo/Main.py +++ b/demo/Main.py @@ -2478,8 +2478,8 @@ class wxPythonDemo(wx.Frame): self.mainmenu = None self.StopDownload() - # if self.tbicon is not None: - # self.tbicon.Destroy() + if self.tbicon is not None: + self.tbicon.Destroy() config = GetConfig() config.Write('ExpansionState', str(self.tree.GetExpansionState())) diff --git a/docs/sphinx/rest_substitutions/snippets/python/converted/wx.FileDialog.1.py b/docs/sphinx/rest_substitutions/snippets/python/converted/wx.FileDialog.1.py index 97c2e808..b375fede 100644 --- a/docs/sphinx/rest_substitutions/snippets/python/converted/wx.FileDialog.1.py +++ b/docs/sphinx/rest_substitutions/snippets/python/converted/wx.FileDialog.1.py @@ -1,27 +1,23 @@ - + def OnOpen(self, event): - + if self.contentNotSaved: - if wx.MessageBox("Current content has not been saved! Proceed?", "Please confirm", wx.ICON_QUESTION | wx.YES_NO, self) == wx.NO: return - - # else: proceed asking to the user the new file to open - - openFileDialog = wx.FileDialog(self, "Open XYZ file", "", "", - "XYZ files (*.xyz)|*.xyz", wx.FD_OPEN | wx.FD_FILE_MUST_EXIST) - - if openFileDialog.ShowModal() == wx.ID_CANCEL: - return # the user changed idea... - - # proceed loading the file chosen by the user - # this can be done with e.g. wxPython input streams: - input_stream = wx.FileInputStream(openFileDialog.GetPath()) - - if not input_stream.IsOk(): - - wx.LogError("Cannot open file '%s'."%openFileDialog.GetPath()) - return - - \ No newline at end of file + + # otherwise ask the user what new file to open + with wx.FileDialog(self, "Open XYZ file", wildcard="XYZ files (*.xyz)|*.xyz", + style=wx.FD_OPEN | wx.FD_FILE_MUST_EXIST) as fileDialog: + + if fileDialog.ShowModal() == wx.ID_CANCEL: + return # the user changed their mind + + # Proceed loading the file chosen by the user + pathname = fileDialog.GetPath() + try: + with open(pathname, 'r') as file: + self.doLoadDataOrWhatever(file) + except IOError: + wx.LogError("Cannot open file '%s'." % newfile) + diff --git a/docs/sphinx/rest_substitutions/snippets/python/converted/wx.FileDialog.2.py b/docs/sphinx/rest_substitutions/snippets/python/converted/wx.FileDialog.2.py index e47a38d6..1ea9c7a2 100644 --- a/docs/sphinx/rest_substitutions/snippets/python/converted/wx.FileDialog.2.py +++ b/docs/sphinx/rest_substitutions/snippets/python/converted/wx.FileDialog.2.py @@ -1,17 +1,17 @@ - + def OnSaveAs(self, event): - - saveFileDialog = wx.FileDialog(self, "Save XYZ file", "", "", - "XYZ files (*.xyz)|*.xyz", wx.FD_SAVE | wx.FD_OVERWRITE_PROMPT) - - if saveFileDialog.ShowModal() == wx.ID_CANCEL: - return # the user changed idea... - - # save the current contents in the file - # this can be done with e.g. wxPython output streams: - output_stream = wx.FileOutputStream(saveFileDialog.GetPath()) - - if not output_stream.IsOk(): - wx.LogError("Cannot save current contents in file '%s'."%saveFileDialog.GetPath()) - return - + + with wx.FileDialog(self, "Save XYZ file", wildcard="XYZ files (*.xyz)|*.xyz", + style=wx.FD_SAVE | wx.FD_OVERWRITE_PROMPT) as fileDialog: + + if fileDialog.ShowModal() == wx.ID_CANCEL: + return # the user changed their mind + + # save the current contents in the file + pathname = fileDialog.GetPath() + try: + with open(pathname, 'w') as file: + self.doSaveData(file) + except IOError: + wx.LogError("Cannot save current data in file '%s'." % pathname) + diff --git a/etg/busyinfo.py b/etg/busyinfo.py index 38d00435..1fc68a43 100644 --- a/etg/busyinfo.py +++ b/etg/busyinfo.py @@ -38,7 +38,7 @@ def run(): # context manager methods c.addPyMethod('__enter__', '(self)', 'return self') - c.addPyMethod('__exit__', '(self, exc_type, exc_val, exc_tb)', 'self.Destroy()') + c.addPyMethod('__exit__', '(self, exc_type, exc_val, exc_tb)', 'return False') #----------------------------------------------------------------- diff --git a/unittests/test_busyinfo.py b/unittests/test_busyinfo.py index 042628d8..9b398e8c 100644 --- a/unittests/test_busyinfo.py +++ b/unittests/test_busyinfo.py @@ -12,6 +12,11 @@ class busyinfo_Tests(wtc.WidgetTestCase): del busy + def test_busyinfo2(self): + with wx.BusyInfo('This is a busy info message'): + self.waitFor(250) + + #--------------------------------------------------------------------------- if __name__ == '__main__':