Sometimes answering apparently harmless questions on instant messaging can have unexpected results. In particular, I was telling about Danbooru Client to someone and a question popped up "Why don’t you support pages?". It seemed a nice idea, so I branched off the code (yay for git!) and started working on it.
Well, it took me more than a month to get this thing done… I didn’t spend every day coding, but it was a challenge. Glad it’s over now, which means that Danbooru Client 0.5 is finally available. Grab it at the usual place on kde-apps.org.
Changes in this version:
- Massive code refactoring and documentation
- Support for multiple pages: the same query can be repeated multiple pages (shown in a tabbed interface), kind of like browsing the actual Danbooru board;
- Rating information added to the API;
- Support for translations (thanks to Pino "pinotree" Toscano for the help): the tarball now contains a .pot file which can be used for translating Danbooru Client. If you make a translation, send the .po file my way and I’ll include it in the next version.
Improvements that I have in the queue:
- Suppport for pools (every board out there changes the API, so it will require some work);
- Support for storing password/username using KWallet (through python-keyring, so it works even without KWallet installed);
- Review usability of the dialogs (I have a separate branch for that);
- Improve the image download dialog.
On recent KDE SC versions (4.4 beta 2 and onwards) there are some painting issues with regards to the thumbnails, but I’m not sure if the fault is in PyKDE4 or in the underlying libraries. Nothing too bad, luckily: hovering the thumbnails or giving focus to the thumbnail view should be what’s needed.
Here’s a screenshot of the new interface (click to enlarge):
Comments and suggestions are always welcome, so don’t hesitate to drop me a line.
As a final word, some thoughts on the work required to get this out of the door. My largest issues are related to garbage collection: Python’s reference counting based GC got a lot in the way, at least because of how the underlying C++ structures work. I had to work a bit to keep references to objects around so I wouldn’t get crashes (accessing an already deleted object). All is well now, and I think my Python/PyQt/PyKDE4 knowledge gained from it. I keep telling myself that I should be writing some tutorials one day…