X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/d14a1e28567de23c586bc80017073d0c39f8d18f..52f52ebc4e0be6a9899d328b08db9eb14629d219:/wxPython/src/_core_ex.py?ds=sidebyside diff --git a/wxPython/src/_core_ex.py b/wxPython/src/_core_ex.py index b26ed2113f..52edf3c955 100644 --- a/wxPython/src/_core_ex.py +++ b/wxPython/src/_core_ex.py @@ -1,15 +1,12 @@ #---------------------------------------------------------------------------- -# Use Python's bool constants if available, make aliases if not +# Use Python's bool constants if available, make some if not try: True except NameError: - True = 1==1 - False = 1==0 + __builtins__.True = 1==1 + __builtins__.False = 1==0 -# Backwards compaatibility -TRUE = true = True -FALSE = false = False # workarounds for bad wxRTTI names @@ -36,7 +33,6 @@ if RELEASE_VERSION != _core.RELEASE_VERSION: class PyDeadObjectError(AttributeError): pass - class _wxPyDeadObject(object): """ Instances of wx objects that are OOR capable will have their __class__ @@ -46,15 +42,46 @@ class _wxPyDeadObject(object): 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 ): + def __repr__(self): if not hasattr(self, "_name"): self._name = "[unknown]" return self.reprStr % self._name - def __getattr__( self, *args ): + def __getattr__(self, *args): if not hasattr(self, "_name"): self._name = "[unknown]" - raise PyDeadObjectError( self.attrStr % self._name ) + raise PyDeadObjectError(self.attrStr % self._name) + + def __nonzero__(self): + return 0 + + + +class PyUnbornObjectError(AttributeError): + pass + +class _wxPyUnbornObject(object): + """ + Some stock objects are created when the wx.core module is + imported, but their C++ instance is not created until the wx.App + object is created and initialized. These object instances will + temporarily have their __class__ changed to this class so an + exception will be raised if they are used before the C++ instance + is ready. + """ + + reprStr = "wxPython wrapper for UNBORN object! (The C++ object is not initialized yet.)" + attrStr = "The C++ part of this object has not been initialized, attribute access not allowed." + + def __repr__(self): + #if not hasattr(self, "_name"): + # self._name = "[unknown]" + return self.reprStr #% self._name + + def __getattr__(self, *args): + #if not hasattr(self, "_name"): + # self._name = "[unknown]" + raise PyUnbornObjectError(self.attrStr) # % self._name ) def __nonzero__(self): return 0 @@ -189,5 +216,10 @@ from windows import * from controls import * from misc import * + +# Fixup the stock objects since they can't be used yet. (They will be +# restored in wx.PyApp.OnInit.) +_core._wxPyFixStockObjects() + #---------------------------------------------------------------------------- #----------------------------------------------------------------------------