Go forward in time to July 2005.
Unending stench, stream of asses in your face. Frequent flyers know how much it sucks to be seated across the aisle from the toilets.
I've been working on adding support to libgsf for reading the thumbnail data stored inside MS Office files. Jody and Michael have been of great help with this.
The idea is to create a little thumbnailer program that uses the thumbnail framework in libgnomeui. Along the way, I want to write documentation for the GNOME ISV Guide on how to plug such a thumbnailer into the desktop.
Federico: Gulp gulp gulp
Oralia: That Darjeeling tea gives you marijuana breath
I uploaded a patch for #136271, to let GtkFileChooser understand .desktop links. It more or less works, and the comments in the bug describe the issues that the patch still has.
The fact that the file chooser doesn't understand .desktop files right now means that if you tell it to go to "smb:///", you can't navigate into the resulting list of shares: gnome-vfs creates fake .desktop files that actually link to the shares' URIs. With my patch, it can do that more or less well.
If people can play with that patch, I'd love to know the results. Please comment on the bug if you get to play with it.
Today Oralia made her fantastic chicken meatballs, stuffed with hard-boiled egg and mint leaves. We had not had that dish in a long while. And yesterday she made mushroom soup and green enchiladas. Mmmmmm.
Philip: Freedesktop.org should not be making de jure standards, as no one in their pragmatic mind would use them. What we need is more superheroes who write a fantastic piece for the free software platform, and then actually submit patches so that all the major apps can use that piece with little extra work on part of the developers. After that happens, said piece becomes a de facto standard and we can subsequently and rightfully call people crazy if they decide not to use it for a new project.
GTK+ 2.7.0 is out for your bleeding-edge testing pleasure! Who wants to collect the documentation for all the new APIs? I.e. who wants to do the updated fashion show?
Calum: We need a list of common GUI metaphors and how to enable them for accessibility. You have an editable grid? Then you need an "active cell" to be always present, and this is how you tell ATK about it. You have a custom widget that implements internal drag-and-drop? This is the usual pattern you'd use to make it accessible. Right now it looks like only a handful of Sun people know what to do when something is not accessible. Document that! No one but you really knows what to do to make their existing apps accessible. When *you* get a new app dumped on your laps, what is the process you follow to make it accessible?
Also, it would be great if Sun could dedicate resources to LDTP. If we cannot write automated tests for a certain part of the GUI, it may be because that particular GUI lacks certain accessibility features.
Kjartan took a snapshot of GNOME 2.12 and ran the whole sesison under Valgrind. Go and fix leaks!
Alán and Dori got married this weekend in Cuernavaca. I was very happy to see Miguel, María Laura, Mancha, Patrick, Adrián, and other friends there. I was very happy in particular to see Patrick, who underwent a horribly troublesome pancreas operation since the last time I saw him.
Alán and Dori:
Oralia cut my hair one day before the wedding so I could look halfway presentable. She looked absolutely beautiful in her new dress:
Mancha and Patrick hanging out:
The musicians were terrible, although they played with a lot of feeling:
There was a piñata, and one of Alán's friends, a two-meter-tall guy from Berkeley, took a shot at it:
Right before GUADEC I started fixing bug #162358, in which CREATE_FOLDER mode didn't quite work in GtkFileChooser. I had the patch in a halfway-done state on my machine since then, and today I finished fixing it. Several nice things came out of this.
Perhaps the most important function in gtkfilechooserdefault.c is gtk_file_chooser_default_should_respond(). This takes care of deciding what happens when you click the "OK" button in the dialog, or whatever the confirmation button happens to be. This does not always just close the dialog and tell you "I'm done". For example, the selection may be invalid, or you may be trying to create a folder with the same name as a file that already exists.
That function was a mishmash of special cases and deeply-nested "if"s. I replaced that mess with a nice table: one dimension is for the set of possible file chooser modes (OPEN, SAVE, SELECT_FOLDER, CREATE_FOLDER), and the other dimension is for the set of possible states of the selection within the file chooser. The cross product of those sets determines which action should be taken. It's pretty; take a look. Pedants would call this "data-directed programming".
static const ActionToTake what_to_do[4][3] = { /* 0 selected 1 selected many selected */ /* ACTION_OPEN */ { NOOP, RESPOND_OR_SWITCH, ALL_FILES }, /* ACTION_SAVE */ { SAVE_ENTRY, RESPOND_OR_SWITCH, NOT_REACHED }, /* ACTION_SELECT_FOLDER */ { RESPOND, ALL_FOLDERS, ALL_FOLDERS }, /* ACTION_CREATE_FOLDER */ { SAVE_ENTRY, ALL_FOLDERS, NOT_REACHED } };
I also fixed some of the annoyances with auto-completion:
Miscellaneous bugs that I found while fixing this, and which I also fixed:
Ross is my hero, again, for adding color calibration to EOG. He also started a ColourCalibration page in the wiki; I'm sure the wise GIMPs will have something interesting to say about this.
I'm delighted to see that Emmanuele Bassi is working on putting the recently-used machinery into GTK+. We had a good discussion during GUADEC — while we were waiting for the terrible restaurant across the street from the Haus der Wirtschaft to serve us — and came up with good ideas.
In reality, the old EggRecent API has some very big warts (subtly incorrect misuse of filename encodings, redundant functions), but the general shape is fine. Emmanuele's work will rather focus on making recent-files and bookmarks shareable across desktops, since Other People(tm) prefer XBEL to the home-grown format from freedesktop.org.
Today we had a great breakfast. While Oralia prepared her lesson plans, I made an omelet filled with wild mushrooms, spinach, epazote, onions, garlic, a little basil, and a little chile serrano. It came out quite delicious.
The hotel where I stayed during GUADEC (which was great, since it was two blocks away from the conference venue) served breakfast at the bakery across the street. I miss their dark crusty bread covered with sunflower seeds.
During GUADEC I had the wonderful opportunity of talking to Nagappan, from Bangalore, who is in charge of the Linux Desktop Testing Project. This is a work in progress to have automated tests of the GUI throughout the desktop. Just like unit tests for non-GUI code, this is based on simple scripts that exercise many areas of the GUI, and check that the results are correct.
Having automated tests that run through all parts of the GUI is nice by itself, because it lets us catch bugs. But it also lets us do automated testing for memory leaks, like in this Nautilus bounty: you run Valgrind on Nautilus, and then use LDTP to exercise the user interface in various ways. We could also use this to ensure that we don't have regressions in terms of performance: automated tests mean that you can know if something becomes slower after you make a change to the code. NotZed has been working on the morass of profiling heavily threaded applications which also load libraries dynamically (which seems to be the case for large programs like Evolution and Nautilus these days). So it can all probably be made to Just Work(tm) with a bit of effort.
Today Oralia and I spent about an hour trying to re-set one of the little screws in my glasses. One of the legs was a bit loose due to the screw being in only halfway through. The leg actually has a little mechanism where the part that gets screwed to the frame also has a hidden spring. That spring gives the leg its "snap" when you fold the legs. However, to re-set the screw in question, you have to pull that little springy part away from the leg, and the fucking spring makes this really hard. It's one of those things where if you try to do it yourself, you find that you need an extra pair of hands. But if you ask your lovely wife for help, you both have to hold the small parts in such a way that you have major finger collisions. We had to use two of the tiny screwdrivers from Swiss army knives (one to push the springy part away, and one to turn the screw), and lots of patience.
Go backward in time to May 2005.
Federico Mena-Quintero <federico@ximian.com> Wed 2005/Jun/08 11:35:42 CDT