Le dimanche 01 avril 2012 à 21:23 +0200, Artur Skawina a écrit : > What's new? > > - Now, in addition to > > GLib, GModule, GObject, Gio, GdkPixbuf, Pango, PangoCairo, PangoFT, Gdk, > Atk and Gtk+ > > there are also bindings for > > Clutter, ClutterX11, Cogl, CoglPango and Mx. > > - Struct inheritance. No more need for "container.add(&vbox.widget);", you > can > write that as just "container.add(vbox);", the compiler will do all the > work > to check if the 'vbox' is somehow derived from 'widget', and convert the > pointer by itself. > > This works not only for "struct Widget {}; struct VBox { Widget widget; > ... };", > but also for "struct Widget {}; struct VBox { Widget* widget; ... };". > You can extend built-in widgets and still use them with the std APIs. > > - Objects can now be constructed as "gtk.VBox(0, 0)"; > the old way, ie "gtk.VBox.new_(0, 0);" still works. > > - All methods that take a (char*) pointer now also silently accept D strings; > casting to (char*) and/or calling toStringz are no longer necessary. It > will > be done implicitly every time you try to pass a D string; you can still > pass > a (char*) to avoid the copy. > > - GTK (GObject) interfaces supported. > > - Better error messages when registering signal callbacks (the messages > given by > the compiler when a template instantiation fails are not very helpful and, > as > it typically happens via several alias levels, were often just confusing). > > - Some 64-bit fixes (I don't have a 64-bit GTK stack ATM, so there could be > more problems around). > > - The pre-generated D modules were built using newer library versions > (still GTK2, only the glib version is newer than that). > > - New examples: Clutter and Mx. Trivial, but enough to get you started. > > > A D GTK app now looks like this: > > http://repo.or.cz/w/girtod.git/blob/refs/heads/master:/example_gtk.d > > doesn't need a single cast (other than for skipping the string copies, using > (void*) library APIs and object lookup tricks, all of which could be avoided, > but I intentionally didn't do this in the example), looks much better than > the equivalent C version would and couldn't be done any more efficiently in C > (assuming same compiler middle/backend and ignoring the string differences, as > for most cases these don't matter. The convenience makes up for the few extra > copies and these can be avoided in every case where performance really > matters). > > > The code is here: http://repo.or.cz/w/girtod.git > > The easiest way to try the bindings is probably to check out the "gtk2" > branch, > copy the "gtk2" directory to your app directory and import from there. > > The girtod tool used to generate the D modules lives in the "master" branch. > When used with different lib versions than the ones I tried it on, it may need > a few tweaks; sometimes new types appear or move between the libs, new weird > or > broken introspection data shows up etc. > > artur > > PS. Are there any sane Cairo D binding out there? (What's "sane"? Well, if > there's a "class" in there somewhere then it's not sane)
why use your library instead https://github.com/gtkd-developers/GtkD why do not contribute to this project?