--- gnome-python-1.99.11/gnome/ui.override.session	2002-08-28 19:42:58.000000000 -0400
+++ gnome-python-1.99.11/gnome/ui.override	2002-08-28 21:29:56.000000000 -0400
@@ -122,3 +122,97 @@
     pygobject_register_wrapper((PyObject *)self);
     return 0;
 }
+%%
+override gnome_client_set_restart_command kwargs
+
+typedef void (*clientfunc) (GnomeClient *, int, gchar*[]);
+static PyObject*
+generic_gnome_client_command (PyGObject *self, PyObject*args, PyObject* kwargs,
+			      const char *name, clientfunc func)
+{
+    static char *kwlist[] = { "argc", "argv", NULL };
+    char **argv, *fmt;
+    int argc, size, i;
+    PyObject *py_argv;
+
+    fmt = g_strconcat("iO:Client.", name, NULL);
+    if (!PyArg_ParseTupleAndKeywords(args, kwargs,
+                                     fmt, kwlist, &argc, &py_argv)) {
+	g_free(fmt);
+	return NULL;
+    }
+    g_free(fmt);
+
+    if (!PySequence_Check(py_argv)) {
+	PyErr_SetString(PyExc_TypeError, "argv argument is not a sequence");
+	return NULL;
+    }
+
+    size = PySequence_Length(py_argv);
+    argv = g_new(gchar *, size + 1);
+    for (i = 0; i < size; i++) {
+	PyObject *item = PySequence_GetItem(py_argv, i);
+	Py_DECREF(item);
+	if (!PyString_Check(item)) {
+	    PyErr_SetString(PyExc_TypeError, "argv element is not a string");
+	    return NULL;
+	}
+	argv[i] = PyString_AsString(item);
+    }
+    argv[i] = NULL;
+    func(GNOME_CLIENT(self->obj), argc, argv);
+    g_free(argv);
+    
+    Py_INCREF(Py_None);
+    return Py_None;
+    
+}
+
+static PyObject*
+_wrap_gnome_client_set_restart_command (PyGObject *self, PyObject *args,
+					PyObject *kwargs)
+{
+    return generic_gnome_client_command(self, args, kwargs,
+					"set_restart_command",
+					gnome_client_set_restart_command);
+}
+%%
+override gnome_client_set_clone_command kwargs
+static PyObject*
+_wrap_gnome_client_set_clone_command (PyGObject *self, PyObject *args,
+				      PyObject *kwargs)
+{
+    return generic_gnome_client_command(self, args, kwargs,
+					"set_clone_command",
+					gnome_client_set_clone_command);
+}
+%%
+override gnome_client_set_discard_command kwargs
+static PyObject*
+_wrap_gnome_client_set_discard_command (PyGObject *self, PyObject *args,
+					PyObject *kwargs)
+{
+    return generic_gnome_client_command(self, args, kwargs,
+					"set_discard_command",
+					gnome_client_set_discard_command);
+}
+%%
+override gnome_client_set_resign_command kwargs
+static PyObject*
+_wrap_gnome_client_set_resign_command (PyGObject *self, PyObject *args,
+				       PyObject *kwargs)
+{
+    return generic_gnome_client_command(self, args, kwargs,
+					"set_resign_command",
+					gnome_client_set_resign_command);
+}
+%%
+override gnome_client_set_shutdown_command kwargs
+static PyObject*
+_wrap_gnome_client_set_shutdown_command (PyGObject *self, PyObject *args,
+					 PyObject *kwargs)
+{
+    return generic_gnome_client_command(self, args, kwargs,
+					"set_shutdown_command",
+					gnome_client_set_shutdown_command);
+}
