# -*- coding: utf-8 -*- import sys, os from qt import * class arborescence(QListViewItem): def __init__(self, parent, name=None): apply(QListViewItem.__init__,(self,parent)) if isinstance(parent, QListView): self.p = None self.f = name else: self.p = parent self.f = name self.c = [] self.readable = 1 def setOpen(self, o): if o and not self.childCount(): s = self.fullName() if (not os.path.isdir(s)): self.readable = 0 return if (not os.access(s, os.F_OK and os.R_OK)): self.readable = 0 return files = os.listdir(s) if files: for fileName in files: f=os.path.join(s, fileName) if fileName == "." or fileName == ".." or fileName.startswith('.'): continue #Sortie console print fileName if os.path.isdir(f): d = arborescence(self, fileName) else: d = QListViewItem(self, fileName) self.c.append(d) QListViewItem.setOpen(self, o) def setup(self): self.setExpandable(1) QListViewItem.setup(self) def fullName(self): if self.p: s = self.p.fullName() + self.f + '/' else: s = self.f + '/' return s def text(self, column): if column == 0: return self.f else: return '' class Form1(QWidget): def __init__(self,parent = None,name = None,fl = 0): QWidget.__init__(self,parent,name,fl) if not name: self.setName("Form1") self.listView1 = QListView(self,"listView1") self.listView1.addColumn(self.__tr("Column 1")) self.listView1.setGeometry(QRect(0,0,601,481)) self.languageChange() self.resize(QSize(600,480).expandedTo(self.minimumSizeHint())) self.clearWState(Qt.WState_Polished) #Affichage de l'arborescence : arbo = arborescence(self.listView1, '/') def languageChange(self): self.setCaption(self.__tr("Form1")) self.listView1.header().setLabel(0,self.__tr("Arborescence")) self.listView1.clear() def __tr(self,s,c = None): return qApp.translate("Form1",s,c) if __name__ == "__main__": a = QApplication(sys.argv) QObject.connect(a,SIGNAL("lastWindowClosed()"),a,SLOT("quit()")) w = Form1() a.setMainWidget(w) w.show() a.exec_loop()