X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/061d64dd011825261e71b924a38ebe3fd9e2e00b..a69276900cfae8bf48b5ba5af6811fb89675ba33:/wxPython/src/_core_ex.py diff --git a/wxPython/src/_core_ex.py b/wxPython/src/_core_ex.py index f19ca7ecd7..bb3658d73c 100644 --- a/wxPython/src/_core_ex.py +++ b/wxPython/src/_core_ex.py @@ -30,24 +30,52 @@ if RELEASE_VERSION != _core_.RELEASE_VERSION: import warnings warnings.warn("wxPython/wxWidgets release number mismatch") + +def version(): + """Returns a string containing version and port info""" + ctype = wx.USE_UNICODE and 'unicode' or 'ansi' + if wx.Platform == '__WXMSW__': + port = 'msw' + elif wx.Platform == '__WXMAC__': + port = 'mac' + elif wx.Platform == '__WXGTK__': + port = 'gtk' + if 'gtk2' in wx.PlatformInfo: + port = 'gtk2' + else: + port = '?' + + return "%s (%s-%s)" % (wx.VERSION_STRING, port, ctype) + + #---------------------------------------------------------------------------- -# Set the default string<-->unicode conversion encoding from the -# locale. This encoding is used when string or unicode objects need -# to be converted in order to pass them to wxWidgets. Please be aware -# that the default encoding within the same locale may be slightly -# different on different platforms. For example, please see +# Set wxPython's default string<-->unicode conversion encoding from +# the locale, but only if Python's default hasn't been changed. (We +# assume that if the user has customized it already then that is the +# encoding we need to use as well.) +# +# The encoding selected here is used when string or unicode objects +# need to be converted in order to pass them to wxWidgets. Please be +# aware that the default encoding within the same locale may be +# slightly different on different platforms. For example, please see # http://www.alanwood.net/demos/charsetdiffs.html for differences # between the common latin/roman encodings. -import locale -try: - default = locale.getdefaultlocale()[1] -except ValueError: - default = "iso8859-1" + +default = _sys.getdefaultencoding() +if default == 'ascii': + import locale + import codecs + try: + default = locale.getdefaultlocale()[1] + codecs.lookup(default) + except (ValueError, LookupError, TypeError): + default = _sys.getdefaultencoding() + del locale + del codecs if default: wx.SetDefaultPyEncoding(default) del default -del locale #---------------------------------------------------------------------------- @@ -117,7 +145,7 @@ def CallAfter(callable, *args, **kw): 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` + :see: `wx.CallLater` """ app = wx.GetApp() assert app is not None, 'No wx.App created yet' @@ -136,7 +164,7 @@ def CallAfter(callable, *args, **kw): #---------------------------------------------------------------------------- -class FutureCall: +class CallLater: """ A convenience class for `wx.Timer`, that calls the given callable object once after the given amount of milliseconds, passing any @@ -147,7 +175,7 @@ class FutureCall: then there is no need to hold a reference to this object. It will hold a reference to itself while the timer is running (the timer has a reference to self.Notify) but the cycle will be broken when - the timer completes, automatically cleaning up the wx.FutureCall + the timer completes, automatically cleaning up the wx.CallLater object. :see: `wx.CallAfter` @@ -233,8 +261,13 @@ class FutureCall: # if it wasn't restarted, then cleanup wx.CallAfter(self.Stop) + Interval = property(GetInterval) + Result = property(GetResult) +class FutureCall(CallLater): + """A compatibility alias for `CallLater`.""" + #---------------------------------------------------------------------------- # Control which items in this module should be documented by epydoc. # We allow only classes and functions, which will help reduce the size @@ -246,7 +279,7 @@ class FutureCall: class __DocFilter: """ A filter for epydoc that only allows non-Ptr classes and - fucntions, in order to reduce the clutter in the API docs. + functions, in order to reduce the clutter in the API docs. """ def __init__(self, globals): self._globals = globals @@ -254,10 +287,22 @@ class __DocFilter: def __call__(self, name): import types obj = self._globals.get(name, None) + + # only document classes and function 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'): + + # skip other things that are private or will be documented as part of somethign else + if name.startswith('_') or name.startswith('EVT') or name.endswith('_swigregister') or name.endswith('Ptr') : return False + + # skip functions that are duplicates of static functions in a class + if name.find('_') != -1: + cls = self._globals.get(name.split('_')[0], None) + methname = name.split('_')[1] + if hasattr(cls, methname) and type(getattr(cls, methname)) is types.FunctionType: + return False + return True #---------------------------------------------------------------------------- @@ -270,10 +315,5 @@ 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() - #---------------------------------------------------------------------------- #----------------------------------------------------------------------------