java-gnome 4.0.7



       Module: java-gnome
      Version: 4.0.7
  Uploaded by: Andrew Cowie

http://download.gnome.org/sources/java-gnome/4.0/java-gnome-4.0.7.tar.gz
  md5sum: b1113a807b2d9e29f74c6c037667ccb5
    size: 616K

http://download.gnome.org/sources/java-gnome/4.0/java-gnome-4.0.7.tar.bz2
  md5sum: beddf8c00f1dc4e616160be4934fdcca
    size: 448K

News
----

<a name="4.0.7" id="1209449091" title="Drawing"></a>

java-gnome 4.0.7 (30 Apr 2008)
==============================

_Draw some._

In addition to improvements to our coverage of the GNOME libraries, this
release introduces preliminary coverage of the Cairo Graphics drawing library,
along with the infrastructure to make it work within a GTK program.

Drawing with Cairo
------------------

![Example](doc/examples/cairo/ExampleCairoDrawingBlends.png)

The trusty Cairo context, traditionally declared as a variable named `cr` in
code, is mapped as class
[`Context`](doc/api/org/freedesktop/cairo/Context.html). Various Cairo types
such as different surfaces and patterns are mapped as an abstract base class
(`Surface`, `Pattern`) along with various concrete subclasses (`ImageSurface`,
`XlibSurface`, and `SolidPattern`, `RadialPattern`, etc). Error checking is
implicit: the library status is checked internally after each operation and an
Exception thrown if there is a failure.

* `org.freedesktop.cairo.Plumbing`
* **`org.freedesktop.cairo.Context`**
* **`org.freedesktop.cairo.ImageSurface`**
* **`org.freedesktop.cairo.XlibSurface`**
* **`org.freedesktop.cairo.SVGSurface`**
* **`org.freedesktop.cairo.SolidPattern`**
* **`org.freedesktop.cairo.LinearPattern`**
* **`org.freedesktop.cairo.RadialPattern`**
* **`org.freedesktop.cairo.SurfacePattern`**
* **`org.freedesktop.cairo.Operator`**
* **`org.freedesktop.cairo.Format`**
* `org.freedesktop.cairo.Status`
* `org.freedesktop.bindings.FatalError`
* **`org.freedesktop.cairo.FatalError`**

The gateway to custom Widgets is the
[`EXPOSE_EVENT`](doc/api/org/gnome/gtk/Widget.EXPOSE_EVENT.html) signal; this
is where you can transition from the GDK `Window` to a Cairo `Context` and
then begin drawing.

* **`org.gnome.gtk.Widget.EXPOSE_EVENT`**
* **`org.gnome.gdk.EventExpose`**
* **`org.gnome.gdk.Rectangle`**
* **`org.gnome.gdk.EventCrossing`**
* **`org.gnome.gdk.CrossingMode`**
* **`org.gnome.gdk.NotifyType`**
* **`org.gnome.gtk.Image`**

Thanks in particular to Carl Worth for having reviewed our API and having
helped test our implementation.

New coverage and continuing improvement
---------------------------------------

The single option choice buttons in GTK are called `RadioButton`s and have now
been exposed. When using them you need to indicate the other buttons they are
sharing a mutually exclusive relationship with, and this is expressed by
adding them to a `RadioButtonGroup`.

![RadioButton](doc/api/org/gnome/gtk/RadioButton.png)


* **`org.gnome.gtk.RadioButton`**
* **`org.gnome.gtk.RadioButtonGroup`**

The usual steady refinements to our coverage of the GtkTreeView API continue.
There's a new `DataColumn` type for Stock icons, and TreeModelSort is now
implemented.

* **`org.gnome.gtk.TreeModelSort`**
* **`org.gnome.gtk.DataColumnPixbuf`**
* **`org.gnome.gtk.DataColumnStock`**
* **`org.gnome.gtk.CellRendererPixbuf`**
* **`org.gnome.gtk.TreeView`**
* **`org.gnome.gtk.TreeModel`**
* **`org.gnome.gtk.ListStore`**
* **`org.gnome.gtk.TreeStore`**

and minor changes to various other miscellaneous classes:

* **`org.freedesktop.bindings.Environment`**
* **`org.gnome.gtk.Expander`**
* **`org.gnome.gtk.Frame`**
* **`org.gnome.gtk.Paned`**
* **`org.gnome.gtk.HPaned`**
* **`org.gnome.gtk.VPaned`**
* **`org.gnome.gtk.Widget`**
* **`org.gnome.gtk.ProgressBar`**
* **`org.gnome.gtk.Action`**

Considerable internal optimizations have been done, especially relating to
ensuring proper memory management, with notable refinements to make use  of
"caller owns return" information available in the `.defs` data. This fixes a
number of bugs. Thanks to Vreixo Formoso for having driven these improvements.

Error handling has been improved for GLib based libraries as well. If an
`ERROR` or `CRITICAL` is emitted, our internals will trap this and throw an
exception instead, allowing the developer to see a Java stack trace leading
them to the point in their code where they caused the problem.

* **`org.gnome.glib.FatalError`**

Internationalization support
----------------------------

java-gnome now has full support for the GNOME translation and localization
infrastructure, including the standard `_("Hello")` idiom for marking strings
for extraction and translation. There's a fairly detailed explanation in the
[`Internationalization`](/4.0/doc/api/org/freedesktop/bindings/Internationalization.html)
utility class.

* **`org.freedesktop.bindings.Internationalization`**

Build changes
-------------

Note that as was advertised as forthcoming some time ago, Java 1.5 is now the
minimum language level required of your tool chain and Java virtual machine in
order to build and use the java-gnome library.

Thanks to Colin Walters, Manu Mahajan, Thomas Girard, Rob Taylor, and Serkan
Kaba for contributing improvements allowing the library to build in more
environments and for their work on packages for their distributions.

The [download](get/) page has updated instructions for getting either binary
packages or checking out the source code.

Documentation, examples, and testing
------------------------------------

Refinements to the API documentation continue across the board, notably
improving consistency. A large number of javadoc warnings have also been
cleaned up.

While not a full blown tutorial, the number of fully explained examples is
growing. There are examples for box packing and signal connection, presenting
tabular data, and basic drawing, among others. See the description page in the
[`doc/examples/`](doc/examples/START.html) section.

This code, together with the not inconsiderable number of unit tests and the
code for generating snapshots of Widgets and Windows means that a large
portion of the public API is tested within the library itself. The number of
non-trivial applications making use of java-gnome is starting to grow, which
are likewise providing for ongoing validation of the codebase.

Summary
-------

You can see the full changes accompanying a release by grabbing a copy of the
sources and running:

    $ bzr diff -r tag:v4.0.6..tag:v4.0.7

Looking ahead
-------------

It's probably unwise to predict what will be in future releases. The challenge
for anyone contributing is that they need to understand _what_ something does,
_when_ to use it (and more to the point, when not to!), and be able to
_explain_ it to others. This needs neither prior experience developing with
GNOME or guru level Java knowledge, but a certain willingness to dig into
details _is_ necessary.

That said, I imagine we'll likely see further Cairo improvements as people
start to use it in anger. It shouldn't take too long until the bulk of the
functionality needed for most uses is present in java-gnome. In particular,
forthcoming coverage of the Pango text drawing library will round things out
nicely.

There are a number of other major feature improvements we'd like to see in
java-gnome. Conceptual and design work is ongoing on for bindings of GConf,
GStreamer, and even support for applets. Within GTK, there have been a number
of requests made for various things to be exposed, for example, the powerful
GtkTextView / GtkTextBuffer text display and editing capability. Some of these
have preliminary implementations; whether or not any given piece of work is
acceptable in time for any particular future release will remain to be seen
and depends on the willingness of clients to fund us to review and test such
work.

In the mean time, people are happily _using_ the library to develop rich user
interfaces, which is, of course, the whole point. We're always pleased to
welcome new faces to the community around the project. If you want to learn
more, stop by `#java-gnome` and say hello!

AfC


-- 
An RSS 2.0 feed of ftp-release-list is available at:
http://download.gnome.org/LATEST.xml


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]