diff options
author | James Henstridge <james@daa.com.au> | 2002-04-15 15:17:11 +0000 |
---|---|---|
committer | James Henstridge <jamesh@src.gnome.org> | 2002-04-15 15:17:11 +0000 |
commit | 764fb16fcf7c8aaf8d280114e4deb85143dedc50 (patch) | |
tree | 368aba65ae5715f568c76d5121d8aeb973ec2c94 | |
parent | 5ff86796050bac89af8c36f37af46d74f267bdf2 (diff) | |
download | pygtk-764fb16fcf7c8aaf8d280114e4deb85143dedc50.tar.gz |
add a PangoAttribute wrapper type, constructors for various attributes,
2002-04-15 James Henstridge <james@daa.com.au>
* pango.override: add a PangoAttribute wrapper type, constructors
for various attributes, and methods for inserting attributes in a
PangoAttrList.
-rw-r--r-- | ChangeLog | 4 | ||||
-rw-r--r-- | pango.defs | 30 | ||||
-rw-r--r-- | pango.override | 444 |
3 files changed, 463 insertions, 15 deletions
@@ -1,5 +1,9 @@ 2002-04-15 James Henstridge <james@daa.com.au> + * pango.override: add a PangoAttribute wrapper type, constructors + for various attributes, and methods for inserting attributes in a + PangoAttrList. + * pango.defs, gtk/gdk.defs: add missing definitions. 2002-04-12 Xavier Ordoquy <mcarkan@user.sourceforge.net> @@ -59,7 +59,7 @@ ) ) -(define-function pango_attr_language_new +(define-function AttrLanguage (c-name "pango_attr_language_new") (return-type "PangoAttribute*") (parameters @@ -67,7 +67,7 @@ ) ) -(define-function pango_attr_family_new +(define-function AttrFamily (c-name "pango_attr_family_new") (return-type "PangoAttribute*") (parameters @@ -75,7 +75,7 @@ ) ) -(define-function pango_attr_foreground_new +(define-function AttrForeground (c-name "pango_attr_foreground_new") (return-type "PangoAttribute*") (parameters @@ -85,7 +85,7 @@ ) ) -(define-function pango_attr_background_new +(define-function AttrBackground (c-name "pango_attr_background_new") (return-type "PangoAttribute*") (parameters @@ -95,7 +95,7 @@ ) ) -(define-function pango_attr_size_new +(define-function AttrSize (c-name "pango_attr_size_new") (return-type "PangoAttribute*") (parameters @@ -103,7 +103,7 @@ ) ) -(define-function pango_attr_style_new +(define-function AttrStyle (c-name "pango_attr_style_new") (return-type "PangoAttribute*") (parameters @@ -111,7 +111,7 @@ ) ) -(define-function pango_attr_weight_new +(define-function AttrWeight (c-name "pango_attr_weight_new") (return-type "PangoAttribute*") (parameters @@ -119,7 +119,7 @@ ) ) -(define-function pango_attr_variant_new +(define-function AttrVariant (c-name "pango_attr_variant_new") (return-type "PangoAttribute*") (parameters @@ -127,7 +127,7 @@ ) ) -(define-function pango_attr_stretch_new +(define-function AttrStretch (c-name "pango_attr_stretch_new") (return-type "PangoAttribute*") (parameters @@ -135,7 +135,7 @@ ) ) -(define-function pango_attr_font_desc_new +(define-function AttrFontDesc (c-name "pango_attr_font_desc_new") (return-type "PangoAttribute*") (parameters @@ -143,7 +143,7 @@ ) ) -(define-function pango_attr_underline_new +(define-function AttrUnderline (c-name "pango_attr_underline_new") (return-type "PangoAttribute*") (parameters @@ -151,7 +151,7 @@ ) ) -(define-function pango_attr_strikethrough_new +(define-function AttrStrikethrough (c-name "pango_attr_strikethrough_new") (return-type "PangoAttribute*") (parameters @@ -159,7 +159,7 @@ ) ) -(define-function pango_attr_rise_new +(define-function AttrRise (c-name "pango_attr_rise_new") (return-type "PangoAttribute*") (parameters @@ -167,7 +167,7 @@ ) ) -(define-function pango_attr_shape_new +(define-function AttrShape (c-name "pango_attr_shape_new") (return-type "PangoAttribute*") (parameters @@ -176,7 +176,7 @@ ) ) -(define-function pango_attr_scale_new +(define-function AttrScale (c-name "pango_attr_scale_new") (return-type "PangoAttribute*") (parameters diff --git a/pango.override b/pango.override index da18f1b3..80691f77 100644 --- a/pango.override +++ b/pango.override @@ -5,6 +5,150 @@ headers #include <pygobject.h> #include <pango/pango.h> +/* ------------- PangoAttribute ------------- */ + +typedef struct { + PyObject_HEAD + PangoAttribute *attr; +} PyPangoAttribute; +staticforward PyTypeObject PyPangoAttribute_Type; + +static PyObject * +pypango_attr_new(PangoAttribute *attr) +{ + PyPangoAttribute *self; + + self = (PyPangoAttribute *)PyObject_NEW(PyPangoAttribute, + &PyPangoAttribute_Type); + if (self == NULL) + return NULL; + self->attr = attr; + + return (PyObject *)self; +} + +static void +pypango_attr_dealloc(PyPangoAttribute *self) +{ + pango_attribute_destroy(self->attr); + PyObject_DEL(self); +} + +static int +pypango_attr_compare(PyPangoAttribute *self, PyPangoAttribute *v) +{ + if (pango_attribute_equal(self->attr, v->attr)) + return 0; + if (self->attr > v->attr) + return -1; + return 1; +} + +static long +pypango_attr_hash(PyPangoAttribute *self) +{ + return (long)self->attr; +} + +static PyObject * +pypango_attr_copy(PyPangoAttribute *self) +{ + return pypango_attr_new(pango_attribute_copy(self->attr)); +} + +static PyMethodDef pypango_attr_methods[] = { + { "copy", (PyCFunction)pypango_attr_copy, METH_NOARGS }, + { NULL, NULL, 0 } +}; + +static PyObject * +pypango_attr_get_index(PyPangoAttribute *self, void *closure) +{ + gboolean is_end = GPOINTER_TO_INT(closure) != 0; + + if (is_end) + return PyInt_FromLong(self->attr->end_index); + else + return PyInt_FromLong(self->attr->start_index); +} + +static int +pypango_attr_set_index(PyPangoAttribute *self, PyObject *value, void *closure) +{ + gboolean is_end = GPOINTER_TO_INT(closure) != 0; + gint val; + + val = PyInt_AsLong(value); + if (PyErr_Occurred()) { + PyErr_Clear(); + PyErr_SetString(PyExc_TypeError, "index must be an integer"); + return -1; + } + if (is_end) + self->attr->end_index = val; + else + self->attr->start_index = val; + return 0; +} + +static PyGetSetDef pypango_attr_getsets[] = { + { "start_index", (getter)pypango_attr_get_index, + (setter)pypango_attr_set_index, NULL, GINT_TO_POINTER(0) }, + { "end_index", (getter)pypango_attr_get_index, + (setter)pypango_attr_set_index, NULL, GINT_TO_POINTER(1) }, + { NULL, (getter)0, (setter)0, NULL, NULL } +}; + +static PyTypeObject PyPangoAttribute_Type = { + PyObject_HEAD_INIT(NULL) + 0, /* ob_size */ + "pango.Attribute", /* tp_name */ + sizeof(PyPangoAttribute), /* tp_basicsize */ + 0, /* tp_itemsize */ + /* methods */ + (destructor)pypango_attr_dealloc, /* tp_dealloc */ + (printfunc)0, /* tp_print */ + (getattrfunc)0, /* tp_getattr */ + (setattrfunc)0, /* tp_setattr */ + (cmpfunc)pypango_attr_compare, /* tp_compare */ + (reprfunc)0, /* tp_repr */ + 0, /* tp_as_number */ + 0, /* tp_as_sequence */ + 0, /* tp_as_mapping */ + (hashfunc)pypango_attr_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_methods, /* tp_methods */ + 0, /* tp_members */ + pypango_attr_getsets, /* 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 */ + PyType_GenericAlloc, /* tp_alloc */ + PyType_GenericNew, /* tp_new */ + 0, /* tp_free */ + (inquiry)0, /* tp_is_gc */ + (PyObject *)0, /* tp_bases */ +}; + +%% +init + if (PyType_Ready(&PyPangoAttribute_Type) < 0) + return; %% modulename pango %% @@ -42,6 +186,306 @@ ignore pango_break pango_shape %% +override pango_attr_language_new kwargs +static PyObject * +_wrap_pango_attr_language_new(PyObject *self, PyObject *args, PyObject *kwargs) +{ + static char *kwlist[] = { "language", NULL }; + char *slanguage; + PangoLanguage *language; + + if (!PyArg_ParseTupleAndKeywords(args, kwargs, "s:PangoAttrLanguage", + kwlist, &slanguage)) + return NULL; + + language = pango_language_from_string(slanguage); + + return pypango_attr_new(pango_attr_language_new(language)); +} +%% +override pango_attr_family_new kwargs +static PyObject * +_wrap_pango_attr_family_new(PyObject *self, PyObject *args, PyObject *kwargs) +{ + static char *kwlist[] = { "family", NULL }; + char *family; + + if (!PyArg_ParseTupleAndKeywords(args, kwargs, "s:PangoAttrFamily", kwlist, + &family)) + return NULL; + + return pypango_attr_new(pango_attr_family_new(family)); +} +%% +override pango_attr_foreground_new kwargs +static PyObject * +_wrap_pango_attr_foreground_new(PyObject *self,PyObject *args,PyObject *kwargs) +{ + static char *kwlist[] = { "red", "green", "blue", NULL }; + guint16 red, green, blue; + + if (!PyArg_ParseTupleAndKeywords(args, kwargs, "HHH:PangoAttrForeground", + kwlist, &red, &green, &blue)) + return NULL; + + return pypango_attr_new(pango_attr_foreground_new(red, green, blue)); +} +%% +override pango_attr_background_new kwargs +static PyObject * +_wrap_pango_attr_background_new(PyObject *self,PyObject *args,PyObject *kwargs) +{ + static char *kwlist[] = { "red", "green", "blue", NULL }; + guint16 red, green, blue; + + if (!PyArg_ParseTupleAndKeywords(args, kwargs, "HHH:PangoAttrBackground", + kwlist, &red, &green, &blue)) + return NULL; + + return pypango_attr_new(pango_attr_background_new(red, green, blue)); +} +%% +override pango_attr_size_new kwargs +static PyObject * +_wrap_pango_attr_size_new(PyObject *self, PyObject *args, PyObject *kwargs) +{ + static char *kwlist[] = { "size", NULL }; + int size; + + if (!PyArg_ParseTupleAndKeywords(args, kwargs, "i:PangoAttrSize", kwlist, + &size)) + return NULL; + + return pypango_attr_new(pango_attr_size_new(size)); +} +%% +override pango_attr_style_new kwargs +static PyObject * +_wrap_pango_attr_style_new(PyObject *self, PyObject *args, PyObject *kwargs) +{ + static char *kwlist[] = { "style", NULL }; + PyObject *py_style; + PangoStyle style; + + if (!PyArg_ParseTupleAndKeywords(args, kwargs, "O:PangoAttrStyle", kwlist, + &py_style)) + return NULL; + if (!pyg_enum_get_value(PANGO_TYPE_STYLE, py_style, (gint *)&style)) + return NULL; + + return pypango_attr_new(pango_attr_style_new(style)); +} +%% +override pango_attr_weight_new kwargs +static PyObject * +_wrap_pango_attr_weight_new(PyObject *self, PyObject *args, PyObject *kwargs) +{ + static char *kwlist[] = { "weight", NULL }; + PyObject *py_weight; + PangoWeight weight; + + if (!PyArg_ParseTupleAndKeywords(args, kwargs, "O:PangoAttrWeight", kwlist, + &py_weight)) + return NULL; + if (!pyg_enum_get_value(PANGO_TYPE_WEIGHT, py_weight, (gint *)&weight)) + return NULL; + + return pypango_attr_new(pango_attr_weight_new(weight)); +} +%% +override pango_attr_variant_new kwargs +static PyObject * +_wrap_pango_attr_variant_new(PyObject *self, PyObject *args, PyObject *kwargs) +{ + static char *kwlist[] = { "variant", NULL }; + PyObject *py_variant; + PangoVariant variant; + + if (!PyArg_ParseTupleAndKeywords(args, kwargs, "O:PangoAttrVariant", + kwlist, &py_variant)) + return NULL; + if (!pyg_enum_get_value(PANGO_TYPE_VARIANT, py_variant, (gint *)&variant)) + return NULL; + + return pypango_attr_new(pango_attr_variant_new(variant)); +} +%% +override pango_attr_stretch_new kwargs +static PyObject * +_wrap_pango_attr_stretch_new(PyObject *self, PyObject *args, PyObject *kwargs) +{ + static char *kwlist[] = { "stretch", NULL }; + PyObject *py_stretch; + PangoStretch stretch; + + if (!PyArg_ParseTupleAndKeywords(args, kwargs, "O:PangoAttrStretch", + kwlist, &py_stretch)) + return NULL; + if (!pyg_enum_get_value(PANGO_TYPE_STRETCH, py_stretch, (gint *)&stretch)) + return NULL; + + return pypango_attr_new(pango_attr_stretch_new(stretch)); +} +%% +override pango_attr_font_desc_new kwargs +static PyObject * +_wrap_pango_attr_font_desc_new(PyObject *self, PyObject *args,PyObject *kwargs) +{ + static char *kwlist[] = { "desc", NULL }; + PyObject *font_desc; + PangoFontDescription *desc; + + if (!PyArg_ParseTupleAndKeywords(args, kwargs, "O:PangoAttrFontDesc", + kwlist, &font_desc)) + return NULL; + if (!pyg_boxed_check(font_desc, PANGO_TYPE_FONT_DESCRIPTION)) { + PyErr_SetString(PyExc_TypeError,"desc must be a PangoFontDescription"); + return NULL; + } + desc = pyg_boxed_get(font_desc, PangoFontDescription); + return pypango_attr_new(pango_attr_font_desc_new(desc)); +} +%% +override pango_attr_underline_new kwargs +static PyObject * +_wrap_pango_attr_underline_new(PyObject *self, PyObject *args,PyObject *kwargs) +{ + static char *kwlist[] = { "underline", NULL }; + PyObject *py_underline; + PangoUnderline underline; + + if (!PyArg_ParseTupleAndKeywords(args, kwargs, "O:PangoAttrUnderline", + kwlist, &py_underline)) + return NULL; + if (!pyg_enum_get_value(PANGO_TYPE_UNDERLINE, py_underline, + (gint *)&underline)) + return NULL; + + return pypango_attr_new(pango_attr_underline_new(underline)); +} +%% +override pango_attr_strikethrough_new kwargs +static PyObject * +_wrap_pango_attr_strikethrough_new(PyObject *self, PyObject *args, + PyObject *kwargs) +{ + static char *kwlist[] = { "strikethrough", NULL }; + gboolean strikethrough; + + if (!PyArg_ParseTupleAndKeywords(args, kwargs, "i:PangoAttrStrikethrough", + kwlist, &strikethrough)) + return NULL; + + return pypango_attr_new(pango_attr_strikethrough_new(strikethrough)); +} +%% +override pango_attr_rise_new kwargs +static PyObject * +_wrap_pango_attr_rise_new(PyObject *self, PyObject *args, PyObject *kwargs) +{ + static char *kwlist[] = { "rise", NULL }; + gint rise; + + if (!PyArg_ParseTupleAndKeywords(args, kwargs, "i:PangoAttrRise", + kwlist, &rise)) + return NULL; + + return pypango_attr_new(pango_attr_rise_new(rise)); +} +%% +override pango_attr_shape_new kwargs +static PyObject * +_wrap_pango_attr_shape_new(PyObject *self, PyObject *args, PyObject *kwargs) +{ + static char *kwlist[] = { "ink_rect", "logical_rect", NULL }; + PangoRectangle ink_rect, logical_rect; + + if (!PyArg_ParseTupleAndKeywords(args, kwargs, + "(iiii)(iiii):PangoAttrShape", kwlist, + &ink_rect.x, &ink_rect.y, + &ink_rect.width, &ink_rect.height, + &logical_rect.x, &logical_rect.y, + &logical_rect.width,&logical_rect.height)) + return NULL; + + return pypango_attr_new(pango_attr_shape_new(&ink_rect, &logical_rect)); +} +%% +override pango_attr_scale_new kwargs +static PyObject * +_wrap_pango_attr_scale_new(PyObject *self, PyObject *args, PyObject *kwargs) +{ + static char *kwlist[] = { "scale", NULL }; + double scale; + + if (!PyArg_ParseTupleAndKeywords(args, kwargs, "d:PangoAttrScale", + kwlist, &scale)) + return NULL; + + return pypango_attr_new(pango_attr_scale_new(scale)); +} +%% +override pango_attr_list_insert kwargs +static PyObject * +_wrap_pango_attr_list_insert(PyObject *self, PyObject *args, PyObject *kwargs) +{ + static char *kwlist[] = { "attr", NULL }; + PyPangoAttribute *py_attr; + PangoAttribute *attr; + + if (!PyArg_ParseTupleAndKeywords(args, kwargs, + "O!:PangoAttrList.insert", kwlist, + &PyPangoAttribute_Type, &py_attr)) + return NULL; + attr = pango_attribute_copy(py_attr->attr); + + pango_attr_list_insert(pyg_boxed_get(self, PangoAttrList), attr); + + Py_INCREF(Py_None); + return Py_None; +} +%% +override pango_attr_list_insert_before kwargs +static PyObject * +_wrap_pango_attr_list_insert_before(PyObject *self, PyObject *args, + PyObject *kwargs) +{ + static char *kwlist[] = { "attr", NULL }; + PyPangoAttribute *py_attr; + PangoAttribute *attr; + + if (!PyArg_ParseTupleAndKeywords(args, kwargs, + "O!:PangoAttrList.insert_before", kwlist, + &PyPangoAttribute_Type, &py_attr)) + return NULL; + attr = pango_attribute_copy(py_attr->attr); + + pango_attr_list_insert_before(pyg_boxed_get(self, PangoAttrList), attr); + + Py_INCREF(Py_None); + return Py_None; +} +%% +override pango_attr_list_change kwargs +static PyObject * +_wrap_pango_attr_list_change(PyObject *self, PyObject *args, PyObject *kwargs) +{ + static char *kwlist[] = { "attr", NULL }; + PyPangoAttribute *py_attr; + PangoAttribute *attr; + + if (!PyArg_ParseTupleAndKeywords(args, kwargs, + "O!:PangoAttrList.change", kwlist, + &PyPangoAttribute_Type, &py_attr)) + return NULL; + attr = pango_attribute_copy(py_attr->attr); + + pango_attr_list_change(pyg_boxed_get(self, PangoAttrList), attr); + + Py_INCREF(Py_None); + return Py_None; +} +%% ignore pango_font_description_from_string %% override pango_font_description_new kwargs |