Commits on Jan 1, 2012
  1. Install data files in a "share/" sub-directory instead of everything …

    multani committed Jan 1, 2012
    …in the egg
    Previously, all data in `data_files` and `package_data` were installed along the Python's
    code, which might not be actually wanted (that's true at least for man pages for
    This tentatively fixes #5 ("Installer puts $installdir/share stuff in wrong place").
    Following an answer from PJ Eby at
  2. Rename the method to find the path to an icon

    multani committed Jan 1, 2012
    The previous name was *way* to broad and a bit confusing, if it wasn't
    only used to find icons...
  3. Use pkg_resources to access icons files and store them in the egg.

    multani committed Jan 1, 2012
    Now that icons are stored within the egg and that we can use pkg_resources
    to find them, this also remove a bunch of lines which wer trying to guess where
    was the icons.
Commits on Dec 29, 2011
  1. Reindent file

    multani committed Dec 29, 2011
Commits on Dec 28, 2011
  1. Make cleaner accessing the MPD object

    multani committed Dec 28, 2011
    Merge branch 'cleanup-mpd-object' into integration
  2. Add support for logging module

    multani committed Dec 28, 2011
    Merge branch 'logging-support' into integration
Commits on Dec 27, 2011
  1. Add logging support

    multani committed Dec 27, 2011
    Nearly all print/write operations have been turned into logging calls, except
    for the output of the cli module, which seems to be expected to be print as it.
    (ie. it's not a logging task, but a real print task)
Commits on Nov 28, 2011
  1. Go fullscreen by dbus

    quite authored and multani committed Nov 28, 2011
Commits on Oct 31, 2011
  1. Simpler and cleaner way to call a method on the MPD client

    multani committed Oct 31, 2011
    Before, it was required to pass by the .call() method.  Now, we can call
    directly the command we are interested in, which is more convenient and much
    .call() is still availabl, since it has a "complex" logic inside, and used for
    two calls which only the MPD command to execute from a string as argument.
  2. Cleaner interface to the MPD server

    multani committed Oct 15, 2011
    There's still a lot of things to do:
    * remove the explicit call() method and implements __getattribute__
      instead to proxy the calls to the underlying mpd.MPDClient() object
    * rename the object MPDH into something nicer
    * implement a nice object to remove the crufty calls to mpdh.get():
      currsong() should return some more high level than now, which knows
      how to handle song information (adapter around the result of
    * try to remove the prevsonginfo/prevstatus/prevcon from
Commits on Oct 19, 2011
Commits on Jun 26, 2011
  1. Add support to run tests (unittests & doctests)

    multani committed Jun 26, 2011
    It currently uses the setuptools/distribute machinery to run the tests,
    but if we stick to running the 'run-tests' script to actually run the
    test, we can easily change the runner without too much interferences...
Commits on Jun 22, 2011
Commits on May 25, 2011
  1. launcher: make the main launcher cleaner

    multani committed May 25, 2011
    The launch script has been moved to the 'sonata' package, as the rest of the
    code, an put into a dedicated function, that is launch now by a very simple
    script at the top level. It will allow to 'import sonata' from the source
    repository and having the right behavior ('sonata' will by the package not the
    top level script).
    Additionnaly, Sonata now depends on setuptools/distribute to generate
    automatically a good startup script. Both the commited one and the one created
    by setuptools can be used.
Commits on Jan 25, 2011
  1. lyrics: fetching lyrics from now works again

    multani committed Jan 25, 2011
    The trick is to transform HTML entities, like '&lt;' into '<', so that we don't
    have to expect one or the other in the code, we always have the 'nicest'
  2. lyrics: ask the lyrics plugin to force the retrieval of new lyrics

    multani committed Jan 25, 2011
    Previously, this was done in the main module, which had to guess a bit how the
    lyrics system was working: the lyrics file had to be deleted before fetching the
    new lyrics, and the call to the function which located the lyrics file was
    This fixes the following error on fetching a song throught the "Search" button:
        Traceback (most recent call last):
          File ".../sonata/", line 221, in on_link_click
          File ".../sonata/", line 3242, in on_link_click
          File ".../sonata/", line 2214, in on_lyrics_search
          File ".../sonata/", line 534, in target_lyrics_filename
          File "/usr/lib/python2.6/", line 65, in join
            if b.startswith('/'):
        AttributeError: 'NoneType' object has no attribute 'startswith'
    Now, we let the lyrics system handle all of this, and we ask it to force the
    fetching, even if a lyrics file already existed.
Commits on Sep 14, 2010
  1. main: withdraw_app_undo shows sonata on current workspace

    Kirill Lashuk
    Kirill Lashuk committed Aug 26, 2010
    Fix not showing (or showing at strange position) sonata if it's not
    sticky ('Show window on all workspaces' option isn't set) and before
    clicking on tray icon sonata was not on the current workspace.
  2. multi-CD albums: prevent multiple entries, improve art search

    Kirill Lashuk
    Kirill Lashuk committed Jul 18, 2010
    Improve handling of multi-CD albums:
     - revert 8cb4b55 that fixes the problem
       with showing multi-CD albums multiple times, but it breaks artwork
       caching for album view. As the album path is ignored we search artwork
       with path=None and as the result when Artwork.artwork_get_local_image
       is called with songpath=None it looks for artwork in the directory of
       current song. So all the albums get the same artwork and the art_cache
       is broken.
     - add Base.get_multicd_album_root_dir method to get album root directory
       for tracks from multi-CD albums. For example, if track is located in
       'artist/album/CD 2' directory than the method returns 'artist/album'.
       This method is used in artwork search algorithm (to look for artwork
       in album root directory but not in CD's subdirectory) and while
       populating album view (to merge all CDs into single album entry).
  3. fullscreen: hide cursor, add some space under the artwork

    Kirill Lashuk
    Kirill Lashuk committed Jul 30, 2010
  4. scrobbler: scrobble after seeking to the beginning

    Kirill Lashuk
    Kirill Lashuk committed Aug 22, 2010
    Scrobble song if current song is the same as previously prepared for
    scrobbling, we're at the beginning of the track and elapsed time is
    smaller than previous one (that means user sought to the beginning of
    the track or just went to the next song which is the same as the
    previous one).
Commits on Sep 13, 2010
  1. main: add some items to tray menu

    Kirill Lashuk
    Kirill Lashuk committed Aug 23, 2010
    Add 'Play Mode' submenu and 'Fullscreen Mode' and 'Preferences...' menu
    items to the tray-icon's context menu.
  2. Changes on file PEP8 compliant

    Kirill Lashuk
    Kirill Lashuk committed Sep 13, 2010
  3. Changes on file PEP8 compliant

    Kirill Lashuk
    Kirill Lashuk committed Sep 13, 2010
  4. Merge remote branch 'multani/refactor-tray-icon' into master-pacodastre

    Kirill Lashuk
    Kirill Lashuk committed Sep 13, 2010