Galago - desktop presence framework
This Week | Archives | RSS | < Galago Status Report #3 | Galago Status Report - 2004-06-12 - 2004-06-19 >
Galago Status Report - 2004-06-05 - 2004-06-11

Table of Contents

  1. Welcome
  2. Announcements
  3. New Module: GNOME Presence Applet
  4. New Widgets
  5. New Features
  6. Bug Fixes
  7. TODO / Help Wanted
  8. Contact Information

1. Welcome

Welcome to this week's Galago status report. The past week has introduced a lot of minor new features, as well as numerous bug fixes. It also introduces a preliminary version of the GNOME Presence Applet.

2. Announcements

Although it's not directly related to Galago, many people may be interested in a site I have set up called Planet IM. It's an RSS aggregator using Jeff Waugh's Planet software. Essentially, it's a way of easily keeping track of the weblogs of many people in the instant messaging field. Planet IM is not on it, but I discuss it in my blog entries quite often.

3. New Module: GNOME Presence Applet

The big highlight of the past week is the new GNOME Presence Applet. Although not complete or usable for most people yet (give me two or three more days!) it's proving to be a useful tool. The GNOME Presence Applet embeds into GNOME panels as an applet (hence the name) and provides a presence indicator for any contact you wish to keep track of. Additional contacts can be added to the list to monitor, and clicking on the applet will bring down a menu of these contacts. A status indicator is shown, as well as the idle time.

GNOME Presence Applet

GNOME Presence Applet is an excellent demonstration of what libgalago-gtk can provide. The drop-down menu and the panel display consist entirely of libgalago-gtk widgets. The treeviews in the preferences dialog will in time use new widgets and helper APIs from libgalago-gtk as well.

GNOME Presence Applet has some work to go, but is almost in a fully usable stage. A news post will be posted when this is ready to be used in SVN, and it will be part of the initial release of the Galago applications and libraries. If you want to take a look at it now, it's in the Galago SVN repository as the module gnome-presence-applet.

4. New Widgets

libgalago-gtk got several new widgets this week. Most were developed for the new GNOME Presence Applet, although they will no doubt be useful in many future projects. The new widgets consist of a presence label, account menu item, service menu item, and presence menu item.

The presence label (GalagoGtkPresenceLabel) takes a GalagoAccount and will display the account username. When the account is idle, the label will dim and display the idle time in parenthesis. If no information on the account is available, or if no presence is set, the text "No presence" is displayed in italics.

The menu widgets all display information on a service or account in the form of a menu item. These can be created and then easily added to any menu.

The service menu item widget (GalagoGtkServiceMenuItem) displays the service icon and name of the specified service.

The account menu item widget (GalagoGtkAccountMenuItem) displays the account's service's icon and the username of the account.

The presence menu item widget (GalagoGtkPresenceMenuItem) displays the account's presence icon and the username of the account.

5. New Features

libgalago

  • Added support for determining if the galago daemon is active or inactive.

libgalago-gtk

  • Added the GalagoGtkPresenceLabel widget.
  • Added the GalagoGtkAccountMenuItem widget.
  • Added the GalagoGtkServiceMenuItem widget.
  • Added the GalagoGtkPresenceMenuItem widget.

gaim-galago

  • Added gettext support for translatable strings.

6. Bug Fixes

libgalago

  • Don't try re-sending information when the galago-daemon reactivates, unless we're a feed. If we're a daemon, ignore both the ServiceCreated and ServiceDeleted signals. This allows non-feed Galago applications to re-register without pushing all of its data.
  • Don't attempt to set watches on objects through D-BUS if we're galago-daemon. Prevents all kinds of D-BUS run-time errors and excess memory usage.
  • Always re-query lists of objects when the query parameter of the appropriate function is set to TRUE. Until now, it would only query if the query parameter was TRUE and the list of objects was NULL, which would cause many objects to remain undiscovered.
  • Move to using a global D-BUS match for all objects, rather than a per-object match. This prevents numerous problems with reaching a maximum number of D-BUS matches allowed per process.
  • When a program set an account's connection state to FALSE, and the connection state wasn't previously set to TRUE, galago_account_set_connected() simply returned. This prevented the account from receiving any new presence information, when it should have had a presence state of "offline." This is now fixed by performing an additional check to make sure we have a presence before bailing.
  • When clearing all objects from a context (such as when being informed that galago-daemon has been shut down), make sure to reset the service and person lists to NULL, preventing a crash.
  • Don't check if we're connected in galago_init_with_mainloop() when deciding what the result of the function is. We shouldn't assume the calling program requires being connected, and it just prevented problems.

galago-daemon

  • Only emit the Account.Connected/Disconnected signals if the connection state has indeed changed.

libgalago-gtk

  • Added missing G_END_DECLS lines to the header files, which were needed for this to be used in C++ applications.
  • Re-queue an icon update in the GalagoGtkPresenceIcon widget when we change the icon size.

gaim-galago

  • Fixed a painfully obvious crash, where we were inserting strings into the service_names hashtable without duplicating them, and then trying to free them upon unloading of the plugin.
  • Don't create a person for a buddy if a local account for that buddy isn't even being created.
  • Only create accounts and presences for buddies whose parent gaim account is online.
  • Unset presences when that gaim account goes offline, as we no longer know the state of the buddy.
  • Don't try to do status stuff in the idle update callback, and just bail out if the account for the buddy doesn't exist.
  • Don't try setting a status for an account when we call gaim_account_set_connected().
  • Mark an account as offline if its buddy is offline, not online.

7. TODO / Help Wanted

There are many tasks in Galago that would speed up the initial release and provide desktop integration. If you would like to take on any of these tasks, contact us.

  1. Beta-test Galago and submit bug reports and/or patches.
  2. Integrate Galago into other programs (instant messengers, video conferencing software, e-mail clients, etc.). Good starts would be Kopete, CenterICQ, Mutt, and GnomeMeeting.
  3. Create Python, Ruby, C++, Obj-C, etc. wrappers for libgalago and libgalago-gtk.
  4. Create Qt widgets for use with Galago.
  5. Documentation and language translation.

8. Contact Information

People interested in helping out with Galago in some form, or those who are just curious about it may join #Galago on irc.freenode.net. We also have listservs set up for development discussion and SVN commits. See our Mailing Lists page for subscription information.

If you wish to contact me (Christian Hammond) directly, please see the Contact Information page.

Posted by chipx86