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
-import codecs
-try:
- default = locale.getdefaultlocale()[1]
- codecs.lookup(default)
-except (ValueError, LookupError):
- default = _sys.getdefaultencoding()
+
+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
-del codecs
#----------------------------------------------------------------------------
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'
#----------------------------------------------------------------------------
-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
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`
# 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
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
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
#----------------------------------------------------------------------------
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()
-
#----------------------------------------------------------------------------
#----------------------------------------------------------------------------