Go forward in time to May 2004.
Carl Worth on Cairo:
Owen Taylor on what toolkits expect from the graphics sytem:
Owen just gave me a good idea. You should be able to drag anything from an application into the Nautilus trash to delete it. In particular, you should be able to drag bookmarks from your file chooser into the desktop-wide trash can to remove them — you have to hit the "Remove" button right now. To make the trash can a generic trigger for deletions, we just have to make it take in a data type of application/x-delete-me with GDK_ACTION_MOVE; Nautilus will do nothing but ask the drag source to delete its data. Your drag source will get a GtkWidget::drag_data_delete signal, and you can do whatever is needed to delete your object there.
Got my hotel room sorted out; it turns out that Novell/Mexico had not actually paid for my room, but just made the reservation. I had a good sleep last night. I had dinner with JRB, Zana, Blizzard, and a bunch of people. Then everyone went to Flat Top's, a pool bar, where Mark proved to be quite the shark, even if he denies it.
Blizzard scores:
Stuart Anderson on standardization:
Jon Smirl on Longhorn and Mac OS X:
Keithp walks in:
Hideya Kawahara on Looking Glass:
Deron Johnson comes in to talk about implementation:
Dave Reed and Dave Smith on Croquet:
I'm at the XDevConf in Cambridge. First good thing of the day: bagels and coffee available for attendees. I didn't have time to get breakfast, so this is great. Plus, the hotel is practically next door from Quantum Books, which is so unbearably tempting...
Owen, Havoc, and Trow are here. It's great to see them again.
Russ Nelson was summarizing the talks on IRC, and I took some of his notes to paste them here.
Jim Gettys's talk:
Keith Packard's talk:
Jim Gettys again:
Eamon Walsh on fine-grained access control for X:
James McQuillan on the Linux Terminal Server Project:
Ted T'so follows up on security:
Sigh.
Why I love Lisp inside Emacs, part N:
(defmacro with-system-time-locale (time-locale &rest body)
`(let ((old-locale system-time-locale))
(setq system-time-locale ,time-locale)
(unwind-protect
(progn ,@body)
(setq system-time-locale old-locale))))
(with-system-time-locale "C" (format-time-string "%A"))
=> "Monday"
(with-system-time-locale "es_MX" (format-time-string "%A"))
=> "lunes"
In general, the with-foo convention makes code much more readable and robust: consider Sawfish's with-server-grabbed, or any kind of with-mutex construct.
That was to fix a bug in the elisp code that generates my RSS feed; if I ran Emacs under a non-English locale, dates inside the RSS would get generated in Spanish, which is not valid.
The meeting between the GNOME Foundation and the Mozilla team is really good news! Tomorrow I'm flying to Boston for the XDevConf, and one of my plans was to get together with Miguel/Owen/Keith to see what we could do about a canvas-based drawing model for GTK+, based on Cairo. The Blizzard Man will also be attending, so we may as well throw in some Mozilla/XUL discussion into the mix.
Here are my slides from Colombia:
Enanos, simios, y otras alimañas: El Proyecto GNOME (HTML) — gnome.sxi (819 KB)
Moda 2004 para programadores de GNOME (HTML) — new-api.sxi (316 KB)
Today I gave my talk on a few APIs that people should be using in their GNOME programs: GtkFileChooser, EggRecent, gnome-vfs, and some of the new features in GTK+. It went really well; I'm glad that the slides came out so nicely.
Something happened to my laptop, though, and now the display is iffy. When I suspend it, the LCD slowly turns yellowish-green in a way that would be awesome for a screen saver, but it is disconcerting instead. And when I unsuspend it, the screen appears to be turned off, but then the green/yellow comes back. I have to really turn off the display with the CRT/LCD function key, then turn it back on so that it will display fine. I hope the stupid screen doesn't throw the towel on me, as I'll be traveling next week as well.
Last night I talked for a bit to Ismael Olea about things that we may need to add to gtk-doc to make reference documentation easy to translate. We have no concrete plans yet, however. Drinking in a really nice bar got in the way of the discussion.
I'm in Medellín, Colombia, at the Congreso Internacional de Software Libre. Oralia didn't come this time, though, and I am missing her a lot. It is the distance and delayed communications that hurt. Also, hugging together in bed at night when it gets cold.
Today I gave my talk on the history and status of GNOME, and how people can get started as contributors. After the talk I got many questions from people who are doing programming in GNOME, and the problem seems to be, mostly, that we lack enough programmer's documentation, and as a nice bonus, translations thereof. Things like Havoc's book are basically impossible to get here without outrageously expensive shipping costs, and the online version is of course obsolete, as it refers to GNOME 1.x.
Currently, we only have these convenience functions to set/get a GtkSelectionData:
gboolean gtk_selection_data_set_text (GtkSelectionData *selection_data, const gchar *str, gint len); guchar *gtk_selection_data_get_text (GtkSelectionData *selection_data);
These handle UTF8_STRING and the historical TEXT and COMPOUND_TEXT selection types from X.
However, we have no convenience functions for other well-known data types that get passed primarily through drag and drop, such as text/uri-list and application/x-color. Applications who handle those data types have duplicated code, different kinds of bugs as a result, and all sorts of evilness. I would love to have something like this instead:
/* Sets "application/x-color" from the 16-bit RGB values */
gboolean gtk_selection_data_set_color (GtkSelectionData *data,
const GdkColor *color);
/* Parses from "application/x-color", handling correct and incorrect
* formats (old versions of Qt or KDE set the selection incorrectly).
* Returns an error if the selection type doesn't have the right atom
* or if parsing fails.
*/
gboolean gtk_selection_data_get_color (GtkSelectionData *data,
GdkColor *color,
GError **error);
/* Sets "text/uri-list" from a list of char; uses the format
* defined in RFC 2483 section 5.
*/
gboolean gtk_selection_data_set_uri_list (GtkSelectionData *data,
GList *uri_list);
/* Parses "text/uri-list" according to RFC 2483 section 5.
* Returns a list of char *, or an error if the selection type doesn't
* have the right atom or if parsing fails.
*/
gboolean gtk_selection_data_get_uri_list (GtkSelectionData *data,
GList **uri_list,
GError **error);
If you are interested in stuff like this, see the corresponding mail.
New section for the GtkFileChooser documentation: file names and encodings. Read this if you don't know why g_filename_to_utf8() exists.
The day my dad and his wife came to pick up my sister, Oralia made fabada for lunch. We put the remains in the freezer. Today, back from Mexico City, I heated the leftovers and had them for breakfast. Fabada does taste better after the day it was made; it was delicious.
Material for gnome-love aspiring hackers: make GtkRange disable the scrollbar buttons when the thumb is at the limits.
Up to now, the new features to switch keyboard layouts had never worked for me. It turns out that I had not enabled the group-switching shortcuts in the Layout Options page of the keyboard capplet. Now pressing both Shift keys together switches layouts. Also, I had an old .server file with the same IID as that for the new keyboard layout panel applet, so the panel was not picking up the information for the new applet — so I couldn't launch it at all.
I wonder why none of the group-switching shortcuts were enabled by default. It would also be nice to automatically launch the keyboard applet as soon as you add keyboard layouts in the control center.
When my dad and his wife went to Xalapa to pick up my sister and ourselves last Friday, they brought along with them some cold cuts from Perote, a town along the highway to Xalapa where they make fantastic delicatessen. Their lomo embuchado is incredibly good. On the way back to Mexico City we also stopped there, and Oralia and I got some more goodies for my mom.
Last Saturday we had coffee with Juan José Martínez, Toño Salgado, and his girlfriend Ingrid, all members of the Xalapa LUG. Juan José told me about a little record store downtown, in the second floor of the otherwise uninteresting Pasaje Enríquez. It's called Promúsica, and it is quite good. The owners actually know what they have in stock, and they do know the music and make recommendations. I got some Honegger for myself and the sountrack of The Hours, by Philip Glass, for Oralia. Why Honegger? I've been building a small CD collection of music that Alejo Carpentier mentions in his books, and so far everything has been good. He had quite a taste for contemporary composers, something I appreciate a lot.
Toño came by on Monday afternoon. He's learning to program in Python, and he needs a hacker-mentor. He's very interested in music software, so perhaps in the future he'll be able to write something useful.
The file chooser supports tilde expansion now, so you can type "~/foo.txt" in the Control-l dialog and it will do the right thing.
My sister Carla came from Mexico City yesterday, and she'll be staying here until the weekend. It's great to see her again. She's rather nervous about finishing elementary school and going into secondary school hell. I wish I had had someone to tell me what it was going to be like.
Chernobyl photo gallery. This is truly frightening.
Yesterday I added support for selecting hidden files in GtkFileChooser. You can make it show hidden files in two ways: one is by bringing up a context-sensitive menu on the file list and toggling an option; the other one is by going to the Location dialog with Control-L and typing the name of a dotfile.
In other news, the file chooser now displays a busy cursor while loading folders. It's much more comfortable to use with that in place. These features are in CVS HEAD for now, and they should appear in GTK+ 2.4.1 soon.
Today we had a lovely walk through the Parque Bicentenario. It had just rained and all the plants and trees looked fresh, the stone paths were shiny, and the air was cool.
Some people were surprised about the boob job, which is of course an April Fool's joke. It's no joke, however, that I would love to have one of those scarves.
Go backward in time to March 2004.
Federico Mena-Quintero <federico@gnome.org> Thu 2004/Apr/01 12:50:07 CST