X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/69ac96fd0d0e7b9d0fb1b349fe043502380ca929..6caa0f5cd18fe9fb39c207d5f31fa5633479a822:/wxPython/src/_app_ex.py?ds=inline diff --git a/wxPython/src/_app_ex.py b/wxPython/src/_app_ex.py index 98b35efc21..a7fef27613 100644 --- a/wxPython/src/_app_ex.py +++ b/wxPython/src/_app_ex.py @@ -27,7 +27,7 @@ class PyOnDemandOutputWindow: style=wx.TE_MULTILINE|wx.TE_READONLY) self.text.AppendText(st) self.frame.Show(True) - EVT_CLOSE(self.frame, self.OnCloseWindow) + self.frame.Bind(wx.EVT_CLOSE, self.OnCloseWindow) def OnCloseWindow(self, event): @@ -69,7 +69,7 @@ class PyOnDemandOutputWindow: #---------------------------------------------------------------------- _defRedirect = (wx.Platform == '__WXMSW__' or wx.Platform == '__WXMAC__') - + class App(wx.PyApp): """ The ``wx.App`` class represents the application and is used to: @@ -127,22 +127,26 @@ class App(wx.PyApp): initialization to ensure that the system, toolkit and wxWidgets are fully initialized. """ + wx.PyApp.__init__(self) - if wx.Platform == "__WXMAC__": - try: - import MacOS - if not MacOS.WMAvailable(): - print """\ -This program needs access to the screen. Please run with 'pythonw', -not 'python', and only when you are logged in on the main display of -your Mac.""" - _sys.exit(1) - except SystemExit: - raise - except: - pass + # make sure we can create a GUI + if not self.IsDisplayAvailable(): + + if wx.Platform == "__WXMAC__": + msg = """This program needs access to the screen. +Please run with 'pythonw', not 'python', and only when you are logged +in on the main display of your Mac.""" + + elif wx.Platform == "__WXGTK__": + msg ="Unable to access the X Display, is $DISPLAY set properly?" + + else: + msg = "Unable to create GUI" + # TODO: more description is needed for wxMSW... + raise SystemExit(msg) + # This has to be done before OnInit self.SetUseBestVisual(useBestVisual) @@ -168,20 +172,30 @@ your Mac.""" # Use Python's install prefix as the default wx.StandardPaths.Get().SetInstallPrefix(_sys.prefix) + # Until the new native control for wxMac is up to par, still use the generic one. + wx.SystemOptions.SetOptionInt("mac.listctrl.always_use_generic", 1) + # This finishes the initialization of wxWindows and then calls # the OnInit that should be present in the derived class self._BootstrapApp() - def __del__(self): - try: - self.RestoreStdio() # Just in case the MainLoop was overridden - finally: - wx.PyApp.__del__(self) + def OnPreInit(self): + """ + Things that must be done after _BootstrapApp has done its + thing, but would be nice if they were already done by the time + that OnInit is called. + """ + wx.StockGDI._initStockObjects() + + + def __del__(self, destroy=wx.PyApp.__del__): + self.RestoreStdio() # Just in case the MainLoop was overridden + destroy(self) def Destroy(self): + self.this.own(False) wx.PyApp.Destroy(self) - self.thisown = 0 def SetTopWindow(self, frame): """Set the \"main\" top level window""" @@ -206,7 +220,10 @@ your Mac.""" def RestoreStdio(self): - _sys.stdout, _sys.stderr = self.saveStdio + try: + _sys.stdout, _sys.stderr = self.saveStdio + except: + pass def SetOutputWindowAttributes(self, title=None, pos=None, size=None):