Index: gtk/gdkcolor.override
===================================================================
--- gtk/gdkcolor.override	(revision 2965)
+++ gtk/gdkcolor.override	(working copy)
@@ -30,20 +30,42 @@
                     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;
