summaryrefslogtreecommitdiff
path: root/pango.override
diff options
context:
space:
mode:
authorJohn Finlay <finlay@src.gnome.org>2003-07-12 18:10:13 +0000
committerJohn Finlay <finlay@src.gnome.org>2003-07-12 18:10:13 +0000
commit58d7abca5f2188b5bac08ac5c035f56a37080c75 (patch)
tree79d3981c3108bd40c5e571316c2108a664d6e15d /pango.override
parenta59725c5a4290881658248805e5a7660ebe24b66 (diff)
downloadpygtk-58d7abca5f2188b5bac08ac5c035f56a37080c75.tar.gz
pango.override (PangoAttrIterator) Add this type and its methods.
* pango.override (PangoAttrIterator) Add this type and its methods.
Diffstat (limited to 'pango.override')
-rw-r--r--pango.override195
1 files changed, 195 insertions, 0 deletions
diff --git a/pango.override b/pango.override
index aa70c292..1296ea39 100644
--- a/pango.override
+++ b/pango.override
@@ -258,12 +258,197 @@ static PyTypeObject PyPangoAttribute_Type = {
(PyObject *)0, /* tp_bases */
};
+/* ------------- PangoAttrIterator ------------- */
+
+typedef struct {
+ PyObject_HEAD
+ PangoAttrIterator *iter;
+} PyPangoAttrIterator;
+staticforward PyTypeObject PyPangoAttrIterator_Type;
+
+static PyObject *
+pypango_attr_iterator_new(PangoAttrIterator *iter)
+{
+ PyPangoAttrIterator *self;
+
+ self = (PyPangoAttrIterator *)PyObject_NEW(PyPangoAttrIterator,
+ &PyPangoAttrIterator_Type);
+ if (self == NULL)
+ return NULL;
+ self->iter = iter;
+
+ return (PyObject *)self;
+}
+
+static void
+pypango_attr_iterator_dealloc(PyPangoAttrIterator *self)
+{
+ pango_attr_iterator_destroy(self->iter);
+ PyObject_DEL(self);
+}
+
+static int
+pypango_attr_iterator_compare(PyPangoAttrIterator *self,
+ PyPangoAttrIterator *v)
+{
+ if (self->iter == v->iter)
+ return 0;
+ if (self->iter > v->iter)
+ return -1;
+ return 1;
+}
+
+static long
+pypango_attr_iterator_hash(PyPangoAttrIterator *self)
+{
+ return (long)self->iter;
+}
+
+static PyObject *
+pypango_attr_iterator_copy(PyPangoAttrIterator *self)
+{
+ return pypango_attr_iterator_new(pango_attr_iterator_copy(self->iter));
+}
+
+static PyObject *
+pypango_attr_iterator_range(PyPangoAttrIterator *self)
+{
+ gint start, end;
+
+ pango_attr_iterator_range(self->iter, &start, &end);
+ return Py_BuildValue("ii", start, end);
+}
+
+static PyObject *
+pypango_attr_iterator_next(PyPangoAttrIterator *self)
+{
+ PyObject *py_ret;
+
+ py_ret = pango_attr_iterator_next(self->iter) ? Py_True : Py_False;
+
+ Py_INCREF(py_ret);
+ return py_ret;
+}
+
+static PyObject *
+pypango_attr_iterator_get(PyPangoAttrIterator *self, PyObject *args,
+ PyObject *kwargs)
+{
+ static char *kwlist[] = { "type", NULL };
+ PyObject *py_type;
+ PangoAttrType type;
+ PangoAttribute *attr;
+
+ if (!PyArg_ParseTupleAndKeywords(args, kwargs, "O:pango.AttrIterator.get",
+ kwlist, &py_type))
+ return NULL;
+
+ if (pyg_enum_get_value(PANGO_TYPE_ATTR_TYPE, py_type, (gint*)&type))
+ return NULL;
+
+ if (!(attr = pango_attr_iterator_get(self->iter, type))) {
+ Py_INCREF(Py_None);
+ return Py_None;
+ }
+
+ return pypango_attr_new(attr, attr->start_index, attr->end_index);
+}
+
+static PyObject *
+pypango_attr_iterator_get_font(PyPangoAttrIterator *self)
+{
+ PangoFontDescription *desc;
+ PangoLanguage *language;
+ GSList *extra_attrs, *tmp;
+ PyObject *py_desc, *py_language, *py_extra_attrs;
+
+ if (!(desc = pango_font_description_new())) {
+ PyErr_SetString(PyExc_RuntimeError, "can't get font info");
+ return NULL;
+ }
+ pango_attr_iterator_get_font(self->iter, desc, &language, &extra_attrs);
+ py_desc = pyg_boxed_new(PANGO_TYPE_FONT_DESCRIPTION, desc, TRUE, TRUE);
+ py_language = pyg_boxed_new(PANGO_TYPE_LANGUAGE, language, TRUE, TRUE);
+
+ py_extra_attrs = PyList_New(0);
+ for (tmp = extra_attrs; tmp != NULL; tmp = tmp->next) {
+ PangoAttribute *attr = (PangoAttribute *)tmp->data;
+ PyObject *py_attr = pypango_attr_new(attr, attr->start_index,
+ attr->end_index);
+ PyList_Append(py_extra_attrs, py_attr);
+ Py_DECREF(py_attr);
+ }
+ g_slist_free(extra_attrs);
+
+ return Py_BuildValue("OOO", py_desc, py_language, py_extra_attrs);
+}
+
+static PyMethodDef pypango_attr_iterator_methods[] = {
+ { "copy", (PyCFunction)pypango_attr_iterator_copy, METH_NOARGS },
+ { "range", (PyCFunction)pypango_attr_iterator_range, METH_NOARGS },
+ { "next", (PyCFunction)pypango_attr_iterator_next, METH_NOARGS },
+ { "get", (PyCFunction)pypango_attr_iterator_get, METH_VARARGS|METH_KEYWORDS },
+ { "get_font", (PyCFunction)pypango_attr_iterator_get_font, METH_NOARGS },
+ { NULL, NULL, 0 }
+};
+
+static PyTypeObject PyPangoAttrIterator_Type = {
+ PyObject_HEAD_INIT(NULL)
+ 0, /* ob_size */
+ "pango.AttrIterator", /* tp_name */
+ sizeof(PyPangoAttrIterator), /* tp_basicsize */
+ 0, /* tp_itemsize */
+ /* methods */
+ (destructor)pypango_attr_iterator_dealloc, /* tp_dealloc */
+ (printfunc)0, /* tp_print */
+ (getattrfunc)0, /* tp_getattr */
+ (setattrfunc)0, /* tp_setattr */
+ (cmpfunc)pypango_attr_iterator_compare, /* tp_compare */
+ (reprfunc)0, /* tp_repr */
+ 0, /* tp_as_number */
+ 0, /* tp_as_sequence */
+ 0, /* tp_as_mapping */
+ (hashfunc)pypango_attr_iterator_hash, /* tp_hash */
+ (ternaryfunc)0, /* tp_call */
+ (reprfunc)0, /* tp_str */
+ (getattrofunc)0, /* tp_getattro */
+ (setattrofunc)0, /* tp_setattro */
+ 0, /* tp_as_buffer */
+ Py_TPFLAGS_DEFAULT, /* tp_flags */
+ NULL, /* Documentation string */
+ (traverseproc)0, /* tp_traverse */
+ (inquiry)0, /* tp_clear */
+ (richcmpfunc)0, /* tp_richcompare */
+ 0, /* tp_weaklistoffset */
+ (getiterfunc)0, /* tp_iter */
+ (iternextfunc)0, /* tp_iternext */
+ pypango_attr_iterator_methods, /* tp_methods */
+ 0, /* tp_members */
+ 0, /* tp_getset */
+ (PyTypeObject *)0, /* tp_base */
+ (PyObject *)0, /* tp_dict */
+ 0, /* tp_descr_get */
+ 0, /* tp_descr_set */
+ 0, /* tp_dictoffset */
+ (initproc)0, /* tp_init */
+ (allocfunc)0, /* tp_alloc */
+ (newfunc)0, /* tp_new */
+ 0, /* tp_free */
+ (inquiry)0, /* tp_is_gc */
+ (PyObject *)0, /* tp_bases */
+};
+
%%
init
PyPangoAttribute_Type.tp_alloc = PyType_GenericAlloc;
PyPangoAttribute_Type.tp_new = PyType_GenericNew;
if (PyType_Ready(&PyPangoAttribute_Type) < 0)
return;
+
+ PyPangoAttrIterator_Type.tp_alloc = PyType_GenericAlloc;
+ PyPangoAttrIterator_Type.tp_new = PyType_GenericNew;
+ if (PyType_Ready(&PyPangoAttrIterator_Type) < 0)
+ return;
%%
modulename pango
%%
@@ -1192,3 +1377,13 @@ _wrap_pango_color_parse(PyGBoxed *self, PyObject *args, PyObject *kwargs)
return 0;
}
+%%
+override pango_attr_list_get_iterator noargs
+static PyObject *
+_wrap_pango_attr_list_get_iterator(PyGBoxed *self)
+{
+ PangoAttrList *list = pyg_boxed_get(self, PangoAttrList);
+ PangoAttrIterator *iter = pango_attr_list_get_iterator(list);
+
+ return pypango_attr_iterator_new(iter);
+}