X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/9e58eb5674cfac859568c9a4b1030012e1f0eb64..015fd9ef4833ec3d8b0043a1c7e448c8be4f734a:/wxPython/src/_core_ex.py diff --git a/wxPython/src/_core_ex.py b/wxPython/src/_core_ex.py index 52edf3c955..ad4f9364ea 100644 --- a/wxPython/src/_core_ex.py +++ b/wxPython/src/_core_ex.py @@ -6,6 +6,8 @@ try: except NameError: __builtins__.True = 1==1 __builtins__.False = 1==0 + def bool(value): return not not value + __builtins__.bool = bool @@ -22,9 +24,9 @@ __wxPyPtrTypeMap['wxStatusBar95'] = 'wxStatusBar' from __version__ import * __version__ = VERSION_STRING -assert MAJOR_VERSION == _core.MAJOR_VERSION, "wxPython/wxWindows version mismatch" -assert MINOR_VERSION == _core.MINOR_VERSION, "wxPython/wxWindows version mismatch" -if RELEASE_VERSION != _core.RELEASE_VERSION: +assert MAJOR_VERSION == _core_.MAJOR_VERSION, "wxPython/wxWindows version mismatch" +assert MINOR_VERSION == _core_.MINOR_VERSION, "wxPython/wxWindows version mismatch" +if RELEASE_VERSION != _core_.RELEASE_VERSION: import warnings warnings.warn("wxPython/wxWindows release number mismatch") @@ -62,7 +64,7 @@ class PyUnbornObjectError(AttributeError): class _wxPyUnbornObject(object): """ - Some stock objects are created when the wx.core module is + 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 @@ -94,10 +96,13 @@ def CallAfter(callable, *args, **kw): """ Call the specified function after the current and pending event handlers have been completed. This is also good for making GUI - method calls from non-GUI threads. + method calls from non-GUI threads. Any extra positional or + keyword args are passed on to the callable when it is called. + + :see: `wx.FutureCall` """ app = wx.GetApp() - assert app, 'No wxApp created yet' + assert app is not None, 'No wx.App created yet' global _wxPyCallAfterId if _wxPyCallAfterId is None: @@ -117,10 +122,10 @@ def CallAfter(callable, *args, **kw): class FutureCall: """ - A convenience class for wxTimer, that calls the given callable + A convenience class for wx.Timer, that calls the given callable object once after the given amount of milliseconds, passing any positional or keyword args. The return value of the callable is - availbale after it has been run with the GetResult method. + availbale after it has been run with the `GetResult` method. If you don't need to get the return value or restart the timer then there is no need to hold a reference to this object. It will @@ -128,12 +133,15 @@ class FutureCall: has a reference to self.Notify) but the cycle will be broken when the timer completes, automatically cleaning up the wx.FutureCall object. + + :see: `wx.CallAfter` """ def __init__(self, millis, callable, *args, **kwargs): self.millis = millis self.callable = callable self.SetArgs(*args, **kwargs) self.runCount = 0 + self.running = False self.hasRun = False self.result = None self.timer = None @@ -155,6 +163,7 @@ class FutureCall: self.Stop() self.timer = wx.PyTimer(self.Notify) self.timer.Start(self.millis, wx.TIMER_ONE_SHOT) + self.running = True Restart = Start @@ -201,25 +210,54 @@ class FutureCall: """ if self.callable and getattr(self.callable, 'im_self', True): self.runCount += 1 + self.running = False self.result = self.callable(*self.args, **self.kwargs) self.hasRun = True - wx.CallAfter(self.Stop) + if not self.running: + # if it wasn't restarted, then cleanup + wx.CallAfter(self.Stop) + + +#---------------------------------------------------------------------------- +# Control which items in this module should be documented by epydoc. +# We allow only classes and functions, which will help reduce the size +# of the docs by filtering out the zillions of constants, EVT objects, +# and etc that don't make much sense by themselves, but are instead +# documented (or will be) as part of the classes/functions/methods +# where they should be used. + +class __DocFilter: + """ + A filter for epydoc that only allows non-Ptr classes and + fucntions, in order to reduce the clutter in the API docs. + """ + def __init__(self, globals): + self._globals = globals + + def __call__(self, name): + import types + obj = self._globals.get(name, None) + if type(obj) not in [type, types.ClassType, types.FunctionType, types.BuiltinFunctionType]: + return False + if name.startswith('_') or name.endswith('Ptr') or name.startswith('EVT'): + return False + return True #---------------------------------------------------------------------------- #---------------------------------------------------------------------------- # Import other modules in this package that should show up in the # "core" wx namespace -from gdi import * -from windows import * -from controls import * -from misc import * +from _gdi import * +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() +_core_._wxPyFixStockObjects() #---------------------------------------------------------------------------- #----------------------------------------------------------------------------