Hi Johan,

Thanks for you fast reply.

Johan Dahlin a écrit :
You should try looking at the gedit python plugin, which is very similar to what you want.

Yes, I want to do the same thing and it was my first example. But it doesn't fit completely. It is doing exactly what I have described as my first try.

I mean that for each python plugin, Gedit create 2 GeditPlugin objects. One is created as the base of GeditPythonObject in C and one as the base of by example ModelinePlugin in python through the pygobject library.

It doesn't really matter if GeditPlugin doesn't have any data which is the case in gedit. But, my plugin class has some data. If I use this way, I need to copy them each time there is change. It's possible as these are gobject properties, so I can get a notification when it changes. But, there is no need to have two times the same object.


Anyway, in the meantime, it seems that I have found a way to do it. It's a derivate of my third trial: Create the Plugin object in C and try to use it in the python code.

The instance initialization function of the PythonPlugin object is the same

static void python_plugin_init (PythonPlugin *object)
{
    object->instance = pygobject_new (G_OBJECT(object));
}

But, before when I load the python file and I have the type of the real plugin object written in python (in PyObject* variable type), I register it as a custom type like in the following code:

pyg_type_register_custom_callback (type_name, mylib_custom_type, type);

static PyTypeObject*
mylib_custom_type (const gchar *name, gpointer data)
{
        return (PyTypeObject *)data;
}


It seems to work fine for me. If I set a property of the PythonPlugin object in C, I can read it back in the plugin implementation in python without any additional code.

Do you know if it's right way to do this or if there is an easier way to achieve this ?

Regards,

Sébastien
_______________________________________________
pygtk mailing list   [email protected]
http://www.daa.com.au/mailman/listinfo/pygtk
Read the PyGTK FAQ: http://www.async.com.br/faq/pygtk/

Reply via email to