Someone posted on the Qt Wiki an Extended Dir View sample today,
I've tried to convert it to PyQt4, so here it is :

>-----------------------------------------------------------------
#!/usr/bin/env python
# -*- coding: utf-8 -*-

# ExtendedDirView sample
# from QtWiki :
# http://wiki.qtcentre.org/index.php?title=Extended_Dir_View_example

import sys
from PyQt4 import QtGui, QtCore

class ExtendedDirView(QtGui.QMainWindow):
    def __init__(self):
        QtGui.QMainWindow.__init__(self)

        self.model = QtGui.QDirModel(self)
        self.model.setReadOnly(False)

        self.tree = QtGui.QTreeView()
        self.tree.setModel(self.model)
        self.tree.setDragEnabled(True)
        self.tree.setAcceptDrops(True)

        self.list = QtGui.QListView()
        self.list.setModel(self.model)
        self.list.setDragEnabled(True)
        self.list.setAcceptDrops(True)

        self.splitter = QtGui.QSplitter(self)
        self.splitter.addWidget(self.tree)
        self.splitter.addWidget(self.list)
        self.setCentralWidget(self.splitter)

        self.history = []
        self.future = []

QtCore.QObject.connect(self.tree, QtCore.SIGNAL("clicked(QModelIndex)"),
                            self.setRootIndex)
QtCore.QObject.connect(self.list, QtCore.SIGNAL("doubleClicked(QModelIndex)"),
                            self.setRootIndex)

        self.toolBar = self.addToolBar(self.tr("&Location Toolbar"))
self.backAction = self.toolBar.addAction(self.tr("&Back"), self.goBack) self.forwardAction = self.toolBar.addAction(self.tr("&Forward"), self.goForward) self.upAction = self.toolBar.addAction(self.tr("&Up"), self.goUp) self.homeAction = self.toolBar.addAction(self.tr("&Home"), self.goHome) self.refreshAction = self.toolBar.addAction(self.tr("&Refresh"), self.refresh)

        self.currentPath = QtCore.QDir.homePath()
        self.setRootIndex(self.model.index(self.currentPath), False)

    def goBack(self):
        self.future.append(self.currentPath)
        currentPath = self.history.pop()
        self.setRootIndex(self.model.index(self.currentPath), False)

    def goForward(self):
        self.history.append(self.currentPath)
        try:
            self.currentPath = self.future.pop()
        except:
            pass
        self.setRootIndex(self.model.index(self.currentPath), False)

    def goUp(self):
        root = self.list.rootIndex()
        self.setRootIndex(root.parent())

    def goHome(self):
        path = QtCore.QDir.homePath()
        self.setRootIndex(self.model.index(path))

    def refresh(self):
        self.model.refresh(self.list.rootIndex())

    def setRootIndex(self, index, remember = True):
if index != self.list.rootIndex() and self.model.fileInfo(index).isDir():
            if remember:
                self.future = []
                self.history.append(self.currentPath)
                currentPath = self.model.filePath(index)
            self.list.setRootIndex(index)
            self.tree.setCurrentIndex(index)
        self.updateActions()

    def updateActions(self):
        if len(self.history) > 0 :
            self.backAction.setEnabled(True)
        if len(self.future) > 0 :
            self.forwardAction.setEnabled(True)
        self.upAction.setEnabled(self.list.rootIndex().isValid())

if __name__ == "__main__":
    app = QtGui.QApplication(sys.argv)
    window = ExtendedDirView()
    window.show()
    sys.exit(app.exec_())
>-----------------------------------------------------------------

If you see any errors, please tell me.
Cheers,

Christophe K.
_______________________________________________
PyQt mailing list    [email protected]
http://www.riverbankcomputing.com/mailman/listinfo/pyqt

Reply via email to