Hi,
I've just uploaded PyTone 2.2.2 to the usual place:
http://www.luga.de/pytone/download/PyTone-2.2.2.tar.gz
This release adds the oft-requested support for seeking in the song (many thanks to Tomas Menzl for providing a patch). Some other new features are: The complete contents of the playlist are now being kept after a restart of PyTone. When for a given artist only songs of a single album are registered, PyTone can now optionally skip the album selection directory. Directly jumping to the album of the currently selected song in the playlist window has been implemented (the default keybinding for this is KEY_RIGHT). Changes to the database are now better reflected in the database view. Database checkpointing works again and a couple of other bugs have been fixed.
For more details, see the attached portion of the ChangeLog.
Enjoy,
Jörg
2005-03-12 Jörg Lehmann joerg@luga.de
* services/players/mpg123.py: Implement seeking.
2005-03-08 Jörg Lehmann joerg@luga.de
* events.py: Make checkpointdb a dbevent in order to let the songdbmanager pass it to the databases (many thanks to Tomas Menzl <xmenzl at aldebaran dot feld dot cvut dot cz> for pointing out this problem).
* services/songdbs/local.py: Send sendeventin event to global hub instead of to songdbhub to make it actually work. Use repeat interval instead of sending every time a new sendeventin event.
* item.py: Add new item method getid, which returns a unique id for the item in the current context (used in slist.set method)
* services/playlist.py: Add getid method to playlistitem (for use in slist.set method).
* slist.py: Use getid method to identify the previously selected item in set method.
* services/playlist.py: Cleanup variable names: song -> item.
2005-03-07 Jörg Lehmann joerg@luga.de
* services/player.py: Process incoming events twice to be able to rely on block argument of channel. Also block when waiting for a new song to appear in the playlist, since any arbitrary events unblocks the player.
* services/songdbs/local.py: Use active transaction as an indication for a busy db.
* filelist.py: Also react on new playlists.
2005-03-06 Jörg Lehmann joerg@luga.de
* services/songdbs/local.py: Delete log files when checkpointing dbenv preventing huge disk space usage during song registering (Ochsenschlegel bugfix).
2005-03-03 Jörg Lehmann joerg@luga.de
* services/players/internal.py. Also request new song when not crossfading to make autoplay == False work in this case (thanks to Tomas Menzl <xmenzl at aldebaran dot feld dot cvut dot cz> for providing a patch).
* events, services/playlist.py: New event playlistplaysong which allows one to tell the playlist to immediately play a specific song.
* playlist.py: Use playlistplaysong instead of playlistaddsongstop when the user requests the immediate playback of a song in the playlist (as suggested by Tomas Menzl <xmenzl at aldebaran dot feld dot cvut dot cz>), leading to a more mainstream behaviour of PyTone in that regard. ;-)
* playlist.py: playlistaddsongstop now correctly updates the information about the currently playing song.
* playlist.py: Keep information about played songs after restarting PyTone.
* helper.py: Write exception to stdout since we have closed stderr.
* services/timer.py: Do not daemonize and switch to new timeout option of channel.process.
* services/players/internal.py: Do not daemonize bufferedaudiodev buf shut it down properly.
2005-03-01 Jörg Lehmann joerg@luga.de
* hub.py: Add optional timeout to process method of channel.
* services/player.py: Make use of new timeout option.
* event.py: Renamed playerforward -> playernext
* decoder.py, services/player.py, services/players/internal.py: Enable seeking in songs (many thanks to Tomas Menzl <xmenzl at aldebaran dot feld dot cvut dot cz> for providing a patch).
* requests.py: Add sort member variable to getsongsinplaylists request, fixing a crash when rescanning, querying a random selection, etc. of all songs in playlists (thanks to Tomas Menzl <xmenzl at aldebaran dot feld dot cvut dot cz> for reporting this problem).
2005-02-27 Jörg Lehmann joerg@luga.de
* filelist.py: Some cleanups.
* playlist.py: Ditto.
* events.py: New event filelistjumptosong, which directs the filelist to jump to a given song in the directory hierarchy.
* config.py. New keybinding "filelistjumptoselectedsong" for playlistwindow (by default KEY_RIGHT is used).
* config.py: New option "skipsinglealbums" in filelistwindow section, which when turned on, tells PyTone to skip the album and go directly to the songs when there is only one album of a given artist.
2005-02-26 Jörg Lehmann joerg@luga.de
* dbitem.py: Remove __class__ comparison from __cmp__ method of dbitem class
* services/songdb.py: Avoid repeated songs when randomly selecting songs out of a short list.
2005-02-12 Jörg Lehmann joerg@luga.de
* services/playlist.py: Cleanup and fix some minor bugs.
2005-02-09 Jörg Lehmann joerg@luga.de
* setup.py: (Ab-)use scripts directive for installing pytone and pytonectl shell scripts.
* log.py: Make debugfile initialization manual to allow the use of the log module in the config module (thanks to Brian Lenihan <brian_l at mac dot com> for proposing this).
* config.py: Fix --rebuild command line switch.
* services/players/mpg123.py: Be more relaxed when initializing the player and when parsing the "@F" lines to make mpg123 work again (thanks to Brian Lenihan <brian_l at mac dot com> for providing a patch).
* conf/pytonerc: Add sample command line for mpg123 player.
* dbitem.py: Do not assume that all exceptions derive from the Exception base class (fixing the scanning problems reported by Alexander Wirt <formorer at formorer dot de> and Jack Bakeman <jbakeman at indra dot com>).
2005-02-08 Jörg Lehmann joerg@luga.de
* config.py: Use correct copyright date when printing usage summary.