summaryrefslogtreecommitdiff
path: root/nephilim/plugins/Filebrowser.py
diff options
context:
space:
mode:
authorAnton Khirnov <wyskas@gmail.com>2009-05-15 13:56:26 +0200
committerAnton Khirnov <wyskas@gmail.com>2009-05-15 13:56:26 +0200
commit444f7802b93927e29ee8b7073c6472d0558e5063 (patch)
tree4c17832a7709cb4e2bf325bd91fba04204148710 /nephilim/plugins/Filebrowser.py
parent51e0aeb793e53de7bec6423d557958098c347cfb (diff)
Filebrowser: change permissions from context menu.
Diffstat (limited to 'nephilim/plugins/Filebrowser.py')
-rw-r--r--nephilim/plugins/Filebrowser.py42
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()))