diff options
author | Paul Pogonyshev <pogonyshev@gmx.net> | 2008-04-27 18:57:46 +0000 |
---|---|---|
committer | Paul Pogonyshev <paulp@src.gnome.org> | 2008-04-27 18:57:46 +0000 |
commit | bad4da0e366e95eec46d68b98d3467fb58ebc6bc (patch) | |
tree | 00794172e78aa58487c8f7dfab05b291e7f247f3 /gtk/gdkcolor.override | |
parent | 46cd328b1ffdda568cefd580cb14a91276050190 (diff) | |
download | pygtk-bad4da0e366e95eec46d68b98d3467fb58ebc6bc.tar.gz |
Add constructor variant similar to what gtk.gdk.color_parse() done. Raise
2008-04-27 Paul Pogonyshev <pogonyshev@gmx.net>
* gtk/gdkcolor.override (_wrap_gdk_color_new): Add constructor
variant similar to what gtk.gdk.color_parse() done. Raise with
useful message in case of wrong arguments (bug #527718).
* tests/test_conversion.py (Tests.testColorCreation): Test the new
constructor with string argument.
svn path=/trunk/; revision=2968
Diffstat (limited to 'gtk/gdkcolor.override')
-rw-r--r-- | gtk/gdkcolor.override | 38 |
1 files changed, 30 insertions, 8 deletions
diff --git a/gtk/gdkcolor.override b/gtk/gdkcolor.override index c3490fd0..98f58ee7 100644 --- a/gtk/gdkcolor.override +++ b/gtk/gdkcolor.override @@ -30,20 +30,42 @@ _wrap_gdk_color_new(PyGBoxed *self, PyObject *args, PyObject *kwargs) { - static char *kwlist[] = {"red", "green", "blue", "pixel", NULL }; + static char *kwlist1[] = {"red", "green", "blue", "pixel", NULL }; + static char *kwlist2[] = { "spec", NULL }; int red = 0, green = 0, blue = 0; unsigned int pixel = 0; + const char *spec; GdkColor colour; - if (!PyArg_ParseTupleAndKeywords(args, kwargs, "|iiik:gdk.Color", kwlist, - &red, &green, &blue, &pixel)) { - return -1; + if (PyArg_ParseTupleAndKeywords(args, kwargs, "|iiik:gdk.Color", kwlist1, + &red, &green, &blue, &pixel)) { + colour.red = red; + colour.green = green; + colour.blue = blue; + colour.pixel = pixel; + goto success; } - colour.red = red; - colour.green = green; - colour.blue = blue; - colour.pixel = pixel; + + PyErr_Clear(); + if (PyArg_ParseTupleAndKeywords(args, kwargs, "s:color_parse|gdk.Color", kwlist2, + &spec)) { + if (!gdk_color_parse(spec, &colour)) { + PyErr_SetString(PyExc_ValueError, + "unable to parse colour specification"); + return -1; + } + + goto success; + } + + PyErr_Clear(); + PyErr_SetString(PyExc_TypeError, "Usage:\n" + " gtk.gdk.Color(red, green, blue, pixel) [all are optional]\n" + " gtk.gdk.Color(spec) [see gtk.gdk.color_parse()]"); + return -1; + + success: self->boxed = g_boxed_copy(GDK_TYPE_COLOR, &colour); self->free_on_dealloc = TRUE; self->gtype = GDK_TYPE_COLOR; |