Today it’s a great day for Igalia, for tinymail and for the free software in the whole. Today an Igalian made a commit to the tinymail repository, this commit wouldn’t be so important if it weren’t done by a girl.
Her name is Antia Puentes and after drawing several awesome class diagrams (see here and here) with all the main interfaces of tinymail, she sent today her first patch to the source code. In particular she developed a functional test that allows you to delete folders of a mail account. If you want to test if (it’s not currently upstream, but I think tomorrow it will be) it’s better to modify first the mail account used by the test, otherwise Philip will go after you until death
. It’s as easy as modify some lines of the test/shared/account-store.c file that configures the mail account:
tny_account_set_proto (account, “imap”);
tny_account_set_name (account, “imap2.tinymail.org”);
tny_account_set_user (account, “tnytest”);
tny_account_set_hostname (account, “imap2.tinymail.org”);
tny_account_set_id (account, “tnytest@imap1.tinymail.org”);
The important lines are the ones that set the hostname, the user, and the proto. Furthermore, you have to modify the function that gets the password at the beginning of the same file, per_account_get_pass_func. You only have to change the string returned by the else.
So Antia, welcome to the community, I hope that you will feel comfortable despite entering a men’s world, and I also help that you’ll contribute to the GNOME’s women invasion
.
These last two days I have been playing a lot with mailbox moving/copying. There were some unimplemented features in tinymail that I needed so I had to do them. Basically the list of changes I made are
- Improved the folder changes notification when the mailboxes are transferred
- Fixed a bug in the tree model that stores mailboxes when deleting a mailbox
- Fixed an issue in the connection process
- Added some error handling to the folder loading process
- And the one that Phillip likes more
, added a functional test to check mail folder transfers
A lot of work, I sweat, but very useful I believe. There is still one issue that I found remaining, this one, but I think Phillip will fix it very soon.
After the previous post, I improved a little bit the drag and drop example. This time, I added another three view at the right. Now you can drag a row in the right tree view to a node of the left tree view.

Another improvements is the support of multiple actions, I mean, the drag & drop can now move a row (as in the first version) or copy it (just press the Control key before dropping a row). It’s easy to see the different behaviours if you drag and drop nodes of the left tree view. On the other hand if you drag a row of the right tree view to a node of the left one, the row of the left will be removed except if you perform a copy (pressing Control button).
You can download it here.
Enjoy.
I’ve recently been adding drag and drop support to a widget that is basically a GtkTreeView with an associated GtkTreeModelSort. The gtk+ drag and drop API is weird, there are just few samples and is not very well documented.
Furthermore, the GtkTreeView has its own drag and drop functions so my mind was a mess.Then after some study I finally got an idea about all this stuff and decided to code a sample where to test the things I learned. This example is available here for you.
Hope this could help somebody.
BTW, I changed the look of my blog, I like this kind of changes so don’t expect this to be the last one
A few days ago Philip wrote the following in the tinymail mailing list in response to a patch that I sent to the list:
Yep, let's go for this. Commit please
Don’t forget our poor little ChangeLog file
I thought, OK Philip it could be poor, but little? Then I decided to take a deeper look to our lovely ChangeLog file and I extracted some figures. First of all the number of entries is 153, really impressive if you realize that the first commit was made on 2006-01-17, just one year ago. The list of contributors ordered by number of entries is shown next
| Philip Van Hoof |
101 |
| Sergio Villar Senin |
20 |
| Dirk-Jan C. Binnema |
10 |
| Øystein Gisnås |
7 |
| Florian Boor |
3 |
| Thomas Hisch |
3 |
| James Doc Livingston |
2 |
| Raphaël Slinckx |
1 |
| Chris Lord |
1 |
| Thomas Viehmann |
1 |
| Gustavo J. A. M. Carneiro |
1 |
| Sankarshan Mukhopadhyay |
1 |
| Scott Arrington (muppet) |
1 |
| Don Scorgie |
1 |
As you could see, there are great names there, and I’m currently in the second place, Philip don’t look behind because I’m getting closer
.
Again, a lot of time since my last post. If you’re interested, yes I’m still happy and I’m still contributing to tinymail. My contributions decreased a little bit these last weeks because I had other priorities but I’ll try to keep them going.
This afternoon I was trying to use the nice GtkUIManager stuff inside a Hildon application but when trying to add a new menu described in the UI XML definition file to the HildonWindow I realized that I had a problem. The reason is that hildon_window_set_menu expects a GtkMenu as second argument, but the GtkUIManager gives me a GtkMenuBar.
So I had to add an utility function to the code that converts from a GtkMenuBar to a GtkMenu. As you could see it’s really simple, but the very nice thing is that it still uses the definitions of the UI XML file.
GtkWidget *
menubar_to_menu (GtkUIManager *ui_manager) {
GtkWidget *main_menu;
GtkWidget *menubar;
GList *iter;
/* Create new main menu */
main_menu = gtk_menu_new();
/* Get the menubar from the UI manager */
menubar = gtk_ui_manager_get_widget (ui_manager, "/MenuBar");
iter = gtk_container_get_children (GTK_CONTAINER (menubar));
while (iter) {
GtkWidget *menu;
menu = GTK_WIDGET (iter->data);
gtk_widget_reparent(menu, main_menu);
iter = g_list_next (iter);
}
return main_menu;
}
Hi,
it’s a long time since my last post and the most important thing I want to say is that I’m happy
. Yes it’s a very strong word but I’m currently carrying on a project that makes me really happy. This project, you’ll hear about this in the near future, uses the tinymail development framework maintained by a really kind and enthusiastic guy, Philip Van Hoof.
The title says not so tiny because the framework is getting bigger and better. New capabilities are added every day, just take a look at the Changelog. Now we’re working on things like folder subscriptions, message transfers or error handling. Release 1.0 is getting closer, but this does not mean that the work is nearly finished, there is still a long TODO, and that’s really nice (a lot of things to design and implement).
I specially like the high effort that Philip is putting in the design, using a lot of well-known design patterns that allows the framework to be very extensible. I’m very proud to be part of this project, because I think tinymail is a high quality project. I’m contributing to the project for just two weeks but I really feel part of it, and this is mainly due to how things are done by Philip. I think that a lot of project maintainers should learn from him, he really likes seeing people contributing and he really encourages you to go on.
Long live tinymail
.
Yes, it’s true. First time in my life. Look at this output:
test -z "/var/opt/gnome/share/pixmaps" || mkdir -p -- "/var/opt/gnome/share/pixmaps"
/home/local/bin/install-check -m 644 'pixmaps/ekiga.png' '/var/opt/gnome/share/pixmaps/ekiga.png'
test -z "/var/opt/gnome/etc/gconf/schemas" || mkdir -p -- "/var/opt/gnome/etc/gconf/schemas"
/home/local/bin/install-check -m 644 'ekiga.schemas' '/var/opt/gnome/etc/gconf/schemas/ekiga.schemas'
test -z "" || mkdir -p -- ""
make[2]: Leaving directory `/usr/local/devel/local/gnome/src/ekiga'
make[1]: Leaving directory `/usr/local/devel/local/gnome/src/ekiga'
*** Unpacking poppler *** [43/57]
I think I’d be something like a hero inside Igalia
.
I sent today an internal email to the Igalia staff about happiness at work. You know that our main goal, as company, is to achieve our happiness. Regarding to that, I wrote a not so long essay about my experience with an useful option that comes with GNOME since a few releases ago.
I’m talking about the Typing Break option located at the last tab of Keyboard preferences dialog. If enabled, it basically locks your screen during a specified amount of time every X minutes. For example, I usually break for 3 minutes each hour. (that is the origin of the 3.60 -read it as three sixty- happiness movement, thanks to Juanjo for the original name, I modified it lightly in order to give it a more “commercial”
name).
If we use these three minutes (just three) to stand up, stretch our legs, relax your eyes and your back, we won’t lose three minutes of work, we’ll be earning three minutes of health. Our mind and our body will feel better, and we will probably be happier.

It’s very important not to check the option that allows you to cancel the break because you will do it for sure (I did it), and you’ll get more stressed. You will probably feel interrupted in the best moment, just when you’re going to finish something, but think it twice, it’s not true, you were not going to finish it just during these three little minutes.
If you think that all these things are a “duh” take a look at this Kathy Sierra’s post, and then you’ll realize that all these “duh” things only would be obvious if we were doing them.
GNOME 2.16 is out, so we must begin thinking about the new release. I’ve just generated the graph of dependencies of the 2.18 modules using jhbuild
svillar@wopr:~$ jhbuild dot | dot -Tps > dependencies.ps
See the result here in ps.bz2 format. Can you find your favorite module? As you can see in the zoom bellow it’s an easy task to follow the track

Update: I’ve just built the whole 2.18 moduleset except mozilla and ekiga