X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/2abc0a0f9bf1a1c4fb3e807be687850949603e5c..b854b7b82e033d1dbd9d300402df50ec5e1e8b74:/utils/wxPython/src/_extras.py?ds=sidebyside diff --git a/utils/wxPython/src/_extras.py b/utils/wxPython/src/_extras.py index 068413ea1b..cad11d21a1 100644 --- a/utils/wxPython/src/_extras.py +++ b/utils/wxPython/src/_extras.py @@ -146,12 +146,29 @@ def EVT_ICONIZE(win, func): def EVT_NAVIGATION_KEY(win, func): win.Connect(-1, -1, wxEVT_NAVIGATION_KEY, func) +def EVT_PALETTE_CHANGED(win, func): + win.Connect(-1, -1, wxEVT_PALETTE_CHANGED, func) + +def EVT_QUERY_NEW_PALETTE(win, func): + win.Connect(-1, -1, wxEVT_QUERY_NEW_PALETTE, func) + +def EVT_WINDOW_CREATE(win, func): + win.Connect(-1, -1, wxEVT_CREATE, func) + +def EVT_WINDOW_DESTROY(win, func): + win.Connect(-1, -1, wxEVT_DESTROY, func) + + + def EVT_IDLE(win, func): win.Connect(-1, -1, wxEVT_IDLE, func) def EVT_UPDATE_UI(win, id, func): win.Connect(id, -1, wxEVT_UPDATE_UI, func) +def EVT_UPDATE_UI_RANGE(win, id, id2, func): + win.Connect(id, id2, wxEVT_UPDATE_UI, func) + # Mouse Events def EVT_LEFT_DOWN(win, func): @@ -387,15 +404,25 @@ def EVT_COMBOBOX(win, id, func): def EVT_TOOL(win, id, func): win.Connect(id, -1, wxEVT_COMMAND_TOOL_CLICKED, func) +def EVT_TOOL_RANGE(win, id, id2, func): + win.Connect(id, id2, wxEVT_COMMAND_TOOL_CLICKED, func) + def EVT_TOOL_RCLICKED(win, id, func): win.Connect(id, -1, wxEVT_COMMAND_TOOL_RCLICKED, func) +def EVT_TOOL_RCLICKED_RANGE(win, id, id2, func): + win.Connect(id, id2, wxEVT_COMMAND_TOOL_RCLICKED, func) + def EVT_TOOL_ENTER(win, id, func): win.Connect(id, -1, wxEVT_COMMAND_TOOL_ENTER, func) def EVT_CHECKLISTBOX(win, id, func): win.Connect(id, -1, wxEVT_COMMAND_CHECKLISTBOX_TOGGLED, func) +def EVT_SPINCTRL(win, id, func): + win.Connect(id, -1, wxEVT_COMMAND_SPINCTRL_UPDATED, func) + + # Generic command events @@ -663,6 +690,8 @@ wxPyDefaultSize.Set(-1,-1) wxDefaultPosition = wxPyDefaultPosition wxDefaultSize = wxPyDefaultSize +# backwards compatibility +wxNoRefBitmap = wxBitmap #---------------------------------------------------------------------- # This helper function will take a wxPython object and convert it to @@ -692,7 +721,8 @@ def wxPyTypeCast(obj, typeStr): newPtr = ptrcast(obj, typeStr+"_p") theClass = globals()[typeStr+"Ptr"] theObj = theClass(newPtr) - theObj.thisown = obj.thisown + if hasattr(obj, "this"): + theObj.thisown = obj.thisown return theObj @@ -703,15 +733,18 @@ class wxPyOnDemandOutputWindow: self.frame = None self.title = title + def SetParent(self, parent): self.parent = parent + def OnCloseWindow(self, event): if self.frame != None: self.frame.Destroy() self.frame = None self.text = None + # this provides the file-like behaviour def write(self, str): if not self.frame: @@ -723,7 +756,10 @@ class wxPyOnDemandOutputWindow: EVT_CLOSE(self.frame, self.OnCloseWindow) self.text.AppendText(str) + def close(self): + if self.frame != None: + self.frame.Destroy() self.frame = None self.text = None @@ -759,29 +795,48 @@ class wxApp(wxPyApp): def SetTopWindow(self, frame): if self.stdioWin: self.stdioWin.SetParent(frame) - sys.stdout = self.stdioWin #sys.stderr = + sys.stderr = sys.stdout = self.stdioWin wxPyApp.SetTopWindow(self, frame) + def MainLoop(self): wxPyApp.MainLoop(self) self.RestoreStdio() + def RedirectStdio(self, filename): if filename: sys.stdout = sys.stderr = open(filename, 'a') else: self.stdioWin = self.outputWindowClass() # wxPyOnDemandOutputWindow + def RestoreStdio(self): sys.stdout, sys.stderr = self.saveStdio if self.stdioWin != None: self.stdioWin.close() +#---------------------------------------------------------------------------- + +class wxPySimpleApp(wxApp): + def __init__(self): + wxApp.__init__(self, 0) + def OnInit(self): + return true #---------------------------------------------------------------------------- # DO NOT hold any other references to this object. This is how we know when -# to cleanup system resources that wxWin is holding... +# to cleanup system resources that wxWin is holding. When this module is +# unloaded, the refcount on __cleanMeUp goes to zero and it calls the +# wxApp_CleanUp function. + +class __wxPyCleanup: + def __init__(self): + self.cleanup = wxc.wxApp_CleanUp + def __del__(self): + self.cleanup() + __cleanMeUp = __wxPyCleanup() #----------------------------------------------------------------------------