static GList * nautilus_python_object_get_property_pages (NautilusPropertyPageProvider *provider, GList *files) { NautilusPythonObject *object = (NautilusPythonObject*)provider; PyObject *py_files, *py_ret = NULL; GList *ret = NULL; PyGILState_STATE state = pyg_gil_state_ensure(); debug_enter(); CHECK_OBJECT(object); CHECK_METHOD_NAME(object->instance); CONVERT_LIST(py_files, files); py_ret = PyObject_CallMethod(object->instance, METHOD_PREFIX METHOD_NAME, "(N)", py_files); HANDLE_RETVAL(py_ret); HANDLE_LIST(py_ret, NautilusPropertyPage, "Nautilus.PropertyPage"); beach: Py_XDECREF(py_ret); pyg_gil_state_release(state); return ret; }
static GList * nautilus_python_object_get_columns (NautilusColumnProvider *provider) { NautilusPythonObject *object = (NautilusPythonObject*)provider; GList *ret = NULL; PyObject *py_ret = NULL; PyGILState_STATE state = pyg_gil_state_ensure(); \ debug_enter(); CHECK_OBJECT(object); CHECK_METHOD_NAME(object->instance); py_ret = PyObject_CallMethod(object->instance, METHOD_PREFIX METHOD_NAME, NULL); HANDLE_RETVAL(py_ret); HANDLE_LIST(py_ret, NautilusColumn, "Nautilus.Column"); beach: if (py_ret != NULL) Py_XDECREF(py_ret); pyg_gil_state_release(state); return ret; }
static void nautilus_python_object_cancel_update (NautilusInfoProvider *provider, NautilusOperationHandle *handle) { NautilusPythonObject *object = (NautilusPythonObject*)provider; PyGILState_STATE state = pyg_gil_state_ensure(); PyObject *py_handle = nautilus_python_boxed_new (_PyNautilusOperationHandle_Type, handle, FALSE); debug_enter(); CHECK_OBJECT(object); CHECK_METHOD_NAME(object->instance); PyObject_CallMethod(object->instance, METHOD_PREFIX METHOD_NAME, "(NN)", pygobject_new((GObject*)provider), py_handle); beach: pyg_gil_state_release(state); }
static GtkWidget * nemo_python_object_get_widget (NemoLocationWidgetProvider *provider, const char *uri, GtkWidget *window) { NemoPythonObject *object = (NemoPythonObject*)provider; GtkWidget *ret = NULL; PyObject *py_ret = NULL; PyGObject *py_ret_gobj; PyObject *py_uri = NULL; PyGILState_STATE state = pyg_gil_state_ensure(); debug_enter(); CHECK_OBJECT(object); CHECK_METHOD_NAME(object->instance); py_uri = PyString_FromString(uri); py_ret = PyObject_CallMethod(object->instance, METHOD_PREFIX METHOD_NAME, "(NN)", py_uri, pygobject_new((GObject *)window)); HANDLE_RETVAL(py_ret); py_ret_gobj = (PyGObject *)py_ret; if (!pygobject_check(py_ret_gobj, &PyGtkWidget_Type)) { PyErr_SetString(PyExc_TypeError, METHOD_NAME "should return a gtk.Widget"); goto beach; } ret = (GtkWidget *)g_object_ref(py_ret_gobj->obj); beach: Py_XDECREF(py_ret); pyg_gil_state_release(state); return ret; }