Commit Graph

388 Commits

Author SHA1 Message Date
Bryan Schumaker a84bd85a04 Make 4.10 less likely to crash
I used it over christmas, but I didn't want it to blow up when setting
album art.
2012-03-03 11:19:51 -05:00
Bryan Schumaker f8ed8c4483 Don't set artwork
Either setting artwork or resizing artwork was causing an annoying
crash.  I disable setting artwork for now so the crashes will stop.
2011-08-14 10:07:53 -04:00
Bryan Schumaker 128415f009 ocarina: Use album art as window icon
This is an experimental feature for now, since I don't know how well
it'll work yet.  The user should always have the option to disable this
feature, even when it works its way out of experimental.
2011-06-27 23:18:39 -04:00
Bryan Schumaker d9f89e0ecd ocarina: Add experimental settings page
Right now it just contains a checkbox for running the server.  It should
probably contain some kind of warning text, and eventually other
settings.
2011-06-18 14:10:05 -04:00
Bryan Schumaker 34c7bc374e ocarina: Refresh library settings list
I call the refresh function whenever the library has been updated.
2011-06-18 11:38:39 -04:00
Bryan Schumaker c31ec80016 ocarina: Function for refreshing library source list
The settings page may need to be updated once it has been created.  This
patch adds a function for recreating the list of sources.
2011-06-18 11:37:48 -04:00
Bryan Schumaker 989de579e4 ocarina: Hide settings by default
They don't need to be seen all the time.  Hide them until the user asks
to see the page.
2011-06-18 11:37:05 -04:00
Bryan Schumaker f2c3e2d901 ocarina: Import settings during startup
This gives me a chance to initialize the page and make it available for
callbacks.
2011-06-18 11:36:28 -04:00
Bryan Schumaker eb7a8e03a4 ocarina: Remove path from the library through settings
Click the button and it's gone!
2011-06-18 11:22:57 -04:00
Bryan Schumaker bf9ef7666c ocarina: Settings close button has no relief
I like the look of gtk.RELIEF_NONE
2011-06-18 11:12:07 -04:00
Bryan Schumaker 92fd8e508d ocarina: Show library information
I create a panel for each library path showing the full path and the
number of songs.  I also have a dummy button for removing the path from
the library.
2011-06-18 11:10:18 -04:00
Bryan Schumaker f09f80cd65 ocarina: Added library category to settings
I'll eventually use this for controlling the library.  Right now it's
just an empty page.
2011-06-18 10:47:00 -04:00
Bryan Schumaker 381b72aea4 ocarina: Show and hide settings page
I don't have any settings here yet, but it's coming.  For now, it's
good enough to be able to open and close a tab.
2011-06-18 10:36:19 -04:00
Bryan Schumaker a8aef66696 ocarina: Add settings button
Right now, clicking the button will print out some text.  I'll
eventually have it open a new tab for configuring Ocarina.
2011-06-18 10:25:15 -04:00
Bryan Schumaker 445b3a79bc ocarina: Don't do gtk locking anymore
I added this to help with setting album art in other threads.  Now that
I'm forcing this to the main thread, I don't think I need it anymore.
2011-06-18 10:11:02 -04:00
Bryan Schumaker 38f1d6ec8c ocarina: Only set album art once
When we receive a new image, we should check if it is the same as the
current image.  If it is, we don't need to change anything!
2011-06-18 10:01:10 -04:00
Bryan Schumaker 6773d9837e ocarina: Set album art in the main thread
I use a gobject signal to force setting album art in the main loop.
In theory, this should cut down on the number of crashes I see when
album art is fetched.
2011-06-18 09:23:50 -04:00
Bryan Schumaker 66d4d4979f ocarina: Set album art from on_load() attrs
It's available here, so I might as well.  Hopefully this will cut down
on the number of crashes I get, too...
2011-06-17 23:44:28 -04:00
Bryan Schumaker 5fcb590f53 ocarina: Pass attributes throughout the gui
This avoids repeated calls to the get_attrs() function at every step.
2011-06-17 20:03:13 -04:00
Bryan Schumaker 645b70b33c libsaria: Introduce libsaria.sources.all_attrs()
This patch introduces a new function "all_attrs()" which will return a
dictionary containing all the attributes for the current song.  To help
the gui, I pass this dictionary during an on_load() callback.
2011-06-17 19:47:04 -04:00
Bryan Schumaker 63574a17c6 ocarina: Need to import export code
Otherwise I can't save playlists, since the functions won't be
available.
2011-05-29 18:23:26 -04:00
Bryan Schumaker 466b0a2c5b ocarina: Better way to scroll to current song
I should use get_attrs() and then use the first result in the list,
rather than using the cur_id variable.  cur_id is not set in the case of
loading a file.
2011-05-28 15:50:57 -04:00
Bryan Schumaker 1bb0480c65 ocarina: Use libsaria.sources.cur_id for scrolling
I was using a get_attrs() call for finding the current song id.  This
information is available directly through libsaria.sources, though.  I
think it will be easier to just use the cur_id variable.
2011-05-28 15:31:59 -04:00
Bryan Schumaker 7c39b9ccd1 ocarina: Fix now playing label order
I initially had length and play count switched.
2011-05-26 09:02:44 -04:00
Bryan Schumaker 2f6313fe95 ocarina: Add track number to gui
It's helpful to see, especially since it shows how everything is sorted.
2011-05-25 23:05:05 -04:00
Bryan Schumaker e8f633c863 ocarina: Single list attrs
I was recreating this list once for each of playlist, library and queue.
I expect it is easier to manage from a single location.
2011-05-25 23:01:17 -04:00
Bryan Schumaker fffc7f8816 ocarina: Fix setting album art
get_attrs() now returns a list, so the on_get_art() callback function
needs to be updated.
2011-05-25 20:58:27 -04:00
Bryan Schumaker ae2fc30da8 ocarina: Remove export button
I don't plan on changing the library anytime soon, so there is no need
to export it to an xml file.
2011-05-23 10:02:43 -04:00
Bryan Schumaker 43f37c93a7 ocarina: Do filtering in the listview
Each source was doing the exact same thing for filtering now that I have
a generic is_visible() function.  There is no need for each source to
implement this.
2011-05-22 09:43:27 -04:00
Bryan Schumaker 4f8f4d3ce3 ocarina: Use new filtering functions
I set this up through callbacks.  It should filter all sources at once,
rather than just the current page.
2011-05-22 09:27:26 -04:00
Bryan Schumaker ac0f23ab80 ocarina: Remove oldlibrary code
The new library covers everything, so this is no longer needed.
2011-05-21 22:34:39 -04:00
Bryan Schumaker ad12bf6500 ocarina: Filter the library
I call the new libsaria.sources.filter() function and test ids using
libsaria.sources.is_visible().
2011-05-21 22:06:37 -04:00
Bryan Schumaker c357a35313 ocarina: Reset library and right click menu
I added these based on the old library functions.  It seems to be
working so far!
2011-05-21 15:43:29 -04:00
Bryan Schumaker 2587ae0954 ocarina: Fill new library
I make the list of songs visible, I also update the number of songs.
Finally, I respond to the library_updated() callback when songs are
added / removed from the library.
2011-05-21 08:20:44 -04:00
Bryan Schumaker e3450d31ff ocarina: Add new library page
Right now, it just adds a new page to the window.  I'll add more as I
go.
2011-05-20 21:42:57 -04:00
Bryan Schumaker c3dbd8167d ocarina: Rename library.py -> oldlibrary.py
This reflects my recent libsaria change.  I'm keeping around my old
library code for now.  The new library will gradually be introduced
through several patches ending with the removal of the old library.
2011-05-20 21:29:30 -04:00
Bryan Schumaker 531ceb2c17 libsaria: Rename library.py to oldlibrary.py
I want to preserve the old library as I slowly introduce the new one.
This should help.
2011-05-20 21:22:21 -04:00
Bryan Schumaker 3301439e88 ocarina: Get gtk lock around gtk.main()
The internet suggests that this may help with the random crashes I
sometimes get.  We'll see.
2011-05-15 15:58:37 -04:00
Bryan Schumaker b373a88618 ocarina: Page showing and hiding improvements
When hiding a page I want to switch to page n - 1, but gtk was moving me
to n + 1.  I also added a function to show, and optionally switch to, a
page.
2011-05-15 11:36:26 -04:00
Bryan Schumaker 25f4410970 ocarina: I don't need to call save after resetting playlist
Saving is done automatically as part of the reset now, so there is no
need to call save() here any more.
2011-05-12 22:36:17 -04:00
Bryan Schumaker 64c6677263 ocarina: Use new list_playlist() function 2011-05-12 08:26:17 -04:00
Bryan Schumaker 412153013b ocarina: Remove reference to thread.py
I removed the file a while ago, so this shouldn't be here.
2011-05-11 22:18:22 -04:00
Bryan Schumaker 7a26110750 ocarina: Set and resize images atomically
Doing this all in one step prevents multiple threads from clashing with
each other.  I also add in clearing the old image before setting a new
one.
2011-05-11 21:46:15 -04:00
Bryan Schumaker 217156d322 ocarina: Gtk locking around album art resize
I only want one thread modifying album art at a time, so I need to use
threads_enter() and threads_leave() here.
2011-05-08 10:33:01 -04:00
Bryan Schumaker 0862c57b6a ocarina: Clean up image resize function
I now wrap the entire resize operation in a try / except block.
Hopefully this will help to catch some errors.  I also cleaned up my
"return early" conditions.
2011-05-08 10:24:10 -04:00
Bryan Schumaker b43725bbe8 ocarina: Use new list_queue() for filling queue
I might as well use the new function so I can remove the old
walk_queue() function.
2011-05-08 09:57:57 -04:00
Bryan Schumaker 45f293c6fa ocarina: Refresh queue when changed
I want the gui to be consistent with the internal state of the queue.
2011-05-07 18:53:01 -04:00
Bryan Schumaker c1a2d74f7c libsaria: Move version information to new file
A bit of separation is good here, and it should help with managing the
code.
2011-05-07 15:58:33 -04:00
Bryan Schumaker 41e08fe248 Ocarina: Start through a function call
I was starting Ocarina through "import ocarina" in the launcher.  This
was apparently a bad idea, since the import lock will never be released.
This lock prevents other threads from importing modules, so when I tried
to use urllib2 to download album art the call blocked until after I
closed Ocarina.
2011-05-07 15:54:26 -04:00
Bryan Schumaker 975b153bea libsaria: Remove event.py
I've been looking forward to this.  The last several commits have
replaced the generic event system with a hardcoded callback system.
This should be more efficient, easier to understand, and easier to
follow.  I feel it is a better solution.
2011-05-01 12:46:17 -04:00