Sunday, October 29, 2006

Notecase news

My personal pet-project named Notecase (http://notecase.sf.net) is an hierarchical notes manager, written using GTK+ and C++.

Lately, I've started to receive much more user feedback on it than before, mostly due to the fact that it started being used on Sharp Zaurus platform. Thanks to the feedback I got some quality ideas and bug reports to fix for the new release.

Saturday, October 14, 2006

Last few years I've been programming with GTK+ toolkit (coming from Win32/MFC world) and I think some remarks gathered over time could help the community to make this toolkit better.

Why not use bugzilla and report the bugs directly, you might say? It's not that I haven't tried, but I have a bad experience with it. Most of my reports for Gnome/GTK still rott there waiting for someone to do something with them :(

One of the things that always bothered me with GTK+ is file open/save dialog.Starting with GTK 2.6 developers decided to improve on the old dialogs, and created a new GtkFileChooserDialog class, that IMO still needs a lot of work to become usable.

Let's try to see why:

1. In the Save mode, dialog starts in the collapsed state (see "Browse for other folders" in the image below), hiding the file list and optional filter drop down list.

And guess what, you can not controll this behaviour! There is no API to display the dialog expanded from the start!!!I've managed to make it expanded myself, by writing really really ugly code that can easily become invalid with the next GTK release(find child #x in the dialog, find child #y within children of #x, ... you got the picture :)

2. Using the dialog in a mode to select only folders, there is no way to use a mouse to select a root directory (or root of a disk drive on Windows) as a destination target!!!

The dialog in this mode of work, allows you to select any other non-root directory, but to select root path, the only workaround I found so far is to use keyboard to type "/" into the folder name. Windows solves this in a much more elegant way, having a special dialog for directory selection.

3. The default version of the dialog is not very usable for real-life programs

The best proof of this is that most major programs implement their custom open/save dialogs (packing additional controls below GtkFileChooserWidget). For example see screenshots below for custom implementations in AbiWord and OpenOfice.org packages (I'm sure I could find many more).

I do not claim, that default version must guess all the extra widgets needed, but the basic ones should be covered. The biggest problem is following:

in Windows API, file open dialog uses filter combo box in two ways - to filter the file list and to pick file format for the document to be saved;

GTK dialogs, on the other hand, hides this filter combo by default in the save mode (see problem #1). The result is that the programmer needs to add additional combo (with almost the same content as in filter combo) for user to pick target file format in Save dialog.

So, any programmer whose software uses more than one file format, must use its own custom Save dialog in order to save its users for confusion.

4. IMO, the dialog layouts are somewhat ugly

most of the screen area is wasted with huge "Add"/"Remove" buttons (making the bookmarks list above them too wide). It would be good to lose those buttons completely and to tranfer those rarely used options in a context menu (currently there exists "Remove", but not "Add" option in a context menu - GTK+ v2.8.20)

by default, the dialog could be less wide

the "bookmark" list should have a different background color than main file list,so that user can intuitively percieve the file list as the main widget

the "bookmark" list is too wide compared to file list, file list should be by far the most dominant widget on a dialog

I would recommend removing this "expand" widget/state in file save mode (dialog should be always expanded). This is important because it makes the dialog more simple/less complicated to use

filter combo box should have bigger width and some label left to it (having no descriptive label makes it look strange)

it would be nice to have few colored icons somewhere, to make this dialog less grey

Conclusion:

GTK+ file open/save dialogs (GtkFileChooserDialog class) could use some polishing in layout to make them more usable and more pretty. The layout shoud be simplified and more intuitive to use.