Commit Graph

26 Commits

Author SHA1 Message Date
Bryan Schumaker
3cece3826f Library play_id()
I have moved over the play_id function to the library module.
2010-11-06 00:52:33 -04:00
Bryan Schumaker
58ad3c7a9d Library class -> library module
I think that the library will be cleaner if I turn it into a module
instead of keeping it a class.
2010-11-05 21:52:10 -04:00
Bryan Schumaker
4c916f2fd3 Reset playlist and library functions
These functions should be called to reset the library and playlist,
which is better than deleting the old files and making a new one.
2010-11-03 08:11:15 -04:00
Bryan Schumaker
49328c5200 choose_next() already starts the NEXT event... 2010-10-31 17:19:46 -04:00
Bryan Schumaker
76eaa3eb16 NEXT event
Rather than call choose_next() directly, we should wrap this in a NEXT
event so that things can respond to it.
2010-10-30 13:52:38 -04:00
Bryan Schumaker
5cf837aee2 Library update
I no longer reset the library before scanning.  This allows me to do a
basic form of updating.  Unfortunately, I have to manually select the
same directory to update it.  Eventually I should find a way of
automating library updates.
2010-10-25 21:58:18 -04:00
Bryan Schumaker
50f7e1203d Score system
The score system will help determine what users do and don't like.  When
the user chooses a song or listens to > 75% of a song, we increment the
score.  If the user selects a different song in the first 1/3 of
playback then we decrement the score.

Songs with a score >= 0 will always be played.  Songs with a score < 0
have a 50% chance of playing.
2010-10-21 17:11:33 -04:00
Bryan Schumaker
5835f55eb2 Track play count
The play count is incremented under two conditions.  1) The track
finishes playing. 2) The user skips to the next track, but the current
track has played more than 75%
2010-10-21 12:43:59 -04:00
Bryan Schumaker
6d7b08f921 Random
- Made a random check button to toggle the random preference
- Playlists pick a random song from what is visible
2010-10-21 08:47:10 -04:00
Bryan Schumaker
bb86a70ae4 Playlist next
The playlist will play the next visible song when the current song ends.
If we have reached the end of the list, we loop back around to the
beginning.
2010-10-20 22:18:41 -04:00
Bryan Schumaker
dc1b6dd4a6 Playlists
I can add songs to a playlist and populate the playlist afterwards (and
on startup).
2010-10-20 21:53:47 -04:00
Bryan Schumaker
02fe6dc8ba Right click menus
I have started a system to create a right click menu on the fly and show
it.  Currently, it only works for the library.  This will be used to
populate the playlist and probably many other things (like plugins!)
2010-10-20 21:11:12 -04:00
Bryan Schumaker
1da55341d4 Fixed loading of random songs
I fixed loading of songs not in the library by correctly implementing
the path walk function in the DLTree class
2010-10-15 23:12:33 -04:00
Bryan Schumaker
6c6477b677 Index filtering
I have implemented simple filtering over the library.  This will return
a set of visible songs based on the search pattern.
2010-10-10 23:06:54 -04:00
Bryan Schumaker
168025fb60 Collection Indexing
I can now add songs to a collection's index.  The index only works for
unicode string right now (all others must be converted)
2010-10-10 13:45:52 -04:00
Bryan Schumaker
2c27185679 Use new collection structure to populate the library list. 2010-10-08 13:09:42 -04:00
Bryan Schumaker
adcb73dac9 Have a working doubly-linked tree based library.
I have a bit more to do before I support everything the old library did.
Mostly getattr work.
2010-10-06 23:31:36 -04:00
Bryan Schumaker
31b470e597 Track tags in another double linked tree. Create a record for each
track linking to each tree.  Create a library filter for creating a
library.
2010-10-01 21:33:19 -04:00
Bryan Schumaker
8221411ca2 Double linked trees
I have begun working on doubly-linked trees for use in collections.
2010-10-01 12:32:24 -04:00
Bryan Schumaker
6609e48d5c Play / Pause / Close tabs
I am using tabs in the info pane to act as buttons when the pane is
expanded.  Eventually I want to move this over to an action widget, but
pygtk doesn't support action widgets for notebooks yet.  Hopefully this
will be fixed by the next release.
2010-09-13 19:32:13 -04:00
Bryan Schumaker
4a5085d973 File chooser window
I have created my own file chooser window that can select both files and
directories.  Currently, the "OK" button must be clicked to select
anything.
2010-09-12 19:11:37 -04:00
Bryan Schumaker
2f562bcc81 Buttons
Added a button class, and attached play/pause buttons to the bottom of
the window.
2010-08-30 17:57:08 -04:00
Bryan Schumaker
4d41cbfc30 Playlist borders
Both top and bottom playlist borders are present, but both only have a
placeholder label for now.  Double clicking on a row in the list will
play a song now.
2010-08-25 08:18:57 -04:00
Bryan Schumaker
8594c3b330 Collection get_attr() and list hover popup
Collections now have a get_attr function.  This function takes a song id
and a string with the requested attribute.  The value of the attribute
is returned.  This is used for generating a hover popup with the
playcount.
2010-08-20 19:37:55 -04:00
Bryan Schumaker
15cc5d22f0 Backend and frontend changes
Libsaria events now support starting specific callback functions in a
background thread.  This replaces starting a specific event in the
background.

I have a library tab that is added to the main window through use of the
ocarina.add_tab function.

I have new tests for walking the tree and running multiple threads with
locks.
2010-08-19 23:02:30 -04:00
Bryan Schumaker
52b1236b29 Collection work
I've begun work on a generic collection class for the library, playlist,
and queue.  Tagpy functions have been merged into the
libsaria.collections.__init__.py file to make things easier.
2010-08-08 14:30:15 -04:00