# -*- 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 = self.coding(name) else: self.p = parent self.f = self.coding(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 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): fd = self.decoding(self.f) if self.p: s = self.p.fullName() + fd + '/' else: s = fd + '/' return s def text(self, column): if column == 0: return self.f else: return '' def coding(self, s): if type(s) == 'str': s = QString(unicode(s, 'utf-8')) return s def decoding(self, s): return unicode(s) 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()