Hi,
On 2021-08-29 11:26 a.m., Thierry Huchard wrote:
As an aside, I would also like to propose that we schedule a release of
the SANE frontends perhaps a short while after the backends' release.
We have had a request to port our x* frontends to GTK3 (or 4?) and I am
currently working my way through that.
GTK4 has been released and GTK2 (GTK+) has been well and truly
deprecated to the point at which I fear that some distros might drop
support entirely.
GTK porting is not something I have done before but it is an exercise
that is required for xsane also so the effort is worthwhile.
The biggest deal seems to be the use of GtkPreview to render and manage
the preview window, which has been removed entirely from GTK3.
There will be a few other bits and pieces here and there I am sure.
Hi Ralph,
For the Gtk migration, I can help!
Thierry
That would be really appreciated, thanks!
I would like to have a stab at the port unaided at least for the first
pass because it is a good learning exercise for myself.
I mostly learn by doing but if you could take a look through my
first-pass port, when I check it in, to see if there is anything that I
have done badly or if there is a better way then that would be excellent!
For the first pass, I am staying with GTK2 and removing deprecated
features. That is mostly involved in reimplementing the GtkPreview
functionality that is used in the Preview window of xscanimage. I am
replacing it with a GtkDrawingArea and backing it with a data buffer
using cairo_image_surface_create_for_data(), which is similar to what
xscanimage is going at present so the changes are fairly minimal. The
data buffer format will be slightly different but I don't think that
should be an issue. xscanimage gradually adds data to the buffer as it
comes in so the preview emerges as the image data is received.
I also have some ideas for implementing the selection area. At the
moment it is a thin rectangle that is drawn across the preview image
with the mouse. I'm thinking that a translucent mask with the selected
area transparent might look very effective and modern and simple to do.
I'll let you know when I have something worth looking at! Any porting
comments that you have are also appreciated.
Cheers,
Ralph