diff options
Diffstat (limited to 'nephilim/plugins/Filebrowser.py')
-rw-r--r-- | nephilim/plugins/Filebrowser.py | 47 |
1 files changed, 47 insertions, 0 deletions
diff --git a/nephilim/plugins/Filebrowser.py b/nephilim/plugins/Filebrowser.py new file mode 100644 index 0000000..0a2908d --- /dev/null +++ b/nephilim/plugins/Filebrowser.py @@ -0,0 +1,47 @@ +from PyQt4 import QtGui, QtCore +from PyQt4.QtCore import QVariant +import os + +from ..clPlugin import Plugin +from ..misc import ORGNAME, APPNAME + +class pluginFilebrowser(Plugin): + view = None + model = None + + def __init__(self, winMain): + Plugin.__init__(self, winMain, 'Filebrowser') + + def _load(self): + self.model = QtGui.QDirModel() + self.model.setFilter(QtCore.QDir.AllDirs|QtCore.QDir.AllEntries) + self.model.setSorting(QtCore.QDir.DirsFirst) + + self.view = QtGui.QListView() + self.view.setModel(self.model) + self.view.setRootIndex(self.model.index(os.path.expanduser('~'))) + self.view.setSelectionMode(QtGui.QTreeWidget.ExtendedSelection) + self.view.connect(self.view, QtCore.SIGNAL('activated(const QModelIndex&)'), self.item_activated) + + def _unload(self): + self.view = None + self.model = None + + def getInfo(self): + return 'A file browser that allows adding files not in collection.' + + def _getDockWidget(self): + return self._createDock(self.view) + + def item_activated(self, index): + if self.model.hasChildren(index): + self.view.setRootIndex(index) + else: + if not 'file://' in self.mpclient.urlhandlers(): + self.setStatus('file:// handler not available. Connect via unix domain sockets.') + return + paths = [] + for index in self.view.selectedIndexes(): + paths.append(u'file://' + self.model.filePath(index)) + self.mpclient.addToPlaylist(paths) + |