summaryrefslogtreecommitdiff
path: root/gtk/gdkcolor.override
diff options
context:
space:
mode:
authorPaul Pogonyshev <pogonyshev@gmx.net>2008-04-27 18:57:46 +0000
committerPaul Pogonyshev <paulp@src.gnome.org>2008-04-27 18:57:46 +0000
commitbad4da0e366e95eec46d68b98d3467fb58ebc6bc (patch)
tree00794172e78aa58487c8f7dfab05b291e7f247f3 /gtk/gdkcolor.override
parent46cd328b1ffdda568cefd580cb14a91276050190 (diff)
downloadpygtk-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.override38
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;