/* -*- Mode: C; c-basic-offset: 4 -*- * */ %% headers #include "pygobject.h" #include #include extern PyTypeObject PyGtkWidget_Type; extern PyTypeObject PyXfcePanelPlugin_Type; static int command_line_args_helper(char*** argv) { int argc; int i; PyObject* av; argc = 0; av = PySys_GetObject("argv"); if (!PyList_Check(av)) { PyErr_Warn(PyExc_Warning, "ignoring sys.argv: it must be a list of strings"); av = NULL; } if (av != NULL) { argc = PyList_Size(av); for (i = 0; i < argc; i++) { if (!PyString_Check(PyList_GetItem(av, i))) { PyErr_Warn(PyExc_Warning, "ignoring sys.argv: it must be a list of strings"); av = NULL; break; } } } if (av) { *argv = g_new(char *, argc + 1); for (i = 0; i < argc; i++) { (*argv)[i] = g_strdup(PyString_AsString(PyList_GetItem(av, i))); } (*argv)[i] = 0; } return argc; } static void command_line_args_free(int count, char** argv) { int i; for(i = 0; i < count; i++) { g_free(argv[i]); } } static void panel_plugin_construct(XfcePanelPlugin* plugin) { } %% include %% modulename external %% import gobject.GObject as PyGObject_Type import gtk.Widget as PyGtkWidget_Type import gtk.Plug as PyGtkPlug_Type %% ignore %% ignore-glob *_get_type %% ignore-win32 %% override xfce_external_panel_plugin_new kwargs static int _wrap_xfce_external_panel_plugin_new(PyGObject *self, PyObject *args, PyObject *kwargs) { char** argv; int argc; int i; argv = NULL; argc = command_line_args_helper(&argv); self->obj = (GObject *)xfce_external_panel_plugin_new (argc, argv, panel_plugin_construct); command_line_args_free(argc, argv); if (!self->obj) { PyErr_SetString(PyExc_RuntimeError, "could not create xfce4.panel.ExternalPanelPlugin object"); return -1; } pygobject_register_wrapper((PyObject *)self); return 0; }