]> git.saurik.com Git - wxWidgets.git/blobdiff - wxPython/src/_extras.py
fix to tex format documentation for wxSVG
[wxWidgets.git] / wxPython / src / _extras.py
index 866ab98cf77522bdcbc559111cd06925fa73e42f..5289d06a0eb4453f8ed7c89c78fbdc5d262ae175 100644 (file)
@@ -131,6 +131,9 @@ def EVT_WINDOW_CREATE(win, func):
 def EVT_WINDOW_DESTROY(win, func):
     win.Connect(-1, -1, wxEVT_DESTROY, func)
 
+def EVT_SET_CURSOR(win, func):
+    win.Connect(-1, -1, wxEVT_SET_CURSOR, func)
+
 
 
 def EVT_IDLE(win, func):
@@ -198,6 +201,9 @@ def EVT_MOUSE_EVENTS(win, func):
     win.Connect(-1, -1, wxEVT_LEAVE_WINDOW,  func)
     win.Connect(-1, -1, wxEVT_ENTER_WINDOW,  func)
 
+def EVT_MOUSE_CAPTURE_CHANGED(win, func):
+    win.Connect(-1, -1, wxEVT_MOUSE_CAPTURE_CHANGED, func)
+
 # EVT_COMMAND
 def EVT_COMMAND(win, id, cmd, func):
     win.Connect(id, -1, cmd, func)
@@ -648,7 +654,32 @@ def wxPyTypeCast(obj, typeStr):
 
 
 #----------------------------------------------------------------------------
+_wxCallAfterId = None
 
+def wxCallAfter(callable, *args, **kw):
+    """
+    Call the specified function after the current and pending event
+    handlers have been completed.
+    """
+    app = wxGetApp()
+    assert app, 'No wxApp created yet'
+
+    global _wxCallAfterId
+    if _wxCallAfterId is None:
+        _wxCallAfterId = wxNewId()
+        app.Connect(-1, -1, _wxCallAfterId,
+              lambda event: apply(event.callable, event.args, event.kw) )
+    evt = wxPyEvent()
+    evt.SetEventType(_wxCallAfterId)
+    evt.callable = callable
+    evt.args = args
+    evt.kw = kw
+    wxPostEvent(app, evt)
+
+#----------------------------------------------------------------------
+
+class wxPyDeadObjectError(AttributeError):
+    pass
 
 class _wxPyDeadObject:
     """
@@ -656,15 +687,21 @@ class _wxPyDeadObject:
     changed to this class when the C++ object is deleted.  This should help
     prevent crashes due to referencing a bogus C++ pointer.
     """
+    reprStr = "wxPython wrapper for DELETED %s object! (The C++ object no longer exists.)"
+    attrStr = "The C++ part of the %s object has been deleted, attribute access no longer allowed."
+
     def __repr__( self ):
         if not hasattr(self, "_name"):
             self._name = "[unknown]"
-        return 'wxPython wrapper for deleted %s object!!! Programming logic error' % self._name
+        return self.reprStr % self._name
 
     def __getattr__( self, *args ):
         if not hasattr(self, "_name"):
             self._name = "[unknown]"
-        raise ValueError, 'Attempt to access attribute of a deleted %s object' % self._name
+        raise wxPyDeadObjectError( self.attrStr % self._name )
+
+    def __nonzero__(self):
+        return 0
 
 
 #----------------------------------------------------------------------
@@ -709,7 +746,7 @@ class wxPyOnDemandOutputWindow:
             self.frame.Close()
 
 
-_defRedirect = (wxPlatform == '__WXMSW__')
+_defRedirect = (wxPlatform == '__WXMSW__' or wxPlatform == '__WXMAC__')
 
 #----------------------------------------------------------------------
 # The main application class.  Derive from this and implement an OnInit