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)