%%
headers
#include <xed/xed-plugin.h>
#include <xed/xed-window.h>
%%
override xed_plugin_activate kwargs
static PyObject *
_wrap_xed_plugin_activate(PyGObject *self, PyObject *args, PyObject *kwargs)
{
	gpointer klass, klass2;
	static char *kwlist[] = { "window", NULL };
	PyGObject *window;
	PyObject *cls = (PyObject *)(((PyObject *)self)->ob_type);
	
	if (!PyArg_ParseTupleAndKeywords (args, 
					  kwargs,
					  "O!:XedPlugin.activate", 
					  kwlist,
					  &PyXedWindow_Type, 
					  &window))
		return NULL;

	klass = g_type_class_ref (pyg_type_from_object (cls));
	
	if (XED_IS_PLUGIN_PYTHON_CLASS (klass))
	{
		klass2 = g_type_class_peek_parent (klass);
		g_type_class_unref (klass);
		klass = g_type_class_ref (G_TYPE_FROM_CLASS (klass2));
	}

	if (XED_PLUGIN_CLASS (klass)->activate)
		XED_PLUGIN_CLASS (klass)->activate (XED_PLUGIN (self->obj), 
						      XED_WINDOW (window->obj));
	else {
		PyErr_SetString (PyExc_NotImplementedError, 
				 "virtual method XedPlugin.activate not implemented");
		g_type_class_unref (klass);
		return NULL;
	}

	g_type_class_unref (klass);
	Py_INCREF(Py_None);
	return Py_None;
}

%%
override xed_plugin_deactivate kwargs
static PyObject *
_wrap_xed_plugin_deactivate(PyGObject *self, PyObject *args, PyObject *kwargs)
{
	gpointer klass, klass2;
	static char *kwlist[] = {"window", NULL};
	PyGObject *window;
	PyObject *cls = (PyObject *)(((PyObject *)self)->ob_type);

	if (!PyArg_ParseTupleAndKeywords (args, 
					  kwargs,
					  "O!:XedPlugin.deactivate", 
					  kwlist,
					  &PyXedWindow_Type, 
					  &window))
		return NULL;

	klass = g_type_class_ref (pyg_type_from_object (cls));

	if (XED_IS_PLUGIN_PYTHON_CLASS (klass))
	{
		klass2 = g_type_class_peek_parent (klass);
		g_type_class_unref (klass);
		klass = g_type_class_ref (G_TYPE_FROM_CLASS (klass2));
	}
	
	if (XED_PLUGIN_CLASS (klass)->deactivate)
		XED_PLUGIN_CLASS (klass)->deactivate (XED_PLUGIN (self->obj), 
							XED_WINDOW (window->obj));
	else {
		PyErr_SetString (PyExc_NotImplementedError, 
				 "virtual method XedPlugin.deactivate not implemented");
		g_type_class_unref (klass);
		return NULL;
	}

	g_type_class_unref (klass);
	Py_INCREF(Py_None);
	return Py_None;
}

%%
override xed_plugin_update_ui kwargs
static PyObject *
_wrap_xed_plugin_update_ui (PyGObject *self, PyObject *args, PyObject *kwargs)
{
	gpointer klass, klass2;
	static char *kwlist[] = {"window", NULL};
	PyGObject *window;
	PyObject *cls = (PyObject *)(((PyObject *)self)->ob_type);

	if (!PyArg_ParseTupleAndKeywords (args, 
					  kwargs,
					  "O!:XedPlugin.update_ui", 
					  kwlist,
					  &PyXedWindow_Type, 
					  &window))
		return NULL;

	klass = g_type_class_ref (pyg_type_from_object (cls));

	if (XED_IS_PLUGIN_PYTHON_CLASS (klass))
	{
		klass2 = g_type_class_peek_parent (klass);
		g_type_class_unref (klass);
		klass = g_type_class_ref (G_TYPE_FROM_CLASS (klass2));
	}
	
	if (XED_PLUGIN_CLASS (klass)->update_ui)
		XED_PLUGIN_CLASS (klass)->update_ui (XED_PLUGIN (self->obj), 
						       XED_WINDOW (window->obj));
	else {
		PyErr_SetString (PyExc_NotImplementedError, 
				 "virtual method XedPlugin.update_ui not implemented");
		g_type_class_unref (klass);
		return NULL;
	}

	g_type_class_unref (klass);
	Py_INCREF(Py_None);
	return Py_None;
}

%%
override xed_plugin_is_configurable
static PyObject *
_wrap_xed_plugin_is_configurable (PyGObject *self)
{
	int ret;
	gpointer klass, klass2;
	PyObject *cls = (PyObject *)(((PyObject *)self)->ob_type);

	klass = g_type_class_ref (pyg_type_from_object (cls));

	if (XED_IS_PLUGIN_PYTHON_CLASS (klass))
	{
		klass2 = g_type_class_peek_parent (klass);
		g_type_class_unref (klass);
		klass = g_type_class_ref (G_TYPE_FROM_CLASS (klass2));
	}
	
	if (XED_PLUGIN_CLASS (klass)->is_configurable)
		ret = XED_PLUGIN_CLASS (klass)->is_configurable (XED_PLUGIN (self->obj));
	else {
		PyErr_SetString (PyExc_NotImplementedError, 
				 "virtual method XedPlugin.is_configurable not implemented");
		g_type_class_unref (klass);
		return NULL;
	}

	g_type_class_unref (klass);
	return PyBool_FromLong (ret);
}

%%
override xed_plugin_configure_dialog
static PyObject *
_wrap_xed_plugin_create_configure_dialog (PyGObject *self)
{
	GtkWidget *ret;
	gpointer klass, klass2;
	PyObject *cls = (PyObject *)(((PyObject *)self)->ob_type);

	klass = g_type_class_ref(pyg_type_from_object (cls));

	if (XED_IS_PLUGIN_PYTHON_CLASS (klass))
	{
		klass2 = g_type_class_peek_parent (klass);
		g_type_class_unref (klass);
		klass = g_type_class_ref (G_TYPE_FROM_CLASS (klass2));
	}
	
	if (XED_PLUGIN_CLASS (klass)->create_configure_dialog)
		ret = XED_PLUGIN_CLASS (klass)->create_configure_dialog (XED_PLUGIN (self->obj));
	else {
		PyErr_SetString (PyExc_NotImplementedError, 
				 "virtual method XedPlugin.create_configure_dialog not implemented");
		g_type_class_unref (klass);
		return NULL;
	}

	g_type_class_unref (klass);

	/* pygobject_new handles NULL checking */
	return pygobject_new ((GObject *)ret);
}