Use QPalette instead of hardcoded colors.
[nephilim.git] / plugins / Library.py
bloba863a76ff1e9e483bba137e684ab318625b81a38
1 from PyQt4 import QtGui
2 from clMonty import monty
3 from clPlugin import *
4 from misc import *
5 from wgPlaylist import Playlist
7 LIBRARY_MODES_DEFAULT='$artist\n'\
8 '$artist/$date - $album\n'\
9 '$artist - $album\n'\
10 '$album ($artist)\n'\
11 '$genre\n'\
12 '$genre/$artist\n'\
13 '$genre/$artist - $album\n'
14 class pluginLibrary(Plugin):
15 o=None
16 def __init__(self, winMain):
17 Plugin.__init__(self, winMain, 'Library')
18 def _load(self):
19 self.o=Playlist(self.winMain, self, ['song'], 'Library'
20 , self.onDoubleClick, self.onKeyPress, self.getSetting('modes').split('\n'))
21 def _unload(self):
22 self.o=None
23 def getInfo(self):
24 return "List showing all the songs allowing filtering and grouping."
26 def getList(self):
27 return self.o
29 def _getDockWidget(self):
30 return self._createDock(self.o)
32 def onDoubleClick(self):
33 self.addLibrarySelToPlaylist()
35 def onKeyPress(self, event):
36 # Add selection, or entire library to playlist using ENTER-key.
37 if event.key()==QtCore.Qt.Key_Enter or event.key()==QtCore.Qt.Key_Return:
38 self.addLibrarySelToPlaylist()
39 return QtGui.QWidget.keyPressEvent(self.o, event)
41 def addLibrarySelToPlaylist(self):
42 """Add the library selection to the playlist."""
43 songs=self.o.selectedSongs()
44 self.setStatus('Adding '+str(len(songs))+' songs to library ...')
45 doEvents()
47 # add filepaths of selected songs to path
48 paths=map(lambda song: unicode(song.getFilepath()), songs)
49 # add in chunks of 1000
50 CHUNK_SIZE=1000
51 start=0
52 while start<len(paths):
53 if start+CHUNK_SIZE<len(paths):
54 end=start+CHUNK_SIZE
55 else:
56 end=len(paths)
57 self.setStatus('Adding '+str(len(songs))+' songs to library: %i%%'%(int(100*start/len(paths))))
58 doEvents()
59 monty.addToPlaylist(paths[start:end])
60 start+=CHUNK_SIZE
62 self.setStatus('')
63 doEvents()
64 self.getWinMain().fillPlaylist()
66 def _getSettings(self):
67 modes=QtGui.QTextEdit()
68 modes.insertPlainText(self.getSetting('modes'))
69 return [
70 ['modes', 'Modes', 'Sets the available modes.', modes],
72 def afterSaveSettings(self):
73 self.o.setModes(self.getSetting('modes').split('\n'))