--- 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); +}