Showing posts with label PyQt4. Show all posts
Showing posts with label PyQt4. Show all posts

Sunday, November 16, 2008

UPCScan 0.7: Where is my stuff?

UPCScan 0.7 is released. New features:

  • UPCScan can now find music CDs
  • If UPCScan can't find something on Amazon, it will still create an entry which you can then edit to fill in the details.
  • Entries can be deleted.
  • I've added lending information so you can quickly figure out who your new "ex-friends" should be.
  • I'm working on a series/issue information system to make it more simple to complete your collection. With this version, you'll need to edit the database directly to add series/issue information but the user interface can already display this data.
  • I'm working on a feature to create an OpenOffice document with the locations. This would allow you to print this out and then scan the locations in as you scan your collection to tell UPCScan under which location to file the items. If you can't wait, then you can use the barcode.py script to generate PNG images with barcodes which you can import in OpenOffice to achieve the same effect.

Download: upcscan-0.7.tar.gz (26,921 Bytes, MD5)

Wednesday, October 08, 2008

UPCScan 0.6: It's Qt, Man!

Update: Version 0.7 released.

Getting drowned in your ever growing CD, DVD, book or comic collection? Then UPCScan might be for you.

UPCScan 0.6 is ready for download. There are many fixed and improvements. The biggest one is probably the live PyQt4 user interface (live means that the UI saves all your changes instantly, so no data loss if your computer crashes because of some other program ;-)).

The search field accepts barcodes (from a barcode laser scanner) and ISBN numbers. There is a nice cover image dialog where you can download and assign images if Amazon doesn't have one. Note: Amazon sometimes has an image but it's marked as "customer image". Use the "Visit" button on the UI to check if an image is missing and click on the "No Cover" button to open the "Cover Image" dialog where you can download and assign images. I haven't checked if the result of the search query contains anything useful in this case.

UPCScan 0.6 - 24,055 bytes, MD5 Checksum. Needs Python 2.5. PyQt4 4.4.3 is optional.

Security notice: You need an Amazon Web Service Account (get one here). When you run the program for the first time, it will tell you what to do. This means two things:

  1. Your queries will be logged. So if you don't want Amazon to know what you own, this program is not very useful for you.
  2. Your account ID will be stored in the article database at various places. I'm working on an export function which filters all private data out. Until then, don't give this file to your friends unless you know what that means (and frankly, I don't). You have been warned.

Friday, January 18, 2008

Portable UI

For many years, I've been looking for a way to write portable applications with a nice, responsive user interface. Many have tried and many have failed:

  • Python with tcl/tk - A nice experience from the developer side. The Python wrapper around the tk widget set shows how you can get compact, yet easy understandable code and write UI's in short time. If it just weren't that ugly ...
  • Java with Swing - Swing borrows a lot from X11, the grandfather of all graphical desktops. I have yet to see anyone managing to impress the world with their grandfather ...
  • Java with SWT - Now, here comes a contender. Java is pretty widely available (not quite as many platforms as Python, but still), it is pretty fast, okay, the download is a bit on the big side ... but no DLL hell, easy to setup (especially if you don't provide an installer and just push a ZIP out). SWT is nice, fast ... and bare bones. MFC? Well, they have JFace and in a few years, there might even be a text editing component that can do word wrap and still show line numbers. Oh, and SWT is available on even fewer platforms than Java. Palm, anyone?
  • HTML - Web based apps are all the hype. If you want to use your app on the run, it gets tricky. I don't know about the US, but here in Europe, going online with you mobile will ruin you. Literally. Also, I've had my struggles with HTML and CSS and I can do without. Either and both.

I've tried a few more but in the end, things never felt right. Until recently. I'm a big fan of treeline. Treeline uses Python and PyQt which wraps Qt (say: "cute"). Qt is a mature framework, currently at version 4.3.3, with 4.4 is around the corner. It doesn't have all the nifty stuff I can imagine (like an RTF editor; QTextEdit can only do a (big) fraction of that) but it gets closer to what I want than anything else.

In the past two weeks, I wrote a little clone of yWriter4. The little baby has currently about 8000 loc and about half of the functionality I want to give it (especially the text editing is still leaving a lot to be desired). Except for two bugs (signal names and GC issues), it's been a real pleasure to use. I managed to implement almost every feature within a few minutes or few hours (the storyboard took 6 hours, the scene chart view took two), also thanks to the good defaults of the framework. Here is an impression of v0.2:

So when you're considering to write a small to medium sized application which needs to run on Windows, Linux and MacOS, give PyQt a try.

Monday, January 14, 2008

Sorting Number Table Columns in PyQt4

Here is a simple trick to sort number columns in the QTableWidget of Qt4 and PyQt4: Format the number as a right aligned string:

for i range(12):
    item = QTableWidgetItem(u'%7d' random.randint(1, 10000))
    item.setTextAlignment(Qt.AlignRight)
    table.setItem (i, 1, item)