示例#1
0
    def refresh(self):
        """
        Refreshing search results panel
        """
        title = "'%s' - " % self.search_text
        if self.results is None:
            text = _('Search canceled')
        else:
            nb_files = len(self.results)
            if nb_files == 0:
                text = _('String not found')
            else:
                text_matches = _('matches in')
                text_files = _('file')
                if nb_files > 1:
                    text_files += 's'
                text = "%d %s %d %s" % (self.nb, text_matches,
                                        nb_files, text_files)
        if self.error_flag:
            text += ' (' + self.error_flag + ')'
        elif self.results is not None and not self.completed:
            text += ' (' + _('interrupted') + ')'
        self.set_title(title+text)
        self.clear()
        self.data = {}
        
        if not self.results: # First search interrupted *or* No result
            return

        # Directory set
        dir_set = set()
        for filename in sorted(self.results.keys()):
            dirname = osp.abspath(osp.dirname(filename))
            dir_set.add(dirname)
                
        # Root path
        root_path_list = None
        _common = get_common_path(list(dir_set))
        if _common is not None:
            root_path_list = [_common]
        else:
            _common = get_common_path(self.pathlist)
            if _common is not None:
                root_path_list = [_common]
            else:
                root_path_list = self.pathlist
        if not root_path_list:
            return
        for _root_path in root_path_list:
            dir_set.add(_root_path)
        # Populating tree: directories
        def create_dir_item(dirname, parent):
            if dirname not in root_path_list:
                displayed_name = osp.basename(dirname)
            else:
                displayed_name = dirname
            item = QTreeWidgetItem(parent, [displayed_name],
                                   QTreeWidgetItem.Type)
            item.setIcon(0, ima.icon('DirClosedIcon'))
            return item
        dirs = {}
        for dirname in sorted(list(dir_set)):
            if dirname in root_path_list:
                parent = self
            else:
                parent_dirname = abspardir(dirname)
                parent = dirs.get(parent_dirname)
                if parent is None:
                    # This is related to directories which contain found
                    # results only in some of their children directories
                    if osp.commonprefix([dirname]+root_path_list):
                        # create new root path
                        pass
                    items_to_create = []
                    while dirs.get(parent_dirname) is None:
                        items_to_create.append(parent_dirname)
                        parent_dirname = abspardir(parent_dirname)
                    items_to_create.reverse()
                    for item_dir in items_to_create:
                        item_parent = dirs[abspardir(item_dir)]
                        dirs[item_dir] = create_dir_item(item_dir, item_parent)
                    parent_dirname = abspardir(dirname)
                    parent = dirs[parent_dirname]
            dirs[dirname] = create_dir_item(dirname, parent)
        self.root_items = [dirs[_root_path] for _root_path in root_path_list]
        # Populating tree: files
        for filename in sorted(self.results.keys()):
            parent_item = dirs[osp.dirname(filename)]
            file_item = QTreeWidgetItem(parent_item, [osp.basename(filename)],
                                        QTreeWidgetItem.Type)
            file_item.setIcon(0, get_filetype_icon(filename))
            colno_dict = {}
            fname_res = []
            for lineno, colno, line in self.results[filename]:
                if lineno not in colno_dict:
                    fname_res.append((lineno, colno, line))
                colno_dict[lineno] = colno_dict.get(lineno, [])+[str(colno)]
            for lineno, colno, line in fname_res:
                colno_str = ",".join(colno_dict[lineno])
                item = QTreeWidgetItem(file_item,
                           ["%d (%s): %s" % (lineno, colno_str, line.rstrip())],
                           QTreeWidgetItem.Type)
                item.setIcon(0, ima.icon('arrow'))
                self.data[id(item)] = (filename, lineno)
        # Removing empty directories
        top_level_items = [self.topLevelItem(index)
                           for index in range(self.topLevelItemCount())]
        for item in top_level_items:
            if not item.childCount():
                self.takeTopLevelItem(self.indexOfTopLevelItem(item))
示例#2
0
    def refresh(self):
        """
        Refreshing search results panel
        """
        title = "'%s' - " % self.search_text
        if self.results is None:
            text = _('Search canceled')
        else:
            nb_files = len(self.results)
            if nb_files == 0:
                text = _('String not found')
            else:
                text_matches = _('matches in')
                text_files = _('file')
                if nb_files > 1:
                    text_files += 's'
                text = "%d %s %d %s" % (self.nb, text_matches, nb_files,
                                        text_files)
        if self.error_flag:
            text += ' (' + self.error_flag + ')'
        elif self.results is not None and not self.completed:
            text += ' (' + _('interrupted') + ')'
        self.set_title(title + text)
        self.clear()
        self.data = {}

        if not self.results:  # First search interrupted *or* No result
            return

        # Directory set
        dir_set = set()
        for filename in sorted(self.results.keys()):
            dirname = osp.abspath(osp.dirname(filename))
            dir_set.add(dirname)

        # Root path
        root_path_list = None
        _common = get_common_path(list(dir_set))
        if _common is not None:
            root_path_list = [_common]
        else:
            _common = get_common_path(self.pathlist)
            if _common is not None:
                root_path_list = [_common]
            else:
                root_path_list = self.pathlist
        if not root_path_list:
            return
        for _root_path in root_path_list:
            dir_set.add(_root_path)
        # Populating tree: directories
        def create_dir_item(dirname, parent):
            if dirname not in root_path_list:
                displayed_name = osp.basename(dirname)
            else:
                displayed_name = dirname
            item = QTreeWidgetItem(parent, [displayed_name],
                                   QTreeWidgetItem.Type)
            item.setIcon(0, get_std_icon('DirClosedIcon'))
            return item

        dirs = {}
        for dirname in sorted(list(dir_set)):
            if dirname in root_path_list:
                parent = self
            else:
                parent_dirname = abspardir(dirname)
                parent = dirs.get(parent_dirname)
                if parent is None:
                    # This is related to directories which contain found
                    # results only in some of their children directories
                    if osp.commonprefix([dirname] + root_path_list):
                        # create new root path
                        pass
                    items_to_create = []
                    while dirs.get(parent_dirname) is None:
                        items_to_create.append(parent_dirname)
                        parent_dirname = abspardir(parent_dirname)
                    items_to_create.reverse()
                    for item_dir in items_to_create:
                        item_parent = dirs[abspardir(item_dir)]
                        dirs[item_dir] = create_dir_item(item_dir, item_parent)
                    parent_dirname = abspardir(dirname)
                    parent = dirs[parent_dirname]
            dirs[dirname] = create_dir_item(dirname, parent)
        self.root_items = [dirs[_root_path] for _root_path in root_path_list]
        # Populating tree: files
        for filename in sorted(self.results.keys()):
            parent_item = dirs[osp.dirname(filename)]
            file_item = QTreeWidgetItem(parent_item, [osp.basename(filename)],
                                        QTreeWidgetItem.Type)
            file_item.setIcon(0, get_filetype_icon(filename))
            colno_dict = {}
            fname_res = []
            for lineno, colno, line in self.results[filename]:
                if lineno not in colno_dict:
                    fname_res.append((lineno, colno, line))
                colno_dict[lineno] = colno_dict.get(lineno, []) + [str(colno)]
            for lineno, colno, line in fname_res:
                colno_str = ",".join(colno_dict[lineno])
                item = QTreeWidgetItem(
                    file_item,
                    ["%d (%s): %s" % (lineno, colno_str, line.rstrip())],
                    QTreeWidgetItem.Type)
                item.setIcon(0, get_icon('arrow.png'))
                self.data[id(item)] = (filename, lineno)
        # Removing empty directories
        top_level_items = [
            self.topLevelItem(index)
            for index in range(self.topLevelItemCount())
        ]
        for item in top_level_items:
            if not item.childCount():
                self.takeTopLevelItem(self.indexOfTopLevelItem(item))
示例#3
0
 def refresh(self):
     """
     Refreshing search results panel
     """
     title = "'%s' - " % self.search_text
     if self.results is None:
         text = translate('FindInFiles', 'Search canceled')
     else:
         nb_files = len(self.results)
         if nb_files == 0:
             text = translate('FindInFiles', 'String not found')
         else:
             text_matches = translate('FindInFiles', 'matches in')
             text_files = translate('FindInFiles', 'file')
             if nb_files > 1:
                 text_files += 's'
             text = "%d %s %d %s" % (self.nb, text_matches,
                                     nb_files, text_files)
         if self.error_flag:
             text += ' (' + self.error_flag + ')'
     self.set_title(title+text)
     self.clear()
     self.data = {}
     
     if self.results is None: # First search interrupted
         return
     
     # Root path
     root_path = None
     dir_set = set()        
     for filename in self.results:
         dirname = osp.dirname(filename)
         dir_set.add(dirname)
         if root_path is None:
             root_path = dirname
         else:
             while root_path not in dirname:
                 root_path = abspardir(root_path)
     if root_path is None:
         return
     dir_set.add(root_path)
     # Populating tree: directories
     def create_dir_item(dirname, parent):
         if dirname != root_path:
             displayed_name = osp.basename(dirname)
         else:
             displayed_name = dirname
         item = QTreeWidgetItem(parent, [displayed_name])
         item.setIcon(0, get_std_icon('DirClosedIcon'))
         return item
     dirs = {}
     for dirname in sorted(list(dir_set)):
         if dirname == root_path:
             parent = self
         else:
             parent_dirname = abspardir(dirname)
             parent = dirs.get(parent_dirname)
             if parent is None:
                 # This is related to directories which contain found
                 # results only in some of their children directories
                 items_to_create = []
                 while dirs.get(parent_dirname) is None:
                     items_to_create.append(parent_dirname)
                     parent_dirname = abspardir(parent_dirname)
                 items_to_create.reverse()
                 for item_dir in items_to_create:
                     item_parent = dirs[abspardir(item_dir)]
                     dirs[item_dir] = create_dir_item(item_dir, item_parent)
                 parent_dirname = abspardir(dirname)
                 parent = dirs[parent_dirname]
         dirs[dirname] = create_dir_item(dirname, parent)
     self.root_item = dirs[root_path]
     # Populating tree: files
     for filename in sorted(self.results.keys()):
         parent_item = dirs[osp.dirname(filename)]
         file_item = QTreeWidgetItem(parent_item, [osp.basename(filename)])
         file_item.setIcon(0, get_filetype_icon(filename))
         for lineno, colno, line in self.results[filename]:
             item = QTreeWidgetItem(file_item,
                        ["%d (%d): %s" % (lineno, colno, line.rstrip())])
             item.setIcon(0, get_icon('arrow.png'))
             self.data[item] = (filename, lineno)
示例#4
0
    def refresh(self):
        """
        Refreshing search results panel
        """
        title = "'%s' - " % self.search_text
        if self.results is None:
            text = translate('FindInFiles', 'Search canceled')
        else:
            nb_files = len(self.results)
            if nb_files == 0:
                text = translate('FindInFiles', 'String not found')
            else:
                text_matches = translate('FindInFiles', 'matches in')
                text_files = translate('FindInFiles', 'file')
                if nb_files > 1:
                    text_files += 's'
                text = "%d %s %d %s" % (self.nb, text_matches, nb_files,
                                        text_files)
            if self.error_flag:
                text += ' (' + self.error_flag + ')'
        self.set_title(title + text)
        self.clear()
        self.data = {}

        if self.results is None:  # First search interrupted
            return

        # Root path
        root_path = None
        dir_set = set()
        for filename in self.results:
            dirname = osp.dirname(filename)
            dir_set.add(dirname)
            if root_path is None:
                root_path = dirname
            else:
                while root_path not in dirname:
                    root_path = abspardir(root_path)
        if root_path is None:
            return
        dir_set.add(root_path)

        # Populating tree: directories
        def create_dir_item(dirname, parent):
            if dirname != root_path:
                displayed_name = osp.basename(dirname)
            else:
                displayed_name = dirname
            item = QTreeWidgetItem(parent, [displayed_name])
            item.setIcon(0, get_std_icon('DirClosedIcon'))
            return item

        dirs = {}
        for dirname in sorted(list(dir_set)):
            if dirname == root_path:
                parent = self
            else:
                parent_dirname = abspardir(dirname)
                parent = dirs.get(parent_dirname)
                if parent is None:
                    # This is related to directories which contain found
                    # results only in some of their children directories
                    items_to_create = []
                    while dirs.get(parent_dirname) is None:
                        items_to_create.append(parent_dirname)
                        parent_dirname = abspardir(parent_dirname)
                    items_to_create.reverse()
                    for item_dir in items_to_create:
                        item_parent = dirs[abspardir(item_dir)]
                        dirs[item_dir] = create_dir_item(item_dir, item_parent)
                    parent_dirname = abspardir(dirname)
                    parent = dirs[parent_dirname]
            dirs[dirname] = create_dir_item(dirname, parent)
        self.root_item = dirs[root_path]
        # Populating tree: files
        for filename in sorted(self.results.keys()):
            parent_item = dirs[osp.dirname(filename)]
            file_item = QTreeWidgetItem(parent_item, [osp.basename(filename)])
            file_item.setIcon(0, get_filetype_icon(filename))
            for lineno, colno, line in self.results[filename]:
                item = QTreeWidgetItem(
                    file_item,
                    ["%d (%d): %s" % (lineno, colno, line.rstrip())])
                item.setIcon(0, get_icon('arrow.png'))
                self.data[item] = (filename, lineno)