]> git.saurik.com Git - wxWidgets.git/blobdiff - wxPython/src/_extras.py
make wxArtProvider pure virtual (I was not so on
[wxWidgets.git] / wxPython / src / _extras.py
index 866ab98cf77522bdcbc559111cd06925fa73e42f..68677a3da86edcbaf8ad12f66c39523bb4f9daf4 100644 (file)
@@ -198,6 +198,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)
@@ -649,6 +652,8 @@ def wxPyTypeCast(obj, typeStr):
 
 #----------------------------------------------------------------------------
 
+class wxPyDeadObjectError(AttributeError):
+    pass
 
 class _wxPyDeadObject:
     """
@@ -656,15 +661,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
 
 
 #----------------------------------------------------------------------