After reading Ian Geiser’s recent post admiring the DCOP functionality in JuK, I thought it would cool if I elaborated a bit about what would be nice about it.
First of all, some of the things that you can do with JuK through DCOP include:
- Add files to a given playlist.
- List the tracks in a playlist.
- List all the playlists.
- Create a new playlist.
- Remove a track from the playlist.
- Remove a playlist.
- Set the current playlist.
- You CAN’T remove a track from disk through DCOP. Scott and I judged that this is too risky for potential abuse or mistakes.
- Find out the track that’s playing.
- Get/set the volume.
- Get/set the player status.
- The basics (stop, play, pause, next, forward, seeking).
However, what’s REALLY cool is that you can query information about a given track. And the interface is mostly future-proof. You can make a DCOP call to see what properties JuK can query. And Ian Geiser just added two more properties the other day, using 2 lines of code. Which is what I think he was happy about.
During the development process for KDE 3.3, Scott and I came up with a way to easily add properties in the JuK code, using *GASP* macros. Since so much of the property code was the same ol’ boilerplate, we setup a system of macros and a map of property names to auto-generated classes to return the property value. This means that with ONE line of code, we can add a property to the DCOP property map. Pretty neat, huh?
Just for completeness, as of now in CVS HEAD, the currently defined properties for a track are as follows:
- Album
- Artist
- Bitrate
- Comment
- Extension — This is the extension of the track’s file name, added by Ian.
- Genre
- Path — This is the absolute file path of the track.
- Seconds
- Size — Added by Ian
- Title
- Track
- Year