debian/0000755000000000000000000000000011352350416007166 5ustar debian/copyright0000644000000000000000000000565411344753043011137 0ustar This package was downloaded from http://www.codingteam.net/bluemindo-down.html Upstream Author: Erwan Briand Copyright Holders: Erwan Briand Thomas Julien (for files in data/image) Andy Theyers (for src/libs/audioscrobbler.py) Ľubomír Remák (for locale/sk/LC_MESSAGES/bluemindo.po) Salvatore Tomarchio (for locale/it/LC_MESSAGES/bluemindo.po) Shang Yuanchun <05281253@bjtu.edu.cn> (for locale/zh_CN/LC_MESSAGES/bluemindo.po) Bruno Conde (for locale/pt_BR/LC_MESSAGES/bluemindo.po) Niklas Grahn (for locale/sv/LC_MESSAGES/bluemindo.po) License: This package is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; version 3 of the License. This package is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this package; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA The Debian packaging is © 2008, Thibaut GIRKA and is licensed under the terms of the GNU General Public License. On Debian systems, the complete text of the GNU General Public License can be found in `/usr/share/common-licenses/GPL-3'. Format-Specification: http://wiki.debian.org/Proposals/CopyrightFormat Original-Source: http://codingteam.net/project/bluemindo/download Files: debian/* Copyright: © 2008 Thibaut GIRKA License: GPL-3 The Debian packaging information is under the GPL, version 3 Files: * Copyright: © 2007-2009 Erwan Briand License: GPL-3 Files: data/image/* Copyright: © 2008 Thomas Julien License: GPL-3 Files: locale/sk/LC_MESSAGES/bluemindo.po Copyright: © 2008-2009 Ľubomír Remák Files: locale/it/LC_MESSAGES/bluemindo.po Copyright: © 2008 Salvatore Tomarchio Files: locale/zh_CN/LC_MESSAGES/bluemindo.po Copyright: © 2008-2009 Shang Yuanchun <05281253@bjtu.edu.cn> Files: locale/pt_BR/LC_MESSAGES/bluemindo.po Copyright: © 2008 Bruno Conde Files: locale/sv/LC_MESSAGES/bluemindo.po Copyright: © 2008 Niklas Grahn Files: src/plugins/lastfm/audioscrobbler.py Copyright: © Andy Theyers License: GPL-3 It was originally taken from Sonata: http://svn.berlios.de/wsvn/sonata/trunk/audioscrobbler.py debian/dirs0000644000000000000000000000010411245467253010056 0ustar usr/bin usr/share/applications usr/share/pixmaps usr/share/man/man1 debian/source/0000755000000000000000000000000011275272242010472 5ustar debian/source/format0000644000000000000000000000001411352350415011673 0ustar 3.0 (quilt) debian/rules0000755000000000000000000000040411275307005010244 0ustar #!/usr/bin/make -f %: dh $@ override_dh_clean: dh_clean rm -rf debian/bluemindo.xpm override_dh_auto_build: dh_auto_build convert data/misc/bluemindo.png -scale 32x32 debian/bluemindo.xpm override_dh_installchangelogs: dh_installchangelogs CHANGELOG debian/install0000644000000000000000000000005111045403215010546 0ustar debian/bluemindo.xpm /usr/share/pixmaps/ debian/bluemindo.docs0000644000000000000000000000003511275307632012022 0ustar AUTHORS THANKS README THANKS debian/compat0000644000000000000000000000000211045403215010357 0ustar 5 debian/menu0000644000000000000000000000023311045403215010046 0ustar ?package(bluemindo):needs="x11" section="Applications/Sound"\ title="bluemindo" command="/usr/bin/bluemindo" \ icon="/usr/share/pixmaps/bluemindo.xpm" debian/control0000644000000000000000000000227411341246615010601 0ustar Source: bluemindo Section: sound Priority: extra Maintainer: Thibaut GIRKA Build-Depends: debhelper (>= 7.0.50~) Build-Depends-Indep: python-support (>= 0.5.3), imagemagick Standards-Version: 3.8.4 Homepage: http://bluemindo.codingteam.net/ Package: bluemindo Architecture: all XS-Python-Version: >= 2.5 XB-Python-Version: ${python:Versions} Depends: ${misc:Depends}, ${python:Depends}, python, python-gst0.10, python-gtk2 (>= 2.10), python-glade2, python-tagpy, gstreamer0.10-plugins-base Recommends: python-dbus, python-notify Suggests: python-xmpp Description: simple yet powerful audio player Bluemindo is a really simple yet powerful audio player in Python/PyGTK, using GStreamer. . With Bluemindo you can: * automatically download lyrics, album-covers, or a picture of the artist, for the current playing song; * choose between five different view modes (lightweight, basic, normal, full or albums); * use plugins; * get desktop notifications (requires python-notify); * update Gajim's status message (requires python-dbus); * send music to your Jabber account (requires python-xmpp) or to your Last.fm profile. * listen to webradios and ShoutCast debian/changelog0000644000000000000000000000363311351122623011041 0ustar bluemindo (0.3-4) unstable; urgency=low * Add a patch to use hashlib instead of the deprecated md5 module * Add a patch to call object.__new__ without arguments * Changed XS-Python-Version to >= 2.5 (Closes: #570565) -- Thibaut GIRKA Wed, 24 Feb 2010 16:36:09 +0100 bluemindo (0.3-3) unstable; urgency=low * Remove python-eggtrayicon from Suggests, depend on python-gtk2 (>= 2.10) instead. (Closes: #560986) * Added a patch to correct a typo in the manpage * Added a patch to improve a bit tray icon behaviour using StatusIcon * Bumped Standards-Version to 3.8.4, no changes needed -- Thibaut GIRKA Sat, 06 Feb 2010 21:27:17 +0100 bluemindo (0.3-2) unstable; urgency=low * Switch to new source format "3.0 (quilt)" * Drop CDBS and use debhelper 7 instead. * Add python-eggtrayicon to suggests * Correct english error in long description -- Thibaut GIRKA Sat, 07 Nov 2009 16:38:11 +0100 bluemindo (0.3-1) unstable; urgency=low * New upstream release * Bumped Standards-Version to 3.8.3 * Added a patch to correct seekbar's adjustment, so it covers the whole song * Added a patch to correct crashes in the random playlists * Added a patch to avoid freezes and crashes in the album view * Added a patch to correct random playlists' behaviour -- Thibaut GIRKA Thu, 27 Aug 2009 11:03:45 +0200 bluemindo (0.2.1-2) unstable; urgency=low * Fixed the watch file * Calls idle_add and add_logo the right way. (LP: #261817) * Patches now follow DEP3 * Bumped Standards-Version to 3.8.2 * Changed priority to extra * Improved package description -- Thibaut GIRKA Thu, 02 Jul 2009 14:23:33 +0200 bluemindo (0.2.1-1) unstable; urgency=low * Initial release (Closes: #487572) -- Thibaut GIRKA Sun, 22 Jun 2008 21:36:29 +0200 debian/docs0000644000000000000000000000000711045403215010031 0ustar README debian/patches/0000755000000000000000000000000011351122410010603 5ustar debian/patches/series0000644000000000000000000000027611341243115012032 0ustar 00_hscale_adjustment.patch 01_random_playlist.patch 02_album_view_threads.patch 03_random_playlists.patch 04_status_icon.patch 05_manpage_typo.patch 06_use_hashlib.patch 07_object_new.patch debian/patches/01_random_playlist.patch0000644000000000000000000000225711245531110015336 0ustar Description: Use randrange instead of randint, to avoid tracebacks in the random playlists Origin: vendor Author: Thibaut GIRKA Forwarded: http://codingteam.net/project/bluemindo/upload/bugs/01_random_playlist.patch diff -Nur -x '*.orig' -x '*~' bluemindo-0.3/src/modules/explorer/views/playlists.py bluemindo-0.3.new/src/modules/explorer/views/playlists.py --- bluemindo-0.3/src/modules/explorer/views/playlists.py 2009-08-27 17:39:40.000000000 +0200 +++ bluemindo-0.3.new/src/modules/explorer/views/playlists.py 2009-08-27 17:40:32.000000000 +0200 @@ -26,7 +26,7 @@ FILE_CHOOSER_ACTION_OPEN, FILE_CHOOSER_ACTION_SAVE, STOCK_OPEN, STOCK_SAVE_AS) from gtk.glade import XML as glade_XML -from random import randint +from random import randrange from os.path import join, exists import tagpy @@ -174,7 +174,7 @@ randoms = [] i = 0 while i <= maxsongs: - randoms.append(randint(0, len(songs_list))) + randoms.append(randrange(0, len(songs_list))) i += 1 for randid in randoms: debian/patches/07_object_new.patch0000644000000000000000000001574411351122410014264 0ustar Description: Call object.__new__ without arguments Origin: vendor Author: Thibaut GIRKA Forwarded: https://codingteam.net/project/bluemindo/bugs/show/1232 --- bluemindo-0.3.orig/src/common/config.py +++ bluemindo-0.3/src/common/config.py @@ -27,7 +27,7 @@ def __new__(cls, *args, **kws): # Singleton if cls.ref is None: - cls.ref = super(ConfigLoader, cls).__new__(cls, args, kws) + cls.ref = object.__new__(cls) return cls.ref def __init__(self): @@ -83,4 +83,4 @@ # Store the Bluemindo key for the Amazon API # Don't use it, create your own here: http://aws.amazon.com/ - self.amazon_key = 'MFQxQ0M4REUxSFFHUldFTUJHODI=' \ No newline at end of file + self.amazon_key = 'MFQxQ0M4REUxSFFHUldFTUJHODI=' --- bluemindo-0.3.orig/src/common/functions.py +++ bluemindo-0.3/src/common/functions.py @@ -31,7 +31,7 @@ def __new__(cls, *args, **kws): # Singleton if cls.ref is None: - cls.ref = super(Functions, cls).__new__(cls, args, kws) + cls.ref = object.__new__(cls) return cls.ref def __init__(self): --- bluemindo-0.3.orig/src/gui/volumemanagement.py +++ bluemindo-0.3/src/gui/volumemanagement.py @@ -35,7 +35,7 @@ def __new__(cls, *args, **kws): # Singleton if cls.ref is None: - cls.ref = super(VolumeManagement, cls).__new__(cls, args, kws) + cls.ref = object.__new__(cls) return cls.ref def __init__(self, widgets): @@ -132,4 +132,4 @@ configparser.add_section('Audio') configparser.set('Audio', 'volume', volume) - configparser.write(open(configfile, 'w')) \ No newline at end of file + configparser.write(open(configfile, 'w')) --- bluemindo-0.3.orig/src/media/gstreamer.py +++ bluemindo-0.3/src/media/gstreamer.py @@ -26,7 +26,7 @@ def __new__(cls, *args, **kws): # Singleton if cls.ref is None: - cls.ref = super(GStreamer, cls).__new__(cls, args, kws) + cls.ref = object.__new__(cls) return cls.ref def __init__(self): @@ -149,4 +149,4 @@ self.nowplaying = None self.status = 'NULL' err, debug = message.parse_error() - print 'Error: %s' % err, debug \ No newline at end of file + print 'Error: %s' % err, debug --- bluemindo-0.3.orig/src/modules/explorer/playlist.py +++ bluemindo-0.3/src/modules/explorer/playlist.py @@ -39,7 +39,7 @@ def __new__(cls, *args, **kws): # Singleton if cls.ref is None: - cls.ref = super(Playlist, cls).__new__(cls, args, kws) + cls.ref = object.__new__(cls) return cls.ref def __init__(self, glade_file, config, userconf): @@ -426,4 +426,4 @@ # Test if a song is selected if tview.get_selection().get_selected()[1]: song = eval(unescape(mod.get_value(iter_, 8))) - self.extensions.load_event('OnPlayNewSong', song) \ No newline at end of file + self.extensions.load_event('OnPlayNewSong', song) --- bluemindo-0.3.orig/src/modules/explorer/views/albums.py +++ bluemindo-0.3/src/modules/explorer/views/albums.py @@ -42,7 +42,7 @@ def __new__(cls, *args, **kws): # Singleton if cls.ref is None: - cls.ref = super(AlbumsView, cls).__new__(cls, args, kws) + cls.ref = object.__new__(cls) return cls.ref def __init__(self, glade_file, config, userconf): @@ -241,4 +241,4 @@ if len(songs) > 0: songs.sort(lambda x,y:cmp(x[6], y[6])) - self.playlist.add_songs(songs, False) \ No newline at end of file + self.playlist.add_songs(songs, False) --- bluemindo-0.3.orig/src/modules/explorer/views/basic.py +++ bluemindo-0.3/src/modules/explorer/views/basic.py @@ -37,7 +37,7 @@ def __new__(cls, *args, **kws): # Singleton if cls.ref is None: - cls.ref = super(BasicView, cls).__new__(cls, args, kws) + cls.ref = object.__new__(cls) return cls.ref def __init__(self, glade_file, config, userconf): --- bluemindo-0.3.orig/src/modules/explorer/views/full.py +++ bluemindo-0.3/src/modules/explorer/views/full.py @@ -45,7 +45,7 @@ def __new__(cls, *args, **kws): # Singleton if cls.ref is None: - cls.ref = super(FullView, cls).__new__(cls, args, kws) + cls.ref = object.__new__(cls) return cls.ref def __init__(self, glade_file, config, userconf): @@ -309,4 +309,4 @@ return True except (TypeError, ValueError): - pass \ No newline at end of file + pass --- bluemindo-0.3.orig/src/modules/explorer/views/lightweight.py +++ bluemindo-0.3/src/modules/explorer/views/lightweight.py @@ -31,7 +31,7 @@ def __new__(cls, *args, **kws): # Singleton if cls.ref is None: - cls.ref = super(LightweightView, cls).__new__(cls, args, kws) + cls.ref = object.__new__(cls) return cls.ref def __init__(self, glade_file, config, userconf): @@ -81,4 +81,4 @@ self.playlist.clear_playlist() idle_add(self.playlist.add_songs, self.database) - threads_leave() \ No newline at end of file + threads_leave() --- bluemindo-0.3.orig/src/modules/explorer/views/normal.py +++ bluemindo-0.3/src/modules/explorer/views/normal.py @@ -39,7 +39,7 @@ def __new__(cls, *args, **kws): # Singleton if cls.ref is None: - cls.ref = super(NormalView, cls).__new__(cls, args, kws) + cls.ref = object.__new__(cls) return cls.ref def __init__(self, glade_file, config, userconf): @@ -288,4 +288,4 @@ songs.append(sg) if len(songs) > 0: - self.playlist.add_songs(songs) \ No newline at end of file + self.playlist.add_songs(songs) --- bluemindo-0.3.orig/src/modules/explorer/views/playlists.py +++ bluemindo-0.3/src/modules/explorer/views/playlists.py @@ -45,7 +45,7 @@ def __new__(cls, *args, **kws): # Singleton if cls.ref is None: - cls.ref = super(PlaylistsView, cls).__new__(cls, args, kws) + cls.ref = object.__new__(cls) return cls.ref def __init__(self, glade_file, config, userconf): @@ -308,4 +308,4 @@ filename = fcd_playlist.get_filename() playlists_management.export_playlist(playlist, filename) - fcd_playlist.destroy() \ No newline at end of file + fcd_playlist.destroy() --- bluemindo-0.3.orig/src/modules/explorer/views/webradios.py +++ bluemindo-0.3/src/modules/explorer/views/webradios.py @@ -43,7 +43,7 @@ def __new__(cls, *args, **kws): # Singleton if cls.ref is None: - cls.ref = super(WebradiosView, cls).__new__(cls, args, kws) + cls.ref = object.__new__(cls) return cls.ref def __init__(self, glade_file, config, userconf): debian/patches/00_hscale_adjustment.patch0000644000000000000000000000223611245731240015634 0ustar Description: Corrects seekbar's adjustment, so it covers the whole song, including the 10 last seconds Origin: vendor Author: Thibaut GIRKA Forwarded: http://codingteam.net/project/bluemindo/bugs/show/782#a669 diff -Nur -x '*.orig' -x '*~' bluemindo-1.3/data/glade/mainwindow.glade bluemindo-0.3.new/data/glade/mainwindow.glade --- bluemindo-0.3/data/glade/mainwindow.glade 2009-08-27 15:15:04.000000000 +0200 +++ bluemindo-0.3.new/data/glade/mainwindow.glade 2009-08-27 15:31:21.000000000 +0200 @@ -763,7 +763,7 @@ 300 True True - 0 0 100 1 10 10 + 0 0 100 1 0 0 False GTK_POS_RIGHT debian/patches/06_use_hashlib.patch0000644000000000000000000000220711351120542014424 0ustar Description: Use hashlib instead of the deprecated md5 module Origin: vendor Author: Thibaut GIRKA Forwarded: https://codingteam.net/project/bluemindo/bugs/show/1231 --- bluemindo-0.3.orig/src/common/functions.py +++ bluemindo-0.3/src/common/functions.py @@ -17,7 +17,7 @@ from gobject import idle_add from gtk import main_quit as gtk_main_quit -from md5 import new as md5_new +from hashlib import md5 as md5_new from os.path import join, isfile, isdir from os import remove import ConfigParser --- bluemindo-0.3.orig/src/plugins/audioscrobbler/config.py +++ bluemindo-0.3/src/plugins/audioscrobbler/config.py @@ -19,7 +19,7 @@ from gtk.glade import XML as glade_XML from gtk import ListStore from ConfigParser import ConfigParser, DuplicateSectionError -from md5 import md5 +from hashlib import md5 from os.path import join from os import getcwd @@ -107,4 +107,4 @@ combobox.set_model(lstore) combobox.set_text_column(1) - combobox.set_active_iter(iter_servers[config['server']]) \ No newline at end of file + combobox.set_active_iter(iter_servers[config['server']]) debian/patches/02_album_view_threads.patch0000644000000000000000000000424411275272303016011 0ustar Description: Use idle_add where needed to avoid freezes and crashs Origin: vendor Author: Thibaut GIRKA Forwarded: yes Index: src/modules/explorer/views/albums.py =================================================================== --- a/src/modules/explorer/views/albums.py (révision 119) +++ b/src/modules/explorer/views/albums.py (copie de travail) @@ -101,6 +101,10 @@ class AlbumsView(object): """This function is called at the start-up and add artists.""" threads_enter() + self.glade_file.get_widget('checkbutton1').set_sensitive(False) + self.glade_file.get_widget('entry5').set_sensitive(False) + self.glade_file.get_widget('button6').set_sensitive(False) + # Call database musicdb = MusicDatabase(self.config, pbar) @@ -117,9 +121,6 @@ class AlbumsView(object): pbar.set_text(_('Loading artists…')) group_artists = self.glade_file.get_widget('checkbutton1').get_active() - self.glade_file.get_widget('checkbutton1').set_sensitive(False) - self.glade_file.get_widget('entry5').set_sensitive(False) - self.glade_file.get_widget('button6').set_sensitive(False) self.albums_tree = [] album_names = [] @@ -201,12 +202,12 @@ class AlbumsView(object): self.filter_widgets.append([button, album_, alb['artist']]) button.connect('clicked', self.click_album) - self.filter_(self.glade_file.get_widget('entry5')) + idle_add(self.filter_, self.glade_file.get_widget('entry5')) - self.glade_file.get_widget('checkbutton1').set_sensitive(True) - self.glade_file.get_widget('button6').set_sensitive(True) - self.glade_file.get_widget('entry5').set_sensitive(True) - self.glade_file.get_widget('entry5').grab_focus() + idle_add(self.glade_file.get_widget('checkbutton1').set_sensitive, True) + idle_add(self.glade_file.get_widget('button6').set_sensitive, True) + idle_add(self.glade_file.get_widget('entry5').set_sensitive, True) + idle_add(self.glade_file.get_widget('entry5').grab_focus) def filter_(self, widget): text = widget.get_text().upper() debian/patches/05_manpage_typo.patch0000644000000000000000000000143311331302014014612 0ustar Description: Fix a typo in manual Origin: vendor Author: Thibaut GIRKA Forwarded: http://codingteam.net/project/bluemindo/bugs/show/1126 --- bluemindo-0.3.orig/data/misc/bluemindo.1 +++ bluemindo-0.3/data/misc/bluemindo.1 @@ -16,7 +16,7 @@ .\" .sp insert n+1 empty lines .\" for manpage-specific macros, see man(7) .SH NAME -bluemindo \- simple yet powerfull audio player +bluemindo \- simple yet powerful audio player .SH SYNOPSIS .B bluemindo .RI [ options ] @@ -90,4 +90,4 @@ bluemindo was written by Erwan Briand . .PP This manual page was written by Thibaut GIRKA , -for the Debian project (but may be used by others). \ No newline at end of file +for the Debian project (but may be used by others). debian/patches/04_status_icon.patch0000644000000000000000000000420211331274114014467 0ustar Description: Update icon when using gtk.StatusIcon aswell Origin: vendor Author: Thibaut GIRKA Forwarded: http://codingteam.net/project/bluemindo/upload/bugs/status_icon.patch --- bluemindo-0.3.orig/src/modules/trayicon/__init__.py +++ bluemindo-0.3/src/modules/trayicon/__init__.py @@ -70,6 +70,11 @@ self.tray = status_icon_new_from_file(default) self.tray.connect('activate', self.on_gtk_clicked) self.tray.connect('popup-menu', self.trayicon_menu) + #TODO: + # Use gtk.Tooltip instead of notifications, + # however, pygtk >= 2.12 is needed for that + #self.tray.connect('query-tooltip', ...) + #self.tray.set_property('has-tooltip', True) self.extensions.load_event('OnTrayIconAnswer', self.tray) @@ -147,6 +152,8 @@ def handler_stop(self): """Updates the status icon when we stop our music.""" + if trayicon_type == 'gtk': + self.tray.set_tooltip(None) self._set_icon('stop') def handler_play(self, song=None): @@ -154,17 +161,23 @@ gst = GStreamer() cur = gst.getstatus() + if song and trayicon_type == 'gtk': + #TODO: Use gtk.Tooltip to have something better looking? + title, artist, album = song[:3] + self.tray.set_tooltip(_('"%s" by "%s" from "%s"') + % (title, artist, album)) + if cur == 'PAUSED': self._set_icon('pause') else: self._set_icon('play') def _set_icon(self, what): - if trayicon_type == 'gtk': - return - wtf = join(functions.datadir, 'image', 'logo_head_small_%s.png' % what) pixbuf = pixbuf_new_from_file(wtf) - pixbuf = pixbuf.scale_simple(20, 20, INTERP_BILINEAR) - self.tray_icon.set_from_pixbuf(pixbuf) \ No newline at end of file + if trayicon_type == 'gtk': + self.tray.set_from_pixbuf(pixbuf) + else: + pixbuf = pixbuf.scale_simple(20, 20, INTERP_BILINEAR) + self.tray_icon.set_from_pixbuf(pixbuf) debian/patches/03_random_playlists.patch0000644000000000000000000000213111275272310015521 0ustar Description: Random mode avoids duplicates and add exactly the number of tracks requested, unless there aren't enough tracks Origin: vendor Author: Thibaut GIRKA Forwarded: yes Index: src/modules/explorer/views/playlists.py =================================================================== --- a/src/modules/explorer/views/playlists.py (révision 119) +++ b/src/modules/explorer/views/playlists.py (copie de travail) @@ -173,9 +173,14 @@ class PlaylistsView(object): randoms = [] i = 0 - while i <= maxsongs: - randoms.append(randrange(0, len(songs_list))) - i += 1 + + maxsongs = min(len(songs_list), maxsongs) + + while i < maxsongs: + id_ = randrange(0, len(songs_list)) + if id_ not in randoms: + randoms.append(id_) + i += 1 for randid in randoms: songs.append(songs_list[randid][8]) debian/watch0000644000000000000000000000016411241603412010212 0ustar version=3 http://codingteam.net/project/bluemindo/download \ project/bluemindo/download/file/bluemindo-(.*).tar.gz