123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960 |
- #!/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_()
|