Photodote is a client to Danga Interactive's Fotobilder photo hosting software, and therefore any service that uses the software.

Development

Photodote is written in Python, using the pyGTK bindings to provide a GUI. It is intended for the GNOME Desktop Environment, although a Windows port will be made if the project proves successful under Linux.

To simplify designing the interface, Glade was used. Glade creates XML describing the widgets in the interface, and this XML is then parsed at runtime to display the interface. This also allows the end-user to edit the interface, although this certainly should not be neccesary if the interface is well-designed.

To store settings, Photodote uses the Python GConf bindings. This means that Photodote requires the GNOME-Python bindings as well. However, it means that settings can be more easily modified and relocated. Because there is no documentation for GConf, I am currently working on this, and therefore development on Photodote is going somewhat slowly.

Recent News

Formal news is available on the SourceForge page, but I prefer to make frequent updates on the day's successes and failures.

September 8th, 2005 - Protocol

Apparently a lot of the features (edit metadata, reorder images, change gallery, etc.) I was going to add are not currently supported by the protocol. I'll make a release (basically featuring everything I can in this version of the Fotobilder protocol) soon and then start helping Brad Whitaker implement those other parts of the protocol. Work is slow because of school. I'm trying to decide how to rearrange the milestones for the new protocol features as they're implemented.

August 14th, 2005 - Milestones

The bugs noted below have all been fixed, with the exception of stale thumbnails -- in addition to being very small, deciding which ones were no longer needed would involve keeping track of them in a text file or something similar, which I'd really like to avoid. I tweaked the main interface a bit, as my plan for 300px-ish previews was squashed by Brad Whitaker -- it's really not a good idea in terms of bandwidth. Thus, you can double-click on an image to view it full-size in a nice viewer window.

I've added a Milestones page so I can have a more defined idea of what makes up each release. 0.1 is definitely coming soon.

August 5th, 2005 - Thumbnails

List thumbnails

Finished the code to download, cache, and display thumbnails in the list. It's threaded, so it runs after login (if it needs to) and shows progress in the status bar. You can browse the list while this is happening and actually watch the thumbnails load.

Before I add any new features, there are a number of bugs I need to fix:

July 16th, 2005 - Preferences

Preferences

Realized I was writing a lot of duplicate code, so I wrote generic functions for setting up the notification for widgets and loading their initial state. At some point in the future I should refine this into a module designed to snap in to any program.

Started making preferences functional, as seen above. Everything up until after login is falling into place.

I'm wondering about localization support. I doubt I'll be able to get into GNOME without it, and I'd love to get into GNOME. It would probably make more sense to add it now, but I'm already feeling a little bloat. Code review is in the future.

As soon as preferences is finished, I'll start on the actual gallery manager. Once I start work on that, alpha testers for CVS head would be nifty.

July 13th, 2005 - Threads

Finally made the Cancel button work during login and gallery-prefetch. Threads seem to be working okay with no deadlocking.

All of the code to get and parse server XML is complete, now it's simply a matter of writing code for all the functions. I need to do the preferences window at some point, too.

July 5th, 2005 - Login

Implemented the Login method and added a lot of code for talking to the server, parsing responses, etc.

However, it seems the "Logging in..." window does not refresh as needed, even if gtk.main_iteration() is called as neccesary. I may be forced to implement threads when talking to the server.

I'm pretty much happy with the design right now. I did have to write a function to make a sense out of what xml.dom.minidom returns, as it treats nodes a little differently than I would prefer.

Overall I am very pleased with the implementation in the fotobilder module so far, I was afraid it would act too much like David's code, but I implemented a few things differently:

July 4th, 2005 - Login Preferences

Completed the GConf code to store and load preferences from the GNOME configuration database. In doing this, however, I realzied that I could trade Windows portability for GNOME integration, and opted to fully integrate with GNOME rather than have a half-baked implementation in both environments.

Here's a teaser of the login window:

Login

Adding other providers is supported in the preferences dialog, as well as multiple users.

June 15th, 2005 - Website

Got this website up, finally. It's very basic, but it doesn't really need to be much.

I currently have the interface designed, and enough Python code to load that. I wrote a series of simple Python apps that confirmed the performance of PixBufs inside TreeViews. This means you can have anywhere from tiny (48x48) to very large (128x128 and higher) previews inside the table of photos, which looks very promising. Rescaling is done using the PixBuf functions, and the size is already a configurable preference.

Resources

I am using the following resources while developing Photodote:

Graciously hosted by SourceForge.net