pybank r92 - in trunk: . bank



Author: marklee
Date: Tue Mar 24 06:06:29 2009
New Revision: 92
URL: http://svn.gnome.org/viewvc/pybank?rev=92&view=rev

Log:
	Bug 559006 â pybank & pyobject integration
	* bank/bank-repository.c (_wrap_g_irepository_get_c_prefix):
	* bank/repository.py (_Repository.get_c_prefix): Bind
	g_irepository_get_c_prefix.
	* bank/module.py (DynamicModule._create_object): Use get_c_prefix()
	instead of listing namespace exceptions.
	Ensure that gtype is defined.
	* bank/btypes.py (buildClass): Add support for static methods in
	classes.
	* bank/gobject.py: Remove stub.



Removed:
   trunk/bank/gobject.py
Modified:
   trunk/ChangeLog
   trunk/bank/bank-repository.c
   trunk/bank/btypes.py
   trunk/bank/module.py
   trunk/bank/repository.py

Modified: trunk/bank/bank-repository.c
==============================================================================
--- trunk/bank/bank-repository.c	(original)
+++ trunk/bank/bank-repository.c	Tue Mar 24 06:06:29 2009
@@ -173,6 +173,23 @@
 }
 
 static PyObject *
+_wrap_g_irepository_get_c_prefix(PyGIRepository *self,
+				 PyObject *args,
+				 PyObject *kwargs)
+{
+    static char *kwlist[] = { "namespace", NULL };
+    char *namespace;
+
+
+    if (!PyArg_ParseTupleAndKeywords(args, kwargs,
+				     "s:GIRepository.getCPrefix",
+				     kwlist, &namespace))
+        return NULL;
+
+    return PyString_FromString(g_irepository_get_c_prefix(self->repo, namespace));
+}
+
+static PyObject *
 _wrap_g_irepository_get_default(PyObject *_)
 {
     static PyGIRepository *self = NULL;
@@ -196,6 +213,7 @@
     { "getDefault", (PyCFunction)_wrap_g_irepository_get_default, METH_STATIC|METH_NOARGS },
     { "findByName", (PyCFunction)_wrap_g_irepository_find_by_name, METH_VARARGS|METH_KEYWORDS },
     { "isRegistered", (PyCFunction)_wrap_g_irepository_is_registered, METH_VARARGS|METH_KEYWORDS },
+    { "getCPrefix", (PyCFunction)_wrap_g_irepository_get_c_prefix, METH_VARARGS|METH_KEYWORDS },
     { NULL, NULL, 0 }
 };
 

Modified: trunk/bank/btypes.py
==============================================================================
--- trunk/bank/btypes.py	(original)
+++ trunk/bank/btypes.py	Tue Mar 24 06:06:29 2009
@@ -219,14 +219,13 @@
     for method in info.getMethods():
         if method.isConstructor():
             constructors.append(method)
-            continue
         elif method.isMethod():
-            pass
-        else:
-            raise AssertionError
-        methodName = method.getName()
-        setattr(newType, methodName, new.instancemethod(Method(method, className),
-                                                        None, newType))
+            methodName = method.getName()
+            setattr(newType, methodName, new.instancemethod(Method(method, className),
+                                                            None, newType))
+        else: # probably a static method
+            func = Method(method, className, call_type=Method.STATIC_METHOD)
+            setattr(newType, method.getName(), staticmethod(func))
 
     setupConstructors(className, newType, constructors)
 

Modified: trunk/bank/module.py
==============================================================================
--- trunk/bank/module.py	(original)
+++ trunk/bank/module.py	Tue Mar 24 06:06:29 2009
@@ -20,9 +20,9 @@
 import os
 
 import gobject
+from gobject import GEnum
 
 from .btypes import Function, buildClass
-from .gobject import GEnum
 from .repo import EnumInfo, FunctionInfo, ObjectInfo, UnresolvedInfo
 from .repository import repository
 
@@ -115,11 +115,10 @@
     def _create_object(self, object_info):
         name = object_info.getName()
 
-        namespace = object_info.getNamespace()
-        if namespace == 'GObject':
-            namespace = 'G'
+        namespace = repository.get_c_prefix(object_info.getNamespace())
         full_name = namespace + name
         object_info.getGType()
+        gtype = None
         try:
             gtype = gobject.GType.from_name(full_name)
         except RuntimeError:

Modified: trunk/bank/repository.py
==============================================================================
--- trunk/bank/repository.py	(original)
+++ trunk/bank/repository.py	Tue Mar 24 06:06:29 2009
@@ -44,5 +44,8 @@
     def get_infos(self, namespace):
         return self._repo.getInfos(namespace)
 
+    def get_c_prefix(self, namespace):
+        return self._repo.getCPrefix(namespace)
+
 repository = _Repository()
-repository.register(gobject, 'GObject', None)
\ No newline at end of file
+repository.register(gobject, 'GObject', None)



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]