[libchamplain] Use a true boxed type in ChamplainMapSourceDesc
- From: Pierre-Luc Beaudoin <plbeaudoin src gnome org>
- To: svn-commits-list gnome org
- Cc:
- Subject: [libchamplain] Use a true boxed type in ChamplainMapSourceDesc
- Date: Fri, 4 Sep 2009 00:33:13 +0000 (UTC)
commit b603e6e71bb5c7e37c001851609931f8cc76b251
Author: Victor Godoy Poluceno <victorpoluceno gmail com>
Date: Sun Aug 16 21:04:52 2009 -0300
Use a true boxed type in ChamplainMapSourceDesc
bindings/python/champlain/pychamplain.override | 219 ++++++++++++++++++++----
1 files changed, 185 insertions(+), 34 deletions(-)
---
diff --git a/bindings/python/champlain/pychamplain.override b/bindings/python/champlain/pychamplain.override
index 3fea03a..82d39ef 100644
--- a/bindings/python/champlain/pychamplain.override
+++ b/bindings/python/champlain/pychamplain.override
@@ -31,25 +31,19 @@ static PyObject *
_wrap_champlain_map_source_factory_dup_list(PyGObject *self) {
GSList *iter, *list;
PyObject *ret;
+ PyObject *pydesc;
list = champlain_map_source_factory_dup_list(CHAMPLAIN_MAP_SOURCE_FACTORY(self->obj));
ret = PyList_New(0);
for(iter = list; iter != NULL; iter = iter->next) {
- PyObject *item = PyDict_New();
ChamplainMapSourceDesc *desc = (ChamplainMapSourceDesc *) iter->data;
- PyDict_SetItemString(item, "id", PyString_FromString(desc->id));
- PyDict_SetItemString(item, "name", PyString_FromString(desc->name));
- PyDict_SetItemString(item, "license", PyString_FromString(desc->license));
- PyDict_SetItemString(item, "license_uri", PyString_FromString(desc->license_uri));
- PyDict_SetItemString(item, "min_zoom_level", PyInt_FromLong(desc->min_zoom_level));
- PyDict_SetItemString(item, "max_zoom_level", PyInt_FromLong(desc->max_zoom_level));
- PyDict_SetItemString(item, "uri_format", PyString_FromString(desc->uri_format));
- PyList_Append(ret, item);
- Py_DECREF(item);
+ pydesc = pyg_boxed_new(CHAMPLAIN_TYPE_MAP_SOURCE_DESC, desc, TRUE, TRUE);
+ PyList_Append(ret, pydesc);
}
g_slist_free(list);
+ g_slist_free(iter);
return ret;
}
@@ -61,15 +55,9 @@ static ChamplainMapSource *
champlain_map_source_constructor (ChamplainMapSourceDesc *desc, gpointer data)
{
PyObject *pymap_source = NULL;
- PyObject *pydesc = PyDict_New();
-
- PyDict_SetItemString(pydesc, "id", PyString_FromString(desc->id));
- PyDict_SetItemString(pydesc, "name", PyString_FromString(desc->name));
- PyDict_SetItemString(pydesc, "license", PyString_FromString(desc->license));
- PyDict_SetItemString(pydesc, "license_uri", PyString_FromString(desc->license_uri));
- PyDict_SetItemString(pydesc, "min_zoom_level", PyInt_FromLong(desc->min_zoom_level));
- PyDict_SetItemString(pydesc, "max_zoom_level", PyInt_FromLong(desc->max_zoom_level));
- PyDict_SetItemString(pydesc, "uri_format", PyString_FromString(desc->uri_format));
+ PyObject *pydesc;
+
+ pydesc = pyg_boxed_new(CHAMPLAIN_TYPE_MAP_SOURCE_DESC, desc, TRUE, TRUE);
pymap_source = PyObject_CallFunction(_pycallback, "(OO)", pydesc, data);
if (!pymap_source)
return NULL;
@@ -87,23 +75,13 @@ _wrap_champlain_map_source_factory_register(PyGObject *self, PyObject *args, PyO
kwlist, &pydesc, &pyconstructor, &pyuser_data))
return NULL;
- if (!pydesc || !PyMapping_Check(pydesc)){
- PyErr_SetString(PyExc_TypeError, "desc parameter must be a dict object");
+ if (pyg_boxed_check(pydesc, CHAMPLAIN_TYPE_MAP_SOURCE_DESC))
+ desc = pyg_boxed_get(pydesc, ChamplainMapSourceDesc);
+ else {
+ PyErr_SetString(PyExc_TypeError, "desc must be a MapSourceDesc");
return NULL;
}
- desc = champlain_map_source_desc_new();
- desc->id = PyString_AsString(PyDict_GetItemString(pydesc, "id"));
- desc->name = PyString_AsString(PyDict_GetItemString(pydesc, "name"));
- desc->license = PyString_AsString(PyDict_GetItemString(pydesc, "license"));
- desc->license_uri = PyString_AsString(PyDict_GetItemString(pydesc, "license_uri"));
- desc->min_zoom_level = PyInt_AsLong(PyDict_GetItemString(pydesc, "min_zoom_level"));
- desc->max_zoom_level = PyInt_AsLong(PyDict_GetItemString(pydesc, "max_zoom_level"));
- desc->uri_format = PyString_AsString(PyDict_GetItemString(pydesc, "uri_format"));
- if (pyg_enum_get_value(CHAMPLAIN_TYPE_MAP_PROJECTION, PyDict_GetItemString(pydesc,
- "projection"), (gpointer)&desc->projection) != 0)
- return NULL;
-
if (!pyconstructor || !PyCallable_Check(pyconstructor)) {
PyErr_SetString(PyExc_TypeError, "constructor parameter must be callable");
return NULL;
@@ -148,7 +126,7 @@ _wrap_champlain_view_get_coords_from_event(PyGObject *self, PyObject *args, PyOb
if (pyg_boxed_check(pyevent, CLUTTER_TYPE_EVENT))
event = pyg_boxed_get(pyevent, ClutterEvent);
else {
- PyErr_SetString(PyExc_TypeError, "event should be a ClutterEvent");
+ PyErr_SetString(PyExc_TypeError, "event must be a ClutterEvent");
return NULL;
}
@@ -252,3 +230,176 @@ _wrap_champlain_tile_get_modified_time(PyGObject *self, PyObject *args)
(double)modified_time->tv_usec * 0.000001);
}
%%
+override-attr ChamplainMapSourceDesc.id
+static int
+_wrap_champlain_map_source_desc__set_id (PyGBoxed *self, PyObject *value, void *closure)
+{
+ gchar *val;
+
+ val = PyString_AsString (value);
+ if (PyErr_Occurred ())
+ return -1;
+
+ pyg_boxed_get (self, ChamplainMapSourceDesc)->id = val;
+ return 0;
+}
+static PyObject *
+_wrap_champlain_map_source_desc__get_id (PyGBoxed *self, void *closure)
+{
+ gchar *id = pyg_boxed_get(self, ChamplainMapSourceDesc)->id;
+ return PyString_FromString (id);
+}
+%%
+%%
+override-attr ChamplainMapSourceDesc.name
+static int
+_wrap_champlain_map_source_desc__set_name (PyGBoxed *self, PyObject *value, void *closure)
+{
+ gchar *val;
+
+ val = PyString_AsString (value);
+ if (PyErr_Occurred ())
+ return -1;
+
+ pyg_boxed_get (self, ChamplainMapSourceDesc)->name = val;
+ return 0;
+}
+static PyObject *
+_wrap_champlain_map_source_desc__get_name (PyGBoxed *self, void *closure)
+{
+ gchar *name = pyg_boxed_get(self, ChamplainMapSourceDesc)->name;
+ return PyString_FromString (name);
+}
+%%
+%%
+override-attr ChamplainMapSourceDesc.license
+static int
+_wrap_champlain_map_source_desc__set_license (PyGBoxed *self, PyObject *value, void *closure)
+{
+ gchar *val;
+
+ val = PyString_AsString (value);
+ if (PyErr_Occurred ())
+ return -1;
+
+ pyg_boxed_get (self, ChamplainMapSourceDesc)->license = val;
+ return 0;
+}
+static PyObject *
+_wrap_champlain_map_source_desc__get_license (PyGBoxed *self, void *closure)
+{
+ gchar *license = pyg_boxed_get(self, ChamplainMapSourceDesc)->license;
+ return PyString_FromString (license);
+}
+%%
+override-attr ChamplainMapSourceDesc.license_uri
+static int
+_wrap_champlain_map_source_desc__set_license_uri (PyGBoxed *self, PyObject *value, void *closure)
+{
+ gchar *val;
+
+ val = PyString_AsString (value);
+ if (PyErr_Occurred ())
+ return -1;
+
+ pyg_boxed_get (self, ChamplainMapSourceDesc)->license_uri = val;
+ return 0;
+}
+static PyObject *
+_wrap_champlain_map_source_desc__get_license_uri (PyGBoxed *self, void *closure)
+{
+ gchar *license_uri = pyg_boxed_get(self, ChamplainMapSourceDesc)->license_uri;
+ return PyString_FromString (license_uri);
+}
+%%
+%%
+override-attr ChamplainMapSourceDesc.uri_format
+static int
+_wrap_champlain_map_source_desc__set_uri_format (PyGBoxed *self, PyObject *value, void *closure)
+{
+ gchar *val;
+
+ val = PyString_AsString (value);
+ if (PyErr_Occurred ())
+ return -1;
+
+ pyg_boxed_get (self, ChamplainMapSourceDesc)->uri_format = val;
+ return 0;
+}
+static PyObject *
+_wrap_champlain_map_source_desc__get_uri_format (PyGBoxed *self, void *closure)
+{
+ gchar *uri_format = pyg_boxed_get(self, ChamplainMapSourceDesc)->uri_format;
+ return PyString_FromString (uri_format);
+}
+%%
+override-attr ChamplainMapSourceDesc.max_zoom_level
+static int
+_wrap_champlain_map_source_desc__set_max_zoom_level (PyGBoxed *self, PyObject *value, void *closure)
+{
+ glong val;
+
+ val = PyLong_AsLong (value);
+ if (PyErr_Occurred ())
+ return -1;
+
+ pyg_boxed_get (self, ChamplainMapSourceDesc)->max_zoom_level = val;
+ return 0;
+}
+%%
+override-attr ChamplainMapSourceDesc.min_zoom_level
+static int
+_wrap_champlain_map_source_desc__set_min_zoom_level (PyGBoxed *self, PyObject *value, void *closure)
+{
+ glong val;
+
+ val = PyLong_AsLong (value);
+ if (PyErr_Occurred ())
+ return -1;
+
+ pyg_boxed_get (self, ChamplainMapSourceDesc)->min_zoom_level = val;
+ return 0;
+}
+%%
+override-attr ChamplainMapSourceDesc.projection
+static int
+_wrap_champlain_map_source_desc__set_projection (PyGBoxed *self, PyObject *value, void *closure)
+{
+ ChamplainMapProjection val;
+
+ if (pyg_enum_get_value(CHAMPLAIN_TYPE_MAP_PROJECTION, value, (gpointer)&val) != 0)
+ return -1;
+
+ pyg_boxed_get (self, ChamplainMapSourceDesc)->projection = val;
+ return 0;
+}
+%%
+override champlain_map_source_desc_new kwargs
+static int
+_wrap_champlain_map_source_desc_new(PyGBoxed *self, PyObject *args, PyObject *kwargs)
+{
+ static char *kwlist[] = {"id", "name", "license", "license_uri",
+ "min_zoom_level", "max_zoom_level", "projection", "uri_format", NULL };
+ ChamplainMapSourceDesc *desc = champlain_map_source_desc_new();
+ PyObject *py_projection;
+
+ if (!PyArg_ParseTupleAndKeywords(args, kwargs,"ssssddOs:ChamplainMapSourceDesc.__init__", kwlist,
+ &desc->id, &desc->name, &desc->license, &desc->license_uri, &desc->min_zoom_level,
+ &desc->max_zoom_level, &py_projection, &desc->uri_format))
+ return -1;
+
+ if (pyg_enum_get_value(CHAMPLAIN_TYPE_MAP_PROJECTION, py_projection, (gpointer)&desc->projection) != 0)
+ return -1;
+
+ self->gtype = CHAMPLAIN_TYPE_MAP_SOURCE_DESC;
+ self->free_on_dealloc = FALSE;
+ self->boxed = desc;
+
+ if (!self->boxed) {
+ PyErr_SetString(PyExc_RuntimeError, "could not create ChamplainMapSourceDesc object");
+ return -1;
+ }
+ self->free_on_dealloc = TRUE;
+ return 0;
+}
+%%
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]