From: Hamish M. <ham...@gm...> - 2013-01-30 17:21:02
|
On 28 Jan 2013, at 20:07, Axel Simon <Axe...@in...> wrote: > Dear Luca, > > On 27.01.2013, at 15:16, Luca Bruno wrote: > >> Hi, >> I'm a Haskell newbie coming from the Vala world (GNOME, GTK+, etc.). >> I've read you are the author of Gtk2hs, thanks for your work. I'm >> interested in writing gui applications in haskell. >> I've recently tried out haskell-gi. It is obviously still incomplete >> but promising. I'd be interested in contributing to a project like >> that, though given my low haskell knowledge I'm resilient to work >> alone on such a project. >> Perhaps, do you have any plan for gtk3hs? Any kind of ongoing work >> not yet published? Do you think there's place for gtk in haskell or >> there are better solutions? Do you think gtk3 is good in general? >> If it is Gtk3 support you are after there are patches here... https://patch-tag.com/r/hamish/gtk2hs/home We have tried to put the changes in #ifdefs, so it should still work fine with Gtk2 (use -f-gtk3 to build with Gtk2). I am fairly happy with these patches now (Leksah is running fine with Gtk3). You sometimes have to change your code to get it to work with Gtk3, but most of the changes are as per the Gtk2 -> Gtk3 migration guide. There will be a few new Gtk3 features that are not included yet. Axel, what needs to be done before we could merge these into the main Gtk2Hs darcs repo? Hamish |
From: Hamish M. <ha...@fi...> - 2013-01-31 01:39:16
|
On 31 January 2013 10:31, Luca Bruno <let...@gm...> wrote: > On Wed, Jan 30, 2013 at 6:20 PM, Hamish Mackenzie > <ham...@gm...> wrote: >> >> If it is Gtk3 support you are after there are patches here... >> >> https://patch-tag.com > > > I thought gtk3 and everything else was about GI. I'm a vala developer, and > we switched to using GI and most of the annotations are reliable and GI even > fixed some bugs in the old gtk2 and gtk3 bindings. Not to say that gtk3 has > new widgets, deprecates old symbols, and you would benefit from a whole > number of other libraries such as clutter, gstreamer and webkitgit having it > always up-to-date. > As far as I can see, are you handwriting the .chs files? Because GI would be > right about not writing those stuff manually. > So I'm looking after a gtk3hs + everything else with haskell-gi. The docs > would obviously not be precise as the current ones, but I personally always > refer to the original C docs in any case. Sure, haskell-gi will be awesome! These patches were just a "while we wait" solution. I was not sure if you were just looking for a quick way to get your gtk2hs app to work with Gtk3 right now (sorry for the confusion). Gtk3 fixed a number of bugs we had in Leksah, and a few patches to the Gtk2Hs source seemed like the quickest way to port Leksah to Gtk3. But we will of course switch to the haskell-gi solution when it is ready. How close is haskell-gi to being ready? (I have not tried it in a while). I have also added all the DOM functions to webkit by processing the WebKit IDL files https://patch-tag.com/r/hamish/webkit/home And wavewave made bindings for JavaScriptCore https://github.com/ghcjs/webkit-javascriptcore Do you know if GI will cover both of these? Is the plan to use haskell-gi to replace most of the gtk2hs package/repo (or will there be a whole new gtk3hs package/repo)? If the changes will be in the gtk2hs package/repo, will adding these Gtk3 patches as well make it harder to port to GI? (If so we might need to have a temporary fork gtk2hs-gtk3 or gtk2hs-leksah in Hackage so we can get the Gtk3 fixes into Leksah). Hamish |
From: Axel S. <Axe...@in...> - 2013-01-31 12:22:08
|
Hi all, first off, I think it's great if people are looking into using introspection to get Gtk2Hs up to date again. On 31.01.2013, at 10:55, Luca Bruno wrote: > Is the plan to use haskell-gi to replace most of the gtk2hs > package/repo (or will there be a whole new gtk3hs package/repo)? If > the changes will be in the gtk2hs package/repo, will adding these Gtk3 > patches as well make it harder to port to GI? (If so we might need to > have a temporary fork gtk2hs-gtk3 or gtk2hs-leksah in Hackage so we > can get the Gtk3 fixes into Leksah). > > As far as I know, the gtk2 annotations are not very good, I would > discard it. For what concerns gtk3, haskell-gi generates a Gtk3.hs, > so I think that would be a completely different repo. For pygobject > and javascript there's no separate repo, because they load the > typelib at runtime. > The docs are sometimes off in Gtk2Hs but a lot of the stuff is also a bit different and Haskellized. It would be shame to lose that. > In general, this is how it should work: > 1) haskell-gi reads the typelib or gir (currently the typelib) for a > library. > 2) It reads an additional metadata/override file for possible custom > functions or fixes. This is not done yet in haskell-gi, but it's > done in other languages, seehttp://git.gnome.org/browse/pygobject/tree/gi/overrides > and http://git.gnome.org/browse/vala/tree/vapi/metadata > 3) Merge the two and produce the bindings Foo.hs ready to be > compiled and used. Duncan once made a binding tool that tried to parse in the current .chs files and then added new bindings that weren't already defined. That way, he managed to mix the the metadata/override file with the result. The way it worked was that the tool would generate the source for a function in memory, compute a hash value and if, the function wasn't defined in the .chs module yet, it would add it, including the hash value. The function can then be changed by hand. If the tool sees this modified function with the same hash code that it computed for the generated version, it leaves the function alone. Only if the function changes in Gtk3 (and thus the hash code is new), the new version replaces the old. The code for doing this is already in the Gtk2Hs repository. In case you feel comfortable with this concept, you would have a starting point. One thing that often has evaded the automatic generation is memory management. Most functions obey a convention in that a _new function returns a pointer on which sink() without ref() has to be called (or similar) while other functions that return objects must be wrapped with a function that does a ref(). Sometimes this is different (especially some functions take over ownership of an object, in which case ref() has be called before the object is passed to the function). I hope this is all conveyed in the introspection data. Cheers, Axel > |
From: <wag...@se...> - 2013-01-30 19:32:07
|
Quoting Hamish Mackenzie <ham...@gm...>: > > On 28 Jan 2013, at 20:07, Axel Simon <Axe...@in...> wrote: > >> Dear Luca, >> >> On 27.01.2013, at 15:16, Luca Bruno wrote: >> >>> Hi, >>> I'm a Haskell newbie coming from the Vala world (GNOME, GTK+, etc.). >>> I've read you are the author of Gtk2hs, thanks for your work. I'm >>> interested in writing gui applications in haskell. >>> I've recently tried out haskell-gi. It is obviously still incomplete >>> but promising. I'd be interested in contributing to a project like >>> that, though given my low haskell knowledge I'm resilient to work >>> alone on such a project. >>> Perhaps, do you have any plan for gtk3hs? Any kind of ongoing work >>> not yet published? Do you think there's place for gtk in haskell or >>> there are better solutions? Do you think gtk3 is good in general? >>> > > If it is Gtk3 support you are after there are patches here... > > https://patch-tag.com/r/hamish/gtk2hs/home > > We have tried to put the changes in #ifdefs, so it should still work > fine with Gtk2 (use -f-gtk3 to build with Gtk2). > > I am fairly happy with these patches now (Leksah is running fine > with Gtk3). You sometimes have to change your code to get it to > work with Gtk3, but most of the changes are as per the Gtk2 -> Gtk3 > migration guide. There will be a few new Gtk3 features that are not > included yet. > > Axel, what needs to be done before we could merge these into the > main Gtk2Hs darcs repo? Basically, I just need to marshall the time to take a look at them. I haven't had a lot of time for gtk2hs in the past month or so, but I will be picking things back up in the next week or two. Previously, clearing out the bug tracker had been my biggest priority, but I understand that a lot of people want gtk3hs support, so you can expect this to be the first thing I devote time to. Thanks again for the hard work you've done. I will look at it soon, I promise. ~d |