|
@@ -0,0 +1,60 @@
|
|
|
+#!/usr/bin/python
|
|
|
+''' a widget that shows only a dir listing
|
|
|
+'''
|
|
|
+
|
|
|
+import sys,os,argparse
|
|
|
+from PyQt4.QtGui import *
|
|
|
+from PyQt4 import QtGui, QtCore
|
|
|
+
|
|
|
+class DirWidget(QListWidget):
|
|
|
+ ''' a simple widget that shows a list of directories, staring
|
|
|
+ at the directory passed into the constructor
|
|
|
+
|
|
|
+ a mouse click or 'enter' key will send a 'selected' signal to
|
|
|
+ anyone who connects to this.
|
|
|
+
|
|
|
+ the .. parent directory is shown for all dirs except /
|
|
|
+
|
|
|
+ the most interesting parts of the interface are:
|
|
|
+ constructor - send in the directory to view
|
|
|
+ method - currentPath() returns text of current path
|
|
|
+ signal - selected calls a slot with a single arg: new path
|
|
|
+ '''
|
|
|
+
|
|
|
+ selected = QtCore.pyqtSignal(str)
|
|
|
+ def __init__(self, directory='.', parent=None):
|
|
|
+ super(DirWidget,self).__init__(parent)
|
|
|
+ self.directory = directory
|
|
|
+ self.refill()
|
|
|
+ self.itemActivated.connect(self.selectionByLWI)
|
|
|
+ # it would be nice to pick up single-mouse-click for selection as well
|
|
|
+ # but that seems to be a system-preferences global
|
|
|
+ def selectionByLWI(self, li):
|
|
|
+ self.directory = os.path.abspath(self.directory + '/' + str(li.text()))
|
|
|
+ self.refill()
|
|
|
+ self.selected.emit(self.directory)
|
|
|
+ def refill(self):
|
|
|
+ current,dirs,files = os.walk(self.directory,followlinks=True).next()
|
|
|
+ dirs.sort()
|
|
|
+ if '/' not in dirs:
|
|
|
+ dirs = ['..'] + dirs
|
|
|
+ self.clear()
|
|
|
+ for d in dirs:
|
|
|
+ li = QListWidgetItem(d,self)
|
|
|
+ def currentPath(self):
|
|
|
+ return self.directory
|
|
|
+
|
|
|
+if __name__=="__main__":
|
|
|
+ def alert(some_text):
|
|
|
+ os.system('notify-send -t 1500 "file: '+str(some_text) + '"')
|
|
|
+
|
|
|
+ a = QApplication([])
|
|
|
+
|
|
|
+ qmw = QMainWindow()
|
|
|
+ dw = DirWidget(parent=qmw)
|
|
|
+ dw.selected.connect(alert)
|
|
|
+
|
|
|
+ qmw.setCentralWidget(dw)
|
|
|
+ qmw.show()
|
|
|
+
|
|
|
+ a.exec_()
|