Пример #1
0
    def search(self, text):
        model = self.ui.search_result_list.model()
        model.removeRows(0, model.rowCount())
        raw_results = index().search(self.ui.search_text.text())
        dirs = dict([
            (r.get('path'), -1)
            for r in raw_results if r.get('directory')
        ])
        results = {}
        for index_, result in enumerate(raw_results):
            path_ = result.get('path')
            dir_ = os.path.dirname(path_)
            if dir_ not in dirs:
                results[path_] = [result, float(index_) / len(raw_results)]
            else:
                dirs[dir_] += 1

        for dir_, count in dirs.items():
            if dir_ in results:
                results[dir_][1] += count

        results = sorted(results.values(), key=lambda x: -x[1])

        for result, count in results:
            postfix = ' (%i)' % (count + 1) if result.get('directory') else ''
            item = QListWidgetItem(
                result['path'] + postfix,
                self.ui.search_result_list
            )
            item.result = result