Hi,
it seems that QFileDialog "fileMode" can be set only once on Mac OS
X.
All calls to QFileDialog.setFileDIalog (after the first one) are
ignored.

Mac OS X 10.5.8
Python 2.6.2
Qt 4,5,2
SIP 4.8.2
PyQt4 4.5.4


Attached a short example that reproduces the issue.
It works perfectly on Ubuntu 9.04.

# Run 1: first select a file

chooseFile1: 0
chooseFile2 (ExistingFile=1): 1
chooseFile3: 1
chooseDir1: 1
chooseDir2 (Directory=2): 1 # <=== should be 2
chooseDir3: 1

# Run 2: first select a directory

chooseDir1: 0
chooseDir2 (Directory=2): 2
chooseDir3: 2
chooseFile1: 2
chooseFile2 (ExistingFile=1): 2 # <=== should be 1
chooseFile3: 2


Can please anyone confirm?

Thanks

-- 
Antonio Valentino
#!/usr/bin/env python
# -*- encoding: UTF8 -*-

import sys
from PyQt4 import QtCore, QtGui

class TestDialog(QtGui.QDialog):
    def __init__(self):
        QtGui.QDialog.__init__(self)
        self.d = QtGui.QFileDialog(self)
        #self.d.setModal(True)
        vlayout = QtGui.QVBoxLayout()
        
        hlayout = QtGui.QHBoxLayout()
        self.filelabel = QtGui.QLabel()
        self.filelabel.setMinimumSize(200, 0)
        self.filelabel.setFrameStyle(QtGui.QFrame.Box)
        hlayout.addWidget(self.filelabel)
        button = QtGui.QPushButton('File')
        button.connect(button, QtCore.SIGNAL('clicked()'), self.chooseFile)
        hlayout.addWidget(button)
        vlayout.addLayout(hlayout)

        hlayout = QtGui.QHBoxLayout()
        self.dirlabel = QtGui.QLabel()
        self.dirlabel.setMinimumSize(200, 0)
        self.dirlabel.setFrameStyle(QtGui.QFrame.Box)
        hlayout.addWidget(self.dirlabel)
        button = QtGui.QPushButton('Dir')
        button.connect(button, QtCore.SIGNAL('clicked()'), self.chooseDir)
        hlayout.addWidget(button)
        vlayout.addLayout(hlayout)
        self.setLayout(vlayout)
    
    def chooseFile(self):
        print 'chooseFile1:', self.d.fileMode()
        self.d.setFileMode(QtGui.QFileDialog.ExistingFile)
        print 'chooseFile2 (ExistingFile=%s): %s' % (
                        QtGui.QFileDialog.ExistingFile, self.d.fileMode())
        if self.d.exec_():
            self.filelabel.setText(self.d.selectedFiles()[0])
        print 'chooseFile3:', self.d.fileMode()

    def chooseDir(self):
        print 'chooseDir1:', self.d.fileMode()
        self.d.setFileMode(QtGui.QFileDialog.Directory)
        print 'chooseDir2 (Directory=%s): %s' % (
                        QtGui.QFileDialog.Directory, self.d.fileMode())
        if self.d.exec_():
            self.dirlabel.setText(self.d.selectedFiles()[0])
        print 'chooseDir3:', self.d.fileMode()
        
def test_filedialog():
    app = QtGui.QApplication(sys.argv)
    d = TestDialog()
    d.show()
    sys.exit(app.exec_())

if __name__ == '__main__':
    test_filedialog()
_______________________________________________
PyQt mailing list    [email protected]
http://www.riverbankcomputing.com/mailman/listinfo/pyqt

Reply via email to