class QGISFileBrowserDialog(QDockWidget): #Signal notify when a file needs to be opened fileOpenRequest = pyqtSignal(QString) def __init__(self): QDockWidget.__init__(self) # Set up the user interface from Designer. self.ui = Ui_QGISFileBrowser() self.ui.setupUi(self) #Load the filter list for key in sorted(filters.iterkeys()): self.ui.filtercombobox.addItem(key) def LoadFiles(self): self.model = QFileSystemModel(self.ui.fileTree) self.model.setRootPath(QDir.homePath()) self.proxy = MyFilter() self.proxy.setSourceModel(self.model) self.proxy.setFilterKeyColumn(0) self.proxy.setFilterRegExp(QRegExp(filters[unicode(self.ui.filtercombobox.currentText())],Qt.CaseInsensitive,QRegExp.RegExp)) self.ui.fileTree.setModel(self.proxy) self.ui.fileTree.hideColumn(1) self.ui.fileTree.hideColumn(2) self.ui.fileTree.hideColumn(3) #Hack to make sure the horizontal scroll bar shows up self.ui.fileTree.header().setStretchLastSection(False) self.ui.fileTree.header().setResizeMode(QHeaderView.ResizeToContents) self.ui.fileTree.setColumnWidth(0,280) #Just hide the header because we don't need to see it. self.ui.fileTree.header().hide() self.ui.filtercombobox.currentIndexChanged[QString].connect(self.filterChanged) self.ui.fileTree.doubleClicked.connect(self.itemClicked) def filterChanged(self, text): self.proxy.setFilterRegExp(QRegExp(filters[str(text)],Qt.CaseInsensitive,QRegExp.RegExp)) def itemClicked(self, item): index = item.model().mapToSource(item) filepath = unicode(self.model.filePath(index).toUtf8(),"utf-8") #We don't need to do anything if filepath is a directory. if os.path.isdir(filepath): return self.fileOpenRequest.emit(filepath) def updateFilter(self, text): self.proxy.setFilterRegExp(QRegExp(text,Qt.CaseInsensitive,QRegExp.RegExp))
def __init__(self): QDockWidget.__init__(self) # Set up the user interface from Designer. self.ui = Ui_QGISFileBrowser() self.ui.setupUi(self) #Load the filter list for key in sorted(filters.iterkeys()): self.ui.filtercombobox.addItem(key)