Ejemplo n.º 1
0
    def updateTreeView(self, newList):
        scrollItem = None
        isExpand = False
        parentItem = None

        if (newList.dsType == FtpResult.PDS):
            # Handle directory level
            path = newList.currentDir
            if path not in self.itemDict:
                newItem = QStandardItem(newList.currentDir)
                newType = QStandardItem('PO')
                newItem.setAccessibleText(path)

                self.itemDict[path] = newItem
                parentItem = newItem
                self.model.appendRow([newItem, newType])
            else:
                parentItem = self.itemDict[path]

            # Handle member level
            for member in newList.data:
                memberPath = '{}({})'.format(path, member.name)

                if memberPath not in self.itemDict:
                    newItem = QStandardItem(member.name)
                    newType = QStandardItem(member.type)
                    newItem.setAccessibleText(memberPath)

                    self.itemDict[memberPath] = newItem
                    parentItem.appendRow([newItem, newType])

            scrollItem = parentItem
            isExpand = True

        elif (newList.dsType == FtpResult.PS):
            # for each member check to see if they already existed in the tree
            for member in newList.data:
                memberPath = member.name

                if memberPath not in self.itemDict:
                    newItem = QStandardItem(memberPath)
                    newType = QStandardItem(member.type)
                    newItem.setAccessibleText(memberPath)

                    if (member.type == 'PO'):
                        self.addDummyChild(newItem)

                    self.itemDict[memberPath] = newItem
                    self.model.appendRow([newItem, newType])

                else:
                    newItem = self.itemDict[memberPath]

                if not scrollItem:
                    scrollItem = newItem

        elif (newList.dsType == FtpResult.USS):
            path = ''

            dirArr = newList.currentDir.split('/')
            dirArr.pop(0)

            for dirMember in dirArr:
                path = path + '/' + dirMember

                #build the directory path
                if path not in self.itemDict:
                    newItem = QStandardItem(dirMember)
                    newType = QStandardItem('DIR')
                    newItem.setAccessibleText(path)

                    if not parentItem:
                        self.model.appendRow([newItem, newType])
                    else:
                        parentItem.appendRow([newItem, newType])

                    self.itemDict[path] = newItem
                    parentItem = newItem

                else:
                    parentItem = self.itemDict[path]

            scrollItem = parentItem
            isExpand = True

            for member in newList.data:
                memberPath = path + '/' + member.name

                if memberPath not in self.itemDict:
                    newItem = QStandardItem(member.name)
                    newType = QStandardItem(member.type)
                    newItem.setAccessibleText(memberPath)

                    if (member.type == 'DIR'):
                        self.addDummyChild(newItem)

                    if not parentItem:
                        self.model.appendRow([newItem, newType])
                    else:
                        parentItem.appendRow([newItem, newType])

                    self.itemDict[memberPath] = newItem

        self.treeView_Browse.sortByColumn(self.__NAME_COLUMN)
        scrollIndex = self.model.indexFromItem(scrollItem)
        self.treeView_Browse.reset()

        self.treeView_Browse.scrollTo(scrollIndex,
                                      QAbstractItemView.PositionAtTop)
        if isExpand:
            self.treeView_Browse.expand(scrollIndex)