digitalmars.D.learn - Clutter GObject bindings
- Sparse Push <in val.id> Jan 27 2012
- Artur Skawina <art.08.09 gmail.com> Jan 28 2012
- Sparse Pop <in val.id> Jan 28 2012
- Artur Skawina <art.08.09 gmail.com> Jan 29 2012
- Artur Skawina <art.08.09 gmail.com> Jan 29 2012
- Sparse Push <in val.id> Jan 29 2012
- Artur Skawina <art.08.09 gmail.com> Jan 29 2012
- Artur Skawina <art.08.09 gmail.com> Jan 31 2012
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
Jan 27 2012
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
Jan 28 2012
== Quote from Artur Skawina (art.08.09 gmail.com)'s articleOn 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
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 :)
Jan 28 2012
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
Jan 29 2012
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
Jan 29 2012
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
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.
Jan 29 2012
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
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
Jan 29 2012
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
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
Jan 31 2012









Sparse Pop <in val.id> 