]> git.saurik.com Git - wxWidgets.git/blobdiff - wxPython/src/_core_ex.py
SetCanFocus
[wxWidgets.git] / wxPython / src / _core_ex.py
index 702e04f6eea88ab0dcbfd77fc00bc06efff0a3c0..bd9ecf759eb388b2db78e59514b4e478d716bf42 100644 (file)
@@ -30,15 +30,55 @@ 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 conversion encoding from the locale
-import locale
-default = locale.getdefaultlocale()[1]
+# 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.
+
+default = _sys.getdefaultencoding()
+if default == 'ascii':
+    import locale
+    import codecs
+    try:
+        if hasattr(locale, 'getpreferredencoding'):
+            default = locale.getpreferredencoding()
+        else:
+            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
 
 #----------------------------------------------------------------------------
 
@@ -108,7 +148,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'
@@ -127,7 +167,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
@@ -138,7 +178,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`
@@ -224,8 +264,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
@@ -237,7 +282,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
@@ -245,10 +290,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
 
 #----------------------------------------------------------------------------
@@ -261,10 +318,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()
-
 #----------------------------------------------------------------------------
 #----------------------------------------------------------------------------