java-gnome 4.0.14 (16 Dec 2009)
You have to compose in order to enchant
Access to Enchant spell checking API
Coverage of the Enchant spell checking facade (which was already an implicit dependency arising from our GtkSpell coverage) is now included in java-gnome. It’s a lovely library with a simple to use API which in turn fronts for various back end spelling providers.
More detailed input handling
GTK’s handling of complex input methods is extraordinarily powerful, and of
course present by default in the Entry and TextView text entry Widgets. If
you’re doing your own text based work, however, you might need to capture the
results of an input method being used to compose characters or words.
InputMethod.Commit is where the result of a compose sequence is captured and
delivered to the application.
We’ve also made numerous improvements down in GDK where events are processed; as a Java library we represent many naked low-level native entities with strongly-typed classes, and have improved our coverage here, notably with new Cursor constants representing the common use cases of changing the pointer.
Improved text rendering
Other minor improvements are present across the text rendering stack, notably
with the ability to introspect where a Pango Layout has made its line breaks
when wrapping via LayoutLine’s
Guillaume Mazoyer finished up a work by Serkan Kaba resulting in us having coverage of the special LinkButton subclass of Button which can be used to present clickable URLs.
You can now create custom PaperSize objects, which is handy if you need to use Cairo to output PDF documents with a non-standard paper format.
You can now use gdk-pixbuf to query an image on disk for its dimensions via
getFileInfo() function calls.
There were of course miscellaneous improvements to various long established core classes, mostly fixing typos.
We now have the methods necessary to have ImageMenuItems actually show images (there’s a GNOME bug whereby suddenly icons are not showing in menus. So you need to either explicitly tell an ImageMenuItem that it should always show its image, or use the global Settings to say that Menus and Buttons should always have their icons showing).
The internal initialization sequence has been tweaked to ensure that GLib’s
threads are initialized before anything else. This means java-gnome apps will
glib 2.22.3 is installed; this is a workaround for bug
For a long time we’ve had to be careful in our test suite not to do anything
that would cause a Window to appear or otherwise popup while the tests were
running. But some for some test cases this is unavoidable, especially if the
main loop needs to cycle. We now run the java-gnome test suite within a virtual
X server (ie
Xvfb), and as a result distros packaging the library can run the
test suite on their headless build servers if they wish. There’s a new base
class for java-gnome TestCases needing to run in this environment.
What’s ahead for java-gnome? That’s always a good question. At this point java-gnome provides a comprehensive API for development of user interfaces suitable for the GNOME desktop, and it’s incredibly rewarding to see people using the library for their own programs.
Development of java-gnome has continued pretty steadily, driven by people finding they need additional features from some of the underlying GNOME and FreeDesktop libraries we already expose. As a community we also work to fine-tune the performance and quality of the library through continuous improvement of the code base and its algorithms. There are also people quietly working on experimental coverage of more unusual libraries such as GStreamer and Clutter which is pretty exciting to see.
Anyone using java-gnome are always welcome to join us in
#java-gnome to ask
questions or just hang out! So happy hacking, and see you soon.
You can download java-gnome’s sources from
ftp.gnome.org_, or easily checkout a branch from_ ‘
$ bzr checkout bzr://research.operationaldynamics.com/bzr/java-gnome/mainline java-gnome
though if you’re going to do that you’re best off following the instructions in the