X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/c856d372d1d4f4223511d2988298ba3d503222a4..70541533c8e108249a82fbe2bc05ccfb73bf028d:/wxPython/src/_extras.py?ds=sidebyside diff --git a/wxPython/src/_extras.py b/wxPython/src/_extras.py index 5e16b1f7a4..6551f91bce 100644 --- a/wxPython/src/_extras.py +++ b/wxPython/src/_extras.py @@ -169,6 +169,8 @@ def EVT_LEAVE_WINDOW(win, func): def EVT_ENTER_WINDOW(win, func): win.Connect(-1, -1, wxEVT_ENTER_WINDOW, func) +def EVT_MOUSEWHEEL(win, func): + win.Connect(-1, -1, wxEVT_MOUSEWHEEL, func) # all mouse events def EVT_MOUSE_EVENTS(win, func): @@ -443,6 +445,9 @@ def EVT_TREE_BEGIN_DRAG(win, id, func): def EVT_TREE_BEGIN_RDRAG(win, id, func): win.Connect(id, -1, wxEVT_COMMAND_TREE_BEGIN_RDRAG, func) +def EVT_TREE_END_DRAG(win, id, func): + win.Connect(id, -1, wxEVT_COMMAND_TREE_END_DRAG, func) + def EVT_TREE_BEGIN_LABEL_EDIT(win, id, func): win.Connect(id, -1, wxEVT_COMMAND_TREE_BEGIN_LABEL_EDIT, func) @@ -616,10 +621,10 @@ def EVT_END_PROCESS(eh, id, func): # wxJoyStick def EVT_JOY_DOWN(win, func): - win.Connect(-1, -1, wxEVT_JOY_DOWN, func) + win.Connect(-1, -1, wxEVT_JOY_BUTTON_DOWN, func) def EVT_JOY_UP(win, func): - win.Connect(-1, -1, wxEVT_JOY_UP, func) + win.Connect(-1, -1, wxEVT_JOY_BUTTON_UP, func) def EVT_JOY_MOVE(win, func): win.Connect(-1, -1, wxEVT_JOY_MOVE, func) @@ -628,11 +633,34 @@ def EVT_JOY_ZMOVE(win, func): win.Connect(-1, -1, wxEVT_JOY_ZMOVE, func) def EVT_JOYSTICK_EVENTS(win, func): - win.Connect(-1, -1, wxEVT_JOY_DOWN, func) - win.Connect(-1, -1, wxEVT_JOY_UP, func) + win.Connect(-1, -1, wxEVT_JOY_BUTTON_DOWN, func) + win.Connect(-1, -1, wxEVT_JOY_BUTTON_UP, func) win.Connect(-1, -1, wxEVT_JOY_MOVE, func) win.Connect(-1, -1, wxEVT_JOY_ZMOVE, func) + +def EVT_TOGGLEBUTTON(win, id, func): + win.Connect(id, -1, wxEVT_COMMAND_TOGGLEBUTTON_CLICKED, func) + + + +# Help events +def EVT_HELP(win, id, func): + win.Connect(id, -1, wxEVT_HELP, func) + +def EVT_HELP_RANGE(win, id, id2, func): + win.Connect(id, id2, wxEVT_HELP, func) + +def EVT_DETAILED_HELP(win, id, func): + win.Connect(id, -1, wxEVT_DETAILED_HELP, func) + +def EVT_DETAILED_HELP_RANGE(win, id, id2, func): + win.Connect(id, id2, wxEVT_DETAILED_HELP, func) + +def EVT_CONTEXT_MENU(win, func): + win.Connect(-1, -1, wxEVT_CONTEXT_MENU, func) + + #---------------------------------------------------------------------- class wxTimer(wxPyTimer): @@ -645,17 +673,9 @@ class wxTimer(wxPyTimer): self.SetOwner(evtHandler, id) #---------------------------------------------------------------------- -# Some wxWin methods can take "NULL" as parameters, but the shadow classes -# expect an object with the SWIG pointer as a 'this' member. This class -# and instance fools the shadow into passing the NULL pointer. - -## NOTE: This is not needed anymore as None can be passed instead and -# will be interpreted as NULL. -class _NullObj: - this = 'NULL' # SWIG converts this to (void*)0 - -NULL = _NullObj() +NULL = None # For backwards compatibility only. You should really be + # using None now. #---------------------------------------------------------------------- @@ -694,11 +714,14 @@ wxPyDefaultSize = wxDefaultSize def wxPyTypeCast(obj, typeStr): if obj is None: return None + theClass = globals()[typeStr+"Ptr"] + typeStr = __wxPyPtrTypeMap.get(typeStr, typeStr) if hasattr(obj, "this"): + if obj.__class__ is theClass: # if already the right type then just return it + return obj newPtr = ptrcast(obj.this, typeStr+"_p") else: newPtr = ptrcast(obj, typeStr+"_p") - theClass = globals()[typeStr+"Ptr"] theObj = theClass(newPtr) if hasattr(obj, "this"): theObj.thisown = obj.thisown @@ -714,22 +737,25 @@ class wxPyOnDemandOutputWindow: self.title = title self.parent = None - 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 output behaviour + # These methods provide the file-like output behaviour. def write(self, str): + if not wxThread_IsMain(): + # Aquire the GUI mutex before making GUI calls. Mutex is released + # when locker is deleted at the end of this function. + locker = wxMutexGuiLocker() + if not self.frame: - self.frame = wxFrame(self.parent, -1, self.title) + self.frame = wxFrame(self.parent, -1, self.title, + style=wxDEFAULT_FRAME_STYLE|wxNO_FULL_REPAINT_ON_RESIZE) self.text = wxTextCtrl(self.frame, -1, "", style = wxTE_MULTILINE|wxTE_READONLY) self.frame.SetSize(wxSize(450, 300)) @@ -737,13 +763,13 @@ class wxPyOnDemandOutputWindow: EVT_CLOSE(self.frame, self.OnCloseWindow) self.text.AppendText(str) - def close(self): if self.frame != None: + if not wxThread_IsMain(): + locker = wxMutexGuiLocker() self.frame.Close() - _defRedirect = (wxPlatform == '__WXMSW__') #---------------------------------------------------------------------- @@ -830,4 +856,6 @@ class __wxPyCleanup: self.cleanup() __cleanMeUp = __wxPyCleanup() + +#---------------------------------------------------------------------------- #----------------------------------------------------------------------------