diff options
author | Anton Khirnov <wyskas@gmail.com> | 2009-05-15 13:56:26 +0200 |
---|---|---|
committer | Anton Khirnov <wyskas@gmail.com> | 2009-05-15 13:56:26 +0200 |
commit | 444f7802b93927e29ee8b7073c6472d0558e5063 (patch) | |
tree | 4c17832a7709cb4e2bf325bd91fba04204148710 /nephilim/plugins | |
parent | 51e0aeb793e53de7bec6423d557958098c347cfb (diff) |
Filebrowser: change permissions from context menu.
Diffstat (limited to 'nephilim/plugins')
-rw-r--r-- | nephilim/plugins/Filebrowser.py | 42 |
1 files changed, 38 insertions, 4 deletions
diff --git a/nephilim/plugins/Filebrowser.py b/nephilim/plugins/Filebrowser.py index f88c0f5..50e4ac0 100644 --- a/nephilim/plugins/Filebrowser.py +++ b/nephilim/plugins/Filebrowser.py @@ -18,6 +18,7 @@ from PyQt4 import QtGui, QtCore from PyQt4.QtCore import QVariant import os +import stat from ..plugin import Plugin @@ -41,6 +42,42 @@ class wgFilebrowser(QtGui.QWidget): path = None plugin = None + class FileView(QtGui.QListView): + "context menu" + menu = None + + def __init__(self, model): + QtGui.QListView.__init__(self) + + self.setModel(model) + self.setRootIndex(self.model().index(os.path.expanduser('~'))) + self.setSelectionMode(QtGui.QTreeWidget.ExtendedSelection) + + self.menu = QtGui.QMenu('file') + self.menu.addAction('&Make file(s) readable for MPD.', self.make_readable) + + self.setContextMenuPolicy(QtCore.Qt.CustomContextMenu) + self.connect(self, QtCore.SIGNAL('customContextMenuRequested(const QPoint &)'), self.show_context_menu) + + def show_context_menu(self, pos): + if not self.indexAt(pos).isValid(): + return + self.menu.popup(self.mapToGlobal(pos)) + + def make_readable(self): + for index in self.selectedIndexes(): + filepath = self.model().filePath(index) + if os.path.isdir(filepath): + perm = 0755 + else: + perm = 0644 + + try: + os.chmod(filepath, perm) + except OSError, e: + self.logger.error('Can\'t change permissions: %s.'%e) + + def __init__(self, plugin): QtGui.QWidget.__init__(self) self.plugin = plugin @@ -49,10 +86,7 @@ class wgFilebrowser(QtGui.QWidget): 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 = self.FileView(self.model) self.connect(self.view, QtCore.SIGNAL('activated(const QModelIndex&)'), self.item_activated) self.path = QtGui.QLineEdit(self.model.filePath(self.view.rootIndex())) |