Evince 2.27.1 with preliminary annotations support

I said in my previous post I was going to talk about Evince 2.26, but I haven’t managed to find time to do it. Anyway, I guess that at this time everybody has already discovered the new features of Evince 2.26, so I’ll talk about 2.27.1 now.

2.27.1 is the first unstable release leading up to Evince 2.28. It has been released a week later, because the annotations support wasn’t ready, and we wanted to include it in the first release of the development cycle. At the moment only Text Annotations (those represented by an icon in the document with a popup window associated) are supported, and only existing annotations can be modified. Poppler doesn’t support adding new annotations to the document yet, so this will be the next step. Once we have complete support of Text Annotations, adding support for other annotation types should be easier.

A PDF document with text annotations in evince
A PDF document with text annotations in evince

I have to say that this has been done thanks to the great work done by Iñigo Martínez as part of the Google Summer Of Code program. I just continued his work.

Annotations are not the only new feature of this release, see the NEWS file for a complete list of changes. And we are still at the beginning of the cycle! 🙂

Evince 2.26 without annotations

Annotations support is in our RoadMap since GNOME 2.20, and it has been the main goal since then. However, we failed in 2.22, in 2.24 and we are going to fail again in 2.26.

Lack of time is the main reason for this failure (remember that we, the Evince development team, are all volunteers), but it’s not the only one. During the 2.25/2.26 cycle we have started to work on the annotations stuff, although (as usual) a little bit late, when the feature freeze deadline approached. When we had the minimum support already implemented, we realized that poppler didn’t have support for writing annotations yet. I don’t know why, but I was quite sure it was already implemented. The thing is that there isn’t writing support for annotations in poppler right now. So we had, at least, two options: releasing evince 2.26 with annotations support in a read only mode or delaying the annotations support to the next cycle once again. Both have advantages and disadvantages, but the main reason why we decided not to release 2.26 with annots support is because we don’t think that annotations are useful if you can’t actually use them. I’m sure we were going to receive lots of bug reports about non editable popups.

So, what’s the plan? The idea is to implement writing support in poppler ASAP, and merge the evince code early in the next development cycle.

Despite the annots stuff, I’m very happy with the work done during this cycle, but I think I’ll better talk about Evince 2.26 later in another post.

PolicyKit and CPUFreq Applet

The frequency selector menu has been implemented for a long time now however, there are still people who don’t know such a feature exists. The problem is that it uses a helper program that has to be installed with the suid bit enabled and it seems that some distros don’t do that by default.

Now that PolicyKit has been proposed as an external GNOME dependency, I’ve decided to give it a try. Yesterday I committed a patch to gnome-applets to use PolicyKit (when it’s available) in the cpufreq applet, so that we don’t need to enable the suid bit in cpufreq-selector anymore. The selector menu will be always available by default now. An authentication dialog, provided by PolicyKit-gnome, will pop up when a non-admin user tries to use the selector menu.

PolicyKit-gnome authentication dialog
PolicyKit-gnome authentication dialog

Don’t worry too much about the annoying popup dialog, since the authentication can be remembered forever, so that if you want, you will only see this popup dialog the first time.

GNOME 2.22 is out!


GNOME 2.22

This release is very special, since it includes an important architectural change, Gio/Gvfs a replacement for GNOME-VFS. Many people have worked hard to bring us a new GNOME stable release with important architectural changes, without regressions and in a six months release cycle. It’s awesome!. Not so much time ago, we didn’t have support for some basic network protocols such as ftp, the connect to server dialog in nautilus hadn’t been ported to Gio/Gvfs as well as many of our core modules, computer:// and network:// weren’t implemented either, etc. There are too many heroes in this release. Thanks to everybody. I love the GNOME community and I’m really happy to be part of it.

Evince 2.22

There are also many improvements in Evince for this new GNOME release:

  • Most of the annoying popups dialogs have been replaced by a message area in the view. Based on the gedit message area.
  • Transition effects in presentations are now supported (Thanks Carlos!)
  • Thanks to the Google Highly Open Participation Contest automatic and kinetic scrolling have been implemented
  • Many many improvements and bug fixes in the PS backend thanks to the use of libspectre.
  • Important performance improvements of speed and memory consumption
  • Many other bugs fixed

Formula 1

The new season starts this weekend. I’m looking forward to watching the first race

Evince and libspectre

It’s not a surprise that libspectre was thought to be used mainly (but not only) by evince and okular. I’ve just committed a patch to evince to use libspectre when it’s present, otherwise falling back to gs. I haven’t removed the old gs code because libspectre is still too new and it’s not yet shipped by distros.

There are many many advantages of using libspectre in evince, some of them:

  • One of the most important advantages is probably that it’s noticeable faster.
  • Postscript printing improvements: print as PDF, multiple copies (bug #443859), reverse and collate are now supported.
  • Page labels
  • PS specials support in dvi documents (bug #386005)
  • Other bugs fixed: #317106, #499787, #501235, #421879, #445797, #486547

libspectre 0.1.0 now available

A new libspectre release 0.1.0 is now available.

This is the first public release of libspectre

What is libspectre
==================  

libspectre is a small library for rendering Postscript documents.
It provides a convenient easy to use API for handling and rendering Postscript documents.  

libspectre is free software and is available to be redistributed and/or modified under the terms
of the GNU General Public License as published by the Free Software Foundation; either version 2,
or (at your option) any later version.  

More information about libspectre
=================================  

Web site:      http://libspectre.freedesktop.org/
The programming manual:      http://libspectre.freedesktop.org/manual
Bug reports and feedback:      https://bugs.freedesktop.org/ Product: libspectre

The full announcement is available here

Extracting images with Evince

Finally, the patch I wrote to allow extracting images from a PDF has been applied to poppler cvs head (thanks Albert). Evince already supports this feature since 0.7.1 version. Here is a screencast.

Evince images handling
(click to play back, ogg/theora, ~3.0 MBytes)

Images selection is not supported yet, but I’m already working on it 😉

Evince images selection
Select images

Google Summer of Code 2007

The list of approved projects has been announced!. Iñigo Martínez, a student from the Universidad del País Vasco, is going to be my student to implement annotations support in Evince. We received more than ten proposals to implement annotations support so the final decision hasn’t been easy. I’ve been talking with Iñigo and he seems to be very motivated so I’m quite sure the project is not going to fail this year. Now is time to work and enjoy hacking!