pybank r92 - in trunk: . bank
- From: marklee svn gnome org
- To: svn-commits-list gnome org
- Subject: pybank r92 - in trunk: . bank
- Date: Tue, 24 Mar 2009 06:06:30 +0000 (UTC)
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]