View mode: basic / threaded / horizontal-split · Log in · Help
January 28, 2012
Clutter GObject bindings
What is the best way to generate GObject bindings?
I ask this because I would like to use Clutter
(http://www.clutter-project.org/) in my D program and I don't think it has D
bindings already.
Thanks
January 28, 2012
Re: Clutter GObject bindings
On 01/28/12 03:02, Sparse Push wrote:
> What is the best way to generate GObject bindings?
> I ask this because I would like to use Clutter
> (http://www.clutter-project.org/) in my D program and I don't think it has D
> bindings already.

>From the website, http://www.clutter-project.org/about :

> [...]
> Developed in C, with language bindings for Perl, Python, C#, C++, Vala and Ruby. Clutter also generates introspection data during build, for dynamic language binding using the GObject introspection API. Learn more about GObject introspection...

so, in theory, it should be possible to use girtod to create the bindings.

http://repo.or.cz/w/girtod.git/shortlog/refs/heads/master


In practice, it will likely require tweaks for some data types and errors
in the introspection files (for GTK, this took me way more time than writing
the xml parser and code generator; maybe much of the work is already done so
this will be less painful). Also, right now, girtod does not handle certain
things (eg gobject interfaces). so if clutter is using them, support will have
to be added (it wasn't immediately obvious to me how to expose the parts
of the API that i haven't used myself; once i figure that out, adding the 
support will be easy, as most of the work is already done).


artur
January 29, 2012
Re: Clutter GObject bindings
== Quote from Artur Skawina (art.08.09@gmail.com)'s article
> On 01/28/12 03:02, Sparse Push wrote:
> > What is the best way to generate GObject bindings?
> > I ask this because I would like to use Clutter
> > (http://www.clutter-project.org/) in my D program and I don't think it has D
> > bindings already.
> >From the website, http://www.clutter-project.org/about :
> > [...]
> > Developed in C, with language bindings for Perl, Python, C#, C++, Vala and
Ruby. Clutter also generates introspection data during build, for dynamic language
binding using the GObject introspection API. Learn more about GObject introspection...
> so, in theory, it should be possible to use girtod to create the bindings.
> http://repo.or.cz/w/girtod.git/shortlog/refs/heads/master
> In practice, it will likely require tweaks for some data types and errors
> in the introspection files (for GTK, this took me way more time than writing
> the xml parser and code generator; maybe much of the work is already done so
> this will be less painful). Also, right now, girtod does not handle certain
> things (eg gobject interfaces). so if clutter is using them, support will have
> to be added (it wasn't immediately obvious to me how to expose the parts
> of the API that i haven't used myself; once i figure that out, adding the
> support will be easy, as most of the work is already done).
> artur

Thanks, I'll see how far I'll get on my own :)
January 29, 2012
Re: Clutter GObject bindings
On 01/28/12 17:08, Artur Skawina wrote:
> On 01/28/12 03:02, Sparse Push wrote:
>> What is the best way to generate GObject bindings?
>> I ask this because I would like to use Clutter
>> (http://www.clutter-project.org/) in my D program and I don't think it has D
>> bindings already.
> 
>>From the website, http://www.clutter-project.org/about :
> 
>> [...]
>> Developed in C, with language bindings for Perl, Python, C#, C++, Vala and Ruby. Clutter also generates introspection data during build, for dynamic language binding using the GObject introspection API. Learn more about GObject introspection...
> 
> so, in theory, it should be possible to use girtod to create the bindings.
> 
> http://repo.or.cz/w/girtod.git/shortlog/refs/heads/master
> 
> 
> In practice, it will likely require tweaks for some data types and errors
> in the introspection files (for GTK, this took me way more time than writing
> the xml parser and code generator; maybe much of the work is already done so
> this will be less painful). Also, right now, girtod does not handle certain
> things (eg gobject interfaces). so if clutter is using them, support will have
> to be added (it wasn't immediately obvious to me how to expose the parts
> of the API that i haven't used myself; once i figure that out, adding the 
> support will be easy, as most of the work is already done).

Started to look at this myself, but had to handle all the deps first, that took
some time. As a side effect the gtk bindings improved.

girtod can now generate bindings for Cogl. Not even compile tested yet, but
should already give an idea how the thing will look like. If somebody familiar
with Cogl would check it out and see if exposing the API this way makes sense,
that would be great.

http://repo.or.cz/w/girtod.git/blob/refs/heads/gtk2:/gtk2/cogl.d


I'll try to get clutter done first, and will fill in the missing cogl/gl pieces
then.

artur
January 29, 2012
Re: Clutter GObject bindings
On 01/29/12 17:27, Artur Skawina wrote:
> On 01/28/12 17:08, Artur Skawina wrote:
>> On 01/28/12 03:02, Sparse Push wrote:
>>> What is the best way to generate GObject bindings?
>>> I ask this because I would like to use Clutter
>>> (http://www.clutter-project.org/) in my D program and I don't think it has D
>>> bindings already.
>>
>> >From the website, http://www.clutter-project.org/about :
>>
>>> [...]
>>> Developed in C, with language bindings for Perl, Python, C#, C++, Vala and Ruby. Clutter also generates introspection data during build, for dynamic language binding using the GObject introspection API. Learn more about GObject introspection...
>>
>> so, in theory, it should be possible to use girtod to create the bindings.
>>
>> http://repo.or.cz/w/girtod.git/shortlog/refs/heads/master
>>
>>
>> In practice, it will likely require tweaks for some data types and errors
>> in the introspection files (for GTK, this took me way more time than writing
>> the xml parser and code generator; maybe much of the work is already done so
>> this will be less painful). Also, right now, girtod does not handle certain
>> things (eg gobject interfaces). so if clutter is using them, support will have
>> to be added (it wasn't immediately obvious to me how to expose the parts
>> of the API that i haven't used myself; once i figure that out, adding the 
>> support will be easy, as most of the work is already done).
> 
> Started to look at this myself, but had to handle all the deps first, that took
> some time. As a side effect the gtk bindings improved.
> 
> girtod can now generate bindings for Cogl. Not even compile tested yet, but
> should already give an idea how the thing will look like. If somebody familiar
> with Cogl would check it out and see if exposing the API this way makes sense,
> that would be great.
> 
> http://repo.or.cz/w/girtod.git/blob/refs/heads/gtk2:/gtk2/cogl.d
> 
> 
> I'll try to get clutter done first, and will fill in the missing cogl/gl pieces
> then.

Done. Does the resulting clutter API look usable?

http://repo.or.cz/w/girtod.git/blob/refs/heads/gtk2:/gtk2/clutter.d


None of the new modules were tested - i still need code samples to port and time to fix any bugs.

artur
January 29, 2012
Re: Clutter GObject bindings
> Done. Does the resulting clutter API look usable?
> http://repo.or.cz/w/girtod.git/blob/refs/heads/gtk2:/gtk2/clutter.d
> None of the new modules were tested - i still need code samples to port and time
to fix any bugs.
> artur

Now I am going to feel bad if I don't create something awesome with it just as
quickly.
The API looks fine to me, should be enough to play around with it.
btw. You should definitely post this to the clutter website.
January 29, 2012
Re: Clutter GObject bindings
On 01/29/12 23:51, Sparse Push wrote:
> 
>> Done. Does the resulting clutter API look usable?
>> http://repo.or.cz/w/girtod.git/blob/refs/heads/gtk2:/gtk2/clutter.d
>> None of the new modules were tested - i still need code samples to port and time
> to fix any bugs.
>> artur
> 
> Now I am going to feel bad if I don't create something awesome with it just as
> quickly.
> The API looks fine to me, should be enough to play around with it.
> btw. You should definitely post this to the clutter website.
> 

I wouldn't be surprised - in fact i'd expect - that at this point the new
modules don't even compile. This is the first time i looked at clutter; i
wanted to port some toy app and use that for testing, but the ones i found
were either very unspectacular, didn't build at all, or were GPLed, which is
a very bad idea for an example. Even the C example from
http://wiki.clutter-project.org/wiki/Cogl/CoglBasicsExample does not work
here (there's no cube, just the "Hello Cogl" line), so i'm still looking
for something that will let me show off how much nicer the D version is
(compared to all the C clutter code i saw so far, this is not exactly hard).

Until the bindings are tested and shown to actually work, announcing them
would be a bit premature. I'll try make them work in the next couple of days;
there's also a "mob" girtod git branch, that anybody can push to... ;)

artur
January 31, 2012
Re: Clutter GObject bindings
On 01/30/12 00:30, Artur Skawina wrote:
> On 01/29/12 23:51, Sparse Push wrote:
>>
>>> Done. Does the resulting clutter API look usable?
>>> http://repo.or.cz/w/girtod.git/blob/refs/heads/gtk2:/gtk2/clutter.d
>>> None of the new modules were tested - i still need code samples to port and time
>> to fix any bugs.
>>> artur
>>
>> Now I am going to feel bad if I don't create something awesome with it just as
>> quickly.
>> The API looks fine to me, should be enough to play around with it.
>> btw. You should definitely post this to the clutter website.
>>
> 
> I wouldn't be surprised - in fact i'd expect - that at this point the new
> modules don't even compile. 

Clutter should be working now. There's a trivial example ported from C at
http://repo.or.cz/w/girtod.git/blob/refs/heads/master:/example_clutter1.d .
That, and the comments in the D module, is the only documentation there is,
but hopefully this will be enough.

artur
Top | Discussion index | About this forum | D home