X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/30210c7d61eec21dcda889f39c39e1f421908b7f..d0ee33f5c6908b4ac5e1364381f0ef00942e3936:/wxPython/src/_app_ex.py?ds=sidebyside diff --git a/wxPython/src/_app_ex.py b/wxPython/src/_app_ex.py index 5ea24fb4e8..f08eef9f41 100644 --- a/wxPython/src/_app_ex.py +++ b/wxPython/src/_app_ex.py @@ -11,6 +11,8 @@ class PyOnDemandOutputWindow: def __init__(self, title = "wxPython: stdout/stderr"): self.frame = None self.title = title + self.pos = wx.DefaultPosition + self.size = (450, 300) self.parent = None def SetParent(self, parent): @@ -19,12 +21,11 @@ class PyOnDemandOutputWindow: def CreateOutputWindow(self, st): - self.frame = wx.Frame(self.parent, -1, self.title, - style=wx.DEFAULT_FRAME_STYLE | wx.NO_FULL_REPAINT_ON_RESIZE) + self.frame = wx.Frame(self.parent, -1, self.title, self.pos, self.size, + style=wx.DEFAULT_FRAME_STYLE) self.text = wx.TextCtrl(self.frame, -1, "", - style = wx.TE_MULTILINE | wx.TE_READONLY) + style=wx.TE_MULTILINE|wx.TE_READONLY) self.text.AppendText(st) - self.frame.SetSize((450, 300)) self.frame.Show(True) EVT_CLOSE(self.frame, self.OnCloseWindow) @@ -60,6 +61,10 @@ class PyOnDemandOutputWindow: wx.CallAfter(self.frame.Close) + def flush(self): + pass + + #---------------------------------------------------------------------- @@ -86,7 +91,7 @@ class App(wx.PyApp): ``self.SetTopWindow(frame)``. :see: `wx.PySimpleApp` for a simpler app class that can be used - directly. + directly. """ outputWindowClass = PyOnDemandOutputWindow @@ -160,17 +165,21 @@ your Mac.""" if redirect: self.RedirectStdio(filename) + # Use Python's install prefix as the default + wx.StandardPaths.Get().SetInstallPrefix(_sys.prefix) + # 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 - except: - pass + def __del__(self, destroy=wx.PyApp.__del__): + self.RestoreStdio() # Just in case the MainLoop was overridden + destroy(self) + def Destroy(self): + wx.PyApp.Destroy(self) + self.thisown = 0 def SetTopWindow(self, frame): """Set the \"main\" top level window""" @@ -195,7 +204,26 @@ 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): + """ + Set the title, position and/or size of the output window if + the stdio has been redirected. This should be called before + any output would cause the output window to be created. + """ + if self.stdioWin: + if title is not None: + self.stdioWin.title = title + if pos is not None: + self.stdioWin.pos = pos + if size is not None: + self.stdioWin.size = size + @@ -236,7 +264,6 @@ class PySimpleApp(wx.App): wx.App.__init__(self, redirect, filename, useBestVisual, clearSigInt) def OnInit(self): - wx.InitAllImageHandlers() return True